Ai 4 RSA
Ai 4 RSA
Ai 4 RSA
Centro Tecnológico
Depto de Informática e Estatı́stica
INE5403-Fundamentos de Matemática Discreta para a Computação
Princı́pios de Criptografia
Uso da chave privada (secreta, pessoal) pode ser comprovado sem a participação do seu proprietário:
– integridade de dados
– análogo eletrônico de uma assinatura manuscrita
Era baseado na suposição de existência de funções de mão única, que são funções em que:
y = f (x) é fácil
y = f −1 (x) é difı́cil
243
– A eleva o nro que recebeu ao seu expoente secreto, obtendo:
2631027283 mod 31469 = 27313
– B eleva o nro que recebeu ao seu expoente secreto, obtendo:
980012745 mod 31469 = 27313
– ambos utilizam a chave 27313 = 12345a×b mod 31469 2
Na sequência, Diffie e Hellman postularam a existência de um sistema criptográfico com duas chaves
Adição modular
3+5=8
7 + 6 = 13 → resposta mod 10 = 3
– só usar último dı́gito...
Adição de constante mod 10 (tabela):
244
+ 0 1 2 3 4 5 6 7 8 9
0 0 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9 0
2 2 3 4 5 6 7 8 9 0 1
3 3 4 5 6 7 8 9 0 1 2
Adição módulo 10 4 4 5 6 7 8 9 0 1 2 3
5 5 6 7 8 9 0 1 2 3 4
6 6 7 8 9 0 1 2 3 4 5
7 7 8 9 0 1 2 3 4 5 6
8 8 9 0 1 2 3 4 5 6 7
9 9 0 1 2 3 4 5 6 7 8
Subtração modular
Inversa aditiva de k:
Multiplicação modular
x 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 0 2 4 6 8
3 0 3 6 9 2 5 8 1 4 7
4 0 4 8 2 6 0 4 8 2 6
5 0 5 0 5 0 5 0 5 0 5
6 0 6 2 8 4 0 6 2 8 4
7 0 7 4 1 8 5 2 9 6 3
8 0 8 6 4 2 0 8 6 4 2
9 0 9 8 7 6 5 4 3 2 1
245
Decifragem:
Exemplo: k = 7 ⇒ k−1 = 3
Definição: Zn = {0, 1, 2, . . . , n − 1}
O mdc entre dois valores a e b pode ser calculado pelo algoritmo de Euclides.
O valor de a−1 pode ser calculado eficientemente por uma extensão do algoritmo de Euclides.
Exemplo: Z9 = {0, 1, 2, 3, 4, 5, 6, 7, 8}
– inversı́veis: {1, 3, 7, 9}
– de modo que: φ(10) = 4
– logo: 14 ≡ 34 ≡ 74 ≡ 94 ≡ 1 (mod 10)
246
Exemplo: quais os 3 últimos dı́gitos de 7803 ?
Avaliação de φ(n)
– Se n é primo: φ(n) = n − 1
– Se n = p × q (produto de 2 primos):
φ(p × q) = (p − 1) × (q − 1)
– Exemplo: φ(10) = (2 − 1).(5 − 1) = 4
Cifrador em blocos
Cifrar: y = xe mod n
Decifrar: x = y d mod n
Configuração do sistema:
247
O sistema criptográfico RSA (3/5)
– Configurando:
* n = p × q = 5214149
* φ(n) = (3119 − 1).(1571 − 1) = 5209260
– Para Alice enviar o texto 16597 para Bob, ela deve fazer:
* 165973533 mod 5214149 = 976827
Como pode a decifragem ser o mesmo que a cifragem, mas com um expoente diferente??
⇒ e.d = k.φ(n) + 1
então:
(xe )d ≡ xk.φ(n)+1 (mod n)
≡ (xφ(n) )k .x1 (mod n)
≡ (1)k .x (mod n)
≡ x (mod n) 2
Em ambos os casos, mostra-se que a análise anterior é válida utilizando-se o Teorema Chinês do
Resto
248
Implementação do RSA
Cifragem e decifragem:
– note que:
* 112 = 121 ≡ 4 mod 13
* 114 = 42 ≡ 3 mod 13
Algoritmo “quadrado-e-multiplica”
249
Exemplo3: cálculo de 97263533 mod 11413:
i bi z
11 1 12 ×9726 = 9726
10 1 97262 ×9726 = 2659
9 0 26592 = 5634
8 1 56342 ×9726 = 9167
7 1 91672 ×9726 = 4958
6 1 49582 ×9726 = 7783
5 0 77832 = 6298
4 0 62982 = 4629
3 1 46292 ×9726 = 10185
2 1 101852 ×9726 = 105
1 0 1052 = 11025
2
0 1 11025 ×9726 = 5761
250