что такое ключ шифра

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

Все мы довольно часто слышим такие слова и словосочетания, как «шифрование данных», «секретные шифры», «криптозащита», «шифрование», но далеко не все понимают, о чем конкретно идет речь. В этом посте разберемся, что из себя представляет шифрование и рассмотрим элементарные шифры с тем расчетом, чтобы даже далекие от 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.

    что такое ключ шифра. Смотреть фото что такое ключ шифра. Смотреть картинку что такое ключ шифра. Картинка про что такое ключ шифра. Фото что такое ключ шифра

    что такое ключ шифра. Смотреть фото что такое ключ шифра. Смотреть картинку что такое ключ шифра. Картинка про что такое ключ шифра. Фото что такое ключ шифра

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

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

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

    Источник

    Кодирование и Шифрование

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

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

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

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

    Определения и различия

    Кодирование – процесс преобразования доступной нам информации в информацию понятную компьютерную.

    Шифрование – процесс изменения информации таким образом, чтобы её смогли получить только нужные пользователи.

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

    конфиденциальность – данные скрыты от посторонних

    целостность – предотвращение изменения информации

    идентифицируемость – возможность определить отправителя данных и невозможность их отправки без отправителя

    Оценить стойкость шифра можно с помощью криптографической стойкости.

    Криптографическая стойкость – это свойство шифра противостоять криптоанализу, изучению и дешифровки шифра.

    Криптостойкость шифра делится на две основные системы: абсолютно стойкие системы и достаточно стойкие системы.

    Абсолютно стойкие системы – системы не подверженные криптоанализу. Основные критерии абсолютно стойких систем:

    Ключи должны генерироваться для каждого сообщения отдельно

    Генерация ключей независима

    Длина ключа должна быть не меньше длины сообщения

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

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

    Количества перехваченных сообщений

    Времени и вычислительных способностей

    А также от вычислительной сложности шифра.

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

    История шифрования

    Шифрование берет своё начало ещё из древних времен. Примерно 1300 лет до нашей эры был создан один из первых методов шифрования – Атбаш. Принцип шифрования заключается в простой подставке символов по формуле:что такое ключ шифра. Смотреть фото что такое ключ шифра. Смотреть картинку что такое ключ шифра. Картинка про что такое ключ шифра. Фото что такое ключ шифра, где:

    n – количество символов в алфавите

    i – порядковый номер символа.

    С тех самых пор шифрование активно развивалось вместе с развитием нашей цивилизации

    Хоть шифры и менялись, но их принцип нет – для расшифровки сообщения требуется ключ. В случае с Абашем ключом может считать последовательность порядковых номеров исходных символов, но этот ключ ещё надо как-то передать. Методы шифрования, которые используются сейчас, научились-таки передавать ключи по открытым и незащищённым каналам связи. Казалось бы, передача ключей шифрования по обычным каналам — это добровольное жертвование своими данными, но не всё так просто. Разберём это на примере популярного алгоритма шифрования «RSA», разработанного в 1977 году.

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

    К слову: Простые числа — это те числа, которые могут делиться без остатка либо на 1, либо на себя.

    Длина таких чисел может быть абсолютно любая. К примеру, возьмем два простых числа 223 и 13. Их произведение 2899 – будет являться открытым ключом, который мы и будем передавать по открытому каналу связи. Далее нам необходимо вычислить функцию «Эйлера» для произведения этих чисел.

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

    Возможно, звучит непонятно, но давайте это разберем на небольшом примере:

    φ (26) [фи от двадцати шести] = какому-то числу чисел, которое всегда будет меньше 26, а сами числа должны иметь только один общий делитель единицу с 26.

    1 – подходит всегда, идем дальше;

    7 – только на 1 – подходит;

    Общее количество таких чисел будет равно 12. А найти это число можно по формуле: φ(n*k) = (n-1)(k-1) в нашем случае 26 можно представить как 2 * 13, тогда получим φ(26) = φ(2 * 13) = (2-1)*(13-1) = 1 * 12 = 12

    Теперь, когда мы знаем, что такое функция Эйлера и умеем её вычислять найдем её для нашего открытого ключа – φ(2899) = φ(223 * 13) =(223 – 1)*(13-1) = 222 * 12 = 2664

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

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

    e – открытая экспонента

    mod – остаток отделения

    В обоих случаях у нас получится число 205

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

    Теперь этому человеку нужно отправить нам сообщение, для простоты предположим, что это какое-то число, например: 92. Для этого ему нужно отправить нам остаток от деления 92 в степени открытой экспоненты на открытый ключ – T ^ e mod n , где

    T – шифруемый текст

    e – открытая экспонента

    mod – остаток от деления

    Предположим, что и в этот раз сообщение перехватили, но нам оно всё так же дошло

    С – зашифрованный текст

    d – закрытая экспонента

    mod остаток от деления

    235 ^ 205 mod 2899 = 92.

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

    Но ничто в мире не идеально, в том числе и этот метод.

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

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

    Третий недостаток – подбор и перебор чисел для экспонент.

    Четвертый – длина ключей. Чем больше длина, тем медленнее идет процесс декодирования, поэтому разработчики пытаются использовать наименьшие по длиннее ключи и экспоненты. Даже я акцентировал на это внимание, когда говорил, что лучше взять число 5, вместо 13 для открытой экспоненты. Именно из-за этого и происходит большая часть взломов и утечек данных

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

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

    Есть оптоволокно, по которому передаются единичные фотоны света. Мы, как отправитель может сгенерировать абсолютно любой двоичный ключ, по тому же принципу квантовой супер позиции, ну или использовать обычные генераторы псевдослучайных чисел. Допустим мы хотим передать ключ 101001011. Для этого нам нужно принять за обозначение какое положение фотона соответствует единице, а какое нулю. Представим, что вертикальное положение – это 1, а горизонтальное – 0. Если оставить все так, то от передачи ключей таким образом не будет никакого смысла, ведь тогда злоумышленник всегда сможет измерить фотон, получить его значение, создать и отправить точно такой же обратно человеку, которому мы хоти передать ключ. Поэтому были введены ещё два положение – диагональные. Предоставим вертикальную волну, или же значение 1 и отклоним её на 45 градусов влево. Это будет вторая единица. Вернемся обратно и отклоним на 45 градусов вправо – это будет второй 0.

    что такое ключ шифра. Смотреть фото что такое ключ шифра. Смотреть картинку что такое ключ шифра. Картинка про что такое ключ шифра. Фото что такое ключ шифра

    Вернемся к нашему ключу 101001011. Мы случайным образом выбираем направление – обычное или диагональное. Для удобства присвоим обычному номер 1, а диагональному 2.

    Давайте отправим ключ – 1(1), 0(2), 1(1), 0(1), 0(1), 1(2), 0(2), 1(1), 1(2). Теперь человеку, которому мы отправляем ключ, нужно точно так же, совершенно случайно, выбрать случайное направление.

    Допустим он выбрал направления: 221111212. Поскольку есть всего 2 плоскости отправки: 1 и 2, они же называются: канонический и диагональный базис, то шанс того, что он выбрал правильные направления 50%.

    что такое ключ шифра. Смотреть фото что такое ключ шифра. Смотреть картинку что такое ключ шифра. Картинка про что такое ключ шифра. Фото что такое ключ шифра

    Если он угадал базис – он получил верное значение, если нет – неверное. Учитывая его направления, он получил: 001000011. Теперь нужно отсеять неправильные значения: можно сделать это обменом базисов по любому, даже не защищенному, каналу связи. После этого у нас обоих останется ключ: 0100011. Теперь с помощью его мы можем передавать и кодировать сообщения по обычному методу шифрования.

    Заключение

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

    Источник

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

    что такое ключ шифра. Смотреть фото что такое ключ шифра. Смотреть картинку что такое ключ шифра. Картинка про что такое ключ шифра. Фото что такое ключ шифра

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

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

    Шифр Цезаря

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

    Источник

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

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