Š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