====== KeyDerivation Namespace ====== **Namespace:** ''WvdS.System.Security.Cryptography.KeyDerivation'' Enthält Klassen für Schlüsselableitung (KDF) mit PQ-Unterstützung. ---- ===== Klassen ===== ^ Klasse ^ Beschreibung ^ | KeyDerivationExtensions | KDF-Funktionen (HKDF, PBKDF2, Argon2id) | | HybridKeyMaterial | Container für abgeleitete Schlüssel | | TlsKeyMaterial | TLS-Stil Schlüsselmaterial | | Tls13KeySchedule | TLS 1.3 Key Schedule | ---- ===== Unterstützte KDFs ===== ^ Funktion ^ Standard ^ Verwendung ^ | HKDF | RFC 5869((RFC 5869: https://datatracker.ietf.org/doc/html/rfc5869)) | Session-Keys aus Shared Secret | | PBKDF2 | RFC 8018((RFC 8018: https://datatracker.ietf.org/doc/html/rfc8018)) | Passwort-basierte Schlüssel | | Argon2id | RFC 9106((RFC 9106: https://datatracker.ietf.org/doc/html/rfc9106)) | Memory-hard KDF | ---- ===== Beispiel ===== using WvdS.System.Security.Cryptography.KeyDerivation; byte[] sharedSecret = /* aus ML-KEM */; byte[] salt = RandomNumberGenerator.GetBytes(32); // HKDF für Session-Keys byte[] aesKey = KeyDerivationExtensions.DeriveKey( sharedSecret, outputLength: 32, salt: salt, info: Encoding.UTF8.GetBytes("AES-256-GCM")); // Hybride Schlüsselableitung byte[] hybridKey = KeyDerivationExtensions.DeriveHybridKey( classicSecret: ecdhSecret, pqSecret: mlKemSecret, outputLength: 32); ---- ===== Hauptmethoden ===== ==== HKDF ==== ^ Methode ^ Beschreibung ^ | ''DeriveKey'' | HKDF-Extract-then-Expand | | ''HkdfExtract'' | Extrahiert PRK aus IKM | | ''HkdfExpand'' | Expandiert PRK zu Output Key | ==== Hybrid ==== ^ Methode ^ Beschreibung ^ | ''DeriveHybridKey'' | Kombiniert klassisch + PQ Secrets | | ''DeriveHybridKeyMaterial'' | Leitet mehrere Schlüssel ab | ==== Passwort-basiert ==== ^ Methode ^ Beschreibung ^ | ''Pbkdf2'' | Standard PBKDF2 mit optionaler PQ-Entropy | | ''Pbkdf2WithPqSalt'' | PBKDF2 mit PQ-verstärktem Salt | | ''Argon2id'' | Memory-hard KDF via OpenSSL 3.6 | ==== TLS ==== ^ Methode ^ Beschreibung ^ | ''DeriveTlsKeys'' | TLS 1.2 Style Key Material | | ''DeriveTls13Keys'' | TLS 1.3 Key Schedule | ---- ===== Empfohlene Argon2id Parameter ===== ^ Anwendung ^ Iterations (t) ^ Memory (m) ^ Parallelism (p) ^ | Passwort-Hashing | 3 | 64 MB | 4 | | Hohe Sicherheit | 4 | 256 MB | 4 | | Low-Memory | 4 | 16 MB | 4 | ---- ===== Sicherheitshinweis ===== **Hybrid-Modus Sicherheit:** Im Hybrid-Modus wird der endgültige Schlüssel nur kompromittiert, wenn BEIDE Secrets (klassisch UND PQ) gebrochen werden. Dies bietet Schutz sowohl gegen klassische als auch gegen Quantenangriffe. ---- ===== Siehe auch ===== * [[.:keyexchange|KeyExchange Namespace]] * [[.:encryption|Encryption Namespace]] * [[.:start|API-Übersicht]] {{tag>namespace kdf hkdf pbkdf2 argon2id}} ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//