Este documento apresenta um resumo sobre introdução à criptografia. Ele explica que com a chegada dos computadores foi necessário desenvolver códigos binários como o ASCII para representar informações. Também discute os primeiros sistemas de criptografia simétrica e como o sistema RSA revolucionou a área ao introduzir chaves assimétricas, onde cada usuário tem uma chave pública e privada.
Este documento apresenta um resumo sobre introdução à criptografia. Ele explica que com a chegada dos computadores foi necessário desenvolver códigos binários como o ASCII para representar informações. Também discute os primeiros sistemas de criptografia simétrica e como o sistema RSA revolucionou a área ao introduzir chaves assimétricas, onde cada usuário tem uma chave pública e privada.
Este documento apresenta um resumo sobre introdução à criptografia. Ele explica que com a chegada dos computadores foi necessário desenvolver códigos binários como o ASCII para representar informações. Também discute os primeiros sistemas de criptografia simétrica e como o sistema RSA revolucionou a área ao introduzir chaves assimétricas, onde cada usuário tem uma chave pública e privada.
O Advento dos Computadores A chegada dos telégrafos e finalmente dos computadores revolucionaram a Teoria da Informação. Como os computadores utilizam códigos binários, foi preciso transformar todas as informações nesse código. Assim, nasce o American Standard Code for Information Interchange, abreviado por ASCII e significando Código Padrão Americano para o Intercâmbio de Informação. Essa codificação, desenvolvida a partir de 1960, não é um método de cifragem, ela é apenas uma tradução à linguagem binária dos sı́mbolos mais corriqueiros. Ela atribui significados especı́ficos aos 27 = 128 números binários (formados por 0 e 1) de 7 dı́gitos. Um grande desafio para a computação é a questão da privacidade na troca de informações e na uniformização dos padrões. Estabelecido o código ASCII, após intensa busca, em 1973, o National Bureau of Standards, órgão governamental americano, escolheu o sistema criptográfico Data Encryption Standard (DES), desenvolvido pela IBM, para ser o sistema oficial americano. PROFMAT - SBM Aritmética - Unidade 24 - Resumo - Introdução à Criptografia slide 3/16 Este sistema, utilizado até 1999, funcionava com uma distribuição de chaves simétricas. Ou seja, um número (a chave) é acertado entre duas partes para definir os parâmetros da função cifragem que é a mesma para a decifragem. Como o segredo das mensagens é garantido através da manutenção do segredo das chaves, isto criou um enorme problema logı́stico de distribuição de chaves, uma verdadeira “operação de guerra”. Hoje em dia são utilizados outros sistemas como o AES ou Skipjack. Coube a três norte americanos, Whitfield Driffie, Martin Hellman e Ralph Merkle, resolver o problema da troca de chaves entre correspondentes. É aı́ que começa a entrar no campo da criptografia, timidamente, mas de modo irreversı́vel, a Teoria dos Números através da noção de congruências.
A ideia da trinca americana João e Maria querem trocar entre si uma chave secreta por um meio de comunicação insegura, como, por exemplo, por telefone. Eles escolhem em comum acordo um par de números naturais a e m e os tornam públicos. João escolhe um outro número natural αJ e o mantém secreto. Com ele, calcula o único número βJ < m tal que aαJ ≡ βJ mod m e o envia para Maria. Maria escolhe um número natural αM , mantendo-o secreto, e com ele calcula o único número βM < m tal que aαM ≡ βM mod m e o envia para João. αJ Em seguida, João calcula βM , obtendo αJ βM ≡ (aαM )αJ ≡ aαM αJ ≡ α mod m, com α < m. Por sua vez, Maria calcula βJαM , obtendo βJαM ≡ (aαJ )αM ≡ aαJ αM ≡ α mod m, com α < m. PROFMAT - SBM Aritmética - Unidade 24 - Resumo - Introdução à Criptografia slide 5/16 Pronto! Está trocada a chave secreta α entre João e Maria. Portanto, são públicas as informações a, m, βJ e βM e são secretas as informações:
Exemplo Suponhamos que João e Maria tenham escolhido de comum acordo a = 52 e m = 271. Por outro lado, João escolhe a sua chave secreta αJ = 7, enquanto Maria escolhe αM = 5. Vejamos qual é a chave secreta α que ambos compartilharão. João faz o seguinte cálculo para determinar βJ e enviá-lo a Maria: 522 ≡ 2704 ≡ 265 mod 271, 524 ≡ 2652 ≡ 36 mod 271, 527 = 524 × 522 × 52 ≡ 36 × 265 × 52 ≡ 150 mod 271. Logo, βJ = 150. Maria faz a seguinte conta para determinar βM e enviá-lo a João: 525 = 524 × 52 ≡ 36 × 52 ≡ 246 mod 271. Logo, βM = 246.
O sucesso deste método reside no fato de ser difı́cil descobrir qualquer dos três números αJ , αM ou α, conhecendo apenas os dados públicos a, m, βJ e βM . Este sistema denominado DHM, em homenagem aos seus inventores, foi o primeiro passo na direção da solução do problema da distribuição de chaves. O sistema, porém, tem um grande defeito, pois serve apenas para a troca de chaves secretas entre dois indivı́duos de cada vez e isso em um mundo globalizado é totalmente insatisfatório. Ocorreu então a Driffie a ideia de considerar sistemas com chaves assimétricas, ou seja, cada usuário teria duas chaves, uma pública para cifragem e outra privada para decifrar as mensagens recebidas.
A cifragem deve ser um processo fácil de fazer usando a chave pública, enquanto que a decifragem deveria ser quase impossı́vel de se fazer sem a chave secreta. Assim, se João quer enviar uma mensagem para Maria, ele usaria a chave pública de Maria para cifrar a mensagem que ninguém em princı́pio, exceto Maria, conseguiria decifrar, pois é a única a possuir a chave secreta para tal. Driffie não conseguiu implementar a sua ideia na prática, mas a publicou para que outros pudessem resolver o problema. Foram Ronald Rivest, Adi Shamir e Leonard Adleman, do Laboratório de Ciência da Informação do Massachusetts Institute of Technology (MIT), que deram em 1978 o passo decisivo para a implementação do primeiro sistema criptográfico com chaves assimétricas, idealizado por Driffie.
A Grande Revolução: O Sistema RSA O princı́pio baseia-se na relativa facilidade em encontrar números primos grandes e ao mesmo tempo na enorme dificuldade prática em fatorar o produto de dois tais números, além do uso de propriedades relativamente elementares da Teoria dos Números, como a variante do Teorema de Euler dada na Proposição 10.9 Vamos aos detalhes matemáticos dessa descoberta. Recordando, estamos à procura de um sistema criptográfico com duas chaves, uma pública e outra privada para que qualquer pessoa possa cifrar uma mensagem previamente codificada em ASCII e somente o seu legı́timo destinatário possa decifrá-la. Suponhamos, então, que João queira criar um sistema criptográfico em que qualquer pessoa possa lhe enviar uma mensagem cifrada segundo uma chave pública e que ele e somente ele possa decifrá-la com a sua chave secreta.
João escolhe dois números primos distintos p e q muito grandes e efetua o seu produto m = pq. Note que é fácil calcular o número m, mas é extremamente difı́cil e computacionalmente muito demorado desfazer esta operação, ou seja, fatorar m. Em seguida, João escolhe um par de números α e β tais que
αβ ≡ 1 mod ϕ(m).
Note que obrigatoriamente (α, ϕ(m)) = (β, ϕ(m)) = 1.
Ele pode escolher inicialmente α tal que (α, ϕ(m)) = 1 e em seguida resolver a congruência αX ≡ 1 mod ϕ(m). João então torna públicos os números m e β, que são a chave pública. A chave secreta de João são os primos p e q, os números ϕ(m) = (p − 1)(q − 1) e α.
Dado um número x < m, que pode ser a representação decimal de um sı́mbolo ASCII, ou de uma sequência de sı́mbolos ASCII, vistos como um número na base 2, a codificação feita por Maria ou por qualquer outra pessoa que conheça a chave pública de João (m, β), pode cifrar x como segue: Maria acha o único C (x) < m tal que
x β ≡ C (x) mod m.
Maria então envia C (x) para João.
João ao receber C (x) usa a sua chave privada α para achar o número D(C (x)) < m tal que
Note que somente João consegue determinar D(C (x)), pois só ele detém a chave α. Mas, D(C (x)) = x, pois existe k ∈ N tal que αβ = 1 + kϕ(m) e, pela Proposição 10.9, temos que
D(C (x)) ≡ C (x)α ≡ (x β )α = x αβ = x kϕ(m)+1 ≡ x mod m,
e ambos D(C (x)) e x são menores do que m.
Como funciona? O leitor atento poderia objetar com razão que se Maria apenas cifrasse cada número correspondente a um sı́mbolo na codificação ASCII, a quebra do sistema seria imediata, pois qualquer pessoa poderia calcular os C (x) ao variar x na tabela do código ASCII e com a correspondência (em geral não biunı́voca) x 7→ C (x) poderia com uma análise de frequência na mensagem cifrada descobrir os x a partir de suas imagens C (x).
Esta fragilidade é resolvida do seguinte modo: Maria primeiro traduz a mensagem para o código ASCII escrevendo a mensagem traduzida de modo corrido, utilizando a sequência 0100000 para representar o espaço entre palavras. Obtém-se assim uma longa sequência de 0 e 1. Corta-se então esta longa sequência em uma sucessão x1 , x2 , . . . xr de sequências de comprimentos arbitrários e variáveis, nenhuma iniciando com 0 e de modo que o número na base 2 representado por cada xi seja menor do m. A restrição de xi não iniciar com zero é para poder recuperar uma sequência a partir do número que ela representa e de cada xi ser menor do que m é para garantir que ele não se altera quando reduzido mod m. Em seguida, Maria calcula C (x1 ), C (x2 ), . . ., C (xr ) e os envia para João.
Por sua vez, João calcula D(C (x1 )) = x1 , D(C (x2 )) = x2 , . . ., D(C (xr )) = xr e os enfileira de modo corrido. Em seguida separa o texto em sequências de 7 dı́gitos e os reconverte de ASCII para caracteres comuns e eis que aparece a mensagem que Maria queria enviar para João.
É genial de tão simples! Mas não se engane, para pôr isto em
funcionamento há muitas contas a serem feitas e isso só é possı́vel com o uso de um computador. É também necessário ter acesso a números primos muito grandes e escolher com certo critério as chaves do sistema.