ML-KEM ile Anahtar Değişimi: FIPS 203'e Derinlemesine Bakış
NIST'in birincil anahtar kapsülleme standardı ML-KEM'in çalışma mantığını, parametre setlerini ve bir kod örneğini inceliyoruz.
ML-KEM (FIPS 203), NIST'in 2024'te kesinleştirdiği, kuantum-güvenli anahtar değişimi için önerdiği birincil standarttır. Bu yazıda ML-KEM'in iç işleyişine ve pratik kullanımına yakından bakıyoruz.
KEM Nedir?
Bir Anahtar Kapsülleme Mekanizması (Key-Encapsulation Mechanism), iki tarafın ortak bir gizli simetrik anahtar üzerinde anlaşmasını sağlar. Klasik Diffie-Hellman'dan farklı olarak KEM üç işlemden oluşur:
- KeyGen: Alıcı bir açık/gizli anahtar çifti üretir.
- Encapsulate: Gönderen, alıcının açık anahtarını kullanarak bir ortak sır ve bu sırrı taşıyan bir "kapsül" (şifreli metin) üretir.
- Decapsulate: Alıcı, gizli anahtarıyla kapsülü açarak aynı ortak sırrı elde eder.
Kafes Tabanlı Güvenlik
ML-KEM'in güvenliği Module-LWE (Modül Kafesi Üzerinde Hata ile Öğrenme) probleminin zorluğuna dayanır. Bu problem, küçük rastgele gürültü eklenmiş doğrusal denklem sistemlerini yapılandırılmış kafesler üzerinde çözmeyi gerektirir. Ne klasik ne de kuantum algoritmalar bunu verimli biçimde başarabilir.
Parametre Setleri
ML-KEM üç parametre setiyle gelir:
- ML-KEM-512 — Güvenlik Seviyesi 1, açık anahtar 800 bayt.
- ML-KEM-768 — Güvenlik Seviyesi 3, açık anahtar 1184 bayt (çoğu uygulama için önerilen denge).
- ML-KEM-1024 — Güvenlik Seviyesi 5, açık anahtar 1568 bayt.
Kod Örneği
Aşağıda, bir kütüphane kullanarak ML-KEM-768 ile anahtar değişiminin tipik akışı gösterilmektedir:
// Alıcı tarafı: anahtar çifti üretimi
const { publicKey, secretKey } = ml_kem768.keygen();
// Gönderen tarafı: ortak sırrı kapsülleme
const { cipherText, sharedSecret } = ml_kem768.encapsulate(publicKey);
// Alıcı tarafı: kapsülü açma
const recovered = ml_kem768.decapsulate(cipherText, secretKey);
// recovered === sharedSecret -> iki taraf aynı simetrik anahtara sahip
Elde edilen sharedSecret, ardından AES-256-GCM gibi bir simetrik
şifreleme algoritmasında oturum anahtarı olarak kullanılır.
Hibrit Kullanım
Geçiş döneminde ML-KEM'i tek başına değil, klasik X25519 ile birlikte hibrit modda kullanmak yaygın olarak önerilir.
Hibrit modda iki algoritmanın ürettiği sırlar birleştirilir; bağlantının
kırılması için saldırganın her ikisini de yenmesi gerekir. TLS 1.3'teki
X25519MLKEM768 grubu bu yaklaşımın standartlaşmış hâlidir.
Yazar
Said Nadeem
Kriptografi Araştırmacısı
Kafes tabanlı kriptografi ve post-kuantum geçiş stratejileri üzerine çalışan bağımsız araştırmacı. NIST standartlaştırma sürecini yakından takip etmektedir.