В самом общем виде идеология блочного шифрования выглядит так: открытый текст разбивается на блоки различной длины, каждый блок шифруется по особому методу, полученные блоки криптограммы после некоторой перестановки «сшиваются» в единый массив.
На практике же все блоки открытого текста имеют одинаковую длину, все шифруются по одному и тому же способу и преобразуются в той же длины блоки криптограммы, которые последовательно выстраиваются в порядке соответствующих исходных блоков.
Исторически первым блочным шифром был шифр, разработанный английским физиком и криптографом Чарлзом Уитстоном (1802-1875) и представленный лордом Плейфером министру иностранных дел Великобритании Палмерстону в 1854 году. Английский алфавит (с %%j=i%%) обычным приемом парольного перемешивания вписывается в таблицу %%5×5%%.
p | a | l | m | e |
r | s | t | o | n |
b | c | d | f | g |
h | i | k | q | u |
v | w | x | y | z |
Открытый текст разбивается на блоки длины 2
. Если обе буквы блока стоят в одной строке (в одном столбце) таблицы, они заменяются их правыми (нижними) соседями. Если же буквы блока стоят в разных строчках и разных столбцах, то каждая из них заменяется на букву, стоящую в той же строке, но в столбце другой буквы блока. Примеры соответствий: cf→DG
, wz→XV
, oq→FY
, ez→NE
, su→NI
. Если в тексте рядом стоят две одинаковые буквы, между ними вставляется x
, так что lesson for miss Dolly
предстанет в виде lesxson for misxs Dolxly
.
Шифр Уитстона-Плейфера использовался в ходе Первой мировой войны британской дипломатией, а во Второй мировой войне – в соединениях германской армии на Западном фронте (и его читали союзники).
Французский криптограф Блез Виженер (1523-1596) опубликовал свой метод в «Трактате о шифрах» в 1585 году. С тех пор на протяжении трех столетий шифр Виженера считался нераскрываемым, пока с ним не справился австриец Фридрих Казиски (в 1863 году). При этом способе шифрования открытый текст разбивается на блоки некоторой длины %%n%%. Задается ключ – последовательность из %%n%% натуральных чисел: %%a_1, a_2,...,a_n%%. Затем в каждом блоке первая буква циклически сдвигается вправо по алфавиту на %%a_1%% позиций, вторая буква – на %%a_2%% позиций, ..., последняя – на %%a_n%% шагов.
Для лучшего запоминания, в качестве ключа обычно берут осмысленное слово, и алфавитные номера составляющих его букв используют для вычислений, связанных со сдвигами. Так, указанный в приведенном примере ключ имеет буквенную форму ш и ф р
(в русском алфавите ш
–двадцать пятая буква, и
– девятая, ф
– двадцать первая, р
– семнадцатая). Для дальнейшего нам понадобится знать номера всех букв русского алфавита:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
а | б | в | г | д | е | ж | з | и | й | к | л | м | н | о | п |
р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я |
и латинского:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
a | b | c | d | e | f | g | h | i | j | k | l | m |
o | p | q | r | s | t | u | v | w | x | y | z |
Из-за нехватки опытных шифровальщиков шифр Виженера с длиной блока, равной всего лишь 3, применялся в низовых звеньях русской армии в 1916 году, во время наступления Юго-Западного фронта против австро-венгерской армии – знаменитого брусиловского прорыва. Противник легко читал русские оперативные шифровки, что, в конце концов, и не позволило генералу Брусилову добиться стратегического успеха в блестяще задуманной операции.
Очень частный случай конструкции Виженера использовал римский полководец Юлий Цезарь: он каждую букву открытого текста циклически сдвигал на три позиции вправо. Знаменитая фраза «Пришел, увидел, победил», подводившая итог битвы при Зеле в августе 47 года до н.э., в шифрованном письме Цезаря выглядела как ZHQM ZMGM ZMFM
.
Подстановочные шифры (шифры замены) | Модульная арифметика. |