Шифрование — метод защиты данных путём их преобразования таким образом, чтобы сообщение могли прочитать только авторизованные пользователи. Для обратного преобразования (дешифрования) и доступа к передаваемым сообщениям такие пользователи используют специальный ключ.
С помощью шифрования обеспечиваются три состояния безопасности информации:
Шифрование данных применяется для обеспечения конфиденциальной передачи информации в военном деле, банковских транзакциях, тайной коммерческой и дипломатической переписке, в работе некоторых интернет-сервисов, мессенджеров и т.д.
Задача шифрования — превратить данные, которые могут прочитать все, в данные, которые может прочитать только тот, у кого есть секретная часть (ключ безопасности, сертификат, пароль или расшифровочная матрица).
Чтобы всё заработало, нужен алгоритм шифрования. Это набор инструкций и правил, которые определяют, как эти данные шифруются и дешифруются. Алгоритм — математический процесс, который обеспечивает безопасное преобразование информации.
Ключ — это набор математических значений, которые используются алгоритмом для шифрования и расшифровки данных. Надёжность ключа зависит от его длины в битах.
Алгоритмы бывают симметричными и асимметричными.
Симметричные используют один и тот же ключ для шифрования информации и для её расшифровки. Это значит, что отправитель и получатель зашифрованного сообщения должны обменяться копией секретного ключа по защищённому каналу, прежде чем начать передачу зашифрованных данных.
Асимметричные алгоритмы используют два ключа — открытый для шифрования и закрытый для расшифровки. Пара ключей связана математическим образом так, что данные, зашифрованные одним ключом, могут быть расшифрованы только другим ключом из этой пары. Это сложнее, но не требует от двух сторон надёжного обмена секретным ключом перед отправкой зашифрованных сообщений.
AES — симметричный алгоритм шифрования. Выбран Национальным институтом стандартов и технологии (NIST) в 2001 году в качестве стандарта шифрования для защиты конфиденциальности данных.
AES — блочный шифр. Это значит, что, в отличие от потоковых шифров, которые обрабатывают данные бит за битом, блочные шифры работают на фиксированных блоках данных. Каждый блок обрабатывается независимо от других блоков, что упрощает параллельные вычисления. Так шифрование становится быстрее.
AES использует несколько раундов шифрования, которые зависят от размера ключа. Для 128-битного ключа используется 10 раундов, для 192-битного — 12, а для 256-битного — 14.
Каждый раунд состоит из четырёх операций над блоком данных:
Для расшифровки операции выполняются в обратном порядке.
AES — самый популярный алгоритм шифрования, потому что его легко адаптировать под конкретные требования и реализовать. Вот небольшой список организаций и проектов, где используется AES:
А ещё на базе AES разработан алгоритм шифрования MTProto, который используется в мессенджере Telegram.
Считается стойким алгоритмом, но его безопасность зависит от правильной реализации, длины ключа и защиты ключей.
AES восприимчив к атаке «человек посередине» (Man-in-the-Middle) — если злоумышленник перехватит ключ, он сможет расшифровать зашифрованные данные.
В случае использования слабого ключа злоумышленники могут попытаться взломать систему методом прямого перебора ключей.
RSA — асимметричный алгоритм шифрования, разработанный Рональдом Ривестом, Ади Шамиром и Леонардом Адлеманом в 1977 году. Основан на рандомизации, элементарной математике и простых числах. Создателям потребовалось 42 попытки, чтобы найти формулу, которую они посчитали устойчивой к взломам.
В 2001 году RSA был включён в федеральные стандарты обработки информации США.
Как работает
RSA основан на модульной арифметике и свойствах простых чисел. Включает два этапа: генерацию ключей и процесс шифрования и расшифровки. Если упростить, алгоритм работает так:
Зашифровать своё сообщение и посмотреть, как работают формулы в алгоритме, можно на странице с генераторами ключей RSA.
Проще говоря, на RSA основана половина всех криптоалгоритмов, используемых для электронной подписи и цифровых сертификатов.
Как и AES, может быть восприимчив к атаке Man-in-the-Middle и атаки Brute Force из-за неправильной реализации или использования коротких ключей.
Алгоритм разработало Агентство национальной безопасности США для защиты государственных документов. Правительство США запатентовало технологию, а затем выпустило её по безвозмездной лицензии для использования всеми желающими.
В основе работы алгоритма SHA-256 лежит принцип хеширования.
Хеширование — это процесс шифрования исходной информации до такой степени, что её нельзя воспроизвести в исходном виде. Мы берём часть информации и пропускаем через функцию, применяемую математические операции. Функция называется хеш-функцией, а выход — хеш-значение, или дайджестом.
Хеш-функция необратима, то есть восстановить исходную информацию из хеш-значения невозможно.
Упрощённо алгоритм SHA-256 работает так:
На специальном сайте можно посмотреть, как работает такой алгоритм в реальности, и создать хеш-значение своего сообщения.
Одно из слабых мест алгоритма — это коллизии.
Коллизия означает, что два разных входных значения дали одно и то же хеш-значение. Это маловероятно, но теоретически возможно. Если атака с целью нахождения коллизии окажется успешной, то приложение, которое использует хеш-значения для проверки целостности данных, будет скомпрометировано.
В 1976 году в IBM разработали алгоритм DES — Data Encryption Standard. В нём использовался ключ длиной 56 бит, который подвергается различным преобразованиям для создания подключей на каждом раунде шифрования. До начала 90-х годов этот алгоритм шифрования считался самым сильным.
В конце 1990-х годов появился алгоритм 3DES — улучшенная версия DES. Он использует три ключа и шифрует исходное сообщение три раза.
K1, K2, K3 — ключи, применяющиеся на каждом раунде шифрования
Из-за тройного шифрования 3DES считается медленным алгоритмом.
3DES уже не так популярен, как раньше, но используется до сих пор:
Ещё важно не перепутать 3DES с протоколом 3-D Secure, который применяется банками для авторизаций и подтверждения онлайн-платежей.
3DES подвержен атакам на основе подобранного открытого текста (Chosen Plaintext Attacks). Злоумышленник может выбирать открытые тексты и видеть соответствующие зашифрованные тексты. Затем, используя полученные данные, он может попытаться выявить закономерности в работе шифра и восстановить ключ.
Также 3DES требует тщательного управления ключами, что делает его уязвимым к атаке Man-in-the-Middle. Но прямого алгоритма атаки, который позволяет взломать этот алгоритм с неограниченными ресурсами, нет.