Набор шифров
Набор шифров — это совокупность алгоритмов симметричного шифрования, используемых для защиты данных, передаваемых по незащищённым каналам связи или хранящихся на носителях информации. В контексте криптографии и информационной безопасности набор шифров представляет собой стандартизированный перечень криптографических примитивов, таких как блочные и поточные шифры, а также режимы их работы, предназначенные для обеспечения конфиденциальности, целостности и аутентичности данных. Наборы шифров являются ключевым компонентом протоколов защищённого соединения, в частности TLS (Transport Layer Security) и его предшественника SSL (Secure Sockets Layer), а также используются в VPN-протоколах, беспроводных сетях (Wi-Fi) и системах шифрования дисков.
История
Понятие набора шифров возникло с развитием протоколов защищённой передачи данных в Интернете. В 1994 году компания Netscape Communications разработала протокол SSL 2.0, который впервые ввёл механизм согласования криптографических параметров между клиентом и сервером. В рамках этого протокола набор шифров определял, какие алгоритмы шифрования, хеширования и аутентификации будут использоваться для установления защищённого соединения. Первоначально наборы шифров были жёстко закодированы в реализации протокола и включали относительно слабые алгоритмы, такие как RC4 (алгоритм потокового шифрования) и MD5 (хеш-функция с 128-битным дайджестом).
С развитием криптоанализа и ростом вычислительных мощностей наборы шифров претерпели значительные изменения. В 1999 году был опубликован стандарт TLS 1.0 (RFC 2246), который заменил SSL 3.0 и ввёл более гибкую систему идентификации наборов шифров. Каждому набору присваивался уникальный двухбайтовый код, что позволяло протоколу поддерживать десятки различных комбинаций алгоритмов. В последующих версиях TLS (1.1, 1.2, 1.3) наборы шифров постоянно обновлялись: устаревшие и небезопасные алгоритмы (например, RC4, DES, экспортные варианты шифров) исключались, а новые, более стойкие (AES, ChaCha20, SHA-256) добавлялись.
Значительным этапом стало принятие в 2018 году стандарта TLS 1.3 (RFC 8446), который радикально сократил количество поддерживаемых наборов шифров. Вместо десятков вариантов осталось лишь пять, использующих современные алгоритмы: AES-128-GCM, AES-256-GCM и ChaCha20-Poly1305, а также хеш-функции SHA-256 и SHA-384. Это упростило реализацию протокола и повысило его безопасность за счёт исключения уязвимых конфигураций.
Структура и компоненты
Набор шифров состоит из нескольких обязательных компонентов, каждый из которых выполняет определённую функцию в процессе защищённой передачи данных:
Алгоритм обмена ключами
Определяет способ, которым клиент и сервер договариваются о сеансовом ключе. Наиболее распространённые алгоритмы: RSA (основан на задаче факторизации больших чисел), Diffie-Hellman (DH) и его вариант на эллиптических кривых ECDH. В современных наборах шифров предпочтение отдаётся протоколам с совершенной прямой секретностью (PFS), таким как ECDHE (Elliptic Curve Diffie-Hellman Ephemeral), которые гарантируют, что компрометация долговременного ключа не позволит расшифровать прошлые сеансы.
Алгоритм аутентификации
Обеспечивает проверку подлинности сторон соединения. Обычно реализуется с помощью цифровых сертификатов X.509 и алгоритмов электронной подписи: RSA, DSA, ECDSA. В некоторых наборах шифров аутентификация может отсутствовать (анонимные наборы), но такие конфигурации уязвимы для атак «человек посередине» и практически не используются в современных системах.
Алгоритм шифрования
Отвечает за конфиденциальность данных. Используются блочные шифры (AES, Camellia, ARIA) или поточные (ChaCha20). Блочные шифры применяются в различных режимах работы: ECB (не рекомендуется), CBC, GCM, CCM. Режимы GCM и CCM обеспечивают одновременно шифрование и аутентификацию (AEAD — Authenticated Encryption with Associated Data), что повышает безопасность.
Алгоритм контроля целостности
Гарантирует, что данные не были изменены в процессе передачи. Для этого используются хеш-функции (SHA-1, SHA-256, SHA-384) или коды аутентификации сообщений (HMAC). В современных наборах шифров с AEAD-режимами (GCM, ChaCha20-Poly1305) отдельный алгоритм контроля целостности не требуется, так как аутентификация встроена в шифрование.
Идентификация и согласование
Наборы шифров идентифицируются уникальными кодами, определёнными в реестре Internet Assigned Numbers Authority (IANA). Код представляет собой двухбайтовое шестнадцатеричное число (например, 0xC02F для набора TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256). В процессе установления соединения TLS клиент отправляет серверу список поддерживаемых наборов шифров в порядке предпочтения. Сервер выбирает первый из списка, который соответствует его собственным возможностям и политике безопасности.
Согласование набора шифров — критически важный этап, так как от него зависит стойкость всего соединения. Если обе стороны поддерживают только слабые алгоритмы (например, экспортные шифры с 40-битным ключом), соединение может быть легко скомпрометировано. Современные реализации TLS по умолчанию отвергают устаревшие наборы шифров.
Классификация
Наборы шифров классифицируются по нескольким признакам:
По версии протокола
- SSL 2.0/3.0: устаревшие, содержат множество уязвимостей (например, атака POODLE). Не рекомендуются к использованию.
- TLS 1.0/1.1: также считаются устаревшими, исключены из многих стандартов безопасности (PCI DSS, NIST).
- TLS 1.2: широко используется, поддерживает большое количество наборов шифров, включая AEAD.
- TLS 1.3: современный стандарт, поддерживает только пять наборов шифров, все с AEAD.
По типу используемых алгоритмов
- На основе RSA: обмен ключами и аутентификация выполняются с помощью RSA. Не обеспечивают PFS.
- На основе Diffie-Hellman: обеспечивают PFS, если используется эфемерный вариант (DHE или ECDHE).
- Эллиптические кривые: используют ECDHE для обмена ключами и ECDSA для подписей, что даёт более высокую производительность при аналогичной стойкости.
По режиму шифрования
- CBC (Cipher Block Chaining): требует отдельного HMAC для целостности. Уязвим для атак с padding oracle (например, Lucky13).
- GCM (Galois/Counter Mode): AEAD-режим, обеспечивает шифрование и аутентификацию. Рекомендуется для современных систем.
- CCM (Counter with CBC-MAC): AEAD-режим, менее производительный, чем GCM, но используется в ограниченных средах (например, в IoT).
Примеры наборов шифров
Ниже приведены примеры наборов шифров с указанием их кодов и характеристик:
| Код (hex) | Набор шифров | Алгоритм обмена ключами | Аутентификация | Шифрование | Хеш/Аутентификация | Статус |
|---|---|---|---|---|---|---|
| 0xC02F | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | ECDHE | RSA | AES-128-GCM | SHA-256 (встроена в GCM) | Активный, рекомендуется |
| 0xC030 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | ECDHE | RSA | AES-256-GCM | SHA-384 (встроена в GCM) | Активный, рекомендуется |
| 0x1301 | TLS_AES_128_GCM_SHA256 | ECDHE (TLS 1.3) | ECDSA или RSA | AES-128-GCM | SHA-256 | TLS 1.3, обязательный |
| 0x1302 | TLS_AES_256_GCM_SHA384 | ECDHE (TLS 1.3) | ECDSA или RSA | AES-256-GCM | SHA-384 | TLS 1.3, обязательный |
| 0x1303 | TLS_CHACHA20_POLY1305_SHA256 | ECDHE (TLS 1.3) | ECDSA или RSA | ChaCha20-Poly1305 | SHA-256 | TLS 1.3, обязательный |
| 0x009F | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | DHE | RSA | AES-128-GCM | SHA-256 | Активный, альтернативный |
| 0x003C | TLS_RSA_WITH_AES_128_CBC_SHA | RSA | RSA | AES-128-CBC | SHA-1 (HMAC) | Устаревший, не рекомендуется |
Применение
Наборы шифров используются в широком спектре протоколов и систем:
Веб-безопасность (HTTPS)
Протокол TLS, лежащий в основе HTTPS, использует наборы шифров для защиты соединений между браузерами и веб-серверами. Современные браузеры (Google Chrome, Mozilla Firefox, Microsoft Edge) поддерживают только наборы шифров TLS 1.2 и TLS 1.3, отвергая устаревшие варианты.
VPN и корпоративные сети
Протоколы VPN, такие как OpenVPN, IPsec и WireGuard, также используют наборы шифров. Например, OpenVPN поддерживает комбинации AES-256-GCM с ECDHE, а WireGuard использует фиксированный набор шифров на основе ChaCha20-Poly1305.
Беспроводные сети (Wi-Fi)
Стандарты WPA2 и WPA3 определяют наборы шифров для защиты трафика в беспроводных сетях. WPA2 использует AES-CCMP, а WPA3 — AES-GCM с обязательной аутентификацией.
Системы шифрования дисков
Программы шифрования дисков (BitLocker, LUKS) могут использовать наборы шифров, аналогичные TLS, для защиты данных на жёстких дисках. Например, BitLocker поддерживает AES-128 и AES-256 в режимах XTS и CBC.
Критика и уязвимости
Наборы шифров неоднократно становились объектом критики из-за уязвимостей, выявленных в различных алгоритмах:
- Атака POODLE (2014): эксплуатация уязвимости в SSL 3.0, позволяющая расшифровать данные, зашифрованные с помощью CBC-режима. Привела к отказу от SSL 3.0.
- Атака Lucky13 (2013): атака на CBC-режим в TLS, использующая уязвимость в обработке padding. Снижает эффективную стойкость шифрования.
- Атака Logjam (2015): атака на обмен ключами Diffie-Hellman, позволяющая понизить стойкость до 512-битного уровня. Привела к отказу от DHE с малыми группами.
- Атака Sweet32 (2016): атака на блочные шифры с размером блока 64 бита (3DES, Blowfish). Привела к исключению этих алгоритмов из наборов шифров.
В ответ на эти уязвимости были разработаны новые версии TLS и рекомендации по исключению слабых наборов шифров. Организации, такие как Internet Engineering Task Force (IETF) и Национальный институт стандартов и технологий США (NIST), публикуют рекомендации по безопасным наборам шифров.
Перспективы развития
С развитием квантовых вычислений возникает угроза для многих современных алгоритмов асимметричной криптографии (RSA, ECDH, ECDSA). В связи с этим разрабатываются постквантовые криптографические алгоритмы, которые будут включены в будущие версии наборов шифров. IETF уже ведёт работу над стандартами TLS с постквантовой поддержкой, включая алгоритмы на основе решёток (CRYSTALS-Kyber, CRYSTALS-Dilithium) и хеш-функций (SPHINCS+). Ожидается, что первые версии таких наборов шифров появятся в середине 2020-х годов.
Источники
- RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3
- RFC 5246 — The Transport Layer Security (TLS) Protocol Version 1.2
- NIST Special Publication 800-52 Rev. 2 — Guidelines for the Selection, Configuration, and Use of Transport Layer Security (TLS) Implementations
- IANA TLS Cipher Suite Registry
- А. Ю. Щербаков, «Криптография и защита информации», 2020
- М. И. Анохин, «Протоколы защищённого соединения в Интернете», 2019
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →