Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
RSA
Criptografia Assimtrica e Assinatura Digital
Luis Alberto de Moraes Barbosa Luis Fernando B Braghetto (RA 504339) Marcelo Lotierso Brisqui Sirlei Cristina da Silva Campinas, Julho/2003
ndice
NDICE.................................................................................................................................. 2 NDICE DE TABELAS............................................................................................................. 4 NDICE DE FIGURAS.............................................................................................................. 4 CAPTULO 1 - INTRODUO ......................................................................................... 5 CAPITULO 2 TEORIA DA CRIPTOGRAFIA DE CHAVES PBLICAS ................ 6 2.1 O QUE CRIPTOGRAFIA ?............................................................................................. 6 2.2 TIPOS DE CRIPTOGRAFIA ............................................................................................. 6 2.2.1 Introduo s Tcnicas Simples de Criptografia ............................................... 7 2.2.1.1 - Cifras de Substituio................................................................................... 7 2.2.1.2 Cifras de Transposio ................................................................................ 8 2.2.2 Tcnicas Modernas de Criptografia: Criptografia Simtrica ............................ 9 2.2.2.1 DES .............................................................................................................. 9 2.2.2.2 AES .............................................................................................................. 9 2.2.3 Tcnicas Modernas de Criptografia: Criptografia Assimtrica ........................ 9 2.2.3.1 Chaves Pblicas e Chaves Privadas...........................................................10 2.3.3.2 Diffie-Hellman...........................................................................................12 2.2.3.3 RSA............................................................................................................13 2.2.3.4 - DSA ............................................................................................................13 2.2.3.5 Rpida Comparao das Utilidades dos Algoritmos .................................14 2.2.4 Criptografia Simtrica vs. Criptografia Assimtrica .......................................14 CAPTULO 3 O ALGORITMO RSA...........................................................................16 3.1 - HISTRICO RSA........................................................................................................16 3.2 ALGORITMO RSA .....................................................................................................16 3.3 ASPECTOS COMPUTACIONAIS DO RSA .....................................................................19 3.4 INTRODUO SIMPLES TEORIA DOS N MEROS ......................................................20 3.4.1 Mdulo: A mod B...............................................................................................20 3.4.2 Calculando C = A b mod n.................................................................................21 3.4.3 Nmeros Primos. ..............................................................................................21 3.4.3.2 Primos entre si ...........................................................................................23 3.4.3.2 Descobrindo e provando primos................................................................23 CAPTULO 4 UTILIZAO PRATICA, FORMATAO E GERENCIAMENTO DE CHAVES NO RSA. ......................................................................................................24 4.1 APLICAES QUE UTILIZAM O RSA ..........................................................................24 4.1.1 Certificados de Segurana................................................................................24 4.1.2 Assinatura Digital.............................................................................................26 4.1.3 S/Mime e PGP...................................................................................................28 4.1.4 SSL/TLS.............................................................................................................28 4.1.5 IPSEC ...............................................................................................................29
Pgina 2 de 50
4.2 PADRES E FORMATOS DOS CERTIFICADOS DIGITAIS.................................................29 4.2.1 Recomendao X.509 .......................................................................................30 4.2.2 PKIX .................................................................................................................30 4.2.3 ASN.1................................................................................................................32 4.2.3.1 BER............................................................................................................32 4.2.3.2 DER ...........................................................................................................33 4.2.2 PKCS.................................................................................................................33 4.3 GERENCIAMENTO DE CHAV NO RSA.....................................................................34 ES CAPTULO 5 SEGURANA DO RSA.........................................................................35 5.1 INTRODUO ............................................................................................................35 5.2 ATACANDO O RSA ...................................................................................................35 5.2.1 Fora Bruta ......................................................................................................35 5.2.2 Ataques Matemticos........................................................................................36 5.2.2.1 Problema da Fatorao ..............................................................................36 5.2.2.2 Calcular n sem fatorar n...........................................................................38 5.2.2.3 Expoente de Decriptao ...........................................................................38 5.2.2.4 Calcular d sem possuir n ..........................................................................39 5.2.3 Ataques Temporais ...........................................................................................39 5.2.4 Outros tipos de Ataques....................................................................................40 5.2.4.1 Expoente d pequeno para decriptografia ...................................................40 5.2.4.2 Expoente e pequeno para criptografia .......................................................40 5.2.4.3 Ataque de Mdulo Comum .......................................................................40 5.2.4.4 Criptoanlise do RSA se d for menor que n0,292........................................40 5.2.4.5 Ataque de Broadcast de Hastad .................................................................40 5.2.4.6 Ataque de Exposio parcial da chave privada .........................................41 5.2.4.7 Ataque de Bleichenbacher no PKCS 1......................................................41 CAPITULO 6 COMPARATIVOS ENTRE ALGORITM OS.....................................42 6.1 SIMTRICA X ASSIMTRICA ......................................................................................42 6.2 ALGORITMOS E TABELAS COMPARATIVAS ................................................................42 6.3 PERFORMANCE .........................................................................................................45 6.3.1 RSA ...................................................................................................................45 6.3.2 DSA ...................................................................................................................45 6.3.3 ECC...................................................................................................................45 6.3.4 - RSA x Curvas Elpticas......................................................................................46 CONCLUSO.....................................................................................................................48 BIBLIOGRAFIA ................................................................................................................49 LIVROS: .............................................................................................................................49 TESE: .................................................................................................................................49 PAPERS : .............................................................................................................................49 INTERNET SITES :................................................................................................................50
Pgina 3 de 50
ndice de Tabelas
Tabela 1: Comparao das Utilidades dos Algoritmos.........................................................14 Tabela 2: Comparao Criptografia Simtrica vs. Assimtrica............................................15 Tabela 3: Teste de Mesa para algoritmo a b mod n................................................................20 Tabela 4: Tempo de Fatorao no RSA................................................................................37 Tabela 5: Comparao de Algoritmos Simtricos e Assimtricos .......................................42 Tabela 6: Problemas Computacionais x Algoritmos ............................................................42 Tabela 7: Esquemas de Assinatura relacionados ao RSA ....................................................43 Tabela 8: Descrio dos Problemas, suporte a criptoanlise e patente no mundo ...............44
ndice de Figuras
Figura 1: Esquema de Criptografia Assimtrica para garantir sigilo ...................................10 Figura 2: Esquema de Criptografia Assimtrica para assinatura digital...............................11 Figura 3: Esquema de Criptografia Assimtrica para para sigilo e assinatura digital..........12 Figura 4: Algoritmo para clculo de ab mod n......................................................................19 Figura 5: Esquema de Assinatura Digital no RSA ...............................................................27 Figura 6: Formato do Padro X509 ......................................................................................31 Figura 7: Comparao do certificado X509 e CRL .............................................................32
Pgina 4 de 50
Captulo 1 - Introduo
A origem da criptografia, provavelmente, remonta aos princpios da existncia humana, logo que as pessoas tenham tentado aprender a comunicar. Conseqentemente, tiveram de encontrar meios para garantir a confidencialidade de parte das suas comunicaes. - Pierre Loidreau, escreveu um artigo na primeira revista Linux da Frana Esta frase expressa o significa inicial de criptografia e, aos dias de hoje, podemos notar que uma grande mudana nos mtodos e maneiras de se criptografar. Este documento ir prover informaes sobre uma das mais bem sucedidas implementaes de algoritmos de criptografia e assinatura at hoje, o RSA. Conforme o leitor ir adiantando a leitura, ir saber sobre o que e o que significa a criptografia, criptoanalista e afins; tambm entender mtodos simples de criptografia at chegar ao RSA, que o foco deste documento. Apesar disto, conceitos de chaves privadas, pblicas, outros algoritmos, performance, etc no sero esquecidos. A idia dar ao leitor leigo, uma noo geral sobre como funciona a criptografia hoje, assim como o RSA e explicando at mesmo em contas para detalhar tal algoritmo. Esperamos que ajude a todos interessados em criptografia.
O GRUPO
Pgina 5 de 50
Captulo 2 Teoria da Criptografia de Chaves Pblicas RSA Criptografia Assimtrica e Assinatura Digital
Pgina 6 de 50
Captulo 2 Teoria da Criptografia de Chaves Pblicas RSA Criptografia Assimtrica e Assinatura Digital
Este sem dvida o jeito mais fcil de cifrar (e tambm de decifrar). As cifras de substituio trocam uma letra por outra letra correspondente. Vejamos um exemplo onde ns vamos trocar cada uma das 26 letras do abecedrio pelas letras na ordem do teclado.
a b c d e f g h i j k l m n o p q r s t u v w x y z Q WE R T Y U I O P A S D F G H J K L Z X C V B N M Este tipo de substituio chamado de monoalfabtica. Para exemplificar vamos cifrar a palavra palavra com nossa cifra de substituio: p a l a v r a H Q S Q C K Q Por fim, a palavra palavra seria escondida como hqsqckq. Quem recebesse isso bastaria voltar atrs para descobrir a palavra original palavra. Qual a probabilidade de combinaes possveis para esta cifra? A resposta 26! (fatorial de 26) que 26 . 25 . 24 . 23 .......... 3 . 2 . 1 que d 4,032x1026 diferentes dicionrios... porm o ataque pode ser feito atravs de analise de freqncia. Em qualquer lngua, alguns sons so utilizados com mais freqncia do que outros. Isto significa que, na linguagem escrita, algumas letras tambm so mais utilizadas que outras. Determinar a freqncia com que ocorrem determinadas letras em determinada lngua, ou seja, fazer uma anlise da freqncia de ocorrncia de letras, no nenhuma novidade. O grande sbio rabe al-Kindi j teve esta idia h mais de 1.000 anos atrs. Na substituio monoalfabtica, cada letra trocada pela letra correspondente da chave. Isto significa que as caractersticas das letras originais so transferidas para as novas letras, inclusive suas caractersticas de freqncia de ocorrncia. o mesmo que trocar seis por meia dzia... o caminho das pedras para quebrar a cifra! Uma anlise de freqncia do alfabeto portugus e uma amostra razovel de texto cifrado mostra a facilidade de quebrar isso. (http://www.numaboa.com/criptologia/matematica/estatistica/freqPortBrasil.php).
Pgina 7 de 50
Captulo 2 Teoria da Criptografia de Chaves Pblicas RSA Criptografia Assimtrica e Assinatura Digital
Os algoritmos ROT13 e Csar usam isso. Depois algoritmos como Playfair e Hill adicionaram alguma dificuldade fazendo substituies atravs de grupos de letras, mas ainda muito fcil ser quebrada.
As cifras de transposio usam como tcnica a mudana da ordem das letras. Vejamos um exemplo onde vamos aplicar uma chave a um texto para efetuar uma mudana na ordem do texto. O texto original ser a ponte de Londres est caindo e a chave ser viagem
a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Vamos colocar a palavra viagem em ordem numrica. O resultado ser: Ordem original Chave Valor Numrico das letras Nova Ordem 1 V 22 6 2 I 9 4 3 A 1 1 4 G 7 3 5 E 5 2 6 M 13 5
V 6 a e o c
I 4
n e a
A 1 p d d s i
G 3 o e r t n
E 2 n e a d
M 5 t L s O
E o resultado ser as colunas na ordem (1, depois 2, e assim por diante) e o texto cifrado ser pddsin ead oertn nea tLs Oaeo c O que se pode fazer misturar transposio com substituio, porm ainda ineficiente j que hoje se tem muito poder computacional.
Pgina 8 de 50
Captulo 2 Teoria da Criptografia de Chaves Pblicas RSA Criptografia Assimtrica e Assinatura Digital
O DES Padro de Ciframento de Dados ( Data Encription Standart) foi o primeiro modelo de criptografia simtrica na poca moderna (criado na dcada de 70). O DES processa blocos de texto de 64 bits cada vez, usando uma chave de 56bits, produzindo um texto cifrado de 64bits. O DES para causar um efeito mais interessante faz este procedimento 16 vezes, cada uma usando uma poro diferente da chave. Entretanto antigamente o DES era extremamente seguro, porm com o aumento significativo do poder computacional nas mos dos criptoanalistas, o DES tornou-se inseguro. Recentemente o DES conseguiu ser quebrado em pouco menos de 1 dia com uma chave de 56bits. Atualmente o DES possui uma verso mais fortalecida composto de trs chaves de 56bits (168bits no total) e foi chamado de 3-DES.
2.2.2.2 AES
O AES Padro Avanado de Ciframento (Advanced Encryption Standart) um algoritmo simtrico que foi a resposta requisio de um novo algoritmo de criptografia pela NIST Instituto Nacional (Americano) de padres e tecnologia (U.S. National Institute of Standards and Technology). O AES um algoritmo simtrico que pode usar chaves de 128, 192 ou 256 bits com blocos de dados de 128 bits. Em 2001, o AES virou um padro reconhecido pelo NIST depois de vencer a batalha em cima de outros algoritmos (MARS (IBM), RC6 (RSA Labs), Rijndael (Hoan Daemen e Vicent Rijmen), Serpent (Ross Anderson, Eli Biham, Lars Knudsen) e Twofish (Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall e Niels Ferguson))
Captulo 2 Teoria da Criptografia de Chaves Pblicas RSA Criptografia Assimtrica e Assinatura Digital
criptoanlise o tamanho da chave. Quanto maior a chave, mais difcil criptoanalisar o dado. O que todos devem estar se perguntando se existe a criptografia de chaves pblicas porque ainda usar a criptografia simtrica? A criptografia assimtrica exige muito mais processamento do que a criptografia simtrica. Na vida real a criptografia assimtrica usada para combinar uma chave que ser usada posteriormente por uma criptografia simtrica, ou no caso de assinaturas digitais feito um hash da mensagem e a criptografia acontece no hash para diminuir o overhead.
2.2.3.1 Chaves Pblicas e Chaves Privadas
Um novo conceito lanado baseado que existem duas chaves: Chave Pblica e Chave Privada. Mas o que faz cada uma das chaves? Depende. Uma nica definio certa e correta: a chave privada no pode sair da mo do dono do par de chaves. Somente a chave pblica pode ser distribuda. Se a finalidade do algoritmo assimtrico ciframento dos dados, impedindo que outros no possam saber o que tem dentro da mensagem, somente o destinatrio correto, a chave pblica ser uma chave que servir para a criptografia dos dados e a chave privada ser a chave para decriptografia (deciframento) da mensagem previamente cifrada. Neste caso, vamos exemplificar que Alice quer enviar uma mensagem para Bob, mas somente Bob poder l-la. Alice ir at Bob atravs de um canal inseguro qualquer e requisitar a chave pblica de Bob. Alice ir pegar a mensagem M e aplicar a chave pblica (KUp ) de Bob usando um algoritmo conhecido de todos. Somente Bob tem a chave privada para decifrar a mensagem C (Mensagem C o resultado da mensagem M aps aplicar KUp). Para tanto Bob pega o algoritmo conhecido e aplica a sua chave privada (KRb) para obter a mensagem M novamente. Neste caso a chave pblica faz o ciframento e a chave privada faz o deciframento.
Captulo 2 Teoria da Criptografia de Chaves Pblicas RSA Criptografia Assimtrica e Assinatura Digital
Se a finalidade for assinatura digital, entende-se que somente a pessoa de posse da chave privada poder criar a mensagem, impedindo o repdio e garantindo a autoria e autenticao da mensagem e do autor. Neste caso, vamos exemplificar que Bob pegar uma mensagem M (no cifrada, como por exemplo vou pagar 1000 reais para Alice) e aplica a sua chave privada (KRb). A chave privada ir fazer a criptografia, ou seja, gerar a mensagem C. Sendo a chave pblica de Bob (KUb) conhecida de todos, qualquer um poder decriptografar a mensagem. Se a chave pblica de Bob foi capaz de gerar novamente a mensagem M, ele e somente ele (Bob) poderia ter gerado a mensagem, garantindo a autoria e autenticao do autor. Quando se distribui a mensagem deste jeito, no se garante a confidencialidade dos dados j que a chave KUb pblica e qualquer um poder ler isto. Isto chamado de assinatura digital1 (ver captulo 4).
E se ns quisssemos garantir que a mensagem veio de algum e o sigilo fosse importante? Simples, basta usarmos dois pares de chaves pblicas e privadas... lembrando que se distribuir uma para criptografar (sigilo) e uma para decriptografar (assinatura digital). Lembrando que devemos cifrar primeiro e assinar depois, pois assim poderemos verificar a assinatura sem sabermos o contedo.
Na assinatura digital assinado um hash da mensagem ao invs da mensagem toda por questes de performance. Pgina 11 de 50
Captulo 2 Teoria da Criptografia de Chaves Pblicas RSA Criptografia Assimtrica e Assinatura Digital
2.3.3.2 Diffie-Hellman
Diffie-Hellman um protocolo para troca de chaves usando meios inseguros, tais como a Internet, chamado tambm de acordo de chaves exponenciais (exponential key agreement) e foi desenvolvido por Whitfield Diffie e Martin Hellman em 1976, pblicado em um documento chamado As Novas Direes da Criptografia. O protocolo permite que dois usurios troquem chaves secretas em um meio inseguro. O protocolo tem dois parmetros: p e g. Ambos (p e g) podem ser pblicos e ser usados por todos em uma rede. O parmetro p um primo qualquer e o parmetro g (chamada de chave geradora) um nmero inteiro menor que p, com o seguinte requisito: para cada nmero n entre 1 e p inclusive, existe um expoente k de g tais que n = gk mod p. Vamos supor que Bob e Alice querem concordar em uma nova chave usando Diffie-Hellman. Primeiro Alice gera um nmero aleatrio a, e Bob gera um nmero aleatrio b. Ambos a e b esto em um set de inteiros {1,...,p-2}. Ento eles calculam a p e g de suas chaves. O valor pblico de Alice g mod p, enquanto o de Bob gb mod p. Agora eles trocam suas chaves pblicas. Por fim Alice calcula gab = (gb)a ab mod p e Bob calcula gba = (ga)b mod p. J que g = gba = k, ento Alice e Bob tem sua chave secreta simtrica k. Diffie-Hellman original vulnervel ao ataque man-in-the-middle2. Em 1992, o protocolo STS foi desenvolvido por Diffie, Oorschot e Wiener para no sofrer mais o ataque man-in-the-middle. A imunidade a este ataque foi alcanada possibilitando que duas partes autentiquem eles mesmos atravs de assinaturas digitais. A idia que antes de iniciar, A e B obtenham um par de chaves pblicas e privadas. Durante o protocolo, A calcula a assinatura em algumas mensagens, escondendo o valor de ga mod p.
2
Neste tipo de ataque Pedro (P) negocia um valor com Alice (A) e um outro com Bob (B). Desta maneira ele traduz 100% das mensagens A B, fazendo A P / P B e B P / P A. Pgina 12 de 50
Captulo 2 Teoria da Criptografia de Chaves Pblicas RSA Criptografia Assimtrica e Assinatura Digital
2.2.3.3 RSA
RSA foi criado por R. Rivest, A. Shamir e L. Adleman em 1977. Foi o primeiro algoritmo a usar a tcnica Diffie-Hellman, usando criptografia assimtrica. O RSA muito popular at hoje e sua segurana advm da dificuldade de fatorar nmeros inteiros muito grandes. Para garantir a segurana o RSA utiliza nmeros primos p e q com mdia de 300 dgitos. Detalhes sobre o algoritmo do RSA sero visto no captulo 3.
2.2.3.4 - DSA
DSA o acrnimo de Padro de Assinatura Digital (Digital Signature Standart), criado pelo NIST, e especifica o DSA para assinatura digital e SHA-1 para hashing. O DSA um algoritmo assimtrico e a chave privada opera sobre o hash da mensagem SHA-1. Para verificar a assinatura um pedao do cdigo calcula o hash e outro pedao usa a chave pblica para decifrar a assinatur a, e por fim ambos comparam os resultados garantindo a autoria da mensagem. O DSA trabalha com chaves de 512 1024 bits, porm ao contrrio do RSA que multipropsito, o DSA somente assina e no garante confidencialidade. Outro ponto contra o DSA que a gerao da assinatura mais rpida do que o RSA, porm de 10 a 40 vezes mais lenta 3 para conferir a assinatura. O algoritmo do DSA o seguinte para gerao das chaves 1) Selecionar um primo q tal que 2159 < q < 2160. 2) Selecionar t tal que 0 <= t <= 8, e selecionar um primo p tal que 2511+64t < 512+64t p<2 com a propriedade que q seja divisvel por (p-1). * 3) Selecionar um gerador a de um grupo de ordem q em Z p , e selecionar um * (p-1)/q elemento g que pertena a Z p , e calcular a = g mod p . 4) Selecionar um nmero aleatrio x tal que 1 <= x <= q 1 5) Calcular y = a x mod p. 6) Chave pblica de A (p,q,a,y). Chave Pblica x. Para gerar assinatura o DSA usa os seguintes passos: 1) Seleciona um nmero aleatrio secreto k, onde 0 < k < q. 2) Calcula r = ak mod p 3) Calcula k-1 mod q 4) Calcula s = k-1 {h(m) + xr} mod q. (h(m) o hash da mensagem) 5) Assinatura de A para m so r e s.
Captulo 2 Teoria da Criptografia de Chaves Pblicas RSA Criptografia Assimtrica e Assinatura Digital
Para verificar a assinatura de A (r e s), B deve usar os seguintes passos: 1) Obtem a chave pblica de A (p,q,a,y) 2) Verifica que (0 < r < q) e (0 < s < q). Se no, rejeita assinatura. -1 3) Calcula w = s mod q e calcula h(m) (h(m) o hash da mensagem) 4) Calcula u1 = w.h(m) mod q e u2 = rw mod q 5) Calcula v = (a u1 yu2 mod p) mod q 6) Aceita assinatura se v = r.
2.2.3.5 Rpida Comparao das Utilidades dos Algoritmos
Dentre a criptografia de chaves pblicas, veremos abaixo algumas das finalidades destes algoritmos: Ciframento/Deciframento (Criptografia): O destinatrio e o rementente desejam conversar com privacidade Assinatura Digital: Quando se precisa provar a autoria de uma mensagem. Troca de Chaves: Dois lados cooperam para trocar a chave que ser usada em uma sesso de transmisso de dados.
Algoritmo RSA Diffie-Hellman DSA Criptografia Assinatura Digital Troca Chaves
Pode-se perceber que o RSA o algoritmo que permite flexibilidade e por isso ele continua sendo o principal algoritmo de criptografia de chaves pblicas h 20 anos.
Pgina 14 de 50
Captulo 2 Teoria da Criptografia de Chaves Pblicas RSA Criptografia Assimtrica e Assinatura Digital
Alguns itens tambm devem ser conhecidos para diferenciar a criptografia simtrica da assimtrica:
Funcionamento Criptografia Simtrica O mesmo algoritmo usado para criptografar e decriptografar a mensagem Que destino e origem saibam o algoritmo e a chave Criptografia Assimtrica O mesmo algoritmo usado para criptografar e decriptografar a mensagem, porm usando duas chaves. A origem e o destino devem saber uma (somente uma) chave do par de chaves. Todos podem ter a chave pblica, porm s 1 deve saber a chave privada. Apenas 1 das duas chaves deve ser mantida em segredo impossvel decifrar uma mensagem mesmo tendo acesso ao algoritmo, chave pblica e a exemplos dos textos cifrados. Tendo a chave pblica deve ser impossvel chegar na chave privada. Identificao Assinatura Digital Privacidade Troca de Chaves (muitas utilidades) Lenta Alta 2 Chaves (Pblica e Privada)
Requer
Segurana
A chave deve ser mantida em segredo Mesmo sabendo o algoritmo e tendo exemplos dos textos criptografados deve impossibilitar a determinao da chave.
Utilidade
Privacidade
Pgina 15 de 50
Para cada bloco a ser cifrado deve -se fazer o clculo acima. Ambos devem saber o valor de n. Portanto, a chave pblica definida pela dupla e e n, sendo KUa = {e, n}. A chave privada definida pela dupla d e n, sendo KRb = {d, n}.
Pgina 16 de 50
Para gerar a chave precisamos de algumas coisas: 1. Selecionar dois nmeros primos p e q grandes (geralmente maior que 10100 ). (veja prxima seo para ver como achar nmeros primos) 2. Calcule o valor de n = p . q 3. Calcule n = ( p 1) ( q 1) 4. Selecione um inteiro d relativamente primo n . 5. Calculamos e de forma que (e . d) mod n = 1 Vejamos um exemplo: 1. 2. 3. 4. p = 3 e q = 11 n = 3 * 11, logo n = 33 n = (3 1) (11 1) = 2 10 , portanto n =20 d um inteiro relativamente primo n , e atende 1 < d < n d=7 (9, 11, 13, 15, 17 e 19 seriam outras opes) (no seria possvel 5 j que 5 vezes 4 = n (20)) 5. Calculamos e de forma que (e . 7) mod 20 = 1 e = 1 => (1.7) = 7 mod 20 1 => falso e = 2 => (2.7) = 14 mod 20 1 => falso e = 3 => (3.7) = 21 mod 20 = 1 => verdadeiro (outros mltiplos de 3 seriam possveis (6,9,12, etc)). Portanto teramos KU = {3, 33} e KR = {7, 33}. Lembrando que neste caso e, d e n tem menos de 2 6 , ento temos apenas 6 bits. Se tivssemos um texto com o nmero 20, uma mensagem cifrada seria: C = M e mod n C = 203 mod 33 C = 8000 mod 33 C = 14 E para decifrar: M = C d mod n M = 147 mod 33 M = 105.413.504 mod 33 (resposta = 3.194.348 x 33 + 20 = 105.413.504) M = 20
Pgina 17 de 50
No prximo exemplo, vamos tentar com outros nmeros: 1. p = 7 e q = 17 2. n = 7 . 17 = 119 3. n = (7 1) (17 1) = 6 16 , portanto n =96 4. d = mmc(n ,d) = 1, tal que (1 < d < n )
(se mximo mltiplo comum 1, ento so primos entre si)
Portanto KU = {5,119} (publico) KR = {77,119} (privado) Criptografando o nmero (entrada no cifrada) 19: M = 19 C = M e mod n C = 195 mod 119 C = 2.476.099 mod 119 C = 66 (porque 20.807 x 119 + 66 = 2.476.099) Decriptografando C = 66 M = C d mod n M = 6677 mod 119 M = 1,27316015 x 10 140 mod 119 M = 19
E o ltimo exemplo acontecer com um nmero um pouco maior: 1. p = 2357 e q = 2551 2. n = p.q = 6012707 3. n = (2357-1)(2551-1) = 6007800 4. d = mmc(n ,d) = 1, tal que (1 < d < n ), ento d = 3674911 5. (e . d) mod n = 1, ento e = 422191 Ento KU = {3674911,6012707} e KR = {422191,6012707}
Para decriptografar a mensagem C = 3650502 M = C d mod n M = 3650502422191 mod 6012707 M = 5234673 Agora nossa chave pblica (3.674.911) tem somente 23 bits (223 = 8388608), imaginem com 512 bits ou 1024 bits o tamanho dos clculos. Isto expressa o grande overhead do protocolo RSA. Entende-se como um mnimo de segurana sendo p e q nmeros com 512 bits e n tendo aproximadamente 1024 bits.
Porm pode-se resolver rapidamente em tempo log2(x). Para isso basta a 2 16 cada multiplicao, faze-la por ela mesma, formando sucessivamente x , x4 , x8 , x , 32 x (5 passos ao invs de 32). Se x for um valor no mltiplo de 2, ento basta fazer at o maior mltiplo antes de x, e depois multiplicaes sucessivas. Por exemplo x40 , ento faramos x32 * x * x * x * x * x * x * x * x, ou ainda (x32 * x8 ). O algoritmo para calcular a b mod n : c 0; d 1; k len(bits(b)) ; tamanho de b em binrio. for i k downto 0 do { c 2*c d (d * d) mod n if bi = 1 then { cc+1 d (d * a) mod n } } return d
Figura 4: Algoritmo para clculo de ab mod n Pgina 19 de 50
i bi c d
9 1 1 7
8 0 2 49
7 0 4 157
6 0 8 526
5 1 17 160
4 1 35 241
3 0 70 298
2 0 140 166
1 0 280 67
0 0 560 1
Pgina 21 de 50
Um tipo especfico de primos chama-se nmeros Primos Mersenos (Mersenne Primes), j que satisfazem 2x 1 primo. Como provar se um nmero primo? Um dos teoremas simples o Teste de Lucas-Lehmer que : para um nmero p mpar, o nmero merseno 2p -1 primo se e apenas se 2p-1 divide S(p-1) onde s(n+1) = S(n) 2-2 e s(1) = 4. Um dos algoritmos para esse :
Lucas_Lehmer_Test(p): s := 4; for i from 3 to p do s := s2-2 mod 2p-1; if s == 0 then 2p-1 is prime else 2p-1 is composite;
Vamos provar que 27 -1 primo: 27 1 = 128 1 = 127 S0 = 4 (inicia-se com 4) S1 = (4 * 4 - 2) mod 127 = 14 mod 127 = 14 S2 = (14 * 14 - 2) mod 127 = (196-2) mod 127 = 67 S3 = (67 * 67 - 2) mod 127 = (4489-2) mod 127 = 42 S4 = (42 * 42 - 2) mod 127 = (1767-2) mod 127 = 111 S5 = (111 * 111 - 2) mod 127 = (12321 2) mod 127 = 0 Se o resto = 0 ento 27 -1 primo.
Pgina 22 de 50
Atualmente (Jun/2003) o maior nmero merseno 213.466.917 -1 que um nmero com exatos 4.053.946 dgitos e foi encontrado em 2001. A descoberta foi feita em um AMD 800MHz T -Bird e levou 42 dias para provar que este nmero era primo. Este e o trigsimo nono numero merseno encontrado em 2000 anos.
3.4.3.2 Primos entre si
Dizemos que a e b so primos entre si quando o mdc(a,b) = 1. Ou seja, somente 1 divide a e b com mod 0. Por exemplo, 8 e 15 so primos entre si, j que os divisores de 8 so 8, 4, 2 ou 1 e os divisores de 15 so 15, 5, 3 e 1, ou seja, somente 1 comum a ambos.
3.4.3.2 Descobrindo e provando primos
Descobrir nmeros primos uma tarefa de tentativa e erro. Atualmente no existe uma tcnica para dizer precisamente se um nmero primo. O jeito escolher um nmero mpar e testar para saber se ele primo. Se no for, escolher outro nmero at encontrar. Tambm dizer se o nmero escolhido primo com certeza no uma tarefa to simples. Para isso usamos testes de primaridades e roda-se testes para que a probabilidade de um nmero p ser primo ser prximo de 1,0. Um dos algoritmos mais populares Miller-Rabin. Estatisticamente, os nmeros primos esto espaados um a cada ln(p). Porm na mdia todos os nmeros pares podem ser rejeitados no incio, portanto 200 precisamos testar ln(p)/2 nmeros. Por exemplo, para um primo da ordem de 2 , precisamos de no mximo ln(2200 )/2 = aproxidamente 69 tentativas antes de achar um primo. O mtodo Miller-Rabin diz que supondo que n>1 um inteiro impar, escreve-se n-1 2k com m impar e escolhe-se um inteiro a tal que (1< a <n-1). Se a m 1 mod n ou a 2 m 1 mod n para pelo menos um r, tal que (1< r < k-1), ento n declarado provvel primo. Se isso for verdade, a chance de n ser primo boa, porm deve-se repetir o teste com outro valor de a para melhorar a probabilidade (geralmente 10 vezes). De acordo com a hiptese de Riemann, se todos os valores de a at 2 (ln( n)) 2 forem testados n declarado garantidamente primo.
r
Pgina 23 de 50
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
Ao enviar uma mensagem, seu certificado digital segue em anexo. O destinatrio da mensagem utiliza o certificado digital inicialmente para verificar se a chave pblica do autor autntica e/ou ento para ler a prpria mensagem. Dessa forma, apenas uma chave pblica (a da autoridade certificadora) deve ser armazenada ou pblicada, pois a partir da todos os outros podem simplesmente transmitir suas respectivas chaves pblicas e certificados digitais vlidos juntamente com suas mensagens. Atravs da utilizao dos certificados digitais, uma cadeia de autenticao que corresponda a uma hierarquia organizacional pode ser estabelecida, permitindo o registro e certificao adequados de chaves pblicas em um ambiente distribudo. Depois de adquirido o certificado digital, ele pode ser utilizado para uma grande variedade de aplicaes, desde a troca de e -mails entre escritrios, empresas at a transferncia eletrnica de fundos em todo o mundo. Para a utilizao de certificados digitais, deve existir um elevado grau de confiana quanto ao vnculo entre um certificado digital (solicitado pelo usurio) e o usurio ou organizao a ele associado (certificate authority). Esta confiana estabelecida atravs da construo de hierarquias de certificados digitais, onde todos os membros da hierarquia devem aderir ao mesmo conjunto de polticas. Os certificados digitais somente sero emitidos a pessoas ou entidades, como membros em potencial da hierarquia e aps estabelecida uma comprovao de identidade. O estabelecimento da comprovao da identidade ou de como os certificados so emitidos, pode ser de diferentes formas de acordo com as polticas de cada hierarquia. Um exemplo de empresa geradora de certificados digitais a VeriSign que opera vrias hierarquias de certificados digitais. Uma Autoridade Certificadora comercial tem um elevado grau de segurana quanto ao vnculo entre o certificado digital do usurio final e o prprio usurio final. Os membros de uma CA comercial RSA/VeriSign podem contar com um alto nvel de certeza, em virtude da adeso s polticas, quanto s pessoas/empresas com quem se comunicam. muito importante analisar a entidade certificadora, pois sem a devida segurana associada uma hierarquia de certificao adequadamente gerenciada, o uso de certificados digitais tem valor restrito. Seria mais simples se a empresa geradora de certificados se a data de validade de um certificado no precisasse ser alterada, ou seja s perdesse a validade conforme o prazo estipulado no seu prprio certificado. Caso a chave pblica de algum usurio foi comprometida ou ainda caso a CA no deseja certificar um determinado usurio devido alguma negligncia as normas, pode-se recorrer Revogao de Certificados, mencionado na RFC1422. Desta forma toda CA deve manter uma lista de certificados revogados (CRL Certificate Revocation List), ao requerer um certificado a uma CA o usurio deve verificar a CRL e possivelmente manter um cache dos certificados revogados. No sistema de gerenciamento de certificados, onde distribudo pode causar atraso na atualizao dos certificados revogados, esta uma das principais vulnerabilidades no gerenciamento de chaves baseadas em certificados pblicas.
Pgina 25 de 50
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
assinatura adulterada n seja detectada, o atacante deve ter acesso a chave privada o de quem assinou esse documento. As assinaturas digitais so possveis de serem verificadas usando chaves pblicas. A assinatura digital tambm valiosa, pois pode-se assinar informaes em um sistema de computador e depois provar sua autenticidade sem se preocupar com a segurana do sistema que as armazena. Abaixo segue um fluxograma do funcionamento do trafego de uma mensagem com assinatura digital.
Exemplificando, cada membro de uma comunicao possui uma chave pblica (nI , cI) e uma chave privada (nI , dI) do sistema de cifragem RSA. Suponhamos que Ana pretende enviar ao Beto uma mensagem M, assinada e cifrada. Primeiramente, Ana vai assinar a mensagem M aplicando a sua chave privada (nA , dA ), obtendo: S MdA (mod nA). Para cifrar a mensagem, o Ana usa a chave pblica do Beto (nB , cB ): X ScB (mod nB). Existe um projeto lei do Comit Executivo do comercio eletrnico que regulamenta a utilizao da assinatura digital no comercio, atravs da Lei PROJETO DE LEI N. 4.906, em 26/09/2001 Dispe sobre o valor probante do documento eletrnico e da assinatura digital, regula a certificao digital, institui normas para as transaes de comrcio eletrnico e d outras providncias. No entanto muitas instituies dividem-se nas diferenas entre uma assinatura manual e uma digital, pois para algum assinar em nome de outra pessoa tem que ser reconhecido em cartrio com as burocracias legais, j para transferncia de assinatura digital isso no possvel.
Pgina 27 de 50
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
4.1.4 SSL/TLS
SSL (Secure Socket Layer ) RFC 3207 uma camada do protocolo de rede, situada abaixo da camada de aplicao, com a responsabilidade de gerenciar um canal de comunicao seguro entre o cliente e o servidor. O SSL foi desenvolvido pela Netscape Communications Corporation . Atualmente implementado na maioria dos browsers. A palavra-chave https:// usualmente empregada para designar uma conexo segura. O SSL preenche os seguintes critrios que o fazem aceitvel para o uso nas transmisses das mais sensveis informaes, como dados pessoais e nmeros do carto de crdito: Autenticidade: De modo a garantir a autenticidade de A no caso anterior, um sistema de cdigos um pouco mais complexo necessrio. A mensagem de A para B primeiramente criptografada com a chave privada de A e posteriormente com a chave pblica de B. Para decodificar a mensagem B usa primeiro sua chave privada e depois a chave pblica de A. Agora B pode ter certeza de que A realmente quem diz ser, pois ningum mais poderia criptografar a mensagem usando a chave privada de A. Isso desenvolvido pelo SSL com o uso de certificados. Privacidade: Digamos que uma mensagem transmitida de A para B. Neste caso A usa a chave pblica de B para criptografar a mensagem, tornando B a nica pessoa que pode decodificar a mensagem, usando a sua chave privada. Ns no podemos entretanto ter certeza quanto a identidade de A. Integridade: a integridade garantida pelo uso do MAC (Message Authentication Code) com as necessrias funes da tabela hash. Na gerao de uma mensagem, o MAC obtido por aplicao das funes da tabela hash e codificado junto com a mensagem. Aps a mensagem ser recebida sua validade pode ser checada comparando-se o MAC com o resultado obtido pelas funes hash. Isto previne mensagens alteradas por terceiros durante a transmisso. No repudiao: Um sistema totalmente seguro deve ser capaz de detectar impostores ou, ainda melhor, se prevenir contra a duplicao das chaves. Isto executado por um hardware baseado em ficha nica. O SSL no
Pgina 28 de 50
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
suporta sozinho esta implementao, mas a realiza em conjunto com Fortezza. O protocolo SSL suporta uma variedade de diferentes algoritmos criptogrficos, para uso em operaes de autenticao do servidor e do cliente, transmisso de certificados, e estabelecimento de sesses. Clientes e servidores podem suportar um algoritmo diferente, ou um conjunto de algoritmos, dependendo de fatores como: qual verso de SSL eles (cliente e servidor) suportam, polticas da companhia, e restries do software SSL. Alm de outras funes, o protocolo de Handshake do SSL que determina como cliente e servidor negociam quais conjuntos de algoritmos iro usar para se autenticar um para o outro, para transmitir certificados, e para estabelecer sesses. Algoritmos de troca de chaves como KEA e RSA Key Exchange governam a maneira pela qual clientes e servidores determinam as chaves simtricas que usaro durante uma sesso com SSL. O mais comumente usado o RSA Key Exchange. O protocolo TLS (Transport Layer Security) padronizado pela IETF e baseado na SSLv3. Este protocolo no aprimorou tanto a os mecanismos de checksum, no entanto possui mensagens extras de preveno de ataques. Apesar disso a verso a mais largamente desenvolvida e a SSLv2. Atualmente poucos comerciantes utilizam somente o TLS.
4.1.5 IPSEC
um padro de protocolos criptogrficos desenvolvidos para o IPv6. Realiza tambm o tunelamento de IP sobre IP. composto de trs mecanismos criptogrficos: Authentication Header (define a funo hashing para assinatura digital), Encapsulation Security Payload (define o algoritmo simtrico para ciframento) e ISAKMP (define o algoritmo assimtrico para gerncia e troca de chaves de criptografia). Criptografia e tunelamento so independentes. Permite Virtual Private Network fim-a-fim.
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
4.2.2 PKIX
Os padres PKIX foram desenvolvidos para prover segurana ao padro X.500. E as verses do mesmo foram se evoluindo de acordo com a constatao de novas exigncias para prover mais segurana. Estes padres possuem dois formatos de certificados: certificados: gerar a associao da entidade-fim (no original, End Entity) com a respectiva chave pblica; certificados de revogao: bem semelhante entidade fim e serve para divulgar uma lista dos certificados que foram revogados. O X.509 passou por 3 verses, abaixo seguem as recomendaes adicionadas/alteradas e as justificativas de vulnerabilidades encontradas a cada verso dos mesmos: - X.509v1: tinha um nmero restrito limitado de campos nesta forma de utilizao; alm disso, alguns problemas de segurana foram identificados no padro. Foi o adotado pelo padro PEM (Privacy Enhanced Mail) em 1993. - X.509v2: Aps a reviso da primeira verso, nesta verso foram adicionados novos campos de acordo com a figura abaixo com o objetivo de possibilitar a reutilizao de nomes iguais em diferentes certificados digitais. - X.509v3: Foi implementado devido a ineficincia encontrada nas verses anteriores quanto a implementao do PEM. Desta forma na atual verso, de junho de 1997, foram adicionados campos de extenso, o que torna o certificado mais flexvel e com uma expanso na utilizao muito maior.
Pgina 30 de 50
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
Embora existam vrias estruturas de certificados em uso na Internet, sem dvida a descrita na recomendao X.509 a mais aceita. Segue o formato do padro X.509 e suas alteraes no decorrer das verses:
Verso: Identifica a verso do formato do certificado; Numero de serie: numero seqencial nico para cada certificado emitido por uma CA. Identificador: algoritmo usado para assinar o certificado (Ex.RSA) Nome do emissor: nome da CA Perodo de validade: data de inicio e data de termino da validade Nome do sujeito: Nome da entidade cuja a chave pblica foi assinada Informaes da chave pblica: algoritmo, parmetros e atributos da chave pblica propriamente dita. Assinatura Digital: Assinatura gerada usando a chave pblica da CA sobre as informaes acima.
Pgina 31 de 50
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
Abaixo segue uma comparao do formato de um certificado X.509 verso3 e um formato de um certificado revogado CRL (Certificate Revocation List).
4.2.3 ASN.1
A Abstract Syntax Notation One (ASN.1) encontra-se especificada nas normas X.208, embora tenha sido criada para especificar tipos de dados e valores de dados nas normas OSI, hoje utilizada sistematicamente para especificar objetos nos mais variados standards, incluindo os criptogrficos. As recomendaes da linha X.500 definem que todas as informaes a serem armazenadas so primeiramente descritas segundo uma sintaxe padronizada chamada Abstract Syntax Notation One (ASN1). O ASN1 que introduz a definio de Object Identifieres (OIDs) e torna possvel a comunicao da semntica da informao entre sistemas distintos. As formas mais usuais de codificao do ASN.1 so: DER (Distinguished Encoding Rules) BER (Basic Encoding Rules).
4.2.3.1 BER
um mecanismo de codificao definido no standard X.209 e que, por permitir obter vrias codificaes para o mesmo valor, no conveniente quando necessria uma codificao sem ambigidades.
Pgina 32 de 50
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
4.2.3.2 DER
um subconjunto do BER definido no standard X.509 e que, introduzindo restries adicionais codificao, garante uma codificao nica para cada valor ASN.1. O DER geralmente utilizado quando se pretende garantir a compatibilidade da codificao ASN.1 com implementaes heterogneas. utilizado aps a descrio do certificado, no momento do transporte, os dados so codificados de acordo com o DER de modo que os mesmos p odem ser armazenados e transferidos independentemente da plataforma de hardware e software.
4.2.2 PKCS
PKCS (Public Key Cryptography Standards) o conjunto de especificaes criadas para padronizar os formatos e operaes de criptografia. Existem vrios padres para os diversos algoritmos, dentre estes citados abaixo, o PKCS1 verso 2.0 especifica o algoritmo RSA: PKCS#1 RSA Encryption Standard - Especificao de padro de dados para o protocolo RSA, incluindo o padro para criptografia e assinatura digital RSA e padro para estocagem de chaves pblicas e privadas. PKCS# 3 Diffie-Hellman Key Agreement Standard Este padro descreve o mtodo para implementao de chaves no Diffie-Hellman, cujo objetivo deste padro fornecer protocolos para estabelecimento de conexes seguras. PKCS#5 Password-Based Encryption Standard - Especificao de um padro para proteo de dados para ser usar a criptografia baseada em senha com o DES. PKCS #6 Extended-Certificate Syntax Standard PKCS#7 Cryptographic Message Syntax Standard Este padro descreve um sintaxe geral para os dados serem criptografados e aplicados em assinaturas digitais e mensagens digitais. Tomando como base a RFC 2630. utilizado para prover mensagens seguras em S/MIME. PKCS#8 Private-Key Information Syntax Standard - Especificao de um padro para estocagem de chaves privadas, incluindo a vantagem de criptograf-las com PKCS#5. PKCS#10 Certification Request Syntax Standard - Especificao de um padro para codificar requisies de certificados, incluindo o nome da pessoa que requisita o certificado e sua chave pblica. PKCS #11 Cryptographic Token Interface Standard Este padro descreve a interface de programao chamada Cryptoki" utilizada para operaes criptogrficas em hardwares: tokens, smart cards. quo popular utilizar o PKCS#11 para prover o suporte aos tokens como o Netscape as aplicaes de SSL e S/MIME.
Pgina 33 de 50
Captulo 4 Utilizao Prtica, Formatao e Gerenciamento de Chaves no RSA RSA Criptografia Assimtrica e Assinatura Digital
PKCS #12 Personal Information Exchange Syntax Standard - Este padro define o formato para armazenamento e transporte de chaves privadas, certificados, entre outros PKCS #13 Elliptic Curve Cryptography Standard Padronizao de algoritmos de criptografia baseado em curvas elpticas incluindo o formato, a gerao de validao de chaves, assinaturas digitais, etc. PKCS #15 Cryptographic Token Information Format Standard o padro que define o uso da tecnologia de criptografia baseada em tokens.
O PKCS#1 verso 2.1 (RFC 3447) estabelece algumas normas na base de clculos do RSA j vista anteriormente, o mtodo de cifragem e decifragem, assinaturas digitais, e padres para gerenciamento e armazenamento de chaves.
Pgina 34 de 50
A segurana do RSA baseada na dificuldade de fatorar um nmero n quando n um nmero muito grande. Suponhamos que perdemos os nmeros p e q, mas conhecemos o produto n = pq. Como recuperar? Existem vrios mtodos de ataque ao RSA, mas todos os caminhos so pelo menos to difceis quanto fatorar n.
Os ataques de busca (ou fora bruta) so os que no empregam nenhum esforo intelectual para descobrir a chave que decifra os dados. De posse do algoritmo, o atacante simplesmente tenta todas as combinaes possveis at quebrar a criptografia. Em muitos casos, especialmente quando se trata de chaves de comprimento longo, pode ser necessrio muito poder de computao para que a chave seja descoberta em tempo hbil. A defesa do RSA contra esse tipo de ataque baseia-se na mesma dos outros algoritmos: usar um nmero gigantesco de possveis chaves. Por exemplo, com uma chave de 128bits existem 2128 chaves possveis, ou seja, 3,403 x 1038 chaves possveis. E alm da lentido no processo de criao de chaves longas pode fazer com que o sistema de ataque usando fora bruta se torne muito difcil.
Para um n grande usando fatores primos, tentar fatorar n um srio problema. O mais rpido algoritmo at o momento General Number Field Sieve que feito em duas etapas, criar muitas relaes independentes, tais como x x2 x3 ...... xk 1 = y1 y2 y3 ...... yr mod n, usando processamento distribudo, tais como peer-to-peer. 2 O segundo passo resolver um sistema linear a fim de encontrar x = y2 (mod n), usando um computador com muita memria. O tempo para rodar este algoritmo em 1 um inteiro de n bits exp (c + o(1))n 3 log 2 / 3 n Em situaes prticas, em 1976, estimou-se que o RSA-129 (412 bits) usado pelos autores do RSA para cifrar a primeira mensagem com mtodo de chaves pblicas demoraria milhes de anos para fatorar. Entretanto em 1994, cerca de 1600 computadores fatoraram o nmero em menos de 8 meses. O RSA129 fatorou-se em dois nmeros inteiros primos de 64 e 65 digitos usando o algoritmo Quadratic Sieve gerando uma matrix de 1883462 itens mostrando o texto criptografado The magic words are squeamish ossifrage.
Pgina 36 de 50
Um projeto da distributed.net em 22 de agosto de 1999 anunciou a decifragem de uma mensagem criptografada, um desafio da RSA Labs. Nesta ocasio, um conjunto de computadores permitiu a fatorao de um nmero com 512bits (155 dgitos decimais) em dois primos de 78 dgitos cada. O algoritmo f o oi Number Field Sieve em uma rede com 300 mil computadores. Seriam necessrios 8000 Anos-MIPS para fazer isso. A filtragem (passo 2) foi feito em um supercomputador Cray C916 no Centro de Computao Acadmica de Amsterd e a implementao do cdigo foi f ito por Peter Mongomery consumiu 3,2GB de RAM, e 224 horas de CPU para processar a matriz tridimensional com 6.699.191 linhas, 6.711.336 colunas e 417.131.631 linhas em profundidade. O tempo de fatorao total foi de 5,2 meses, alm de 2,2 meses para selecionar os polinmios. A RSA Labs mantm vrios desafios em seu site para nmeros de 576 2048 bits. Para ter uma idia da dimenso, a RSA Labs estima que o RSA1024 requer 1 milho de vezes mais esforo computacional do que o RSA512. Abaixo o tempo estimado nos processos em fatorao:
Nmeros de Dgitos Decimais 100 110 120 129 130 Nmero aprox. de Bits 332 365 398 428 431 Dados conseguidos Abril 1991 Abril 1992 Junho 1993 Abril 1994 Abril 1996 Anos MIPS 7 75 830 5000 500 Algortimo Quadrtico Quadrtico Quadrtico Quadrtico Campo nmerico generalizado
Os ataques em RSA-130 usaram um algoritmo mais novo, de campo de nmero generalizada (GNFS), e pde fatorar um nmero maior que RSA-129 a s 10% do esforo de computao. O aumento continua em poder de computao, e continua o refinamento de fatorao do algoritmo. Vimos que o movimento para um algoritmo diferente resultado em uma tremenda velocidade. Ns podemos esperar refinamentos adicionais no GNFS, e o uso no algoritmo at melhor. Na realidade, um algoritmo relacionado, o campo de nmero especial (SNFS), pode fatorar nmeros com uma forma especializada consideravelmente mais rpido que o campo de nmero generalizado. razovel esperar uma inovao que habilitaria um desempenho fatorando todo dentro do mesmo tempo como SNFS, ou at melhor. Atualmente chaves de 1024 bits so o mnimo para ser considerado seguro, porm precisamos ter cuidado para escolher um tamanho fundamental para RSA. Para o prximo futuro, um tamanho fundamental na gama de 1024 a 2048 bits parece razovel, j que a cada dia a tecnologia avana e existe mais poder computacional para fatorar n e melhores algoritmos de fatorao. No entanto, se algum dia algum descobrir um mtodo eficaz de fatorao de inteiros, ser fcil quebrar todas as cifras RSA. Se um dia isso acontecer, criptosistemas como curvas elpticas seria a soluo, j que utilizam grupos e polinmios mais complexos.
Pgina 37 de 50
Se descobrirmos n poderemos facilmente obter d calculando o inverso de c mod n. Se conhecemos o produto P = pq = n e n = (p-1)(q-1) ento igual a n(p+1)+1. fcil obter a soma S = p+q calculando S= p + q = n - n +1. Logo p e q so razes do polinmio x (n- n +1)x+n. Outra maneira semelhante de calcular p e q, primeiro calculamos p + q = n n + 1 e depois calcularemos:
p q = 2 ( p + q) 4n ( p + q) ( p q) . q= 2
2
Estes dois processos permitem facilmente fatorar n conhecendo n, porm conhecer n to difcil quanto fatorar n. Suponha que o criptoanalista aprendeu que n = 84773093 e (n) = 84754668. Esta informao d origem equao quadrtica seguinte: p2 - 18426p + 84773093 = 0. Isto pode ser resolvido pela frmula quadrtica, enquanto os dois roots 9539 e 8887. So os dois fatores de n.
O resultado muito interessante para ns, agora que sabemos fatores de n, qualquer algoritmo que compute o exponente de decriptao a ser usada como uma subrotina de dados em um algoritmo de probabilidades fator n pode resolver o problema. O valor de n chega a um acordo. Se isto acontecer, no suficiente para Bob escolher um expoente de nova encriptao; ele tambm tem que escolher um novo mdulo n. O algoritmo ir descrever uma probabilidade do algoritmo do tipo de Las Vegas. Definio: Suponha 0 e < 1 um nmero real. Um algoritmo de Las Vegas um algoritmo de probabilidade, que no pode dar uma resposta com um pouco de probabilidade (por exemplo, pode terminar com a mensagem "nenhuma resposta"). Porm, se o algoritmo devolver uma resposta, ento a resposta, deve estar correta. Observe que um algoritmo de Las Vegas pode no dar uma resposta, mas qualquer resposta que mostrar estar correta. Em Monte Carlo o algoritmo sempre mostra para uma resposta, mas a resposta pode estar incorreta. Se ns tivermos um algoritmo de Las Vegas para resolver um problema, ento ns rodamos o algoritmo simplesmente inmeras vezes at que ache uma
Pgina 38 de 50
resposta. A probabilidade que o algoritmo v devolver "nenhuma resposta" m vezes em seqncia d em . A mdia (esperada) de nmeros de vezes que o algoritmo e dever rodar para obter uma resposta na realidade 1/(1 - e). Suponha que A um algoritmo hipottico que compute o exponente de decriptao a de b e n. Descreveremos um algoritmo de Las Vegas que usa A como um guia. Este algoritmo ir fatorar n pelo menos com probabilidade 1/2. Conseqentemente, se o algoritmo rodado m vezes, ento n ser pelo menos fatores com probabilidade 1 - 1/2m .
5.2.2.4 Calcular d sem possuir n
Calcular d sem possuir n no mais fcil do que fatorar n. Provou-se que n pode ser fatorado usando um mltiplo de n, j que cd 1(mod n) equivalente a cd = 1 + k (n) para algum k contido em Inteiros. e Outro jeito de fazer isso encontrar M (mod n) a partir de M mod n, ou seja, calcular a ensima raiz do mdulo n sem fatorar n. Atualmente no se sabe uma maneira rpida de descobrir isso, mas com certeza um dos problemas difceis.
compiladores C, a utilizao de tabelas, leva a um cdigo que executado sempre com o mesmo tempo, evitando este tipo de ataque. No entanto, a memria ocupada para o alojamento das tabelas uma desvantagem que necessria ponderar.
Uma vez um expoente e, pode ser desejvel escolher um expoente d um pouco menor para melhorar a eficincia da decriptografia. Entretanto se mdc(p-1;q1) pequeno, em um caso tpico se e e d tem aproximadamente um quarto do tamanho de n, existe um algoritmo eficiente para calcular d baseado em n e e. Entretanto para evitar este ataque d deve ser aproximadamente do tamanho de n.
5.2.4.2 Expoente e pequeno para criptografia
Para reduzir o tempo de criptografia ou de verificao da assinatura, possvel usar um e pequeno para o expoente pblico. O menor valor para e 3, porm para defender-se de certos ataques um valor de e = 216 + 1 (65537) recomendado. Quando 216+1 usado, a verificao da assinatura leva 17 ciclos de multiplicao, ao contrrio de possveis 1000 ciclos quando 3 < e <n.
5.2.4.3 Ataque de Mdulo Comum
Como se sabe a chave pblica d e n. Entretanto se em uma rede que implementa uma autoridade local e distribui pares de chaves para vrias mquinas na rede, e se ele comea a selecionar um mdulo n para um grupo de mquinas, possvel se uma mquina enviar dados para duas outras e usarmos a tcnica de captura de pacotes na rede (eavesdropper) mais fcil conseguir { e,n} baseado na informao pblicamente disponvel.
5.2.4.4 Criptoanlise do RSA se d for menor que n0,292
Um recente papel de Dan Boneh e Glenn Durfee, mostra que possvel atacar a chave privada d se o valor de d < n0,292. Entretanto requer um alto grau de conhecimento matemtico. Para maiores informaes consulte: http://crypto.stanford.edu/~dabo/papers/lowRSAexp.ps
5.2.4.5 Ataque de Broadcast de Hastad
Supondo que Bob (B) quer enviar uma mensagem M para um nmero k de computadores P, tais que seriam P1 ,P2 ,....,Pk. Cada P possui sua prpria chave pblica. Assumimos que M menor que todos os n da rede. Para B enviar M, ele
Pgina 40 de 50
tem que cifrar com a chave pblica de cada P e enviar o i-nsimo texto cifrado para Pi. Um hacker poderia capturar esses pacotes enviados por B. Vamos imaginar que todos os expoentes pblicos so 3. O hacker pode refazer M se k > 3. C 1 = M3 mod n1 C 2 = M3 mod n2 C 3 = M 3 mod n3 Aplicando um teorema chamado Teorema do Resto Chins acharamos C 3 pertence a todos Inteiros satisfazendo C = M mod n n2 n3 . J que M menor que 1 todos os ns, ento possvel saber que C = M3 tem todos os inteiros, portanto basta achar a raiz cbica de M. Generalizando, se os expoentes pblicos so iguais a e, podemos saber M em menos de k > e. Porm s possvel este ataque se e pequeno.
5.2.4.6 Ataque de Exposio parcial da chave privada
Se {d,n} so a chave privada RSA, e imaginemos que uma frao de bits de d foi exposta, ento possvel reconstruir n se e < n
Que N seja o ensimo bit do mdulo RSA e M seja um bit m da mensagem com m<n. Antes de aplicar o ciframento RSA natural encher a mensagem de M com n bits adicionando bits aleatrios nele. Na verso 1 do PKCS1 usa esse esquema e antes do padding a mensagem parece com 02 Aleatrio 00 M
O resultado da mensagem n bits e criptografado usando RSA. O bloco inicial 02 um inteiro longo de 16 bits e indica que um valor de bits aleatrio foi includo na mensagem. Quando PKCS1 recebida, a aplicao decifra a mensagem, checando o bloco inicial e removendo a parte aleatria. Entretanto algumas aplicaes vem 02 e se ele no estiver presente retorna um erro com texto cifrado invlido. Com a resposta Suponha que interceptemos C que era para Bob decifrar. Para montar o ataque o computador X (atacante) escolhe um nmero aleatrio r e calcula C = rC mod N. A aplicao rodando na mquina B recebe C e responde com um erro. Porm X aprende se os 16 bits mais significantes da decriptografia de C igual a 02. Agora X tem quem teste para ele isso, para qualquer r que ele escolha. Bleichenbacher mostrou que isso suficiente para ajudar a decriptografar C.
Pgina 41 de 50
Baseia-se em problema de logaritmos discretos problema de somar sub-conjuntos baseado em fatorao de inteiros
Mais algoritmos...
Pgina 42 de 50
Aspecto Negativo - Tempo de verificao degradado - Tamanho de chave grande - Tempo de verificao degradado
A tabela abaixo mostra as caractersticas, em geral, dos algoritmos assimtricos, com sua descrio e criptoanlise: Algoritmo Descrio Criptoanlise Patente KNAPSACK Baseado no problema Todas as Hellman e Merkle, NP-completo. variantes deste EUA e Europa. 1978 algoritmos so inseguras. MCELICE Baseado na teoria de Princpio Robert McElice, codificao algbrica. semelhante ao 1978 De duas a trs vezes algoritmo No patenteado. mais rpido do que o KNAPSACK. RSA. Chave pblica Contudo, 19 muito grande: 2 bits nenhum de comprimento. O ataque bem texto cifrado duas sucedido vezes maior que o texto contra este claro original. algoritmo. Pouco divulgado. ELGAMAL Pode ser usado tanto Intratabilidade Elgamal, 1985 para gerar assinaturas do problema digitais como para do logaritmo No patenteado. cifrar dados. Baseado discreto em no problema do um corpo logaritmo discreto. finito. Mesmo princpio do promeiro algoritmo assimtrico proposto por Diffie-Hellman.
Pgina 43 de 50
Captulo 6 Comparativos entre Algoritmos RSA Criptografia Assimtrica e Assinatura Digital continuao
Descrio Algoritmo para gerar assinaturas digitais proposto pelo governo dos EUA. Esquema de assinaturas baseado no problema do logaritmo discreto. Semelhante ao algoritmo de ELGAMAL e SCHNORR. Sistema de criptografia assimtrica definidos sobre corpos compostos de pontos de uma curva elptica.
Patente Patenteado nos EUA; licena livre. Pendncia em relao s patentes: DiffieHellman, MerkleHelman e Schnorr.
Intratabilidade do problema do logaritmo discreto em grupos aritmticos definidos sobre os pontos de uma curva elptica. Oferecem o mesmo nvel de segurana que os sistemas baseados em corpos de inteiros, mas com tamanho de chave menor. Um ECC de 160 bits equivale a um sistema RSA de 1024 bits.
Pgina 44 de 50
6.3 Performance
Vamos comparar a performance do RSA com o DSA e ECDSA. Vamos assumir que: 1024-bits RSA 1024-bits DSA com subgrupos 160-bits 160-bits ECC sobre GF(p)
6.3.1 RSA
Considere que t seja o tempo para a multiplicao de 1024-bits e que verificao e = 216 + 1 requer tempo de 17t. Ento teremos que o tempos de assinatura em: - regular: ( 1024 * 3/2 ) * t = 1536 t - com CRT (Chinese Remainder Theorem): 2 * ( 3/2 * 512 ) * ( 512/1024)2 * t = 384 t
6.3.2 DSA
Assinatura: 160 * 3/2 * t = 240 t J para a verificao, computar 2 * 160 * 3/2 * t = 480 t
6.3.3 ECC
Antes de compararmos RSA com curvas elpticas (ECC), vamos comparar multiplicaes 1024 e 160-bits. ( 1024 / 160 )2 40 , portanto uma multiplicao 1024 bits 40 x multiplicao 160-bits. Assumindo que uma adio de curvas elpticas 10 multiplicaes, teremos: Assinatura: 160 * 3/2 * 10 * 1/40 * t = 60t Verificao: 2 * 160 * 3/2 * 10 * 1/40 * t = 120 t
Pgina 45 de 50
Curvas RSA com 1024-bit n, Sistemas de Elpticas e=2 16 +1, e CRT Logaritmos discretos com primo de 1024-bit 120 17 480 60 384 240 60 384 240 120 17 480
DiffieHellman
* os valores da tabela so medidas em unidades de tempo necessrias para completar uma determinada operao se ns assumirmos que uma multiplicao modular de 1024 bits requer uma unidade de tempo. Nesta tabela podemos verificar que o RSA mais rpidos que os demais para: encriptar e verificar, mas perde na assinatura e decriptao. (somente ficando a frente de Diffie-Hellman) * Via Internet, consulte http://www.rsasecurity.com/rsalabs/technotes/elliptic_curve.html.
Devido grande importncia das curvas elpticas em competio ao RSA, vamos destacar um pouco mais este comparativo, como abaixo...
RSA
RSA proposto Algoritmo de fatoramento quadrtico torna-se cada vez mais prtico.
ECC
Proposto o primeiro uso de curvas elpticas Reduo do problema do algoritmo dos logaritmos discretos das curvas elpticas para um algoritmo subexponencial para algumas curvas.
1991
1993 1994
Para o RSA, o tamanho do problema o tamanho do mdulo que deve ser fatorado. J nas curvas elpticas, o tamanho do problema o nmero de pontos N no grupo em que se est trabalhando.
Pgina 47 de 50
Concluso
Vimos que existem dois mtodos de criptografia: Criptografia Simtrica (que usa apenas uma chave) e a Criptografia Assimtrica (chaves-pblicas e privadas). Criptografia serve para vrios propsitos, desde a privacidade nas comunicaes at a troca de chaves e assinaturas digitais. Entre os algoritmos simtricos temos o DES, ElGamal, AES, etc, algoritmos para assinatura digital como RSA, DSA, ElGamal, etc e algoritmos de chaves pblicas tais ECC (Curvas Elpticas), RSA, etc e Aqui mostramos que para cifrar uma mensagem usamos o algoritmo C = M mod n d e para decriptografia M = C mod n. Entre os ataques ao RSA esto os ataques temporais, ataques matemticos e ataques de fora bruta, mas nenhum deles at o momento encontrou um mtodo eficaz em tempo hbil para quebrar o RSA. Concluindo, h mais de 20 anos, muitos tentaram inverter o RSA, porm nenhum ataque importante foi encontrado alm da fora bruta que na maioria das vezes no vale a pena devido necessidade de gigantesco processamento computacional para faze-lo, tornando muitas vezes o sistema que far o ataque custa muito mais do que os dados dentro do texto cifrado, desencorajando os invasores.
Pgina 48 de 50
Bibliografia
Livros:
Cryptography and Network Security Principles and Practice Second Edition William Stallings Cap. 6 Handbook of Applied Cryptography A Menezes, P van Oorschot and S. Vanstone CRC Press, 1996 - Cap. 1, 3, 8, 9, 11 e 13
Tese:
Uso de Cifragem para Proteo em Canais Abertos Jorge Manuel Lopes Santos Faculdade de Cincias da Universidade do Porto http://www.fc.up.pt/cmup/monograph/jmlsantos_mestrado.pdf
Papers:
Cryptanalysis of RSA with Private Key d Less than N0,292 Dan Boneh and Glen Durfee Factoring N = p rq for large r Dan Boneh, Glen Durfee and Nich Howgrave Graham RSA FAQ - May 2000 RSA Laboratories http://www.rsasecurity.com/rsalabs/ History of RSA Jonathan Bannet, Justin Brickell, Chad Burwick, Carol Chen, Joe Montgomery, Tim Oberg http://www.owlnet.rice.edu/~jbannet/finalpresentation.ppt AES Proposal: Rijndael Joan Daemen and Vicent Rijmen http://csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf Twenty Years of Attacks on the RSA Cryptosystem Dan Boneh http://crypto.stanford.edu/~dabo/abstracts/RSAattack-survey.html
Pgina 49 de 50
Internet Sites:
http://www.isg.rhul.ac.uk/msc/teaching/opt8/week10.pdf http://www.rsasecurity.com/rsalabs/technotes/elliptic_curve.html http://www.rsasecurity.com/rsalabs/pkcs/index.html http://www.rsasecurity.com/rsalabs/ http://www.redepegasus.com.br/abuse/ http://www.wedgetail.com/technology/pkcs.html http://ce.mdic.gov.br/ http://www.di.ufpe.br/~flash/ais98/cripto/criptografia.htm http://www.digitrust.com.br/AssinaturaDigital.doc http://www.modulo.com.br http://ece.gmu.edu/courses/ECE636/viewgraphs/s02_lecture7_pub_survey_3.pdf http://www.vectorsite.net/ttcode1.html http://www.numaboa.com/criptologia/matematica/estatistica/freqPortBrasil.php http://home.pacbell.net/tpanero/crypto/dsa.html http://www.wikipedia.org/wiki/Miller-Rabin_primality_test
Pgina 50 de 50