Гилберт Сэндфорд Вернам (3 апреля 1890 г. — 7 февраля 1960 г.) был выпускником Вустерского политехнического института 1914 г. и инженером AT&T Bell Labs , который в 1917 г. изобрел аддитивный полиалфавитный потоковый шифр , а позже стал одним из изобретателей автоматизированного одноразового шифрблокнота . Вернам предложил телетайпный шифр, в котором заранее подготовленный ключ , хранящийся на бумажной ленте , посимвольно объединяется с открытым текстом сообщения для получения шифротекста . Чтобы расшифровать шифротекст, тот же ключ снова посимвольно объединяется, получая открытый текст . Позже Вернам работал в Почтовой телеграфной компании и стал сотрудником Western Union, когда эта компания приобрела Postal в 1943 г. Его более поздняя работа была в основном связана с автоматическими системами коммутации для телеграфных сетей.
Комбинирующая функция Вернама, указанная в патенте США 1,310,719 , выданном 22 июля 1919 года, представляет собой операцию XOR , применяемую к отдельным импульсам или битам , используемым для кодирования символов в коде Бодо . Вернам не использовал термин «XOR» в патенте, но он реализовал эту операцию в релейной логике. В примере, приведенном Вернамом, открытый текст — это A , закодированный как « ++--- » в коде Бодо, а ключевой символ — это B , закодированный как « +--++ ». Результирующий шифртекст будет « -+-++ », который кодирует G. Объединение G с ключевым символом B на принимающей стороне дает « ++--- », который является исходным открытым текстом A. АНБ назвало этот патент «возможно, одним из самых важных в истории криптографии». [1]
Вскоре после этого Джозеф Моборн , в то время капитан Корпуса связи армии США , предложил, кроме того, чтобы ключ на бумажной ленте содержал случайную информацию. Две идеи, будучи объединены, реализуют автоматическую форму одноразового блокнота , хотя ни один из изобретателей тогда не использовал это название.
Клод Шеннон , также работавший в Bell Labs, доказал, что одноразовый шифрблокнот, правильно реализованный, не поддается взлому в своем исследовании времен Второй мировой войны , которое было опубликовано в октябре 1949 года. Он также доказал, что любая невзламываемая система должна иметь по сути те же характеристики, что и одноразовый шифрблокнот: ключ должен быть действительно случайным, такого же размера, как и открытый текст, никогда не использоваться повторно полностью или частично и храниться в секрете. [2]
В современной терминологии шифр Вернама — это симметричный потоковый шифр , в котором открытый текст объединяется со случайным или псевдослучайным потоком данных («keystream») той же длины для генерации шифротекста с использованием булевой функции «исключающее ИЛИ» (XOR) . Это обозначается символом ⊕ [3] и представлено следующей « таблицей истинности », где + означает «истина», а − означает «ложь».
Другие названия этой функции: «Не равно» (NEQ), сложение по модулю 2 (без «переноса») и вычитание по модулю 2 (без «заимствования»).
Шифр является взаимным в том смысле, что один и тот же ключевой поток используется как для шифрования открытого текста в зашифрованный текст, так и для расшифровки зашифрованного текста с целью получения исходного открытого текста:
и:
Если поток ключей действительно случаен и используется только один раз, это фактически одноразовый блокнот . Замена псевдослучайных данных, сгенерированных криптографически безопасным генератором псевдослучайных чисел, является распространенной и эффективной конструкцией для потокового шифра. RC4 является примером шифра Вернама, который широко используется в Интернете.
Однако, если для двух сообщений используется один и тот же поток ключей, известный криптоаналитикам как глубина , эффект потока ключей можно устранить, оставив два открытых текста, объединенных с помощью XOR. Результат эквивалентен шифру Running key , и два открытых текста можно разделить с помощью лингвистических криптоаналитических методов.
Ошибка оператора такого рода, как известно, позволила провести криптоанализ шифра Лоренца британцами в Блетчли-Парке во время Второй мировой войны . Они диагностировали, как генерировался ключевой поток, выяснили, как взломать шифр, и прочитали огромное количество сообщений высокого уровня, поступавших в немецкое высшее командование и от него, даже не увидев настоящую машину Лоренца. [4]