Классический криптоанализ
Время на прочтение
9 мин
Количество просмотров 147K
На протяжении многих веков люди придумывали хитроумные способы сокрытия информации — шифры, в то время как другие люди придумывали еще более хитроумные способы вскрытия информации — методы взлома.
В этом топике я хочу кратко пройтись по наиболее известным классическим методам шифрования и описать технику взлома каждого из них.
Шифр Цезаря
Самый легкий и один из самых известных классических шифров — шифр Цезаря отлично подойдет на роль аперитива.
Шифр Цезаря относится к группе так называемых одноалфавитных шифров подстановки. При использовании шифров этой группы «каждый символ открытого текста заменяется на некоторый, фиксированный при данном ключе символ того же алфавита» 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. Разумеется наивный перебор всех возможных ключей дело безнадежное и для взлома потребуется более утонченная техника, такая как поиск восхождением к вершине:
- Выбирается случайная последовательность букв — основной ключ. Шифртекст расшифровывается с помощью основного ключа. Для получившегося текста вычисляется коэффициент, характеризующий вероятность принадлежности к естественному языку.
- Основной ключ подвергается небольшим изменениям (перестановка двух произвольно выбранных букв). Производится расшифровка и вычисляется коэффициент полученного текста.
- Если коэффициент выше сохраненного значения, то основной ключ заменяется на модифицированный вариант.
- Шаги 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 букв английского алфавита, можно ошибочно предположить, что метод поиска восхождением к вершине — лучший способ взлома данного шифра. К сожалению, этот метод не будет работать. Достигнув определенного уровня соответствия текста, алгоритм застрянет в точке локального максимума и не сможет продолжить поиск.
Чтобы успешно взломать шифр Плейфера лучше воспользоваться алгоритмом имитации отжига.
Отличие алгоритма имитации отжига от поиска восхождением к вершине заключается в том, что последний на пути к правильному решению никогда не принимает в качестве возможного решения более слабые варианты. В то время как алгоритм имитации отжига периодически откатывается назад к менее вероятным решениям, что увеличивает шансы на конечный успех.
Суть алгоритма сводится к следующим действиям:
- Выбирается случайная последовательность букв — основной-ключ. Шифртекст расшифровывается с помощью основного ключа. Для получившегося текста вычисляется коэффициент, характеризующий вероятность принадлежности к естественному языку.
- Основной ключ подвергается небольшим изменениям (перестановка двух произвольно выбранных букв, перестановка столбцов или строк). Производится расшифровка и вычисляется коэффициент полученного текста.
- Если коэффициент выше сохраненного значения, то основной ключ заменяется на модифицированный вариант.
- В противном случае замена основного ключа на модифицированный происходит с вероятностью, напрямую зависящей от разницы коэффициентов основного и модифицированного ключей.
- Шаги 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
Загрузить PDF
Загрузить PDF
С той самой поры, как человечество доросло до письменной речи, для защиты сообщений используются коды и шифры. Греки и египтяне использовали шифры для защиты личной переписки. Собственно говоря, именно из этой славной традиции и произрастает современная традиция взлома кодов и шифров. Криптоанализ изучает коды и методы их взлома, и это занятие в современных реалиях может принести немало пользы. Если вы хотите этому научиться, то можно начать с изучения самых распространенных шифров и всего, что с ними связано. В общем, читайте эту статью!
-
1
Начните с поиска слов из одной буквы. Большинство шифров на основе относительно простой замены легче всего взломать банальным перебором с подстановкой. Да, придется повозиться, но дальше будет только сложнее.
- Слова из одной буквы в русском языке – это местоимения и предлоги (я, в, у, о, а). Чтобы найти их, придется внимательно изучить текст. Угадывайте, проверяйте, закрепляйте или пробуйте новые варианты – иного метода разгадки шифра нет.
- Вы должны научиться читать шифр. Взламывать его – это не столь важно. Учитесь выхватывать шаблоны и правила, лежащие в основе шифра, и тогда его взлом не будет представлять для вас принципиальной сложности.
-
2
Ищите наиболее часто употребляемые символы и буквы. К примеру, в английском языке такими являются “e”, “t” и “a”. Работая с шифром, используйте свое знание языка и структуры предложений, на основе чего делайте гипотезы и предположения. Да, на все 100% вы редко будете уверены, но разгадывание шифров – это игра, где от вас требуется делать догадки и исправлять собственные ошибки!
- Двойные символы и короткие слова ищите в первую очередь, старайтесь начать расшифровку именно с них. Легче, как никак, работать с двумя буквами, чем с 7-10.
-
3
Обращайте внимание на апострофы и символы вокруг. Если в тексте есть апострофы, то вам повезло! Так, в случае английского языка, использование апострофа означает, что после зашифрованы такие знаки, как s, t, d, m, ll или re. Соответственно, если после апострофа идут два одинаковых символа, то это наверняка L![1]
-
4
Попробуйте определить, какой у вас тип шифра. Если вы, разгадывая шифр, в определенный момент поймете, к какому из вышеописанных типов он относится, то вы его практически разгадали. Конечно, такое будет случаться не так уж и часто, но чем больше шифров вы разгадаете, тем проще вам будет потом.
- Цифровая замена и клавиатурные шифры в наши дни распространены более всего. Работая над шифром, первым делом проверяйте, не такого ли он типа.
Реклама
-
1
Шифры замещения. Строго говоря, шифры замещения кодируют сообщение, замещая одни буквы другими, согласно заранее определенному алгоритму. Алгоритм – и есть ключ к разгадке шифра, если разгадать его, то и раскодировать сообщение проблемы не составит.
- Даже если в коде есть цифры, кириллица или латиница, иероглифы или необычные символы – пока используются одни и те же типы символов, то вы, вероятно, работаете именно с шифром замещения. Соответственно, вам надо изучить используемый алфавит и вывести из него правила замещения.
-
2
Квадратный шифр. Простейшее шифрование, используемое еще древними греками, работающее на основе использования таблицы цифр, каждая из которых соответствует какой-то букве и из которых впоследствии и составляются слова. Это действительно простой код, своего рода – основа основ. Если вам надо разгадать шифр в виде длинной строки цифр – вероятно, что пригодятся именно методы работы с квадратным шифром.
- Самая простая форма этого шифра такова: от 1 до 6 строк и столько же столбцов заполняются буквами слева направо и сверху вниз по клеткам. Каждая буква затем представляется в виде числа из двух цифр, где первая цифра – номер колонки, а вторая – номер строки.
- Так, к примеру, слово “wikihow” в этом шифре будет записано как “52242524233452”.
- Есть и более простая версия этого шифра, когда цифра означает порядковый номер буквы в алфавите.[2]
-
3
Шифр Цезаря. Цезарь умел не только делать три дела одновременно, он еще и понимал в шифровании. Цезарь создал хороший, простой, понятный и, в то же время, устойчивый ко взлому шифр, который в его честь и назвали. Шифр Цезаря – это первый шаг на пути к изучению сложных кодов и шифров. Суть шифра Цезаря в том, что все символы алфавита сдвигаются в одну сторону на определенное количество символов. Например, сдвиг на 3 символа влево будет менять А на Д, Б на Е и т.д.
- Более простая версия этого шифра сдвигает все на букву вперед.
- Слово “wikihow”, записанное шифром Цезаря, будет представлять собой “zlnlkrz”.[3]
[4]
-
4
Следите за клавиатурными шаблонами. На основе традиционной раскладки клавиатуры типа QWERTY в наше время создаются различные шифры, работающие по принципу смещения и замещения. Буквы смещаются влево, вправо, вверх и вниз на определенное количество символов, что и позволяет создать шифр. В случае таких шифров надо знать, в какую сторону были смещены символы.
- Так, меняя колонки на одну позицию вверх, “wikihow” превращается в “28i8y92”.
-
5
Полиалфавитные шифры. Простые замещающие шифры опираются на создание шифрующим своего рода алфавита для шифрования. Но уже в Средние века это стало слишком ненадежно, слишком просто для взлома. Тогда криптография сделала шаг вперед и стала сложнее, начав использовать для шифрования символы сразу нескольких алфавитов. Что и говорить, надежность шифрования сразу повысилась.
- Шифр Тритемиуса, использующий таблицу символов 26х26 клеток, это усовершенствованный шифр Цезаря, то есть шифр подстановки. По алгоритму шифрования, каждый символ сообщения смещается на символ, отстающий от данного на некоторый шаг. Здесь шаг смещения делается переменным, то есть зависящим от каких-либо дополнительных факторов.
- Шифрующие также используют специальные кодовые слова в отношении конкретных колонок для каждой буквы в зашифрованном сообщений. Например, если кодовое слово – это “wikihow”, то действовать надо так: надо смотреть w-ряд и колонку первой буквы зашифрованного кода, чтобы узнать первую буквы сообщения. Такие шифры сложно разгадать, не имея на руках кодового слова.[5]
[6]
Реклама
-
1
Будьте терпеливы. Взломать шифр – это терпение, терпение и еще раз терпение. Ну и упорство, конечно же. Это медленная, кропотливая работа, сопряженная с большим количеством разочарования из-за частых ошибок и необходимости постоянно подбирать символы, слова, методы и т.д. Хороший дешифровальщик просто обязан быть терпеливым.
-
2
Пишите собственные шифры. Конечно, криптограммы – это одно, а полиалфавитные шифры без кодовых слов – совсем другое, но все же собственные шифры писать надо. Именно через это занятие вы сможете понять образ мышления тех, кто шифрует сообщения тем или иным образом. Это как “щит и меч” – чем острее меч, тем надежнее щит. Многие дешифровальщики и сами не последние люди в плане составления шифров. Изучайте все более и более сложные методы, учитесь расшифровывать их – и вы достигнете вершин мастерства.
- Многому можно поучиться из расшифровки кодов и шифров, используемых преступниками. Некоторые из них – это просто шедевры, исключительно сложные и надежные.[7]
- Многому можно поучиться из расшифровки кодов и шифров, используемых преступниками. Некоторые из них – это просто шедевры, исключительно сложные и надежные.[7]
-
3
Решайте известные и до сих пор неразгаданные шифры. ФБР, к примеру, регулярно дает сообществу любителей криптографии пищу для ума, публикуя различные шифры и предлагая всем желающим их разгадать. Решайте их, отправляйте свои ответы… возможно, скоро вы смените работу.[8]
- Криптос, скульптура, расположенная у штаб-квартиры ЦРУ, это, пожалуй, самый известный из всех неразгаданных кодов. Созданный как тест для агентов, Криптос представляет собой 4 панели с 4 разными шифрами. На расшифровку первых трех панелей ушло 10 лет. 4-я панель так и осталась загадкой.[9]
- Криптос, скульптура, расположенная у штаб-квартиры ЦРУ, это, пожалуй, самый известный из всех неразгаданных кодов. Созданный как тест для агентов, Криптос представляет собой 4 панели с 4 разными шифрами. На расшифровку первых трех панелей ушло 10 лет. 4-я панель так и осталась загадкой.[9]
-
4
Наслаждайтесь сложностью работы и атмосферой загадки! Дешифрование – это как если погрузиться в роман Дэна Брауна с головой, но по-настоящему! Сложность, загадочность, предвкушение открытия – все это таинственный и волнующий мир шифров.
Реклама
Советы
- В английском языке буква “е” используется чаще всех прочих.
- Если шифр напечатан, то есть шанс, что печатали его специальным шрифтом – типа Windings. И это может быть… двойным шифром!
- Не опускайте руки, если шифр не поддается уже долгое время. Это нормально.
- Чем длиннее шифр, тем проще его взломать.
- Одна буква в шифре вовсе не обязательно соответствует одной букве дешифрованного сообщения. Верно и обратное.
- Буква в шифре практически никогда не обозначает саму себя (“а” – это не “а”).
Реклама
Предупреждения
- Помните, что не все шифры можно разгадать.
- Некоторые шифры нельзя разгадать, не имея буквально гигабайтов дополнительной информации. Да, даже с ключом на руках. Может потребоваться специальная программа, либо просто долгая игра в “угадай символ”.
Реклама
Что вам понадобится
- Шифр
- Ручка и бумага
Об этой статье
Эту страницу просматривали 95 415 раз.
Была ли эта статья полезной?
Коды и шифры — не одно и то же: в коде каждое слово заменяется другим, в то время как в шифре заменяются все символы сообщения.
В данной статье мы рассмотрим наиболее популярные способы шифрования, а следующим шагом будет изучение основ криптографии.
- Стандартные шифры
- Цифровые шифры
- Как расшифровать код или шифр?
Стандартные шифры
ROT1
Этот шифр известен многим детям. Ключ прост: каждая буква заменяется на следующую за ней в алфавите. Так, А заменяется на Б, Б — на В, и т. д. Фраза «Уйрйшоьк Рспдсбннйту» — это «Типичный Программист».
Попробуйте расшифровать сообщение:
Лбл еёмб, рспдсбннйту?
Сумели? Напишите в комментариях, что у вас получилось.
Шифр транспонирования
В транспозиционном шифре буквы переставляются по заранее определённому правилу. Например, если каждое слово пишется задом наперед, то из hello world получается dlrow olleh. Другой пример — менять местами каждые две буквы. Таким образом, предыдущее сообщение станет eh ll wo ro dl.
Ещё можно использовать столбчатый шифр транспонирования, в котором каждый символ написан горизонтально с заданной шириной алфавита, а шифр создаётся из символов по вертикали. Пример:
Из этого способа мы получим шифр holewdlo lr. А вот столбчатая транспозиция, реализованная программно:
def split_len(seq, length):
return [seq[i:i + length] for i in range(0, len(seq), length)]
def encode(key, plaintext):
order = {
int(val): num for num, val in enumerate(key)
}
ciphertext = ''
for index in sorted(order.keys()):
for part in split_len(plaintext, len(key)):
try:ciphertext += part[order[index]]
except IndexError:
continue
return ciphertext
print(encode('3214', 'HELLO'))
Азбука Морзе
В азбуке Морзе каждая буква алфавита, цифры и наиболее важные знаки препинания имеют свой код, состоящий из череды коротких и длинных сигналов:
Чаще всего это шифрование передаётся световыми или звуковыми сигналами.
Сможете расшифровать сообщение, используя картинку?
•−− −•− −−− −• −•−• • ••• − •− − −••− •• • ••• − −••− −•• • −−−− •• ••−• •−• •− − −−− •−• −•−−
Шифр Цезаря
Это не один шифр, а целых 26, использующих один принцип. Так, ROT1 — лишь один из вариантов шифра Цезаря. Получателю нужно просто сообщить, какой шаг использовался при шифровании: если ROT2, тогда А заменяется на В, Б на Г и т. д.
А здесь использован шифр Цезаря с шагом 5:
Иербэй йюк ёурбэй нтчйхйцтаъ энщхуж
Моноалфавитная замена
Коды и шифры также делятся на подгруппы. Например, ROT1, азбука Морзе, шифр Цезаря относятся к моноалфавитной замене: каждая буква заменяется на одну и только одну букву или символ. Такие шифры очень легко расшифровываются с помощью частотного анализа.
Например, наиболее часто встречающаяся буква в английском алфавите — «E». Таким образом, в тексте, зашифрованном моноалфавитным шрифтом, наиболее часто встречающейся буквой будет буква, соответствующая «E». Вторая наиболее часто встречающаяся буква — это «T», а третья — «А».
Однако этот принцип работает только для длинных сообщений. Короткие просто не содержат в себе достаточно слов.
Шифр Виженера
Представим, что есть таблица по типу той, что на картинке, и ключевое слово «CHAIR». Шифр Виженера использует принцип шифра Цезаря, только каждая буква меняется в соответствии с кодовым словом.
В нашем случае первая буква послания будет зашифрована согласно шифровальному алфавиту для первой буквы кодового слова «С», вторая буква — для «H», etc. Если послание длиннее кодового слова, то для (k*n+1)-ой буквы, где n — длина кодового слова, вновь будет использован алфавит для первой буквы кодового слова.
Чтобы расшифровать шифр Виженера, для начала угадывают длину кодового слова и применяют частотный анализ к каждой n-ной букве послания.
Попробуйте расшифровать эту фразу самостоятельно:
зюм иэлруй южжуглёнъ
Подсказка длина кодового слова — 4.
Шифр Энигмы
Энигма — это машина, которая использовалась нацистами во времена Второй Мировой для шифрования сообщений.
Есть несколько колёс и клавиатура. На экране оператору показывалась буква, которой шифровалась соответствующая буква на клавиатуре. То, какой будет зашифрованная буква, зависело от начальной конфигурации колес.
Существовало более ста триллионов возможных комбинаций колёс, и со временем набора текста колеса сдвигались сами, так что шифр менялся на протяжении всего сообщения.
Цифровые шифры
В отличие от шифровки текста алфавитом и символами, здесь используются цифры. Рассказываем о способах и о том, как расшифровать цифровой код.
Двоичный код
Текстовые данные вполне можно хранить и передавать в двоичном коде. В этом случае по таблице символов (чаще всего ASCII) каждое простое число из предыдущего шага сопоставляется с буквой: 01100001 = 97 = «a», 01100010 = 98 = «b», etc. При этом важно соблюдение регистра.
Расшифруйте следующее сообщение, в котором использована кириллица:
110100001001101011010000101111101101000010110100
Шифр A1Z26
Это простая подстановка, где каждая буква заменена её порядковым номером в алфавите. Только нижний регистр.
Попробуйте определить, что здесь написано:
15-6-2-16-13-30-26-16-11 17-18-10-14-6-18
Шифрование публичным ключом
Алгоритм шифрования, применяющийся сегодня буквально во всех компьютерных системах. Есть два ключа: открытый и секретный. Открытый ключ — это большое число, имеющее только два делителя, помимо единицы и самого себя. Эти два делителя являются секретным ключом, и при перемножении дают публичный ключ. Например, публичный ключ — это 1961, а секретный — 37 и 53.
Открытый ключ используется, чтобы зашифровать сообщение, а секретный — чтобы расшифровать.
Как-то RSA выделила 1000 $ в качестве приза тому, кто найдет два пятидесятизначных делителя числа:
1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139
Как расшифровать код или шифр?
Для этого применяются специальные сервисы. Выбор такого инструмента зависит от того, что за код предстоит расшифровать. Примеры шифраторов и дешифраторов:
- Азбука Морзе
- RSA (криптографический алгоритм с открытым ключом)
- Двоичный код
- Другие онлайн-дешифраторы
Адаптированный перевод «10 codes and ciphers»
Криптография для новичков, где все разжевано и разложено по полочкам. Вы познакомитесь с шифрами, их особенностями и криптоанализом – атакой на шифротекст.
Урок №1 Криптография: шифр Цезаря
Это, если хотите, школьная программа криптографии, первый класс. Шифр Цезаря научились вскрывать еще в IX веке, поэтому сегодня он почти бесполезен, но как база – урок просто отличный. Начинается терминологией и подробным объяснением того, что из себя представляет и как работает ключ. Далее затрагивается шифр Цезаря, принципы его работы, а также способ быстрой дешифровки.
https://www.youtube.com/watch?v=gF_YRW9-eLY
Урок №2 Шифр простой замены
Этот урок тоже начинается короткой терминологией и объяснением разницы между закрытым текстом и шифром. Автор всегда ссылается на достоверные источники. Курс плавно перетекает в возможность шифровать цифрами и подробным описанием того, как это делается.
https://www.youtube.com/watch?v=bDHYdwqpmuM
Если вы посмотрели оба урока, считайте, что основы криптографии вы уже поняли.
Урок №3 Атака по маске
А вот здесь начинается интересное. Автор не зацикливается только на шифровании, но и объясняет тонкости атак на подобные тексты. Он приводит много примеров, что хорошо сказывается на понимании. Затрагиваются преимущество перевода шифротекста в числа и умение анализировать полученную «картинку». Это полезно, если вы планируете разрабатывать приложения, рассчитанные на вскрытие шифротекста, ведь чтобы передать логическое решение будущей программе, сперва нужно самостоятельно к этому решению прийти.
https://www.youtube.com/watch?v=PgqL_GTqtwA
Примеры уроков хорошо визуализированы, демонстрируется поэтапное выполнение, поэтому проблем с пониманием быть не должно.
Урок №4 Частотный анализ
Еще один способ анализа с применением диаграммы частоты по алфавиту. Перечисляются слабые и сильные стороны частотного анализа, рассказывается, в каких случаях он будет по-настоящему мощным инструментом, а в каких – бесполезным. Снова приводятся визуализированные примеры с применением метода, так что под конец урока вы обязательно поймете принцип работы частотного анализа.
https://www.youtube.com/watch?v=5bM93uVmehw
Урок №5 Полиалфавитные шифры. Шифр Гронсфельда
До этого затрагивались только моноалфавитные шифры и соответствующие типы замены. А вот пятый урок открывает новый раздел в криптографии под названием «Полиалфавитные шифры». Введение ознаменовано набором терминов и примеров, которые помогают разобраться во «множественном» шифровании. Затрагивается и шифр Гронсфельда, который также применяет ключ, как и шифр Цезаря, но делает это иначе. Полиалфавитные шифры намного эффективнее, ведь такой текст сложнее вскрыть. Почему? Смотрите в видеоуроке.
https://www.youtube.com/watch?v=S8Coc22uNdg
Урок №6 Шифр Виженера
Здесь расписывается самый популярный полиалфавитные шифр – шифр Виженера. Разобравшись с ним, можете считать, что криптография вам далась, и можно смело переходить к реализации знаний в своих приложениях.
Да, этот шифр по сей день терзает умы многих криптоаналитиков, ведь здесь используется далеко не простой ключ и такой же нелегкий способ подбора символов. Конкретно этот урок не научит вскрывать подобный шифротекст, но хорошо объяснит суть.
https://www.youtube.com/watch?v=oPTWao7j4Uk
Урок №7 Криптоанализ Виженера. Метод индекса совпадений
Даже шифр Виженера не так «зубаст», как может показаться. Существует метод индекса совпадений, который работает не с самим зашифрованным словом, а именно с ключом, и от этого уже плавно двигается в сторону разгадки. Здесь уже применяются сложные формулы и вычисления, поэтому рекомендуем внимательно следить за решением задачи.
https://www.youtube.com/watch?v=xWA2FJ74TBg
Урок №8 Криптоанализ Виженера часть 2. Автокорреляционный метод
Автокорреляционный метод более простой, но точно так же напичканный формулами, в которые придется вникнуть. В этом уроке объясняется лишь альтернативный поиск длины ключа, а все остальное, что касается вскрытия, – как и в предыдущем уроке.
https://www.youtube.com/watch?v=cl3G-4Gyf2A
Ссылка на канал.
Также рекомендуем посмотреть:
- Лучшие хакерские ресурсы: ТОП-10 YouTube каналов
- 61 репозиторий для хакеров на Github
- Математика для программистов: 7 крутых YouTube-каналов
- 4 книги, которые разбудят в вас математика
А однажды решение этой задачи понадобилось мне на практике. Мой компьютер отказывался загружаться, выдавая какое-то сообщение в другой кодировке, так что прочесть можно было лишь слово Windows. Чтобы понять, что происходит, надо было дешифровать сообщение безо всяких подручных средств (компьютер-то был один и он не загружался!). Через 5 минут сообщение было прочитано и компьютер заработал.
Так что навык этот может пригодиться в самых неожиданных жизненных ситуациях, далёких от шпионажа, детективных историй, заговоров и банковского дела. Короче говоря, от всего, чем занимается древняя наука криптография. Например, он поможет разобрать письмо с неразборчивым почерком.
Простейший шифр представляет собой замену каждой буквы алфавита определённым символом, в том числе и другой буквой алфавита. При этом сохраняется порядок следования букв, интервалы между словами, а между набором символов и алфавитом устанавливается взаимно-однозначное соответствие (ключ к шифру).
При дешифровке в отсутствие ключа крайне желательно иметь хоть какую-то информацию о содержании сообщения — имя отправителя или адресата, место отправления или назначения, имена, явки, пароли… Это позволяет получить хотя бы небольшой кусок ключа — соответствие нескольких букв и знаков шифра. Сообщение может начинаться с приветствия, а заканчиваться подписью. Пробуем сопоставить последнее слово с именем отправителя, а первое — со стандартными приветствиями типа «Привет», «Здравствуйте» и т. п.
Далее следует провести частотно-предложный анализ. Частотный анализ заключается в том, что мы ранжируем символы шифра по частоте появления в тексте. Наиболее часто встречающиеся буквы алфавита — «о», «в», «а», «е», «н», «и» и т. д. Скорее всего лидеры по частотам — именно эти буквы. А предложный анализ заключается в том, что слова из одной, двух и трёх букв скорее всего являются предлогами, частицами или союзами — «в», «на», «не» и т. д.
Теперь переходим к частотно-предложному анализу: смотрим, какие из наиболее часто встречающихся символов выпадают на самые короткие слова, и сопоставляем их с предлогами, частицами и союзами.
Кстати, стоит обратить внимание и на наиболее редко встречающиеся символы. Возможно, это редкие буквы русского языка — «ь», «ъ», «щ», «ф», «ю», «э» и т. п. Некоторые шифровщики игнорируют букву «ё», заменяя её на «е». Тогда слово из двух одинаковых символов стопроцентно будет «её».
Анализируя трёхбуквенные слова, обратите внимание на те, у которых первая буква совпадает с последней. Это с высокой степенью вероятности «оно», «или», «ага», «ого» или «ещё». Для однобуквенных слов выбор тоже невелик: «а», «в», «ж», «и», «к», «о», «с», «у», «я».
Чем больше мы раскрываем элементов ключа, тем легче идёт дальнейший процесс дешифровки.
Если в качестве символов выступают буквы алфавита, то код может являться так называемым Кодом Цезаря. Код Цезаря получается смещением всех букв на определённое количество позиций. Например, вместо А ставится Г, вместо Б — Д, и т. д. Концовка замыкается: вместо Э — А, вместо Ю — Б, вместо Я — В.
- Кстати, при попытке прочтения страницы в Интернете, написанной в кодировке КОИ-8 с настройками браузера Win1251, мы имеем как раз этот случай, правда, количество позиций смещения различно для первой и для второй половины алфавита.
Если вы обнаружите, что использован Код Цезаря, значит, задача ваша упрощается во много раз! Действительно, вам достаточно дешифровать лишь две буквы, что даст вам величину и направление смещения, а дальше весь ключ раскрывается сам.
Облегчают вашу жизнь и знаки препинания, если они оставлены не зашифрованными. Обратите внимание на выделенные запятыми вводные слова, на кавычки (там наверняка какое-то название, имя собственное, которое вы можете знать), на дефисы в сочетании с короткими словами («кое-что», «как-нибудь» и т. п.).
Код может быть усложнён добавлением «мусора». Например, читать надо каждое 5-е слово или каждый раз пропускать на одно слово больше. Мусорные слова можно выделить по невозможным сочетаниям букв, например «щщ» или «аь». Впрочем, мусорные слова могут быть и вполне легальными, тогда надо исходить только из смысла фразы. Придётся пройтись по всем последовательностям: через слово, задом наперёд и т. д.
Если в слове вы раскрыли несколько букв, можно воспользоваться программой для решения кроссвордов. Такая возможность есть, например, в электронной игре «Эрудит». Программа выдаст вам список возможных слов с этими буквами на заданных местах. Конечно, использование компьютера намного облегчает работу, даже если у вас нет специальных программ-дешифровщиков. Вы можете пользоваться глобальной заменой символов в тексте, откатывать изменения и многое другое.
Если прояснился какой-либо фрагмент текста, вы уже можете определиться с предметной областью шифровки и сделать целенаправленный поиск среди оставшихся частей специализированных терминов из этой области. Например, если вы нашли слово «логарифм», ищите «экспонента», «интеграл» и т. п.
Желаю вам успеха в нелёгком, но безумно интересном деле дешифровки текстов.
Гтждп гбн епвспдп!