Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Criptografia Assimétrica, Notas de estudo de Cultura

Criptografia Assimétrica

Tipologia: Notas de estudo

2013

Compartilhado em 23/08/2013

wellington-guilherme-8
wellington-guilherme-8 🇧🇷

5

(4)

13 documentos

1 / 50

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
UNICAMP Universidade Estadual de Campinas
Especialização em Redes de Computadores
RSA
Criptografia Assimétrica
e Assinatura Digital
Luis Alberto de Moraes Barbosa
Luis Fernando B Braghetto (RA 504339)
Marcelo Lotierso Brisqui
Sirlei Cristina da Silva
Campinas, Julho/2003
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32

Pré-visualização parcial do texto

Baixe Criptografia Assimétrica e outras Notas de estudo em PDF para Cultura, somente na Docsity!

UNICAMP – Universidade Estadual de Campinas

Especialização em Redes de Computadores

RSA

Criptografia Assimétrica

e Assinatura Digital

Luis Alberto de Moraes Barbosa Luis Fernando B Braghetto (RA 504339) Marcelo Lotierso Brisqui Sirlei Cristina da Silva

Campinas, Julho/

Índice

RSA – Criptografia Assimétrica e Assinatura Digital

Índice RSA – Criptografia Assimétrica e Assinatura Digital

  • ÍNDICE.................................................................................................................................. Índice
    • ÍNDICE DE TABELAS.............................................................................................................
    • ÍNDICE DE FIGURAS..............................................................................................................
  • CAPÍTULO 1 - INTRODUÇÃO
  • CAPITULO 2 – TEORIA DA CRIPTOGRAFIA DE CHAVES PÚBLICAS
    • 2.1 – O QUE É CRIPTOGRAFIA?.............................................................................................
    • 2.2 – TIPOS DE CRIPTOGRAFIA
      • 2.2.1 – Introdução às Técnicas Simples de Criptografia
        • 2.2.1.1 - Cifras de Substituição...................................................................................
        • 2.2.1.2 – Cifras de Transposição
      • 2.2.2 – Técnicas Modernas de Criptografia: Criptografia Simétrica
        • 2.2.2.1 – DES
        • 2.2.2.2 – AES
      • 2.2.3 – Técnicas Modernas de Criptografia: Criptografia Assimétrica
        • 2.2.3.1 – Chaves Públicas e Chaves Privadas...........................................................
        • 2.3.3.2 – Diffie-Hellman...........................................................................................
        • 2.2.3.3 – RSA............................................................................................................
        • 2.2.3.4 - DSA ............................................................................................................
        • 2.2.3.5 – Rápida Comparação das Utilidades dos Algoritmos .................................
      • 2.2.4 – Criptografia Simétrica vs. Criptografia Assimétrica .......................................
  • CAPÍTULO 3 – O ALGORITMO RSA...........................................................................
    • 3.1 - HISTÓRICO RSA........................................................................................................
    • 3.2 – ALGORITMO RSA .....................................................................................................
    • 3.3 – ASPECTOS COMPUTACIONAIS DO RSA .....................................................................
    • 3.4 – INTRODUÇÃO SIMPLES À TEORIA DOS NÚMEROS ......................................................
      • 3.4.1 –Módulo: A mod B...............................................................................................
      • 3.4.2 – Calculando C = Ab mod n.................................................................................
      • 3.4.3 – Números Primos. ..............................................................................................
        • 3.4.3.2 – Primos entre si ...........................................................................................
        • 3.4.3.2 – Descobrindo e provando primos................................................................
  • DE CHAVES NO RSA. ...................................................................................................... CAPÍTULO 4 – UTILIZAÇÃO PRATICA, FORMATAÇÃO E GERENCIAMENTO
    • 4.1 – APLICAÇÕES QUE UTILIZAM O RSA ..........................................................................
      • 4.1.1 – Certificados de Segurança................................................................................
      • 4.1.2 – Assinatura Digital.............................................................................................
      • 4.1.3 – S/Mime e PGP...................................................................................................
      • 4.1.4 – SSL/TLS.............................................................................................................
      • 4.1.5 – IPSEC ...............................................................................................................
    • 4.2 – PADRÕES E FORMATOS DOS CERTIFICADOS DIGITAIS................................................. RSA – Criptografia Assimétrica e Assinatura Digital
      • 4.2.1 – Recomendação X.509 .......................................................................................
      • 4.2.2 – PKIX .................................................................................................................
      • 4.2.3 – ASN.1................................................................................................................
        • 4.2.3.1 – BER............................................................................................................
        • 4.2.3.2 – DER ...........................................................................................................
      • 4.2.2 – PKCS.................................................................................................................
    • 4.3 – GERENCIAMENTO DE CHAVES NO RSA.....................................................................
  • CAPÍTULO 5 – SEGURANÇA DO RSA.........................................................................
    • 5.1 – INTRODUÇÃO ............................................................................................................
    • 5.2 – ATACANDO O RSA ...................................................................................................
      • 5.2.1 – Força Bruta ......................................................................................................
      • 5.2.2 – Ataques Matemáticos........................................................................................
        • 5.2.2.1 – Problema da Fatoração ..............................................................................
        • 5.2.2.2 – Calcular ä n sem fatorar n ...........................................................................
        • 5.2.2.3 – Expoente de Decriptação ...........................................................................
        • 5.2.2.4 – Calcular d sem possuir ä n ..........................................................................
      • 5.2.3 – Ataques Temporais ...........................................................................................
      • 5.2.4 – Outros tipos de Ataques....................................................................................
        • 5.2.4.1 – Expoente d pequeno para decriptografia ...................................................
        • 5.2.4.2 – Expoente e pequeno para criptografia .......................................................
        • 5.2.4.3 – Ataque de Módulo Comum .......................................................................
        • 5.2.4.4 – Criptoanálise do RSA se d for menor que n 0,292........................................
        • 5.2.4.5 – Ataque de Broadcast de Hastad .................................................................
        • 5.2.4.6 – Ataque de Exposição parcial da chave privada .........................................
        • 5.2.4.7 – Ataque de Bleichenbacher no PKCS 1......................................................
  • CAPITULO 6 – COMPARATIVOS ENTRE ALGORITM OS.....................................
    • 6.1 – SIMÉTRICA X ASSIMÉTRICA ......................................................................................
    • 6.2 – ALGORITMOS E TABELAS COMPARATIVAS................................................................
    • 6.3 – PERFORMANCE .........................................................................................................
      • 6.3.1 – RSA ...................................................................................................................
      • 6.3.2 – DSA ...................................................................................................................
      • 6.3.3 – ECC...................................................................................................................
      • 6.3.4 - RSA x Curvas Elípticas......................................................................................
  • CONCLUSÃO.....................................................................................................................
  • BIBLIOGRAFIA ................................................................................................................
    • LIVROS: .............................................................................................................................
    • TESE: .................................................................................................................................
    • PAPERS : .............................................................................................................................
    • INTERNET SITES :................................................................................................................
  • Tabela 1: Comparação das Utilidades dos Algoritmos......................................................... Índice de Tabelas
  • Tabela 2: Comparação Criptografia Simétrica vs. Assimétrica............................................
  • Tabela 3: Teste de Mesa para algoritmo ab mod n................................................................
  • Tabela 4: Tempo de Fatoração no RSA................................................................................
  • Tabela 5: Comparação de Algoritmos Simétricos e Assimétricos .......................................
  • Tabela 6: Problemas Computacionais x Algoritmos ............................................................
  • Tabela 7: Esquemas de Assinatura relacionados ao RSA ....................................................
  • Tabela 8: Descrição dos Problemas, suporte a criptoanálise e patente no mundo ...............
  • Figura 1: Esquema de Criptografia Assimétrica para garantir sigilo ................................... Índice de Figuras
  • Figura 2: Esquema de Criptografia Assimétrica para assinatura digital...............................
  • Figura 3: Esquema de Criptografia Assimétrica para para sigilo e assinatura digital..........
  • Figura 4: Algoritmo para cálculo de ab mod n......................................................................
  • Figura 5: Esquema de Assinatura Digital no RSA ...............................................................
  • Figura 6: Formato do Padrão X509 ......................................................................................
  • Figura 7: Comparação do certificado X509 e CRL .............................................................

Capítulo 1 - Introdução RSA – Criptografia Assimétrica e Assinatura Digital

Capítulo 1 - Introdução

A origem da criptografia, provavelmente, remonta aos princípios da existência humana, logo que as pessoas tenham tentado aprender a comunicar. Conseqüentemente, tiveram de encontrar meios para garantir a confidencialidade de parte das suas comunicações .” - Pierre Loidreau, escreveu um artigo na primeira revista Linux da França Esta frase expressa o significa inicial de criptografia e, aos dias de hoje, podemos notar que uma grande mudança nos métodos e maneiras de se criptografar. Este documento irá prover informações sobre uma das mais bem sucedidas implementações 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; também entenderá métodos simples de criptografia até chegar ao RSA, que é o foco deste documento. Apesar disto, conceitos de chaves privadas, públicas, outros algoritmos, performance, etc não serão esquecidos. A idéia é dar ao leitor leigo, uma noção 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

Capítulo 2 – Teoria da Criptografia de Chaves Públicas RSA – Criptografia Assimétrica e Assinatura Digital

2.2.1 – Introdução às Técnicas Simples de Criptografia

Os métodos de criptografia têm sido divididos em duas categorias: as cifras de substituição e as de cifras de transposição. Estas são utilizadas na criptografia simétrica. A criptografia simétrica em alguns locais também é referida como “criptografia de chave secreta” ( secret-key criptography ).

2.2.1.1 - Cifras de Substituição

Este sem dúvida é o jeito mais fácil de cifrar (e também de decifrar). As cifras de substituição trocam uma letra por outra letra correspondente. Vejamos um exemplo onde nós vamos trocar cada uma das 26 letras do abecedário 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 W E 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 substituição é chamado de monoalfabética.

Para exemplificar vamos cifrar a palavra “palavra” com nossa cifra de substituição:

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 atrás para descobrir a palavra original “palavra”. Qual a probabilidade de combinações possíveis para esta cifra? A resposta é 26! (fatorial de 26) que é 26. 25. 24. 23 .......... 3. 2. 1 que dá 4,032x10^26 diferentes dicionários... porém o ataque pode ser feito através de analise de freqüência. Em qualquer língua, alguns sons são utilizados com mais freqüência do que outros. Isto significa que, na linguagem escrita, algumas letras também são mais utilizadas que outras. Determinar a freqüência com que ocorrem determinadas letras em determinada língua, ou seja, fazer uma análise da freqüência de ocorrência de letras, não é nenhuma novidade. O grande sábio árabe al-Kindi já teve esta idéia há mais de 1.000 anos atrás. Na substituição monoalfabética, cada letra é trocada pela letra correspondente da chave. Isto significa que as características das letras originais são transferidas para as novas letras, inclusive suas características de freqüência de ocorrência. É o mesmo que trocar seis por meia dúzia... o caminho das pedras para quebrar a cifra! Uma análise de freqüência do alfabeto português e uma amostra razoável de texto cifrado mostra a facilidade de quebrar isso. (http://www.numaboa.com/criptologia/matematica/estatistica/freqPortBrasil.php).

Capítulo 2 – Teoria da Criptografia de Chaves Públicas RSA – Criptografia Assimétrica e Assinatura Digital

Os algoritmos ROT13 e César usam isso. Depois algoritmos como Playfair e Hill adicionaram alguma dificuldade fazendo substituições através de grupos de letras, mas ainda é muito fácil ser quebrada.

2.2.1.2 – Cifras de Transposição

As cifras de transposição usam como técnica a mudança da ordem das letras. Vejamos um exemplo onde vamos aplicar uma chave a um texto para efetuar uma mudança 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 numérica. O resultado será:

Ordem original 1 2 3 4 5 6 Chave V I A G E M Valor Numérico das letras 22 9 1 7 5 13 Nova Ordem 6 4 1 3 2 5

V I A G E M

a p o n t e d e L o n d r e s e s t a c a i n d 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 transposição com substituição, porém ainda é ineficiente já que hoje se tem muito poder computacional.

Capítulo 2 – Teoria da Criptografia de Chaves Públicas RSA – Criptografia Assimétrica e Assinatura Digital

criptoanálise é o tamanho da chave. Quanto maior a chave, mais difícil é criptoanalisar o dado. O que todos devem estar se perguntando é se existe a criptografia de chaves públicas porque ainda usar a criptografia simétrica? A criptografia assimétrica exige muito mais processamento do que a criptografia simétrica. Na vida real a criptografia assimétrica é usada para combinar uma chave que será usada posteriormente por uma criptografia simétrica, 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 Públicas e Chaves Privadas

Um novo conceito é lançado baseado que existem duas chaves: Chave Pública e Chave Privada. Mas o que faz cada uma das chaves? Depende. Uma única definição é certa e correta: a chave privada não pode sair da mão do dono do par de chaves. Somente a chave pública pode ser distribuída. Se a finalidade do algoritmo assimétrico é ciframento dos dados, impedindo que outros não possam saber o que tem dentro da mensagem, somente o destinatário correto, a chave pública 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 através de um canal inseguro qualquer e requisitará a chave pública de Bob. Alice irá pegar a mensagem “M” e aplicar a chave pública (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 após 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 pública faz o ciframento e a chave privada faz o deciframento.

Figura 1: Esquema de Criptografia Assimétrica para garantir sigilo

Capítulo 2 – Teoria da Criptografia de Chaves Públicas RSA – Criptografia Assimétrica 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 repúdio e garantindo a autoria e autenticação da mensagem e do autor. Neste caso, vamos exemplificar que Bob pegará uma mensagem “M” (não 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 pública de Bob (KUb) conhecida de todos, qualquer um poderá decriptografar a mensagem. Se a chave pública de Bob foi capaz de gerar novamente a mensagem “M”, ele e somente ele (Bob) poderia ter gerado a mensagem, garantindo a autoria e autenticação do autor. Quando se distribui a mensagem deste jeito, não se garante a confidencialidade dos dados já que a chave KUb é pública e qualquer um poderá ler isto. Isto é chamado de assinatura digital^1 (ver capítulo 4).

Figura 2: Esquema de Criptografia Assimétrica para assinatura digital E se nós quiséssemos garantir que a mensagem veio de alguém e o sigilo fosse importante? Simples, basta usarmos dois pares de chaves públicas 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 conteúdo.

(^1) Na assinatura digital é assinado um hash da mensagem ao invés da mensagem toda por questões de

performance.

Capítulo 2 – Teoria da Criptografia de Chaves Públicas RSA – Criptografia Assimétrica 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 técnica Diffie-Hellman, usando criptografia assimétrica. O RSA é muito popular até hoje e sua segurança advém da dificuldade de fatorar números inteiros muito grandes. Para garantir a segurança o RSA utiliza números primos p e q com média de 300 dígitos. Detalhes sobre o algoritmo do RSA serão visto no capítulo 3.

2.2.3.4 - DSA

DSA é o acrônimo de Padrão de Assinatura Digital ( Digital Signature Standart ), criado pelo NIST, e especifica o DSA para assinatura digital e SHA- para hash ing. O DSA é um algoritmo assimétrico e a chave privada opera sobre o hash da mensagem SHA-1. Para verificar a assinatura um pedaço do código calcula o hash e outro pedaço usa a chave pública 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, porém ao contrário do RSA que é multipropósito, o DSA somente assina e não garante confidencialidade. Outro ponto contra o DSA é que a geração da assinatura é mais rápida do que o RSA, porém de 10 a 40 vezes mais lenta^3 para conferir a assinatura. O algoritmo do DSA é o seguinte para geração das chaves

  1. Selecionar um primo q tal que 2^159 < q < 2^160.
  2. Selecionar t tal que 0 <= t <= 8, e selecionar um primo p tal que 2511+64t^ < p < 2512+64t^ com a propriedade que q seja divisível por ( p -1).
  3. Selecionar um gerador a de um grupo de ordem q em Zp, e selecionar um elemento g que pertença a Zp, e calcular a = g(p-1)/q^ mod p.
  4. Selecionar um número aleatório x tal que 1 <= x <= q – 1
  5. Calcular y = ax^ mod p.
  6. Chave pública de A é (p,q,a,y). Chave Pública é x.

Para gerar assinatura o DSA usa os seguintes passos:

  1. Seleciona um número aleatório 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 são r e s.

(^3) segundo Applied Cryptography , 2nd Ed, Bruce Schneier

Capítulo 2 – Teoria da Criptografia de Chaves Públicas RSA – Criptografia Assimétrica e Assinatura Digital

Para verificar a assinatura de A ( r e s ), B deve usar os seguintes passos:

  1. Obtem a chave pública de A (p,q,a,y)
  2. Verifica que (0 < r < q) e (0 < s < q). Se não, rejeita assinatura.
  3. Calcula w = s-1^ mod q e calcula h(m) (h(m) é o hash da mensagem)
  4. Calcula u 1 = w .h(m) mod q e u 2 = rw mod q
  5. Calcula v = (au^1 yu^2 mod p) mod q
  6. Aceita assinatura se v = r.

2.2.3.5 – Rápida Comparação das Utilidades dos Algoritmos

Dentre a criptografia de chaves públicas, veremos abaixo algumas das finalidades destes algoritmos:

  • (^) Ciframento/Deciframento (Criptografia): O destinatário 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 sessão de transmissão de dados.

Algoritmo Criptografia Assinatura Digital Troca Chaves RSA (^) ¸ ¸ ¸ Diffie-Hellman (^) ¸ DSA (^) ¸

Tabela 1: Comparação das Utilidades dos Algoritmos

Pode-se perceber que o RSA é o algoritmo que permite flexibilidade e por isso ele continua sendo o principal algoritmo de criptografia de chaves públicas há 20 anos.

2.2.4 – Criptografia Simétrica vs. Criptografia Assimétrica

A criptografia simétrica foi uma revolução da criptografia moderna. Todos devem pensar: Porque usar a criptografia simétrica diante das inúmeras vantagens da criptografia assimétrica? Basicamente pela dificuldade de gerar as chaves de maneira segura e problemas relativos à performance. Estes problemas serão abordados com profundidade no capítulo 6.

Capítulo 3 – O Algoritmo RSA RSA – Criptografia Assimétrica e Assinatura Digital

Capítulo 3 – O Algoritmo RSA

3.1 - Histórico RSA

Em 1976, Whitfield Diffie e Martin Hellman escreveram um documento chamado “As Novas Direções da Criptografia” mostrando a idéia de usar a criptografia de chaves públicas. Logo após, os criptologistas começaram a tentar desenvolver um algoritmo que pudesse atender as especificações propostas por Diffie-Hellman. O RSA foi desenvolvido em 1978 em resposta a essa necessidade no MIT por Ron Rivest, Adi Shamir e Len Adleman (daí a sigla RSA). O algoritmo do RSA foi o primeiro algoritmo de chaves públicas é amplamente usado desde então.

3.2 – Algoritmo RSA

O RSA é basicamente o resultado de dois cálculos matemáticos. Um para cifrar e outro para decifrar. O RSA usa duas chaves criptográficas, uma chave pública e uma privada. No caso da criptografia assimétrica tradicional, a chave pública é usada para criptografar a mensagem e a chave privada é usada para decriptografar a mensagem. A segurança desse método se baseia na dificuldade da fatoração de números inteiros extensos. Em 1977, os criadores do RSA achavam que uma chave de 200 bits requereriam 10^15 anos, porém chaves com 155 bits foram atacadas em menos de 8 meses. A saída é que na medida que os algoritmos se tornem melhores e os computadores se tornem mais velozes, maiores serão as chaves. Atualmente chaves com 300 dígitos (1000 bits) nos dão uma tranqüilidade por algum tempo. Em níveis críticos, chaves com 2000 bits começam a ser usadas. Para tanto vale lembrar que “M” é a mensagem que queremos cifrar (plaintext), “C” é a mensagem cifrada, “e” é a chave pública, “d” é a chave privada e “n” é um número que é calculado e que todos sabem (público).

Criptografar: C = Me^ mod n

Decriptografar: M = Cd^ mod n

Para cada bloco a ser cifrado deve -se fazer o cálculo acima. Ambos devem saber o valor de “n”. Portanto, a chave pública definida pela dupla “e” e “n”, sendo KUa = {e, n}. A chave privada é definida pela dupla “d” e “n”, sendo KRb = {d, n}.

Capítulo 3 – O Algoritmo RSA RSA – Criptografia Assimétrica e Assinatura Digital

Para gerar a chave precisamos de algumas coisas:

  1. Selecionar dois números primos p e q grandes (geralmente maior que 10100 ). (veja próxima seção para ver como achar números 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. p = 3 e q = 11
  2. n = 3 * 11, logo n = 33
  3. φ n =( 3 − 1 )⋅( 11 − 1 )= 2 ⋅ 10 , portanto φn =
  4. d é um inteiro relativamente primo à φ n , e atende 1 < d < φn d = 7 (9, 11, 13, 15, 17 e 19 seriam outras opções) (não seria possível 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 múltiplos de 3 seriam possíveis (6,9,12, etc)).

Portanto teríamos KU = {3, 33} e KR = {7, 33}. Lembrando que neste caso e , d e n tem menos de 2^6 , então temos apenas 6 bits. Se tivéssemos um texto com o número 20, uma mensagem cifrada seria: C = Me^ mod n C = 20^3 mod 33 C = 8000 mod 33 C = 14

E para decifrar: M = C d^ mod n M = 14^7 mod 33 M = 105.413.504 mod 33 (resposta = 3.194.348 x 33 + 20 = 105.413.504) M = 20

Capítulo 3 – O Algoritmo RSA RSA – Criptografia Assimétrica e Assinatura Digital

Para decriptografar a mensagem C = 3650502 M = C d^ mod n M = 3650502^422191 mod 6012707 M = 5234673

Agora nossa chave pública (3.674.911) tem somente 23 bits (2^23 = 8388608), imaginem com 512 bits ou 1024 bits o tamanho dos cálculos. Isto expressa o grande overhead do protocolo RSA. Entende-se como um mínimo de segurança sendo p e q números com 512 bits e n tendo aproximadamente 1024 bits.

3.3 – Aspectos Computacionais do RSA

Criptografia e decriptografia do RSA envolvem muita exponenciação de inteiros e módulos de n. Porém exponenciação é algo que se leva tempo linear (x passos para um exp oente x)

x^32 = x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x

Porém pode-se resolver rapidamente em tempo log 2 (x). Para isso basta a cada multiplicação, faze-la por ela mesma, formando sucessivamente x^2 , x^4 , x^8 , x^16 , x^32 (5 passos ao invés de 32). Se x for um valor não múltiplo de 2, então basta fazer até o maior múltiplo antes de x, e depois multiplicações sucessivas. Por exemplo x^40 , então faríamos x^32 * x * x * x * x * x * x * x * x, ou ainda (x^32 * x^8 ).

O algoritmo para calcular ab^ mod n é:

c fl 0; d fl 1; k fl len(bits(b)) ; tamanho de b em binário. for i fl k downto 0 do { c fl 2 * c d fl (d * d) mod n if bi = 1 then { c fl c + 1 d fl (d * a) mod n } } return d Figura 4: Algoritmo para cálculo de ab^ mod n

Capítulo 3 – O Algoritmo RSA RSA – Criptografia Assimétrica e Assinatura Digital

i 9 8 7 6 5 4 3 2 1 0 bi 1 0 0 0 1 1 0 0 0 0 c 1 2 4 8 17 35 70 140 280 560 d 7 49 157 526 160 241 298 166 67 1 Tabela 3: Teste de Mesa para algoritmo ab^ mod n

Resultado para ab^ mod n, onde a = 7, b = 560 (1000110000), n = 561

3.4 – Introdução Simples à Teoria dos Números

3.4.1 –Módulo: A mod B

Nós dizemos que C=A mod B, sendo C o resto da divisão entre A e B. A função inversa é A=x*B + C, onde x é o resultado inteiro da divisão.

Por exemplo, para C=A mod B, onde A = 20 e B = 8:

20 / 8 = 2 e o resto é 4 (2*8=16+4=20), logo C = 20.

Lembrando que c=a em c=a mod b onde a > b, ou seja, se a > b então o resultado de a mod b é o valor de a. Exemplo: 5 mod 20 = 5.

Agora, são chamados de “ congruentes módulo n ” quando dois números inteiros a e b tem a seguinte expressão verdadeira (a mod n) = (b mod n). A notação para isso é: a ≡^ b mod n

Por exemplo:

a = 31 e b = 41, onde n = 5. 31 mod 5 = 1 e 41 mod 1 = 1

portanto 31 ≡^ 41 mod 5.

Outro exemplo: 73 ≡4 mod 23 pois:

73 mod 23 = 4 (porque 3 * 23 = 69 + 4 = 73) 4 mod 23 = 4 (porque 0 * 23 = 0 + 4 = 4, e também a>b, então c=a)