Em 1976, Diffie e Hellman propuseram um tipo novo de cryptography que distinguisse entre o encipherment e as chaves do decipherment. Uma das chaves seria sabido publicamente; o outro seria mantido confidencial por seu proprietário. O cryptography classical requer o remetente e o receptor compartilhar de uma chave comum. O cryptography chave público não . Se a chave do encipherment for pública, para emitir uma mensagem secreta encipher simplesmente a mensagem com a chave pública do receptor. Emita-a então. O receptor pode decifrá-la que usa sua chave confidencial.
James Ellis, um criptógrafo que trabalha para o grupo da segurança da Comunicação-Eletrônica do governo britânico, dito "mostrou a prova do conceito em um relatório de janeiro 1970 CESG intitulado ' a possibilidade de encryption seguro de Digital do Non-Segredo.'" Dois de seus colegas encontraram execuções práticas. Este trabalho remanesceu classificado até 1997.
Porque uma chave é pública, e sua chave complementar deve remanescer secreta, um cryptosystem chave público deve encontrar-se com as seguintes três circunstâncias.
Deve ser computacionalmente fácil de encipher ou decifrar uma mensagem dada a chave apropriada.
|
|
Deve ser computacionalmente infeasible derivar a chave confidencial da chave pública.
Deve ser computacionalmente infeasible determinar a chave confidencial de um ataque escolhido do plaintext
A cifra de RSA fornece o secrecy e o authentication.
RSA é uma cifra da exponenciação. Escolha dois números grandes p e q da prima, e deixe-os n = pq. O ff(n) totient de n é o número dos números menos do que n com nenhuns fatores na terra comum com n.
Nossos exemplos usarão números pequenos para finalidades pedagogical. RSA real apronta deve ser ao menos 512 bocados cada um, dando um modulus ao menos de 1.024 bocados. Na prática, RSA é combinado com as funções cryptographic da mistura para impedir o rearranjo dos blocos.
| EXEMPLO: Deixe n = 10. Os números que são menos de 10 e são (não tenha nenhum fator na terra comum com) n relativamente principal são 1, 3, 7, e 9. Daqui, ff(10) = 4. Similarmente, se n = 21, os números que são relativamente principais a n for 1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, e 20. Assim f(21) = 12. |
Escolha um inteiro e < n que é relativamente principal ao ff(n). Encontre um segundo inteiro d tais que ff(n) da modificação do ed = 1. A chave pública é (e, n), e a chave confidencial são d.
Deixe m ser uma mensagem. Então:
c = modificação n do m^e
e
m = modificação n do c^d
| EXEMPLO: Deixe p = 7 e q = 11. Então n = 77 e f(n) = 60. Alice escolhe e = 17, assim que sua chave confidencial é d = 53. Neste cryptosystem, cada caráter do plaintext é representado por um número entre 00 (A) e 25 (z); 26 representam um espaço em branco. Bob quer emitir a Alice o MUNDO da mensagem "HELLO." Usando a respresentação acima, o plaintext é 07 04 11 11 14 26 22 14 17 11 03. Usando a chave pública de Alice, a mensagem cifrada é 07^17 modificação 77 = 28 04^17 modificação 77 = 16 11^17 modificação 77 = 44 ... 03^17 modificação 77 = 75 ou 28 16 44 44 42 38 22 42 19 44 75. |
Além ao confidentiality, RSA pode fornecer o authentication dos dados e da origem. Se Alice enciphers sua mensagem usando sua chave confidencial, qualquer um pode lê-la, mas se qualquer um a alterar, a mensagem cifrada (alterada) não pode ser decifrada corretamente.
| EXEMPLO: Suponha desejos de Alice para emitir a Bob o MUNDO da mensagem "HELLO" de tal maneira que Bob será certo que Alice o emitiu. Enciphers a mensagem com sua chave confidencial e emite-a a Bob. Como indicado acima, o plaintext é representado como 07 04 11 11 14 26 22 14 17 11 03. Usando a chave confidencial de Alice, a mensagem cifrada é 07^53 modificação 77 = 35 04^53 modificação 77 = 09 11^53 modificação 77 = 44 ... 03^53 modificação 77 = 05 ou 35 09 44 44 93 12 24 94 04 05. Além ao authenticity da origem, Bob pode ser certo que nenhuma letra estêve alterada. Fornecer o confidentiality e o authentication requer enciphering com a chave confidencial do remetente e a chave pública do receptor. |
EXEMPLO: Suponha desejos de Alice para emitir a Bob o MUNDO da mensagem "HELLO" na confiança e authenticated. Outra vez, suponha que a chave confidencial de Alice é 53. Faça exame da chave pública de Bob para ser 37 (fazendo sua chave confidencial 13). O plaintext é representado como 07 04 11 11 14 26 22 14 17 11 03. O encipherment é (07^53 modificação 77 = 07 da modificação 77)37 (04^53 modificação 77 = 37 da modificação 77)37 (11^53 modificação 77 = 44 da modificação 77)37 ... (03^53 modificação 77 = 47 da modificação 77)37 ou 07 37 44 44 14 59 22 14 61 44 47. O receptor usa a chave confidencial do receptor decifrar a mensagem e a chave pública do remetente para authenticate a. |
EXEMPLO: Bob recebe a mensagem cifrada acima, 07 37 44 44 14 59 22 14 61 44 47. O decipherment é (07^13 modificação 77 = 07 da modificação 77)17 (37^13 modificação 77 = 04 da modificação 77)17 (44^13 modificação 77 = 11 da modificação 77)17 ... (47^13 modificação 77 = 03 da modificação 77)17 ou 07 04 11 11 14 26 22 14 17 11 03. Isto corresponde ao MUNDO da mensagem "HELLO" do exemplo precedente. |
O uso de um sistema chave público fornece um tipo técnico de nonrepudiation da origem. A mensagem é decifrada usando a chave pública de Alice. Porque a chave pública é o inverse da chave confidencial, only a chave confidencial poderia enciphered a mensagem. Porque Alice é única quem sabe esta chave confidencial, only poderia enciphered a mensagem. A suposição subjacente é que a chave confidencial de Alice não estêve comprometida, e que o rolamento chave público seu nome realmente lhe pertence.
Na prática, ninguém usariam blocos do tamanho apresentado aqui. A edição é que, nivele se n for muito grande, se um caráter por o bloco enciphered, RSA puder ser quebrado usando as técnicas usadas quebrar cifras classical da substituição. Além disso, embora nenhum bloco individual não possa ser alterado sem deteção (porque o atacante presumably não tem o acesso à chave confidencial), um atacante pode rearranjar blocos e mudar o meaning da mensagem.
EXEMPLO: Um general emite uma mensagem às matrizes que pergunta se o ataque for sobre. As matrizes respondem com "on" da mensagem enciphered usando uma cifra de RSA com um modulus 1,024-bit, mas cada letra enciphered separada. Um atacante intercepta a mensagem e troca a ordem dos blocos. Quando o general decifra a mensagem, lerá o "NO.," o oposto do plaintext original. Além disso, se o atacante souber que as matrizes emitirão uma de duas mensagens (aqui, "NÃO" ou "on"), o atacante pode usar uma técnica chamada "busca para diante" ou "precomputation" quebrar a cifra. Para esta razão, o plaintext é acolchoado geralmente com dados aleatórios para fazer acima um bloco. Isto pode eliminar o problema para a frente de procurarar, porque o jogo de plaintexts possíveis se torna demasiado grande ao precompute praticàvel. Um general diferente emite o mesmo pedido que no exemplo acima. Outra vez, sedía as respostas com "on" da mensagem enciphered usando uma cifra de RSA com um modulus 1,024-bit. Cada letra enciphered separada, mas os primeiros seis bocados de cada bloco contêm o número do bloco, os oito bocados seguintes contêm o caráter, e os 1.010 bocados restantes contêm dados aleatórios. Se o atacante rearranjar os blocos, o general detectará que o bloco 2 chegou antes do bloco 1 (em conseqüência do número nos primeiros seis bocados) e os rearranja. O atacante também não pode o precompute os blocos determinar qual contem "O," porque teria que computar 21010 blocos, que é computacionalmente infeasible. |
Online: 373 users browsing the articles directory
|
|