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
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:
- KeyGen() — bir açık anahtar (ek) ve bir çözme anahtarı (dk) üretir.
- 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.
- 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-512 | 1 (AES-128 eşdeğeri) | 800 B | 1632 B | 768 B | 32 B |
| ML-KEM-768 | 3 (AES-192 eşdeğeri) | 1184 B | 2400 B | 1088 B | 32 B |
| ML-KEM-1024 | 5 (AES-256 eşdeğeri) | 1568 B | 3168 B | 1568 B | 32 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:
| Parametre | KeyGen | Encaps | Decaps |
|---|---|---|---|
| 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-sha256anahtar 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