~~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}}