Шифры замены
Шифр Цезаря(1 в. до н.э.), по свидетельству летописцев применявшийся в переписке с подотчетными ему правителями покоренных земель и в военных походах, состоял иззаменыодних буки на соответствующие им другие во всем тексте. Закон замены был очень прост: при шифровании сообщения вместо пятой буквы латинского алфавита ставилась вторая, вместо четвертой — первая, вместо третьей — двадцать шестая и т. д. При дешифровании, естественно, сдвиг уже нужно было делать в прямом направлении: вместо первой буквы брать четвертую и т. д.
Под алфавитом открытого текста пишется тот же алфавит со сдвигом на три позиции по циклу. При шифровании буквы открытого текста у верхнего алфавита заменялись буквами нижнего алфавита.
А Б В Г Д Е Ж … Э Ю Я
Г Д Е Ж … Э Ю Я А Б В
Конечно же, Юлий Цезарь не был автором этой идеи, а почерпнул ее из более ранних источников. Однако с его легкой руки шифр побуквенной замены прижился в древнем Риме, а с различными модификациями спустя годы и века распространился на всю Европу, контролируемую тогда римлянами. В современной терминологии шифр Цезаря и его модификации, отличающиеся только законом выбора соответствий между буквами открытого и секретного текстов, относятся к одноалфавитным подстановкам или алфавитным заменам. Пожалуй, ни один из шифров за историю человечества не имел столько вариантов, областей применения и связанных с ним судеб, как этот. Его увековечило произведение, вошедшее в классику литературного жанра, — “Пляшущие человечки” Артура Конан Дойла.
Необходимо отметить, что и два слабых места этого шифра, использованные героями этих книг и известные теперь, пожалуй, каждому школьнику были обнаружены довольно давно. Этот момент, к сожалению, скрыт глубоко в истории, несомненно, является зарождением криптоанализа - науки, имеющей противоположные цели с криптографией и занявшей соответствующее место среди других в современном мире.
Первой уязвимостью одноалфавитных замен, замеченной нашими предками, была неизменность частот появления определенных букв в среднестатистическом тексте, т. е., если буква “О” является бесспорным лидером по частоте появления в русском языке, то с очень большой вероятностью буква, появляющаяся в зашифрованном тексте чаще всего, — скажем “Ф” — заменяет в нем “О”, далее аналогично по убыванию частот. Зависимость частот появления распространенных букв можно довольно отчетливо проследить уже, скажем, в 100—буквенном послании. Редкие буквы обычно отслеживают подобным способом — их просто подбирают по смыслу в тех словах, где большая часть распространенных букв уже раскрыта. Данный способ получил название метод частотного анализа, позднее он применялся по той же самой схеме для пар рядом стоящих букв — биграмм, и даже для буквенных троек — триграмм. Конечно, в этом случае для анализа требовался больший объем шифрованного текста, однако сам метод зачастую оказывался намного быстрее и эффективнее.
Вторая уязвимость схем, подобных шифру Цезаря, связана с короткими часто встречающимися словами — предлогами, союзами и местоимениями. Их роль в тексте часто довольно важна, чтобы допускать их пропуск, а вот человеку пытающемуся разгадать шифр, они дают очень многое. Например, не каждая буква алфавита может встречаться в тексте в полном одиночестве. А чего стоит специфичный русский союз “или”! К слову сказать, очень простое решение этой проблемы было известно уже грекам и римлянам — в шифрованом сообщении полностью удалялись пробелы, а иногда получившаяся строка еще и разбивалась на «неправильные» слова случайным образом. Но еще много веков спустя подобные шифры ломались из-за того, что шифровальщики- самоучки не учитывали специфику языка исходного сообщения.
Значительной модификацией одноалфавитной замены является шифр, именуемый квадратом Полибияили тюремной азбукой. В нем определенные символы алфавита заменялись уже парой чисел согласно какому-либо простому правилу. Так, исходный квадрат Полибия имел, по всей видимости, следующий вид, представленный на рис. 1.
Рис.1. Квадрат Полибия
Вместо буквы в письме записывалась пара чисел: номер строки и номер столбца ячейки, в котором она располагалась. Также как и у шифра Цезаря у данной схемы не счесть модификаций. Всвязис тем, что в латинском алфавите 26 букв (а в современном русском — 33), и оба эти числа очень «неудачно” раскладываются на сомножители, модификации либо выбрасывали редко встречающиеся буквы, либо добавляли знаки препинания и пустые элементы, добиваясь прямоугольников и квадратов: 5х5, 5х6, 4х7, 6х6, 5х7
Пример,
|
1 |
2 |
3 |
4 |
5 |
1 |
A |
B |
C |
D |
E |
2 |
F |
G |
H |
J |
K |
3 |
L |
M |
N |
O |
P |
4 |
Q |
R |
S |
T |
U |
5 |
V |
W |
X |
Y |
Z |
При шифровании буквы открытого текста заменяются парой чисел: номер столбца и номер строки соответствующей буквы в таблице
Открытый текст: |
R |
E |
A |
D |
Y |
Шифротекст: |
24 |
51 |
11 |
41 |
45 |
Подобное представление двумя небольшими числами было очень удобно для передачи на большое расстояние визуально (костры, факелы, различные сигнальные флаги, солнечные зайчики) либо звуками (выстрелы, громкие удары, перестукивания).
Примерно в одно время с Кардано французкий дипломат Блез де Виженер предлогает модификацию шифра замены, получившей название таблица Виженера. Для шифрования по этой схеме необходима таблица из 26 латинских алфавитов, в каждом из которых по какому-либо (не обязательно одинаковому) закону изменен порядок букв, и секретное слово — пароль, известный только отправителю и получателю.
В XVIвеке н.э. французский дипломат Вижинер предложил оригинальныйшифр сложной замены, получивший впоследствии названиесистемы Виженера
Система Виженера |
| |||||||||||||||||||||||||||||||||||||||||||||||||||
Шифруемый текст |
З |
А |
Щ |
И |
Т |
А |
И |
Н |
Ф |
О |
Р |
М |
А |
Ц |
И |
И |
| |||||||||||||||||||||||||||||||||||
Ключ |
М |
О |
Р |
Е |
М |
О |
Р |
Е |
М |
О |
Р |
Е |
М |
О |
Р |
Е |
| |||||||||||||||||||||||||||||||||||
Зашифрованный текст |
У |
О |
И |
О |
Э |
О |
Ш |
Т |
Я |
Ы |
Я |
С |
М |
Г |
Ш |
О |
| |||||||||||||||||||||||||||||||||||
|
А
|
Б |
В |
Г |
Д |
Е |
Ж |
З |
И |
К |
Л |
М |
Н
|
О |
П |
Р |
С |
Т
|
У |
Ф |
Х
|
Ц
|
Ч
|
Ш
|
Щ
|
Ъ
|
Ы
|
Ь
|
Э
|
Ю
|
Я | |||||||||||||||||||||
М |
М |
Н |
О |
П |
Р |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
Ш |
Щ |
Ъ |
Ы |
Ь |
Э |
Ю |
Я |
А |
Б |
В |
Г |
Д |
Е |
Ж |
З |
И |
К |
Л | |||||||||||||||||||||
О |
О |
П |
Р |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
Ш |
Щ |
Ъ |
Ы |
Ь |
Э |
Ю |
Я |
А |
Б |
В |
Г |
Д |
Е |
Ж |
З |
И |
К |
Л |
М |
Н | |||||||||||||||||||||
Р |
Р |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
Ш |
Щ |
Ъ |
Ы |
Ь |
Э |
Ю |
Я |
А |
Б |
В |
Г |
Д |
Е |
Ж |
З |
И |
К |
Л |
М |
Н |
О |
П | |||||||||||||||||||||
Е |
Е |
Ж |
З |
И |
К |
Л |
М |
Н |
О |
П |
Р |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
Ш |
Щ |
Ъ |
Ы |
Ь |
Э |
Ю |
Я |
А |
Б |
В |
Г |
Д | |||||||||||||||||||||
Алгоритм расшифрования |
| |||||||||||||||||||||||||||||||||||||||||||||||||||
Ключ |
МОРЕ |
МОРЕ |
МОРЕ |
МОРЕ |
| |||||||||||||||||||||||||||||||||||||||||||||||
Шифр |
УОИО |
ЭОШТ |
ЯЫЯС |
МГШО |
| |||||||||||||||||||||||||||||||||||||||||||||||
Расшифрованный текст |
ЗАЩИ |
ТАИН |
ФОРМ |
АЦИИ |
|
АЛГОРИТМ ШИФРОВАНИЯ:
1. Под каждой буквой открытого текста записываются буквы ключи, повторяющие ключ требуемое число раз (чтобы покрыть все буквы текста).
2. Шифруемый текст по подматрице МОРЕ заменяется буквами, расположенными на пересечении линий, соединяющих буквы первой строки и буквы ключа, находящейся под ней.
Алгоритм расшифрования | ||||
Ключ |
МОРЕ |
МОРЕ |
МОРЕ |
МОРЕ |
Шифр |
УОИО |
ЭОШТ |
ЯЫЯС |
МГШО |
Расшифрованный текст |
ЗАЩИ |
ТАИН |
ФОРМ |
АЦИИ |
В строках М, О, Р, Е отыскиваются буквы шифрованного текста и заменяются буквами первой строки. Это шифр сложной заменыилимногоалфавитный шифр замены.
Пример,
|
АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_ |
А |
АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_ |
Б |
_АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ |
В |
Я_АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮ |
Г |
ЮЯ_АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭ |
. |
………… |
Я |
ВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_АБ |
_ |
БВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_А |
Каждая строка в этой таблице соответствует одному шифру замены аналогично шифру Цезаря для алфавита, дополненного пробелом. При шифровании сообщения его выписывают в строку, а под ним ключ. Если ключ оказался короче сообщения, то его циклически повторяют. Шифротекст получают, находя символ в колонке таблицы по букве текста и строке, соответствующей букве ключа. Например, используя ключ АГАВА, из сообщения ПРИЕЗЖАЮ ШЕСТОГО получаем следующую шифровку:
-
Сообщение
ПРИЕЗЖАЮ_ШЕСТОГО
Ключ
АГАВААГАВААГАВАА
Шифровка
ПНИГЗЖЮЮЮАЕОТМГО
В компьютере такая операция соответствует сложению кодов ASCII символов сообщения и ключа по модулю 256
Для проведения настолько же успешного подбора букв необходим более чем в Lраз больший объем шифрованного текста (гдеL— длина пароля). Это вызвано тем, что таблицы частот вычисляются отдельно для каждой изLгрупп букв, а кроме того, и сама процедура подбора несколько усложняется.
Кроме непосредственного увеличения стойкости шифр Виженера привнес в криптографию две качественно новых идеи. Во-первых, процесс шифрования стал зависеть в первую очередь от небольшого неизвестного третьей стороне слова — пароля. Конечно, сокрытие от злоумышленника всей таблицы значительно усложняет процедуру взлома шифра, но теперь случайное ее раскрытие не несет такого критического для всей системы значения, как, например, в шифре Цезаря.
Во-вторых, таблица, использованная Виженером, несет по своей сути первые намеки на идею цифрового шифрования. При том, если все буквы латинского алфавита пронумеровать по порядку от 0 до 25, то процедура шифрования по такой таблице превратится в обычную операцию сложения, Например, буква исходного текста Б (код 1) + буква пароля В (код 2) = код3- буква Г. При дешифровании, наоборот, из кода каждой зашифрованной буквы вычитается код буквы пароля. Если при сложении получается число, большее 25, то из него вычитается 26, если при вычитании получается отрицательное число — к нему прибавляется 26. Подобная схема сложения/вычитания называется в математике сложением по модулю — в дана случае сложением по модулю 26.
Дальнейшей модификацией данного способа, применяемой на практике, пожалуй, до наших дней стало шифрование по книге. В этом методе отправитель и получатель сообщения договариваются об одинаковой книге одного и то же издания. При шифровании отправитель выбирает в ней произвольное место и выписывает вместо повторяющегося пароля под исходным сообщением во всю его длину текст из книги, начиная с этого места. Само кодирование ведется по той же самой схеме, что и в схеме Виженера. Где-либо в письме или по другому каналу получателю передается номер страницы и слова в книге, с которого началось шифрование — без этой информации декодирование будет довольно проблематичным даже зная все о самом издании.
ШИФРЫ ПЕРЕСТАНОВКИ
Одним из ранних вариантов шифра перестановкибыл разработан стандартами в 475 году до нашей эры. Он использовал устройство в виде длинной узкой ленты, которая накручивалась на цилиндр и на которой сообщение писалось поперек. Лента затем разматывалась и поставлялась получателю, который имел точно такой же цилиндр. Теоретически возможно прочитать ленту без цилиндра, так как буквы все-таки сохраняют порядок следования. Однако на практике данный метод остается только возможным, так как необходимо перепробовать большое количество различных размеров цилиндров прежде, чем сообщение начинает вырисовываться.
Вы можете создать машинную версию такого шифра, поместив исходное текстовое сообщение в матрицу одним способом и выведя его другим способом. Для того чтобы сделать это, для хранения кодируемого сообщения используется одновременная строка, но сообщение записывается в дисковый файл в виде матрицы. В нашем варианте исходный текст, представляющий собой строку длиной 100 байт, записывается на диск, как матрица 5х4. Однако вы могли бы использовать матрицу любой другой размерности. Так как сообщение помещается в матрицу фиксированного размера, то существует вероятность того, что не все элементы матрицы будут использованы. Это делает необходимым инициализацию матрицы перед помещением в нее исходного текста. На практике лучше инициализировать матрицу произвольными символами, однако, для простоты используется символ "#".
Если вы поместите сообщение
meet me at sunset
в матрицу, она будет выглядеть следующим образом
-
m
e
e
t
m
e
a
t
s
u
n
s
e
t
#
|#
#
Если вы затем осуществите запись матрицы по столбцам, то сообщение будет выглядеть следующим образом:
mm e...eest...e u...tan... ts
где точки обозначают соответствующее количество символов "#". Для
декодирования сообщения заполняются столбцы матрицы. Затем матрица может быть отображена в нормальном порядке.
Несколько большей стойкостью к раскрытию обладает метод одиночной перестановки по ключу. Он отличается от предыдущего тем, что столбцы таблицы переставляются по ключевому слову, фразе или набору чисел длиной в строку таблицы. Используя в качестве ключа слово ЛУНАТИК, получим следующую таблицу
-
Л
У
Н
А
Т
И
К
А
И
К
Л
Н
Т
У
4
7
5
1
6
2
3
1
2
3
4
5
6
7
Н
О
Н
С
Б
Н
Я
С
Н
Я
Н
Н
Б
О
Е
Е
О
Я
О
Е
Т
Я
Е
Т
Е
О
О
Е
Я
С
В
Е
Л
П
Н
Е
П
Н
Я
В
Л
С
С
Т
И
Щ
Е
О
Ы
Щ
О
Ы
С
И
Е
Т
Н
А
Т
Е
Е
Н
М
Е
Н
М
Н
Т
Е
А
До перестановки После перестановки
В верхней строке левой таблицы записан ключ, а номера под буквами ключа определены в соответствии с естественным порядком соответствующих букв ключа в алфавите. Если в ключе встретились бы одинаковые буквы, они бы нумеровались слева направо. Получается шифровка: СНЯНН БОЯЕТ ЕООЕЕ ПНЯВЛ СЩОЫС ИЕТЕН МНТЕА. Для обеспечения дополнительной скрытности можно повторно шифровать сообщение, которое уже было зашифровано. Для этого размер второй таблицы подбирают так, чтобы длины ее строк и столбцов отличались от длин строк и столбцов первой таблицы. Лучше всего, если они будут взаимно простыми.
Кроме алгоритмов одиночных перестановок применяются алгоритмы двойных перестановок. Сначала в таблицу записывается текст сообщения, а потом поочередно переставляются столбцы, а затем строки. При расшифровке порядок перестановок был обратный. Пример данного метода шифрования показан в следующих таблицах:
|
2 |
4 |
1 |
3 |
|
|
1 |
2 |
3 |
4 |
|
|
1 |
2 |
3 |
4 |
4 |
П |
Р |
И |
Е |
|
4 |
И |
П |
Е |
Р |
|
1 |
А |
З |
Ю |
Ж |
1 |
З |
Ж |
А |
Ю |
|
1 |
А |
3 |
Ю |
Ж |
|
2 |
Е |
_ |
С |
Ш |
2 |
_ |
Ш |
Е |
С |
|
2 |
Е. |
_ |
С |
Ш |
|
3 |
Г |
Т |
О |
О |
3 |
Т |
О |
Г |
О |
|
3 |
Г |
Т |
О |
О |
|
4 |
И |
П |
Е |
Р |
Двойная перестановка столбцов и строк
В результате перестановки получена шифровка АЗЮЖЕ_СШГТООИПЕР. Ключом к шифру служат номера столбцов 2413 и номера строк 4123 исходной таблицы.
Число вариантов двойной перестановки достаточно быстро возрастает с увеличением размера таблицы: для таблицы 3 х 3 их 36, для 4 х 4 их 576, а для 5*5 их 14400.
В средние века для шифрования применялись и магические квадраты. Магическими квадратами называются квадратные таблицы с вписанными в их клетки последовательными натуральными числами, начиная с единицы, которые дают в сумме по каждому столбцу, каждой строке и каждой диагонали одно и то же число. Для шифрования необходимо вписать исходный текст по приведенной в квадрате нумерации и затем переписать содержимое таблицы по строкам. В результате получается шифротекст, сформированный благодаря перестановке букв исходного сообщения.
16 |
3 |
2 |
13 |
|
|
О |
И |
Р |
Т |
5 |
10 |
11 |
8 |
|
|
З |
Ш |
Е |
Ю |
9 |
6 |
7 |
12 |
|
|
_ |
Ж |
А |
С |
4 |
15 |
14 |
1 |
|
|
Е |
Г |
О |
П |
П |
Р |
И |
Е |
З |
Ж |
А |
Ю |
_ |
Ш |
Е |
С |
Т |
О |
Г |
О |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
Число магических квадратов очень резко возрастает с увеличением размера его сторон: для таблицы 3*3 таких квадратов -1; для таблицы 4*4 - 880; а для таблицы 5*5-250000
После значительного затишья, возможно, связанного с отсутствием большого числа письменных источников того времени, история криптографии, буквально «взорвалась» в средние века. В ХVI веке Джероламо Кардана, итальянский математик, врач и философ, изобрел совершенно новый тип шифра, основанный на очень простой и в то же время надежной перестановке букв послания.
Для шифрования Карданапредложил использовать квадрат с прорезанными в нем несколькими ячейками (рис.3). Ячейки прорезались таким образом, чтобы при повороте квадрата вокруг своего центра на 90°, потом на 180°, а затем на 270° в прорезях поочередно появлялись все позиции исходного квадрата и, причем только по одному разу. При шифровании квадрат накладывался на листок для послания сначала в исходном положении - выписывалась слева направо сверху вниз первая порция (четверть) послания. Затем квадрат поворачивался на 90°, скажем, по часовой стрелке - выписывалась вторая четверть сообщения и т. д.
Рис.3. Квадрат Кардана
Для дешифрования необходимо было иметь точную копию того квадрата, которым пользовался шифровальщик, и повторять с ней те же самые повороты. Устройство было удобно для хранения, предельно просто в обращении и при этом давало очень неплохую стойкость шифра — не зная, как именно расположены прорези на квадрате размером NхNчеловеку, перехватившему послание, теоретически нужно было перебратьвариантов. Например, для квадрата 6х6 это число уже равняется 262 144, т. е. несет - 18 бит информации. А если бы не существовало способа по части известной о решетке информации восстанавливать поэтапно расположение остальных прорезей, учитывая особенности фонетики национального языка, то дешифрование квадрата 10х10 еще недавно было на грани возможностей современных ЭВМ. Ведь информация о прорезях такого квадрата составляет уже около 50 бит. Подобные шифры, не модифицирующие буквы сообщения, а только меняющие их расположение, называются перестановочными.
Пример,
Зашифруем текст:
ШИФРРЕШЕТКАЯВЛЯЕТСЯЧАСТНЫМСЛУЧАЕМШИФРАМАРШРУТНОЙПЕРЕСТАНОВКИ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Наложив решетку на лист бумаги, вписываем первые 15 (по числу разрезов) букв сообщения: ШИФРРЕШЕТКАЯВЛЯЕТСЯЧАСТНЫМСЛУЧАЕМШИФРАМАРШРУТНОЙПЕРЕСТАНОВКИ. Сняв решетку, мы увидим текст:
|
Ш |
|
|
|
|
|
|
|
|
И |
|
|
|
Ф |
|
Р |
Р |
|
|
|
Е |
|
|
|
Ш |
|
|
|
Е |
|
|
|
Т |
|
|
|
К |
|
|
|
А |
|
|
|
|
|
|
|
|
|
|
Я |
|
|
В |
Л |
|
|
Я |
Поворачиваем решетку на 180 градусов. В окошечке появляются новые, еще не заполненные клетки. Вписываем в них следущие 15 букв.
Е |
Ш |
|
Т |
С |
|
|
Я |
|
|
И |
|
|
|
Ф |
|
Р |
Р |
Ч |
|
|
Е |
А |
|
|
Ш |
С |
|
|
Е |
Т |
|
|
Т |
Н |
|
|
К |
Ы |
|
|
А |
М |
С |
|
Л |
|
|
|
У |
|
|
Я |
|
|
В |
Л |
|
Ч |
Я |
Затем переворачиваем решетку на другую сторону и зашифровываем остаток текста аналогичным образом
Е |
Ш |
А |
Т |
С |
Е |
М |
Я |
|
Ш |
И |
И |
|
|
Ф |
|
Р |
Р |
Ч |
|
|
Е |
А |
Ф |
|
Ш |
С |
Р |
|
Е |
Т |
А |
|
Т |
Н |
М |
|
К |
Ы |
А |
Р |
А |
М |
С |
Ш |
Л |
Р |
У |
|
У |
|
Т |
Я |
|
|
В |
Л |
|
Ч |
Я |
Е |
Ш |
А |
Т |
С |
Е |
М |
Я |
Н |
Ш |
И |
И |
О |
Й |
Ф |
П |
Р |
Р |
Ч |
Е |
Р |
Е |
А |
Ф |
Е |
Ш |
С |
Р |
С |
Е |
Т |
А |
Т |
Т |
Н |
М |
А |
К |
Ы |
А |
Р |
А |
М |
С |
Ш |
Л |
Р |
У |
Н |
У |
О |
Т |
Я |
В |
К |
В |
Л |
И |
Ч |
Я |