~~NOTOC~~
====== 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 ^
| [[.:server_setup|10.1]] | Postavljanje TLS servera | Server s PQ certifikatom | ⭐⭐⭐ | ⏳ |
| [[.:client_config|10.2]] | Konfiguracija TLS klijenta | Klijent za PQ-TLS | ⭐⭐⭐ | ⏳ |
| [[.:mtls_deployment|10.3]] | mTLS Deployment | Obostrana autentifikacija | ⭐⭐⭐⭐ | ⏳ |
| [[.:hybrid_tls|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 ^
| [[.:zertifikate:start|3. Izdavanje certifikata]] | Server certifikati |
| [[.:authentifizierung:start|9. Autentifikacija]] | mTLS Client-Auth |
| [[.:verschluesselung:start|7. Šifriranje]] | Key Exchange |
----
<< [[hr:int:pqcrypt:szenarien:authentifizierung:start|← 9. Autentifikacija]] | [[hr:int:pqcrypt:szenarien:start|↑ Scenariji]] | [[.:schluessel:start|11. Upravljanje ključevima →]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>kategorija tls mtls https openssl}}