Algoritmo de geração de chaves na criptografia RSA
Geração da chave pública
-
Escolha de dois números primos: Escolha dois números primos distintos, geralmente denotados como e . Por exemplo, e . Esses números devem ser mantidos em segredo.
-
Cálculo do módulo : Calcule o produto dos dois números primos: . No nosso exemplo, . O valor de é público e faz parte da chave pública.
-
Cálculo da função totiente de Euller (): Calcule a função totiente de , denotada como . A função totiente de um número é o número de inteiros positivos menores do que e coprimos com (ou seja, números que não têm fatores em comum com , exceto 1). Para números primos, .
No exemplo, .
-
Escolha do expoente público (): Escolha um número inteiro que satisfaça . É comum escolher um número pequeno e primo para , como 1091, pois isso acelera os cálculos e é seguro. Verifique se e são coprimos (ou seja, seu maior divisor comum é 1).
No exemplo, escolhemos , que é primo, e e são coprimos.
-
Chave pública: A chave pública é composta pelo par . Essa chave é publicamente conhecida e usada para criptografar mensagens.
-
Codificação: Utilize a chave pública para fazer a codificação de um bloco numérico . $$ W = T^E \text{ mod } n
Por exemplo, escolhemos T = 23 e temos a chave pública $(1091; 3233)$, então temos:
W = T^E \text{ mod } n = 23^{1091} \text{ mod } 3233 = 3210
### Geração da Chave Privada: 1. **Cálculo do expoente privado ($D$):** Calcule o [[Inversa modular|inverso multiplicativo modular]] de $E$ em relação a $\varphi(n)$. Em outras palavras, encontre um número $D$ tal que $(E \cdot D) \mod \varphi(n) = 1$. Isso pode ser calculado usando o algoritmo de Euclides estendido. No exemplo, calculamos $D$ de forma que $(1091 \cdot D) \mod 3120 = 1$, e encontramos $D = 2651$. 3. **Chave Privada:** A chave privada consiste apenas no valor $D$. Essa chave é mantida em segredo e é usada para descriptografar mensagens. 5. **Decodificação:** Utilize a chave privada $D$ para fazer a codificação de um bloco numérico $T$. $$ T = W^D \text{ mod } n $$ Por exemplo, temos W = 2037 e temos a chave privada 2017, então temos: $$ T = W^D \text{ mod } n = 3210^{2651} \text{ mod } 3233 = 23Agora, para criptografar uma mensagem, alguém usa a chave pública para elevar a mensagem a uma potência e, em seguida, aplica o operador de módulo . Para descriptografar, a chave privada é usada para elevar o texto cifrado a uma potência e, em seguida, aplica o operador de módulo . A segurança do RSA é baseada na dificuldade de fatorar o módulo em seus números primos constituintes, o que é um problema computacionalmente complexo. Portanto, a segurança do sistema depende da robustez dos números primos escolhidos e dos cálculos envolvidos.