Informazioni sulle crittografie nella lista nera per HTTP2

3

Ho lavorato per ottenere supporto HTTP2 in esecuzione su un server Nginx da un po 'di tempo. A questo punto sono bloccato a selezionare le cifre da supportare. Spero che tu possa aiutarmi a capire questo.

Prima di iniziare a far funzionare HTTP2, ho reso un hobby ottenere i migliori punteggi possibili in SSLlabs pur mantenendo il supporto per la maggior parte dei browser. Pertanto, ho supportato solo crittografie a 256 bit e non ho elencato alcun codice a 128 bit.

Da quando ho attivato HTTP2, ho perso il supporto per Firefox su Windows (e probabilmente anche su altri browser / piattaforme). Nota che sto bene avendo perso il supporto per Java, XP e Android 2.3 in base alle simulazioni del browser SSLlabs, in quanto si tratta di un server privato.

Secondo SSLlabs, le versioni 45 e 46 di Firefox su Windows non riescono a connettersi al server. Il messaggio visualizzato è: Server negoziato HTTP / 2 con la suite nella blacklist. Secondo i risultati, queste versioni di Firefox avranno selezionato il cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA . Una rapida ricerca mi ha portato a questo argomento su ServerFault che ha spiegato che RFC specifica una lista nera di cifre.

Questa è la lista di cifratura che avevo configurato:

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:kEDH+AESGCM:CAMELLIA256:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK:!CAMELLIA+RSA:!AES128:@STRENGTH;

Sono portato a credere che TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA sia più strong di TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (che è usato da Firefox nella mia attuale configurazione), poiché ha una maggiore preferenza per Nginx se aggiungo @STRENGTH alla direttiva ssl_ciphers. Tuttavia, il primo è elencato nella lista nera e il secondo non lo è.

Sono consapevole che ci sono già alcuni argomenti qui su quali cifrari dovrebbero essere scelti per ottenere il miglior supporto. Tuttavia, con questo post sto cercando di capire meglio perché alcune delle suite di cifratura elencate sopra sono in blacklist e non ci sono molti codici a 128 bit.

    
posta Evy Bongers 12.06.2016 - 00:19
fonte

2 risposte

4

Come l'appendice rfc4880 che hai collegato a dice

  Note: This list was assembled from the set of registered TLS
  cipher suites at the time of writing.  This list includes those
  cipher suites that do not offer an ephemeral key exchange and
  those that are based on the TLS null, stream, or block cipher type
  (as defined in Section 6.2.3 of [TLS12]).  Additional cipher
  suites with these properties could be defined; these would not be
  explicitly prohibited.

Le suite di streaming sono nella lista nera perché l'unico codice di flusso usato in TLS è RC4 e gli attacchi contro RC4 sono praticamente esplosi negli ultimi anni; vedi rfc 7465 .

Le suite CBC sono nella lista nera perché ora è riconosciuta TLS-nee-SSL l'uso di MAC-then-encrypt è stata una scelta sbagliata (anche se prima del primo chiaro riconoscimento di questo, Bellare & Namprempre in Asiacrypt 2000) in parte perché MTE combinato con CBC (che richiede il riempimento) in un protocollo online consente attacchi di padding-oracle come POODLE e Lucky13. POODLE interrompe gravemente SSL3, ma SSL3 era già ufficialmente obsoleto e POODLE alla fine ha motivato le persone a eliminarlo. Lucky13 richiede tempi precisi e non è molto pratico ora, ma mostra un approccio che potrebbe migliorare. (L'uso di SSL e TLS1.0 di IV esposto per CBC ha consentito anche BEAST, ma quella parte è stata risolta in 1.1 e 1.2.)

I numeri nulli sono in lista nera perché, beh, la loro indesiderabilità dovrebbe essere ovvia.

Questo lascia solo suite AEAD, e in pratica solo GCM, almeno per ora. Si noti che AEAD richiede TLS1.2, che non è ancora implementato universalmente, pertanto test generici come SSLLab accettano ancora le modalità CBC per consentire server e / o client che utilizzano 1.1 e 1.0 (ma non SSL3 come sopra). Chrome ha usato per descrivere qualsiasi cosa diversa dalla versione 1.2 con AEAD e lo scambio di chiavi effimero come "crittografia obsoleta", e security.SX ne ha parecchi Qs, ma su retest (51.0.2704.84) sembra essersi fermato. HTTP / 2, che arriva dopo che TLS1.2 e AEAD "dovrebbero" essere già presenti, possono essere ragionevolmente più impegnativi.

A meno che non diventiamo dei computer quantistici pratici - molto grandi se la gente non è preoccupata - la differenza di forza tra AES-128 e AES-256 è priva di significato . È la differenza tra "indissolubile nella nostra galassia, ma potrebbe essere spezzata da qualcuno che controlla l'intero universo per miliardi di anni" e "indistruttibile persino nell'intero universo". Non importa quanto sia perversa la tua collezione di video di gatti, non ti importa se viene decifrato dopo che sei morto da tempo, tutti i tuoi discendenti sono morti, tutti gli esseri umani sono morti, e il nostro pianeta e il nostro sistema solare non esistono più.

(Sebbene abbia fornito tutte le altre funzionalità multimediali aggiunte in HTTP / 2, sono deluso dal fatto che non aggiungono alcuna possibilità di vietare o almeno limitare seriamente e degradare i video di gatto. Beh, c'è sempre X-.)

    
risposta data 13.06.2016 - 08:28
fonte
1

Gli algoritmi di crittografia hanno lo scopo di oscurare l'input originale dall'output senza la conoscenza della chiave. Idealmente, la modifica di qualsiasi bit nella chiave dovrebbe comportare la modifica di diversi bit nell'output e dovrebbe avvenire in un modello apparentemente imprevedibile. Gli algoritmi della lista nera sono stati sottoposti ad un'attenta analisi e sono risultati privi di questa caratteristica per un numero significativo di bit chiave. Questo è il motivo per cui vedrai spesso una "forza bit efficace" per un dato algoritmo, ed è solitamente più piccola dei bit della chiave (perché molti algoritmi invariabilmente perdono alcuni bit). In altre parole, più appare casuale l'output, più è efficace.

Ad esempio, una chiave a 256 bit in un determinato algoritmo potrebbe fornire solo 56 bit di sicurezza, mentre una chiave a 128 bit in un altro algoritmo potrebbe fornire 96 bit di sicurezza. Quando è suddiviso in questo modo, è facile vedere che la chiave a 128 bit è superiore alla chiave a 256 bit, nonostante sia la metà delle dimensioni, e quindi 2 128 volte più piccole in termini di valori possibili. Questo è uno dei motivi per cui "xor encryption" è considerato debole: puoi facilmente applicare una funzione all'output e indovinare la chiave e input, a meno che non siano soddisfatte determinate condizioni.

La ragione per cui le liste nere di HTTP / 2 certi algoritmi è di iniziare con una solida base di cifrari che sarà fattibile per il prossimo futuro. Non è possibile elencare continuamente gli algoritmi e aspettarsi che tutti i server e i client siano in linea con l'elenco in tempo reale. Pertanto, respingendo quei cifrari già spezzati o in pericolo di rottura nel prossimo futuro, ha più tempo a gestire la crescita esponenziale dell'informatica.

    
risposta data 12.06.2016 - 10:47
fonte

Leggi altre domande sui tag