Известна зловещая история о том, как Мария Стюарт лишилась головы из-за одноподстановочного шифра — задолго до вымышленных баек про «Золотого Жука» или «Пляшущих Человечков». Нынче подобные шифры вызывают снисходительную улыбку даже у школьников — чтобы расшифровать их, обычно и компьютер-то не требуется.
Но у нас на CodeAbbey с годами накопились и такие задачки на расшифровку, которые требуют чуть больше мозговых усилий. Они могут быть полезны и как беглый экскурс в основы криптографии — и просто послужить развлечением в предстоящие длинные выходные.
Без «Цезаря» никак
Задача на взлом «Шифра Цезаря» должна быть в списке просто потому что на том же принципе базируются и более сложные. Напомним что:
-
«одноподстановочным» называется шифр в котором тупо каждая буква заменена какой‑то другой (или каким‑нибудь таинственным символом) — в общем, взаимно‑однозначное соответствие
-
а «Шифр Цезаря» — это простой вариант одноподстановочного шифра в котором «соответствие» определяется как сдвиг букв по алфавиту на несколько позиций (из плюсов — вместо таблицы преобразования нужно запомнить только одно число)
Расшифровка одноподстановочного шифра сводится к упражнению на определение частоты букв в тексте и сравнении с ожидаемым распределением для данного языка (например английского). Но с «Цезарем» можно поступить и проще т.к. вариантов «ключа» всего 26 — можно их перебрать и проверить текст на какие‑то популярные слова или слоги…
«Виженер» не намного сложнее
Шифр Виженера — это небольшое усложнение «Цезаря». Вместо одного ключевого числа для определения сдвига букв мы используем небольшую последовательность, например 3, 1, 4, 1, 5, 9 — или эта последовательность может быть задана кодовым словом (каждая буква слова задаёт сдвиг согласно своему номеру в алфавите). Таким образом первая буква текста кодируется первым сдвигом из «ключа», вторая — вторым и так далее, пока ключ не кончится — после чего все повторяется. В принципе если бы ключ был длинной с сам текст, шифр был бы надёжным…
Взлом Шифра Виженера очевидно не может использовать «упрощённый» вариант взлома «Цезаря» с перебором ключей — но частотный анализ рулит. Остаётся только сделать несколько попыток с разной предполагаемой длинной ключа N — и рассматривать текст как набор из N шифров. Как только мы получаем «профиль» частот схожий с естественным текстом — понятно, длина ключа определена. Ну и дальше уже все просто.
Потоковый шифр — как с ним быть?
Очевидное развитие идеи «Виженера» — не хранить последовательность «ключа» а генерировать её на лету. Запасаемся каким‑нибудь алгоритмом генерации псевдослучайной последовательности — и используем получаемые значения для «сдвига» букв. Такие последовательности могут иметь очень большой период, так что атака подобная предыдущей не годится. А в качестве «секрета» нужно запомнить только параметры генерации последовательности (обычно это от 2 до 5 чисел).
Взлом Потокового Шифра использует иной подход. Если у нас есть только один шифрованный текст — дело плохо, или вовсе безнадёжно. Но если у нас есть как минимум два сообщения зашифрованных одной и той же «ключевой» последовательностью — то немножко поколдовав над ними мы можем выделить сам ключ. Даже не поняв алгоритма его генерации мы сможем использовать его для декодирования.
Ферма ломает RSA
Около 70х годов прошлого столетия в криптографии случился качественный прорыв — появились способы при которых можно публично обмениваться ключами или частями для их генерации. Кроме замечательной выдумки Диффи‑Хеллмана (не удивлюсь если она до сих пор используется как часть процесса установки защищенного соединения браузера с сервером) у всех на слуху конечно RSA — алгоритм при котором мы можем отправить ключ для шифрования своему абоненту совершенно открыто — всё равно для расшифровки‑то требуется другой, который мы держим в секрете.
Задача Fermat goes hacking RSA посвящена разбору возможного взлома такого шифра — в том случае когда пара ключей была сгенерирована не очень осмотрительно. В отличие от предыдущих задач здесь не даётся пространных пояснений а только подсказка что имя Пьера Ферма упомянуто не случайно — предполагается что простое гугление осветит дальнейший путь…
Шифр Плейфера — этот не для слабаков
С названием связана забавная история — фамилия Playfair переводится как «Играй честно» — но при этом автор алгоритма не сам Плейфер (который его популяризировал) а Уитстон, которого вы можете помнить как изобретателя английского телеграфа или измерительного моста для сопротивлений.
Так вот — этот шифр, хотя и отбрасывает нас назад от современных технологий — вполне может заставить вас поднапрячься. Идея проста — он работает «подстановками» как и «одноподстановочный» — но оперирует не с одиночными буквами, а с парами букв, то есть «биграммами». Навскидку 26 букв образуют больше 600 всевозможных пар и суть метода сводится в основном к хитроумному способу генерации «подстановок» с помощью маленькой квадратной таблички в которую буквы расставлены рандомно.
Задача на Взлом Шифра Плейфера — представляет вам относительную свободу действий. Вы получаете шифрованный текст — а уж придумывать способ (наверное, на основе экспериментов с предыдущими шифрами) — это уже ваше дело:) На текущий момент это одна из «наименее решаемых» задач на сайте.
Заключение
Можно видеть что задачи упомянутые здесь помечены тегом cryptography
— если щёлкнуть по нему, можно найти ещё несколько упражнений по данной тематике, но не связанных непосредственно со взломом (а чаще знакомство с теми или иными алгоритмами).
Конечно, все упомянутые шифры очень известны, и при небольшом усилии в интернетах легко найти готовые программы и тулы которые отыщут решение за вас. Но тратить время на то чтобы «не решать» задачи, наверное, бессмысленно:)
ссылка на оригинал статьи https://habr.com/ru/articles/870230/
Добавить комментарий