~~NOTOC~~ ====== 7. Šifriranje ====== **Scenariji:** 3 \\ **FFI funkcije:** ~25 \\ **Status:** ⏳ Planirano Ova kategorija obuhvaća sve scenarije za post-kvantno sigurno šifriranje. Hibridno šifriranje s ML-KEM, enkapsulacija ključeva i simetrično šifriranje. ---- ===== Scenariji ===== ^ ID ^ Scenarij ^ Opis ^ Složenost ^ Status ^ | [[.:hybrid_encryption|7.1]] | Hibridno šifriranje | ECDH + ML-KEM kombinirano | ⭐⭐⭐⭐ | ⏳ | | [[.:key_encapsulation|7.2]] | Enkapsulacija ključa | ML-KEM za razmjenu ključeva | ⭐⭐⭐ | ⏳ | | [[.:file_encryption|7.3]] | Šifriranje datoteka | Šifriranje velikih datoteka | ⭐⭐⭐ | ⏳ | ---- ===== Tijek hibridnog šifriranja ===== sequenceDiagram participant A as Alice (Pošiljatelj) participant B as Bob (Primatelj) Note over B: Generiranje para ključeva B->>A: Javni ključ (ECDH + ML-KEM) Note over A: Enkapsulacija ključa 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: Dekapsulacija ključa B->>B: ECDH SharedSecret + ML-KEM Decapsulate B->>B: HKDF(ECDH || ML-KEM) → KEK B->>B: AES-GCM Decrypt(KEK, Ciphertext) ---- ===== Algoritmi ===== ^ Komponenta ^ Algoritam ^ Razina sigurnosti ^ Standard ^ | Enkapsulacija ključa (PQ) | ML-KEM-768 | 192 bita | NIST FIPS 203 | | Razmjena ključeva (klasično) | ECDH P-384 | 192 bita | NIST SP 800-56A | | Derivacija ključa | HKDF-SHA384 | - | RFC 5869 | | Simetrično šifriranje | AES-256-GCM | 256 bita | NIST SP 800-38D | **Hibridni princip:** Oba algoritma (ECDH + ML-KEM) moraju biti razbijeni da bi se kompromitiralo šifriranje. ---- ===== Scenariji primjene ===== ^ Primjena ^ Preporučeni način ^ Obrazloženje ^ | Dugoročna arhivacija | ML-KEM (samo PQ) | Podaci moraju biti sigurni 20+ godina | | Trenutna komunikacija | Hibridno | Kompatibilnost + sigurnost za budućnost | | Legacy sustavi | ECDH (klasično) | Nema PQ podrške | ---- ===== Brzi početak koda ===== ==== Hibridno šifriranje ==== using WvdS.Security.Cryptography.Extensions.PQ; // Primatelj: generiranje para ključeva using var recipientKey = ctx.GenerateHybridKeyPair( classicAlgorithm: EcdhCurve.P384, pqAlgorithm: PqAlgorithm.MlKem768 ); var publicKeyPem = recipientKey.ExportPublicKeyPem(); // Pošiljatelj: šifriranje var (ciphertext, encapsulatedKey) = ctx.HybridEncrypt( plaintext: Encoding.UTF8.GetBytes("Tajna poruka"), recipientPublicKey: publicKeyPem ); // Primatelj: dešifriranje var plaintext = ctx.HybridDecrypt( ciphertext: ciphertext, encapsulatedKey: encapsulatedKey, privateKey: recipientKey ); ==== Šifriranje datoteka ==== // Šifriranje velike datoteke (streaming) await ctx.EncryptFileAsync( inputPath: "dokument.pdf", outputPath: "dokument.pdf.enc", recipientPublicKey: publicKeyPem, mode: CryptoMode.Hybrid ); // Dešifriranje await ctx.DecryptFileAsync( inputPath: "dokument.pdf.enc", outputPath: "dokument-decrypted.pdf", privateKey: recipientKey ); ---- ===== Povezane kategorije ===== ^ Kategorija ^ Odnos ^ | [[.:schluessel:start|11. Upravljanje ključevima]] | Upravljanje parovima ključeva | | [[.:tls:start|10. TLS/mTLS]] | Razmjena ključeva u TLS rukovanju | | [[.:interop:start|12. Uvoz/Izvoz]] | Izvoz šifriranih ključeva | ---- << [[hr:int:pqcrypt:szenarien:widerruf:start|← 6. Opoziv]] | [[hr:int:pqcrypt:szenarien:start|↑ Scenariji]] | [[.:signaturen:start|8. Digitalni potpisi →]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>kategorija šifriranje encryption hibrid mlkem}}