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
7.1 Hibridno šifriranje ECDH + ML-KEM kombinirano ⭐⭐⭐⭐
7.2 Enkapsulacija ključa ML-KEM za razmjenu ključeva ⭐⭐⭐
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
11. Upravljanje ključevima Upravljanje parovima ključeva
10. TLS/mTLS Razmjena ključeva u TLS rukovanju
12. Uvoz/Izvoz Izvoz šifriranih ključeva

« ← 6. Opoziv | ↑ Scenariji | 8. Digitalni potpisi → »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: 30.01.2026. u 07:22