тайные коды для переписки
Элементарные шифры на понятном языке
Все мы довольно часто слышим такие слова и словосочетания, как «шифрование данных», «секретные шифры», «криптозащита», «шифрование», но далеко не все понимают, о чем конкретно идет речь. В этом посте разберемся, что из себя представляет шифрование и рассмотрим элементарные шифры с тем расчетом, чтобы даже далекие от 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.
По этим правилам, шифруем все сообщение.
Если убрать пробелы, то получим следующее зашифрованное сообщение:
Поздравляю. После прочтения этой статьи вы хотя бы примерно понимаете, что такое шифрование и знаете как использовать некоторые примитивные шифры и можете приступать к изучению несколько более сложных образцов шифров, о которых мы поговорим позднее.
Популярные коды и шифры.
В рубрике “Информационная безопасность” мы разбирали общие вопросы о криптографии и методах шифрования. В этой статье мы рассмотрим самые популярные коды и шифры.
В мире существует множество шифров и кодов для засекречивания различных посланий. Вопреки распространенному мнению, код и шифр — это не одно и то же. В коде каждое слово заменяется на какое-то иное кодовое слово, в то время как в шифре заменяются сами символы сообщения.
1. Шифр Цезаря
Шифр Цезаря так называется, потому что его использовал сам Юлий Цезарь. Шифр Цезаря — это не один шифр, а целых двадцать шесть, использующих один и тот же принцип. Например, шифр ROT1 относится к шифру Цезаря.
Получателю нужно сказать, какой из шифров используется. Если используется шифр «G», тогда А заменяется на G, B на H, C на I и т.д. Если используется шифр «Y», тогда А заменяется на Y, B на Z, C на A и т.д. На шифре Цезаря базируется огромное число других, более сложных шифров.
Шифр Цезаря очень простой и быстрый, но он является шифром простой одинарной перестановки и поэтому легко взламывается.
2. Азбука Морзе
Азбука является средством обмена информации и ее основная задача – сделать сообщения более простыми и понятными для передачи. В системе Морзе каждая буква, цифра и знак препинания имеют свой код, составленный из группы тире и точек. При передаче сообщения с помощью телеграфа тире и точки означают длинные и короткие сигналы. Пример:
3. Стеганография
Стеганография старше кодирования и шифрования. Это искусство появилось очень давно. Оно буквально означает «скрытое письмо» или «тайнопись». Хоть стеганография не совсем соответствует определениям кода или шифра, но она предназначена для сокрытия информации от чужих глаз. Про стеганографию можно почитать в нашей отдельной статье.
4. ROT1
Данный шифр известен всем с детства. Каждая буква шифра заменяется на следующую за ней в алфавите. Так, A заменяется на B, B на C, и т.д.
«ROT1» значит «ROTate 1 letter forward through the alphabet» («сдвиньте алфавит на одну букву вперед»).
5. Моноалфавитная замена
Описанные выше ROT1 и азбука Морзе являются представителями шрифтов моноалфавитной замены. Приставка «моно» означает, что при шифровании каждая буква изначального сообщения заменяется другой буквой или кодом из единственного алфавита шифрования.
Дешифрование шифров простой замены не составляет труда, и в этом их главный недостаток. Разгадываются они простым перебором или частотным анализом.
6. Транспозиция
В транспозирующих шифрах буквы переставляются по заранее определенному правилу. Например, если каждое слово пишется задом наперед, то из «all the better to see you with» получается «lla eht retteb ot ees joy htiw».
В Гражданскую войну в США и в Первую мировую его использовали для передачи сообщений.
7. Шифр Виженера
Шифр Виженера использует тот же принцип, что и шифр Цезаря, за тем исключением, что каждая буква меняется в соответствии с кодовым словом.
Данный шифр на порядок более устойчив к взлому, чем моноалфавитные, хотя представляет собой шифр простой замены текста. Пример:
Давайте зашифруем слово “Пароль” с помощью данного шифра. Ключевое слово будем использовать “Код”. Нарисуем таблицу:
1 | 2 | 3 | 4 | 5 | 6 | |
Фраза: | п | а | р | о | л | ь |
Ключ | к | о | д | к | о | д |
Берем первые буквы ключа и нашего слова и скрещиваем между собой с помощью таблицы Виженера и получается буква “ъ” и идем далее. Остальное попробуйте самостоятельно и напишите ответ в комментариях
8. Настоящие коды
В настоящих кодах каждое слово заменяется на другое. Расшифровывается такое послание с помощью кодовой книги, где записано соответствие всех настоящих слов кодовым, прямо как в словаре.
Многие страны использовали коды, периодически их меняя, чтобы защититься от частотного анализа. Но есть минус: если кодовая книга будет украдена, то с ее помощью больше будет невозможно что-либо зашифровать, и придется придумывать новый код, что требует огромных усилий и затрат времени.
9. Шифр Энигмы
Энигма — это шифровальная машина, использовавшаяся нацистами во времена Второй Мировой. Принцип ее работы таков: есть несколько колес и клавиатура. На экране оператору показывалась буква, которой шифровалась соответствующая буква на клавиатуре. То, какой будет зашифрованная буква, зависело от начальной конфигурации колес.
Существовало более ста триллионов возможных комбинаций колес, и со временем набора текста колеса сдвигались сами, так что шифр менялся на протяжении всего сообщения.
10. Шифр Гронсфельда
Шифр Гронсфельда — это модификация шифра Цезаря. Данный способ является значительно более стойким к взлому и заключается в том, что каждый символ кодируемой информации шифруется при помощи одного из разных алфавитов, которые циклически повторяются. Можно сказать, что это многомерное применение простейшего шифра замены.
11. Шифрование методом публичного ключа
Суть данного шифра заключается, как правило, в наличии двух ключей, один из которых передается публично, а второй является секретным (приватным). Открытый ключ используется для шифровки сообщения, а секретный — для дешифровки.
В роли открытого ключа чаще всего выступает очень большое число, у которого существует только два делителя, не считая единицы и самого числа. Вместе эти два делителя образуют секретный ключ.
10 популярных кодов и шифров
10 популярных кодов и шифров
Коды и шифры — не одно и то же: в коде каждое слово заменяется другим, в то время как в шифре заменяются все символы сообщения.
В данной статье мы рассмотрим наиболее популярные способы шифрования, а следующим шагом будет изучение основ криптографии.
Стандартные шифры
Этот шифр известен многим детям. Ключ прост: каждая буква заменяется на следующую за ней в алфавите. Так, А заменяется на Б, Б — на В, и т. д. Фраза «Уйрйшоьк Рспдсбннйту» — это «Типичный Программист».
Попробуйте расшифровать сообщение:
Сумели? Напишите в комментариях, что у вас получилось.
Шифр транспонирования
В транспозиционном шифре буквы переставляются по заранее определённому правилу. Например, если каждое слово пишется задом наперед, то из hello world получается dlrow olleh. Другой пример — менять местами каждые две буквы. Таким образом, предыдущее сообщение станет eh ll wo ro dl.
18 октября – 1 ноября, Онлайн, Беcплатно
Ещё можно использовать столбчатый шифр транспонирования, в котором каждый символ написан горизонтально с заданной шириной алфавита, а шифр создаётся из символов по вертикали. Пример:
Из этого способа мы получим шифр holewdlo lr. А вот столбчатая транспозиция, реализованная программно:
Азбука Морзе
В азбуке Морзе каждая буква алфавита, цифры и наиболее важные знаки препинания имеют свой код, состоящий из череды коротких и длинных сигналов: Чаще всего это шифрование передаётся световыми или звуковыми сигналами.
Сможете расшифровать сообщение, используя картинку?
Шифр Цезаря
Это не один шифр, а целых 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. При этом важно соблюдение регистра.
Расшифруйте следующее сообщение, в котором использована кириллица:
Шифр A1Z26
Это простая подстановка, где каждая буква заменена её порядковым номером в алфавите. Только нижний регистр.
Попробуйте определить, что здесь написано:
Шифрование публичным ключом
Алгоритм шифрования, применяющийся сегодня буквально во всех компьютерных системах. Есть два ключа: открытый и секретный. Открытый ключ — это большое число, имеющее только два делителя, помимо единицы и самого себя. Эти два делителя являются секретным ключом, и при перемножении дают публичный ключ. Например, публичный ключ — это 1961, а секретный — 37 и 53.
Открытый ключ используется, чтобы зашифровать сообщение, а секретный — чтобы расшифровать.
Как расшифровать код или шифр?
Для этого применяются специальные сервисы. Выбор такого инструмента зависит от того, что за код предстоит расшифровать. Примеры шифраторов и дешифраторов:
Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.
Перейти к регистрации
Способы кодирования и шифрования. Часть 1
СПОСОБЫ КОДИРОВАНИЯ И ШИФРОВАНИЯ
ЧАСТЬ 1
Автор Кэйт Мулкахи. Перевод Владимир Лахмаков
10 КОДОВ И ШИФРОВ
№ 1 КРИПТОГРАФИЯ ОБЩЕДОСТУПНОГО КЛЮЧА
Код Энигма, который был очень сложным шифром, использовался немцами во время Второй мировой войны. Энигма напоминала собой машинку, подобную пишущей машинке, где нажатие буквы высвечивает букву шифра на экране. Машина Энигма включала в себя несколько колесиков, которые соединили буквы с проводами, определяя, который из них высветит букву шифра. Все машины Энигмы были идентичны, и знание, начальной конфигурации колес внутри механизма, было ключом к зашифровыванию сообщений. Чтобы еще более усложнить процесс дешифровки сообщения, каждое колесо проворачивалось после определенного числа напечатанных букв, и, таким образом, шифр непрерывно изменялся в рамках одного сообщения.
Немецкие командующие имели машины Энигма и подготовленные списки начальной конфигурации колес машины, чтобы использовать их ежедневно с тем, чтобы все шифровальщики немецкой армии использовали один и тот же шифр и могли расшифровывать сообщения друг друга.
Даже когда Союзники разжились копией машины Энигма, они ничего не смогли расшифровать, поскольку имелось более ста триллионов возможных конфигураций колес для дешифровки. Код Энигмы был взломан польскими специалистами и усовершенствован британскими инженерами с помощью компьютеров. Знание немецких сообщений дало Союзникам преимущество в войне, а кроме того, от взлома кода Энигмы, родился предок современных компьютеров.
В истинном коде каждое слово заменено кодовым словом или числом согласно ключу. Поскольку имеется множество слов, которые могут быть использованы в сообщении, то ключом обычно является кодовая книга, где любой может искать какое-либо английское слово и найти соответствующее кодовое слово. Такая кодовая книга мало чем отличается от словаря. Так же, как короткие сообщения трудно расшифровать с помощью анализа частоты встречаемости букв, код должен быть довольно длинным прежде чем анализ частотности слова станет полезным, и, таким образом, коды более трудно расшифровывать, чем шифры. Многие страны использовали такие варианты кодов, где каждый день использовался новый код, чтобы сохранить их от взлома с использованием анализа частотности буквы или целого слова. Для повседневной жизни, однако, использование таких кодов довольно трудоемко по времени, а сама кодовая книга тяжёлая на вес. Гораздо хуже обстоит дело, если кодовая книга была украдена, а это означает, что используемый ранее код больше не безопасен, а потому должен быть создан новый, заняв огромное количество времени и усилий. Коды, главным образом, полезны для богатых и облеченных властью людей, тех, кто может делегировать эту работу другим.
№ 5 МОНОАЛФАВИТНАЯ ЗАМЕНА
Приведенные выше шифры ROT1, шифр Цезаря и Азбука Морзе – являются шифрами одного типа: моноалфавитной замены, подразумевая то, что каждая буква алфавита в таких шифрах заменяется согласно ключу с другой буквой или символом. Но даже не зная ключа к этим шифрам, их на самом деле легко расшифровать. Наиболее распространенная буква в английском языке как известно, это буква «E». Поэтому в любом моноалфавитном шифре, наиболее распространенной буквой или символом также будет буква «E». Второй самой распространенной английской буквой является буква «T», а третье место занимает по распространенности буква «A», и таким образом, уже эти две буквы могут быть также определены без особых затруднений. С учётом этого, человек, расшифровывающий сообщение, может продолжить использовать частотность встречаемости этих английских букв, или же искать почти полные слова, такое, например, как “T_E”, которое с большой вероятностью подходит к слову «THE».
К сожалению, это правило работает только в длинных сообщениях, а не в таких, где имеются лишь несколько слов, так как в них нет достаточного количества букв, чтобы показать, какие буквы являются самыми частыми в зашифрованном сообщении.
Известно, что Королева Шотландии Мэри использовала моноалфавитный шифр с некоторыми изменениями, который был невероятно трудным для дешифровки, однако когда этот шифр был наконец взломан, зашифрованные в послании сообщения дали свидетельские показания, используемые затем ее противниками, чтобы приговорить Королеву Мэри к смерти.
Проверьте себя, попытавшись расшифровать такую запись: «Ptbndcb ymdptmq bnw yew, bnwzw raw rkbcriie wrze bd owktxnwa».
№ 6 Заменяемый Шифр Цезаря
В шифрах «транспозиции» или «перемещения букв», буквы перестроены согласно некоторому заранее определенному двумя сторонами правилу или ключу. Например, слова могли быть написаны в обратном порядке, так, что фраза “all the better to see you with” становится “lla eht retteb ot ees uoy htiw”.
Другой ключ транспозиции должен изменять каждую пару букв, и таким образом, предыдущее сообщение получает вид: “la tl eh eb tt re to es ye uo iw ht”.
Такие шифры использовались во время Первой мировой войны и гражданской войны в Америке, чтобы посылать секретные сообщения. Сложные правила перестановки заставляют использующего эти шифры испытывать некие затруднения и кажутся сначала довольно трудными, но многие сообщения с транспозиционными шифрами могут быть расшифрованы с использованием анаграмм или современных компьютерных алгоритмов, которые проверяют тысячи возможных ключей шифра перемещения.
Проверьте себя, попытаясь расшифровать: «THGINYMROTSDNAKRADASAWTI»
Стеганография – это более древний язык сокрытия секретных сведений, чем коды и шифры, и является искусством скрытого письма. Например, некое тайное сообщение могло быть написано на бумаге, затем покрыто воском и проглочено, чтобы скрыть его, с целью быть извергнутым позже. Другим способом являлось татуирование сообщения на выбритой голове посыльного и последующей необходимостью отращивания волос, чтобы скрыть татуировку. Лучшая стеганография использует невинные на первый взгляд предметы повседневного пользования, чтобы скрытно донести до адресата предназначенное ему сообщение. Некогда популярная техника сокрытия сообщений в Англии использовала обычную газету с крошечными точками под буквами на первой полосе, указывающими, какие буквы должны быть прочитаны, чтобы правильно прочитать и понять скрытое сообщение. Некоторые люди скрывали сообщение, используя первую букву каждого слова или используя невидимые чернила. Противоборствующие стороны сократили уже свои тайные записи настолько, что целая страница текста стала размером с пиксель, который может быть легко пропущен любопытными глазами. Стеганография лучше всего работает, когда используется вместе с кодом или шифром, поскольку не скрытое кодом или шифром сообщение всегда подвергается риску того, что может быть обнаруженным.
Пояснение из Википедии — свободной энциклопедии: Стеганогра;фия (от греч. ;;;;;;;; — скрытый+;;;;; — пишу; буквально «тайнопись») — способ передачи или хранения информации с учётом сохранения в тайне самого факта такой передачи (хранения). Этот термин ввел в 1499 году Иоганн Тритемий в своем трактате «Стеганография» (Steganographia), зашифрованном под магическую книгу. В отличие от криптографии, которая скрывает содержимое тайного сообщения, стеганография скрывает сам факт его существования. Как правило, сообщение будет выглядеть как что-либо иное, например, как изображение, статья, список покупок, письмо или судоку.
Стеганографию обычно используют совместно с методами криптографии, таким образом, дополняя её. Преимущество стеганографии над чистой криптографией состоит в том, что сообщения не привлекают к себе внимания. Сообщения, факт шифрования которых не скрыт, вызывают подозрение и могут быть сами по себе уличающими в тех странах, в которых запрещена криптография. Таким образом, криптография защищает содержание сообщения, а стеганография защищает сам факт наличия каких-либо скрытых посланий.