Inhaltsverzeichnis
Šifriranje
Kompaktni primeri za šifriranje. → Podrobnosti: Scenariji šifriranja
ML-KEM enkapsulacija ključev
// Prejemnik: generiranje para ključev using var mlKem = MlKem.Create(MlKemParameterSet.MlKem768); byte[] publicKey = mlKem.ExportPublicKey(); // Pošiljatelj: enkapsulacija skupne skrivnosti var encap = MlKem.Encapsulate(publicKey); byte[] ciphertext = encap.Ciphertext; byte[] senderSecret = encap.SharedSecret; // Prejemnik: dekapsulacija skupne skrivnosti byte[] receiverSecret = mlKem.Decapsulate(ciphertext); // senderSecret == receiverSecret
→ Podrobnosti: Enkapsulacija ključev
Hibridna izmenjava ključev
// ECDH + ML-KEM kombinirano using var hybrid = HybridKeyExchange.Create( ECCurve.NamedCurves.nistP384, MlKemParameterSet.MlKem768); byte[] publicKey = hybrid.ExportPublicKey(); // Pošiljatelj var encap = HybridKeyExchange.Encapsulate(publicKey); byte[] sharedSecret = encap.SharedSecret; // 64 bajtov (32 ECDH + 32 ML-KEM)
→ Podrobnosti: Hibridno šifriranje
AES-256-GCM
// Izpeljava ključa iz skupne skrivnosti byte[] aesKey = KeyDerivationExtensions.DeriveKey( sharedSecret, outputLength: 32, info: Encoding.UTF8.GetBytes("AES-256-GCM")); // Šifriranje using var aes = new OpenSslAesGcm(aesKey); byte[] nonce = RandomNumberGenerator.GetBytes(12); byte[] ciphertext = new byte[plaintext.Length]; byte[] tag = new byte[16]; aes.Encrypt(nonce, plaintext, ciphertext, tag); // Dešifriranje byte[] decrypted = new byte[ciphertext.Length]; aes.Decrypt(nonce, ciphertext, tag, decrypted);
→ Podrobnosti: Šifriranje datotek
Popoln potek dela
// 1. Izmenjava ključev using var mlKem = MlKem.Create(MlKemParameterSet.MlKem768); var encap = MlKem.Encapsulate(mlKem.ExportPublicKey()); // 2. Izpeljava ključa byte[] key = KeyDerivationExtensions.DeriveKey( encap.SharedSecret, 32, info: "encryption"u8.ToArray()); // 3. Šifriranje using var aes = new OpenSslAesGcm(key); // ... šifriraj
Algoritmi
| Algoritem | Ključ | Varnost |
|---|---|---|
| ML-KEM-512 | 800 B javni / 1632 B zasebni | Level 1 |
| ML-KEM-768 | 1184 B javni / 2400 B zasebni | Level 3 |
| ML-KEM-1024 | 1568 B javni / 3168 B zasebni | Level 5 |
| AES-256-GCM | 256 bitov | 256 bitov |
« ← Kratka referenca | → Scenariji šifriranja (podrobnosti) »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: dne 30.01.2026 ob 08:21