Алфавит зашифрованный символами: 10 популярных кодов и шифров – Шифр подстановки — Википедия

Классический криптоанализ / Habr


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

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

Шифр Цезаря

Самый легкий и один из самых известных классических шифров — шифр Цезаря отлично подойдет на роль аперитива.
Шифр Цезаря относится к группе так называемых одноалфавитных шифров подстановки. При использовании шифров этой группы «каждый символ открытого текста заменяется на некоторый, фиксированный при данном ключе символ того же алфавита» wiki.

Способы выбора ключей могут быть различны. В шифре Цезаря ключом служит произвольное число k, выбранное в интервале от 1 до 25. Каждая буква открытого текста заменяется буквой, стоящей на k знаков дальше нее в алфавите. К примеру, пусть ключом будет число 3. Тогда буква A английского алфавита будет заменена буквой D, буква B — буквой E и так далее.

Для наглядности зашифруем слово HABRAHABR шифром Цезаря с ключом k=7. Построим таблицу подстановок:

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
h i j k l m n o p q r s t u v w x y z a b c d
e
f g

И заменив каждую букву в тексте получим: C(‘HABRAHABR’, 7) = ‘OHIYHOHIY’.

При расшифровке каждая буква заменяется буквой, стоящей в алфавите на k знаков раньше: D(‘OHIYHOHIY’, 7) = ‘HABRAHABR’.

Криптоанализ шифра Цезаря

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

Аффиный шифр

Рассмотрим немного более интересный одноалфавитный шифр подстановки под названием аффиный шифр. Он тоже реализует простую подстановку, но обеспечивает немного большее пространство ключей по сравнению с шифром Цезаря. В аффинном шифре каждой букве алфавита размера
m
ставится в соответствие число из диапазона 0… m-1. Затем при помощи специальной формулы, вычисляется новое число, которое заменит старое в шифртексте.

Процесс шифрования можно описать следующей формулой:

,

где x — номер шифруемой буквы в алфавите; m — размер алфавита; a, b — ключ шифрования.

Для расшифровки вычисляется другая функция:

,

где a-1 — число обратное a по модулю m. Это значит, что для корректной расшифровки число a должно быть взаимно простым с m.

С учетом этого ограничения вычислим пространство ключей аффиного шифра на примере английского алфавита. Так как английский алфавит содержит 26 букв, то в качестве a может быть выбрано только взаимно простое с 26 число. Таких чисел всего двенадцать: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 и 25. Число b в свою очередь может принимать любое значение в интервале от 0 до 25, что в итоге дает нам 12*26 = 312 вариантов возможных ключей.

Криптоанализ аффиного шифра

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

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

Т.е. в английском тексте наиболее встречающимися буквами будут E, T, A. В то время как самыми редкими буквами являются J, Q, Z. Следовательно, посчитав частоту появления каждой буквы в тексте мы можем определить насколько частотная характеристика текста соответствует английскому языку.

Для этого необходимо вычислить значение:

,

где ni — частота i

-й буквы алфавита в естественном языке. И fi — частота i-й буквы в шифртексте.

Чем больше значение χ, тем больше вероятность того, что текст написан на естественном языке.

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

Разумеется следует учитывать, что метод не всегда работает с короткими сообщениями, в которых частотные характеристики могут сильно отличатся от характеристик естественного языка.

Шифр простой замены

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

При шифровании каждая буква в тексте заменяется по следующему правилу. Первая буква алфавита замещается первой буквой ключа, вторая буква алфавита — второй буквой ключа и так далее. В нашем примере буква A будет заменена на X, буква B на F.

При расшифровке буква сперва ищется в ключе и затем заменяется буквой стоящей в алфавите на той же позиции.

Криптоанализ шифра простой замены

Пространство ключей шифра простой замены огромно и равно количеству перестановок используемого алфавита. Так для английского языка это число составляет 26! = 288. Разумеется наивный перебор всех возможных ключей дело безнадежное и для взлома потребуется более утонченная техника, такая как поиск восхождением к вершине:

  1. Выбирается случайная последовательность букв — основной ключ. Шифртекст расшифровывается с помощью основного ключа. Для получившегося текста вычисляется коэффициент, характеризующий вероятность принадлежности к естественному языку.
  2. Основной ключ подвергается небольшим изменениям (перестановка двух произвольно выбранных букв). Производится расшифровка и вычисляется коэффициент полученного текста.
  3. Если коэффициент выше сохраненного значения, то основной ключ заменяется на модифицированный вариант.
  4. Шаги 2-3 повторяются пока коэффициент не станет постоянным.

Для вычисления коэффициента используется еще одна характеристика естественного языка — частота встречаемости триграмм.
Чем ближе текст к английскому языку тем чаще в нем будут встречаться такие триграммы как THE, AND, ING. Суммируя частоты появления в естественном языке всех триграмм, встреченных в тексте получим коэффициент, который с большой долей вероятности определит текст, написанный на естественном языке.
Шифр Полибия

Еще один шифр подстановки. Ключом шифра является квадрат размером 5*5 (для английского языка), содержащий все буквы алфавита, кроме J.

При шифровании каждая буква исходного текста замещается парой символов, представляющих номер строки и номер столбца, в которых расположена замещаемая буква. Буква a будет замещена в шифртексте парой BB, буква b — парой EB и так далее. Так как ключ не содержит букву J, перед шифрованием в исходном тексте J следует заменить на I.

Например, зашифруем слово HABRAHABR. C(‘HABRAHABR’) = ‘AB BB EB DA BB AB BB EB DA’.

Криптоанализ шифра Полибия

Шифр имеет большое пространство ключей (25! = 283 для английского языка). Однако единственное отличие квадрата Полибия от предыдущего шифра заключается в том, что буква исходного текста замещается двумя символами.

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

Перестановочный шифр

Помимо шифров подстановки, широкое распространение также получили перестановочные шифры. В качестве примера опишем Шифр вертикальной перестановки.

В процессе шифрования сообщение записывается в виде таблицы. Количество колонок таблицы определяется размером ключа. Например, зашифруем сообщение WE ARE DISCOVERED. FLEE AT ONCE с помощью ключа 632415.

Так как ключ содержит 6 цифр дополним сообщение до длины кратной 6 произвольно выбранными буквами QKJEU и запишем сообщение в таблицу, содержащую 6 колонок, слева направо:

Для получения шифртекста выпишем каждую колонку из таблицы в порядке, определяемом ключом: EVLNE ACDTK ESEAQ ROFOJ DEECU WIREE.

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

Криптоанализ перестановочного шифра

Лучшим способом атаки шифра вертикальной перестановки будет полный перебор всех возможных ключей малой длины (до 9 включительно — около 400 000 вариантов). В случае, если перебор не дал желаемых результатов, можно воспользоваться поиском восхождением к вершине.

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

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

Шифр Плейфера — подстановочный шифр, реализующий замену биграмм. Для шифрования необходим ключ, представляющий собой таблицу букв размером 5*5 (без буквы J).

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

Зашифруем пару ‘WN’. Буква W расположена в первой строке и первой колонке. А буква N находится во второй строке и третьей колонке. Эти буквы образуют прямоугольник с углами W-E-S-N. Следовательно, при шифровании биграмма WN преобразовывается в биграмму ES.

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

Криптоанализ шифра Плейфера

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

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

Суть алгоритма сводится к следующим действиям:

  1. Выбирается случайная последовательность букв — основной-ключ. Шифртекст расшифровывается с помощью основного ключа. Для получившегося текста вычисляется коэффициент, характеризующий вероятность принадлежности к естественному языку.
  2. Основной ключ подвергается небольшим изменениям (перестановка двух произвольно выбранных букв, перестановка столбцов или строк). Производится расшифровка и вычисляется коэффициент полученного текста.
  3. Если коэффициент выше сохраненного значения, то основной ключ заменяется на модифицированный вариант.
  4. В противном случае замена основного ключа на модифицированный происходит с вероятностью, напрямую зависящей от разницы коэффициентов основного и модифицированного ключей.
  5. Шаги 2-4 повторяются около 50 000 раз.

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

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

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

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

Шифр Виженера представляет собой последовательность нескольких шифров Цезаря с различными ключами.

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

Цифры ключа определяют на сколько позиций необходимо сдвинуть букву в алфавите для получения шифртекста. Букву H необходимо сместить на одну позицию — в результате получается буква I, букву A на 2 позиции — буква C, и так далее. Осуществив все подстановки, получим в результате шифртекст: ICESCKBDU.

Криптоанализ шифра Виженера

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

Для этого можно воспользоваться индексом совпадений.

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

,

где fi — количество появлений i-й буквы алфавита в тексте, а n — количество букв в тексте.

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

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

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

P.S.

Исходники всех вышеописанных шифров и атак на них можно посмотреть на GitHub.
Ссылки

1. Криптоанализ классических шифров на сайте practicalcryptography.com.
2. Частотные характеристики английского языка на сайте practicalcryptography.com
3. Описание алгоритма имитации отжига на wikipedia
4. Описание поиска восхождением к вершине на wikipedia

Введение в криптографию и шифрование, часть первая. Лекция в Яндексе

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


Мы впервые публикуем эту лекцию вместе с расшифровкой. Начнём с первой части. Под катом вы найдёте текст и часть слайдов.

Я когда-то читал в МГУ лекции по крипте, и они занимали у меня по полгода. Я попытаюсь вам всё рассказать за два с половиной часа. Никогда этого не делал. Вот и попробуем.

Кто понимает, что такое DES? AES? TLS? Биноминальное отображение?

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

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

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

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

Когда люди говорят про крипту вообще, есть несколько фундаментальных принципов. Один из них — принцип Керкгоффса, который говорит, что open source в криптографии очень важен. Если точнее, он дает общее знание об устройстве протоколов. Смысл очень простой: криптографические алгоритмы, которые используются в той или иной системе, не должны быть секретом, обеспечивающим ее устойчивость. В идеале необходимо строить системы так, чтобы их криптографическая сторона была полностью известна атакующему и единственным секретом являлся криптографический ключ, который в данной системе используется.

Современные и коммерчески доступные системы шифрования — все или почти все или лучшие из них — построены из компонент, устройство и принцип работы которых хорошо известны. Единственная секретная вещь в них — ключ шифрования. Есть только одно известное мне значимое исключение — набор секретных криптографических протоколов для всевозможных государственных организаций. В США это называется NSA suite B, а в России это всякие странные секретные алгоритмы шифрования, которые до определенной степени используются военными и государственными органами.

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

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

Первый криптографический примитив — симметричные шифры.

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

Какие здесь важные нюансы? В большинстве распространенных алгоритмов симметричного шифрования, с которыми можно столкнуться, размер шифротекста всегда равен размеру открытого текста. Современные алгоритмы шифрования оперируют размерами ключей. Размер ключей измеряется в битах. Современный размер — от 128 до 256 бит для алгоритмов симметричного шифрования. Об остальном, в том числе о размере блока, мы поговорим позже.

Исторически, в условном IV веке до нашей эры, существовало два метода дизайна шифров: шифры подстановки и перестановки. Шифры подстановки — алгоритм, где в те времена заменяли одну букву сообщения на другую по какому-то принципу. Простой шифр подстановки — по таблице: берем таблицу, где написано, что А меняем на Я, Б на Ю и т. д. Дальше по этой таблице шифруем, по ней же дешифруем.

Как вы считаете, с точки зрения размера ключа насколько это сложный алгоритм? Сколько вариантов ключей существует? Порядок факториала длины алфавита. Мы берем таблицу. Как мы ее строим? Допустим, есть таблица на 26 символов. Букву А можем заменить на любой из них, букву Б — на любой из оставшихся 25, С — на любой из оставшихся 24… Получаем 26*25*24*… — то есть факториал от 26. Факториал размерности алфавита.

Если взять log226!, это будет очень много. Думаю, вы точно получите в районе 100 бит длины ключа, а то и поболее. Оказалось, что с точки зрения формального представления стойкости указанный алгоритм шифрования — довольно неплохой. 100 бит — приемлемо. При этом все, наверное, в детстве или юности, когда сталкивались с кодировками, видели, что такие алгоритмы дешифруются тривиально. Проблем с расшифровкой нет.

Долго существовали всякие алгоритмы подстановки в разных конструкциях. Одним из них, еще более примитивным, является шифр Цезаря, где таблица формируется не случайной перестановкой символов, а сдвигом на три символа: А меняется на D, B на Е и т. д. Понятно, что шифр Цезаря вместе со всеми его вариантами перебрать очень легко: в отличие от табличной подстановки, в ключе Цезаря всего 25 вариантов при 26 буквах в алфавите — не считая тривиального шифрования самого в себя. И его как раз можно перебрать полным перебором. Здесь есть некоторая сложность.

Почему шифр табличной подстановки такой простой? Откуда возникает проблема, при которой мы можем легко, даже не зная ничего про криптографию, расшифровать табличную подстановку? Дело в частотном анализе. Есть самые распространенные буквы — какая-нибудь И или Е. Их распространенность велика, гласные встречаются намного чаще, чем согласные, и существуют негативные пары, никогда не встречающиеся в естественных языках, — что-то вроде ЬЪ. Я даже давал студентам задание сделать автоматический дешифратор шифра подстановки, и, в принципе, многие справлялись.

В чем проблема? Надо статистику распределения букв исказить, чтобы распространенные буквы не так светились в зашифрованном тексте. Очевидный способ: давайте будем шифровать самые часто встречающиеся буквы не в один символ, а в пять разных, например. Если буква встречается в среднем в пять раз чаще, то давайте по очереди — сначала в первый символ будем зашифровывать, потом во второй, в третий и т. д. Далее у нас получится маппинг букв не 1 к 1, а, условно, 26 к 50. Статистика, таким образом, нарушится. Перед нами первый пример полиалфавитного шифра, который как-то работал. Однако с ним есть довольно много проблем, а главное, очень неудобно работать с таблицей.

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

Берем в качестве ключа слово ВАСЯ. Берем сообщение МАША. Задействуем шифр Цезаря, но отсчитывая от этих букв. Например, В — третья буква в алфавите. Мы должны сдвинуть на три буквы соответствующую букву в открытом тексте. М сдвигается в П. А в А. Ш — на 16, перескочим букву А, получим, условно, Д. Я сдвинет А в Я. ПАДЯ.

Что удобно в получившемся шифре? Здесь было две одинаковых буквы, но в результате они зашифровались в разные. Это классно, потому что размывает статистику. Метод хорошо работал, пока где-то в XIX веке, буквально недавно на фоне истории криптографии, не придумали, как его ломать. Если посмотреть на сообщение из нескольких десятков слов, а ключ довольно короткий, то вся конструкция выглядит как несколько шифров Цезаря. Мы говорим: окей, давайте каждую четвертую букву — первую, пятую, девятую — рассматривать как шифр Цезаря. И поищем среди них статистические закономерности. Мы обязательно их найдем. Потом возьмем вторую, шестую, десятую и так далее. Опять найдем. Тем самым мы восстановим ключ. Единственная проблема — понять, какой он длины. Это не очень сложно, ну какой он может быть длины? Ну 4, ну 10 символов. Перебрать 6 вариантов от 4 до 10 не очень сложно. Простая атака — она была доступна и без компьютеров, просто за счет ручки и листа бумаги.

Как из этой штуки сделать невзламываемый шифр? Взять ключ размера текста. Персонаж по имени Клод Шэннон в ХХ веке, в 1946 году, написал классическую первую работу по криптографии как по разделу математики, где сформулировал теорему. Длина ключа равна длине сообщения — он использовал XOR вместо сложения по модулю, равному длине алфавита, но в данной ситуации это не очень принципиально. Ключ сгенерирован случайным образом, является последовательностью случайных бит, и на выходе тоже получится случайная последовательность бит. Теорема: если у нас есть такой ключ, то подобная конструкция является абсолютно стойкой. Доказательство не очень сложное, но сейчас не буду про него говорить.

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

Возьмем два сообщения: МАША, зашифрованная ключом ВАСЯ, и другое слово, у которого ключ тоже был ВАСЯ, — ВЕРА. Получим примерно следующее: ЗЕШЯ. Сложим два полученных сообщения, причем так, чтобы два ключа взаимно удалились. В итоге получим лишь разницу между осмысленным шифротекстом и осмысленным шифротекстом. На XOR это делается удобнее, чем на сложении по длине алфавита, но разницы практически никакой.

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

Помимо шифров подстановки, были еще шифры перестановки. С ними тоже все довольно просто. Берем сообщение ВАСЯИ, записываем его в блок какой-то длины, например в ДИДОМ, и считываем результат так же.

Не бог весть какая штука. Как ее ломать, тоже понятно — переберем все возможные варианты перестановок. Тут их не очень много. Берем длину блока, подбираем и восстанавливаем.

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

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

Если говорить про современные шифры, они делятся на две категории: поточные и блочные. Поточный шифр устроен так, что фактически представляет собой генератор случайных чисел, выход которого мы складываем по модулю 2, «ксорим», с нашим шифротекстом, как видно у меня на слайде. Ранее я сказал: если длина получившегося ключевого потока — она же ключ — абсолютно случайная, никогда повторно не используется и ее длина равна длине сообщения, то у нас получился абсолютно стойкий шифр, невзламываемый.

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

Из этой истории есть одно занятное исключение — шифроблокноты. Речь идет о настоящей шпионской истории про настоящий шпионаж. Некие люди, которым нужна абсолютно устойчивая коммуникация, генерируют случайные числа — например, буквальным бросанием кубика или буквальным выниманием шаров из барабана, как в лото. Создают два листа, где печатают эти случайные числа. Один лист отдают получателю, а второй оставляют у отправителя. При желании пообщаться они используют этот поток случайных чисел в качестве ключевого потока. Нет, история взята не из совсем далекого прошлого. У меня есть настоящий радиоперехват от 15 октября 2014 года: 7 2 6, 7 2 6, 7 2 6. Это позывной. 4 8 3, 4 8 3, 4 8 3. Это номер шифроблокнота. 5 0, 5 0, 5 0. Это количество слов. 8 4 4 7 9 8 4 4 7 9 2 0 5 1 4 2 0 5 1 4 и т. д. 50 таких числовых групп. Не знаю где, где-то не в России сидел какой-нибудь человек с ручкой и карандашом у обычного радиоприемника и записывал эти цифры. Записав их, он достал похожую штуку, сложил их по модулю 10 и получил свое сообщение. Другими словами, это реально работает, и подобное сообщение нельзя взломать. Если действительно были сгенерированы хорошие случайные числа и он впоследстии сжег бумажку с ключом, то осуществить взлом нельзя никак, совсем.

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

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

Самый исторически распространенный алгоритм подобного рода называется RC4. Он был разработан Роном Ривестом лет 25 назад и активно использовался очень долго, был самым распространенным алгоритмом для TLS, всех его различных вариантов, включая HTTPS. Но в последнее время RC4 начал показывать свой возраст. Для него существует некоторое количество атак. Он активно используется в WEP. Была одна хорошая лекция Антона, история, которая показывает: плохое применение пристойного даже по нынешним меркам алгоритма шифрования приводит к тому, что компрометируется вся система.

RC4 устроен несложно. На слайде целиком описана его работа. Есть внутренний байтовый стейт из 256 байт. На каждом шаге этого стейта есть два числа, два указателя на разные байты в стейте. И на каждом шаге происходит сложение между этими числами — они помещаются в некоторое место стейта. Полученный оттуда байт является следующим байтом в числовой последовательности. Вращая эту ручку таким образом, выполняя подобное действие на каждом шаге, мы получаем каждый следующий байт. Мы можем получать следующий байт числовой последовательности вечно, потоком.

Большое достоинство RC4 — в том, что он целиком внутрибайтовый, а значит, его программная реализация работает довольно быстро — сильно быстрее, в разы, если не в десятки раз быстрее, чем сравнимый и существовавший примерно в одно время с ним шифр DES. Поэтому RC4 и получил такое распространение. Он долго был коммерческим секретом компании RSA, но потом, где-то в районе 90-х годов, некие люди анонимно опубликовали исходники его устройства в списке рассылки cypherpunks. В результате возникло много драмы, были крики, мол, как же так, какие-то неприличные люди украли интеллектуальную собственность компании RSA и опубликовали ее. RSA начала грозить всем патентами, всевозможными юридическими преследованиями. Чтобы их избежать, все реализации алгоритма, которые находятся в опенсорсе, называются не RC4, а ARC4 или ARCFOUR. А — alleged. Речь идет о шифре, который на всех тестовых кейсах совпадает с RC4, но технически вроде как им не является.

Если вы конфигурируете какой-нибудь SSH или OpenSSL, вы в нем не найдете упоминания RC4, а найдете ARC4 или что-то подобное. Несложная конструкция, он уже старенький, на него сейчас есть атаки, и он не очень рекомендуется к использованию.

Было несколько попыток его заменить. Наверное, на мой предвзятый взгляд самым успешным стал шифр Salsa20 и несколько его последователей от широко известного в узких кругах персонажа Дэна Берштайна. Линуксоидам он обычно известен как автор qmail.

Salsa20 устроен сложнее, чем DES. Его блок-схема сложная, но он обладает несколькими интересными и классными свойствами. Для начала, он всегда выполняется за конечное время, каждый его раунд, что немаловажно для защиты от тайминг-атак. Это такие атаки, где атакующий наблюдает поведение системы шифрования, скармливая ей разные шифротексты или разные ключи за этим черным ящиком. И, понимая изменения во времени ответа или в энергопотреблении системы, он может делать выводы о том, какие именно процессы произошли внутри. Если вы думаете, что атака сильно надуманная, это не так. Очень широко распространены атаки подобного рода на смарт-карты — очень удобные, поскольку у атакующего есть полный доступ к коробке. Единственное, что он, как правило, не может в ней сделать, — прочитать сам ключ. Это сложно, а делать все остальное он может — подавать туда разные сообщения и пытаться их расшифровать.

Salsa20 устроен так, чтобы он всегда выполнялся за константное одинаковое время. Внутри он состоит всего из трех примитивов: это сдвиг на константное время, а также сложение по модулю 2 и по модулю 32, 32-битных слов. Скорость Salsa20 еще выше, чем у RC4. Он пока что не получил такого широкого распространения в общепринятой криптографии — у нас нет cipher suite для TLS, использующих Salsa20, — но все равно потихоньку становится мейнстримом. Указанный шифр стал одним из победителей конкурса eSTREAM по выбору лучшего поточного шифра. Их там было четыре, и Salsa — один из них. Он потихоньку начинает появляться во всяких опенсорс-продуктах. Возможно, скоро — может, через пару лет — появятся даже cipher suite в TLS с Salsa20. Мне он очень нравится.

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

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

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

В Salsa указанная проблема решена, поскольку в нем на вход поступает в том числе и номер блока, который надо сгенерировать. Дальше к номеру блока 20 раз применяется алгоритм. 20 раундов — и мы получаем 512 бит выходного потока.

Самая успешная атака — в 8 раундов. Сам он 256-битный, а сложность атаки в 8 раундов — 250 или 251 бит. Считается, что он очень устойчивый, хороший. Публичный криптоанализ на него есть. Несмотря на всю одиозность личности Берштайна в этом аспекте, мне кажется, что штука хорошая и у нее большее будущее.

Исторически поточных шифров было много. Они первые не только в коммерческом шифровании, но и в военном. Там использовалось то, что называлось линейными регистрами сдвига.

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

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

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

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

Размер блока в современных шифрах — как правило, 128 бит. Бывают разные вариации, но как правило, речь идет про 128 или 256 бит, не больше и не меньше. Размер ключа — точно такой же, как для поточных алгоритмов: 128 или 256 бит в современных реализациях, от и до.

Из всех широко распространенных блочных шифров сейчас можно назвать два — DES и AES. DES очень старый шифр, ровесник RC4. У DES сейчас размер блока — 64 бита, а размер ключа — 56 бит. Создан он был в компании IBM под именем Люцифер. Когда в IBM его дизайном занимался Хорст Фейстель, они предложили выбрать 128 бит в качестве размера блока. А размер ключа был изменяемый, от 124 до 192 бит.

Когда DES начал проходит стандартизацию, его подали на проверку в том числе и в АНБ. Оттуда он вернулся с уменьшенным до 64 бит размером блока и уменьшенным до 56 бит размером ключа.

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

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

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

У нее есть несколько интересных достоинств. Первое важное достоинство: функция F может быть любой. Она не должна обладать свойствами обратимости, она может и не быть линейной или нелинейной. Все равно шифр остается симметричным.

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

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

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

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

Потом мы его ксорим с раундовым ключом, размер которого — тоже 48 бит, и получаем 48-битное значение.
Затем оно попадает в набор функций, которые называются S-боксы и преобразуют каждый бит входа в четыре бита выхода. Следовательно, на выходе мы из 48 бит снова получаем 32 бита.

И наконец, окончательная перестановка P. Она опять перемешивает 32 бита между собой. Все очень несложно, раундовая функция максимально простая.

Самое интересное ее свойство заключается в указанных S-боксах: задумано очень сложное превращение 6 бит в 4. Если посмотреть на всю конструкцию, видно, что она состоит из XOR и пары перестановок. Если бы S-боксы были простыми, весь DES фактически представлял бы собой некоторый набор линейных преобразований. Его можно было бы представить как матрицу, на которую мы умножаем наш открытый текст, получая шифротекст. И тогда атака на DES была бы тривиальной: требовалось бы просто подобрать матрицу.

Вся нелинейность сосредоточена в S-боксах, подобранных специальным образом. Существуют разные анекдоты о том, как именно они подбирались. В частности, примерно через 10 лет после того, как DES был опубликован и стандартизован, криптографы нашли новый тип атак — дифференциальный криптоанализ. Суть атаки очень простая: мы делаем мелкие изменения в открытом тексте — меняя, к примеру, значение одного бита с 0 на 1 — и смотрим, что происходит с шифротекстом. Выяснилось, что в идеальном шифре изменение одного бита с 0 на 1 должно приводить к изменению ровно половины бит шифротекста. Выяснилось, что DES, хоть он и был сделан перед тем, как открыли дифференциальный криптоанализ, оказался устойчивым к этому типу атак. В итоге в свое время возникла очередная волна паранойи: мол, АНБ еще за 10 лет до открытых криптографов знало про существование дифференциального криптоанализа, и вы представляете себе, что оно может знать сейчас.

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

56 бит сейчас уже можно просто перебрать на кластере машин общего назначения — может, даже на одном. И это плохо. Что можно предпринять?

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

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

Окей, 56 бит. Давайте возьмем два — k1 и k2. 56 + 56 = 112 бит. 112 бит даже по нынешним меркам — вполне приемлемая длина ключа. Можно считать нормальным всё, что превышает 100 бит. Так почему нельзя использовать два шифрования, 112 бит?

Одно шифрование DES состоит из 16 раундов. Сеть применяется 16 раз. Изменения слева направо происходят 16 раз. И он — не группа. Есть доказательство того, что не существует такого ключа k3, которым мы могли бы расшифровать текст, последовательно зашифрованный выбранными нами ключами k1 и k2.

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

Эффективная стойкость алгоритма — не 112 бит, а 57, если у нас достаточно памяти. Нужно довольно много памяти, но тем не менее. Поэтому решили — так работать нельзя, давайте будем шифровать три раза: k1, k2, k3. Конструкция называется Triple DES. Технически она может быть устроена по-разному. Поскольку в DES шифрование и дешифрование — одно и то же, реальные алгоритмы иногда выглядят так: зашифровать, расшифровать и снова расшифровать — чтобы выполнять операции в аппаратных реализациях было проще.

Наша обратная реализация Triple DES превратится в аппаратную реализацию DES. Это может быть очень удобно в разных ситуациях для задачи обратной совместимости.

Где применялся DES? Вообще везде. Его до сих пор иногда можно пронаблюдать для TLS, существуют cipher suite для TLS, использующие Triple DES и DES. Но там он активно отмирает, поскольку речь идет про софт. Софт легко апдейтится.

А вот в банкоматах он отмирал очень долго, и я не уверен, что окончательно умер. Не знаю, нужна ли отдельная лекция о том, как указанная конструкция устроена в банкоматах. Если коротко, клавиатура, где вы вводите PIN, — самодостаточная вещь в себе. В нее загружены ключи, и наружу она выдает не PIN, а конструкцию PIN-блок. Конструкция зашифрована — например, через DES. Поскольку банкоматов огромное количество, то среди них много старых и до сих пор можно встретить банкомат, где внутри коробки реализован даже не Triple DES, а обычный DES.

Однажды DES стал показывать свой возраст, с ним стало тяжело, и люди решили придумать нечто поновее. Американская контора по стандартизации, которая называется NIST, сказала: давайте проведем конкурс и выберем новый классный шифр. Им стал AES.

DES расшифровывается как digital encrypted standard. AES — advanced encrypted standard. Размер блока в AES — 128 бит, а не 64. Это важно с точки зрения криптографии. Размер ключа у AES — 128, 192 или 256 бит. В AES не используется сеть Фейстеля, но он тоже многораундовый, в нем тоже несколько раз повторяются относительно примитивные операции. Для 128 бит используется 10 раундов, для 256 — 14.

Сейчас покажу, как устроен каждый раунд. Первый и последний раунды чуть отличаются от стандартной схемы — тому есть причины.

Как и в DES, в каждом раунде AES есть свои раундовые ключи. Все они генерируются из ключа шифрования для алгоритма. В этом месте AES работает так же, как DES. Берется 128-битный ключ, из него генерируется 10 подключей для 10 раундов. Каждый подключ, как и в DES, применяется на каждом конкретном раунде.

Каждый раунд состоит из четырех довольно простых операций. Первый раунд — подстановка по специальной таблице.

В AES мы строим байтовую матрицу размером 4 на 4. Каждый элемент матрицы — байт. Всего получается 16 байт или 128 бит. Они и составляют блок AES целиком.

Вторая операция — побайтовый сдвиг.

Устроен он несложно, примитивно. Мы берем матрицу 4 на 4. Первый ряд остается без изменений, второй ряд сдвигается на 1 байт влево, третий — на 2 байта, четвертый — на 3, циклично.

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

Четвертая, вновь очень простая операция — XOR каждого байта в каждой колонке с соответствующим байтом ключа. Получается результат.

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

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

Мы повторяем 4 описанных шага 10 раз, и на выходе из 128-битного блока снова получаем 128-битный блок.

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

Производители современных процессоров, Intel и AMD, уже разработали ассемблерные инструкции для реализации AES внутри чипа, потому что стандарт довольно несложный. Как итог — AES еще быстрее. Если через DES на современной машинке мы можем зашифровать, например, 1-2 гигабита, то 10-гигабитный AES-шифратор находится рядом и коммерчески доступен обычным компаниям.

Блочный алгоритм шифрует блок в блок. Он берет блок на 128 или 64 бита и превращает его в блок на 128 или 64 бита.

А что мы будем делать, если потребуется больше, чем 16 байт?

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

Да, очевидно, побьем всё на блоки по 16 байт и зашифруем. Такое шифрование называется ECB — electronic code boot, когда каждый из блоков по 16 байт в случае AES или по 8 байт в случае DES шифруется независимо.

Шифруем каждый блок, получаем шифротекст, складываем шифротексты и получаем полный результат.

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

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

Мы не только берем ключ и открытый текст, но и генерируем случайное число, которое не является секретным. Оно размером с блок. Называется оно инициализационным вектором.

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

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

Однако у CBC есть несколько проблем.

О размере блока. Представьте: мы начали шифровать и, допустим, у нас DES. Если бы DES был идеальным алгоритмом шифрования, выход DES выглядел бы как равномерно распределенные случайные числа длиной 64 бита. Какова вероятность, что в выборке из равномерно распределенных случайных чисел длиной 64 бита два числа совпадут для одной операции? 1/(264). А если мы сравниваем три числа? Давайте пока прервемся.

Шифр Бэкона — Википедия

Сэр Фрэнсис Бэкон

Шифр Бэкона (или «двухлитерный шифр»[1]) — метод сокрытия секретного сообщения, придуманный Фрэнсисом Бэконом в начале XVII века. Он разрабатывал шифры, которые бы позволяли передавать секретные сообщения в обычных текстах так, чтобы никто не знал об этих сообщениях. Шифр базируется на двоичном кодировании алфавита символами «A» и «B», которым можно сопоставить «0» и «1». Затем секретное послание «прячется» в открытом тексте, с помощью одного из способов сокрытия сообщений[⇨][2].

Шифр Бэкона связан с так называемым Шекспировским вопросом. Существует ряд до сих пор недоказанных предположений об авторстве ряда произведений Уильяма Шекспира. В том числе, согласно «Бэконианской версии», автором пьес Шекспира был Фрэнсис Бэкон[1][3][4][5].

Шифр впервые встречается в работе Бэкона: «О преумножении наук» (1605) и более подробно описан в сочинении «О достоинстве и преумножении наук» (1623)[1]. В своих трудах Ф. Бэкон сформулировал три требования, которым должен удовлетворять любой «хороший» шифр[1]. Он должен быть:

  1. Незамысловатым и несложным в работе.
  2. Надёжным и не поддающимся дешифровке.
  3. По возможности не вызывать никаких подозрений.

Шифр, обладающий третьим свойством, является «тайным» — то есть о его существовании никто не догадывается. Над созданием именно таких шифров и трудился Ф. Бэкон. В итоге он пришёл к примерно следующему способу шифрования[2]:

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

Для реализации основного принципа стеганографии (то есть сокрытия факта существования секретного сообщения)[6] конечный текст должен иметь какой-то конкретный смысл, а не выглядеть произвольным набором символов. Создание такого «осмысленного» текста является наиболее трудоёмкой задачей при кодировании шифром Бэкона[источник не указан 2670 дней].

Для кодирования сообщений Фрэнсис Бэкон предложил каждую букву текста заменять на группу из пяти символов «A» или «B» (так как последовательностью из пяти двоичных символов можно закодировать 25 = 32 символа, что достаточно для шифрования 26 букв английского алфавита)[2]. Это можно сделать несколькими способами:

Алфавитный метод[править | править код]

Во времена Фрэнсиса Бэкона английский алфавит состоял из 24 букв: буквы «I» и «J», а также «U» и «V» были попарно неотличимы и использовались одна вместо другой[2].

aAAAAAgAABBAnABBAAtBAABA
bAAAABhAABBBoABBABu + vBAABB
cAAABAi + jABAAApABBBAwBABAA
dAAABBkABAABqABBBBxBABAB
eAABAAlABABArBAAAAyBABBA
fAABABmABABBsBAAABzBABBB

Bариант шифра Бэкона, использующий современный английский алфавит:

aAAAAAgAABBAmABBAAsBAABAyBBAAA
bAAAABhAABBBnABBABtBAABBzBBAAB
cAAABAiABAAAoABBBAuBABAA
dAAABBjABAABpABBBBvBABAB
eAABAAkABABAqBAAAAwBABBA
fAABABlABABBrBAAABxBABBB

Циклические последовательности[править | править код]

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

Помимо составления алфавита шифра, существует более сложный метод сопоставления буквам последовательностей из 5 символов «A» и «B»[7].

Пусть имеется цепочка из 32 символов, такая, что в ней не существует повторяющихся блоков по 5 элементов. Например:

aaaaabbbbbabbbaabbababbaaababaab

.

Её можно рассматривать как циклическую соединив начало с концом. Для наглядности эта цепочка изображается в виде кольца символов. Напротив каждого символа изображается буква английского алфавита. Для символов, оставшихся без букв, добавляются цифры от 1 до 6. Теперь эта цепочка будет использоваться в качестве ключа для кодирования букв английского алфавита[7].

Кодироваться каждая буква будет цепочкой из 5 символов начиная с этой буквы (по или против часовой стрелки). Например для буквы «R» получаем цепочку: babab, для «K» — abbba и т. д.

Существует множество способов сокрытия секретного сообщения в обычном тексте. Вот некоторые из них:

Способ 1[править | править код]

Отрывок из письма Цицерона

Его предложил сам Фрэнсис Бэкон. Пусть в тексте используются два различных типографских шрифта: один для кодирования символа «А», другой — для «B»[2]. В простейшем случае можно печатать курсивные буквы вместо «А» и прямые вместо «B». Например фамилия:

B a c o n

B A A A B

будет соответствовать букве «S».

Примером использования такого метода является отрывок из письма (лат.) [1] (рус.) (56 г. до н. э.) Цицерона, приведённый Бэконом в своих трудах[8].

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

Всё пропало. Миндар убит. Съестные припасы солдат исчерпаны. Мы не можем раздобыть провизии и, следовательно, не можем оставаться здесь дольше.

Способ 2[править | править код]

Обычная фраза:

вот и Наступила ДолГОжДаННая зима

Текст разбивается по 5 букв, пробелы удаляются:

вотиН аступ илаДо лГОжД аННая зима

Большим буквам в тексте, ставятся в соответствие символ «B», а маленьким — «A»[7]. Получается сообщение вида:

AAAAB AAAAA AAABA ABBAB ABBAA

При использовании первого варианта кодирования алфавита получается секретное сообщение:

bacon

Способ 3[править | править код]

Теперь правило следующее: буквы алфавита с «A» по «M» соответствуют «А», а буквы с «N» по «Z» — символу «B»[7]. Секретное сообщение шифруется так:

I set the chair right.

A BAB BAA AAAAB BAAAB

Последовательность символов разбивается на части по 5 штук:

ABABB AAAAA ABBAA AB

Последние 2 символа отбрасываются, тогда по первому варианту кодирования алфавита получается секретное сообщение:

man

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

Способ 4[править | править код]

Теперь рассмотрим следующее правило: буквам стоящим на нечётных местах в алфавите (a, c, e…) будет сопоставляться символ «A», на чётных позициях (b, d, f…) — «B»[7].

При таком способе сокрытия текста слово:

knife

ABABA

будет кодировать букву «K».

  • Слабая криптостойкость — сложная часть дешифровки заключается в определении способа сокрытия сообщения. Как только он определён, сообщение легко раскладывается по алфавиту.
  • Длина передаваемого текста в пять раз больше длины секретного сообщения[7].
  • Одновременно и достоинством и недостатком шифра Бэкона является то, что в одном и том же шифротексте можно скрыть несколько сообщений[7]. Для примера рассмотрим следующее сообщение:

GkwRt ceUya porrE

Ключ — циклическая последовательность символов, приведённая выше:

aaaaabbbbbabbbaabbababbaaababaab

То есть Буква «А» кодируется как ааааа, «B» — aaaab, «C» — aaabb и т. д.

Теперь буквы стоящие на нечётных местах в алфавите (a, c, e…) обозначают символ «A», а буквы на чётных местах (b, d, f…) — «B» (Способ 4), получается последовательность двоичных символов, которая в результате расшифровки с помощью выбранного ключа преобразуется в секретное сообщение[7]:

aaabb aaaaa babba

C A T

Если же буква из первой половины алфавита означает символ «A», а из второй «B» (Способ 3), получается выражение, которое при расшифровке тем же ключом, что и в предыдущем случае, даёт слово «DOG»:

aabbb aabba bbbba

D O G

А если прописные буквы обозначают «A», а строчные — «B» (Способ 2), то в результате получается секретное сообщение «PIG»:

abbab bbabb bbbba

P I G

Зашифрованное сообщениеСпособ сокрытия сообщенияПоследовательность двоичных символовСекретное сообщение
GkwRt ceUya porrEСпособ 4aaabb aaaaa babbaC A T
GkwRt ceUya porrEСпособ 3aabbb aabba bbbbaD O G
GkwRt ceUya porrEСпособ 2abbab bbabb bbbbaP I G

Этот пример показывает, что из одного текста разными путями можно получить разные сообщения.

Согласно некоторым исследователям (их называют «Бэконисты» или «Бэконианцы») автором пьес Уильяма Шекспира является Сэр Френсис Бэкон. Наиболее известными представителями «бэконианской теории» являются: Игнатиус Доннелли, Элизабет Уэллс Гэллап.

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

  • На надгробной надписи могилы Уильяма Шекспира можно встретить двухшрифтовую печать[3], то есть тот самый шифр, над которым работал Ф. Бэкон:

Good Frend for Iesus SAKE forbeare

To diGG þE Dust Enclo-Ased He.RE.

Blese be THE Man þat spares TEs Stones

And curst be He þat moves my Bones.


Существует ряд исследовательских работ, посвящённых поиску зашифрованных сообщений в произведениях У. Шекспира (в том числе с помощью шифра Бэкона). Среди них выделяются следующие:

«Великая криптограмма» (1888 г.)[править | править код]

Книга «Великая криптограмма» написана известным в США политическим деятелем и писателем XIX века Игнатиусом Доннелли и опубликована в 1888 году. Он утверждал, что произведения У. Шекспира являются «огромной стеганограммой», и путём их «криптоанализа» можно найти доказательства того, что автором пьес является Фрэнсис Бэкон. Также И. Доннелли утверждал, что Ф. Бэкон не сумел публично признаться в своём авторстве в силу ряда причин: высокое социальное положение, репутация философа, политика и юриста и т. д.[5] Но Доннелли не сомневался, что с помощью стеганографии Бэкон запечатлил своё авторство в пьесах[4].

И. Доннелли пытался найти «корневые» числа, оперируя которыми, хотел обнаружить ключ к секретным сообщениям в пьесах У. Шекспира. Исходя из косвенных умозаключений, никак не разъяснённых на страницах своей книги, И. Доннелли выбрал в качестве «основных» чисел: 505, 506, 513, 516, 523. Производя различные математические операции с этими числами (вычитание констант, умножение на множители, вычитание количества слов, написанных курсивом на данной странице и т. п.) он получал число, якобы указывающее на номер слова из зашифрованного текста. При этом автор не уточнял, почему именно такие математические операции необходимо произвести для получения шифротекста[4]. Таким запутанным путём И. Доннелли извлёк из произведений Шекспира следующие фразы:

«Шекспир не написал ни одного слова в этих пьесах».

«Я, Ф. Бэкон — Автор этих пьес».

и т. п.

«Великая криптограмма» была подвергнута жёсткой критике и, несмотря на солидный авторитет автора, провалилась в продаже. Житель штата Миннесота Джозеф Пайл написал свою собственную книгу — «Крошечная Криптограмма», спародировав не только название, но и способы «криптоанализа» книги И. Доннелли[4]. С помощью них Пайл «расшифровал» в «Гамлете» следующее секретное сообщение:

«Доннелли, писатель, политик и шарлатан, откроет тайну этой пьесы».

Ещё одно опровержение работ И. Доннелли написал другой гражданин США — преподобный А. Николсон[4]. Он использовал одно из «корневых» чисел Доннелли и даже работал на тех же страницах, что и автор «Великой Криптограммы». В итоге Николсон получил следующее:

«Г-н Уильям Шекспир написал эту пьесу и работал у занавеса».

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

«Двухбуквенный шифр сэра Фрэнсиса Бэкона, обнаруженный в его трудах и расшифрованный г-жой Элизабет Гэллап» (1899 г.)[править | править код]

Писательница и директор средней школы Элизабет Уэлс Гэллап (англ. Elizabeth Wells Gallup), окончившая Сорбоннский и Маргбурский университеты, была первой из бэконианцев, кто решил для поиска «секретных посланий» в произведениях Уильяма Шекспира использовать двухбуквенный шифр, придуманный самим Бэконом. Гэллап искала в пьесах тексты написанные различными типографскими шрифтами и раскладывала их по алфавиту шифра Бэкона. Например, пролог к пьесе «Троил и Крессида» почти целиком был набран курсивом[4]. В результате своей работы Э. Гэллап получила следующие зашифрованные сообщения:

«Королева Елизавета — моя настоящая мать, и я законный наследник трона…

…Найдите зашифрованную повесть, содержащуюся в моих книгах. Она рассказывает о великих тайнах, каждая из которых, будь она передана открыто, стоила бы мне жизни. Ф. Бэкон».

Согласно найденным Э. Гэллап «секретным» сообщениям, Бэкон спрятал рукописи пьес в своём лондонском замке. В 1907 году она отправилась на поиски рукописей, но к положительному результату они не привели[4].

«Исследование шекспировских шифров» (1957 г.)[править | править код]

Известные американские криптографы Уильям Фридман и его жена Элизабет Фридман, поставили перед собой задачу выяснить, был ли кем-либо обнаружен в произведениях Шекспира «настоящий шифр», вскрытие которого позволило бы подвергнуть сомнению авторство Шекспира. Под словами «настоящий шифр» Фридманы понимали[4]:

  • Первоначальный открытый текст имеет смысл
  • Результат расшифровки — единственный в своем роде (не должен представлять один из нескольких вариантов дешифрования)

В своей книге (1957) Фридманы рассмотрели исследования множества таких бэконистов как: Орвилл Оуэн (англ. Orville Ward Owen), Уолтер Аренсберг (англ. Walter Conrad Arensberg), Эдвин Дэрнинг-Лоуренс (англ. Edwin Durning-Lawrence) и других. Логических рассуждений, подтверждающих Бэконианскую версию, Фридманы не обнаружили. И даже наоборот, множество бэконистких доказательств было поставлено под сомнение[4].

  1. 1 2 3 4 Гарднер, 1992, с. 21.
  2. 1 2 3 4 5 Гарднер, 1992, с. 22.
  3. 1 2 Бабаш, Шанкин.
  4. 1 2 3 4 5 6 7 8 9 Кан, 2000.
  5. 1 2 Donnelly, 1888.
  6. Редакция THG. Стеганография: как незаметно спрятать информацию? (рус.) (недоступная ссылка) (15 марта 2008). Дата обращения 19 ноября 2012. Архивировано 31 октября 2012 года.
  7. 1 2 3 4 5 6 7 8 Гарднер, 1992, с. 25.
  8. ↑ Гарднер, 1992, с. 23.
  1. Бойль Р.,. Шифр Бэкона // Энциклопедический словарь Брокгауза и Ефрона : в 86 т. (82 т. и 4 доп.). — СПб., 1890—1907.
  2. Гарднер М. Шифр Бэкона (рус.) // Научно-популярный физико-математический журнал «Квант» : Журнал. — 1992. — № 8. — С. 21-26. — ISSN 0130-2221.
  3. Бабаш А. В., Шанкин Г. П. Рядом с Криптографией (рус.) // ИКСИ, кафедра «Криптографии», лекции по «Истории Криптографии» : Портал. — ИКСИ, кафедра «Криптографии».
  4. Дэвид Кан. Патологический криптоанализ // Взломщики кодов = The Codebreakers — The Story of Secret Writing. — Центрполиграф, 2000. — 480 с. — (Секретная папка). — 10 000 экз. — ISBN 5-227-00678-4. Архивная копия от 7 октября 2012 на Wayback Machine
  5. Donnelly, Ignatius. Part II, Chapter VII — The Reasons for Concealment // The great cryptogram : Francis Bacon’s cipher in the so-called Shakespeare plays. — Chicago: New York, London, R.S., Peale & company, 1888. — P. 246-259. — 1002 p. — ISBN 9780403004195.

Способы шифрования текста

Проект на тему:

«Способы шифрования текста»

МУНИЦИПАЛЬНОЕ БЮДЖЕТНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ «СРЕДНЯЯОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА №7» Г. ПЕНЗЫ

Выполнил: ученик 3 «В» класса

Цифра Максим

Руководитель: Махмудова

Регина Радиевна

Пенза, 2018

СОДЕРЖАНИЕ

Введение

Основная часть

Практическая часть

Заключение

Список использованных ресурсов

ВВЕДЕНИЕ

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

Сообщения шифруют по разным причинам.

Актуальность

Шифры — это не такое уж узкое ремесло. С ними сталкиваются многие из нас. От школьников до агентов служб безопасности.

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

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

Цель работы: познакомиться с разными видами шифров, изучить способы засекречивания информации.

Задачи:

узнать о различных способах шифрования;

изучить сферы использования шифров;

попытаться воспроизвести старинные способы шифрования;

осуществить шифровку текста.

Гипотеза

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

Методы исследования:

поисковый метод;

метод наблюдения;

метод анализа и синтеза;

ОСНОВНАЯ ЧАСТЬ

С ЧЕГО ВСЁ НАЧИНАЛОСЬ?

Вся эта хитрая наука называется криптографией.

Криптография — тайная система изменения письма с целью сделать текст непонятным для непосвященных лиц.

Крипто — (греч. kryptos — тайный, скрытый) — часть сложных слов, указывающая на какое-либо скрытое, тайное действие или состояние.

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

Основные способы криптографии

1. Применение чужих, малоизвестных алфавитов. В старинных рукописях кириллические буквы нередко заменялись глаголическими, греческими, латинскими. К этому же принципу следует отнести и специально изобретенные алфавиты.
2. Написание слов в обратном порядке— от конца к началу.
3. Очень часто направление письма изменяется с каждой строкой: первая пишется справа налево, вторая – слева направо, третья – справа налево и т.д.

4. Запись текста в виде некоторой фигуры, например спирали.
5. Замена одних букв другими по их месту в алфавите. Среди них наиболее известна тарабарская грамота, или литорея. Тарабарская грамота – вид тайнописи, употреблявшийся в Древней Руси. При этом способе шифровки согласные буквы располагались в два ряда.

6. Липограмма – способ письма с опущением гласных букв. Записанная в этой манере пословица «Дальше в лес, больше дров» будет выглядеть так: «Длш в лс, блш дрв»

ВИДЫ ШИФРОВ

УЗЕЛКОВОЕ ПИСЬМО

«Узелковое письмо» («кипу») получило распространение у индейцев Центральной Америки. Свои сообщения они также передавали в виде нитки, на которой завязывались разноцветные узелки, определявшие содержание сообщения.

Обозначения цветов:

Чёрный — время. То есть на чёрных нитях записывалось «время», «срок», годы, исторические события, понятие «от начала чего-либо (напр., от начала правления короля инков)»; чёрный цвет потому, что «кипу сообщало, сколько ночей прошло с момента того или иного события». Также — болезнь (при наличии ключа в главном шнуре). Этот цвет когда выцветает на нитях, то может быть перепутан с тёмно-тёмно-коричневым.

Кармазиновый (ярко-красный; малиновый) — обозначение Инки (Короля, Монархии). На такой нити могли располагаться также узлы «времени», то есть для указания на срок правления Инки. Например, 4 узла — это четыре года правления Инки. Этот цвет упоминается только в письменных источниках.

Бурый (в колониальных источниках известен как земляной) — обозначал «подчинение», «общественный порядок», «правление», «управление»; например, осуществление подчинения правителем Инкой таких-то провинций (во время завоевания). А также — картофель (при наличии ключа в главном шнуре кипу). Этот цвет упоминается только в письменных источниках; вероятнее всего, он сопоставим с одним из тонов коричневого цвета.[6]

Коричневый (точнее каштановый). В кипу встречается наравне с белым чаще всего.

Зелёный — «завоевание»; обозначение противника

Красный — война; собственное войско, а также собственные потери на войне.

Голубой.

Жёлтый — золото (например, военная добыча, состоявшая из золота весом во столько-то единиц измерения

Белый — серебро; мир.

ROT1

Этот шифр знаком многим детям. Ключ к шифру очень прост: каждая буква алфавита заменяется на последующую букву, поэтому, А заменяется на Б, Б заменяется на В, и так далее. «ROT1» буквально означает «вращать на 1 букву вперед по алфавиту». Фраза, «Тайны за семью печатями» превратится в секретную фразу « Убкоь иб тёнэя рёшбуанй». Этот шифр предназначен для развлечения, потому что его, легко понять и использовать, и столь же легко расшифровать, даже если ключ используется в обратном направлении. КОД МОРЗЕ (Азбука Морзе) t1574268093aa.jpgНесмотря на свое название, код Морзе не является кодом — это шифр. Каждая буква алфавита, цифры от 0 до 9 и некоторые символы пунктуации заменены на последовательность коротких и длинных звуковых сигналов, которые часто называют «точка и тире». А становится «• — », Б становится « — • • •» и так далее. В отличие от большинства других шифров, код Морзе не используется для сокрытия сообщений. Код Морзе начал широко применяться с изобретением телеграфа Сэмюэлем Морзе. Это было первое широко используемое электрическое приспособление для передачи сообщений на дальние расстояния. Телеграф позволял немедленно передавать сообщения о событиях, произошедшие в одной стране, по всему миру. Код Морзе изменил характер войны, позволяя обеспечивать мгновенную связь с войсками на большом расстоянии.

ПРАКТИЧЕСКАЯ ЧАСТЬ

Цель эксперимента: собрать рецепты невидимых чернил.

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

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

ЗАКЛЮЧЕНИЕ

И в заключении мне хочется сказать, что моя тема очень актуальна, потому что нас постоянно окружают различные знаки и символика.

Эта работа помогла мне познакомиться с различными видами шифров.

В общем, это вполне полезный для всех материал, а не пособие для начинающего шпиона.

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

СПИСОК ИСПОЛЬЗУЕМЫХ РЕСУРСОВ

https://pikabu.ru/story/starinnyie_metodyi_shifrovaniya_6108284

https://yandex.ru/images/search?text=шифр&noreask=1&lr=240

https://ru.wikipedia.org/wiki/Шифр

Г.Фролов. Тайна тайнописи. М. 1992 (электронный вариант).

Шифр простой замены — Википедия

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

Принцип работы шифра Цезаря состоит в «сдвиге» букв на 3 позиции. Для расшифровки нужно произвести обратную операцию Принцип работы программы ROT13, которая не предназначена для защиты, но лишь для скрытия текста (например, потенциально оскорбительного). Для восстановления текста алгоритм применяется повторно.

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

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

Является частным случаем шифра подстановки.

Отметим, что шифр простой замены не всегда подразумевает замену буквы на какую-то другую букву. Допускается использовать замену буквы на число. К примеру представим некий шифр-алфавит: А — 33; Б — 17; В — 8; Г — 16; Д — 2; Е — 15; Ё — 14; Ж — 13; З — 12; И — 98; Й — 10; К — 97; Л — 96; М — 24; Н — 0; О — 11; П — 5; Р — 25; С — 7; Т — 3; У — 64; Ф — 26; Х — 66; Ц — 69; Ч — 4; Ш — 6; Щ — 36; Ь — 21; Ъ — 22; Ы — 23; Э — 37; Ю — 39; Я — 18.

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

  • Шнайер Б. Подстановочные шифры // Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — С. 25—26. — 816 с. — 3000 экз. — ISBN 5-89392-055-4.
  • Статья: Чехова М.Р.: Кодирование информации. http://festival.1september.ru/articles/213248/

Шифр Цезаря — Википедия

Шифр Цезаря со сдвигом на 3:
A заменяется на D
B заменяется на E
и так далее
Z заменяется на C

Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования.

Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее.

Шифр назван в честь римского полководца Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.

Шаг шифрования, выполняемый шифром Цезаря, часто включается как часть более сложных схем, таких как шифр Виженера, и всё ещё имеет современное приложение в системе ROT13. Как и все моноалфавитные шифры, шифр Цезаря легко взламывается и не имеет почти никакого применения на практике.

Если сопоставить каждому символу алфавита его порядковый номер (нумеруя с 0), то шифрование и дешифрование можно выразить формулами модульной арифметики[1][2]:

y=(x+k) mod n{\displaystyle y=(x+k)\ \mod \ n}
x=(y−k) mod n,{\displaystyle x=(y-k)\ \mod \ n,}

где x{\displaystyle x} — символ открытого текста, y{\displaystyle y} — символ шифрованного текста, n{\displaystyle n} — мощность алфавита, а k{\displaystyle k} — ключ.

С точки зрения математики шифр Цезаря является частным случаем аффинного шифра.

Шифрование с использованием ключа k=3{\displaystyle k=3}. Буква «Е» «сдвигается» на три буквы вперёд и становится буквой «З». Твёрдый знак, перемещённый на три буквы вперёд, становится буквой «Э», буква «Я», перемещённая на три буквы вперёд, становится буквой «В», и так далее:

Исходный алфавит: А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
Шифрованный:      Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В 

Оригинальный текст:

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

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

Фэзыя йз зьи ахлш пвёнлш чугрщцкфнлш дцосн, жг еютзм ъгб.
Шифр Цезаря назван в честь Гая Юлия Цезаря, который использовал его с левым сдвигом на 3

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

«Если у него было что-либо конфиденциальное для передачи, то он записывал это шифром, то есть так изменял порядок букв алфавита, что нельзя было разобрать ни одно слово. Если кто-либо хотел дешифровать его и понять его значение, то он должен был подставлять четвертую букву алфавита, а именно, D, для A, и так далее, с другими буквами.
Гай Светоний Транквилл Жизнь двенадцати цезарей, Книга первая, гл. 56[3]
»

Его племянник, Август, также использовал этот шифр, но со сдвигом вправо на один, и он не повторялся к началу алфавита:

Есть доказательства, что Юлий Цезарь использовал также и более сложные схемы[4].

Неизвестно, насколько эффективным шифр Цезаря был в то время, но, вероятно, он был разумно безопасен, не в последнюю очередь благодаря тому, что большинство врагов Цезаря были неграмотными, и многие предполагали, что сообщения были написаны на неизвестном иностранном языке[5]. Нет никаких свидетельств того времени касательно методов взлома простых шифров подстановки. Самые ранние сохранившиеся записи о частотном анализе — это работы Ал-Кинди 9-го века об открытии частотного анализа[6].

Шифр Цезаря со сдвигом на один используется на обратной стороне мезузы, чтобы зашифровать имена Бога. Это может быть пережитком с раннего времени, когда еврейскому народу не разрешили иметь мезузы[7].

В XIX веке личная секция рекламных объявлений в газетах иногда использовалась, чтобы обмениваться сообщениями, зашифрованными с использованием простых шифров. Кан (1967) описывает случаи когда любители участвовали в секретных коммуникациях, зашифрованных с использованием шифра Цезаря в «Таймс»[8]. Даже позднее, в 1915, шифр Цезаря находил применение: российская армия использовала его как замену для более сложных шифров, которые оказались слишком сложными для войск; у немецких и австрийских криптоаналитиков были лишь небольшие трудности в расшифровке этих сообщений[9].

Шифр Цезаря со сдвигом тринадцать также используется в алгоритме ROT13, простом методе запутывания текста, широко используемого в Usenet, и используется скорее как способ сокрытия спойлеров, чем как метод шифрования[10]. Шифр Виженера использует шифр Цезаря с различными сдвигами в каждой позиции в тексте; значение сдвига определяется с помощью повторяющегося ключевого слова. Если ключевое слово такое же длинное, как и сообщение, сгенерировано случайным образом, содержится в тайне и используется лишь однократно — такая схема называется схема одноразовых блокнотов — и это единственная система шифрования, для которой доказана абсолютная криптографическая стойкость[11].

Ключевые слова короче чем сообщение (например, «Complete Victory», используемое Конфедерацией во время гражданской войны в США), вводят циклический образец, который мог бы быть обнаружен с помощью улучшенной версии частотного анализа[12].

В апреле 2006 беглый босс Мафии Бернардо Провенцано был пойман в Сицилии частично из-за криптоанализа его сообщений, написанных с использованием вариации шифра Цезаря. В шифре Провенцано буквы сначала заменялись на числа — порядковые номера букв в алфавите, а уже к полученной последовательности чисел применялся шифр Цезаря — так, чтобы при сдвиге на 3 «A» была написана как «4», «B» как «5», и так далее[13].

Часто для удобства использования шифра Цезаря используют два насаженных на общую ось диска разного диаметра с нарисованными по краям дисков алфавитами. Изначально диски поворачиваются так, чтобы напротив каждой буквы алфавита внешнего диска находилась та же буква алфавита малого диска. Если теперь повернуть внутренний диск на несколько символов, то мы получим соответствие между символами внешнего диска и внутреннего — шифр Цезаря. Получившийся диск можно использовать как для шифрования, так и для расшифровки[14].

Например, если внутреннее колесо повернуть так, чтобы символу A внешнего диска соответствовал символ D внутреннего диска, то мы получим шифр со сдвигом 3 влево.

Сдвиг де-
шифровки
Открытый текст
0exxegoexsrgi
1dwwdfndwrqfh
2cvvcemcvqpeg
3buubdlbupodf
4attackatonce
5zsszbjzsnmbd
6yrryaiyrmlac
23haahjrhavujl
24gzzgiqgzutik
25fyyfhpfytshj

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

  1. Взломщик знает (или предполагает), что использовался простой шифр подстановки, но не знает, что это — схема Цезаря.
  2. Взломщик знает, что использовался шифр Цезаря, но не знает значение сдвига.

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

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

Во втором случае взлом шифра является даже более простым. Существует не так много вариантов значений сдвига (26 для английского языка), все они могут быть проверены методом грубой силы[15]. Один из способов сделать это — выписать отрывок зашифрованного текста в столбец всех возможных сдвигов — техника, иногда называемая как «завершение простого компонента»[16]. Рассмотрим пример для зашифрованного текста «EXXEGOEXSRGI»; открытый текст немедленно опознается глазом в четвертой строке.

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

Другой подход к применению метода грубой силы для взлома — проверить частоты встречаемости букв. Изобразив диаграммой частоты встречания букв в зашифрованном тексте, и зная ожидаемое распределение букв для обычного текста на рассматриваемом языке, можно легко определить сдвиг, взглянув на смещение некоторых характерных черт на диаграмме. Этот метод известен как частотный анализ. Например, в тексте на английском языке частота букв E, T, (обычно наиболее частых), и Q, Z (обычно более редких) особенно различаются[17]. Этот процесс можно автоматизировать, сделав, чтобы компьютерная программа оценивала, насколько хорошо фактическое распределение частот соответствует ожидаемому распределению. Например, может использоваться критерий хи-квадрат[18].

Для обычного текста на естественном языке, скорее всего, будет только один вариант декодирования. Но, если использовать очень короткие сообщения, то возможны случаи, когда возможны несколько вариантов расшифровки с различными сдвигами. Например зашифрованный текст «MPQY» может быть расшифрован как «aden» так и как «know» (предполагая, что открытый текст написан на английском языке). Точно также «ALIIP» можно расшифровать как «dolls» или как «wheel»; «AFCCP» как «jolly» или как «cheer» (см. также расстояние единственности).

Многократное шифрование никак не улучшает стойкость, так как применение шифров со сдвигом a и b эквивалентно применению шифра со сдвигом a + b. В математических терминах шифрование с различными ключами образует группу[19].

  1. Luciano D., Prichett G. Cryptology: From Caesar Ciphers to Public-Key Cryptosystems // The College Mathematics Journal — Mathematical Association of America, Taylor & Francis, 1987. — Vol. 18, Iss. 1. — P. 2–17. — ISSN 0746-8342 — doi:10.2307/2686311
  2. ↑ Wobst, 2007, pp. 19.
  3. 1 2 Жизнь двенадцати цезарей, 1964.
  4. Reinke E. C. Classical Cryptography // The Classical Journal — Classical Association of the Middle West and South, 1962. — Vol. 58, Iss. 3. — P. 113–121. — ISSN 0009-8353
  5. Pieprzyk J., Hardjono T., Seberry J. Fundamentals of Computer Security — Springer Science+Business Media, 2003. — P. 6. — 677 p. — ISBN 978-3-540-43101-5
  6. ↑ Singh, 1999, pp. 14–20.
  7. Alexander Poltorak. Mezuzah and Astrology (неопр.). chabad.org. Дата обращения 13 июня 2008.
  8. ↑ Kahn, 1967, pp. 775–6.
  9. ↑ Kahn, 1967, pp. 631–2.
  10. ↑ Wobst, 2007, pp. 20.
  11. ↑ Фомичёв, 2003, с. 239-246.
  12. ↑ Kahn, 1967.
  13. Leyden, John. Mafia boss undone by clumsy crypto, The Register (19 апреля 2006). Дата обращения 13 июня 2008.
  14. Reynard, Robert. Secret Code Breaker: A Cryptanalyst’s Handbook (англ.). — 1996. — P. 92—51. — ISBN 1-889668-00-1).
  15. Beutelspacher, Albrecht (англ.)русск.. Cryptology (неопр.). — Mathematical Association of America, 1994. — С. 8—9. — ISBN 0-88385-504-6.
  16. Sinkov A. Elementary Cryptanalysis: A Mathematical Approach — Mathematical Association of America, 1998. — P. 13–15. — 232 p. — ISBN 978-0-88385-622-2
  17. ↑ Singh, 1999, pp. 72–77.
  18. Savarese, Chris The Caesar Cipher (неопр.) (15 июля 2002). Дата обращения 16 июля 2008.
  19. ↑ Wobst, 2007, pp. 31.

КаЦэ — Шифры | #TipicalOrg

Паззл-код

Тарабарская грамота

Тарабарская грамота, простая литорея — шифр, широко использовавшийся в древнерусских рукописях.

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

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

Шифр Бэкона

a AAAAA
b AAAAB
c AAABA
d AAABB
e AABAA
f AABAB
g AABBA
h AABBB
i-j ABAAA
k ABAAB
l ABABA
m ABABB
n ABBAA
o ABBAB
p ABBBA
q ABBBB
r BAAAA
s BAAAB
t BAABA
u-v BAABB
w BABAA
x BABAB
y BABBA
z BABBB
Декодер

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

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

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

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

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

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

Шифр из книги Кортик(Литарея)

Простой шифр
Буквы алфавита пишут в два ряда: верхние буквы употребляют вместо нижних, нижние – вместо верхних.
Более сложный шифр
Весь алфавит разбивался на три группы, по десяти букв в каждой. Первый десяток букв обозначался точками. Например, «а» – одна точка, «б» – две точки и так далее. Второй десяток обозначался черточками. Например: «л» – одна черточка, «м» – две черточки и так далее. И, наконец, третий десяток обозначался кружками. Например, «х» – один кружок, «ц» – два кружка… Значки эти писались столбиками.

Шифр масонов

Образования

Теперь, алфавит состоит из двадцати шести букв, и эти две фигуры, будучи расчленены, образуют тринадцать определенных знаков

Точка, помещенная внутри каждого из них, дает еще тринадцать знаков:

Вместе это дает двадцать шесть, равное количеству букв в английском алфавите.
Существуют, по меньшей мере, два способа сочетания и употребления этих знаков в целях тайной корреспонденции. Один способ заключается в том, чтобы назвать первый знак а; тот же знак с точкою b; и т. д. Другой способ – применить их, в обычном порядке, к первой половине алфавита а, b и т. д., до m, после чего повторить их с точкою, начиная с буквы n, o, и т. д. до z.
По первому методу алфавит выглядит так:

По второму методу это выглядит так:

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

Другие
Тайнопись «Державных князей Розового креста», называемых также рыцарями Св. Андрея, рыцарями Орла и Пеликана, Heredom, Rosae Crucis, Розового креста, Тройного креста, Совершенного брата, Князя Масона:

Иероглифическая система:

Шифр пляшущие человечки

В переводе Чуковских использован алфавит из 23 знаков:

mas9

Другие варианты в нашем блоге

Шифр Ришелье

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

Ключ: (2741635) (15243) (671852493) (07) (28615)(943)(2741635)
Открытый текст: LETTER SENT TO THE EMPEROR GIVING FULL DETAIL
Шифртекст: TLRTSEE ETOTN EPOEMTHER N1 LUGIG VFR TLIE SAD

Шифр Скитала

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

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

Шифр Футурама

Заменяем первую букву в записи соответствующим числом.
Берём число следующей буквы, складываем его с предыдущим. Если результат оказывается больше 25, вычитаем из итога 26 (все числа должны быть о 0 до 25). Подставляем на второе место соответствующее число.
Если в слове больше двух букв, повторяем процедуру с третьей, четвёртой и т.д. буквами.
После того, как весь текст переведён в числа, заменяем числа на соответствующие значки.

Как расшифровывать. Заменяем все значки числами согласно ключу.
Вычитаем из второго числа первое. Если результат меньше нуля, прибавляем к нему 26 (все числа должны быть между 0 и 26). Это будет второе число в записи.
Вычитаем из третьего числа второе и т.д.
Затем все числа заменяем на соответствующие буквы.

Шифр Цезаря

Шифрование с использованием ключа k = 3. Буква «С» «сдвигается» на три буквы вперед и становится буквой «Ф». Твердый знак, перемещённый на три буквы вперед, становится буквой «Э», и так далее:
Исходный алфавит: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
Шифрованный: ГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВ
Оригинальный текст:
Съешь же ещё этих мягких французских булок, да выпей чаю.
Шифрованный текст получается путём замены каждой буквы оригинального текста соответствующей буквой шифрованного алфавита:
Фэзыя йз зьи ахлш пвёнлш чугрщцкфнлш дцосн, жг еютзм ъгб.

Дешифратор

Атбаш

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

Еще кучу не особо популярных шифров можно найти здесь

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *