One-time pad

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Ambox rewrite.svg
Esta página precisa ser reciclada de acordo com o livro de estilo (desde março de 2011).
Sinta-se livre para editá-la para que esta possa atingir um nível de qualidade superior.
Excerto de um one-time pad.

Em criptografia, One-time pad (OTP), ou cifra de chave única, é um algoritmo de criptografia onde o texto plano é combinado com uma chave aleatória ou uma “pad” que seja tão grande quanto o plaintext e é usado somente uma vez. Uma adição modular (por exemplo XOR) é usada para combinar o plaintext com a pad. Foi inventada em 1917.

Características[editar | editar código-fonte]

Se a chave for verdadeiramente aleatória, nunca reutilizada, e mantida em segredo, a one-time pad é inquebrável. Também provou-se que toda a cifra teórica inquebrável deve usar chaves com as mesmas exigências que chaves de OTP.

A chave consiste normalmente em um fluxo aleatório de números, cada qual indica o número dos lugares no alfabeto (ou número de fluxos, se a mensagem do plaintext estiver no formulário numérico) que a letra ou o número correspondente na mensagem do plaintext devem ser deslocados. Para mensagens no alfabeto Latin, por exemplo, a chave consistirá em uma cadeia aleatória dos números de 0 a 25; para mensagens binárias a chave consistirá em uma cadeia aleatória de 0s e de 1s; e assim por diante.

A parte “pad” do nome vem das primeiras implementações onde as chaves eram distribuídas em um bloco de papel. Assim, a folha superior poderia facilmente ser removida e destruída depois de usada. Para facilitar sua ocultação, o bloco era às vezes muito pequeno. As fotos acessíveis na Internet mostram as pads de KGB capturadas que cabem na palma da mão ou em uma casca de noz.

A one-time pad é derivada da cifra de Vernam, nomeado em homenagem a Gilbert Vernam, um de seus inventores. O sistema de Vernam era uma cifra que combinava uma mensagem com uma chave lida de um laço da fita adesiva de papel. Em seu formulário original, o sistema de Vernam não era inquebrável porque a chave poderia ser reutilizada. O uso do “One-time” veio um pouco mais tarde quando Joseph Mauborgne reconheceu que se a fita chave fosse totalmente aleatória, a dificuldade criptanalítica seria maior.

Há alguma ambigüidade do termo devido ao fato de que alguns autores usam o termo de “cifra Vernam” como sinônimo para “one-time pad”, em quanto outros se referem ao o fluxo de cifra aditiva como “ cifra Vernam”, incluindo aquelas baseadas em CSPRNG (cryptographically secure pseudo-random number generator) , que é um gerador de número pseudo-aleatório com propriedades adicionais que o fazem adequado para o uso com criptografia.

Segredo Perfeito[editar | editar código-fonte]

A one-time pad de Vernam-Mauborgne foi reconhecida cedo sobre como muito difícil de quebrar, mas seu status especial foi realizado somente por Claude Shannon uns 25 anos mais tarde.

Provou, usando considerações da teoria de informação, que a one-time pad tem uma propriedade que denominou o segredo perfeito: isto é, a mensagem cifrada não dá absolutamente nenhuma informação adicional sobre o plaintext.

Assim, a probabilidade a priori de uma mensagem M do plaintext é a mesma que a posteriori a probabilidade de uma mensagem M do plaintext dada a mensagem cifrada correspondente. E de fato todos os plaintexts são igualmente prováveis. Esta é uma noção forte da dificuldade criptanalítica.

Apesar da prova de Shannon de sua segurança, a one-time pad tem inconvenientes sérios na prática:

  • Requer one-time pads perfeitamente aleatórias;
  • Geração e troca seguras do material da one-time pad, que deve ser pelo menos tão grande quanto a mensagem;
  • Tratamento cuidadoso para certificar-se de que esse segredo nunca passe para o adversário.

Estas dificuldades do implementares conduziram aos sistemas one-time pad que estão sendo quebrados, e são tão sérias que impediram que a one-time pad esteja adotada como uma ferramenta difundida na segurança da informação.

Em particular, usar “one-time” é absolutamente necessário. Se a one-time pad for usada apenas duas vezes, as operações matemáticas simples podem reduzi-la a uma cifra da função-chave. Se ambos os plaintexts estiverem em uma língua natural (por exemplo inglês ou Russo), mesmo que ambos sejam secretos,cada um tem uma chance muito elevada de ser recuperado pela criptanálise heurística, com possivelmente algumas ambigüidades. Naturalmente a mensagem mais longa pode somente ser quebrada para a parcela que sobrepõe a mensagem mais curta, sinal de adição, talvez, pouco mais terminando uma palavra ou uma frase. A façanha a mais famosa desta vulnerabilidade é o projeto VENONA.

A one-time pad não fornece nenhum mecanismo para assegurar a integridade da mensagem, e na teoria um ataque man-in-the-middle (MITM) que saiba que a mensagem exata que está sendo emitida pode diretamente substituir tudo ou uma parte dessa mensagem com o texto de sua escolha que seja do mesmo comprimento. As técnicas padrões para impedir isto, tal como o uso de um código de autenticação da mensagem, podem ser usadas junto com um sistema one-time pad, mas faltam a segurança perfeita que a OTP aprecia.

História[editar | editar código-fonte]

A história da one-time pad é marcada por quatro partes: O primeiro sistema one-time pad era elétrico. Em 1917, Gilbert Vernam (da AT&T) inventou e patenteou mais tarde (ESTADOS UNIDOS patenteiam 1.310.719) uma cifra baseada na tecnologia da máquina do teletipo. Cada caráter em uma mensagem foi combinada eletricamente com um caráter em uma chave da fita . O capitão Joseph Mauborgne (então um capitão no exército de Estados Unidos e mais tarde chefe do Corpo do Sinal) reconheceu que a seqüência do caráter na fita de chave poderia ser completamente aleatória e que, se assim, o criptanalises seriam mais difíceis. Juntos inventaram o primeiro sistema one-time de fita.

O segundo desenvolvimento era o sistema paper pad. Os diplomatas tinham usado por muito tempo códigos e cifras para o confidenciamento e para minimizar custos do telégrafo. Para os códigos, as palavras e as frases foram convertidas aos grupos dos números (tipicamente 4 ou 5 dígitos) que usam um dicionário-como o codebook. Para a segurança adicionada, os números secretos poderiam ser combinados com (adição geralmente modular) cada grupo do código antes da transmissão, com os números secretos que estão sendo mudados periodicamente (este foi chamado supercriptografia).

No inicio dos anos 20, três criptógrafos alemães, Werner Kunze, Rudolf Schauffler e Erich Langlotz, que foram envolvidos em quebrar tais sistemas, viram que nunca poderiam quebrar um número aditivo aleatoriamente escolhido usado em cada grupo do código. Tiveram as paper pads duplicadas, imprimidas acima com linhas de grupos do número aleatório. Cada página teve um número de série e oito linhas. Cada linha tinha seis grupos de 5-dígitos. Uma página seria usada como uma folha de trabalho para codificar uma mensagem e então destruí-lá. O número de série da página seria emitido com a mensagem codificada. O receptor inverteria o procedimento e destruiria então sua cópia da página. O escritório estrangeiro alemão pôs este sistema na operação por volta de 1923.

Uma noção separada foi o uso de one-time pad nas letras para codificar diretamente o plaintext como no exemplo abaixo.

Leo Marks inventou tal sistema para as operações especiais britânicas executivas durante a segunda guerra mundial, embora suspeitou naquele tempo que se soube já no mundo altamente compartimentalizado da criptografia, como por exemplo no parque de Bletchley. A descoberta final era por Claude Shannon nos 1940s que reconheceram e provaram o significado teórico do sistema one-time da almofada. A descoberta final foi realizada por Claude Shannon nos anos 40 que reconheceu e provou o significado teórico do sistema one-time pad.

Exemplo[editar | editar código-fonte]

Suponha que Alice deseje emitir a mensagem “OLÁ” a Bob. Assuma que duas pads de papel que contenham seqüências aleatórias idênticas as das letras estiveram produzidas de algum modo previamente e emitidas firmemente a ambos. Alice escolhe a página apropriada não-utilizada ainda pela pad. A maneira de fazer isto é arranjada normalmente para adiantar, como por exemplo usar a folha disponível seguinte para a mensagem seguinte.

O material na folha selecionada é a chave para esta mensagem. Cada letra da pad será combinada em uma maneira predeterminada com a uma letra da mensagem. É comum, mas não requerido, para atribuir a cada letra um valor numérico: por exemplo, “A” é 0, “B” é 1, e assim por diante com “Z”, 25. Neste exemplo, a técnica é combinar a chave e a mensagem usando a adição modular. Os valores numéricos de letras correspondentes da mensagem e da chave são adicionados junto, o modulo 26. Se o material chave começar com, X M CKL e a mensagem “HELLO”, então o código deveria ser feito do seguinte modo:

    23 (X)  12 (M)   2 (C)  10 (K)  11 (L)  chave
  +  7 (H)   4 (E)  11 (L)  11 (L)  14 (O)  mensagem
  = 30      16      13      21      25      chave + mensagem
  =  4 (E)  16 (Q)  13 (N)  21 (V)  25 (Z)  chave + mensagem (mod 26)

Note que se um número for maior de 25, então na forma aritmética modular, o restante da divisão por 26 deve ser pego. A mensagem cifrada a ser emitida a Bob é assim “EQNVZ.” Bob usa a página chave combinando e o mesmo processo, mas no reverso, para obter o plaintext. Aqui, a chave é subtraída da mensagem cifrada, usando outra vez a aritmética modular:

     4 (E)  16 (Q)  13 (N)  21 (V)  25 (Z) mensagem cifrada
 -  23 (X)  12 (M)   2 (C)  10 (K)  11 (L) chave
 = -19       4      11      11      14     mensagem cifrada - chave
 =   7 (H)   4 (E)  11 (L)  11 (L)  14 (O) mensagem cifrada - chave(mod 26)

Idêntico ao de cima , se um número é negativo , 26 é adicionado para fazer o número não-negativo. Desta forma , Bob recupera o plaintext da Alice , a mensagem " HELLO ". Ambos, Alice e Bob destroem o cartão chave logo após acabarem de utilizar, desta forma evitando reciclar e um ataque contra a cifra. A KGB emite frequentemente sua one-time pad dos agentes impressas em folhas minúsculas “de papel do papel flash” - convertido quimicamente a nitrocelulose, que se queima quase imediatamente e não deixa nenhuma cinza. A one-time pad clássica de espionagem pode ser executada como um programa do software usando arquivos de dados como a entrada (plaintext) e a saída (mensagem cifrada) e o material chave (a seqüência aleatória requerida). A operação de XOR é usada frequentemente para combinar o plaintext e os elementos chaves, e é especialmente atrativa em computadores desde que seja geralmente uma instrução de máquina nativa e é conseqüentemente muito rapidamente.

Entretanto, assegurar-se de que o material chave seja realmente aleatório, seja usado somente uma vez, nunca seja conhecido pela oposição, e que seja completamente destruído após o uso, realmente é muito difícil. As partes auxiliares de um software one-time pad apresenta desafios reais: fixar a manipulação/transmissão do plaintext, chaves verdadeiramente aleatórias, e um único uso de uma chave.

Segurança[editar | editar código-fonte]

As One-time pads são “informações-teoricamente seguras” nas mensagens cifradas, não fornecem nenhuma informação sobre a mensagem original a um criptanalista. Esta é uma noção muito forte de segurança primeiramente desenvolvida durante a 2ª Guerra Mundial por Claude Shannon e provada, matematicamente, ser verdadeira por Shannon mais ou menos na mesma época. Seu resultado foi publicado no Jornal Técnico dos Laboratórios Bell em 1949. As one-time pads se usadas corretamente são seguras neste sentido mesmo se encontrar adversários com poder computacional infinito. Para continuar o exemplo acima, suponha que Eve intercepte a mensagem cifrada de Alice: “EQNVZ.” Se Eve tivesse poder infinito de computação, descobriria rapidamente que a chave “XMCKL” produziria o plaintext “HELLO” (em português: "olá"), mas descobriria também que a chave “TQURI” produziria o plaintext “LATER” (em português: "mais tarde"), uma mensagem igualmente plausível:

     4 (E)  16 (Q)  13 (N)  21 (V)  25 (Z) mensagem cifrada
 −  19 (T)  16 (Q)  20 (U)  17 (R)   8 (I) possível chave
 = −15       0      −7       4      17     mensagem cifrada
 =  11 (L)   0 (A)  19 (T)   4 (E)  17 (R) chave + mensagem (mod 26)

De fato, é possível “descifrar” qualquer mensagem com o mesmo número dos caracteres fora da mensagem cifrada usando uma chave diferente e não há nenhuma informação na mensagem cifrada que permitirá que Eve escolha entre as várias leituras possíveis da mensagem cifrada. A maioria de algoritmos convencionais de criptografia, ambas simétricas e assimétricas, usam testes padrões complexos de substituição e transposição. Para o uso melhor destes atualmente, não se sabe se pode haver um procedimento criptanalítico que possa inverter (ou inverter parcialmente) estas transformações sem saber a chave usada durante a criptografia.

Em termos práticos nenhum procedimento como esse é conhecido, embora já possa existir os algoritmos de computador que poderiam fazer assim em um tempo “razoável”. Um dos problemas proeminentes centrais não-solucionados da informática carrega neste problema; se P=NP então seria possível que tais algoritmos pudessem ser encontrados, e se ele fossem procurados mais vigorosamente do que são hoje. Mesmo se não, os cripto sistemas atuais do indivíduo poderiam ainda ser quebrados.

Entretanto, a one-time pad não seria feita menos segura por uma prova que P=NP. A maioria dos observadores informados acreditam que P≠NP e, em qualquer o caso, muitos duvidam que esta pergunta tenha qualquer relevância prática ao projeto do algoritmo de criptanalise e criptografia.

Aplicabilidade da One-time Pad[editar | editar código-fonte]

A segurança perfeita teórica da one-time pad aplica-se somente em um ajuste teoricamente perfeito; nenhuma execução do mundo-real de todo o cripto-sistema pode fornecer a segurança perfeita porque as considerações práticas introduzem vulnerabilidades potenciais. Estas considerações práticas da segurança e da conveniência significam que one-time pad é, na prática, pouco usada.

  • As One-time pads resolvem poucos problemas práticos atuais na criptografia. As cifras da alta qualidade que se submeteram à revisão pública rigorosa estão extensamente disponíveis e sua segurança não é considerada uma preocupação principal no presente. Tais cifras são quase sempre mais fáceis de empregar do que as one-time pads; a quantidade do material chave que deve ser gerada corretamente e distribuído firmemente é bem menor, e a chave pública criptográfica faz com que o problema seja mais fácil.
  • Os números aleatórios da alta qualidade podem ser difíceis de gerar. As funções da geração do número aleatório na maioria das bibliotecas da língua de programação não são apropriadas para o uso criptográfico. Mesmo aqueles geradores que são apropriados para o uso criptográfico normal, incluindo /dev/random e muitos geradores do número aleatório , fazem algum uso das funções criptográficas cuja a segurança não é provada.
  • Distribuir as chaves one-time pad é inconveniente. Os meios de armazenamento tais como “thumb drivers”, “DVD-Rs” ou “digital audio players” pessoais podem ser usados para carregar uma one-time pad muito grande de um lugar para outro de uma maneira não-suspeita, mas nivelar assim que a necessidade de transportar a pad fisicamente é um muito peso comparando aos protocolos chaves da negociação de um cripto-sistema moderno de chave-pública, e estes meios não podem confiantemente serem apagados por nenhum meio brevemente de incineração. Uns 4.7 GB DVD-R completamente cheios de dados de one-time pad, se reduzi-los em partículas de 1 mm^2 no tamanho, saem com mais de 100 kilobits dos dados em cada partícula. Além disso o risco do compromisso durante o trânsito é provavelmente muito maior na prática do que a probabilidade do compromisso para uma cifra tal como AES. Finalmente, o esforço necessitou controlar as escalas one-time pad ruins do material chave das grandes redes (networks). O número das pad requeridas são maiores que o quadrado do número de usuários que trocam mensagens livremente entre si. Para uma comunicação entre somente duas pessoas, ou uma topologia da “rede estrela”, este é um problema menor.
  • O material chave deve ser depois de usado firmemente disposto, assegurar que o material chave nunca seja reutilizado e proteger as mensagens emitidas. Porque o material chave deve ser transportado de um ponto final a outro, e persiste até que a mensagem esteja emitida ou recebida, pode ser mais vulnerável para a recuperação forense do que o plaintext que transiente ele protege.
  • Como as usadas tradicionalmente, one-time pads não fornecem nenhuma autenticação da mensagem, a falta de uma frequente fonte de segurança faz com que ocorra falhas em sistemas de mundo-real. A natureza aditiva direta do “keystream” faz esta vulnerabilidade especialmente simples para explorar - por exemplo, um “atacante” que saiba que a mensagem contem “Meet Jane and me tomorrow at 3:30 pm (Encontre Jane e eu amanhã às 3:30 pm)” pode substituir esse índice por todo o outro índice do mesmo comprimento, tal como “ 3:30 meeting is cancelled, stay home (O encontro de 3:30 esta cancelado casa, fique em casa”, sem ter o acesso à one-time pad. O hashing universal fornece uma maneira de autenticar as mensagens até um limite arbitrário de segurança mas este usa dados aleatórios adicionais da pad, e remove a possibilidade de executar o sistema sem um computador.

Contudo, um one-time pad retem algum interesse prático limitado:

  • One-time pad é o único criptosistema provido de segurança. Embora a maioria dos peritos tenham confiança em criptosistemas padrões para finalidades práticas, um pode não estar certo de que uma descoberta criptanalítica futura, ou uma descoberta no hardware de um computador tal como computação quantum, não vão quebrá-los. One-time pad é um dos métodos mais práticos de criptografia onde uma ou ambas as obrigações dos partidos faz todo o trabalho à mão, sem o DAE (Dispositivo Automático de Entrada) de um computador; isto foi importante na era “pré-computador”, e poderia concebivelmente ainda ser útil nas situações onde há um computador é ilegal ou em incriminação ou onde os sistemas de computador operativos de confiança, não estão disponíveis.
  • Fazer e usar uma one-time pad tem valor educacional. Nenhum equipamento especial é requerido e serve como uma introdução boa para as diversas ideias criptográficas.
  • OTP pode ser usado, junto com um criptosistema mais padrão, em um esquema de super-criptografia. Adicionar uma camada de OTP é um exemplo especial de super-criptografia em que se pode provar que, desde que você usa as chaves que são estatística independente para cada camada (por exemplo RNGs independente), a combinação seria pelo menos tão forte quanto a camada a mais forte.

Usos[editar | editar código-fonte]

Em algumas situações hipotéticas do espionagem, a one-time pad pôde ser útil porque pode ser computada à mão com lápis e papel. Certamente, quase todas cifras restantes de alta qualidade são pouco práticas sem computadores. Os espiões podem receber suas pads em pessoa de seus “alimentadores.” No mundo moderno, entretanto, os computadores (tais como aqueles encaixados em dispositivos eletrônicos pessoais, como telefones móveis, por exemplo) são assim ubíquo que possuem um computador apropriado para executar a criptografia convencional (por exemplo, um telefone que possa funcionar o software criptográfico escondido) geralmente não atrairá a suspeita.

As One-time pads foram usadas em circunstâncias especiais desde os anos 90. O serviço Diplomático da República de Weimar começou a usar o método em aproximadamente 1920. A quebra da pobre criptografia soviética pelos Ingleses, com as mensagens públicas feitas para razões políticas em dois momentos nos 20, parece ter induzido a URSS adotar one-time pads para algumas finalidades perto de 1930. Os espiões da KGB são conhecidos também por terem usados lápis e papel nas one-time pads mais recentemente. Os exemplos incluem o coronel Rudolf Abel, que foi preso e condenado na cidade de Nova York nos anos 50, e os “Krogers” (IE, Morris e Lona Cohen), que foram presos e condenados por espionagem no Reino Unido nos anos 60. Ambos foram encontrados com as one-time pads físicas com eles.

Um número de nações usaram os sistemas one-time pads para seu tráfego sensível. O NSA descreveu os sistemas one-time de fita como SIGTOT e 5-UCO como sendo usado para o tráfego da inteligência até que a introdução da cifra eletrônica baseou KW-26. Leo Marks relatou que as operações executivas especias britânicas usaram as one-time pads para codificar o tráfego entre seus escritórios. As One-time pads para uso com seus agentes ultramarinos foram introduzidas mais tarde na guerra. Outras máquinas one-time da cifra de fita incluem as máquinas inglesas Rockex e Noreen.

O “scrambler” de voz SIGSALY da segunda guerra mundial era um sistema one-time pad. Ele adicionou o barulho ao sinal em uma extremidade e removeu-o no extremo oposto. O barulho foi distribuído até o fim do canal em forma de arquivos de larga escala no qual somente dois foram feitos. Então começou a sincronização e os problemas de longo-termo da tração da fase que se levantaram e foram resolvidos antes que o sistema poderia ser usado.

A hotline entre Moscow e Washington D.C., estabelecida em 1963 após a Crise dos Mísseis de Cuba, usou os teleprinters protegidos por um sistema one-time de fita comercial . Cada país preparou as fitas fechando à chave usadas para codificar suas mensagens e entregou-as através de sua Embaixada no outro país. Uma vantagem original do OTP neste caso era que nenhum país teve que revelar uns métodos mais sensíveis de criptografia aos outros. Durante a invasão de 1983 em Grenada, as forças de ESTADOS UNIDOS encontraram uma fonte dos pares dos livros one-time pads em um armazém Cubano. O código de comunicação tática BATCO do exército britânico é um sistema de lápis-e-papel do sistema one-time pad .

O material chave é fornecido nas folhas de papel que são mantidas em uma carteira plástica especial com um ponteiro de deslizamento que indica a última chave usada. As folhas novas são fornecidas diariamente e as velhas são destruídas. BATCO é usado em redes da voz do campo de batalha; as parcelas mais sensíveis de uma mensagem são codificadas e a mensagem cifrada são lidas para fora, letra por letra.

Uma noção relacionada é o código one-time, um sinal, usado somente uma vez, por exemplo o “alfa” para a “missão terminada” e o “Bravo” para a “missão falhada” não pode ser “descifrado” em nenhum sentido razoável da palavra. Compreender a mensagem requererá a informação adicional, frequentemente “profundidade” da repetição, ou alguma análise de tráfego. Entretanto, tais estratégias .Embora tais estratégias não sejam um “one-time pad” criptográficos em qualquer senso significativo.

Façanhas[editar | editar código-fonte]

Enquanto one-time pads são seguras se gerado e usado corretamente, os erros pequenos puderem conduzir ao criptanalises bem sucedidas:

  • Em 1944-1945, a agência da segurança do exército dos E.U. podia resolver um sistema one-time pad usado pelo escritório estrangeiro alemão para seu tráfego de baixo-nível, codinome GEE (Erskine, 2001). GEE era insegura porque as pads não eram completamente aleatórias - a máquina usada gerar as pads produziu saídas previsíveis.
  • Em 1945 os ESTADOS UNIDOS descobriram que as mensagens de Camberra-Moscou estavam cifradas primeiramente usando um código-livro e então usando uma one-time pad. Entretanto a one-time pad usada era mesma usada por Moscou para mensagens de Washington, D.C.-Moscou. Combinado com o fato de que algumas das mensagens de Camberra-Moscou incluíram documentos originais britânicos conhecidos pelo governo, isto permitiu que algumas das mensagens cifradas fossem quebradas.
  • As One-time pads foram empregadas por agências do espionagem de Soviéticas para comunicações secretas com os agentes e os controladores dos agentes. A análise mostrou que estas pads foram geradas pelos datilógrafos que usam máquinas de escrever reais. Este método é naturalmente “não verdadeiramente” aleatório, porque faz determinadas seqüências chaves convenientes mais provavelmente do que outras, contudo provou ser geralmente eficaz. Sem cópias do material chave usado, somente algum defeito no método da geração ou reutilização das chaves ofereceram muita esperança da criptanalises. Começando no fim dos anos 40, as agências de inteligência dos Estados Unidos e do Reino Unido podiam quebrar alguns tráfegos one-time pad soviéticos para Moscou durante a WWII em conseqüência dos erros feitos na geração e na distribuição do material chave.
  • Uma sugestão é que o centro pessoal de Moscou esteve apressado um pouco pela presença das tropas alemãs ,que estava do lado de fora de Moscou no fim de 1941 e no inicio de 1942, e produziu mais de uma cópia do mesmo material chave durante esse período. Este década-comprida estava finalmente com outro nome VENONA (BRIDE era o nome de antes); produziu uma, considerável quantidade de informação, incluindo informação sobre espiões soviéticos do átomo. Mesmo assim, somente uma porcentagem pequena das mensagens interceptadas foi descifrada inteiramente ou parcialmente (algumas mil de cem mil).
  • Os Búlgaros são conhecidos por terem sido colocados para fora pelo FBI durante WWII dos escritórios soviéticos nos E.U. E conseguiram cópias de alguns materiais chaves. Há algumas reivindicações de que o material copiado fosse bem criptografado.

Requerimentos Verdadeiramente Aleatórios[editar | editar código-fonte]

Em discussão sobre a one-time pad, duas noções de segurança têm que ser mantidas distintas. O primeiro é a segurança teórica do sistema one-time pad como provado por Shannon (segurança de Shannon). O segundo é a – segurança - oferecida pelas cifras avançadas (por exemplo AES).

Os métodos que podem oferecer a segurança empírica, mas não têm a segurança de Shannon Se o material chave for gerado por um programa determinado, então não é aleatório e o sistema de criptografia não pode reivindicar a segurança teórica do sistema one-time pad. Ao em vez, é chamado de cifra stream. Estes usam geralmente uma chave curta que seja usada semear um córrego pseudo aleatório longo, que seja combinado então com a mensagem usando algum mecanismo como aqueles usados nas almofadas one-time (por exemplo, XOR). As cifras streams podem ser seguras na prática, mas não podem ser absolutamente seguras no mesmo sentido provável que a one-time pad.

Métodos que podem oferecer a segurança Empírica mas não tem a segurança Shannon[editar | editar código-fonte]

As cifras Fishes usadas pelas forças armadas alemãs na WWII, se tornaram cifras streams inseguras, não eram práticas como a one-time pads automatizada, como seus designers pretendiam. Bletchley Park quebrou uma delas, a máquina Lorenz SZ 40/42.

Entretanto, se um CSPRNG (cryptographically secure pseudo-random number generator) - gerador de número pseudo-aleatório for usado, pode forma as bases para uma cifra empìrica segura stream. Há muitos projetos bem examinados no domínio público, variando dedes a simplicidade do RC4 até usando uma cifra do bloco como AES na modalidade contrária. Pareceria ter poucas razões para inventar as novas cifras streams, contudo tem se pensado por muito tempo que o NSA e suas agências comparáveis devotam esforços consideráveis para as cifras streams para seus clientes do governo.

Métodos que não oferecem a segurança Empírica nem a segurança de Shannon[editar | editar código-fonte]

A similaridade entre cifras streams e as one-time pads conduz frequentemente a criptografia sem cautela à inventar cifras streams inseguras sob as impressões equivocadas que eles desenvolveram uma versão prática da one-time pad. Uma aproximação especialmente insegura é qualquer um dos geradores de número aleatório que estão distribuídos em muitos pacotes “runtime” da sustentação da linguagem de programação do computador ou enquanto o sistema do “sistema operacional” chamar. Estes produzem tipicamente as seqüências que passam alguns (ou mesmo muitos) testes estatísticos, mas são entretanto quebráveis por técnicas criptanalíticas.

Por algum tempo o ANSI C restringiu a linguagem C, para a maioria de execuções que seriam de 16 bits, dando um máximo de 32768 valores diferentes antes de repetir. Isto é inteiramente insegura e é facilmente de ser quebrada pelo teste exaustivo. Os geradores padrões de números aleatórios do computador não são apropriados para finalidades criptográfica, especificamente incluindo a one-time pad.

O algoritmo“Mersenne twister ”, relativamente desenvolvido recentemente e extensamente admirado, enquanto suficientemente “aleatório” para a maioria das pesquisas ou simulações de uso, melhor do que do que qualquer outro gerador, e completamente rápido, não deve ser usado para gerar o material chave da one-time pad. O algoritmo é determinado e não foi projetado para a segurança criptográfica.

Conseguindo a Segurança de Shannon[editar | editar código-fonte]

Para conseguir a segurança de Shannon, é preciso ter uma fonte de dados aleatórios, perfeitamente imprevisíveis.

Uma base teórica para a existência física da imprevisibilidade é a mecânica quântica. Suas afirmações de imprevisibilidade são sujeitas a testes experimentais.

Uma outra base é a da teoria de sistemas dinâmicos instáveis e a da teoria do caos. Estas teorias sugerem que mesmo no mundo determinado das Leis de Newton, os sistemas de mundo real evoluem de maneira que não podem ser preditas na prática porque uma necessitaria saber as circunstâncias iniciais a uma exatidão que cresça exponencialmente á cima da hora.

Para o uso de uma one-time pad, os dados devem ser ser exibidos perfeitamente aleatoriamente. A maioria de fontes práticas exibem alguma imperfeição ou polarização. A qualidade da aleatoriedade é medida pela entropia. Um bit perfeitamente aleatório tem uma entropia de um.

A ideia de Von Neumann é usar um algoritmo para combinar múltiplo, bits imperfeitamente aleatórios, cada um com entropia menos que um, para criar um único bit com a entropia igual a um. Este processo é chamado destilação da entropia ou extração da entropia. Von Neumann propôs o seguinte método, chamado “Von Neumann whitening”.

Bits de entrada Saída
00 Sem saída.
01 Saída bit "1".
10 Saída bit "0".
11 Sem saída.

Isto produzirá bits uniformemente aleatórios de saída se os bits da entrada forem estatisticamente independentes e todos extraídos da mesma distribuição. Entretanto, aquela não é uma suposição realística desde que a maioria de fontes físicas de aleatoriedade possam ter alguma correlação na saída, e a distribuição pode mudar com a temperatura do dispositivo, etc. Em 2003, Boaz Barak, Ronen Shaltiel, e Eran Tromer indicaram alguns critérios razoáveis da segurança para a destilação da entropia e construíram um algoritmo para fazê-lo.

Se um computador usado para a geração one-time pad for comprometido, por um vírus de computador ou por outro malware ou por um adversário que ganha o acesso físico, o software pode ser modificado para escapar os dados da pad ou para gerar os dados aparentemente aleatórios que estão de fato previsível.

O único caminho para reduzir este risco é gerar pads em uma máquina que nunca seja conectada a toda a rede de computador e preferivelmente não seja usada para nenhuma outra finalidade. Coletar o material chave em meios novos, em branco (por exemplo discos flexíveis ou Cd-Rs) elimina uma outra rota para a infecção do malware.