Реализация шифра Вернама или алгоритма одноразового блокнота
Алгоритм одноразового блокнота является усовершенствованием шифра Вернама, предложенного офицером армейской службы связи Джозефом Моборном. Это единственный доступный алгоритм, который является нерушимым (полностью безопасным). Это метод шифрования алфавитного простого текста. Это один из методов замены, который преобразует обычный текст в зашифрованный текст. В этом механизме мы присваиваем номер каждому символу обычного текста.
К одноразовому блокноту предъявляются два требования:
- Ключ должен быть сгенерирован случайным образом до тех пор, пока размер сообщения .
- Ключ должен использоваться для шифрования и дешифрования одного сообщения , после чего он отбрасывается .
Таким образом, для шифрования каждого нового сообщения требуется новый ключ той же длины, что и новое сообщение в одноразовом блокноте.
Зашифрованный текст, генерируемый одноразовым блокнотом, является случайным, поэтому он не имеет статистической связи с открытым текстом.
Назначение составляет:
А | Б | С | Д | Е | Ф | грамм | ЧАС | я | Дж |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
К | л | М | Н | О | п | Вопрос | р | С | Т |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
U | В | Вт | Икс | Д | Z | ||||
20 | 21 | 22 | 23 | 24 | 25 |
Отношение между ключом и открытым текстом: в этом алгоритме длина ключа должна быть равна длине открытого текста.
Примеры:
Input: Message = HELLO, Key = MONEY Output: Cipher – TSYPM, Message – HELLO Explanation: Part 1: Plain text to Ciphertext Plain text — H E L L O → 7 4 11 11 14 Key — M O N E Y → 12 14 13 4 24 Plain text + key → 19 18 24 15 38 → 19 18 24 15 12 (= 38 – 26) Cipher Text → T S Y P M Part 2: Ciphertext to Message Cipher Text — T S Y P M → 19 18 24 15 12 Key — M O N E Y→ 12 14 13 4 24 Cipher text – key → 7 4 11 11 -12 → 7 4 11 11 14 Message → H E L L O Input: Message = SAVE, Key = LIFE Output: Cipher – DIAI Message – SAVE
Безопасность одноразового блокнота
- Если каким-либо образом криптоаналитик находит эти два ключа, с помощью которых создаются два открытых текста, но если ключ был создан случайным образом, то криптоаналитик не может определить, какой ключ более вероятен, чем другой. Фактически, для любого открытого текста размером с зашифрованный текст существует ключ, который создает этот открытый текст.
- Таким образом, если криптоаналитик попытается атаковать методом грубой силы (попробовать использовать все возможные ключи), он в конечном итоге получит множество законных открытых текстов, не имея возможности узнать, какой открытый текст является законным. Поэтому код нельзя взломать.
- Безопасность одноразового блокнота полностью зависит от случайности ключа. Если символы ключа действительно случайны, то и символы зашифрованного текста будут действительно случайными. Таким образом, не существует шаблонов или закономерностей, которые криптоаналитик может использовать для атаки на зашифрованный текст.
Преимущества
- Одноразовый блокнот — единственный алгоритм, который действительно нельзя взломать и который можно использовать для каналов с низкой пропускной способностью, требующих очень высокой безопасности (например, для использования в военных целях).
Недостатки
- Существует практическая проблема создания большого количества случайных ключей. Любая интенсивно используемая система может регулярно требовать миллионы случайных символов.
- Для отправки каждого сообщения отправителю и получателю необходим ключ одинаковой длины. Таким образом, существует гигантская проблема распределения ключей.
Ниже приведена реализация шифра Вернама: