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.
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?
fonte
Respostas:
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
você não tem conhecimento se é
codificado com um bloco ou
codificado com um bloco diferente. Ou
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.
fonte
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.
fonte
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).s G(s) G
fonte