If you're seeing this message, it means we're having trouble loading external resources on our website.

Se você está atrás de um filtro da Web, certifique-se que os domínios *.kastatic.org e *.kasandbox.org estão desbloqueados.

Conteúdo principal

Criptografia RSA: etapa 4

Exemplo trabalhado de RSA. Versão original criada por Brit Cruise.

Quer participar da conversa?

  • Avatar blobby green style do usuário glider.wag
    Why is k value equal to 2 at of the video?
    (3 votos)
    Avatar Default Khan Academy avatar do usuário
    • Avatar leaf grey style do usuário Décio Lauro Soares
      That is a good question.
      In my opinion the video doesn't make very clear how to obtain the value of k. (Maybe because we know that there is some k and we can calculate d without knowing k using some modular algebra)
      However, if we manipulate the formula presented in the video we get:
      d = (k * phi(n) + 1) / e
      Which is equal to:
      d * e = k * phi(n) + 1
      And by definition can be understood as:
      d * e = 1 (Mod phi(n))
      Because of this last equation, we know that d is the modular inverse of e.
      Now we have to use the Extended Euclidean Algorithm to find the modular inverse of 3 (mod 3016).
      Index quot(q_{i-1}) rem(r_i) s_i t_i
      0 - 3016 1 0
      1 - 3 0 1
      2 3016/3 = 1005 3016-1005*3=1 1 -1005*0=1 0-1005*1 = -1005

      Since the remainder is 1 in just one iteration, we now know that the modular inverse of 3 is -1005.
      However, we need the positive modular inverse and in this case it is 3016-1005=2011.
      Now, going back to the equation:
      d * e = k * phi(n) + 1
      We have that:
      2011 * 3 = k * 3016 + 1
      6033 = 3016k + 1
      k = 2
      (4 votos)
  • Avatar blobby green style do usuário glider.wag
    1) In is told that "m" an "n" must be coprimes.
    2) In is told that "e" and "phi(n)" must be coprimes.
    What is the rule I must follow to do RSA?
    (1 voto)
    Avatar Default Khan Academy avatar do usuário
Você entende inglês? Clique aqui para ver mais debates na versão em inglês do site da Khan Academy.

Transcrição de vídeo

RKA4JL - Agora, temos um atalho para resolver Φ (phi). Se soubermos os valores de N, então achar Φ(N) será fácil. Por exemplo, os fatores primos de 77 são 7 vezes 11. Logo, Φ(77) é 6 vezes 10, que é 60. Passo 3: como associar a função Φ à exponenciação modular? Recorremos, então, ao teorema de Euler, que é uma relação entre a função Φ e a exponenciação modular, como segue. m elevado a Φ(n) é igual a 1 módulo n. Significa que podemos pegar dois números quaisquer, contanto que eles não compartilhem fatores comuns. Vamos chamá-los de "m" e "n". Seja "m" igual a 5 e "n" igual a 8. Agora, elevando "m" a Φ(8) e dividindo por "n", o resultado sempre será 1. Precisamos apenas modificar essa equação, obedecendo duas regras simples. Primeiro: elevando o número 1 a qualquer expoente "k". Sempre resulta em 1. Da mesma forma, podemos multiplicar o expoente Φ(n) por qualquer número "k" e a solução ainda será 1. Segundo: multiplicando 1 por qualquer número, digamos "m", sempre resultará em "n". Por analogia, podemos multiplicar o lado esquerdo de "m" para conseguir um "m" do lado direito, o que pode ser simplificado como "m" elevado a "k" vezes Φ(n) mais 1. É aqui que está a mágica: agora temos uma equação para encontrar "e vezes d", que depende de Φ(n). Portanto, é fácil calcular "d". Somente os fatores de "n" são conhecidos. Por isso, "d" deve ser sempre a chave privada de Alice. É o atalho que permitirá que ela desfaça os efeitos de "e". Vamos mostrar um exemplo para ver tudo isso na prática. Bob tem uma mensagem que ele converteu em números usando um esquema de enchimento. Vamos chamar isso de "m". Então, Alice gera suas chaves pública e privada, como a seguir. Primeiro, ela gera dois números primos aleatórios de tamanho similar e os multiplica para obter "n". 3127. Depois, calcula Φ(n) facilmente pois conhece os fatores de "n", que vêm a ser 3016. Então, escolhe um expoente público e pequeno chamado "e", com a condição de que seja um número ímpar que não compartilhe fatores com Φ(n). Nesse caso, ela escolhe "e" igual a 3. Por fim, encontra o valor de seu expoente privado "d", que nesse caso é 2 vezes Φ(n) mais 1 dividido por 3. Ou 2011. Agora, ela esconde tudo, exceto o valor de "n" e o valor de "e", porque tanto "n" quanto "e" compõem sua chave pública. Pense nisso como um cadeado aberto. Ela o envia para que Bob tranque sua mensagem. Bob tranca sua mensagem calculando "m" elevado a "e" módulo "n". Chamemos isso de "c", sua mensagem criptografada, que ele devolve a Alice. Finalmente, Alice decripta a mensagem usando sua chave privada "d", acessada por seu atalho: "c" elevado a "d" módulo "n" é igual à mensagem original de Bob, "m". Note que Eve, ou qualquer outra pessoa de posse de "e", "c" e "n", somente pode encontrar o expoente "d" se puder calcular Φ(n), o que requer que ela saiba os fatores primos de "n". Se "n" for grande o suficiente, Alice sabe que isso levará centenas de anos, mesmo com a mais poderosa rede de computadores. Esse truque foi imediatamente patenteado depois de sua publicação. No entanto, foi redescoberto de forma independente em 1977 por Ron Rivest, Adi Shamir e Leonard Adleman, motivo pelo qual é conhecido como criptografia RSA. RSA é o algoritmo de chave pública mais usado no mundo e o software mais copiado da história. Cada usuário de internet na Terra está usando RSA ou uma variação dele, ainda que não saiba disso. Sua força se baseia na dificuldade de encontrar números primos e surge das profundas questões sobre distribuição dos números primos, questões que permanecem sem respostas por milhares de anos.