Tüm standartlar
FIPS 204 Nihai Dijital İmza

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

Seviye 2 (ML-DSA-44) Seviye 3 (ML-DSA-65) Seviye 5 (ML-DSA-87)

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ışı

  1. KeyGen() — gizli anahtar (dk) ve açık anahtar (ek) üretir.
  2. Sign(dk, M) — mesaj M için imza σ üretir. İmzalama deterministik veya rastgele moda alınabilir; FIPS 204 her ikisini de destekler.
  3. 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-4421312 B2528 B2420 B
ML-DSA-6531952 B4000 B3293 B
ML-DSA-8752592 B4864 B4595 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

AlgoritmaAçık AnahtarİmzaSign (μs)Verify (μs)
Ed2551932 B64 B~20~50
ECDSA P-25664 B~71 B~30~80
RSA-3072387 B384 B~3 500~80
ML-DSA-651952 B3293 B~520~170

Çıkarımlar:

  • ML-DSA imzaları Ed25519'un 50×, RSA-3072'nin '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