deverá ser válido.
Contudo, como as permutações são aleatórias, a gerente não terá como deduzir as cores
originais. As respostas da máquina apenas confirmam que os diversos pares de países
adjacentes têm cores diferentes no mapa: elas não dizem quais são as cores.
Os profissionais que trabalham com provas de conhecimento zero preferem utilizar um
argumento mais rigoroso, baseado na ideia de “simulação”. Imagine um sistema
superficialmente idêntico, no qual as respostas da máquina não sejam determinadas pelo mapa
que você escolheu, e sim por uma seleção aleatória de duas cores diferentes, que serão
dispostas na tela. Esse sistema falso poderá gerar muitas sequências diferentes de pares de
cores, mas uma das possibilidades corresponderá de fato à sequência de respostas baseadas
no seu mapa. Suponha, por um momento, que a gerente do seu banco fosse capaz de desvendar
o seu mapa a partir das respostas da máquina verdadeira. Nesse caso, ela também poderia
desvendar o seu mapa na rara ocasião em que a máquina falsa gerasse as mesmas respostas.
Porém, para a máquina falsa, não existe algo como o “seu mapa”, portanto tal dedução seria
impossível.
Observe agora que, se a gerente não for capaz de deduzir a sua coloração a partir das
respostas da máquina, um observador ilegítimo tampouco poderá fazê-lo. Repare também que
a gerente precisa acreditar que a máquina realmente funciona do modo como a descrevi, ou
seja, que não está apenas exibindo pares aleatórios de cores.
Uma prova de conhecimento zero mais elaborada permite que você convença a sua gerente
de que conhece os dois fatores primos p e q de um número específico n = pq, mas sem revelar
que números são esses. Contanto que n seja um número bastante elevado — um bom tamanho
seria com cerca de 200 algarismos —, não existe nenhum algoritmo capaz de encontrar os
fatores p e q num tempo menor que o da vida do universo. Entretanto, existem algoritmos
bastante rápidos para testar p e q, assegurando que são primos.
Portanto, a sua gerente pode escolher dois grandes números primos p e q, encontrar n = pq
e tratar p e q como uma espécie de senha (que você recebe ao abrir a conta no banco). Através
de algum canal de comunicação apropriado, você poderá então convencê-la de que conhece
essa senha sem divulgar p e q a ela ou a algum bisbilhoteiro. Esse método requer uma boa
dose de teoria dos números (ver boxe na página seguinte), além de uma outra técnica chamada
de “transferência cega”.
Um canal de transferência cega permite que você envie à gerente do seu banco duas
informações criptografadas de modo que (a) ela consiga decifrar e ler exatamente um dos
itens; (b) você não saiba qual item ela foi capaz de ler; e (c) vocês dois tenham certeza de que
(a) e (b) são verdadeiros. Existem algumas maneiras simples, baseadas na teoria dos números
e sujeitas a algumas conjecturas plausíveis, de se construir um canal de transferência cega, mas
não vou descrevê-las aqui. Para maiores detalhes, veja A Course in Number Theory and
Cryptography, de Neal Koblitz.
Esse método precisa de certa preparação, e sua senha comum de quatro dígitos deve ser
substituída por números de 100 algarismos, sobre os quais você deverá executar diversas
operações aritméticas sem cometer nenhum erro. No entanto, qualquer laptop é mais que capaz
de executar essa tarefa. Existem métodos mais práticos do que este que descrevi, mas não são
tão fáceis de explicar. O que está claro é que, na era da comunicação digital, os sistemas de
segurança devem ser capazes de provar que são seguros: experimentos, por si mesmos, não
são convincentes. E quando você começa a pedir provas, está fazendo matemática.