Скажем, у Алисы и Питера есть флешка на 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]
А для максимальной безопасности после прочтения сообщения также сотрите использованную часть ключа.
- РЕДАКТИРОВАТЬ: На самом деле этот шаг с помощью этого простого алгоритма (без проверки целостности и аутентификации) снижает безопасность, см. Пост Paŭlo Ebermann ниже.
Когда Питеру нужно отправить сообщение Алисе, они делают обратное, на этот раз с peter_to_alice.key
и peter_pointer
.
С помощью этой тривиальной схемы они могут отправлять каждый день в течение следующих 50 лет 2 ГБ / (50 * 365) = ~ 115 КБ зашифрованных данных в обоих направлениях. Если им нужно больше данных для отправки, они могли бы использовать более крупные ключи, например, с сегодняшними 2 ТБ HD (1 ТБ ключи) можно было бы обменивать 60 МБ / день в течение следующих 50 лет! Это много данных на практике; например, используя сжатие, это более часа высококачественной голосовой связи.
Мне кажется, что у злоумышленника нет возможности прочитать зашифрованные сообщения без ключей, потому что, даже если у них бесконечно быстрый компьютер, они могут грубо перехватить любое возможное сообщение, но это астрономическое число. сообщений, и злоумышленник не знает, какое из них является фактическим сообщением.
Я прав? Действительно ли эта схема связи абсолютно безопасна? И если это безопасно, у него есть собственное имя? Шифрование XOR хорошо известно, но я ищу название этого конкретного практического приложения, использующего большие ключи с обеих сторон? Я смиренно ожидаю, что это приложение было изобретено кем-то до меня. :-)
Примечание: если это абсолютно безопасно, то это удивительно, потому что с современными недорогими большими устройствами хранения данных безопасное общение будет намного дешевле, чем с дорогой квантовой криптографией, и это имеет эквивалентную безопасность!
РЕДАКТИРОВАТЬ:
Я думаю, что это будет более практичным в будущем, поскольку затраты на хранение уменьшатся.Это может решить безопасную связь навсегда.Сегодня у вас нет уверенности в том, что кто-то успешно атакует существующие шифры даже через год и делает их часто дорогие реализации небезопасными. Во многих случаях до того, как происходит общение, когда обе стороны встречаются лично, самое время генерировать ключи. Я думаю, что он идеально подходит для военного общения, например, между подводными лодками, которые могут иметь жесткие диски с большими ключами, а военный центр может иметь HD для каждой подводной лодки. Это также может быть практичным в повседневной жизни, например, для контроля вашего банковского счета, потому что, когда вы создаете свой счет, вы встречаетесь с банком и т. Д.