Шифр Плейфера — это подстановочный шифр, который реализует замену биграмм.
Введение
При использовании многоалфавитной подстановки все появления символа могут обладать разной заменой. Процесс отношений между символами в исходном тексте и символами в зашифрованном тексте можно представить, как «один ко многим». К примеру, символ «a» может быть зашифрован как «D» в самом начале текста, но при этом «N» может стать его шифровкой в середине текста. Многоалфавитные шифры обладают одним существенным преимуществом, а именно, они способны скрыть частоту появления символа основного языка. То есть, нельзя применить статистическую частоту появления какого-либо символа, для того чтобы прочитать зашифрованный текст.
Для того чтобы сформировать многоалфавитный шифр, необходимо сделать так, чтобы все символы зашифрованного текста обладали зависимостью от соответствующих символов в исходном тексте и позиции символов исходного текста в сообщении. Это означает, что ключ обязан являться потоком подключей, в которых каждый подключ в определенной мере имеет зависимость от позиции символа исходного текста, используемого для выбора подключа шифрования.
Иными словами, необходимо создать ключевой поток k = (k1, k2, k3.….), в котором ki будет использоваться, для того чтобы выполнить шифрование i -того символа в исходном тексте и создание i -того символа в зашифрованном тексте.
Шифр Плейфера
Для того чтобы определить зависимость ключа от позиции, рассмотрим простой многоалфавитный шифр, именуемый «автоключевым». В данном шифре ключом является поток подключей, в котором каждый подключ применяется, для того чтобы выполнить шифрование соответствующего символа в исходном тексте. Первым подключом является заданное заранее значение, которое тайно согласовано между отправителем и получателем.
Вторым подключом является значение первого символа исходного текста (между нулем и двадцатью пятью). Третьим подключом является i -тое значение второго исходного текста. И так далее:
P = P1 P2 P3 ….
C = C1 C2 C3 ….
K = (k1, P1, P2, P3, …..)
Шифрование Ci = (Pi + ki) mod 26
Дешифрование Pi = (Ci – ki) mod 26
Наименование шифра «автоключевой» образовано из того факта, что подключи формируются в автоматическом режиме в зависимости от символов шифра исходного текста в ходе шифрования.
Ярким примером многоалфавитного шифра является Шифр Плейфера, который использовала британская армия в течение Первой мировой войны. Ключ засекречивания в данном шифре состоит из двадцати пяти символов алфавита, которые размещены в матрице, с размером пять на пять (символы I и J воспринимаются при шифровании как одинаковые). При помощи разных соглашений о местоположении символов в матрице можно сформировать множество разных ключей засекречивания. Пример одного из вероятных соглашений показан на рисунке ниже.
Рисунок 1. Секретный ключ. Автор24 — интернет-биржа студенческих работ
Прежде чем начать шифрование, следует разбить исходный текст на пары. А когда два символа пары окажутся одинаковыми, следует отделить их путем вставки фиктивного символа. После того как будут вставлены фиктивные символы, в случае, если количество символов в исходном тексте будет нечетным, следует в конце добавить один дополнительный фиктивный символ, который сделает количество символов четным.
В этом шифре используются следующие правила шифрования:
- Когда буквы, входящие в пару символов, располагаются в одной и той же строчке таблицы ключа засекречивания, то соответствующим зашифрованным символом для каждой буквы является следующий символ справа в той же самой строке. Или с возвратом к началу строки, когда символ исходного текста является последней буквой в строке.
- Когда буквы, входящие в пару символов, располагаются в одном и том же столбце таблицы ключа засекречивания, то соответствующим зашифрованным символом для каждой буквы является символ ниже этого в том же самом столбце. Или с возвратом к началу столбца, когда символ исходного текста является последней буквой в столбце.
- Когда буквы, входящие в пару символов, не располагаются в одной строчке или столбце таблицы засекречивания, то соответствующим зашифрованным символом для каждой буквы является символ, расположенный в его собственной строке, но в том же самом столбце, что и другой символ.
Шифр Плейфера обладает полным соответствием совокупности критериев для многоалфавитного шифра. А именно, ключом является поток подключей, в котором они формируются по два одновременно. В шифре Плейфера поток ключей и поток шифра выступают как то же самое. Это значит, что приведенные выше правила могут быть представлены в качестве правил, предназначенных для формирования потока ключей.
Согласно алгоритму кодирования, необходимо взять две буквы исходного текста и создать пару подключей, в соответствии с указанными правилами. Следует отметить, что поток ключей имеет зависимость от позиции буквы в исходном тексте. Причем зависимость от позиции обладает здесь различной интерпретацией, а именно, подключ для каждой буквы исходного текста может зависеть от последующего или предыдущего «соседа». Если рассматривать шифр Плейфера с этих позиций, то можно утверждать, что зашифрованный текст является, по существу, потоком ключей:
P = P1 P2 P3…..
C = C1 C2 C3…..
k = $[$(k1, k2), (k3, k4),….. $]$
Шифрование Ci = ki
Дешифрование Pi = ki
Рассмотрим конкретный пример. Необходимо зашифровать исходный текст «hello», используя ключи, приведенные выше. Если сгруппировать буквы по парам, то получится следующий набор пар:
«he, ll, o».
Согласно правилам, необходимо вставить «x» между двух l (эль), после чего получится:
«he, lx, lo».
Далее, используя поток ключей, получаем:
he -> EC lx -> QZ lo -> BX
В результате из исходного текста:
Hello.
Получается следующий зашифрованный текст:
ECQZBX.
Из этого примера ясно видно, что шифр Плейфера является фактически многоалфавитным шифром, то есть, два появления l (эль) зашифрованы как "Q" и "B".
Также следует отметить, что взлом шифра Плейфера будет очень трудной задачей, поскольку размер домена равен 25! (факториал 25), и, помимо этого, шифровка скрывает частоту отдельных символов.