~~NOTOC~~
====== 7. Verschlüsselung ======
**Szenarien:** 3 \\
**FFI-Funktionen:** ~25 \\
**Status:** ⏳ Geplant
Diese Kategorie umfasst alle Szenarien zur Post-Quantum-sicheren Verschlüsselung. Hybrid-Encryption mit ML-KEM, Key Encapsulation und symmetrische Verschlüsselung.
----
===== Szenarien =====
^ ID ^ Szenario ^ Beschreibung ^ Komplexität ^ Status ^
| [[.:hybrid_encryption|7.1]] | Hybrid-Encryption | ECDH + ML-KEM kombiniert | ⭐⭐⭐⭐ | ⏳ |
| [[.:key_encapsulation|7.2]] | Key Encapsulation | ML-KEM für Schlüsselaustausch | ⭐⭐⭐ | ⏳ |
| [[.:file_encryption|7.3]] | Datei-Verschlüsselung | Große Dateien verschlüsseln | ⭐⭐⭐ | ⏳ |
----
===== Hybrid-Encryption Workflow =====
sequenceDiagram
participant A as Alice (Sender)
participant B as Bob (Empfänger)
Note over B: Schlüsselpaar generieren
B->>A: Public Key (ECDH + ML-KEM)
Note over A: Key Encapsulation
A->>A: ECDH SharedSecret + ML-KEM Ciphertext
A->>A: HKDF(ECDH || ML-KEM) → KEK
A->>A: AES-GCM Encrypt(KEK, Plaintext)
A->>B: ECDH Ephemeral PK + ML-KEM Ciphertext + AES Ciphertext
Note over B: Key Decapsulation
B->>B: ECDH SharedSecret + ML-KEM Decapsulate
B->>B: HKDF(ECDH || ML-KEM) → KEK
B->>B: AES-GCM Decrypt(KEK, Ciphertext)
----
===== Algorithmen =====
^ Komponente ^ Algorithmus ^ Sicherheitsniveau ^ Standard ^
| Key Encapsulation (PQ) | ML-KEM-768 | 192 Bit | NIST FIPS 203 |
| Key Exchange (klassisch) | ECDH P-384 | 192 Bit | NIST SP 800-56A |
| Key Derivation | HKDF-SHA384 | - | RFC 5869 |
| Symmetric Encryption | AES-256-GCM | 256 Bit | NIST SP 800-38D |
**Hybrid-Prinzip:** Beide Algorithmen (ECDH + ML-KEM) müssen gebrochen werden, um die Verschlüsselung zu kompromittieren.
----
===== Einsatzszenarien =====
^ Anwendung ^ Empfohlener Modus ^ Begründung ^
| Langzeit-Archivierung | ML-KEM (PQ-only) | Daten müssen 20+ Jahre sicher bleiben |
| Aktuelle Kommunikation | Hybrid | Kompatibilität + Zukunftssicherheit |
| Legacy-Systeme | ECDH (Classic) | Keine PQ-Unterstützung |
----
===== Code-Schnellstart =====
==== Hybrid-Encryption ====
using WvdS.Security.Cryptography.Extensions.PQ;
// Empfänger: Schlüsselpaar generieren
using var recipientKey = ctx.GenerateHybridKeyPair(
classicAlgorithm: EcdhCurve.P384,
pqAlgorithm: PqAlgorithm.MlKem768
);
var publicKeyPem = recipientKey.ExportPublicKeyPem();
// Sender: Verschlüsseln
var (ciphertext, encapsulatedKey) = ctx.HybridEncrypt(
plaintext: Encoding.UTF8.GetBytes("Geheime Nachricht"),
recipientPublicKey: publicKeyPem
);
// Empfänger: Entschlüsseln
var plaintext = ctx.HybridDecrypt(
ciphertext: ciphertext,
encapsulatedKey: encapsulatedKey,
privateKey: recipientKey
);
==== Datei-Verschlüsselung ====
// Große Datei verschlüsseln (Streaming)
await ctx.EncryptFileAsync(
inputPath: "dokument.pdf",
outputPath: "dokument.pdf.enc",
recipientPublicKey: publicKeyPem,
mode: CryptoMode.Hybrid
);
// Entschlüsseln
await ctx.DecryptFileAsync(
inputPath: "dokument.pdf.enc",
outputPath: "dokument-decrypted.pdf",
privateKey: recipientKey
);
----
===== Verwandte Kategorien =====
^ Kategorie ^ Beziehung ^
| [[.:schluessel:start|11. Schlüsselmanagement]] | Schlüsselpaare verwalten |
| [[.:tls:start|10. TLS/mTLS]] | Key Exchange im TLS-Handshake |
| [[.:interop:start|12. Import/Export]] | Verschlüsselte Schlüssel exportieren |
----
<< [[de:int:pqcrypt:szenarien:widerruf:start|← 6. Widerruf]] | [[de:int:pqcrypt:szenarien:start|↑ Szenarien]] | [[.:signaturen:start|8. Digitale Signaturen →]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>kategorie verschluesselung encryption hybrid mlkem}}