====== 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//