Как зашифровать слово в тексте

Элементарные шифры на понятном языке

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

Прежде всего, разберемся в терминологии.

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

Исходное сообщение – это, собственно, то, что мы хотим зашифровать. Классический пример — текст.

Шифрованное сообщение – это сообщение, прошедшее процесс шифрования.

Шифр — это сам алгоритм, по которому мы преобразовываем сообщение.

Ключ — это компонент, на основе которого можно произвести шифрование или дешифрование.

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

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

    Шифр Атбаша

    Самый-самый простой шифр. Его суть – переворот алфавита с ног на голову.

    Например, есть у нас алфавит, который полностью соответствует обычной латинице.

    Для реализации шифра Атбаша просто инвертируем его. «А» станет «Z», «B» превратится в «Y» и наоборот. На выходе получим такую картину:

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

    И теперь пишем нужное сообшение на исходном алфавите и алфавите шифра

    Исходное сообщение: I love habr
    Зашифрованное: r olev szyi

    Шифр Цезаря

    Тут добавляется еще один параметр — примитивный ключ в виде числа от 1 до 25 (для латиницы). На практике, ключ будет от 4 до 10.

    Опять же, для наглядности, возьмем латиницу

    И теперь сместим вправо или влево каждую букву на ключевое число значений.

    Например, ключ у нас будет 4 и смещение вправо.

    Исходный алфавит: 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
    Зашифрованный: w x y z a b c d e f g h i j k l m n o p q r s t u v

    Пробуем написать сообщение:

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

    Шифр Вернама (XOR-шифр)

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

    Исходный алфавит — все та же латиница.

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

    Теперь вспомним курс электроники и элемент «Исключающее ИЛИ», также известный как XOR.

    XOR принимает сигналы (0 или 1 каждый), проводит над ними логическую операцию и выдает один сигнал, исходя из входных значений.

    Если все сигналы равны между собой (0-0 или 1-1 или 0-0-0 и т.д.), то на выходе получаем 0.
    Если сигналы не равны (0-1 или 1-0 или 1-0-0 и т.д.), то на выходе получаем 1.

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

    сообщение: LONDON
    ключ: SYSTEM

    Переведем их в бинарный код и выполним XOR:

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

    С виду — совершенно несвязный набор чисел, но мы-то знаем.

    Шифр кодового слова

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

    Например, возьмем для разнообразия, кириллический алфавит.

    Придумаем кодовое слово. Например, «Лукоморье». Выдернем из него все повторяющиеся символы. На выходе получаем слово «Лукомрье».

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

    И теперь запишем любое сообщение и зашифруем его.

    Получим в итоге следующий нечитаемый бред:

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

    Классический шифр Плейфера предполагает в основе матрицу 5х5, заполненную символами латинского алфавита (i и j пишутся в одну клетку), кодовое слово и дальнейшую манипуляцию над ними.

    Пусть кодовое слово у нас будет «HELLO».

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

    Теперь возьмем любое сообщение. Например, «I LOVE HABR AND GITHUB».

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

    Если бы сообщение было из нечетного количества символов, или в биграмме были бы два одинаковых символа (LL, например), то на место недостающего или повторившегося символа ставится символ X.

    Шифрование выполняется по нескольким несложным правилам:

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

    Например, EH становится LE.

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

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

    Например, если бы у нас была биграмма LX, то она стала бы DL.

    3) Если символы не находятся ни на одной строке, ни на одном столбце, то строим прямоугольник, где наши символы — края диагонали. И меняем углы местами.

    Например, биграмма RA.

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

    По этим правилам, шифруем все сообщение.

    Если убрать пробелы, то получим следующее зашифрованное сообщение:

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

    Источник

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

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

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

    Шифр Цезаря

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

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

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

    abcdefghijklmnopqrstuvwxyz
    hijklmnopqrstuvwxyzabcdefg

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

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

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

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

    Аффиный шифр

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

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте,

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

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте,

    С учетом этого ограничения вычислим пространство ключей аффиного шифра на примере английского алфавита. Так как английский алфавит содержит 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.

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

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

    Шифр Полибия

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

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

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

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

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

    Поэтому для атаки можно использовать методику, применяемую при взломе шифра простой замены — поиск восхождением к вершине.
    В качестве основного ключа выбирается случайный квадрат размером 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 букв английского алфавита, можно ошибочно предположить, что метод поиска восхождением к вершине — лучший способ взлома данного шифра. К сожалению, этот метод не будет работать. Достигнув определенного уровня соответствия текста, алгоритм застрянет в точке локального максимума и не сможет продолжить поиск.
    Чтобы успешно взломать шифр Плейфера лучше воспользоваться алгоритмом имитации отжига.

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

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

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

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

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

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

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

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

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

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

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

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте,

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

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

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

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

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

    Источник

    Уроки криптографии. Основные шифры. часть 1

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

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

    Термины

    Для начала давай определимся с терминологией:

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

    Зачем мне знания о криптографии?

    Предположим, криптография очень нужна, но пусть ей займутся дядьки с усами математики. Зачем же мне знания по криптографии?

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

    Если ты программист или специалист по ИБ, то здесь вообще от криптографии никуда не скрыться. Любой крупный проект требует обеспечения безопасности информации. Неважно, что ты разрабатываешь: контентный сервис, почтовик, мессенджер, соцсеть или просто интернет-магазин, — везде есть критичные данные, которые надо защищать от перехвата или угона БД. Каждая операция должна быть защищена криптографическими протоколами. В этом случае криптография — подходящий инструмент. Если ты еще с ней не столкнулся, будь уверен — это на 100% лишь вопрос времени.

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

    Зачем изучать старые шифры?

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

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

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

    Исторические шифры и первые шифраторы

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

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

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

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

    Шифр сдвига

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

    abcdefghijklmnopqrstuvwxyz
    defghijklmnopqrstuvwxyzabc

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

    Пример шифра

    Исходный текст: Hi, Brut! How are you?
    Шифрованный текст: Kl, Euxw! Krz duh brx?

    Расшифрование

    Криптоанализ

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

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

    e 0,12702s 0,06327u 0,02758p 0,01929q 0,00095
    t 0,09056h 0,06094m 0,02406b 0,01492z 0,00074
    a 0,08167r 0,05987w 0,02360v 0,00978
    o 0,07507d 0,04253f 0,02228k 0,00772
    i 0,06966l 0,04025g 0,02015j 0,00153
    n 0,06749c 0,02782y 0,01974x 0,00150

    Что касается двухбуквенных сочетаний (биграмм), то можно заметить следующую тенденцию:

    БиграммаПроцентное содержаниеБиграммаПроцентное содержание
    th3,15he2,51
    an1,72in1,69
    er1,54re1,48
    es1,45on1,45
    ea1,31ti1,28
    at1,24st1,21
    en1,20nd1,18

    Идея в том, что в зашифрованном тексте самой часто встречаемой буквой будет не эталонная e, а что-то другое. Соответственно, нам нужно найти самую часто встречаемую букву в нашем шифре. Это и будет зашифрованная е. А дальше нужно подсчитать ее сдвиг от е в таблице подстановок. Полученное значение и есть наш ключ!

    Шифр замены

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

    abcdefghijklmnopqrstuvwxyz
    bexgwiqvloumpjrstnkhfyzadc

    Пример шифра

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

    Исходный текст: Hi, Brut! How are you?
    Шифрованный текст: Vl, Enfh!Vrz bnw drf?

    Расшифрование

    Криптоанализ

    Криптоанализ этого шифра также выполняется методом частотного анализа текста. Рассмотрим пример:

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

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

    Дальше пробуем найти наиболее короткое слово, куда входит уже известная нам буква W => e. Видим, что сочетание HVW чаще всего встречается в шифре. Нетрудно догадаться, что, скорее всего, это триграмма the, то есть в тексте мы уже определили три символа. Если посмотреть на промежуточный результат, сомнений не остается:

    Отлично, уже известны три буквы. Снова ищем наиболее короткие слова с новыми известными нам подстановками. Сочетание it является частоупотребляемым, и, поскольку буква t уже дешифрована (HVW => the), очевидно, что в нашем тексте L => i (LH => it). После этого обращаемся к поиску биграмм is и to, устанавливаем, что K => s, R => o. Затем обращаем внимание на триграммы

    ing и and. Анализ текста показывает, что BJG, скорее всего, шифротекст от and. После замены всех наиболее часто встречающихся символов получаем текст:

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

    Как видишь, в этом криптоанализе нашим главным инструментом был статистический анализ частот. Идем дальше!

    Шифр Рихарда Зорге

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

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

    SUBWAY
    CDEFGH
    IJKLMN
    OPQRTV
    XYZ./
    0) SUBW5) AY
    CD3) EFGH
    1) IJKLM7) N
    2) OPQ4) R6) TV
    XYZ./

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

    Далее таблица преобразуется к следующему виду: сначала в строку по столбцам записываются наиболее часто встречаемые буквы в порядке нумерации (S, I, E, …). А затем записываются и все остальные буквы, также по столбцам в строки (С, X, U, D, J, …). Такая таблица обеспечит хорошие перемешивающие свойства и в то же время не «испортит» частотный анализ шифротекста:

    0123456789
    SIOERATN
    8CXUDJPZBKQ
    9.WFL/GMYHV

    Таблица готова. Теперь можно зашифровать сообщение.

    Пример шифра

    Возьмем исходный текст:

    Расставим слеши для разделения слов:

    Разобьем текст на блоки по четыре символа (просто для удобства представления):

    Теперь текст нужно зашифровать по нашей таблице. Алгоритм такой:

    В итоге у нас получится такой шифротекст:

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

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

    Откуда брать гамму и как незаметно передать ее в штаб? Зорге выбирал гамму из «Немецкого статистического ежегодника». Такое издание не должно было вызвать удивление у японцев, так как Зорге приехал в страну под видом немецкого журналиста. Зорге указывал страницу и столбец, откуда начиналась последовательность, которая была наложена на шифротекст в этом послании. Например, 201-я страница и 43-й столбец. Эти данные он записывал добавочным числом 20143 перед шифротекстом, который, в свою очередь, уже шифровался гаммой.

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

    Наш исходник для выбора гаммы. Ориджинал!

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

    В этом случае, чтобы наложить гамму, нужно сделать:

    В итоге полученный шифротекст будет:

    Расшифрование

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

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

    Получили исходный текст:

    Криптоанализ

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

    Шифр Вернама

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

    Cуть шифра Вернама крайне проста. Для этого нужно вспомнить операцию «исключающее или» или сложение по модулю 2. Итак, для сообщения plaintext шифротекст будет равен:

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

    Во времена Первой мировой войны двоичные коды для символов задавались в Международном телеграфном алфавите № 2 (International Telegraph Alphabet No. 2, ITA2).

    На самом деле, несмотря на свою криптостойкость, этот шифр имеет больше минусов, нежели плюсов:

    Пример шифра

    Исходный текст: HELLO
    Ключ: AXHJB

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

    H⊕A = 10100⊕00011 = 10111 => Q
    E⊕X = 00001⊕11101 = 11100 => M
    L⊕H = 10010⊕10100 = 00110 => I
    L⊕J = 10010⊕01011 = 11001 => B
    O⊕B = 11000⊕11001 = 00001 => E

    Шифрованный текст: QMIBE

    Расшифрование

    Расшифрование с помощью ключа выполняется аналогично шифровке:

    Криптоанализ

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

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

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

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

    Тогда мы получаем шифротекст VDYBJY.

    Нам известно, что первый символ 1. Я вычисляю первый символ секретного ключа key:

    V⊕1 = 11110⊕11101 = 00011 => A

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

    Q⊕A = 10111⊕00011 = 10100 => H

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

    H⊕D = 10100⊕01001 = 11101 => X

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

    M⊕X = 11100⊕11101 = 00001 => E

    Такая последовательность операций повторяется, пока не станут известны все символы открытого текста.

    Шифровальные машины

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

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

    Пример работы

    Пусть начальное положение диска задает подстановку:

    abcdefghijklmnopqrstuvwxyz
    bexgwiqvloumpjrstnkhfyzadc

    После того как первая буква исходного текста заменена, ротор поворачивается и подстановка сдвигается на один символ:

    abcdefghijklmnopqrstuvwxyz
    exgwiqvloumpjrstnkhfyzadcb

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

    Энигма

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

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

    Устройство шифровальной машины «Энигма»

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

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

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

    Шифровальная машина «Энигма»

    Сигаба

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

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

    Шифровальная машина «Сигаба»

    Purple

    Говоря о знаменитых криптографических механизмах, нельзя не упомянуть о японской шифровальной машине Purplе, как ее назвали американцы. Шифрование в Purple также основывалось на движении четырех роторов, а секретный ключ задавался один раз в день. Текст вводился с клавиатуры, при помощи роторов заменялся на шифрованный и выводился напечатанным на бумаге. При расшифровании процесс последовательного прохождения через роторы повторялся в обратном порядке. Такая система является совершенно стойкой. Однако на практике ошибки при выборе ключей привели к тому, что Purple повторила судьбу немецкой «Энигмы». Она была взломана американским отделом криптоаналитиков.

    Как зашифровать слово в тексте. Смотреть фото Как зашифровать слово в тексте. Смотреть картинку Как зашифровать слово в тексте. Картинка про Как зашифровать слово в тексте. Фото Как зашифровать слово в тексте

    Шифровальная машина Purple

    Выводы

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

    ссылки:

    Это первый урок из цикла «Погружение в крипту». Все уроки цикла в хронологическом порядке:

    Источник

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

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