
Библиотека, состоящая из объяснения и реализации всех существующих атак на различные системы шифрования, цифровые подписи, обмен ключами, методы аутентификации, а также примеров задач из CTF.
Crypton — это образовательная библиотека для изучения и практики наступательной и оборонительной криптографии. По сути, это сборник объяснений и реализаций всех существующих уязвимостей и атак на различные системы шифрования (симметричные и асимметричные), цифровые подписи, коды аутентификации сообщений и системы аутентифицированного шифрования. Каждая атака также сопровождается примерами задач из соревнований «Capture The Flag» и соответствующими разборами решений. Люди, уже знакомые с этой областью (или участвующие в CTF), могут использовать Crypton как инструмент для решения задач, основанных на той или иной существующей уязвимости.
Библиотека будет постоянно пополняться объяснениями атак и CTF-задачами! Не стесняйтесь написать мне на email по любым предложениям!
Я написал сообщение в блоге о процессе разработки этой библиотеки: https://masterpessimistaa.wordpress.com/2018/08/12/announcing-crypton-an-educational-library-to-learn-offensive-and-defensive-cryptography/
ПРЕДУПРЕЖДЕНИЕ: Автор никоим образом не гарантирует, что код безопасен. Библиотека предназначена только для образовательных целей, и код не следует использовать для внедрения в реальных проектах. Все примеры скриптов в библиотеке являются тривиальными реализациями.
В этом файле README есть несколько разделов:
Помочь участникам CTF и людям, интересующимся криптографией, предоставить платформу для изучения атак в крипто и для опытных игроков CTF — практиковаться в решении задач, систематически разделённых на атаки, связанные с различными поддоменами криптографии. А также проиллюстрировать с помощью различных объяснений атак, насколько важна правильная реализация протоколов.

|---|:---------------------------:|:-----------------------------------------------------------------------------------------------:|:------------:|:----------:| | 1 | DLP- Циклические группы, задача дискретного логарифма |
Ashutosh Ahelleya
| № | Тема | Описание | Реализация/Эксплойт | Задача# |
|---|
| 1 | Основы блочных шифров — работа блочных шифров, дополнение и т.д. |
|
|
|
| 2 | Режимы шифрования — различные режимы работы блочных шифров: ECB, CBC, CTR |
|
|
|
| 3 | Определение размера блока — определение размера блока блочного шифра, шифрующего данные на удалённом сервисе |
|
|
|
| 4 | Определение режима — определение типа режима шифрования: независимое или зависимое шифрование блоков |
|
|
|
| 5 | ECB побайтово — побайтовое дешифрование строки secret, работающей на удалённом сервисе, который шифрует input+secret в режиме ECB |
|
|
|
| 6 | Определение IV в CBC — определение значения вектора инициализации на удалённом сервисе, который шифрует наши данные с помощью блочного шифра в режиме CBC |
|
|
|
| 7 | Атака переворотом битов в CBC — эксплуатация механизма генерации cookie для входа в систему как администратор, когда cookie генерируется с помощью блочного шифра в режиме CBC |
|
|
|
| 8 | CBC побайтово — побайтовое дешифрование строки secret, работающей на удалённом сервисе, который шифрует input+secret в режиме ECB |
|
|
|
| 9 | Атака через оракул дополнения в CBC — дешифрование данных, зашифрованных уязвимым сервисом, предоставляющим шифрование/дешифрование |
|
|
|
| 10 | Переворот битов в CTR — эксплуатация механизма генерации cookie для входа в систему как администратор, когда cookie генерируется с помощью блочного шифра в режиме CBC |
|
|
|
| № | Тема | Описание | Реализация/Эксплойт | Задача# |
|---|
| 1 | RSA без дополнения (шифр/дешифр) — генерация ключей, распределение, шифрование/дешифрование, проверка формулы дешифрования и дополнение в RSA |
|
|
|
| 2 | Атака прямым извлечением корня — атака на RSA без дополнения с малым открытым ключом |
|
|
|
| 3 | Факторизация Ферма — метод факторизации модуля n, когда значения p и q близки |
|
|
|
| 4 | Факторизация Полларда p-1 — метод факторизации n, когда оба его множителя p и q, p-1 и q-1 имеют очень маленькие простые делители |
|
|
|
| 5 | Атака общим модулем — расшифровка шифротекста, когда соответствующий открытый текст дважды зашифрован с использованием одного и того же модуля n |
|
|
|
| 6 | Атака общим простым множителем — получение множителей модулей n1 и n2, когда у них есть общий множитель |
|
|
|
| 7 | Атака Винера — получение значения показателя дешифрования d, когда d < N0,25 |
|
|
|
| 8 | Вариант атаки Винера — получение значения показателя дешифрования d, когда d на несколько бит больше N0,25 или d < N0,25 |
|
|
|
| 9 | Атака Копперсмита — теорема Копперсмита, атака на стереотипные сообщения и факторизация n с известными старшими битами |
|
|
|
| 10 | Атака Франклина-Рейтера на связанные сообщения — атака для восстановления связанных сообщений, зашифрованных с использованием одного и того же модуля |
|
|
|
| 11 | Атака Хастада с вещанием — с расширением — атака для восстановления сообщения, разосланного разным людям, зашифрованного с использованием одного и того же показателя, но разных модулей |
|
|
|
| 12 | RSA с дополнением PKCS1-v1.5 (шифрование/дешифрование) — кодирование ASN1, шифрование RSA с дополнением (требует исправления) |
|
|
|
| 13 | Атака через оракул младшего значащего бита — атака на оракул RSA, раскрывающий значение младшего значащего бита при дешифровании |
|
|
|
| 14 | Атака восстановления модуля — атака на оракул RSA для извлечения значения модуля, если он не является открытым |
|
|
|
| 15 | Введение в RSA (задачи) — базовые задачи по RSA, связанные с теорией чисел |
|
|
|
| № | Тема | Описание | Реализация/Эксплойт | Задача# |
|---|
| 1 | Код аутентификации сообщения — внутреннее устройство и анализ безопасности MAC |
|
|
|
| 2 | Фабрикация CBC-MAC — генерация двух сообщений M1 и M2, имеющих одинаковую метку аутентификации CBC-MAC |
|
|
|
| 3 | Атака расширения длины на CBC-MAC — генерация допустимой метки аутентификации для сообщения M1 | M2 (конкатенация) при известном MAC(M1) |
|
| № | Тема | Объяснение | Реализация/Эксплойт | Задача № |
|---|
| 1 | Криптосистема ElGamal — шифрование/дешифрование — генерация ключей, шифрование, дешифрование в криптосистеме ElGamal |
|
|
|
| № | Тема | Объяснение | Реализация/Эксплойт | Задача № |
|---|
| 1 | Основы и внутреннее устройство AE — принцип работы аутентифицированного шифрования |
|
|
|
| 2 | AE с помощью MAC — различные методы реализации AE с помощью MAC: Encrypt-and-MAC, MAC-then-encrypt и Encrypt-then-MAC |
|
|
|
| 3 | Аутентифицированные шифры |
|
|
|
| 4 | AE с ассоциированными данными (AEAD) |
|
|
|
| 5 | AES-GCM — шифрование в AES-GCM, MAC Вегмана — Картера |
|
|
|
| 6 | Атака «Forbidden» на AES-GCM — атака на AES-GCM из-за повторного использования nonce |
|
|
|
| № | Тема | Объяснение | Реализация/Эксплойт | Задача № |
|---|
| 1 | Внутреннее устройство эллиптических кривых — определение эллиптических кривых, сложение точек, удвоение точек и скалярное умножение |
|
|
| № | Тема | Объяснение | Реализация/Эксплойт | Задача № |
|---|
| 1 | Подписи ElGamal — генерация ключей, создание подписи, проверка подписи и корректность схемы подписи ElGamal |
|
|
|
| 2 | ECDSA — создание подписи, проверка подписи и корректность алгоритма подписи |
|
|
|
| 3 | Атака повторного использования k в ECDSA — подделка подписей ECDSA из-за повторного использования k |
|
|
|
| 4 | Цифровые подписи RSA без дополнения — создание и проверка подписи в схеме цифровой подписи RSA |
|
|
|
| 5 | Цифровые подписи RSA с дополнением PKCS1-v1.5 |
|
|
|
| 6 | Атака Бляйхенбахера при e=3 |
|
|
|
| № | Тема | Объяснение | Реализация/Эксплойт | Задача № |
|---|
| 1 | Внутреннее устройство идентификации |
|
|
|
| 2 | Аутентификация с помощью эфемерного ключа |
|
|
|
| № | Тема | Объяснение | Реализация/Эксплойт | Задача № |
|---|
| 1 | Внутреннее устройство обмена ключами Диффи — Хеллмана |
|
|
|
| 2 | Атака ограничением на малую подгруппу |
|
|
|
| 3 | Атака на некорректные точки кривой |
|
|
|