Простейшие шифры: описание популярных кодов и шифров
Необходимость в шифровании переписки возникла еще в древнем мире, и появились шифры простой замены. Зашифрованные послания определяли судьбу множества битв и влияли на ход истории. Со временем люди изобретали все более совершенные способы шифрования.
Код и шифр - это, к слову, разные понятия. Первое означает замену каждого слова в сообщении кодовым словом. Второе же заключается в шифровании по определенному алгоритму каждого символа информации.
После того как кодированием информации занялась математика и была разработана теория криптографии, ученые обнаружили множество полезных свойств этой прикладной науки. Например, алгоритмы декодирования помогли разгадать мертвые языки, такие как древнеегипетский или латынь.
Стеганография
Стеганография старше кодирования и шифрования. Это искусство появилось очень давно. Оно буквально означает «скрытое письмо» или «тайнопись». Хоть стеганография не совсем соответствует определениям кода или шифра, но она предназначена для сокрытия информации от чужих глаз.
Стеганография является простейшим шифром. Типичными ее примерами являются проглоченные записки, покрытые ваксой, или сообщение на бритой голове, которое скрывается под выросшими волосами. Ярчайшим примером стеганографии является способ, описанный во множестве английских (и не только) детективных книг, когда сообщения передаются через газету, где малозаметным образом помечены буквы.
Главным минусом стеганографии является то, что внимательный посторонний человек может ее заметить. Поэтому, чтобы секретное послание не было легко читаемым, совместно со стеганографией используются методы шифрования и кодирования.
ROT1 и шифр Цезаря
Название этого шифра ROTate 1 letter forward, и он известен многим школьникам. Он представляет собой шифр простой замены. Его суть заключается в том, что каждая буква шифруется путем смещения по алфавиту на 1 букву вперед. А -> Б, Б -> В, ..., Я -> А. Например, зашифруем фразу «наша Настя громко плачет» и получим «общб Обтуа дспнлп рмбшеу».
Шифр ROT1 может быть обобщен на произвольное число смещений, тогда он называется ROTN, где N - это число, на которое следует смещать шифрование букв. В таком виде шифр известен с глубокой древности и носит название «шифр Цезаря».
Шифр Цезаря очень простой и быстрый, но он является шифром простой одинарной перестановки и поэтому легко взламывается. Имея подобный недостаток, он подходит только для детских шалостей.
Транспозиционные или перестановочные шифры
Данные виды шифра простой перестановки более серьезны и активно применялись не так давно. В Гражданскую войну в США и в Первую мировую его использовали для передачи сообщений. Его алгоритм заключается в перестановке букв местами - записать сообщение в обратном порядке или попарно переставить буквы. Например, зашифруем фразу «азбука Морзе - тоже шифр» -> «акубза езроМ - ежот рфиш».
С хорошим алгоритмом, который определял произвольные перестановки для каждого символа или их группы, шифр становился устойчивым к простому взлому. Но! Только в свое время. Так как шифр легко взламывается простым перебором или словарным соответствием, сегодня с его расшифровкой справится любой смартфон. Поэтому с появлением компьютеров этот шифр также перешел в разряд детских.
Азбука Морзе
Азбука является средством обмена информации и ее основная задача - сделать сообщения более простыми и понятными для передачи. Хотя это противоречит тому, для чего предназначено шифрование. Тем не менее она работает подобно простейшим шифрам. В системе Морзе каждая буква, цифра и знак препинания имеют свой код, составленный из группы тире и точек. При передаче сообщения с помощью телеграфа тире и точки означают длинные и короткие сигналы.
Телеграф и азбука Морзе... Морзе был тем, кто первый запатентовал «свое» изобретение в 1840 году, хотя до него и в России, и в Англии были изобретены подобные аппараты. Но кого это теперь интересует... Телеграф и азбука Морзе оказали очень большое влияние на мир, позволив почти мгновенно передавать сообщения на континентальные расстояния.
Моноалфавитная замена
Описанные выше ROTN и азбука Морзе являются представителями шрифтов моноалфавитной замены. Приставка «моно» означает, что при шифровании каждая буква изначального сообщения заменяется другой буквой или кодом из единственного алфавита шифрования.
Дешифрование шифров простой замены не составляет труда, и в этом их главный недостаток. Разгадываются они простым перебором или частотным анализом. Например, известно, что самые используемые буквы русского языка - это «о», «а», «и». Таким образом, можно предположить, что в зашифрованном тексте буквы, которые встречаются чаще всего, означают либо «о», либо «а», либо «и». Исходя из таких соображений, послание можно расшифровать даже без перебора компьютером.
Известно, что Мария I, королева Шотландии с 1561 по 1567 г., использовала очень сложный шифр моноалфавитной замены с несколькими комбинациями. И все же ее враги смогли расшифровать послания, и информации хватило, чтобы приговорить королеву к смерти.
Шифр Гронсфельда, или полиалфавитная замена
Простые шифры криптографией признаны бесполезными. Поэтому множество из них было доработано. Шифр Гронсфельда — это модификация шифра Цезаря. Данный способ является значительно более стойким к взлому и заключается в том, что каждый символ кодируемой информации шифруется при помощи одного из разных алфавитов, которые циклически повторяются. Можно сказать, что это многомерное применение простейшего шифра замены. Фактически шифр Гронсфельда очень похож на шифр Виженера, рассмотренный ниже.
Алгоритм шифрования ADFGX
Это самый известный шифр Первой мировой войны, используемый немцами. Свое имя шифр получил потому, что алгоритм шифрования приводил все шифрограммы к чередованию этих букв. Выбор самих же букв был определен их удобством при передаче по телеграфным линиям. Каждая буква в шифре представляется двумя. Рассмотрим более интересную версию квадрата ADFGX, которая включает цифры и называется ADFGVX.
A | D | F | G | V | X | |
A | J | Q | A | 5 | H | D |
D | 2 | E | R | V | 9 | Z |
F | 8 | Y | I | N | K | V |
G | U | P | B | F | 6 | O |
V | 4 | G | X | S | 3 | T |
X | W | L | Q | 7 | C | 0 |
Алгоритм составления квадрата ADFGX следующий:
- Берем случайные n букв для обозначения столбцов и строк.
- Строим матрицу N x N.
- Вписываем в матрицу алфавит, цифры, знаки, случайным образом разбросанные по ячейкам.
Составим аналогичный квадрат для русского языка. Например, создадим квадрат АБВГД:
А | Б | В | Г | Д | |
А | Е/Е | Н | Ь/Ъ | А | И/Й |
Б | Ч | В/Ф | Г/К | З | Д |
В | Ш/Щ | Б | Л | Х | Я |
Г | Р | М | О | Ю | П |
Д | Ж | Т | Ц | Ы | У |
Данная матрица выглядит странно, так как ряд ячеек содержит по две буквы. Это допустимо, смысл послания при этом не теряется. Его легко можно восстановить. Зашифруем фразу «Компактный шифр» при помощи данной таблицы:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
Фраза | К | О | М | П | А | К | Т | Н | Ы | Й | Ш | И | Ф | Р |
Шифр | бв | гв | гб | гд | аг | бв | дб | аб | дг | ад | ва | ад | бб | га |
Таким образом, итоговое зашифрованное послание выглядит так: «бвгвгбгдагбвдбабдгвдваадббга». Разумеется, немцы проводили подобную строку еще через несколько шифров. И в итоге получалось очень устойчивое к взлому шифрованное послание.
Шифр Виженера
Данный шифр на порядок более устойчив к взлому, чем моноалфавитные, хотя представляет собой шифр простой замены текста. Однако благодаря устойчивому алгоритму долгое время считался невозможным для взлома. Первые его упоминания относятся к 16-му веку. Виженер (французский дипломат) ошибочно считается его изобретателем. Чтобы лучше разобраться, о чем идет речь, рассмотрим таблицу Виженера (квадрат Виженера, tabula recta) для русского языка.
Приступим к шифрованию фразы «Касперович смеется». Но, чтобы шифрование удалось, нужно ключевое слово — пусть им будет «пароль». Теперь начнем шифрование. Для этого запишем ключ столько раз, чтобы количество букв из него соответствовало количеству букв в шифруемой фразе, путем повтора ключа или обрезания:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | |
Фраза: | К | А | С | П | Е | Р | О | В | И | Ч | С | М | Е | Е | Т | С | Я |
Ключ | П | А | Р | О | Л | Ь | П | А | Р | О | Л | Ь | П | А | Р | О | Л |
Теперь по таблице Виженера, как по координатной плоскости, ищем ячейку, которая является пересечением пар букв, и получаем: К + П = Ъ, А + А = Б, С + Р = В и т. д.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | |
Шифр: | Ъ | Б | В | Ю | С | Н | Ю | Г | Щ | Ж | Э | Й | Х | Ж | Г | А | Л |
Получаем, что "касперович смеется" = "ъбвюснюгщж эйхжгал".
Взломать шифр Виженера так сложно, потому что для работы частотного анализа необходимо знать длину ключевого слова. Поэтому взлом заключается в том, чтобы наугад бросать длину ключевого слова и пытаться взломать засекреченное послание.
Следует также упомянуть, что помимо абсолютно случайного ключа может быть использована совершенно разная таблица Виженера. В данном случае квадрат Виженера состоит из построчно записанного русского алфавита со смещением на единицу. Что отсылает нас к шифру ROT1. И точно так же, как и в шифре Цезаря, смещение может быть любым. Более того, порядок букв не должен быть алфавитным. В данном случае сама таблица может быть ключом, не зная которую невозможно будет прочесть сообщение, даже зная ключ.
Коды
Настоящие коды состоят из соответствий для каждого слова отдельного кода. Для работы с ними необходимы так называемые кодовые книги. Фактически это тот же словарь, только содержащий переводы слов в коды. Типичным и упрощенным примером кодов является таблица ASCII — международный шифр простых знаков.
Главным преимуществом кодов является то, что расшифровать их очень сложно. Частотный анализ почти не работает при их взломе. Слабость же кодов — это, собственно, сами книги. Во-первых, их подготовка — сложный и дорогостоящий процесс. Во-вторых, для врагов они превращаются в желанный объект и перехват даже части книги вынуждает менять все коды полностью.
В 20-м веке многие государства для передачи секретных данных использовали коды, меняя кодовую книгу по прошествии определенного периода. И они же активно охотились за книгами соседей и противников.
"Энигма"
Всем известно, что "Энигма" — это главная шифровальная машина нацистов во время II мировой войны. Строение "Энигмы" включает комбинацию электрических и механических схем. То, каким получится шифр, зависит от начальной конфигурации "Энигмы". В то же время "Энигма" автоматически меняет свою конфигурацию во время работы, шифруя одно сообщение несколькими способами на всем его протяжении.
В противовес самым простым шифрам "Энигма" давала триллионы возможных комбинаций, что делало взлом зашифрованной информации почти невозможным. В свою очередь, у нацистов на каждый день была заготовлена определенная комбинация, которую они использовали в конкретный день для передачи сообщений. Поэтому даже если "Энигма" попадала в руки противника, она никак не способствовала расшифровке сообщений без введения нужной конфигурации каждый день.
Взломать "Энигму" активно пытались в течение всей военной кампании Гитлера. В Англии в 1936 г. для этого построили один из первых вычислительных аппаратов (машина Тьюринга), ставший прообразом компьютеров в будущем. Его задачей было моделирование работы нескольких десятков "Энигм" одновременно и прогон через них перехваченных сообщений нацистов. Но даже машине Тьюринга лишь иногда удавалось взламывать сообщение.
Шифрование методом публичного ключа
Самый популярный из алгоритмов шифрования, который используется повсеместно в технике и компьютерных системах. Его суть заключается, как правило, в наличии двух ключей, один из которых передается публично, а второй является секретным (приватным). Открытый ключ используется для шифровки сообщения, а секретный — для дешифровки.
В роли открытого ключа чаще всего выступает очень большое число, у которого существует только два делителя, не считая единицы и самого числа. Вместе эти два делителя образуют секретный ключ.
Рассмотрим простой пример. Пусть публичным ключом будет 905. Его делителями являются числа 1, 5, 181 и 905. Тогда секретным ключом будет, например, число 5*181. Вы скажете слишком просто? А что если в роли публичного числа будет число с 60 знаками? Математически сложно вычислить делители большого числа.
В качестве более живого примера представьте, что вы снимаете деньги в банкомате. При считывании карточки личные данные зашифровываются определенным открытым ключом, а на стороне банка происходит расшифровка информации секретным ключом. И этот открытый ключ можно менять для каждой операции. А способов быстро найти делители ключа при его перехвате — нет.
Стойкость шрифта
Криптографическая стойкость алгоритма шифрования — это способность противостоять взлому. Данный параметр является самым важным для любого шифрования. Очевидно, что шифр простой замены, расшифровку которого осилит любое электронное устройство, является одним из самых нестойких.
На сегодняшний день не существует единых стандартов, по которым можно было бы оценить стойкость шифра. Это трудоемкий и долгий процесс. Однако есть ряд комиссий, которые изготовили стандарты в этой области. Например, минимальные требования к алгоритму шифрования Advanced Encryption Standart или AES, разработанные в NIST США.
Для справки: самым стойким шифром к взлому признан шифр Вернама. При этом его плюсом является то, что по своему алгоритму он является простейшим шифром.