Скажімо, у кожної Аліси та Пітера є флеш-пам’ять USB на 4 Гб. Вони збираються і зберігають на обох паличках два файли з назвою alice_to_peter.key
(2 ГБ) і peter_to_alice.key
(2 ГБ), які містять довільно генеровані біти. Вони більше ніколи не зустрічаються, а спілкуються в електронному вигляді. Аліса також підтримує змінну під назвою, alice_pointer
а Пітер підтримує змінну, яку називають peter_pointer
, обидві з яких спочатку встановлюють нуль.
Коли Алісі потрібно надіслати повідомлення Пітеру, вона робить це (де n
є n-й байт повідомлення):
encrypted_message_to_peter[n] = message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n]
encrypted_payload_to_peter = alice_pointer + encrypted_message_to_peter
alice_pointer += length(encrypted_message_to_peter)
(а для максимальної безпеки використану частину ключа можна стерти)
Петро отримує encrypted_payload_to_peter
, читає alice_pointer
збережені на початку повідомлення та робить:
message_to_peter[n] = encrypted_message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n]
А для максимальної безпеки після прочитання повідомлення також стерте використану частину ключа.
- EDIT: Насправді цей крок за допомогою цього простого алгоритму (без перевірки цілісності та автентифікації) знижує безпеку, див. Пост Пагла Ебермана нижче.
Коли Пітеру потрібно надіслати повідомлення Алісі, вони роблять зворотній шлях, на цей раз з peter_to_alice.key
і peter_pointer
.
За допомогою цієї банальної схеми вони можуть надсилати щодня протягом наступних 50 років 2 ГБ / (50 * 365) = ~ 115 кБ зашифрованих даних в обох напрямках. Якщо їм потрібно більше даних для надсилання, вони могли б використовувати більші клавіші, наприклад, з сьогоднішніми HD-дисками 2 ТБ (клавішами 1 ТБ), можна було б обмінюватися 60 Мб / день протягом наступних 50 років! На практиці дуже багато даних; наприклад, за допомогою стиснення - це більше години високоякісного голосового спілкування.
Мені здається, що зловмисник не може прочитати зашифровані повідомлення без ключів, бо навіть якщо вони мають нескінченно швидкий комп’ютер, з грубою силою вони можуть отримати все можливе повідомлення під обмеженням, але це астрономічне число повідомлень і зловмисник не знає, яке з них є фактичним повідомленням.
Чи правий я? Чи справді ця схема спілкування абсолютно безпечна? А якщо це безпечно, чи має своє ім’я? Шифрування XOR добре відоме, але я шукаю назву цього конкретного практичного додатка, використовуючи великі клавіші з обох сторін? Я смиренно чекаю, що цю програму хтось винайшов перед собою. :-)
Примітка: Якщо це абсолютно безпечно, то це дивовижно, тому що з сьогоднішніми низькими витратами на великі накопичувальні пристрої було б набагато дешевше безпечне спілкування, ніж із дорогою квантовою криптографією, і це має рівноцінну безпеку!
EDIT:
Я думаю, що це буде більш практичним у майбутньому, оскільки зменшуються витрати на зберігання.Це може вирішити безпечне спілкування назавжди.Сьогодні ви не знаєте, чи хтось вдало атакує існуючі шифри навіть через рік і робить його часто дорогі реалізації незахищеними. У багатьох випадках, перш ніж відбувається спілкування, коли обидві сторони зустрічаються особисто, саме час генерувати ключі. Я думаю, що це ідеально підходить для військової комунікації, наприклад між підводними човнами, які можуть мати HD з великими клавішами, а військовий центральний може мати HD для кожної підводного човна. Це також може бути практичним у повсякденному житті, наприклад, контролювати свій банківський рахунок, оскільки, створюючи свій рахунок, ви зустрічаєтесь з банком тощо.