Постквантовая криптография начинает внедряться. ICICLE от @Ingo_zk теперь поддерживает ML-KEM (Kyber) с полными наборами параметров, пакетной обработкой и асинхронными операциями. Давайте разберем это! 👇
@Ingo_zk ML-KEM (Механизм инкапсуляции ключей на основе модуля решетки) является стандартизированным вариантом Kyber в соответствии с FIPS 203, разработанным для постквантовой криптографии. NIST одобрил три уровня: Kyber512 (Уровень 1), Kyber768 (Уровень 3) и Kyber1024 (Уровень 5).
@Ingo_zk ICICLE v3.9.0 реализует ML-KEM на C++ с полной поддержкой всех трех наборов параметров. Ключевые операции — генерация ключей, инкапсуляция, деккапсуляция — шаблонно инстанцируются через Kyber{512,768,1024}Params.
@Ingo_zk Размеры байтов для каждого набора параметров: - Kyber512: PK=800B, SK=1632B, CT=768B - Kyber768: PK=1184B, SK=2400B, CT=1088B - Kyber1024: PK=1568B, SK=3168B, CT=1568B
@Ingo_zk Структура MlKemConfig поддерживает асинхронные операции, подсказки о резидентности устройства (например, public_keys_on_device) и пакетную обработку (batch_size). Доступны настройки через ConfigExtension* ext для оптимизации, специфичной для бэкенда.
@Ingo_zk Подписи API: - keygen(энтропия, конфигурация, открытые_ключи, закрытые_ключи) - encapsulate(сообщение, открытые_ключи, конфигурация, шифротексты, общие_секреты) - decapsulate(закрытые_ключи, шифротексты, конфигурация, общие_секреты)
@Ingo_zk Пакетирование позволяет осуществлять параллельный обмен ключами — это критически важно для масштабируемых приложений, таких как безопасные мессенджеры и квантовые VPN. Флаги на стороне устройства подсказывают времени выполнения ICICLE о существующих местах в памяти, чтобы минимизировать передачи.
@Ingo_zk ICICLE включает пример использования для Kyber768: распределение, генерация энтропии, генерация ключевых пар, инкапсуляция и декapsulation. Шаблон структурирован и последователен для наборов параметров.
@Ingo_zk Эта реализация соответствует окончательной спецификации NIST FIPS 203 (июнь 2025 года). Она разработана для интеграции в приложения C++ с учетом PQC, особенно те, которые используют аппаратное ускорение.
1,82K