it-swarm-eu.dev

chiavi di sessione di crittografia simmetrica in SSL / TLS

Questa domanda riguarda le chiavi di invio e ricezione della sessione utilizzate nel protocollo SSL/TLS. la mia comprensione è che questa chiave utilizza la crittografia simmetrica (DES, AES, BlowFish, ecc.) Mi chiedo, se le coppie di chiavi pubblico-private sono superiori alle chiavi simmetriche relative alla sicurezza dello scambio di chiavi, perché non utilizzare la crittografia asimmetrica per la sessione anche le chiavi?

questa è un'estensione di una domanda esistente: sicurezza di PKI, certificati, autorità di certificazione, segretezza anticipata

66
lurscher

3 motivi (ora):

  1. La crittografia asimmetrica è più lenta, molto più lenta della crittografia simmetrica. Gli ordini di grandezza sono più lenti.
  2. Data la stessa lunghezza della chiave, l'asimmetrico è molto più debole di quello simmetrico, bit per bit. Pertanto, è necessaria una chiave molto più grande per fornire una protezione equivalente. Ciò contribuisce anche alla lentezza di cui al punto 1.
  3. (Secondo il commento di @ ThomasPornin :) La crittografia asimmetrica comporta un aumento delle dimensioni dell'output. Ad esempio, se si utilizza RSA, i dati crittografati sono almeno del 10% più grandi del testo in chiaro. La crittografia simmetrica, d'altra parte, ha un overhead di dimensioni fisse anche durante la crittografia di gigabyte di dati.
77
AviD

Gli algoritmi di crittografia asimmetrica sono molto meno efficienti degli algoritmi simmetrici. Quindi, in sostanza, qualsiasi uso della crittografia tramite chiavi asimmetriche implica la crittografia di una chiave di sessione simmetrica, con la quale viene crittografato il messaggio effettivo.

Oltre alle utili note di AviD sulla lunghezza delle chiavi, nota che se gli attacchi di calcolo quantico diventano fattibili, renderanno inefficaci tutti gli algoritmi di chiave pubblica (e quindi SSL/TLS). Ma AES-256 dritto rimarrebbe forte anche con un attacco quantistico al computer. Vedi Dimensione chiave - Effetto degli attacchi di calcolo quantistico - Wikipedia . La domanda tornerebbe quindi a come scambiare quelle chiavi e stabilire fiducia in esse.

33
nealmcb

Questo è un approccio standard, chiamato a ibrido cryptosystem. La crittografia simmetrica e la crittografia asimmetrica hanno ciascuna i loro punti di forza e di debolezza. In particolare:

  • La crittografia asimmetrica consente a chiunque di crittografare i messaggi che solo un partecipante sarà in grado di decrittografare e consente a chiunque di verificare i messaggi che solo un partecipante può aver firmato.
  • La crittografia simmetrica è molto più veloce della crittografia asimmetrica. Davvero molto.

La sicurezza non è in realtà una preoccupazione nella scelta tra crittografia simmetrica e asimmetrica. La crittografia asimmetrica risolve i problemi che la crittografia simmetrica non può; per tutto il resto, viene utilizzata la crittografia simmetrica, perché è molto più veloce.

(Come conseguenza della maggiore rapidità, la crittografia simmetrica tende ad avere un margine di sicurezza più elevato: le dimensioni delle chiavi comuni - AES a 128 bit - sono abbastanza grandi da escludere una scoperta matematica completamente nuova, tutti i computer attualmente esistenti sulla terra funzionano a lungo dato che l'universo è esistito avrebbe solo una minima possibilità di violare la crittografia. La crittografia asimmetrica corre su margini più piccoli a causa delle sue scarse prestazioni e ci sono occasionali miglioramenti matematici nei metodi di cracking che rendono ok le dimensioni delle chiavi comunemente usate per alcuni anni ma non necessariamente per alcuni decenni. Ma questa è una preoccupazione secondaria rispetto alle alternative di capacità/prestazioni.)

I sistemi crittografici ibridi risolvono il dilemma usando la crittografia asimmetrica solo dove è necessario:

  • Per verificare la firma di un messaggio, il messaggio è hash e la crittografia asimmetrica viene utilizzata solo nell'hash, non direttamente nel messaggio di lunghezza variabile.
  • Per crittografare alcuni dati, viene generato un simmetrico chiave di sessione . La crittografia asimmetrica viene utilizzata per condividere questa chiave simmetrica tra i partecipanti (client e server). I dati "reali" vengono crittografati e autenticato utilizzando questa chiave simmetrica.

In HTTPS, come viene comunemente utilizzato sul Web, il server ha una chiave pubblica, ma il client non lo fa: qualsiasi browser può contattare il server, al server non importa chi sia il client. ( I certificati lato client vengono utilizzati laddove ha senso .) Una visione di altissimo livello e incompleta dell'istituzione di una sessione HTTPS è:

  1. Il server invia il suo certificato al client. Il certificato contiene la chiave pubblica del server e una firma di quella chiave pubblica da un autorità di certificazione . Il client verifica che l'autorità di certificazione sia nota (i browser vengono forniti con un elenco di chiavi pubbliche delle autorità di certificazione).
  2. Il client e il server si accordano per scegliere una chiave simmetrica, in modo tale che un attaccante non sarà in grado di ricostruire la chiave semplicemente ispezionando il traffico o anche modificandolo (o almeno verrà rilevato un attaccante attivo e il client o il server interromperà quindi la sessione). A Scambio di chiavi Diffie-Hellman più una firma del server (per consentire al client di verificare che lo scambio sia stato condotto con il server e non con un attaccante man-in-the-middle) è una possibilità per generare la chiave simmetrica. È anche possibile fare affidamento esclusivamente sulla chiave privata del server (a spese di non assicurare inoltra il segreto ).
  3. Tutte le comunicazioni successive usano quella chiave simmetrica.

Nota che ho fatto molte semplificazioni sopra. Per maggiori dettagli, leggi: