ML-DSA
Module-Lattice-Based Digital Signature Standard
Yayım tarihi: 13 AğustosAğustosAğustos 2024
Özet
CRYSTALS-Dilithium temelli, kuantum-güvenli dijital imza için NIST'in birincil standardı. Kimlik doğrulama, sertifikalar ve kod imzalama gibi senaryolarda RSA ve ECDSA'nın yerini almak üzere tasarlanmıştır.
Güvenlik Seviyeleri
ML-DSA Nedir?
FIPS 204 (ML-DSA), NIST'in 13 Ağustos 2024'te yayımladığı post-kuantum dijital imza standardıdır. Standart, NIST yarışmasını kazanan CRYSTALS-Dilithium algoritmasına dayanır ve dijital imza üretmek için NIST'in birincil önerisi olarak konumlandırılır. FN-DSA (FIPS 206 — FALCON) ve SLH-DSA (FIPS 205 — SPHINCS+) ise yedek/tamamlayıcı standartlardır.
Dijital İmzanın Rolü
Dijital imza, bir mesajın ya da belgenin gerçekten belirtilen kişi tarafından oluşturulduğunu ve değiştirilmediğini kanıtlar. Üç temel güvenlik hizmeti sağlar:
- Bütünlük: İçerik imzalandıktan sonra değiştirilirse imza geçersiz olur.
- Kimlik doğrulama: İmzanın gizli anahtar sahibine ait olduğu doğrulanır.
- İnkâr edilemezlik: İmza sahibi belgeyi imzaladığını sonradan reddedemez (hukuki bağlayıcılık).
Bugün RSA ve ECDSA imzaları HTTPS sertifikalarından e-imzaya, yazılım güncellemelerinden blok zincirine kadar her yerde kullanılır. Kuantum bilgisayarlar Shor algoritmasıyla bu imzaları polinom zamanda taklit edebilecek hâle geleceği için kuantum-güvenli bir alternatif zorunludur.
Matematik Temeli: Module-LWE ve Module-SIS
ML-DSA, ML-KEM ile aynı matematiksel evreni paylaşır: Module-LWE (öğrenme problemi) ve Module-SIS (Kısa Tam Sayı Çözümü — Module Short Integer Solution). Bu iki problem birbirinin "ikizi"dir: biri gizli bilgi çıkarımı, diğeri kafes üzerinde kısa vektör bulma zorluğuna dayanır.
İmza üretimi "Fiat-Shamir with Aborts" tekniğiyle gerçekleştirilir: rastgele bir maskeleme vektörü çekilir, hash fonksiyonu çağrılır, sonucun belirli bir norm sınırını aşmadığı kontrol edilir; aşıyorsa süreç yeniden başlatılır (abort). Bu "iptal et ve yeniden dene" döngüsü gizli anahtarın imzadan sızmasını matematiksel olarak engeller.
Algoritma Akışı
- KeyGen() — gizli anahtar (dk) ve açık anahtar (ek) üretir.
- Sign(dk, M) — mesaj M için imza σ üretir. İmzalama deterministik veya rastgele moda alınabilir; FIPS 204 her ikisini de destekler.
- Verify(ek, M, σ) — imzanın geçerliliğini doğrular, true/false döner.
Parametre Setleri
| Parametre Seti | NIST Seviyesi | Açık Anahtar | Gizli Anahtar | İmza |
|---|---|---|---|---|
| ML-DSA-44 | 2 | 1312 B | 2528 B | 2420 B |
| ML-DSA-65 | 3 | 1952 B | 4000 B | 3293 B |
| ML-DSA-87 | 5 | 2592 B | 4864 B | 4595 B |
ML-DSA-65 internet ölçeği uygulamalar için dengeli tercihtir; NSA CNSA 2.0 ulusal güvenlik için ML-DSA-87 ister.
Klasik Algoritmalarla Karşılaştırma
| Algoritma | Açık Anahtar | İmza | Sign (μs) | Verify (μs) |
|---|---|---|---|---|
| Ed25519 | 32 B | 64 B | ~20 | ~50 |
| ECDSA P-256 | 64 B | ~71 B | ~30 | ~80 |
| RSA-3072 | 387 B | 384 B | ~3 500 | ~80 |
| ML-DSA-65 | 1952 B | 3293 B | ~520 | ~170 |
Çıkarımlar:
- ML-DSA imzaları Ed25519'un 50×, RSA-3072'nin 9×'i kadar.
- İmzalama süresi RSA'dan 7× daha hızlı; doğrulama Ed25519'a yakın.
- Sertifika zincirlerinde boyut çarpan etkisi yaratır (bir CA zinciri 3–4 sertifika içerebilir).
Uygulama Alanları
- X.509 sertifikaları: CA Browser Forum, ML-DSA-65 ve ML-DSA-87'yi TLS sertifikaları için OID atamıştır. Let's Encrypt 2027 sonrası test ortamı planlamaktadır.
- Kod imzalama: Microsoft Authenticode, Apple notarization ve Google Play imzalama altyapıları PQC geçişine 2026'dan itibaren başlamaktadır.
- E-imza: eIDAS 2.0 (AB) ve eşdeğer ulusal düzenlemeler ML-DSA'yı kabul edilebilir algoritma listesine almıştır.
- SSH: OpenSSH 9.9+
[email protected]imza algoritmasını sunar. - DNSSEC: ML-DSA için IANA algoritma numarası tahsisi 2025–2026'da beklenmektedir.
liboqs ile Örnek Kullanım
#include <oqs/oqs.h>
OQS_SIG *sig = OQS_SIG_new(OQS_SIG_alg_ml_dsa_65);
uint8_t *pk = malloc(sig->length_public_key);
uint8_t *sk = malloc(sig->length_secret_key);
uint8_t signature[sig->length_signature];
size_t sig_len;
OQS_SIG_keypair(sig, pk, sk);
OQS_SIG_sign(sig, signature, &sig_len, message, mlen, sk);
if (OQS_SIG_verify(sig, message, mlen, signature, sig_len, pk) == OQS_SUCCESS) {
// İmza geçerli
}
X.509 Sertifika Örneği
ML-DSA-65 sertifikaları, X.509'da OID 2.16.840.1.101.3.4.3.18 ile
tanımlanır. OpenSSL 3.5+ ile imzalı bir sertifika oluşturma:
openssl req -x509 -new -newkey ml-dsa-65 \
-keyout pqc-ca.key -out pqc-ca.crt \
-days 365 -nodes \
-subj "/CN=PQC Test CA"
Yan-Kanal ve Uygulama Güvenliği
ML-DSA referans uygulamaları sabit-zamanlıdır. Önemli dikkat noktaları:
- Rejection sampling döngü sayısı gizli anahtara bağlı olabilir; sabit-zaman için maksimum tekrar sayısı sayılarak veya CT-comparator ile maskelenir.
- Deterministik mod (FIPS 204 mod 0) saldırgan kontrollü mesajlarda fault injection riski taşır; hedging (rastgele + hash) modu önerilir.
- FIPS 140-3 sertifikalı HSM'ler için yan-kanal direnci CMVP süreciyle test edilir.
Standart Belgeleri ve Kaynaklar
- NIST FIPS 204 (resmi) —
csrc.nist.gov/pubs/fips/204/final - CRYSTALS-Dilithium teknik şartname —
pq-crystals.org/dilithium - CA/Browser Forum PQC çalışma grubu —
cabforum.org - IETF Composite Signatures (Hibrit) —
datatracker.ietf.org/wg/lamps - Open Quantum Safe —
openquantumsafe.org