====== Šifriranje ====== Kompaktni primjeri za šifriranje. → **Detalji:** [[..:verschluesselung:start|Scenariji šifriranja]] ---- ===== ML-KEM Key Encapsulation ===== // Primatelj: Generiranje para ključeva using var mlKem = MlKem.Create(MlKemParameterSet.MlKem768); byte[] publicKey = mlKem.ExportPublicKey(); // Pošiljatelj: Enkapsulacija Shared Secret var encap = MlKem.Encapsulate(publicKey); byte[] ciphertext = encap.Ciphertext; byte[] senderSecret = encap.SharedSecret; // Primatelj: Dekapsulacija Shared Secret byte[] receiverSecret = mlKem.Decapsulate(ciphertext); // senderSecret == receiverSecret → **Detalji:** [[..:verschluesselung:key_encapsulation|Key Encapsulation]] ---- ===== Hibridna razmjena ključeva ===== // 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 bajta (32 ECDH + 32 ML-KEM) → **Detalji:** [[..:verschluesselung:hybrid_encryption|Hibridno šifriranje]] ---- ===== AES-256-GCM ===== // Derivacija ključa iz Shared Secret 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); → **Detalji:** [[..:verschluesselung:file_encryption|Šifriranje datoteka]] ---- ===== Potpuni tijek rada ===== // 1. Razmjena ključeva using var mlKem = MlKem.Create(MlKemParameterSet.MlKem768); var encap = MlKem.Encapsulate(mlKem.ExportPublicKey()); // 2. Derivacija ključa byte[] key = KeyDerivationExtensions.DeriveKey( encap.SharedSecret, 32, info: "encryption"u8.ToArray()); // 3. Šifriranje using var aes = new OpenSslAesGcm(key); // ... encrypt ---- ===== Algoritmi ===== ^ Algoritam ^ Ključ ^ Sigurnost ^ | ML-KEM-512 | 800 B pub / 1632 B priv | Level 1 | | ML-KEM-768 | 1184 B pub / 2400 B priv | Level 3 | | ML-KEM-1024 | 1568 B pub / 3168 B priv | Level 5 | | AES-256-GCM | 256 bita | 256 bita | ---- << [[.:start|← Kratka referenca]] | [[..:verschluesselung:start|→ Scenariji šifriranja (Detalji)]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>kurzreferenz verschluesselung ml-kem aes-gcm hybrid}}