Шифр замены. Шифры замены

Шифрами замены называют такие шифры, шифрование с помощью которых осуществляется путем замены каждого символа исходного текста другими символами (шифрообозначениями), при этом порядок символов не меняется. Формально шифр замены можно описать так: каждой букве ос исходного текста ставится в соответствие некоторое множество символов М а, которое называют множеством шифрообозначений для буквы а. Таблица соответствий и порядок выбора шифрообозначения из множества символов являются ключом шифра замены.

Если множества состоят из одного элемента, то такой шифр называют шифром простой замены.

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

При шифровании каждой буквы исходного текста ее заменяют буквой, которая находится под ней во второй строке таблицы. Ключ такого шифра легко запомнить по первой букве второй строки. Процесс дешифрации выполняется в обратном порядке - каждую букву шифротекста находят во второй строке таблицы и заменяют на букву над ней (с первой строки). Число ключей такого шифра не превышает количество букв алфавита (для русскоязычных текстов Т = 33).

Шифрами сложной замены называют такие шифры, шифрование с помощью которых осуществляется путем замены каждого символа исходного текста другими символами (шифрообозначениями), при этом порядок символов не меняется. Шифры сложной замены называют многоалфавитными, так как для шифрования каждого символа исходного текста используют свой шифр простой замены. Многоалфавитная подстановка обеспечивает цикличное использование в соответствии с ключом нескольких алфавитов замены, использование которых определяется местом зашифровываемого символа в исходном тексте.

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

Этот шифр сложной замены реализуется с помощью таблицы шифрования (квадрата) Вижинера. Эта таблица используется как для шифрования, так и для дешифрования текстов (рис. 5.1).

> Матрица букв

шифрограмм

Столбец ключа

Строка букв

открытого

Рис. 5.1. Таблица Вижинера

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

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

Задача 5.5

Пусть необходимо зашифровать следующий открытый текст : «ТО BE OR NOT ТО BE THAT IS THE QUESTION», используя секретный ключ «RELATIONS».

Решение.

Разобьем процесс шифрования на следующие этапы.

1. Записываем секретный ключ над открытым текстом столько раз, сколько потребуется, чтобы длина ключа совпала с длиной открытого текста, т.е. получим периодический ключ.

  • 2. Чтобы зашифровать открытый текст с помощью полученного периодического ключа и таблицы замены, приведенной выше, необходимо:
    • найти букву, стоящую на пересечении строки, названием которой является очередная буква открытого текста, и столбца, названием которого является очередной символ периодического ключа;
    • записать полученный символ криптограммы;
    • повторять предыдущие пункты до тех пор, пока не будет зашифрован весь текст.

После шифрования получим криптограмму:

«КЗ МЕ НЕЕ ВВЬ КБ МЕ МРСЮ А1 ХЭЕ,Ю5ЕЕ78У».

Для расшифровки такой криптограммы используется следующий алгоритм.

  • 1. Необходимо найти столбец, названием которого является очередной символ секретного ключа.
  • 2. В этом столбце нужно найти строку, содержащую очередной символ криптограммы.
  • 3. В качестве очередного символа открытого текста надо записать название полученной строки.

Дешифрование выполняют аналогично - под строкой шифро-текста записывают ключ, при необходимости циклически его повторяя. Каждую пару символов, расположенных в одном столбце, заменяют буквой исходного текста: по букве ключа находят строку в таблице 3, затем в этой строке находят букву шифротекста, которая определяет столбец; исходный символ - первая буква столбца.

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

На этой страничке описаны шифры, в которых замена происходит на буквы или цифры. Когда же замена происходит на какие-то другие не буквенно-цифровые символы, на комбинации символов или рисунки, это называют прямым .

Моноалфавитные шифры

В шифрах с моноалфавитной заменой каждая буква заменяется на одну и только одну другую букву/символ или группу букв/символов. Если в алфавите 33 буквы, значит есть 33 правила замены: на что менять А, на что менять Б и т.д.

Такие шифры довольно легко расшифровать даже без знания ключа. Делается это при помощи частотного анализа зашифрованного текста - надо посчитать, сколько раз каждая буква встречается в тексте, и затем поделить на общее число букв. Получившуюся частоту надо сравнить с эталонной. Самая частая буква для русского языка - это буква О, за ней идёт Е и т.д. Правда, работает частотный анализ на больших литературных текстах. Если текст маленький или очень специфический по используемым словам, то частотность букв будет отличаться от эталонной, и времени на разгадывание придётся потратить больше. Ниже приведена таблица частотности букв (то есть относительной частоты встречаемых в тексте букв) русского языка, рассчитанная на базе НКРЯ .

Использование метода частотного анализа для расшифровки шифрованных сообщений красиво описано во многих литературных произведениях, например, у Артура Конана Дойля в романе « » или у Эдгара По в « ».

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

Случайный код

Как я уже писал выше, в общем случае для шифра замены надо придумать, какую букву на какую надо заменять. Самое простое - взять и случайным образом перемешать буквы алфавита, а потом их выписать под строчкой алфавита. Получится кодовая таблица. Например, вот такая:

Число вариантов таких таблиц для 33 букв русского языка = 33! ≈ 8.683317618811886*10 36 . С точки зрения шифрования коротких сообщений - это самый идеальный вариант: чтобы расшифровать, надо знать кодовую таблицу. Перебрать такое число вариантов невозможно, а если шифровать короткий текст, то и частотный анализ не применишь.

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

Ключевое слово

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

Как видим, начало таблицы перемешалось, а вот конец остался неперемешенным. Это потому, что самая «старшая» буква в слове «манускрипт» - буква «У», вот после неё и остался неперемешенный «хвост». Буквы в хвосте останутся незакодированными. Можно оставить и так (так как большая часть букв всё же закодирована), а можно взять слово, которое содержит в себе буквы А и Я, тогда перемешаются все буквы, и «хвоста» не будет.

Само же ключевое слово можно предварительно тоже загадать, например при помощи или . Например, вот так:

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

Атбаш

Изначально шифр использовался для еврейского алфавита, отсюда и название. Слово атбаш (אתבש) составлено из букв «алеф», «тав», «бет» и «шин», то есть первой, последней, второй и предпоследней букв еврейского алфавита. Этим задаётся правило замены: алфавит выписывается по порядку, под ним он же выписывается задом наперёд. Тем самым первая буква кодируется в последнюю, вторая - в предпоследнюю и т.д.

Фраза «ВОЗЬМИ ЕГО В ЭКСЕПШН» превращается при помощи этого шифра в «ЭРЧГТЦ ЪЬР Э ВФНЪПЖС». Онлайн-калькулятор шифра Атбаш

ROT1

Этот шифр известен многим детям. Ключ прост: каждая буква заменяется на следующую за ней в алфавите. Так, A заменяется на Б, Б на В и т.д., а Я заменяется на А. «ROT1» значит «ROTate 1 letter forward through the alphabet» (англ. «поверните/сдвиньте алфавит на одну букву вперед»). Сообщение «Хрюклокотам хрюклокотамит по ночам» станет «Цсялмплпубн цсялмплпубнйу рп опшбн». ROT1 весело использовать, потому что его легко понять даже ребёнку, и легко применять для шифрования. Но его так же легко и расшифровать.

Шифр Цезаря

Шифр Цезаря - один из древнейших шифров. При шифровании каждая буква заменяется другой, отстоящей от неё в алфавите не на одну, а на большее число позиций. Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки. Он использовал сдвиг на три буквы (ROT3). Шифрование для русского алфавита многие предлагают делать с использованием такого сдвига:

Я всё же считаю, что в русском языке 33 буквы, поэтому предлагаю вот такую кодовую таблицу:

Интересно, что в этом варианте в алфавите замены читается фраза «где ёж?»:)

Но сдвиг ведь можно делать на произвольное число букв - от 1 до 33. Поэтому для удобства можно сделать диск, состоящий из двух колец, вращающихся относительно друг друга на одной оси, и написать на кольцах в секторах буквы алфавита. Тогда можно будет иметь под рукой ключ для кода Цезаря с любым смещением. А можно совместить на таком диске шифр Цезаря с атбашем, и получится что-то вроде этого:

Собственно, поэтому такие шифры и называются ROT - от английского слова «rotate» - «вращать».

ROT5

В этом варианте кодируются только цифры, остальной текст остаётся без изменений. Производится 5 замен, поэтому и ROT5: 0↔5, 1↔6, 2↔7, 3↔8, 4↔9.

ROT13

ROT13 - это вариация шифра Цезаря для латинского алфавита со сдвигом на 13 символов. Его часто применяют в интернете в англоязычных форумах как средство для сокрытия спойлеров, основных мыслей, решений загадок и оскорбительных материалов от случайного взгляда.

Латинский алфавит из 26 букв делится на две части. Вторая половина записывается под первой. При кодировании буквы из верхней половины заменяются на буквы из нижней половины и наоборот.

ROT18

Всё просто. ROT18 - это комбинация ROT5 и ROT13:)

ROT47

Существует более полный вариант этого шифра - ROT47. Вместо использования алфавитной последовательности A–Z, ROT47 использует больший набор символов, почти все отображаемые символы из первой половины ASCII -таблицы. При помощи этого шифра можно легко кодировать url, e-mail, и будет непонятно, что это именно url и e-mail:)

Например, ссылка на этот текст зашифруется вот так: 9EEAi^^?@K5C]CF^82>6D^BF6DE^4CJAE^4:A96C^K2>6?2nURC@Ecf. Только опытный разгадывальщик по повторяющимся в начале текста двойкам символов сможет додуматься, что 9EEAi^^ может означать HTTP:⁄⁄ .

Квадрат Полибия

Полибий - греческий историк, полководец и государственный деятель, живший в III веке до н.э. Он предложил оригинальный код простой замены, который стал известен как «квадрат Полибия» (англ. Polybius square) или шахматная доска Полибия. Данный вид кодирования изначально применялся для греческого алфавита, но затем был распространен на другие языки. Буквы алфавита вписываются в квадрат или подходящий прямоугольник. Если букв для квадрата больше, то их можно объединять в одной ячейке.

Такую таблицу можно использовать как в шифре Цезаря. Для шифрования на квадрате находим букву текста и вставляем в шифровку нижнюю от неё в том же столбце. Если буква в нижней строке, то берём верхнюю из того же столбца. Для кириллицы можно использовать таблицу РОТ11 (аналог шифра Цезаря со сдвигом на 11 символов):

Буквы первой строки кодируются в буквы второй, второй - в третью, а третьей - в первую.

Но лучше, конечно, использовать «фишку» квадрата Полибия - координаты букв:

    Под каждой буквой кодируемого текста записываем в столбик две координаты (верхнюю и боковую). Получится две строки. Затем выписываем эти две строки в одну строку, разбиваем её на пары цифр и используя эти пары как координаты, вновь кодируем по квадрату Полибия.

    Можно усложнить. Исходные координаты выписываем в строку без разбиений на пары, сдвигаем на нечётное количество шагов, разбиваем полученное на пары и вновь кодируем.

Квадрат Полибия можно создавать и с использованием кодового слова. Сначала в таблицу вписывается кодовое слово, затем остальные буквы. Кодовое слово при этом не должно содержать повторяющихся букв.

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

Стихотворный шифр

Этот метод шифрования похож на шифр Полибия, только в качестве ключа используется не алфавит, а стихотворение, которое вписывается построчно в квадрат заданного размера (например, 10×10). Если строка не входит, то её «хвост» обрезается. Далее полученный квадрат используется для кодирования текста побуквенно двумя координатами, как в квадрате Полибия. Например, берём хороший стих «Бородино» Лермонтова и заполняем таблицу. Замечаем, что букв Ё, Й, Х, Ш, Щ, Ъ, Э в таблице нет, а значит и зашифровать их мы не сможем. Буквы, конечно, редкие и могут не понадобиться. Но если они всё же будут нужны, придётся выбирать другой стих, в котором есть все буквы.

РУС/LAT

Наверное, самый часто встречающийся шифр:) Если пытаться писать по-русски, забыв переключиться на русскую раскладку, то получится что-то типа этого: Tckb gsnfnmcz gbcfnm gj-heccrb? pf,sd gthtrk.xbnmcz yf heccre. hfcrkflre? nj gjkexbncz xnj-nj nbgf "njuj^ Ну чем не шифр? Самый что ни на есть шифр замены. В качестве кодовой таблицы выступает клавиатура.

Таблица перекодировки выглядит вот так:

Литорея

Литорея (от лат. littera - буква) - тайнописание, род шифрованного письма, употреблявшегося в древнерусской рукописной литературе. Известна литорея двух родов: простая и мудрая. Простая, иначе называемая тарабарской грамотой, заключается в следующем. Если «е» и «ё» считать за одну букву, то в русском алфавите остаётся тридцать две буквы, которые можно записать в два ряда - по шестнадцать букв в каждом:

Получится русский аналог шифра ROT13 - РОТ16 :) При шифровке верхнюю букву меняют на нижнюю, а нижнюю - на верхнюю. Ещё более простой вариант литореи - оставляют только двадцать согласных букв:

Получается шифр РОТ10 . При шифровании меняют только согласные, а гласные и остальные, не попавшие в таблицу, оставляют как есть. Получается что-то типа «словарь → лсошамь» и т.п.

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

Шифрование биграммами

Шифр Плейфера

Шифр Плейфера - ручная симметричная техника шифрования, в которой впервые использована замена биграмм. Изобретена в 1854 году Чарльзом Уитстоном. Шифр предусматривает шифрование пар символов (биграмм), вместо одиночных символов, как в шифре подстановки и в более сложных системах шифрования Виженера. Таким образом, шифр Плейфера более устойчив к взлому по сравнению с шифром простой замены, так как затрудняется частотный анализ.

Шифр Плейфера использует таблицу 5х5 (для латинского алфавита, для русского алфавита необходимо увеличить размер таблицы до 6х6), содержащую ключевое слово или фразу. Для создания таблицы и использования шифра достаточно запомнить ключевое слово и четыре простых правила. Чтобы составить ключевую таблицу, в первую очередь нужно заполнить пустые ячейки таблицы буквами ключевого слова (не записывая повторяющиеся символы), потом заполнить оставшиеся ячейки таблицы символами алфавита, не встречающимися в ключевом слове, по порядку (в английских текстах обычно опускается символ «Q», чтобы уменьшить алфавит, в других версиях «I» и «J» объединяются в одну ячейку). Ключевое слово и последующие буквы алфавита можно вносить в таблицу построчно слева-направо, бустрофедоном или по спирали из левого верхнего угла к центру. Ключевое слово, дополненное алфавитом, составляет матрицу 5х5 и является ключом шифра.

Для того, чтобы зашифровать сообщение, необходимо разбить его на биграммы (группы из двух символов), например «Hello World» становится «HE LL OW OR LD», и отыскать эти биграммы в таблице. Два символа биграммы соответствуют углам прямоугольника в ключевой таблице. Определяем положения углов этого прямоугольника относительно друг друга. Затем руководствуясь следующими 4 правилами зашифровываем пары символов исходного текста:

    1) Если два символа биграммы совпадают, добавляем после первого символа «Х», зашифровываем новую пару символов и продолжаем. В некоторых вариантах шифра Плейфера вместо «Х» используется «Q».

    2) Если символы биграммы исходного текста встречаются в одной строке, то эти символы замещаются на символы, расположенные в ближайших столбцах справа от соответствующих символов. Если символ является последним в строке, то он заменяется на первый символ этой же строки.

    3) Если символы биграммы исходного текста встречаются в одном столбце, то они преобразуются в символы того же столбца, находящимися непосредственно под ними. Если символ является нижним в столбце, то он заменяется на первый символ этого же столбца.

    4) Если символы биграммы исходного текста находятся в разных столбцах и разных строках, то они заменяются на символы, находящиеся в тех же строках, но соответствующие другим углам прямоугольника.

Для расшифровки необходимо использовать инверсию этих четырёх правил, откидывая символы «Х» (или «Q») , если они не несут смысла в исходном сообщении.

Рассмотрим пример составления шифра. Используем ключ «Playfair example», тогда матрица примет вид:

Зашифруем сообщение «Hide the gold in the tree stump». Разбиваем его на пары, не забывая про правило . Получаем: «HI DE TH EG OL DI NT HE TR EX ES TU MP». Далее применяем правила -:

    1. Биграмма HI формирует прямоугольник, заменяем её на BM.

    2. Биграмма DE расположена в одном столбце, заменяем её на ND.

    3. Биграмма TH формирует прямоугольник, заменяем её на ZB.

    4. Биграмма EG формирует прямоугольник, заменяем её на XD.

    5. Биграмма OL формирует прямоугольник, заменяем её на KY.

    6. Биграмма DI формирует прямоугольник, заменяем её на BE.

    7. Биграмма NT формирует прямоугольник, заменяем её на JV.

    8. Биграмма HE формирует прямоугольник, заменяем её на DM.

    9. Биграмма TR формирует прямоугольник, заменяем её на UI.

    10. Биграмма EX находится в одной строке, заменяем её на XM.

    11. Биграмма ES формирует прямоугольник, заменяем её на MN.

    12. Биграмма TU находится в одной строке, заменяем её на UV.

    13. Биграмма MP формирует прямоугольник, заменяем её на IF.

Получаем зашифрованный текст «BM ND ZB XD KY BE JV DM UI XM MN UV IF». Таким образом сообщение «Hide the gold in the tree stump» преобразуется в «BMNDZBXDKYBEJVDMUIXMMNUVIF».

Двойной квадрат Уитстона

Чарльз Уитстон разработал не только шифр Плейфера, но и другой метод шифрования биграммами, который называют «двойным квадратом». Шифр использует сразу две таблицы, размещенные по одной горизонтали, а шифрование идет биграммами, как в шифре Плейфера.

Имеется две таблицы со случайно расположенными в них русскими алфавитами.

Перед шифрованием исходное сообщение разбивают на биграммы. Каждая биграмма шифруется отдельно. Первую букву биграммы находят в левой таблице, а вторую букву - в правой таблице. Затем мысленно строят прямоугольник так, чтобы буквы биграммы лежали в его противоположных вершинах. Другие две вершины этого прямоугольника дают буквы биграммы шифртекста. Предположим, что шифруется биграмма исходного текста ИЛ. Буква И находится в столбце 1 и строке 2 левой таблицы. Буква Л находится в столбце 5 и строке 4 правой таблицы. Это означает, что прямоугольник образован строками 2 и 4, а также столбцами 1 левой таблицы и 5 правой таблицы. Следовательно, в биграмму шифртекста входят буква О, расположенная в столбце 5 и строке 2 правой таблицы, и буква В, расположенная в столбце 1 и строке 4 левой таблицы, т.е. получаем биграмму шифртекста ОВ.

Если обе буквы биграммы сообщения лежат в одной строке, то и буквы шифртекста берут из этой же строки. Первую букву биграммы шифртекста берут из левой таблицы в столбце, соответствующем второй букве биграммы сообщения. Вторая же буква биграммы шифртекста берется из правой таблицы в столбце, соответствующем первой букве биграммы сообщения. Поэтому биграмма сообщения ТО превращается в биграмму шифртекста ЖБ. Аналогичным образом шифруются все биграммы сообщения:

Сообщение ПР ИЛ ЕТ АЮ _Ш ЕС ТО ГО

Шифртекст ПЕ ОВ ЩН ФМ ЕШ РФ БЖ ДЦ

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

Полиалфавитные шифры

Шифр Виженера

Естественным развитием шифра Цезаря стал шифр Виженера. В отличие от моноалфавитных это уже полиалфавитный шифр. Шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига. Для зашифровывания может использоваться таблица алфавитов, называемая «tabula recta» или «квадрат (таблица) Виженера». На каждом этапе шифрования используются различные алфавиты, выбираемые в зависимости от буквы ключевого слова.

Для латиницы таблица Виженера может выглядеть вот так:

Для русского алфавита вот так:

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

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

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

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

Шифр Гронсвельда

Книжный шифр

Если же в качестве ключа использовать целую книгу (например, словарь), то можно зашифровывать не отдельные буквы, а целые слова и даже фразы. Тогда координатами слова будут номер страницы, номер строки и номер слова в строке. На каждое слово получится три числа. Можно также использовать внутреннюю нотацию книги - главы, абзацы и т.п. Например, в качестве кодовой книги удобно использовать Библию, ведь там есть четкое разделение на главы, и каждый стих имеет свою маркировку, что позволяет легко найти нужную строку текста. Правда, в Библии нет современных слов типа «компьютер» и «интернет», поэтому для современных фраз лучше, конечно, использовать энциклопедический или толковый словарь.

Это были шифры замены, в которых буквы заменяются на другие. А ещё бывают , в которых буквы не заменяются, а перемешиваются между собой.

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

Простейшим из шифров замены является одноалфавитная подстановка , называемая также шифром простой замены . Ключом такого шифра является взаимно однозначное отображение (подстановка ) F алфавита открытого текста (X ) в алфавит шифртекста (Y ): F : X Y . Зафиксируем нумерацию символов в алфавитах X и Y : X = {x 1 , x 2 , … x n }, Y = {y 1 , y 2 , … y n }. Тогда отображение F фактически задается перестановкой p порядка n = |X | = |Y |: при шифровании символ x i открытого текста заменяется на символ y p ( i ) шифртекста. Эта перестановка может быть задана либо таблицей, либо с помощью формулы. При задании с помощью формулы значение p(i ) представляется в виде выражения, зависящего от i .

Типичным примером шифра замены является шифр Цезаря . Этот шифр реализует следующее преобразование текста, записанного с помощью латинского алфавита: каждая буква открытого текста заменяется буквой, стоящей на три позиции позже нее в алфавите (при этом алфавит считается записанным по кругу, то есть после буквы "z" идет буква "a"). Например, открытый текст "secret" будет преобразован в "vhfuhw". Ключ для шифра Цезаря можно задать в виде следующей таблицы (см. рис. 2.3). В первой строке записаны буквы открытого текста, во второй – соответствующие им буквы шифртекста.


Шифр Цезаря можно описать и в виде формулы. Для этого пронумеруем буквы латинского алфавита числами от 0 до 25: a = 0, b = 1, …, z = 25. Тогда правило замены можно описать следующим образом: буква с номером i i +3 (mod 26), где операция "mod 26" означает вычисление остатка от деления на 26.

Разумеется, возможен обобщенный вариант шифра Цезаря, при котором буква с номером i заменяется на букву с номером i +k (mod 26). В этом случае ключом шифра является число k .

Еще больше обобщив этот метод, мы придем к семейству аффинных шифров . Для алфавита из n символов {a 1 , a 2 , …, a n } аффинным шифром называется процедура, заменяющая входной символ a i на символ a j , где j = k i +l (mod n ). Для того чтобы имелась возможность расшифрования числа n и k должны быть взаимно простыми, то есть НОД(n , k ) = 1.

Шифры простой замены в настоящее время не используются, поскольку их стойкость невелика. Методы взлома таких шифров основаны на анализе частотности отдельных символов и их комбинаций. Дело в том, что в любом языке различные буквы и комбинации из двух, трех или большего количества букв имеют характерные частоты повторений в текстах. Например, в текстах на русском языке чаще всего встречается буква "О", затем, в порядке убывания частоты, идут буквы "Е" (считая, что "Е" и "Ё" – одна и та же буква), "А", "И", "Т" и т.д. Для английского языка аналогичная последовательность самых частых букв: "E", "T", "A", "I", "N". Самым частым символом в текстах является, однако, не буква, а символ пробела.

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

Для того чтобы увеличить стойкость шифров замены, применяют многоалфавитную подстановку, называемую также шифром сложной замены . Процедура шифрования для многоалфавитной замены включает набор подстановок {p 1 , p 2 ,…, p m } и функцию-распределительY (k ,i ), задающую последовательность применения подстановок p i . При шифровании i -го символа открытого текста применяется подстановка с номером Y (k ,i ), где k - ключ шифрования.

Частным случаем многоалфавитной замены является шифр Виженера. Формально этот шифр можно описать следующим образом. В качестве ключа шифрования выберем набор из m целых чисел: k = (k 1 , k 2 , …, k m ). Процедуру преобразования открытого текста t = (t 1 , t 2 , …) в шифртекст c = (c 1 , c 2 , …) построим на основе обобщенного шифра Цезаря: c 1 = t 1 + k 1 (mod 26),
c 2 = t 2 + k 2 (mod 26), и т.д. Когда будут использованы все m компонент ключа k , для шифрования (m +1)-й буквы снова возьмем k 1 , и т.д. Фактически, в качестве ключа шифрования используется гамма шифра – бесконечная последовательность, образованная периодическим повторением исходного набора: k 1 ,k 2 ,…,k m , k 1 ,k 2 ,…,k m , k 1 ,k 2 ,…

Взломать шифр многоалфавитной замены немного сложнее, чем шифры простой замены, но тоже достаточно легко. Такой шифр на самом деле представляет собой одновременное применение m шифров простой замены (обобщенный шифр Цезаря), причем часть исходного текста, состоящая из букв t i , t m+i , t 2 m+i , … шифруются с использованием "ключа" k i (i =1, …,m ).

Если известен период гаммы (т.е. число m ), то к каждой такой части можно применить любой из методов взлома шифров простой замены. Если период гаммы не известен, то задача усложняется. Но и для этих случаев разработаны эффективные методы взлома. Эти методы позволяют с достаточной вероятностью определить период гаммы, после чего задача сводится к взлому шифра гаммирования с известным периодом.

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

Простейшим вариантом гомофонического шифра является следующий. Предположим, что нам известны частоты вхождений символов в открытый текст. Пусть f i - частота появления i –го символа в открытом текста (i - номер буквы в алфавите). Каждой букве t i исходного алфавита (т.е. алфавита, с помощью которого записывается открытое сообщение) сопоставим подмножество F i , содержащее f i символов выходного алфавита (т.е. алфавита, с помощью которого записывается шифртекст), причем никакие два подмножества F i и F j не пересекаются. При шифровании будем заменять каждое вхождение символа t i на случайный символ из множества F i . Ясно, что средняя частота появления в шифртексте любого из символов выходного алфавита одинакова, что существенно затрудняет криптоанализ.

Шифры гаммирования

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

Суть метода гаммирования заключается в следующем. С помощью секретного ключа k генерируется последовательность символов

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

В качестве обратимой операции обычно используется либо сложение по модулю количества букв в алфавите n : либо, при представлении символов открытого текста в виде двоичного кода, операция поразрядного суммирования по модулю два (XOR): .

Расшифрование осуществляется применением к символам шифртекста и гаммы обратной операции: , или (операция XOR является обратной к самой себе).

Стойкость систем шифрования, основанных на гаммировании, зависит от характеристик гаммы – ее длины и равномерности распределения вероятностей появления знаков гаммы.

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

1) все символы гаммы полностью случайны и появляются в гамме с равными вероятностями;

2) длина гаммы равна длине открытого текста или превышает ее;

3) каждый ключ (гамма) используется для шифрования только одного текста, а потом уничтожается.

Такой шифр не может быть взломан в принципе, то есть является абсолютно стойким. Однако абсолютно стойкие шифры очень не удобны в использовании, и поэтому почти не применяются на практике.

Обычно гамма либо получается периодическим повторением ключевой последовательности фиксированного размера, либо генерируется по некоторому правилу. Для генерации гаммы удобно использовать генераторы псевдослучайных чисел (ПСЧ). Наиболее известными генераторами ПСП являются линейный конгруэнтный генератор и генератор линейный рекуррентный последовательности.

Линейный конгруэнтный генератор задается рекуррентной формулой: g i = a ×g i – 1 + b (mod m ), где g i i -й член последовательности псевдослучайных чисел; a , b , m и g 0 – ключевые параметры. Данная последовательность состоит из целых чисел от 0 до m – 1, и если элементы g i и g j совпадут, то последующие участки последовательности также совпадут: g i +1 = g j +1 , g i +2 = g j +2 , и т.д. Поэтому последовательность {g i } является периодической, и ее период не превышает m . Для того чтобы период последовательности псевдослучайных чисел, сгенерированной по указанной рекуррентной формуле, был максимальным (равным m), параметры данной формулы должны удовлетворять следующим условиям:

· b и m -взаимно простые числа;

· a – 1 делится на любой простой делитель числа m ;

· a – 1 кратно 4, если m кратно 4.

Линейная рекуррентная последовательность задается следующей формулой:

, i = 0,1…,

где Å – операция вычисления суммы по модулю 2, – состояние j -го бита последовательности, – коэффициент обратной связи, , коэффициенты .

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

Последовательности такого вида легко реализуются программными или аппаратными средствами. Основу этой реализации составляет регистр сдвига с линейной обратной связью (РСЛОС).

РСЛОС представляет собой простое в реализации, недорогое устройство, способное формировать последовательности и обеспечить такие требования как:

· большой размер ансамбля последовательностей, формируемых на одной алгоритмической основе;

· оптимальность корреляционных функций в ансамбле;

· сбалансированность структуры;

· максимальность периода для данной длины регистра сдвига.

Обобщенная схема РСЛОС приведена на рис. 2.4.

Сдвиговый регистр представляет собой последовательность битов. Количество битов определяется длиной регистра. Если длина равна n битам, то регистр называется n -битовым регистром сдвига. Всякий раз, когда в выходную последовательность нужно извлечь бит, все биты регистра сдвига сдвигаются вправо на 1 позицию. Новый крайний левый бит является функцией всех остальных битов регистра. Выдвинутый из регистра бит является очередным элементом последовательности. Периодом регистра сдвига называется длина получаемой последовательности до начала ее повторения.

Обратная связь представляет собой просто операцию XOR над битами регистра, для которых значения коэффициентов обратной связи равно 1. Перечень этих битов называется отводной последовательностью .

Любой n -битовый РСЛОС может находиться в одном из 2 n –1 внутренних состояний. Это означает, что теоретически такой регистр может генерировать псевдослучайную последовательность с периодом 2 n –1 битов. (Число внутренних состояний и максимальный период равны 2 n –1, потому что заполнение РСЛОС нулями, приведет к тому, что сдвиговый регистр будет выдавать бесконечную последовательность нулей, что абсолютно бесполезно.) Только при определенных отводных последовательностях РСЛОС циклически пройдет через все 2 n –1 внутренних состояний, такие РСЛОС являются регистрами с максимальным периодом. Получившийся результат называется М – последовательностью .

Для того, чтобы конкретный n -битовый РСЛОС имел максимальный период 2 n –1, двоичный полином f (x ) = h n x n + h n – 1 x n – 1 + … + h 1 x + 1, образованный из отводной последовательности и константы 1, должен быть примитивным. Полином f (x ) степени n называется примитивным , если его нельзя представить в виде произведения двух полиномов с меньшими степенями (свойство неприводимости) и, если x является генератором всех ненулевых полиномов со степенями не выше n , умножение которых осуществляется по модулю f (x ).

В общем случае не существует эффективного способа генерировать примитивные полиномы данной степени. Проще всего выбирать полином случайным образом и проверять, не является ли он примитивным. Это чем-то похоже на проверку, не является ли простым случайно выбранное число. В настоящее время составлены таблицы примитивных полиномов, которыми можно воспользоваться при разработке конкретных РСЛОС.

4.1. Основы шифрования

Сущность шифрования методом замены заключается в следующем . Пусть шифруются сообщения на русском языке и замене подлежит каждая буква этих сообщений. Тогда, букве А исходного алфавита сопоставляется некоторое множество символов (шифрозамен) М А, Б – М Б, …, Я – М Я . Шифрозамены выбираются таким образом, чтобы любые два множества (М I и М J , i ≠ j ) не содержали одинаковых элементов (М I ∩ М J = Ø ).

Таблица, приведенная на рис.4.1, является ключом шифра замены. Зная ее, можно осуществить как шифрование, так и расшифрование.

А Б ... Я
М А М Б ... М Я

Рис.4.1. Таблица шифрозамен

При шифровании каждая буква А открытого сообщения заменяется любым символом из множества М А . Если в сообщении содержится несколько букв А , то каждая из них заменяется на любой символ из М А . За счет этого с помощью одного ключа можно получить различные варианты шифрограммы для одного и того же открытого сообщения. Так как множества М А, М Б, ..., М Я попарно не пересекаются, то по каждому символу шифрограммы можно однозначно определить, какому множеству он принадлежит, и, следовательно, какую букву открытого сообщения он заменяет. Поэтому расшифрование возможно и открытое сообщение определяется единственным образом.

Приведенное выше описание сущности шифров замены относится ко всем их разновидностям за исключением , в которых для зашифрования разных символов исходного алфавита могут использоваться одинаковые шифрозамены (т.е. М I ∩ М J ≠ Ø , i ≠ j ).

Метод замены часто реализуется многими пользователями при работе на компьютере. Если по забывчивости не переключить на клавиатуре набор символов с латиницы на кириллицу, то вместо букв русского алфавита при вводе текста будут печататься буквы латинского алфавита («шифрозамены»).

Для записи исходных и зашифрованных сообщений используются строго определенные алфавиты. Алфавиты для записи исходных и зашифрованных сообщений могут отличаться. Символы обоих алфавитов могут быть представлены буквами, их сочетаниями, числами, рисунками, звуками, жестами и т.п. В качестве примера можно привести пляшущих человечков из рассказа А. Конан Дойла () и рукопись рунического письма () из романа Ж. Верна «Путешествие к центру Земли».

Шифры замены можно разделить на следующие подклассы (разновидности).

Рис.4.2. Классификация шифров замены

I. Регулярные шифры. Шифрозамены состоят из одинакового количества символов или отделяются друг от друга разделителем (пробелом, точкой, тире и т.п.).

Лозунговый шифр. Для данного шифра построение таблицы шифрозамен основано на лозунге (ключе) – легко запоминаемом слове. Вторая строка таблицы шифрозамен заполняется сначала словом-лозунгом (причем повторяющиеся буквы отбрасываются), а затем остальными буквами, не вошедшими в слово-лозунг, в алфавитном порядке. Например, если выбрано слово-лозунг «ДЯДИНА», то таблица имеет следующий вид.

А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
Д Я И Н А Б В Г Е Ё Ж З Й К Л М О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю

Рис.4.4. Таблица шифрозамен для лозунгового шифра

При шифровании исходного сообщения «АБРАМОВ» по приведенному выше ключу шифрограмма будет выглядеть «ДЯПДКМИ».

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


1 2 3 4 5 6
1 А Б В Г Д Е
2 Ё Ж З И Й К
3 Л М Н О П Р
4 С Т У Ф Х Ц
5 Ч Ш Щ Ъ Ы Ь
6 Э Ю Я - - -

Рис.4.5. Таблица шифрозамен для полибианского квадрата

Шифруемая буква заменяется на координаты квадрата (строка-столбец), в котором она записана. Например, если исходное сообщение «АБРАМОВ», то шифрограмма – «11 12 36 11 32 34 13». В Древней Греции сообщения передавались с помощью оптического телеграфа (с помощью факелов). Для каждой буквы сообщения вначале поднималось количество факелов, соответствующее номеру строки буквы, а затем номеру столбца.

Таблица 4.1. Частота появления букв русского языка в текстах

№ п/п Буква Частота, % № п/п Буква Частота, %
1 О 10.97 18 Ь 1.74
2 Е 8.45 19 Г 1.70
3 А 8.01 20 З 1.65
4 И 7.35 21 Б 1.59
5 Н 6.70 22 Ч 1.44
6 Т 6.26 23 Й 1.21
7 С 5.47 24 Х 0.97
8 Р 4.73 25 Ж 0.94
9 В 4.54 26 Ш 0.73
10 Л 4.40 27 Ю 0.64
11 К 3.49 28 Ц 0.48
12 М 3.21 29 Щ 0.36
13 Д 2.98 30 Э 0.32
14 П 2.81 31 Ф 0.26
15 У 2.62 32 Ъ 0.04
16 Я 2.01 33 Ё 0.04
17 Ы 1.90

Существуют подобные таблицы для пар букв (биграмм). Например, часто встречаемыми биграммами являются «то», «но», «ст», «по», «ен» и т.д. Другой прием вскрытия шифрограмм основан на исключении возможных сочетаний букв. Например, в текстах (если они написаны без орфографических ошибок) нельзя встретить сочетания «чя», «щы», «ьъ» и т.п.

Для усложнения задачи вскрытия шифров однозначной замены еще в древности перед шифрованием из исходных сообщений исключали пробелы и/или гласные буквы. Другим способом, затрудняющим вскрытие, является шифрование биграммами (парами букв).

4.3. Полиграммные шифры

Полиграммные шифры замены - это шифры, в которых одна шифрозамена соответствует сразу нескольким символам исходного текста.

Биграммный шифр Порты . Шифр Порты, представленный им в виде таблицы, является первым известным биграммным шифром. Размер его таблицы составлял 20 х 20 ячеек; наверху горизонтально и слева вертикально записывался стандартный алфавит (в нем не было букв J, К, U, W, X и Z). В ячейках таблицы могли быть записаны любые числа, буквы или символы - сам Джованни Порта пользовался символами - при условии, что содержимое ни одной из ячеек не повторялось. Применительно к русскому языку таблица шифрозамен может выглядеть следующим образом.


А Б В Г Д Е
(Ё)
Ж З И
(Й)
К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
А 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
Б 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062
В 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093
Г 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
Д 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
Е (Ё) 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
Ж 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
З 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
И (Й) 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
К 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310
Л 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341
М 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372
Н 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403
О 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434
П 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465
Р 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496
С 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527
Т 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558
У 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589
Ф 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620
Х 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651
Ц 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682
Ч 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713
Ш 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744
Щ 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775
Ъ 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806
Ы 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837
Ь 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868
Э 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899
Ю 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930
Я 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961

Рис.4.10. Таблица шифрозамен для шифра Порты

Шифрование выполняется парами букв исходного сообщения. Первая буква пары указывает на строку шифрозамены, вторая - на столбец. В случае нечетного количества букв в исходном сообщении к нему добавляется вспомогательный символ («пустой знак»). Например, исходное сообщение «АБ РА МО В», зашифрованное – «002 466 355 093». В качестве вспомогательного символа использована буква «Я».

Шифр Playfair (англ. «Честная игра»). В начале 1850-х гг. Чарлз Уитстон придумал так называемый «прямоугольный шифр». Леон Плейфер, близкий друг Уитстона, рассказал об этом шифре во время официального обеда в 1854 г. министру внутренних дел лорду Пальмерстону и принцу Альберту. А поскольку Плейфер был хорошо известен в военных и дипломатических кругах, то за творением Уитстона навечно закрепилось название «шифр Плейфера».

Данный шифр стал первым буквенным биграммным шифром (в биграммной таблице Порты использовались символы, а не буквы). Он был предназначен для обеспечения секретности телеграфной связи и применялся британскими войсками в Англо-бурской и Первой мировой войнах. Им пользовалась также австралийская служба береговой охраны островов во время Второй мировой войны.

Шифр предусматривает шифрование пар символов (биграмм). Таким образом, этот шифр более устойчив к взлому по сравнению с шифром простой замены, так как затрудняется частотный анализ. Он может быть проведен, но не для 26 возможных символов (латинский алфавит), а для 26 х 26 = 676 возможных биграмм. Анализ частоты биграмм возможен, но является значительно более трудным и требует намного большего объема зашифрованного текста.

Для шифрования сообщения необходимо разбить его на биграммы (группы из двух символов), при этом, если в биграмме встретятся два одинаковых символа, то между ними добавляется заранее оговоренный вспомогательный символ (в оригинале – X , для русского алфавита - Я ). Например, «зашифрованное сообщение» становится «за ши фр ов ан но ес оЯ об ще ни еЯ ». Для формирования ключевой таблицы выбирается лозунг и далее она заполняется по правилам шифрующей системы Трисемуса. Например, для лозунга «ДЯДИНА» ключевая таблица выглядит следующим образом.

Д Я И Н А Б
В Г Е Ё Ж З
Й К Л М О П
Р С Т У Ф Х
Ц Ч Ш Щ Ъ Ы
Ь Э Ю - 1 2

Рис.4.11. Ключевая таблица для шифра Playfair

Затем, руководствуясь следующими правилами, выполняется зашифровывание пар символов исходного текста:

1. Если символы биграммы исходного текста встречаются в одной строке, то эти символы замещаются на символы, расположенные в ближайших столбцах справа от соответствующих символов. Если символ является последним в строке, то он заменяется на первый символ этой же строки.

2. Если символы биграммы исходного текста встречаются в одном столбце, то они преобразуются в символы того же столбца, находящимися непосредственно под ними. Если символ является нижним в столбце, то он заменяется на первый символ этого же столбца.

3. Если символы биграммы исходного текста находятся в разных столбцах и разных строках, то они заменяются на символы, находящиеся в тех же строках, но соответствующие другим углам прямоугольника.

Пример шифрования.

Биграмма «за» формирует прямоугольник – заменяется на «жб»;

Биграмма «ши» находятся в одном столбце – заменяется на «юе»;

Биграмма «фр» находятся в одной строке – заменяется на «хс»;

Биграмма «ов» формирует прямоугольник – заменяется на «йж»;

Биграмма «ан» находятся в одной строке – заменяется на «ба»;

Биграмма «но» формирует прямоугольник – заменяется на «ам»;

Биграмма «ес» формирует прямоугольник – заменяется на «гт»;

Биграмма «оя» формирует прямоугольник – заменяется на «ка»;

Биграмма «об» формирует прямоугольник – заменяется на «па»;

Биграмма «ще» формирует прямоугольник – заменяется на «шё»;

Биграмма «ни» формирует прямоугольник – заменяется на «ан»;

Биграмма «ея» формирует прямоугольник – заменяется на «ги».

Шифрограмма – «жб юе хс йж ба ам гт ка па шё ан ги».

Для расшифровки необходимо использовать инверсию этих правил, откидывая символы Я (или Х ), если они не несут смысла в исходном сообщении.

Он состоял из двух дисков – внешнего неподвижного и внутреннего подвижного дисков, на которые были нанесены буквы алфавита. Процесс шифрования заключался в нахождении буквы открытого текста на внешнем диске и замене ее на букву с внутреннего диска, стоящую под ней. После этого внутренний диск сдвигался на одну позицию и шифрование второй буквы производилось уже по новому шифралфавиту. Ключом данного шифра являлся порядок расположения букв на дисках и начальное положение внутреннего диска относительно внешнего.

Таблица Трисемуса. Одним из шифров, придуманных немецким аббатом Трисемусом, стал многоалфавитный шифр, основанный на так называемой «таблице Трисемуса» - таблице со стороной равной n , где n – количество символов в алфавите. В первой строке матрицы записываются буквы в порядке их очередности в алфавите, во второй – та же последовательность букв, но с циклическим сдвигом на одну позицию влево, в третьей – с циклическим сдвигом на две позиции влево и т.д.

А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А
В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б
Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В
Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г
Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д
Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е
Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё
З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж
И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З
Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И
К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й
Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К
М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л
Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М
О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н
П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О
Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П
С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р
Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С
У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т
Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У
Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф
Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х
Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц
Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч
Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш
Ъ Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ
Ы Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ
Ь Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы
Э Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь
Ю Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э
Я А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю

Рис.4.17. Таблица Трисемуса

Первая строка является одновременно и алфавитом для букв открытого текста. Первая буква текста шифруется по первой строке, вторая буква по второй и так далее. После использования последней строки вновь возвращаются к первой. Так сообщение «АБРАМОВ» приобретет вид «АВТГРУЗ».

Система шифрования Виженера. В 1586 г. французский дипломат Блез Виженер представил перед комиссией Генриха III описание простого, но довольно стойкого шифра, в основе которого лежит таблица Трисемуса.

Перед шифрованием выбирается ключ из символов алфавита. Сама процедура шифрования заключается в следующем. По i-ому символу открытого сообщения в первой строке определяется столбец, а по i-ому символу ключа в крайнем левом столбце – строка. На пересечении строки и столбца будет находиться i-ый символ, помещаемый в шифрограмму. Если длина ключа меньше сообщения, то он используется повторно. Например, исходное сообщение «АБРАМОВ», ключ – «ДЯДИНА», шифрограмма – «ДАФИЪОЁ».

Справедливости ради, следует отметить, что авторство данного шифра принадлежит итальянцу Джованни Батиста Беллазо, который описал его в 1553 г. История «проигнорировала важный факт и назвала шифр именем Виженера, несмотря на то, что он ничего не сделал для его создания» . Беллазо предложил называть секретное слово или фразу паролем (ит. password; фр. parole - слово).

В 1863 г. Фридрих Касиски опубликовал алгоритм атаки на этот шифр, хотя известны случаи его взлома шифра некоторыми опытными криптоаналитиками и ранее. В частности, в 1854 г. шифр был взломан изобретателем первой аналитической вычислительной машины Чарльзом Бэббиджем, хотя этот факт стал известен только в XX в., когда группа ученых разбирала вычисления и личные заметки Бэббиджа . Несмотря на это шифр Виженера имел репутацию исключительно стойкого к «ручному» взлому еще долгое время. Так, известный писатель и математик Чарльз Лютвидж Доджсон (Льюис Кэрролл) в своей статье «Алфавитный шифр», опубликованной в детском журнале в 1868 г., назвал шифр Виженера невзламываемым. В 1917 г. научно-популярный журнал «Scientific American» также отозвался о шифре Виженера, как о неподдающемся взлому .

Роторные машины. Идеи Альберти и Беллазо использовались при создании электромеханических роторных машин первой половины ХХ века. Некоторые из них использовались в разных странах вплоть до 1980-х годов. В большинстве из них использовались роторы (механические колеса), взаимное расположение которых определяло текущий алфавит шифрозамен, используемый для выполнения подстановки. Наиболее известной из роторных машин является немецкая машина времен Второй мировой войны «Энигма» .

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

Рис.4.19. Роторная система Энигмы [www.cryptomuseum.com ]

Шифрующее действие «Энигмы» показано для двух последовательно нажатых клавиш - ток течёт через роторы, «отражается» от рефлектора, затем снова через роторы.

Рис.4.20. Схема шифрования

Примечание. Серыми линиями показаны другие возможные электрические цепи внутри каждого ротора. Буква A шифруется по-разному при последовательных нажатиях одной клавиши, сначала в G , затем в C . Сигнал идет по другому маршруту за счёт поворота одного из роторов после нажатия предыдущей буквы исходного сообщения.

3. Дайте характеристику разновидностям шифров замены.

Максимальное количество ключей для любого шифра этого вида не превышает n!, где n - количество символов в алфавите. С увеличением числа n значение n! растет очень быстро (1! = 1, 5! = 120, 10! = 3628800, 15! = 1307674368000). При больших n для приближенного вычисления n! можно воспользоваться формулой Стирлинга

Шифр Цезаря. Данный шифр был придуман Гаем Юлием Цезарем и использовался им в своей переписке (1 век до н.э.). Применительно к русскому языку суть его состоит в следующем. Выписывается исходный алфавит (А, Б, ..., Я), затем под ним выписывается тот же алфавит, но с циклическим сдвигом на 3 буквы влево.

Рис.3.

При зашифровке буква А заменяется буквой Г, Б - на Д и т. д. Так, например, исходное сообщение «АБРАМОВ» после шифрования будет выглядеть «ГДУГПСЕ». Получатель сообщения «ГДУГПСЕ» ищет эти буквы в нижней строке и по буквам над ними восстанавливает исходное сообщение «АБРАМОВ».

Ключом в шифре Цезаря является величина сдвига нижней строки алфавита. Количество ключей для всех модификаций данного шифра применительно к алфавиту русского языка равно 33. Возможны различные модификации шифра Цезаря, в частности лозунговый шифр.

Лозунговый шифр. Для данного шифра построение таблицы шифрозамен основано на лозунге (ключе) - легко запоминаемом слове. Вторая строка таблицы шифрозамен заполняется сначала словом-лозунгом (причем повторяющиеся буквы отбрасываются), а затем остальными буквами, не вошедшие в слово-лозунг, в алфавитном порядке. Например, если выбрано слово-лозунг «ДЯДИНА», то таблица имеет следующий вид.

Рис.4.

При шифровании исходного сообщения «АБРАМОВ» по приведенному выше ключу шифрограмма будет выглядеть «ДЯПДКМИ».

Полибианский квадрат. Шифр изобретен греческим государственным деятелем, полководцем и историком Полибием (III век до н.э.). Применительно к русскому алфавиту суть шифрования заключалась в следующем. В квадрат 6х6 выписываются буквы (рис. 5).

Шифруемая буква заменяется на координаты квадрата (строка-столбец), в котором она записана. Например, если исходное сообщение «АБРАМОВ», то шифрограмма - «11 12 36 11 32 34 13». В Древней Греции сообщения передавались с помощью оптического телеграфа (с помощью факелов). Для каждой буквы сообщения в начале поднималось количество факелов, соответствующее номеру строки буквы, а затем номеру столбца.

Шифрующая система Трисемуса (Тритемия). В 1508 г. аббат из Германии Иоганн Трисемус написал печатную работу по криптологии под названием «Полиграфия». В этой книге он впервые систематически описал применение шифрующих таблиц, заполненных алфавитом в случайном порядке. Для получения такого шифра замены обычно использовались таблица для записи букв алфавита и ключевое слово (или фраза). В таблицу сначала вписывалось по строкам ключевое слово, причем повторяющиеся буквы отбрасывались (рис. 6). Затем эта таблица дополнялась не вошедшими в нее буквами алфавита по порядку. На рис.6 изображена таблица с ключевым словом «ДЯДИНА».

Рис.5.

полибианского квадрата для шифра Трисемуса

Каждая буква открытого сообщения заменяется буквой, расположенной под ней в том же столбце. Если буква находится в последней строке таблицы, то для ее шифрования берут самую верхнюю букву столбца. Например, исходное сообщение «АБРАМОВ», зашифрованное - «ИЙЪИХШК».

Одним из существенных недостатков шифров однозначной замены является их легкаявскрываемость. При вскрытии шифрограмм используются различные приемы, которые даже при отсутствии мощных вычислительных средств позволяют добиться положительного результата. Один из таких приемов базируется на том, что в шифрограммах остается информация о частоте встречаемости букв исходного текста. Если в открытом сообщении часто встречается какая-либо буква, то в шифрованном сообщении также часто будет встречаться соответствующий ей символ. Еще в 1412 году Шихаба ал-Калкашанди в своем труде «Субх ал-Ааша» привел таблицу частоты появления арабских букв в тексте на основе анализа текста Корана. Для разных языков мира существуют подобные таблицы. Так, например, для русского языка такая таблица выглядит следующим образом .

Таблица 1. Вероятности появления букв русского языка в текстах*


*) В таблице приведены оценки вероятностей появления букв русского языка и пробела, полученные на основе анализа научно-технических и художественных текстов общим объемом более 1000000 символов.

Существуют подобные таблицы для пар букв (биграмм). Например, часто встречаемыми биграммами являются «то», «но», «ст», «по», «ен» и т.д. Другой прием вскрытия шифрограмм основан на исключении возможных сочетаний букв. Например, в текстах (если они написаны без орфографических ошибок) нельзя встретить сочетания «чя», «щы», «ьъ» и т.п.

Для усложнения задачи вскрытия шифров однозначной замены еще в древности перед шифрованием из исходных сообщений исключали пробелы и/или гласные буквы. Другим способом, затрудняющим вскрытие, является шифрование биграммами (парами букв).