Problema com o gerador de números pseudo-aleatórios One-Time-Pad


7

Comecei a aprender criptografia em sala de aula e nos deparamos com Almofadas de uso único, nas quais a chave (acordada de maneira uniforme) é do tamanho da mensagem. Então você transforma a mensagem em bits, e obtém o texto cifrado. Isso criptografa a mensagem e descriptografa a mensagem que você faria com o com os bits de cifra e chave.XORXOR

Agora, para criar um One-Time-Pad mais eficiente, você usaria um gerador de números pseudo-aleatórios, em que a chave original tem bits de comprimento (e não precisa ser tão longa quanto a mensagem). Então você colocaria a chave no gerador e obteria um número pseudo-aleatório. Mas, como é pseudo-aleatório, o remetente e o destinatário não receberão chaves diferentes? Então, como o receptor pode descriptografar a mensagem se não tiver a mesma chave?n


Se o seu problema principal é sobre o PRNG, a chave pode ser usada como semente (não muito boa para o OTP). Se ambas as partes usarem a mesma semente (para o mesmo gerador), as seqüências geradas serão as mesmas.
Evil

Ambas as partes usam a mesma chave. Usando um PRNG, eles o estendem a uma sequência comum de aparência aleatória muito mais longa, que serve como um bloco único.
Yuval Filmus

Você sabe como os PRNGs funcionam?
user253751

11
Apenas como uma sugestão para perguntas futuras, existe todo um site de troca de pilhas especializado em criptografia .
Paŭlo Ebermann 19/03/19

Respostas:


17

Você parece ter entendido mal qual é a chave.

No contexto da criptografia simétrica, a chave é um segredo compartilhado : algo conhecido pelo remetente e pelo destinatário. Para o OTP, a chave é o bloco inteiro e, se duas pessoas desejam criptografar alguma mensagem usando o OTP, elas devem garantir previamente que possuem um bloco longo o suficiente para fazer isso.

Para o seu OTP "eficiente" proposto, a chave é a semente do PRNG: ambas as partes devem garantir de antemão que o conhecem. Em seguida, ambos inicializam o PRNG com a mesma semente e é garantido que produz a mesma sequência de números "aleatórios" para cada um deles.

No entanto, observe que esse é um enfraquecimento maciço e maciço do OTP. Um OTP real oferece segurança perfeita, desde que o bloco seja mantido em segredo. Se você interceptar a mensagem de 17 caracteres

nsmklmfmwnfmngner

você não tem conhecimento se é

maketrumpthepotus

codificado com um bloco ou

ensureclintonwins

codificado com um bloco diferente. Ou

kittensarethebest

ou literalmente qualquer outra coisa. No entanto, usar um bloco pseudo-aleatório significa que apenas alguns blocos são possíveis (talvez não exista nenhuma chave que criptografe a mensagem do gatinho para "nsmklmfmwnfmngner", para que você possa excluir isso). Qualquer pessoa que conhece o algoritmo PRNG pode começar a adivinhar as chaves para tentar descriptografar as mensagens. Qualquer pessoa que capture algum material de bloco pode começar a tentar fazer engenharia reversa do PRNG. Quem captura mensagens criptografadas pode começar a tentar o mesmo.

Você realmente não deve chamá-lo de OTP, a menos que o material principal seja tão longo quanto a mensagem. Sua proposta para usar um PRNG é apenas um codificador de fluxo genérico.


4
Acho que vale a pena mencionar que o OTP é eficaz e viável no cenário em que você possui um canal de comunicação de alta largura de banda segura (por exemplo, contato pessoal), mas é temporário - e deseja enviar comunicações de baixa largura de banda com segurança mais tarde. Exemplo: forneça seu controle único ao seu espião antes de sua implantação; então ele pode usá-lo para enviar com segurança breves mensagens enquanto o bloco durar.
Curinga

O @Wildcard ainda deve combiná-lo com um MAC para garantir que a mensagem não seja modificada em trânsito.
Paŭlo Ebermann 19/03/19

8
"Você realmente não deve chamá-lo de OTP, a menos que o material principal seja tão longo quanto a mensagem." e nunca reutilizado . Portanto, uma vez . A outra coisa (com o PRNG) é entre. acabou de chamar uma cifra de fluxo.
Jonas Schäfer

@JonasWielicki "A outra coisa (com o PRNG) é a seguinte. É apenas chamada de cifra de fluxo". Eu disse isso em sentença depois da que você citou!
David Richerby

@DavidRicherby Ha. Como eu senti falta disso.
Jonas Schäfer

11

Agora, para criar um One-Time-Pad mais eficiente, você usaria um gerador de números pseudo-aleatórios

Não, não e mais uma vez não. Estou preocupado que seja isso que você está sendo ensinado. O conceito absolutamente fundamental de um bloco único e a noção de sigilo perfeito matematicamente comprovável é que o material do bloco é verdadeiramente aleatório. E nunca deve ser reutilizado , nem uma vez. Não pode ser gerado por qualquer forma de algoritmo. Os números aleatórios devem vir de um processo físico, como lançamento de dados, ruído elétrico ou interferência de fótons em um feixe de laser dividido. Se você os cria com qualquer tipo de algoritmo / código, isso é apenas uma cifra de fluxo como RC4 ou uma construção AES.

Navegue pelas perguntas marcadas no teclado único em crypto.se. Isso vai lhe contar tudo. Mais importante, você lerá muitas tentativas de melhorar ou tornar o bloco único mais eficiente . Todos eles são de óleo de cobra, por mais atraentes que possam parecer.


11
Reg. “Não pode ser gerado por qualquer forma de algoritmo” - tecnicamente falando, mesmo se você usar um processo físico como fonte de entropia, a chave real em geral ainda será gerada por um algoritmo: aquele que faz uma distribuição uniforme das medições brutas , caso contrário, também não é perfeitamente seguro. Apenas, esse algoritmo deve começar com mais bits aleatórios do que a chave terá.
leftaroundabout

@leftaroundabout Claro que você está certo. Eu não queria enlamear a água já turva com a discussão de extratores aleatórios.
Paul Uszak 20/0318

7

Um gerador pseudo-aleatório é um algoritmo determinístico, que, dada uma pequena semente aleatória, retorna uma sequência pseudo-aleatória enganando certos adversários (ou seja, esses adversários não serão capazes de distinguir a saída do gerador de uma sequência verdadeiramente aleatória). Observe que permitir que o gerador jogue moedas torna a coisa toda desinteressante, pois você pode simplesmente retornar uma saída verdadeiramente aleatória.

Nesse caso, a chave pode ser a semente , e o receptor pode calcular a para decifrar a mensagem (uma vez que é determinista, este cálculo produz o mesmo resultado para as duas partes).sG(s)G


11
Observe que muitos "geradores de números aleatórios" em computadores usam uma mistura de aleatoriedade real e pseudo-aleatoriedade e, portanto, não funcionam para esse pseudo-one-time-pad de "tecla curta" nem para criar um bloco único de uso real comprovado e seguro.
Paŭlo Ebermann 19/03/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.