~~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}}