10. Comunicazione TLS/mTLS

Scenari: 4
Funzioni FFI: ~30
Stato: Pianificato

Questa categoria comprende tutti gli scenari per la comunicazione TLS sicura Post-Quantum. Setup del server, configurazione del client e deployment mTLS.


Scenari

ID Scenario Descrizione Complessità Stato
10.1 Configurare server TLS Server con certificato PQ Media Pianificato
10.2 Configurare client TLS Client per PQ-TLS Media Pianificato
10.3 Deployment mTLS Autenticazione reciproca Alta Pianificato
10.4 TLS ibrido ECDHE + ML-KEM Key Exchange Alta Pianificato

TLS 1.3 con PQ Key Exchange

sequenceDiagram participant C as Client participant S as Server Note over C,S: TLS 1.3 Handshake con 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: Validare certificato Note over C: Calcolare chiave ibrida C->>S: Finished Note over C,S: Comunicazione crittografata


Cipher Suites

Cipher Suite Key Exchange Autenticazione Crittografia
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

Configurazione server

Server Configurazione Supporto PQ
Nginx ssl_certificate + ssl_protocols Via OpenSSL 3.6
Apache SSLCertificateFile + SSLProtocol Via OpenSSL 3.6
Kestrel (.NET) HttpsConnectionAdapterOptions Nativo
HAProxy bind … ssl crt Via OpenSSL 3.6

Requisiti specifici per settore

Settore Requisito TLS Particolarità
Energia/SCADA TLS 1.2+ IEC 62351, Fallback offline
Sanità TLS 1.3 gematik TI-Konnektor
Automotive TLS 1.3 V2X, handshake brevi
Industria 4.0 TLS 1.3 + mTLS OPC UA Security

Guida rapida al codice

Kestrel Server (ASP.NET Core)

// Program.cs
var builder = WebApplication.CreateBuilder(args);
 
builder.WebHost.ConfigureKestrel(options =>
{
    options.ListenAnyIP(443, listenOptions =>
    {
        listenOptions.UseHttps(httpsOptions =>
        {
            // Caricare certificato PQ
            var cert = ctx.LoadCertificate("server.crt.pem");
            var key = ctx.LoadPrivateKey("server.key.pem", password);
            httpsOptions.ServerCertificate = ctx.CreateX509Certificate2(cert, key);
 
            // Forzare TLS 1.3
            httpsOptions.SslProtocols = SslProtocols.Tls13;
 
            // Certificato client per mTLS
            httpsOptions.ClientCertificateMode = ClientCertificateMode.RequireCertificate;
            httpsOptions.ClientCertificateValidation = (cert, chain, errors) =>
            {
                return ctx.ValidateCertificate(cert, trustStore).IsValid;
            };
        });
    });
});

HttpClient con PQ-TLS

// Configurare HttpClient per PQ-TLS
var handler = new SocketsHttpHandler
{
    SslOptions = new SslClientAuthenticationOptions
    {
        EnabledSslProtocols = SslProtocols.Tls13,
        RemoteCertificateValidationCallback = (sender, cert, chain, errors) =>
        {
            // Validazione certificato PQ
            return ctx.ValidateCertificate(cert, trustStore).IsValid;
        }
    }
};
 
var httpClient = new HttpClient(handler);
var response = await httpClient.GetAsync("https://pq-server.example.com/api/data");

Configurazione 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

Categorie correlate

Categoria Relazione
3. Emettere certificati Certificati server
9. Autenticazione mTLS Client-Auth
7. Crittografia Key Exchange

« ← 9. Autenticazione | ↑ Scenari | 11. Gestione chiavi → »


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

Zuletzt geändert: il 30/01/2026 alle 06:59