• Nenhum resultado encontrado

Como usar um relógio para enviar mensagens secretas pela internet

No documento Os Misterios Dos Numeros - Marcus Du Sautoy (páginas 163-166)

Agora estamos quase prontos para mostrar como esses relógios são usados a fim de enviar mensagens secretas pela internet.

encriptado pelo seu computador usando a calculadora-relógio pública do site, portanto, o site precisa dizer a seu computador de quantas horas é o relógio. Este é o primeiro dos dois números que seu computador recebe. Chamemos esse número de N. No nosso exemplo do site Camisas de Futebol de Bob esse número é 126.619. Há também um segundo número codificador que seu computador precisa para fazer o cálculo, que chamaremos de E. O número do seu cartão de crédito C é codificado elevando-o à potência E, calculado pela calculadora- relógio de N horas. Desse modo obtém-se o número embaralhado CE (módulo N), e é esse

número que seu computador manda para o site de compras.

Mas como o site desembaralha o número? A chave é o número primo mágico de Fermat. Vamos supor que p seja um número primo de horas do relógio. (Veremos adiante que isso não é o bastante para um código seguro, mas nos ajudará a entender para onde estamos indo.) Se multiplicarmos o número CE por si mesmo uma quantidade suficiente de vezes, então C

reaparecerá magicamente. Mas quantas vezes (D) precisamos multiplicar CE? Em outras

palavras, quando (CE )D é C no relógio com p horas?

Claro que se E × D = p isso funciona. Mas p é primo — então, não pode haver esse número D. Agora, se continuarmos multiplicando C por si mesmo, há outro ponto onde temos a garantia de obter novamente C como resultado. A próxima vez que o número do cartão de crédito aparece é quando o elevamos à potência 2(p – 1) + 1. E volta a aparecer quando o elevamos à potência 3(p – 1) + 1. Logo, para achar o número decodificador, precisamos encontrar um D tal que E × D = 1 [módulo (p – 1)]. Essa equação é muito mais fácil de resolver. O problema é que como E e p são números públicos, também é fácil um hacker descobrir o decodificador D. Para tornarmos a operação segura, devemos usar uma descoberta feita por Euler acerca de relógios com um número p × q de horas, e não simplesmente p horas.

Se pegarmos uma hora C num relógio com p × q horas, quanto tempo leva para C, C × C, C × C × C, … se repetir? Euler descobriu que o padrão se repete após (p – 1) × (q – 1) passos. Logo, para voltar à hora original, é preciso elevar C à potência (p – 1) × (q – 1) + 1, ou k × (p – 1) × (q – 1), onde k é o número de vezes que o padrão se repete.

Assim, agora sabemos que para decodificar uma mensagem CE num relógio com p × q

horas precisamos achar um número decodificador D tal que E × D = 1 [módulo (p – 1) × (q – 1)], e então temos de fazer os cálculos numa calculadora-relógio secreta, com (p – 1) × (q – 1) horas. Um hacker conhece apenas os números N e E, e se quiser descobrir o relógio secreto terá de achar os primos p e q. Portanto, quebrar um código na internet equivale a decompor um número N em seus blocos construtivos primos. E, como vimos na seção sobre tirar cara ou coroa pela internet, isso é virtualmente impossível quando o número é grande.

Vamos dar uma olhada num código de internet em ação, mas com p e q pequenos, para que possamos acompanhar o que se passa. Digamos que, para seu site Camisas de Futebol, Bob tenha escolhido os primos 3 e 11; então, a calculadora-relógio pública que os clientes devem usar para encriptar o número de seu cartão de crédito deve ter 33 horas. Bob mantém os primos 3 e 11 em sigilo, porque são a chave para decodificar mensagens, embora torne público o número 33, pois ele é o número de horas de sua calculadora-relógio pública. A segunda informação que o site de Bob divulga é o número codificador E — digamos, 7. Todo mundo que compra uma camisa de futebol on-line no site de Bob faz exatamente a mesma coisa: eleva o número do cartão de crédito à sétima potência numa calculadora-relógio de 33

horas.

O site Camisas de Futebol é visitado por um cliente que foi um dos primeiros proprietários de um cartão de crédito e tem o cartão número 2. Se elevarmos 2 à sétima potência numa calculadora-relógio de 33 horas, obtemos 29.

Eis um jeito esperto de calcular 27 numa calculadora-relógio de 33 horas. Começamos por multiplicar 22 = 4, 23 = 8, 24 = 16, 25 = 32. À medida que fazemos as multiplicações, o ponteiro vai dando a volta pela face do relógio, e ao fazermos a multiplicação por 2 pela sexta vez, o ponteiro completa mais que uma volta inteira. Aqui há um pequeno artifício que podemos usar, dando a impressão de que o relógio inverte seu sentido de rotação, em vez de girar para diante. Simplesmente dizemos que 32 horas no nosso relógio de 33 é –1 hora. Então, depois de chegarmos a 25 = 32, mais duas multiplicações nos levam a –4, ou 29 horas. Assim evitamos calcular 2 à sétima potência, ou seja, 128, para depois descobrir o resto da divisão por 33. Para números muito grandes esse tipo de economia é valioso quando um computador tenta calcular as coisas depressa.

Como ter certeza de que o número encriptado pelo cliente — 29 — é seguro? Afinal, um hacker pode ver esse número viajando pelo ciberespaço e verificar facilmente a chave pública de Bob, que consiste numa calculadora-relógio de 33 horas com a instrução de elevar o número do cartão à potência 7. Para quebrar esse código, basta o hacker achar um número que, multiplicado por si mesmo sete vezes numa calculadora-relógio de 33 horas, dê como resultado 29.

FIGURA 4.17: Calculando potências numa calculadora-relógio de 33 horas.

É desnecessário dizer que isso não é tão fácil assim. Mesmo com aritmética comum, elevar um número ao quadrado pode ser feito num pedaço de papel, mas é muito mais difícil desfazer o processo e buscar uma raiz quadrada. A sutileza extra vem do cálculo de potências numa calculadora-relógio. Rapidamente perde-se de vista o ponto de partida porque o tamanho do resultado não tem relação alguma com o lugar de onde se partiu.

No nosso exemplo, os números são pequenos o bastante para que o hacker seja capaz de experimentar cada variação até achar a resposta. Na prática, os websites usam número de horas acima de 100 dígitos, de modo que uma busca exaustiva é impossível. Você pode muito

bem estar se perguntando como, se é tão difícil resolver o problema numa calculadora-relógio de 33 horas, uma companhia que faz negócios pela internet consegue recuperar o número do cartão de crédito de um cliente.

A versão mais genérica de Euler do pequeno teorema de Fermat garante a existência de um número decodificador mágico, D. Bob pode multiplicar o número do cartão encriptado D vezes para revelar o número original. Mas só conseguiremos descobrir quanto é D se soubermos os primos secretos p e q. O conhecimento desses dois primos torna-se a chave para desvendar os segredos desse código da internet, porque é necessário resolver o seguinte problema na calculadora-relógio secreta:

E × D = 1 [módulo (p – 1) × (q – 1)]

Quando aplicamos isso aos nossos números, descobrimos que precisamos resolver a equação

7 × D = 1 [módulo (2 × 10)]

Isso significa pedir que encontremos um número que, quando multiplicado por 7, resulta num número com resto 1 numa divisão por 10. D = 3 funciona porque 7 × 3 = 21 = 1 (módulo 20).

E se elevarmos o número encriptado do nosso cartão de crédito à potência 3, o número original reaparece:

293 = 2 (módulo 33)

A capacidade de recuperar o número do cartão de crédito a partir da mensagem codificada depende do conhecimento dos primos secretos p e q; assim, qualquer um que queira invadir os códigos na internet necessita de um meio de pegar o número N e quebrá-lo em fatores primos. Toda vez que você compra um livro on-line ou baixa uma música, você está usando a magia dos números primos para manter seu cartão de crédito em segurança.

No documento Os Misterios Dos Numeros - Marcus Du Sautoy (páginas 163-166)

Outline

Documentos relacionados