====== Encryption Namespace ======
**Namespace:** ''WvdS.System.Security.Cryptography.Encryption''
Contains classes for symmetric encryption with PQ key derivation.
----
===== Classes =====
^ Class ^ Description ^
| SymmetricEncryptionExtensions | AES-GCM encryption with PQ keys |
| HybridEncryptedData | Container for hybrid-encrypted data |
| PqCrypto | Convenience API for PQ encryption |
----
===== Encryption Modes =====
| Mode | Classic | ML-KEM | Usage |
| Classic | RSA-OAEP / ECDH | - | Standard .NET behavior |
| Hybrid | RSA-OAEP / ECDH | Yes | Maximum security |
| PostQuantum | - | Yes | Pure post-quantum |
----
===== Encryption Format =====
+------------------------------------------+
| AES-GCM Encrypted Data |
+------------------------------------------+
| [12 Bytes] Nonce (IV) |
| [n Bytes] Ciphertext |
| [16 Bytes] Authentication Tag |
+------------------------------------------+
----
===== Example =====
using WvdS.System.Security.Cryptography.Encryption;
using WvdS.System.Security.Cryptography.KeyExchange;
// Shared secret from key exchange
byte[] sharedSecret = session.SharedSecret;
// Encrypt
byte[] plaintext = Encoding.UTF8.GetBytes("Secret message");
byte[] encrypted = SymmetricEncryptionExtensions.EncryptWithPqKey(
plaintext, sharedSecret);
// Decrypt
byte[] decrypted = SymmetricEncryptionExtensions.DecryptWithPqKey(
encrypted, sharedSecret);
----
===== Main Methods =====
==== SymmetricEncryptionExtensions ====
^ Method ^ Description ^
| ''EncryptWithPqKey'' | AES-GCM with PQ-derived key |
| ''DecryptWithPqKey'' | Decryption with PQ key |
| ''EncryptHybrid'' | RSA-OAEP + ML-KEM hybrid |
| ''DecryptHybrid'' | Hybrid decryption |
| ''EncryptEcdhPq'' | ECDH + ML-KEM hybrid |
| ''DecryptEcdhPq'' | ECDH+ML-KEM decryption |
| ''EncryptAesGcm'' | Standard AES-256-GCM |
| ''DecryptAesGcm'' | AES-GCM decryption |
| ''EncryptStream'' | Stream-based encryption |
| ''DecryptStream'' | Stream-based decryption |
==== PqCrypto ====
^ Method ^ Description ^
| ''GenerateKeyPair'' | Generate ML-KEM key pair |
| ''Encrypt'' | PQ encryption |
| ''Decrypt'' | PQ decryption |
----
===== Security Note =====
**Key combination in Hybrid mode:**
Combined Key = HKDF-SHA256(
ikm = classicSecret || pqSecret,
info = "WvdS-Hybrid-Key"
)
Even if an attacker compromises the classic secret, the encryption remains protected by the PQ secret (and vice versa).
----
===== See Also =====
* [[.:keyexchange|KeyExchange Namespace]]
* [[.:keyderivation|KeyDerivation Namespace]]
* [[.:start|API Overview]]
{{tag>namespace encryption aes-gcm ml-kem}}
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//