Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
Техническое: RFC 10024 и гибриды криптосистем
Недавно вышел документ RFC 10024 (обратите внимание: нумерация перевалила за десять тысяч). Этот RFC вводит идентификаторы для гибридов криптосистем обмена ключами в TLS 1.3. Это гибриды из классических и посквантовых криптосистем. В роли классических – выступают X25519 и ECDH, а в роли единственной постквантовой – ML-KEM. То есть, формально закрепляются следующие сочетания: X25519 + ML-KEM-768 как X25519MLKEM768 (0x11EC), ECDH/P-256 + ML-KEM-768 как SecP256r1MLKEM768 (0x11EB), и ECDH/P-384 + ML-KEM-1024 как SecP384r1MLKEM1024 (0x11ED).
При этом в качестве рекомендуемого (recommended) набора отмечен только X25519MLKEM768, варианты с ECDH – содержат значение N в поле “Recommended”. (Тут нужно оговорить, что флаг Recommended – это штука, назначаемая внутри IANA/IETF, и имеющая особенную трактовку; как минимум, тот факт, что ML-KEM стандартизована NIST, не означает, что IANA/IETF автоматически поставят флаг “рекомендуется”, тем более, что тут речь о гибридах; но и делать вывод, что нельзя использовать системы, у которых “Recommended: N” – тоже неверно: тогда бы и смысла в подобных RFC не было бы.)
Что здесь означают числа? В X25519 – это 2^255 – 19, модуль, задающий максимальную разрядность для этой криптосистемы; X25519 – массово используемый вариант протокола Диффи-Хеллмана (DH) на эллиптической кривой. P-256 и P-384 – две разных эллиптических кривых (отличных от используемой в 25519), на которых работает “типовой” протокол DH. P-256, которую также называют SecP256r1, имеет разрядность 256 бит, а P-384 (SecP384r1) – 384 бита. Математически, реализации DH на P-256 и P-384 – абсолютно идентичные, разные только кривые, а DH в версии X25519 тут в некоторых математических деталях отличается (распростраено мнение, – в том числе, среди специалистов, – что как раз эти отличия и делают реализации X25519, в целом, надёжнее и более стойкими, чем для DH на P-256/P-384).
ML-KEM тут фигурирует с двумя наборами параметров: 768 и 1024. Оценка стойкости ML-KEM – штука совсем сложная, поэтому тут только отмечу, что, несмотря на такие значение, ни 768, ни 1024 – как-то “линейно” с битовой стойкостью или эффективной разрядностью не связаны, но 1024, согласно спецификации, считается более стойким набором параметров. Поэтому для более стойкой кривой P-384 и выбран более стойкий вариант ML-KEM-1024.
Я не тестовом сервере tls13.1d.pw давно поддерживаю X25519MLKEM768 и SecP256r1MLKEM768, а вот P-384 пока не добавил.
Адрес записки: https://dxdt.blog/2026/08/13/18885/
Похожие записки:
- "Двухфакторная" аутентификация и Google Authenticator
- Обновления сервиса audit.statdom.ru
- Разбор TLS-сертификата для IP-адреса и хостнейма
- Подпись и использование ключей из TLS-сертификатов для веба
- Адреса DMARC rua в зоне cloudflare.com
- Реплика: аутентификация по SSH-ключам и по TLS-сертификатам
- Радиомодуль в смартфоне и недокументированные возможности
- Удостоверяющий центр TLS ТЦИ
- Реплика: история с сертификатом Jabber.ru и "управление доверием"
- Таблицы подстановок: картинка
- VPN и DNS-сервисы с ECS: утечка сведений об адресах
Новый
Комментарии читателей блога: 2
1 <t> // 23rd August 2026, 19:18 // Читатель Anon написал:
Решил протестировать подключение к tls13.1d.pw и заметил что:
1) Сертификат хоста просрочен уже больше чем на неделю / Not After: 15 Aug 2026 09:17:10 UTC
2) Сертификат хоста отдаётся почему-то сервером дважды:
Certificate chain
0 s:CN=tls13.1d.pw
i:C=US, O=Let’s Encrypt, CN=E8
a:PKEY: EC, (secp384r1); sigalg: ecdsa-with-SHA384
v:NotBefore: May 17 09:17:11 2026 GMT; NotAfter: Aug 15 09:17:10 2026 GMT
1 s:CN=tls13.1d.pw
i:C=US, O=Let’s Encrypt, CN=E8
a:PKEY: EC, (secp384r1); sigalg: ecdsa-with-SHA384
v:NotBefore: May 17 09:17:11 2026 GMT; NotAfter: Aug 15 09:17:10 2026 GMT
2 s:C=US, O=Let’s Encrypt, CN=E8
i:C=US, O=Internet Security Research Group, CN=ISRG Root X1
a:PKEY: EC, (secp384r1); sigalg: sha256WithRSAEncryption
v:NotBefore: Mar 13 00:00:00 2024 GMT; NotAfter: Mar 12 23:59:59 2027 GMT
3 s:CN=IP, port: IP:Port
i:CN=HS DH: ffdhe3072
a:PKEY: EC, (prime256v1); sigalg: ecdsa-with-SHA256
v:NotBefore: Aug 23 07:28:34 2026 GMT; NotAfter: Sep 22 19:28:34 2026 GMT
3) 4ым по счёту отдаётся самоподписанный сертификат с указанием связки IP:Port инициатора подключение в CN – интересная методика вернуть значение клиенту, не прибегая к уровню L7.
Это где-то в предыдущих записках по этому сервису было описано?
2 <t> // 23rd August 2026, 21:18 // Александр Венедюхин:
> Сертификат хоста просрочен уже больше чем на неделю / Not After: 15 Aug 2026 09:17:10 UTC
Надо будет поправить.
> Сертификат хоста отдаётся почему-то сервером дважды:
Это, насколько я помню, так специально, но браузер и другие клиенты – должны игнорировать повтор.
> 4ым по счёту отдаётся самоподписанный сертификат с указанием связки IP:Port инициатора подключение в CN – интересная методика вернуть значение клиенту, не прибегая к уровню L7.
Так и есть, это сигнальный сертификат, который генерируется для каждого соединения.
Про этот момент я кратко писал тут: https://dxdt.blog/2023/09/15/11011/
Написать комментарий