Tüm standartlar
FIPS 203 Nihai Anahtar Kapsülleme (KEM)

ML-KEM

Module-Lattice-Based Key-Encapsulation Mechanism Standard

Yayım tarihi: 13 AğustosAğustosAğustos 2024

Özet

CRYSTALS-Kyber temelli, kuantum-güvenli anahtar değişimi için tasarlanan birincil NIST standardı. Küçük anahtar boyutları ve yüksek çalışma hızıyla genel amaçlı şifrelemenin yeni temelini oluşturur.

Güvenlik Seviyeleri

Seviye 1 (ML-KEM-512) Seviye 3 (ML-KEM-768) Seviye 5 (ML-KEM-1024)

ML-KEM Nedir?

FIPS 203 (ML-KEM), NIST'in 13 Ağustos 2024'te yayımladığı, post-kuantum kriptografinin ilk üç nihai standardından biridir. ML-KEM, iki taraf arasında açık bir kanal üzerinden gizli bir simetrik anahtarın güvenli biçimde paylaşılmasını sağlayan bir Anahtar Kapsülleme Mekanizmasıdır (Key-Encapsulation Mechanism). Standardın temeli, NIST standartlaştırma yarışmasını kazanan CRYSTALS-Kyber algoritmasına dayanır.

Klasik anahtar değişimi yöntemleri (Diffie-Hellman, RSA, ECDH) büyük tam sayı çarpanlarına ayırma ve eliptik eğri ayrık logaritma problemlerinin zorluğuna güvenir. Yeterince güçlü bir kuantum bilgisayar, Shor algoritması ile bu problemleri polinom zamanda çözebilir. ML-KEM ise bu tehdide karşı dayanıklıdır.

Güvenlik Temeli: Module-LWE

ML-KEM'in güvenliği, Modül Kafesi Üzerinde Hata ile Öğrenme (Module Learning With Errors, Module-LWE) probleminin zorluğuna dayanır. Bu problem, yapılandırılmış kafesler üzerinde küçük rastgele gürültü eklenmiş doğrusal denklem sistemlerini çözmeyi gerektirir. Daha formal olarak: bir rastgele matris A ∈ Rqk×k ve gizli vektör s, küçük gürültü e verildiğinde, (A, A·s + e) çiftinden s'yi geri kurmak hesaplama açısından zordur. Burada Rq bir polinom halkasıdır (q = 3329).

Module-LWE'nin "module" eki, problemi tam halka (Ring-LWE) ile düzensiz kafes (LWE) arasında konumlandırır: hem performans hem de yapısal saldırılara karşı direnç dengelenir. Bilinen hiçbir klasik ya da kuantum algoritma Module-LWE'yi polinom zamanda çözememektedir; en iyi kuantum saldırı lattice sieving yöntemleridir ve ML-KEM-768 için tahmini saldırı maliyeti 2180 kuantum işlem civarındadır.

Algoritma Akışı

ML-KEM üç temel işlem sunar:

  1. KeyGen() — bir açık anahtar (ek) ve bir çözme anahtarı (dk) üretir.
  2. Encaps(ek) — alıcının açık anahtarını kullanarak rastgele bir 32 baytlık simetrik anahtar (paylaşılan sır K) üretir ve bunu açık kanaldan gönderilebilecek bir kapsül (c) olarak şifreler.
  3. Decaps(dk, c) — alıcı, çözme anahtarıyla kapsülü açar ve aynı paylaşılan sır K'yi geri kurar.

Sonuçta her iki taraf da aynı 32 baytlık simetrik anahtara sahip olur. Bu anahtar daha sonra AES-256-GCM gibi simetrik bir şifreleyiciye beslenir.

Parametre Setleri

ML-KEM üç parametre setiyle gelir; her biri farklı bir NIST güvenlik seviyesine karşılık gelir:

Parametre Seti NIST Seviyesi Açık Anahtar Gizli Anahtar Şifreli Metin (Kapsül) Paylaşılan Sır
ML-KEM-5121 (AES-128 eşdeğeri)800 B1632 B768 B32 B
ML-KEM-7683 (AES-192 eşdeğeri)1184 B2400 B1088 B32 B
ML-KEM-10245 (AES-256 eşdeğeri)1568 B3168 B1568 B32 B

Çoğu internet ölçeği uygulama için ML-KEM-768 önerilir. ABD NSA'nın CNSA 2.0 kılavuzu, ulusal güvenlik sistemleri için ML-KEM-1024'ü zorunlu kılar.

Performans

Modern x86_64 işlemciler üzerinde (AVX2 vektör talimatlarıyla) tipik süreler:

ParametreKeyGenEncapsDecaps
ML-KEM-512~20 μs~25 μs~30 μs
ML-KEM-768~35 μs~40 μs~45 μs
ML-KEM-1024~55 μs~60 μs~70 μs

Bu süreler X25519 ile karşılaştırılabilirdir; ML-KEM, kafes işlemlerinin yüksek paralelleştirilebilirliği sayesinde RSA'dan onlarca kat hızlıdır.

TLS 1.3'te Konuşlandırma

ML-KEM'in en yaygın kullanım alanı TLS 1.3 protokolüdür. Modern tarayıcılar ve sunucular, anahtar değişiminde ML-KEM-768 ile klasik X25519'u birleştiren X25519MLKEM768 (kod noktası 0x11EC) hibrit grubunu desteklemektedir. IETF taslağı: draft-kwiatkowski-tls-ecdhe-mlkem.

Hibrit yaklaşım, hem klasik hem kuantum güvenliğini aynı anda sağlar: bağlantının kırılması için bir saldırganın her iki algoritmayı da yenmesi gerekir. Paylaşılan sırlar HKDF ile birleştirilir:

SS_hybrid = HKDF(X25519_shared || MLKEM768_shared, label)

liboqs ile Örnek Kullanım

Open Quantum Safe projesi (liboqs), ML-KEM'i C API'siyle sunar:

#include <oqs/oqs.h>

OQS_KEM *kem = OQS_KEM_new(OQS_KEM_alg_ml_kem_768);
uint8_t *pk = malloc(kem->length_public_key);
uint8_t *sk = malloc(kem->length_secret_key);
uint8_t *ct = malloc(kem->length_ciphertext);
uint8_t  ss_a[32], ss_b[32];

OQS_KEM_keypair(kem, pk, sk);          // Alice anahtar çifti
OQS_KEM_encaps(kem, ct, ss_b, pk);     // Bob kapsülleme
OQS_KEM_decaps(kem, ss_a, ct, sk);     // Alice çözme
// ss_a == ss_b → paylaşılan sır

OpenSSL 3.5+ ML-KEM'i provider aracılığıyla yerel olarak destekler. Python için pqcrypto ve liboqs-python binding'leri mevcuttur.

Konuşlandırma Önerileri

  • İnternet ölçeği TLS: X25519MLKEM768 hibrit, geçiş döneminin varsayılan tercihi. Cloudflare, AWS, Google bu grubu 2024'ten itibaren yaygınlaştırmıştır.
  • VPN ve IPsec: RFC 9370 hibrit IKEv2 ile ML-KEM-768 konuşlandırılabilir.
  • SSH: OpenSSH 9.9+ mlkem768x25519-sha256 anahtar değişim algoritmasını destekler.
  • Mesajlaşma: Apple iMessage PQ3 protokolü ML-KEM tabanlıdır. Signal protokolü için PQXDH benzeri yaklaşımlar geliştirilmektedir.

Bilinen Saldırı Modelleri

ML-KEM'in güvenlik analizi şu kategorilere odaklanır:

  • Kafes sieving saldırıları — en güçlü bilinen klasik/kuantum saldırı. ML-KEM parametre setleri en azından 2128 klasik bit güvenlik sağlar.
  • Yan-kanal saldırıları — özellikle zamanlama ve güç analizi. Referans uygulamalar sabit-zamanlıdır ancak donanım entegrasyonunda dikkat gerektirir.
  • Fault injection — Decaps sırasında hata enjekte edilirse gizli anahtarın bitleri sızabilir; FIPS 140-3 sertifikalı modüller bu saldırıya karşı koruma katmanları ekler.

Standart Belgeleri ve Kaynaklar

  • NIST FIPS 203 (resmi) — csrc.nist.gov/pubs/fips/203/final
  • CRYSTALS-Kyber teknik şartname — pq-crystals.org/kyber
  • IETF X25519MLKEM768 taslak — datatracker.ietf.org/doc/draft-kwiatkowski-tls-ecdhe-mlkem
  • Open Quantum Safe — openquantumsafe.org
  • OpenSSL ML-KEM provider — github.com/openssl/openssl/wiki/PQC