Algoritmo de geração de chaves na criptografia RSA


Geração da chave pública

  1. 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.

  2. 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.

  3. 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, .

  4. 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.

  5. Chave pública: A chave pública é composta pelo par . Essa chave é publicamente conhecida e usada para criptografar mensagens.

  6. Codificação: Utilize a chave pública para fazer a codificação de um bloco numérico . $$ W = T^E \text{ mod } n

    úã

W = T^E \text{ mod } n = 23^{1091} \text{ mod } 3233 = 3210

You can't use 'macro parameter character #' in math mode ### 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 = 23

Agora, 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.

Referências