Com o advento de computadores quânticos suficientemente poderosos, muitos algoritmos criptográficos tornam-se vulneráveis e não fornecem mais o sigilo de dados necessário. Existe um algoritmo que funcionará na era pós-quântica - a cifra Vernam ou blocos de cifras únicas. Mas tem uma desvantagem significativa - o comprimento da chave deve ser igual à quantidade de dados criptografados.
Introdução
As notas cifradas são de pouca utilidade para comunicação - é necessário armazenar uma grande quantidade de dados aleatórios, atualizar as notas cifradas à medida que se esgotam. Embora hoje em dia não seja um problema para algumas missões diplomáticas ter um armazenamento com chaves para alguns petabytes, o incômodo de organizar a proteção do armazenamento não vai resolver o problema de ficar sem chaves. Armazenamento O novo método de criptografia permite aumentar a duração do uso de chaves pré-geradas usando um gerador de números aleatórios. Em condições ideais, mesmo dois bits são suficientes para um uso infinito.
Definições
Cipher pad - dados aleatórios pré-gerados.
Um fluxo de mensagens são dados criptografados transmitidos sequencialmente ou em paralelo entre os interlocutores.
A chave básica é outra parte do bloco de criptografia usada para criptografar a primeira mensagem no fluxo.
Chave de sessão - chave de criptografia da próxima mensagem no fluxo, criada usando PRNG conforme necessário.
O campo de dados é a carga criptografada com a chave da sessão anterior.
Algoritmo
A quantidade mínima de informação transmitida é determinada pelo bloco de dados da mensagem, pode ser um bit ou byte, ou gigabyte, depende da implementação específica. A chave deve ter dois blocos de comprimento, uma vez que criptografa o bloco de dados e a primeira parte da próxima chave, a segunda parte da chave é criptografada com a primeira parte da anterior. Devido ao fato de que dados aleatórios são usados para chaves, não será possível descriptografar a chave real, porque todas as combinações possíveis são igualmente prováveis.
Alice e Bob criam um bloco de criptografia comum.
, , , . .
, , . .
, , , . , .
.
(. . ), , .
, , , .
.
, [10]
[1]. [00]. .
101 xor 100 => 001
[001] .
( , ) .
101 xor 001 => 100, 00
[1]. [01]. , .
000 xor 101 => 101
.
. habr. ASCII.
h = 68, a = 61, b = 62, r = 72
[01 23]
[B6]
, [5C E4]
...
012301 xor b65ce4 => b77fe5
, [b4 cd], .
5CE45C xor 68B4CD => 345091
, [A4 E8]
B4CDB4 xor 61A4E8 => D5695C
[E0 9A] [B0 51]. .
B77FE5345091D5695CC6083EC26382
Basta apagar os dois primeiros bytes e, mesmo tendo acesso ao bloco de cifras, não funcionará decifrar a mensagem original pelo fato de cada chave ser criptografada pela anterior.
E aqui está uma mensagem interessante criptografada da mesma forma que a chave de base [ 7B D0 ]
33A7C016D2519BF4EBDF241ACED9541CCEDCD77108B6BD7858475C19B9475A4D5B85415DEE28A02F1F5250C04C55398F6CB561469291654E74BA19D98C104440913755