RSA
Teoremas
Teorema 1 - Pequeno Teorema de Fermat
Para todo o a ∈ N a \in \N a ∈ N e para todo o p p p primo,
Teorema 2
Para todo o a ∈ N a \in \N a ∈ N e para todo o p p p primo, se a ⌢ p = 1 a \frown p = 1 a ⌢ p = 1
a p − 1 ≡ p 1 a^{p-1}\equiv_p 1 a p − 1 ≡ p 1
Demonstração Pelo Teorema 1
a p ≡ p a ⇔ a ( a p − 1 ) ≡ p a a^p\equiv_pa \quad \Leftrightarrow \quad a(a^{p-1})\equiv_pa a p ≡ p a ⇔ a ( a p − 1 ) ≡ p a Como a ⌢ p a\frown p a ⌢ p , a a a tem inverso módulo p p p .
Seja a ~ ã a ~ esse inverso,
a ~ × a × a p − 1 ≡ p a ~ × a a p − 1 ≡ p 1 ã\times a\times a^{p-1} \equiv_p ã \times a\\
a^{p-1}\equiv_p 1 a ~ × a × a p − 1 ≡ p a ~ × a a p − 1 ≡ p 1 QED
Teorema 3
Para todos os primos p p p e q q q distintos, para todo o e ∈ N e \in \N e ∈ N , tal que e ⌢ ( p − 1 ) ( q − 1 ) = 1 e \frown (p-1)(q-1) = 1 e ⌢ ( p − 1 ) ( q − 1 ) = 1 , então
Para todo o M ∈ N M \in \N M ∈ N , tal que 0 ≤ M < p q = N 0 \leq M < pq = N 0 ≤ M < pq = N .
M e d ≡ N M d → inverso de e m o ˊ dulo ( p − 1 ) ( q − 1 ) M^{ed} \equiv_N M\\
d \rightarrow \text{inverso de }e\text{ módulo }(p-1)(q-1) M e d ≡ N M d → inverso de e m o ˊ dulo ( p − 1 ) ( q − 1 )
Demonstração Sejam M M M , N N N , p p p , q q q , d d d e e e e tais que respeitam as condições do Teorema que se está a Demonstrar,
Primeiro, estuda-se a relação entre p p p e M M M .
Caso 1 → M = p ˙ \rightarrow M = \dot{p}\quad → M = p ˙ (M M M é múltiplo de p p p )
M = k p , k ∈ Z M ≡ p 0 M e d ≡ p 0 M e d ≡ p M , porque M ≡ p 0 M = kp, \quad k \in Z\\
M \equiv_p 0\\
M^{ed}\equiv_p 0\\
M^{ed} \equiv_p M ,\quad\text{ porque } M \equiv_p 0 M = k p , k ∈ Z M ≡ p 0 M e d ≡ p 0 M e d ≡ p M , porque M ≡ p 0
Caso 2 → M ⌢ p = 1 \rightarrow M \frown p =1\quad → M ⌢ p = 1 (M M M não é múltiplo de p p p )
Pelo Teorema 2 ,
M p − 1 ≡ p 1 M^{p-1}\equiv_p 1 M p − 1 ≡ p 1 ( M p − 1 ) k ( q − 1 ) ≡ p ( 1 ) k ( q − 1 ) , ∀ k ∈ Z M k ( p − 1 ) ( q − 1 ) ≡ p 1 M e d × M k ( p − 1 ) ( q − 1 ) ≡ p M e d M e d + k ( p − 1 ) ( q − 1 ) ≡ p M e d (M^{p-1})^{k(q-1)}\equiv_p (1)^{k(q-1)}, \quad \forall k \in \Z\\
M^{k(p-1)(q-1)}\equiv_p 1\\
M^{ed}\times M^{k(p-1)(q-1)}\equiv_p M^{ed}\\
M^{ed+k(p-1)(q-1)}\equiv_p M^{ed} ( M p − 1 ) k ( q − 1 ) ≡ p ( 1 ) k ( q − 1 ) , ∀ k ∈ Z M k ( p − 1 ) ( q − 1 ) ≡ p 1 M e d × M k ( p − 1 ) ( q − 1 ) ≡ p M e d M e d + k ( p − 1 ) ( q − 1 ) ≡ p M e d Como e e e e d d d são inversos módulo ( p − 1 ) ( q − 1 ) (p-1)(q-1) ( p − 1 ) ( q − 1 ) , ou seja, e d ≡ ( p − 1 ) ( q − 1 ) 1 ed \equiv_{(p-1)(q-1)}1 e d ≡ ( p − 1 ) ( q − 1 ) 1
Existe um λ ∈ Z \lambda \in \Z λ ∈ Z :
e d + λ ( p − 1 ) ( q − 1 ) = 1 ed + \lambda(p-1)(q-1) = 1 e d + λ ( p − 1 ) ( q − 1 ) = 1 Então, como a expressão acima é válida para um k ∈ Z k \in \Z k ∈ Z qualquer, também será válida para k = λ k=\lambda k = λ .
Nesse caso:
M e d + λ ( p − 1 ) ( q − 1 ) ≡ p M e d M ≡ p M e d M^{ed+\lambda(p-1)(q-1)}\equiv_p M^{ed}\\
M \equiv_p M^{ed} M e d + λ ( p − 1 ) ( q − 1 ) ≡ p M e d M ≡ p M e d Acabamos de provar que,
M e d ≡ p M M^{ed} \equiv_p M M e d ≡ p M Logo, também podemos concluir
M e d ≡ q M M^{ed} \equiv_q M M e d ≡ q M Uma vez que a relação entre M M M e q q q é equivalente à relação entre M M M e p p p .
Como o sistema:
{ x ≡ p M x ≡ q M \left\{ \begin{aligned}
x \equiv_p \quad M\\
x \equiv_q \quad M
\end{aligned} \right. { x ≡ p M x ≡ q M Pelo Teorema Chinês dos Restos tem solução única módulo N = p q N=pq N = pq , visto que p p p e q q q são dois primos diferentes
E acabamos de provar que:
{ M e d ≡ p M M e d ≡ q M \left\{ \begin{aligned}
M^{ed} \equiv_p \quad M\\
M^{ed} \equiv_q \quad M
\end{aligned} \right. { M e d ≡ p M M e d ≡ q M Chegamos à conclusão:
M e d ≡ N M M^{ed}\equiv_N M M e d ≡ N M :::details Explicação da última conclusão
Do Sistema acima, tem-se:
{ M e d − p k 1 = M M e d − q k 2 = M p k 1 = q k 2 \left\{ \begin{aligned}
M^{ed} -pk_1 = M\\
M^{ed} -qk_2 = M
\end{aligned} \right.\\
pk_1 = qk_2 { M e d − p k 1 = M M e d − q k 2 = M p k 1 = q k 2 Como p p p e q q q são primos diferentes,
k 1 = q t e k 2 = p t , t ∈ Z k_1=qt \quad e \quad k_2=pt, \qquad t \in \Z k 1 = qt e k 2 = pt , t ∈ Z Ou seja,
M e d − ( p q ) t = M M e d − N t = M M e d ≡ N M M^{ed} - (pq)t = M\\
M^{ed} - Nt = M\\
M^{ed} \equiv_N M M e d − ( pq ) t = M M e d − Nt = M M e d ≡ N M
RSA - Metodologia
Passo 1 - Criação das Chaves
O Recetor da mensagem a ser encriptada cria uma Chave Pública
, que enviará ao Emissor , e uma Chave Privada
que só o próprio terá acesso.
A Chave Pública
servirá para encriptar a mensagem e a Chave Privada
para a desencriptar.
Escolhe-se e partilha-se uma codificação numérica para o tipo de mensagem a receber.
A seguinte imagem mostra um exemplo para mensagens de texto em caracteres ASCII.
Escolhem-se 2 primos p p p e q q q diferentes
Escolhe-se e e e , tal que e ⌢ ( p − 1 ) ( q − 1 ) = 1 e \frown (p-1)(q-1)=1 e ⌢ ( p − 1 ) ( q − 1 ) = 1
Determina-se d d d , o inverso de e e e módulo ( p − 1 ) ( q − 1 ) (p-1)(q-1) ( p − 1 ) ( q − 1 )
Comunica-se a Chave Pública
( N , e ) (N,e) ( N , e ) e guarda-se a Chave Privada
( N , d ) (N,d) ( N , d ) , onde N = p q N = pq N = pq .
Passo 2 - Encriptação
Com a codificação numérica escolhida pelo Recetor :
Escolhe-se um número inteiro B B B menor ou igual ao número de dígitos do número N N N .
Divide-se a mensagem numérica a enviar em blocos de B B B dígitos: M 1 , … , M k M_1,\dots,M_k M 1 , … , M k
Verifica-se se N ⌢ M i = 1 , i = 1 , … , k N\frown M_i=1, \quad i =1,\dots,k N ⌢ M i = 1 , i = 1 , … , k
Transforma-se cada bloco M i M_i M i num bloco R i R_i R i , onde R i ≡ N ( M i ) e , i = i , … , k R_i \equiv_N (M_i)^e, \quad i=i,\dots,k R i ≡ N ( M i ) e , i = i , … , k
Os R 1 , … , R k R_1,\dots,R_k R 1 , … , R k são a mensagem encriptada
Envia-se a mensagem R 1 , … , R k R1,\dots, R_k R 1 , … , R k
Passo 3 - Desencriptação
Determinar M i , i = 1 , … , k M_i, \quad i=1,\dots,k M i , i = 1 , … , k .
M i ≡ N ( R i ) d M_i \equiv_N (R_i)^d M i ≡ N ( R i ) d
Converter a mensagem numérica para a mensagem final, através da codificação usada.
Exemplo
Vamos codificar (e descodificar) a mensagem:
Com os 2 primos já escolhidos: 43 43 43 e 59 59 59
O expoente ( e ) : 11 (e): \quad 11 ( e ) : 11
O tamanho dos blocos: 4 4 4
E a codificação:
Chave Pública
e Privada
N = 43 × 59 = 2537 N = 43\times59 = 2537 N = 43 × 59 = 2537
Como já se sabe e e e , conclui-se que a Chave Pública
é:
( 2537 , 11 ) (2537,11) ( 2537 , 11 )
Falta determinar o inverso de e e e , módulo ( 43 − 1 ) ( 59 − 1 ) = 2436 ( d ) (43-1)(59-1) = 2436 \quad (d) ( 43 − 1 ) ( 59 − 1 ) = 2436 ( d )
Queremos resolver a Eq. Diofantina
:
1 = ( e × d ) + ( 2436 × k ) i a i q i d i m i 0 2436 1 0 1 11 221 0 1 2 5 2 1 − 221 3 1 5 − 2 443 4 0 1 = ( 11 × 433 ) + ( 2436 × ( − 2 ) ) d = 433 1= (e\times d)+(2436 \times k)\\
\begin{array}{c|c|c|c|}
i & a_i & q_i & d_i & m_i\\
\hline
0 & 2436 & & 1 & 0\\
1 & 11 & 221 & 0 & 1\\
2 & 5 & 2 & 1 & -221\\
3 & 1 & 5 & -2 & 443\\
4 & 0
\end{array}\\
1 = (11 \times 433)+(2436\times (-2))\\
d = 433 1 = ( e × d ) + ( 2436 × k ) i 0 1 2 3 4 a i 2436 11 5 1 0 q i 221 2 5 d i 1 0 1 − 2 m i 0 1 − 221 443 1 = ( 11 × 433 ) + ( 2436 × ( − 2 )) d = 433
O que significa que a Chave Privada
é:
( 2537 , 433 ) (2537,433) ( 2537 , 433 )
Encriptar a mensagem com a chave ( 2537 , 11 ) (2537,11) ( 2537 , 11 )
A mensagem MD \text{MD} MD , com a codificação escolhida e usando blocos de 4 4 4 dígitos, traduz-se:
Verificar N primo com 1203 UPDATE: Segundo a professora Joana Ventura, podemos passar este passo à frente, a não ser que seja pedido no enunciado.
Continuando, neste passo calcula-se o m d c mdc m d c de N N N e dos Blocos, verificando se dá sempre 1 1 1 .
Neste exemplo só temos 1 1 1 bloco.
i a i q i 0 2537 1 1203 2 2 131 9 3 24 5 4 11 2 5 2 5 6 1 2 7 0 mdc e ˊ 1 ✓ \begin{array}{c|c|c}
i & a_i & q_i \\
\hline
0 & 2537 & \\
1 & 1203 & 2 \\
2 & 131 & 9 \\
3 & 24 & 5 \\
4 & 11 & 2 \\
5 & 2 & 5 \\
6 & 1 & 2 \\
7 & 0
\end{array}\\~\\
\text{mdc é 1} \quad \checkmark i 0 1 2 3 4 5 6 7 a i 2537 1203 131 24 11 2 1 0 q i 2 9 5 2 5 2 mdc e ˊ 1 ✓
Agora calcula-se R ≡ N ( M ) e R \equiv_N (M)^e R ≡ N ( M ) e , onde N = 2537 N=2537 N = 2537 e M = 1203 M=1203 M = 1203 .
Como 11 = 8 + 2 + 1 , R ≡ 2537 ( 1203 ) 8 + 2 + 1 11 = 8+2+1, \quad R \equiv_{2537} (1203)^{8+2+1} 11 = 8 + 2 + 1 , R ≡ 2537 ( 1203 ) 8 + 2 + 1
120 3 2 ≡ 2537 1447209 ≡ 2537 1119 120 3 4 ≡ 2537 111 9 2 ≡ 2537 1252161 ≡ 2537 1420 120 3 8 ≡ 2537 142 0 2 ≡ 2537 2016400 ≡ 2537 2022 120 3 8 + 2 + 1 ≡ 2537 2022 × 1119 × 1203 ≡ 2537 2721929454 ≡ 2537 2450 R = 2450 \begin{array}{|}
1203^2 & \equiv_{2537} & 1447209\\
& \equiv_{2537} & 1119\\
1203^4 & \equiv_{2537} & 1119^2\\
& \equiv_{2537} & 1252161\\
& \equiv_{2537} & 1420\\
1203^8 & \equiv_{2537} & 1420^2\\
& \equiv_{2537} & 2016400\\
& \equiv_{2537} & 2022\\
1203^{8+2+1}& \equiv_{2537} & 2022\times1119\times1203\\
& \equiv_{2537} & 2721929454\\
& \equiv_{2537} & 2450\\
\end{array}\\
R = 2450 120 3 2 120 3 4 120 3 8 120 3 8 + 2 + 1 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 1447209 1119 111 9 2 1252161 1420 142 0 2 2016400 2022 2022 × 1119 × 1203 2721929454 2450 R = 2450
Desencriptação com a chave ( 2537 , 433 ) (2537,433) ( 2537 , 433 )
Encontrar o M M M , tal que
M ≡ 2537 ( 2450 ) 433 M \equiv_{2537} (2450)^{433} M ≡ 2537 ( 2450 ) 433
Como 433 = 256 + 128 + 32 + 16 + 8 + 2 + 1 433 = 256 + 128 +32+16+8+2+1 433 = 256 + 128 + 32 + 16 + 8 + 2 + 1
245 0 2 ≡ 2537 6002500 ≡ 2537 2495 245 0 4 ≡ 2537 249 5 2 ≡ 2537 6225025 ≡ 2537 1764 245 0 8 ≡ 2537 176 4 2 ≡ 2537 3111696 ≡ 2537 1334 245 0 16 ≡ 2537 133 4 2 ≡ 2537 1779556 ≡ 2537 1119 245 0 32 ≡ 2537 111 9 2 ≡ 2537 1252161 ≡ 2537 1420 245 0 64 ≡ 2537 142 0 2 ≡ 2537 2016400 ≡ 2537 2022 245 0 128 ≡ 2537 202 2 2 ≡ 2537 4088484 ≡ 2537 1377 245 0 256 ≡ 2537 137 7 2 ≡ 2537 1896129 ≡ 2537 990 245 0 433 ≡ 2537 245 0 256 × 245 0 128 × 245 0 32 × 245 0 16 × 245 0 8 × 245 0 2 × 245 0 1 ≡ 2537 ( 990 × 1377 ) × ( 1420 × 1119 ) × ( 1334 × 2495 ) × 2450 ≡ 2537 ( 861 × 818 ) × ( 2323 × 2450 ) ≡ 2537 ( 1549 × 859 ) 245 0 433 ≡ 2537 1203 M = 1203 \begin{array}{|}
2450^2 & \equiv_{2537} & 6002500\\
&\equiv_{2537} & 2495\\
2450^4 & \equiv_{2537} & 2495^2\\
& \equiv_{2537} & 6225025\\
& \equiv_{2537} & 1764\\
2450^8 & \equiv_{2537} & 1764^2\\
& \equiv_{2537} & 3111696\\
& \equiv_{2537} & 1334\\
2450^{16} & \equiv_{2537} & 1334^2\\
& \equiv_{2537} & 1779556\\
& \equiv_{2537} & 1119\\
2450^{32} & \equiv_{2537} & 1119^2\\
& \equiv_{2537} & 1252161\\
& \equiv_{2537} & 1420\\
2450^{64} & \equiv_{2537} & 1420^2\\
& \equiv_{2537} & 2016400\\
& \equiv_{2537} & 2022\\
2450^{128} & \equiv_{2537} & 2022^2\\
& \equiv_{2537} & 4088484\\
& \equiv_{2537} & 1377\\
2450^{256} & \equiv_{2537} & 1377^2\\
& \equiv_{2537} & 1896129\\
& \equiv_{2537} & 990\\
\end{array}\\~\\
\begin{array}{|}
2450^{433} &\equiv_{2537}& 2450^{256} \times 2450^{128} \times 2450^{32} \times 2450^{16} \times 2450^{8} \times 2450^{2} \times 2450^{1}\\
&\equiv_{2537}& (990 \times 1377) \times (1420 \times 1119) \times (1334 \times 2495) \times 2450\\
&\equiv_{2537}& (861\times 818) \times (2323\times2450)\\
&\equiv_{2537}& (1549\times 859)\\
2450^{433} &\equiv_{2537}& 1203
\end{array}\\
M = 1203 245 0 2 245 0 4 245 0 8 245 0 16 245 0 32 245 0 64 245 0 128 245 0 256 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 6002500 2495 249 5 2 6225025 1764 176 4 2 3111696 1334 133 4 2 1779556 1119 111 9 2 1252161 1420 142 0 2 2016400 2022 202 2 2 4088484 1377 137 7 2 1896129 990 245 0 433 245 0 433 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 ≡ 2537 245 0 256 × 245 0 128 × 245 0 32 × 245 0 16 × 245 0 8 × 245 0 2 × 245 0 1 ( 990 × 1377 ) × ( 1420 × 1119 ) × ( 1334 × 2495 ) × 2450 ( 861 × 818 ) × ( 2323 × 2450 ) ( 1549 × 859 ) 1203 M = 1203
NOTA
No último passo, foi feito o produto dos números 2 a 2 e o resultados foi logo passado a módulo 2537 2537 2537