Crittografia SSL (per HTTP) e Sicurezza vs Prestazioni

6

Stavo controllando le prestazioni del server quando si utilizzavano vari certificati SSL. Specificamente 1024-bit vs 2048 vs 4096. Si scopre che fa una grande differenza!

Ultimamente ho sentito un sacco di chiacchiere sui venditori che emettono certificati 2048 al giorno d'oggi e si chiedevano quale fosse il consenso nella comunità.

La mia linea di pensiero è che per qualcosa come inviare i dati del modulo di contatto 1024 potrebbe essere ok, ma per le transazioni di e-comm e / o gli accessi 2048 sarebbe più appropriato. C'è un buon caso d'uso per 4096?

Quali sono le implicazioni dell'utilizzo di 1024-bit per le informazioni sensibili, c'è molto più rischio di un attacco?

Giusto per chiarire: mi sono imbattuto in questo problema quando eseguivo test delle prestazioni su un bilanciatore di carico AWS e la dimensione della chiave sì ha fatto una grande differenza, e sì, mi sono occupato di clienti che si aspettano molto traffico a raffiche, quindi è un preoccupazione legittima non solo ipotetica.

    
posta Drew Khoury 01.04.2013 - 14:51
fonte

1 risposta

11

Passare da 1024 bit a 2048 bit significa che le operazioni con la chiave privata asimmetrica richiedono circa 8 volte la CPU. Un core "normale per PC" può eseguire circa 1000 operazioni RSA a 1024 bit al secondo, fino a circa 125 al secondo per RSA a 2048 bit. Si noti che RSA viene utilizzato solo all'inizio della connessione SSL, non dopo; inoltre, in SSL, c'è un handshake abbreviato con il quale il client e il server riutilizzano lo scambio crittografico da un precedente handshake. I browser Web e i server Web lo fanno molto, quindi il costo di RSA in SSL è in realtà per nuovi clienti (ovvero i client che non si sono connessi dall'ultima volta in cui hanno chiuso e riaperto il browser). Richiede quindi un centinaio di nuovi client al secondo per visualizzare effettivamente i problemi di prestazioni relativi alle dimensioni della chiave sul server. Non tutti i server Web là fuori possono vantare un tale contesto.

Invito a fare misure in un contesto realistico realistico. Microbenchmarks ("quante decrittazioni al secondo?") Non sono sempre buoni predittori.

Per quanto riguarda la sicurezza, RSA a 1024 bit è, ancora, ininterrotto. L'attuale record di rottura è RSA-768 . Alcune persone intelligenti hanno provato ad equiparare la lunghezza della chiave RSA con la robustezza della chiave simmetrica; vedi questo sito per i dettagli. Il confronto non è perfetto perché la rottura di grandi chiavi RSA implica alcune operazioni che utilizzano un sacco di RAM molto veloce, al contrario della ricerca esauriente su una chiave simmetrica (un imbarazzante parallelo che non ha bisogno di RAM). Tuttavia, RSA a 1024 bit è in qualche modo equivalente a una chiave simmetrica da 77 a 80 bit. Questo non è abbastanza per il paranoico, ma ancora oltre a quello che è stato dimostrato essere infrangibile con la tecnologia attualmente implementata.

Il NIST consiglia l'uso di chiavi RSA a 2048 bit al momento (dal 2010). Se utilizzi una chiave RSA a 1024 bit, il tuo sito non sarà interrotto in quel modo (quando viene violato, lo sarà attraverso un altro canale rispetto alla crittoanalisi iniziale); tuttavia, i tuoi clienti potrebbero concepire l'idea che, usando una chiave poco alla moda, non ti prendi veramente cura di loro. Si tratta più di pubbliche relazioni che di sicurezza ...

Se hai davvero problemi di prestazioni con le chiavi RSA a 2048 bit (non ci credo, ma ciao, accadono cose strane), ti incoraggio a investigare le curve ellittiche. Una suite di crittografia ECDHE_ECDSA con la curva NIST P-256 sarà più veloce di RSA-1024 e strong come (probabilmente più strong di) RSA-2048.

    
risposta data 01.04.2013 - 15:13
fonte

Leggi altre domande sui tag