Esistono differenze funzionali nelle implementazioni di OpenSSL, GnuTLS, TLS di Java e TLS di .NET?

5

Domanda

  • Esistono differenze funzionali (o rilevabili) tra le varie implementazioni di SSL / TLS? Quali sono le differenze tra loro? (ad esempio, quelli che implementano "False Start")

  • Sarebbe una preoccupazione che qualcuno possa rilevare il codice SSL sottostante utilizzato in base alla risposta TLS?

Sfondo

Chiedo perché è possibile che uno qualsiasi dei seguenti stack SSL incorpori funzionalità discutibili (come false start ), o potrebbero avere bug specifici per l'implementazione,

  • OpenSSL è scritto in C, usato in Apache
  • GnuTLS sono scritti in C
  • Implementazione SSL di Sun (principalmente scritta in Java)
  • Non sono sicuro che Microsoft TLS utilizzi Win32 sotto il cofano o se utilizzi il codice gestito.
posta random65537 30.11.2012 - 21:26
fonte

1 risposta

6

C'è molta variabilità in SSL / TLS ; ad esempio, quando i dati devono essere inviati, vengono suddivisi su uno o più record e l'implementazione è libera di scegliere la dimensione di ciascun record come meglio crede (entro i vincoli di dimensione standard). Le implementazioni moderne, in particolare, tendono a creare pochi record molto brevi (con 0 o 1 byte di dati dell'applicazione) come protezione contro l'attacco BEAST. Inoltre, ogni implementazione supporta solo un sottoinsieme delle centinaia di possibili suite di crittografia. La linea di fondo è che è possibile distinguere le implementazioni l'una dall'altra (non conosco uno strumento facilmente disponibile che lo faccia, ma non sembra molto difficile da fare).

Perdere quale implementazione viene utilizzata non è un grosso problema da solo (anche se tende a rendere le persone nervose). Ad ogni modo, se il server SSL viene utilizzato all'interno di un server Web, l'identificazione del server Web fornisce già indizi definitivi sull'implementazione SSL (se il server è IIS, il codice SSL sarà quello di Microsoft ...). Inoltre, non ci sono così tante implementazioni SSL / TLS là fuori; l'attaccante non ha bisogno di guess che viene usato, deve solo provare tutte le gesta che conosce fino a quando non funziona.

Se usi un'implementazione che ha "caratteristiche discutibili", il problema non è che l'autore dell'attacco possa sapere o indovinare che usi questa implementazione - il problema è che usi un'implementazione con funzionalità discutibili.

    
risposta data 30.11.2012 - 21:54
fonte

Leggi altre domande sui tag