10. TLS/mTLS komunikacija

Scenariji: 4
FFI funkcije: ~30
Status: ⏳ Planirano

Ova kategorija obuhvaća sve scenarije za Post-Quantum sigurnu TLS komunikaciju. Postavljanje servera, konfiguracija klijenta i mTLS deployment.


Scenariji

ID Scenarij Opis Složenost Status
10.1 Postavljanje TLS servera Server s PQ certifikatom ⭐⭐⭐
10.2 Konfiguracija TLS klijenta Klijent za PQ-TLS ⭐⭐⭐
10.3 mTLS Deployment Obostrana autentifikacija ⭐⭐⭐⭐
10.4 Hybrid-TLS ECDHE + ML-KEM Key Exchange ⭐⭐⭐⭐

TLS 1.3 s PQ Key Exchange

sequenceDiagram participant C as Klijent participant S as Server Note over C,S: TLS 1.3 Handshake s Hybrid Key Exchange 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 hibridnog ključa C->>S: Finished Note over C,S: 🔐 Šifrirana komunikacija


Cipher Suites

Cipher Suite Key Exchange Autentifikacija Š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 (Hybrid fallback) ECDSA P-384 AES-256-GCM

Konfiguracija servera

Server Konfiguracija PQ podrška
Nginx ssl_certificate + ssl_protocols Putem OpenSSL 3.6
Apache SSLCertificateFile + SSLProtocol Putem OpenSSL 3.6
Kestrel (.NET) HttpsConnectionAdapterOptions Nativno
HAProxy bind … ssl crt Putem OpenSSL 3.6

Sektorski specifični zahtjevi

Sektor TLS zahtjev Posebnosti
Energetika/SCADA TLS 1.2+ IEC 62351, offline fallback
Zdravstvo TLS 1.3 gematik TI konektor
Automobilska industrija TLS 1.3 V2X, kratki handshake
Industrija 4.0 TLS 1.3 + mTLS OPC UA Security

Brzi početak koda

Kestrel Server (ASP.NET Core)

// Program.cs
var builder = WebApplication.CreateBuilder(args);
 
builder.WebHost.ConfigureKestrel(options =>
{
    options.ListenAnyIP(443, listenOptions =>
    {
        listenOptions.UseHttps(httpsOptions =>
        {
            // Učitavanje PQ certifikata
            var cert = ctx.LoadCertificate("server.crt.pem");
            var key = ctx.LoadPrivateKey("server.key.pem", password);
            httpsOptions.ServerCertificate = ctx.CreateX509Certificate2(cert, key);
 
            // Forsiranje TLS 1.3
            httpsOptions.SslProtocols = SslProtocols.Tls13;
 
            // Klijentski certifikat za mTLS
            httpsOptions.ClientCertificateMode = ClientCertificateMode.RequireCertificate;
            httpsOptions.ClientCertificateValidation = (cert, chain, errors) =>
            {
                return ctx.ValidateCertificate(cert, trustStore).IsValid;
            };
        });
    });
});

HttpClient s PQ-TLS

// Konfiguracija HttpClient-a 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");

OpenSSL 3.6 konfiguracija

# /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 Odnos
3. Izdavanje certifikata Server certifikati
9. Autentifikacija mTLS Client-Auth
7. Šifriranje Key Exchange

« ← 9. Autentifikacija | ↑ Scenariji | 11. Upravljanje ključevima → »


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