CRYSTALS-Kyber: KEM на основе решёток
Разберите инкапсуляцию ключей Module-LWE и наборы параметров
«CRYSTALS-Kyber: KEM на основе решёток» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Почему Kyber
CRYSTALS-Kyber (переименованный NIST в ML-KEM в документе FIPS 203) — это механизм инкапсуляции ключа (KEM) на основе Module-LWE. Он заменяет RSA и ECDH при обмене ключами, обеспечивая постквантовую стойкость при практически применимой производительности.
KEM и согласование ключа
KEM инкапсулирует общий секрет: отправитель генерирует случайный ключ K и шифрует его открытым ключом получателя (инкапсулирует), получая шифротекст C. Получатель декапсулирует C с помощью своего закрытого ключа, чтобы восстановить K. Интерактивный обмен ключами не требуется.
Основа Module-LWE
Kyber использует Module-LWE над кольцом R_q = Z_q[x]/(x^256+1), где q=3329. Размерность k=2 (Kyber-512), k=3 (Kyber-768), k=4 (Kyber-1024). Уровень стойкости составляет соответственно около 128, 192 и 256 бит. Вариант k=3 (Kyber-768) рекомендуется использовать по умолчанию.
Генерация ключей
Сгенерируйте матрицу A ∈ R_q^{k×k} из начального значения ρ (которое можно расширять). Выберите секрет s и шум e из центрированного биномиального распределения (с малыми коэффициентами). Открытый ключ: (ρ, t=As+e). Закрытый ключ: s. Шум e мал, но не позволяет восстановить s по открытому ключу.
Инкапсуляция
Чтобы отправить общий секрет владельцу открытого ключа (ρ, t), выберите r, e1, e2 из распределения шума. Вычислите u = A^T r + e1, v = t^T r + e2 + round(q/2)*m, где m — случайное 256-битное сообщение. Общий секрет K = KDF(m). Шифротекст = (u, v).
Декапсуляция
С закрытым ключом s вычислите m' = decompress(v - s^T u) = decompress(t^T r + e2 + round(q/2)*m - s^T(A^T r + e1)). Члены шума примерно сокращаются, поэтому остаётся m'≈m. Вычислите K = KDF(m'). Вероятность ошибки декапсуляции: < 2^{-139}.
Размеры ключей и шифротекста
Kyber-768: открытый ключ — 1184 байта, закрытый ключ — 2400 байт, шифротекст — 1088 байт, общий секрет — 32 байта. Для сравнения, ECDH-P256 использует открытый ключ размером 65 байт и шифротекст размером 32 байта. Kyber примерно в 15 раз больше, но устойчив к квантовым атакам. При этом он работает быстро: инкапсуляция и декапсуляция занимают менее 1 мс на современных процессорах.
Оптимизация с помощью NTT
Умножение многочленов в R_q = Z_q[x]/(x^256+1) выполняется с помощью теоретико-числового преобразования (NTT) — аналога FFT для модульной арифметики. NTT сокращает сложность умножения многочленов с O(n^2) до O(n log n). Значение q=3329 выбрано благодаря хорошим свойствам NTT для n=256.
Гибридный обмен ключами
Во время перехода на PQC используйте гибридный обмен ключами: сочетайте ECDH и Kyber. Общий секрет = KDF(ECDH_output || Kyber_output). Для нарушения безопасности необходимо взломать оба алгоритма: классические злоумышленники не взламывают ни один из них, а квантовые злоумышленники взламывают ECDH, но не Kyber. Черновики TLS 1.3 (IETF RFC 8446) поддерживают гибридные KEM.
Особенности защиты от побочных каналов
В наивных реализациях декапсуляция Kyber не выполняется за постоянное время — этап выборки с отклонением раскрывает информацию по времени выполнения. Эталонная реализация использует NTT с постоянным временем выполнения и сравнение сжатого шифротекста за постоянное время. Используйте эталонный код из заявки NIST или проверенные реализации библиотек.
Статус внедрения
NIST опубликовал FIPS 203 (ML-KEM) в августе 2024 года. В 2023 году Chrome добавил поддержку Kyber в TLS 1.3. Cloudflare, Google и AWS внедряют гибридный ECDH+Kyber. В OpenSSL 3.x добавлена поддержка ML-KEM. Реализации для LibSSH и WireGuard находятся в разработке.
Быстрая проверка
Какой нормативный документ NIST стандартизует CRYSTALS-Kyber?
Повторение
Kyber (ML-KEM) — это KEM на основе Module-LWE, заменяющий ECDH. Размеры ключей — около 1 KB; быстрая арифметика NTT; устойчивость к квантовым атакам. На время перехода внедряйте его в гибриде с ECDH. Стандартизован в документе FIPS 203. Далее: схемы подписей CRYSTALS-Dilithium и Falcon.
Часто задаваемые вопросы
Урок «CRYSTALS-Kyber: KEM на основе решёток» бесплатный?
Да — полный текст урока «CRYSTALS-Kyber: KEM на основе решёток» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «CRYSTALS-Kyber: KEM на основе решёток»?
Разберите инкапсуляцию ключей Module-LWE и наборы параметров Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «CRYSTALS-Kyber: KEM на основе решёток»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Алгоритмы Шора и Гровера: объяснение
- CRYSTALS-Kyber: KEM на основе решёток
- Подписи CRYSTALS-Dilithium и Falcon
- Переход на PQC: гибридные подходы