5 задач на взлом шифров

Известна зловещая история о том, как Мария Стюарт лишилась головы из-за одноподстановочного шифра - задолго до вымышленных баек про "Золотого Жука" или "Пляшущих Человечков". Нынче подобные шифры вызывают снисходительную улыбку даже у школьников - чтобы расшифровать их, обычно и компьютер-то не требуется.

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

Без "Цезаря" никак

Задача на взлом «Шифра Цезаря» должна быть в списке просто потому что на том же принципе базируются и более сложные. Напомним что:

Расшифровка одноподстановочного шифра сводится к упражнению на определение частоты букв в тексте и сравнении с ожидаемым распределением для данного языка (например английского). Но с «Цезарем» можно поступить и проще т.к. вариантов «ключа» всего 26 — можно их перебрать и проверить текст на какие‑то популярные слова или слоги...

"Виженер" не намного сложнее

Шифр Виженера — это небольшое усложнение «Цезаря». Вместо одного ключевого числа для определения сдвига букв мы используем небольшую последовательность, например 3, 1, 4, 1, 5, 9 — или эта последовательность может быть задана кодовым словом (каждая буква слова задаёт сдвиг согласно своему номеру в алфавите). Таким образом первая буква текста кодируется первым сдвигом из «ключа», вторая — вторым и так далее, пока ключ не кончится — после чего все повторяется. В принципе если бы ключ был длинной с сам текст, шифр был бы надёжным...

Взлом Шифра Виженера очевидно не может использовать «упрощённый» вариант взлома «Цезаря» с перебором ключей — но частотный анализ рулит. Остаётся только сделать несколько попыток с разной предполагаемой длинной ключа N — и рассматривать текст как набор из N шифров. Как только мы получаем «профиль» частот схожий с естественным текстом — понятно, длина ключа определена. Ну и дальше уже все просто.

Потоковый шифр - как с ним быть?

Очевидное развитие идеи «Виженера» — не хранить последовательность «ключа» а генерировать её на лету. Запасаемся каким‑нибудь алгоритмом генерации псевдослучайной последовательности — и используем получаемые значения для «сдвига» букв. Такие последовательности могут иметь очень большой период, так что атака подобная предыдущей не годится. А в качестве «секрета» нужно запомнить только параметры генерации последовательности (обычно это от 2 до 5 чисел).

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

Ферма ломает RSA

Около 70х годов прошлого столетия в криптографии случился качественный прорыв — появились способы при которых можно публично обмениваться ключами или частями для их генерации. Кроме замечательной выдумки Диффи‑Хеллмана (не удивлюсь если она до сих пор используется как часть процесса установки защищенного соединения браузера с сервером) у всех на слуху конечно RSA — алгоритм при котором мы можем отправить ключ для шифрования своему абоненту совершенно открыто — всё равно для расшифровки‑то требуется другой, который мы держим в секрете.

Задача Fermat goes hacking RSA посвящена разбору возможного взлома такого шифра — в том случае когда пара ключей была сгенерирована не очень осмотрительно. В отличие от предыдущих задач здесь не даётся пространных пояснений а только подсказка что имя Пьера Ферма упомянуто не случайно — предполагается что простое гугление осветит дальнейший путь...

Шифр Плейфера - этот не для слабаков

С названием связана забавная история — фамилия Playfair переводится как «Играй честно» — но при этом автор алгоритма не сам Плейфер (который его популяризировал) а Уитстон, которого вы можете помнить как изобретателя английского телеграфа или измерительного моста для сопротивлений.

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

Задача на Взлом Шифра Плейфера — представляет вам относительную свободу действий. Вы получаете шифрованный текст — а уж придумывать способ (наверное, на основе экспериментов с предыдущими шифрами) — это уже ваше дело:) На текущий момент это одна из «наименее решаемых» задач на сайте.

Заключение

Можно видеть что задачи упомянутые здесь помечены тегом cryptography — если щёлкнуть по нему, можно найти ещё несколько упражнений по данной тематике, но не связанных непосредственно со взломом (а чаще знакомство с теми или иными алгоритмами).

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

@RodionGork
27.12.2024 11:30 UTC
Первоисточник

Комментарии

@dersoverflow
27.12.2024 14:32 UTC
-2

А давайте лучше сломаем что-нибудь красивое современное: https://ders.by/crypt/derscrypt/derscrypt.html

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

Скажем, за $1000 - это было бы интересно студентам?

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

Нормально ли денег за два-три вечера, или нужно добавить?

@RodionGork
27.12.2024 14:43 UTC
+1

отчего бы вам не предложить это в каком-нибудь профильном / профессиональном сообществе по криптографии? если вы имеете в виду что хотели бы предложить подобную задачу аудитории CodeAbbey - думаю придётся начать с описания на английском языке

@xi-tauw
27.12.2024 16:38 UTC
+1

DersCrypt -- это блочный симметричный криптографический алгоритм, построенный на неиспользовавшихся ранее принципах

Из SP-сети выкинули P и сеть, а то что осталось странно усложнили - это не "построенный на неиспользовавшихся ранее принципах"

27.12.2024 18:33 UTC
+1

Шифр "на новых физических принципах", как сейчас это модно

@Paulus
29.12.2024 15:30 UTC
-2

Есть ли софт, который помогает вспомнить пароль WinZIP архива, если есть незашифрованные файлы из этого архива?

@Paulus
01.01.2025 01:27 UTC
-1

Судя по -2 ответа сообщество не знает...

Ну с новым годом, и незнающих тоже

@RodionGork
01.01.2025 08:24 UTC
+1

это не про знает или не знает, это про неудачное место для вопроса (есть же qna) - ну и сам вопрос... если немного попробуете в нём разобраться, поймёте почему он тоже неудачный - например, там рандомная "соль" добавляется к каждому файлу :) всех благ

@Paulus
02.01.2025 13:01 UTC
-1

Теперь попробуйте поднять где эта соль хранится и почему это никакого отношения к моему вопросу не имеет. Успехов ;)

@RodionGork
02.01.2025 19:42 UTC
+2

что-то вы странное говорите. я не могу понять чего вы не понимаете. соль не хранится отдельно (ибо зачем? это просто рандомные байты) она добавляется к файлу так что получается соль+файл и все шифруется вместе. при расшифровке её просто выбрасывают. одна из главных целей этой манипуляции как раз в том чтобы предотвратить атаки тем способом которым вы интересуетесь (и некоторыми другими).

@DenisSivtsev
14.02.2025 11:31 UTC
+1

Большое спасибо за данный ресурс! Там же нашел интересную задачку на азбуку Морзе, сейчас над ней размышляю)

@RodionGork
21.02.2025 04:34 UTC
0

Серию про Морзе / Холмса-Ватсона один энтузиаст из пользователей сочинил, мне самому в ней очень описания нравятся :)

Спасибо на добром слове!