~~NOTOC~~ ====== 10. TLS/mTLS komunikacija ====== **Scenariji:** 4 \\ **FFI-funkcije:** ~30 \\ **Status:** ⏳ Načrtovano Ta kategorija zajema vse scenarije za postkvantno varno TLS komunikacijo. Nastavitev strežnika, konfiguracija odjemalca in uvajanje mTLS. ---- ===== Scenariji ===== ^ ID ^ Scenarij ^ Opis ^ Kompleksnost ^ Status ^ | [[.:server_setup|10.1]] | Nastavitev TLS strežnika | Strežnik s PQ certifikatom | ⭐⭐⭐ | ⏳ | | [[.:client_config|10.2]] | Konfiguracija TLS odjemalca | Odjemalec za PQ-TLS | ⭐⭐⭐ | ⏳ | | [[.:mtls_deployment|10.3]] | Uvajanje mTLS | Obojestranska avtentikacija | ⭐⭐⭐⭐ | ⏳ | | [[.:hybrid_tls|10.4]] | Hibridni TLS | ECDHE + ML-KEM izmenjava ključev | ⭐⭐⭐⭐ | ⏳ | ---- ===== TLS 1.3 s PQ izmenjavo ključev ===== sequenceDiagram participant C as Odjemalec participant S as Strežnik Note over C,S: TLS 1.3 Handshake s hibridno izmenjavo ključev C->>S: ClientHello (x25519_mlkem768) Note right of C: ECDH + ML-KEM Key Shares S->>C: ServerHello (x25519_mlkem768) S->>C: EncryptedExtensions S->>C: Certificate (ML-DSA-65) S->>C: CertificateVerify S->>C: Finished Note over C: Validacija certifikata Note over C: Izračun hibridnega ključa C->>S: Finished Note over C,S: Šifrirana komunikacija ---- ===== Šifrirni nabori ===== ^ Šifrirni nabor ^ Izmenjava ključev ^ Avtentikacija ^ Šifriranje ^ | TLS_AES_256_GCM_SHA384 | x25519_mlkem768 | ML-DSA-65 | AES-256-GCM | | TLS_CHACHA20_POLY1305_SHA256 | x25519_mlkem768 | ML-DSA-65 | ChaCha20-Poly1305 | | TLS_AES_256_GCM_SHA384 | x25519 (hibridni nadomestek) | ECDSA P-384 | AES-256-GCM | ---- ===== Konfiguracija strežnika ===== ^ Strežnik ^ Konfiguracija ^ PQ podpora ^ | **Nginx** | ssl_certificate + ssl_protocols | Prek OpenSSL 3.6 | | **Apache** | SSLCertificateFile + SSLProtocol | Prek OpenSSL 3.6 | | **Kestrel (.NET)** | HttpsConnectionAdapterOptions | Izvirno | | **HAProxy** | bind ... ssl crt | Prek OpenSSL 3.6 | ---- ===== Panožne zahteve ===== ^ Panoga ^ TLS zahteva ^ Posebnosti ^ | **Energetika/SCADA** | TLS 1.2+ | IEC 62351, nadomestek brez povezave | | **Zdravstvo** | TLS 1.3 | gematik TI-Konnektor | | **Avtomobilska industrija** | TLS 1.3 | V2X, kratka rokovanja | | **Industrija 4.0** | TLS 1.3 + mTLS | OPC UA varnost | ---- ===== Hiter začetek s kodo ===== ==== Kestrel strežnik (ASP.NET Core) ==== // Program.cs var builder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel(options => { options.ListenAnyIP(443, listenOptions => { listenOptions.UseHttps(httpsOptions => { // Nalaganje PQ certifikata var cert = ctx.LoadCertificate("server.crt.pem"); var key = ctx.LoadPrivateKey("server.key.pem", password); httpsOptions.ServerCertificate = ctx.CreateX509Certificate2(cert, key); // Zahtevanje TLS 1.3 httpsOptions.SslProtocols = SslProtocols.Tls13; // Odjemalčev certifikat za mTLS httpsOptions.ClientCertificateMode = ClientCertificateMode.RequireCertificate; httpsOptions.ClientCertificateValidation = (cert, chain, errors) => { return ctx.ValidateCertificate(cert, trustStore).IsValid; }; }); }); }); ==== HttpClient s PQ-TLS ==== // Konfiguracija HttpClient za PQ-TLS var handler = new SocketsHttpHandler { SslOptions = new SslClientAuthenticationOptions { EnabledSslProtocols = SslProtocols.Tls13, RemoteCertificateValidationCallback = (sender, cert, chain, errors) => { // PQ validacija certifikata return ctx.ValidateCertificate(cert, trustStore).IsValid; } } }; var httpClient = new HttpClient(handler); var response = await httpClient.GetAsync("https://pq-server.example.com/api/data"); ---- ===== Konfiguracija OpenSSL 3.6 ===== # /etc/ssl/openssl.cnf [openssl_init] providers = provider_sect [provider_sect] default = default_sect oqsprovider = oqsprovider_sect [default_sect] activate = 1 [oqsprovider_sect] activate = 1 module = /usr/lib/ossl-modules/oqsprovider.so ---- ===== Povezane kategorije ===== ^ Kategorija ^ Povezava ^ | [[.:zertifikate:start|3. Izdaja certifikatov]] | Strežniški certifikati | | [[.:authentifizierung:start|9. Avtentikacija]] | mTLS avtentikacija odjemalca | | [[.:verschluesselung:start|7. Šifriranje]] | Izmenjava ključev | ---- << [[sl:int:pqcrypt:szenarien:authentifizierung:start|← 9. Avtentikacija]] | [[sl:int:pqcrypt:szenarien:start|↑ Scenariji]] | [[.:schluessel:start|11. Upravljanje ključev →]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>kategorija tls mtls https openssl}}