Симметричная криптографическая система
Симметричная криптографическая система (также симметричное шифрование, одноключевая криптосистема) — это класс криптографических алгоритмов, в которых для шифрования и расшифрования данных используется один и тот же ключ. В отличие от асимметричных систем, где применяются два разных ключа (открытый и закрытый), симметричные системы требуют, чтобы ключ был известен обеим сторонам общения и хранился в тайне от третьих лиц. Основные преимущества симметричного шифрования — высокая скорость обработки данных и относительная простота реализации, что делает его основой для защиты больших объёмов информации в современных компьютерных сетях, системах хранения данных и протоколах связи.
История развития
Ранние методы
Первые известные примеры симметричного шифрования относятся к античности. Древнегреческий шифр Цезаря, в котором каждая буква заменялась на букву, отстоящую на фиксированное число позиций в алфавите, является простейшим примером моноалфавитного шифра. В Древней Спарте использовался скитала — устройство для шифрования сообщений путём перестановки букв. В средние века получили распространение многоалфавитные шифры, такие как шифр Виженера, где ключом служило слово, задающее циклический сдвиг для каждой буквы.
Эпоха механических шифров
В XIX–XX веках развитие телеграфа и радио потребовало создания надёжных шифровальных машин. Наиболее известной стала «Энигма» (Enigma), использовавшаяся Германией во Второй мировой войне. Это была роторная машина, реализующая сложный полиалфавитный шифр. Взлом «Энигмы» британскими криптоаналитиками в Блетчли-парке стал одним из ключевых факторов победы союзников. После войны развитие вычислительной техники привело к появлению первых цифровых симметричных алгоритмов, таких как DES (Data Encryption Standard), принятый в 1977 году Национальным институтом стандартов и технологий США (NIST).
Современный этап
В конце XX века алгоритм DES был признан недостаточно стойким из-за малой длины ключа (56 бит), и в 2001 году NIST принял новый стандарт — AES (Advanced Encryption Standard) с длиной ключа 128, 192 или 256 бит. Параллельно развивались потоковые шифры (например, RC4) и алгоритмы для встраиваемых систем (например, Blowfish, Twofish). В настоящее время симметричные системы являются неотъемлемой частью протоколов TLS/SSL, VPN, шифрования дисков (BitLocker, LUKS) и многих других приложений.
Классификация симметричных криптосистем
По типу преобразования данных
- Блочные шифры — обрабатывают данные блоками фиксированной длины (обычно 64, 128 или 256 бит). Каждый блок шифруется независимо или с использованием режимов сцепления (CBC, CTR, GCM и др.). Примеры: AES, DES, 3DES, ГОСТ 28147-89 («Магма»), «Кузнечик».
- Потоковые шифры — шифруют данные побайтно или побитно, генерируя псевдослучайную последовательность (гамму), которая накладывается на открытый текст операцией XOR. Примеры: RC4, Salsa20, ChaCha20.
По режиму работы блочного шифра
Режимы работы определяют, как блочный шифр применяется к последовательности блоков:
- ECB (Electronic Codebook) — каждый блок шифруется независимо. Уязвим для атак по шаблону, не рекомендуется для использования.
- CBC (Cipher Block Chaining) — каждый блок XOR-ится с предыдущим зашифрованным блоком перед шифрованием. Требует вектор инициализации (IV).
- CFB (Cipher Feedback) — превращает блочный шифр в потоковый, шифруя предыдущий зашифрованный блок.
- OFB (Output Feedback) — генерирует поток ключей, независимый от открытого текста.
- CTR (Counter) — использует счётчик, инкрементируемый для каждого блока. Позволяет параллельное шифрование.
- GCM (Galois/Counter Mode) — обеспечивает как шифрование, так и аутентификацию (проверку целостности).
По длине ключа
- Короткие ключи (до 56 бит) — считаются нестойкими для современных атак (например, DES).
- Средние ключи (64–128 бит) — обеспечивают приемлемую стойкость для большинства приложений (AES-128).
- Длинные ключи (192–256 бит и более) — используются для защиты информации высшей степени секретности (AES-256, ГОСТ Р 34.12-2015 «Кузнечик» с ключом 256 бит).
Устройство и принцип работы
Основные компоненты
Симметричный алгоритм шифрования обычно включает:
- Функцию шифрования \( E(K, P) = C \), где \( K \) — ключ, \( P \) — открытый текст, \( C \) — шифротекст.
- Функцию расшифрования \( D(K, C) = P \), обратную шифрованию.
- Генератор ключей — алгоритм, создающий ключ заданной длины из случайного или псевдослучайного источника.
Структура блочных шифров
Большинство современных блочных шифров (AES, ГОСТ) построены по схеме сети Фейстеля или SP-сети (Substitution-Permutation Network).
- Сеть Фейстеля (например, DES, Blowfish): блок данных делится на две половины, которые многократно преобразуются с помощью раундовой функции, использующей часть ключа. Расшифрование выполняется обратным порядком раундов.
- SP-сеть (например, AES): каждый раунд состоит из трёх этапов: замена байтов (SubBytes), перестановка строк (ShiftRows) и смешивание столбцов (MixColumns), после чего накладывается раундовый ключ. Расшифрование требует обратных операций.
Генерация псевдослучайной последовательности в потоковых шифрах
Потоковые шифры генерируют бесконечную последовательность битов (гамму) на основе ключа и, часто, начального вектора (nonce). Гамма XOR-ится с открытым текстом. Для обеспечения стойкости гамма должна быть неотличима от истинно случайной последовательности.
Применение
Защита данных в покое
- Шифрование дисков: BitLocker (Windows), LUKS (Linux), FileVault (macOS) используют AES в режиме XTS или CBC.
- Шифрование файлов и архивов: форматы ZIP, 7z, RAR поддерживают шифрование с использованием AES.
- Базы данных: многие СУБД (Oracle, MySQL) поддерживают прозрачное шифрование данных (TDE) на основе симметричных алгоритмов.
Защита данных в движении
- Протокол TLS/SSL: для шифрования сессии используется симметричный алгоритм (например, AES-GCM), ключ для которого вырабатывается в процессе рукопожатия с помощью асимметричной криптографии.
- VPN (IPsec, OpenVPN): применяют симметричное шифрование для защиты всего трафика.
- Беспроводные сети: WPA2/WPA3 используют AES-CCMP для шифрования данных в Wi-Fi.
Криптографические протоколы
- Аутентификация сообщений: режимы GCM, CCM, EAX обеспечивают как шифрование, так и проверку целостности.
- Хеширование на основе шифрования: некоторые хеш-функции (например, Davies-Meyer) строятся на базе блочных шифров.
Примеры алгоритмов
AES (Advanced Encryption Standard)
Принят в 2001 году, длина ключа 128, 192 или 256 бит, размер блока 128 бит. Использует SP-сеть с 10, 12 или 14 раундами (в зависимости от длины ключа). Является де-факто стандартом для большинства современных криптографических приложений.
ГОСТ 28147-89 («Магма»)
Российский стандарт симметричного шифрования, принятый в 1989 году. Длина ключа 256 бит, размер блока 64 бита. Использует сеть Фейстеля с 32 раундами. В 2015 году дополнен новым алгоритмом «Кузнечик» (ГОСТ Р 34.12-2015) с размером блока 128 бит и ключом 256 бит.
ChaCha20
Потоковый шифр, разработанный Дэниелом Бернштейном в 2008 году. Отличается высокой производительностью на программном уровне. Используется в протоколе TLS (как альтернатива AES-GCM) и в системе шифрования дисков Linux (LUKS).
Критика и уязвимости
Атаки на ключ
- Атака полным перебором (brute force): для ключа длиной 128 бит требует \( 2^{128} \) операций, что практически невозможно при современной вычислительной технике. Однако для ключа 56 бит (DES) такая атака возможна за разумное время.
- Атака по времени (timing attack): злоумышленник может измерить время выполнения операций шифрования и сделать выводы о значении ключа. Для защиты используются константные алгоритмы.
- Атака по энергопотреблению (power analysis): особенно актуальна для смарт-карт и встраиваемых систем.
Атаки на алгоритм
- Линейный криптоанализ (Matsui, 1993): основан на поиске линейных аппроксимаций между открытым текстом, шифротекстом и ключом. Эффективен против DES, но не против AES.
- Дифференциальный криптоанализ (Biham, Shamir, 1990): использует разности между парами открытых текстов. Для AES требуется \( 2^{128} \) пар, что делает атаку непрактичной.
- Атака на основе связанных ключей (related-key attack): возможна, если злоумышленник может влиять на выбор ключа. Уязвимости обнаружены в некоторых реализациях AES.
Проблемы управления ключами
Основная слабость симметричных систем — необходимость безопасного распределения ключей между сторонами. Если ключ перехвачен или скомпрометирован, вся система защиты рушится. Для решения этой проблемы используются протоколы обмена ключами (например, Диффи-Хеллмана) и инфраструктуры открытых ключей (PKI).
Интересные факты
- Алгоритм DES был разработан в IBM в 1970-х годах, но его длина ключа была сокращена с 128 до 56 бит по требованию Агентства национальной безопасности США (NSA), что вызвало споры о возможном ослаблении стандарта.
- Российский алгоритм «Кузнечик» был впервые опубликован только в 2015 году, хотя его разработка велась с 2000-х годов. Он входит в список стандартов Евразийского экономического союза.
- Потоковый шифр RC4, долгое время использовавшийся в протоколах WEP и TLS, был признан нестойким из-за многочисленных атак (Fluhrer, Mantin, Shamir, 2001). Его применение запрещено в TLS 1.3.
Источники
- Шнайер Б. «Прикладная криптография». — М.: Триумф, 2002.
- Фергюсон Н., Шнайер Б. «Практическая криптография». — М.: Вильямс, 2005.
- ГОСТ Р 34.12-2015 «Информационная технология. Криптографическая защита информации. Блочные шифры».
- NIST FIPS PUB 197 «Advanced Encryption Standard (AES)». — National Institute of Standards and Technology, 2001.
- Bernstein D.J. «ChaCha, a variant of Salsa20». — Document for eSTREAM project, 2008.
- Menezes A., van Oorschot P., Vanstone S. «Handbook of Applied Cryptography». — CRC Press, 1996.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →