Математика и криптография : тайны шифров и логическое мышление | страница 47
Но начнём. Вспомни, пожалуйста, тему четвёртой недели, когда мы изучали новую математическую операцию XOR. Сейчас это тебе пригодится. Если требуется, перечитай соответствующую главу и выполни несколько упражнений, применяя операцию XOR к двоичным числам. А теперь продолжай чтение.
Представь, что тебе необходимо зашифровать какую-либо фразу. Пусть это будет простое слово «КАТАПУЛЬТА». В качестве ключа для применения операции XOR пусть используется последовательность символов «ВОАЫДЛАОВЬ». Что получится в результате? Правильно: последовательность «ЗНСЭФЧМУПЩ», которая и будет нашей шифрограммой.
Если криптоаналитик перехватит шифрограмму, у него окажется этот странный текст: «ЗНСЭФЧМУПЩ». Как подойти к расшифровке? Он может последовательно перебирать все возможные ключи, в какой-то момент наткнётся на ключ «АЕРЪГЯКЩШЫ» и при расшифровке получит слово «ИЗВЕРЖЕНИЕ». Дальше он встретит ключ «АКУСРИЛШЭЪ», которому при расшифровке будет соответствовать слово «ИДЕОГРАММА». И так далее.
Очевидно, что так криптоаналитик переберёт все возможные ключи и получит все возможные слова длиной в 10 букв (даже больше, он получит и обрывки фраз длиной в 10 букв). Но какое из них верное? Нет никакой возможности выбрать правильный вариант, поскольку ни один ключ не будет правильным словом — все ключи окажутся случайными наборами символов.
Это описание рассказывает о сути невзламываемой системе шифрования. Вот она вся как есть:
1. Для шифрования текста необходимо воспользоваться операцией XOR.
2. Ключ должен быть такой же длины, как и шифруемый открытый текст.
3. Ключ должен состоять из случайного набора символов.
4. Ни один ключ не должен использоваться более одного раза. Никогда! Ни при каких условиях!
Эти четыре простых правила дают абсолютную защиту.
Давай подробнее разберём, что происходит и почему необходимо неукоснительно соблюдать эти правила, чтобы шифр невозможно было взломать.
Правило первое на самом деле не такое уж абсолютное. Дело в том, что, как мы уже видели, операция XOR даёт очень простой и быстрый способ получения из двух букв новой. Но точно так же можно воспользоваться и любой другой таблицей подстановки — например, той, что приведена в описании второй недели, то есть шифром сдвига. Да и вообще можно составить любую таблицу многоалфавитной замены, где способ замены будет определяться буквой ключа. Главное, чтобы она была удобна и однозначна. Мне кажется удобной именно таблица для операции XOR.