Шифрование — основа безопасности при передаче данных. Но в разных ситуациях нужны разные подходы к шифрованию. Сегодня мы поговорим о самых распространённых алгоритмах шифрования. Они используются везде: от программ для сжатия файлов до хранения правительственных документов.
Как работает шифрование данных
Задача шифрования — превратить данные, которые могут прочитать все, в данные, которые может прочитать только тот, у кого есть секретная часть (ключ безопасности, сертификат, пароль или расшифровочная матрица).
Чтобы всё заработало, нужен алгоритм шифрования. Это набор инструкций и правил, которые определяют, как эти данные шифруются и дешифруются. Алгоритм — математический процесс, который обеспечивает безопасное преобразование информации.
Ключ — это набор математических значений, которые используются алгоритмом для шифрования и расшифровки данных. Надёжность ключа зависит от его длины в битах.
Алгоритмы бывают симметричными и асимметричными.
Симметричные используют один и тот же ключ для шифрования информации и для её расшифровки. Это значит, что отправитель и получатель зашифрованного сообщения должны обменяться копией секретного ключа по защищённому каналу, прежде чем начать передачу зашифрованных данных.
Асимметричные алгоритмы используют два ключа — открытый для шифрования и закрытый для расшифровки. Пара ключей связана математическим образом так, что данные, зашифрованные одним ключом, могут быть расшифрованы только другим ключом из этой пары. Это сложнее, но не требует от двух сторон надёжного обмена секретным ключом перед отправкой зашифрованных сообщений.
AES (Advanced Encryption Standard)
AES — симметричный алгоритм шифрования. Выбран Национальным институтом стандартов и технологии (NIST) в 2001 году в качестве стандарта шифрования для защиты конфиденциальности данных.
AES — блочный шифр. Это значит, что, в отличие от потоковых шифров, которые обрабатывают данные бит за битом, блочные шифры работают на фиксированных блоках данных. Каждый блок обрабатывается независимо от других блоков, что упрощает параллельные вычисления. Так шифрование становится быстрее.
🤖 Как работает AES
AES использует несколько раундов шифрования, которые зависят от размера ключа. Для 128-битного ключа используется 10 раундов, для 192-битного — 12, а для 256-битного — 14.
Каждый раунд состоит из четырёх операций над блоком данных:
- Каждый байт в блоке данных заменяется на соответствующий байт из таблицы с заранее определёнными значениями. Это добавляет нелинейность и усложняет обратное вычисление, делая шифр безопаснее.
- Производится циклический сдвиг байтов в каждой строке блока данных.
- Применяется матричное преобразование к столбцам блока данных.
- Происходит операция исключающего ИЛИ (XOR) между начальным ключом и блоком данных в процессе шифрования. Это нужно для комбинирования данных с ключом.
Для расшифровки операции выполняются в обратном порядке.
✅ Где используется AES
AES — самый популярный алгоритм шифрования, потому что его легко адаптировать под конкретные требования и реализовать. Вот небольшой список организаций и проектов, где используется AES:
- Правительство США.
- Google Cloud.
- Snapchat и Facebook Messenger.
- Программы сжатия файлов 7-Zip, WinRAR, WinZip для предотвращения утечки данных.
- Библиотеки языков программирования Java, Python и C++.
- В протоколах VPN.
- В протоколах безопасности веб-сайтов для шифрования данных между клиентом и сервером. Например, в HTTPs.
А ещё на базе AES разработан алгоритм шифрования MTProto, который используется в мессенджере Telegram.
❌ Как взломать
Считается стойким алгоритмом, но его безопасность зависит от правильной реализации, длины ключа и защиты ключей.
AES восприимчив к атаке «человек посередине» (Man-in-the-Middle) — если злоумышленник перехватит ключ, он сможет расшифровать зашифрованные данные.
В случае использования слабого ключа злоумышленники могут попытаться взломать систему методом прямого перебора ключей.
RSA (Rivest-Shamir-Adleman)
RSA — асимметричный алгоритм шифрования, разработанный Рональдом Ривестом, Ади Шамиром и Леонардом Адлеманом в 1977 году. Основан на рандомизации, элементарной математике и простых числах. Создателям потребовалось 42 попытки, чтобы найти формулу, которую они посчитали устойчивой к взломам.
В 2001 году RSA был включён в федеральные стандарты обработки информации США.
🤖 Как работает
RSA основан на модульной арифметике и свойствах простых чисел. Включает два этапа: генерацию ключей и процесс шифрования и расшифровки. Если упростить, алгоритм работает так:
- Для генерации ключа умножаются два больших простых числа определённого размера (p и q).
- Вычисляется их произведение, которое называется модулем (n = p × q).
- Затем выбирается другое число e — взаимно простое с (p − 1) × (q − 1).
- Вычисляется число d, обратное к e по модулю (p − 1) × (q − 1).
- Пара (e, n) образует публичный ключ, а пара (d, n) — приватный ключ.
- С помощью публичного ключа сообщение шифруется.
- Расшифровать сообщение может только владелец приватного ключа. При расшифровке используется формула, с помощью которой вычисляются исходные числа.
Зашифровать своё сообщение и посмотреть, как работают формулы в алгоритме, можно на странице с генераторами ключей RSA.
✅ Где используется
- Для создания цифровой подписи сообщения.
- В протоколах безопасности SSL/TLS для защиты трафика.
- Для шифрования данных на уровне файла.
- В электронных платежах и онлайн-банкинге.
- В инфраструктуре открытых ключей (PKI) для создания цифровых сертификатов.
- В системах аутентификации для безопасного входа в приложения.
Проще говоря, на RSA основана половина всех криптоалгоритмов, используемых для электронной подписи и цифровых сертификатов.
❌ Как взломать
Как и AES, может быть восприимчив к атаке Man-in-the-Middle и атаки Brute Force из-за неправильной реализации или использования коротких ключей.
SHA-256 (Secure Hash Algorithm 256-bit)
Алгоритм разработало Агентство национальной безопасности США для защиты государственных документов. Правительство США запатентовало технологию, а затем выпустило её по безвозмездной лицензии для использования всеми желающими.
🤖 Как работает
В основе работы алгоритма SHA-256 лежит принцип хеширования.
Хеширование — это процесс шифрования исходной информации до такой степени, что её нельзя воспроизвести в исходном виде. Мы берём часть информации и пропускаем через функцию, применяемую математические операции. Функция называется хеш-функцией, а выход — хеш-значение, или дайджестом.
Хеш-функция необратима, то есть восстановить исходную информацию из хеш-значения невозможно.
Упрощённо алгоритм SHA-256 работает так:
- Исходное сообщение разбивается на блоки фиксированной длины: 512 бит (64 байта).
- Каждый блок проходит через серию раундов: логические и арифметические операции и операции над словами.
- В каждом раунде переменные состояния, которые представляют собой текущее хеш-значение, обновляются.
- После обработки всех блоков и завершения раундов полученные переменные состояния объединяются и формируют окончательное хеш-значение.
На специальном сайте можно посмотреть, как работает такой алгоритм в реальности, и создать хеш-значение своего сообщения.
✅ Где используется
- На сайтах для хранения паролей.
- В SSL/TLS-сертификатах.
- В блокчейнах, например, в Bitcoin. Хеш-суммы используются для создания уникальных идентификаторов блоков и обеспечивают целостность цепочки блоков.
- В антивирусных программах для быстрого обнаружения вредоносного программного обеспечения.
- В системах управления версиями, например в Git для идентификации конкретных версий файлов и контроля изменений.
- Для проверки цифровых подписей.
❌ Как взломать
Одно из слабых мест алгоритма — это коллизии.
Коллизия означает, что два разных входных значения дали одно и то же хеш-значение. Это маловероятно, но теоретически возможно. Если атака с целью нахождения коллизии окажется успешной, то приложение, которое использует хеш-значения для проверки целостности данных, будет скомпрометировано.
Triple DES (3DES)
В 1976 году в IBM разработали алгоритм DES — Data Encryption Standard. В нём использовался ключ длиной 56 бит, который подвергается различным преобразованиям для создания подключей на каждом раунде шифрования. До начала 90-х годов этот алгоритм шифрования считался самым сильным.
В конце 1990-х годов появился алгоритм 3DES — улучшенная версия DES. Он использует три ключа и шифрует исходное сообщение три раза.
🤖 Как работает
- Один блок данных (обычно 64 бита) проходит через три раунда DES-шифрования.
- Блок данных шифруется первым ключом.
- Зашифрованный блок данных дешифруется вторым ключом.
- Расшифрованный блок данных снова шифруется третьим ключом.
Из-за тройного шифрования 3DES считается медленным алгоритмом.
✅ Где используется
3DES уже не так популярен, как раньше, но используется до сих пор:
- В протоколах SSH и IPsec.
- В VPN для шифрования трафика между клиентами и серверами.
Ещё важно не перепутать 3DES с протоколом 3-D Secure, который применяется банками для авторизаций и подтверждения онлайн-платежей.
❌ Как взломать
3DES подвержен атакам на основе подобранного открытого текста (Chosen Plaintext Attacks). Злоумышленник может выбирать открытые тексты и видеть соответствующие зашифрованные тексты. Затем, используя полученные данные, он может попытаться выявить закономерности в работе шифра и восстановить ключ.
Также 3DES требует тщательного управления ключами, что делает его уязвимым к атаке Man-in-the-Middle. Но прямого алгоритма атаки, который позволяет взломать этот алгоритм с неограниченными ресурсами, нет.
Blowfish
Симметричный алгоритм блочного шифрования, разработанный в 1993 году американским криптографом Брюсом Шнайером в качестве альтернативы алгоритму DES. Один из наиболее гибких методов шифрования.
🤖 Как работает
Алгоритм разбивает большие фрагменты исходного сообщения на 64-битные блоки и шифрует каждый из них по отдельности.
Особенность в том, что длина ключа может варьироваться от 32 до 448 бит. В процессе шифрования ключ расширяется для создания серии подключей.
- Исходные данные разбиваются на блоки фиксированного размера (обычно 64 бита).
- Используется ключ шифрования для создания подстановок и перестановок в процессе шифрования.
- Алгоритм применяет серию раундов шифрования к каждому блоку данных. Каждый раунд включает несколько математических операций (сложение, исключающее ИЛИ, замена значений).
- Раунды повторяются (обычно около 16 раз). Через процесс проходит каждый блок данных.
- При расшифровке происходит всё то же самое, но в обратном порядке.
✅ Где используется
- В менеджерах паролей (Java PasswordSafe, Access Manager, Web Confidential).
- При шифровании файлов и дисков.
- В инструментах резервного копирования (Symantec NetBackup).
- В VPN.
- В протоколе SSH.
❌ Как взломать
Если используется 64-битный блок, то алгоритм становится уязвимым для атак с вероятностью обнаружения коллизии: когда разные исходные данные приводят к одинаковому зашифрованному сообщению.
Что дальше
В следующий раз попробуем написать эти алгоритмы шифрования на выбранном языке программирования и посмотрим, насколько вообще это сложно делать.