Шифр подстановки

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Шифр подстано́вки – это метод шифрования, в котором элементы исходного открытого текста заменяются зашифрованным текстом в соответствии с некоторым правилом. Элементами текста могут быть отдельные символы (самый распространённый случай), пары букв, тройки букв, комбинирование этих случаев и так далее. В классической криптографии различают четыре типа шифра подстановки[1]:

В качестве альтернативы шифрам подстановки можно рассматривать перестановочные шифры. В них, элементы текста переставляются в ином от исходного порядке, а сами элементы остаются неизменными. Напротив, в шифрах подстановки, элементы текста не меняют свою последовательность, а изменяются сами.

Шифры простой замены[править | править вики-текст]

В шифрах простой замены замена производится только над одним-единственным символом. Для наглядной демонстрации шифра простой замены достаточно выписать под заданным алфавитом тот же алфавит, но в другом порядке или, например, со смещением. Записанный таким образом алфавит называют алфавитом замены.

Примеры шифров простой замены[править | править вики-текст]

Атбаш[править | править вики-текст]

Шифр простой замены, использованный для еврейского алфавита и получивший оттуда свое название. Шифрование происходит заменой первой буквы алфавита на последнюю, второй на предпоследнюю (алеф (первая буква) заменяется на тав (последнюю), бет (вторая) заменяется на шин (предпоследняя); из этих сочетаний шифр и получил свое название).[2] Шифр Атбаш для английского алфавита:

Исходный алфавит: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Алфавит замены: Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

Шифр Цезаря[править | править вики-текст]

Шифр ROT13, частный случай шифра Цезаря.

Шифр Цезаря — один из древнейших шифров. При шифровании каждая буква заменяется другой, отстоящей от ней в алфавите на фиксированное число позиций. Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки. Естественным развитием шифра Цезаря стал шифр Виженера. Шифрование с использованием ключа k = 4:

Исходный алфавит: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Алфавит замены: E F G H I J K L M N O P Q R S T U V W X Y Z A B C D

Современным примером шифра Цезаря является ROT13. Он сдвигает каждый символ английского алфавита на 13 позиций. Используется в интернет-форумах, как средство для сокрытия спойлеров, основных мыслей, решений загадок и оскорбительных материалов от случайного взгляда.[3]

Шифр с использованием кодового слова[править | править вики-текст]

Шифр с использованием кодового слова является одним из самых простых как в реализации, так и в расшифровывании. Идея заключается в том, что выбирается кодовое слово, которое пишется впереди, затем выписываются остальные буквы алфавита в своем порядке. Шифр с использованием кодового слова WORD.

Исходный алфавит: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Алфавит замены: W O R D A B C E F G H I J K L M N P Q S T U V X Y Z

Как мы видим, при использовании короткого кодового слова мы получаем очень и очень простую замену. Также мы не можем использовать в качестве кодового слова слова с повторяющимися буквами, так как это приведет к неоднозначности расшифровки, то есть двум различным буквам исходного алфавита будет соответствовать одна и та же буква шифрованного текста.[4]

54550617 82484514 Привет

Метод записи зашифрованных текстов[править | править вики-текст]

По традиции, зашифрованный текст пишут блоками (другое название “группы”) по 5 символов, не учитывая пунктуацию и пробелы. Это помогает избежать ошибок при передаче шифрованного сообщения и позволяет скрыть границы слов в исходном тексте.[5] Блок содержит 5 символов, так как раньше их было удобно передавать по телеграфу.

Безопасность шифров простой замены[править | править вики-текст]

Главный недостаток этого метода шифрования — это то, что последние буквы алфавита (которые имеют низкие коэффициенты при частотном анализе) имеют тенденцию оставаться в конце. Более защищенный способ построить алфавит замены состоит в том, чтобы выполнить колоночное перемещение (перемещение столбцов) в алфавите, используя ключевое слово, но это нечасто делается. Несмотря на то, что число возможных ключей является очень большим (26! = 2^88.4), этот вид шифра может быть легко взломанным. При условии, что сообщение имеет достаточную длину (см. ниже), криптоаналитик может предположить значения некоторых самых распространенных букв исходя из анализа частотного распределения символов в зашифрованном тексте. Это позволяет формировать отдельные слова, которые могут быть предварительно использованы, для последующего получения более полного решения (см. частотный анализ). Согласно расстоянию уникальности английского языка 27.6 букв от зашифрованного текста должно быть достаточно, чтобы взломать шифр простой замены. На практике обычно достаточно около 50 символов для взлома, хотя некоторые шифротексты могут быть взломаны и с меньшим количеством символов, если найдены какие-либо нестандартные структуры. Но при равномерном распределении символов в тексте могут потребоваться куда более длинные шифротексты для взлома.

  • расстояние уникальности — термин, используемый в криптографии, обращающейся к длине оригинального шифротекста, которого должно быть достаточно для взлома шифра.[6]

Омофоническая замена[править | править вики-текст]

Ранние попытки увеличить сложность частотного анализа шифротекстов состояла в том, чтобы замаскировать реальные частоты появления символов обычного текста с помощью омофонии. В этих шифрах буквы исходного алфавита соответствуют более чем одному символу из алфавита замены. Обычно символам исходного текста с наивысшей частотой дают большее количество эквивалентов, чем более редким символам. Таким образом, распределение частоты становится более равномерным, сильно затрудняя частотный анализ.[7] С тех пор, как для алфавита замены стало требоваться больше чем 26 символов, появилась необходимость в расширенных алфавитах. Одним из самых простых решений является замена алфавита на цифры. Другой метод состоит из простых изменений существующего алфавита: прописные буквы, строчные буквы, перевернутые символы и т. д. Более художественными, хотя не обязательно более надежными, будут омофонические шифры, которые используют полностью изобретенные (вымышленные) алфавиты (например, «Золотой жук» Э. По, или «Рукопись Войнича»).

Примеры омофонических шифров[править | править вики-текст]

Номенклатор[править | править вики-текст]

Шифр, изданный средневековым чиновником, представляющий собой маленькую книгу с большими омофоническими таблицами замены. Первоначально шифр был ограничен именами важных людей того времени, отсюда и последовало название шифра; в более поздних изданиях этот шифр дополнился большим количеством распространенных слов и географических названий. На основе этого «номенклатора» был составлен Великий Шифр Россиньеля, использовавшийся королем Франции Людовиком XIV. И действительно, после того как этот шифр перестал использоваться, французские архивы были закрытыми ещё в течение нескольких сотен лет. «Номенклаторы» были стандартом для дипломатической корреспонденции, шпионских сообщений и являлись основным средством антиполитической конспирации с начала пятнадцатого столетия до конца восемнадцатого столетия. Хотя правительственные криптоаналитики систематически взламывали «номенклаторы» к середине шестнадцатого столетия. Обычным выходом из этой ситуации было увеличение объёмов таблиц. Но к концу восемнадцатого столетия, когда система начала выходить из употребления, некоторые «номенклаторы» имели до 50 000 символов. Однако не все «номенклаторы» были сломаны.

Великий Шифр Россиньоля[править | править вики-текст]

Антуан Россиньоль и его сын Бонавентур Россиньоль изобрели шифр, который использовал 587 различных чисел.[8] Шифр был настолько силен, что в течение многих столетий никто не мог взломать его, пока это не сделал Командир Птинье Базарье в 1893 году. Он понял, что каждое число замещало французский слог, а не одну букву, как до этого считали. Птинье Базарье предположил, что специфическая последовательность повторных чисел 124-22-125-46-345 кодирует слово «les ennemis» (враги), и, отталкиваясь от этой информации, смог распутать весь шифр.

Книжный шифр[править | править вики-текст]

Книжный шифр — шифр, в котором ключом является книга или небольшая часть текста. Основным требованием будет, чтобы оба корреспондента не только имели одну и ту же книгу, но и те же издание и выпуск. Традиционно книжные шифры работают на основе замены слов в исходном тексте на местоположение этих же слов в книге. Это будет работать до тех пор, пока не встретится слово, которого не будет в книге, тогда сообщение не может быть закодировано.[9] Альтернативный подход, который обходит эту проблему, состоит в том, чтобы заменять отдельные символы, а не слова. Однако такой способ имеет побочный эффект: зашифрованный текст становится очень большого размера (обычно используется от 4 до 6 цифр для шифрования каждого символа или слога).

Полиалфавитные шифры[править | править вики-текст]

Шифровальная машина Энигма

Дальнейшим продолжением шифров простой замены является многоалфавитные шифры. Абу Аль-Кинди в своих работах показал, что обычные моноалфавитные шифры довольно-таки просто поддаются частотному криптоанализу и первым предложил использовать многоалфавитные шифры. В Европе такие шифры были впервые описаны в 1467 году итальянским архитектором Леон Баттиста Альберти. В XVI веке немецкий аббат Иоганн Тритемий в своей книге “Стенография” представил схему полиалфавитного шифрования в виде таблицы. Более сложный вариант с использованием смешанных алфавитов был описан в 1563 году Джамбаттиста делла Порта в его книге “De Furtivis Literarum Notis” (лат. “Про скрытую значимость отдельных букв”). Последним словом в развитии полиалфавитных шифров можно считать роторные машины, примером которой можно считать немецкую машину Enigma[10], разработанная в 1917 г. Суть полиалфавитных шифров заключена в многократном применении различных шифров простой замены к определенному числу букв шифруемого текста. То есть к каждой букве по отдельности применяется один из шифров простой замены.

Примеры полиалфавитных шифров[править | править вики-текст]

Шифр Виженера[править | править вики-текст]

Квадрат Виженера, или таблица Виженера

Шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига. Для зашифровывания может использоваться таблица алфавитов, называемая tabula recta или квадрат (таблица) Виженера. Применительно к латинскому алфавиту таблица Виженера составляется из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций. Таким образом, в таблице получается 26 различных шифров Цезаря. На разных этапах кодировки шифр Виженера использует различные алфавиты из этой таблицы. На каждом этапе шифрования используются различные алфавиты, выбираемые в зависимости от символа ключевого слова.[11] Например, если ключевое слово “CAT”, то первая буква открытого текста шифруется с использованием алфавита “C’, вторая “A”, третья “T”, четвертая снова “C” и так далее.

Одноразовый блокнот[править | править вики-текст]

Этот тип шифра подстановки довольно специфический. Он был изобретен в конце первой мировой войны Гилбертом Вернамом. Клод Шеннон математически доказал его абсолютную криптографическую стойкость в своей работе 1945 года. Для создания шифротекста открытый текст объединяется операцией «исключающее ИЛИ» с ключом (называемым одноразовым блокнотом или шифроблокнотом). При этом использование одноразового блокнота, в большинстве случаев, нецелесообразно, так как требуется, чтобы ключ был такого же размера, что и открытый текст. Также требуется, чтобы ключ был абсолютно случайным, применялся только один раз и хранился в секрете от всех, кроме получателя и отправителя. В связи с этим коммерческое применение шифра Вернама не так распространено в отличие от схем с открытым ключом и он используется, в основном, для передачи сообщений особой важности государственными структурами.[12]

Полиграммные шифры[править | править вики-текст]

В полиграммных шифрах подстановки буквы открытого текста заменяются не по одной, а группами. Первое преимущество такого способа заключается в том, что распределение частот групп букв значительно более равномерное чем отдельных символов. Во-вторых для продуктивного частотного анализа требуется больший размер зашифрованного текста, так число различных групп букв значительно больше, чем просто алфавит.

Примеры полиграммных шифров[править | править вики-текст]

Шифр Плейфера[править | править вики-текст]

Шифр Плейфера — ручная симметричная техника шифрования, в которой впервые использована замена биграмм. Изобретена в 1854 году Чарльзом Уитстоном, но названа именем Лорда Лайона Плейфера, который внедрил данный шифр в государственные службы Великобритании. Шифр предусматривает шифрование пар символов (биграмм) вместо одиночных символов, как в шифре подстановки и в более сложных системах шифрования Виженера.[13][14] Шифр Плейфера использует матрицу 5х5 (для латинского алфавита, для кириллического алфавита необходимо увеличить размер матрицы до 4х8), ячейки которой заполнены смешанным алфавитом (в английских текстах обычно опускается символ «Q», чтобы уменьшить алфавит, в других версиях «I» и «J» объединяются в одну ячейку).. Замена затем осуществляется путем представления биграмм, как два угла прямоугольника. Два другие угла в диаграмме используются для зашифровки (более подробно см. основную статью). Шифр Плейфера использовался в тактических целях британскими вооруженными силами во Второй Англо-Бурской войне и в Первой мировой войне, а также австралийцами и немцами во время Второй мировой войны. Причиной использования шифра Плейфера было то, что он достаточно быстр в применении и не требует никакого специального оборудования.

Шифр Хилла[править | править вики-текст]

Шифр Хилла, изобретенный в 1929 году Лестером С. Хиллом, является полиграммным шифром, который может использовать большие группы с помощью линейной алгебры. Каждой букве сперва сопоставляется число. Для латинского алфавита часто используется простейшая схема: A = 0, B =1, ..., Z=25. Блок из n букв рассматривается как n-мерный вектор и умножается на n × n матрицу по модулю 26. Компоненты матрицы являются ключом, и должны быть случайными при условии, что матрица обратима в (для обеспечения расшифровки возможно). Матрица должна быть обратима в \mathbb{Z}_{26}^n, чтобы была возможна операция расшифрования.[15] Шифр Хилла уязвим к атаке на основе открытых текстов, потому что в нем используются линейные операции. Поэтому, для увеличения криптостойкости, в него должны быть добавлены какие-либо нелинейные операции. Комбинирование линейных операций, как в шифре Хилла, и нелинейных шагов привело к созданию подстановочно-перестановочной сети (например, сеть Фейстеля). Поэтому с определенной точки зрения можно считать современные блочные шифры, как вид полиграммных шифров.[16]

Криптоанализ[править | править вики-текст]

Шифр простой замены легко вскрывается с помощью частотного анализа, так как не меняет частоты использования символов в сообщении.

Однозвучные шифры сложнее для вскрытия, хотя они и не скрывают всех статистических свойств текста.

Многоалфавитные шифры шифруют каждый символ с помощью некоторого одноалфавитного шифра. Стойкость такого шифра сильно зависит от количества используемых шифров простой замены. Но при использовании компьютера криптоаналитик не испытает трудностей при вскрытии.

Примечания[править | править вики-текст]

Литература[править | править вики-текст]