Perché hai bisogno dell'autenticazione dei messaggi oltre alla crittografia?

14

Ho letto Crittografia autenticata con dati associati . Gli stati RFC collegati:

Authenticated encryption is a form of encryption that, in addition to providing confidentiality for the plaintext that is encrypted, provides a way to check its integrity and authenticity.

La mia comprensione è che semplicemente la crittografia dei dati, anche utilizzando una chiave simmetrica condivisa, con qualcosa come AES o 3DES dovrebbe essere sufficiente per verificare che i dati non siano stati manomessi durante il transito. Se lo fosse stato, il messaggio semplicemente non avrebbe decifrato.

Quindi, perché è necessaria un'autenticazione separata? In quale situazione avresti bisogno di avere un'autenticazione separata (anche usando l'HMAC semplice con crittografia)?

    
posta Jonathan 01.04.2013 - 15:04
fonte

4 risposte

22

Crittografia NON protegge automaticamente i dati da modifiche.

Per esempio, diciamo che abbiamo un codice di flusso che è semplicemente un PRNG (generatore di numeri casuali), dove la chiave è il seme. La crittografia funziona generando numeri casuali in sequenza (il keystream) ed escludendoli, oppure eseguendoli con il testo in chiaro. Se un utente malintenzionato conosce alcuni byte di testo in chiaro e in chiaro in un punto particolare, può crearli insieme per ripristinare il flusso di chiavi per quei byte. Da lì, può semplicemente scegliere alcuni nuovi byte di testo in chiaro e condividerli con il keystream.

Spesso l'attaccante non deve conoscere il testo in chiaro per ottenere qualcosa. Facciamo un esempio in cui un utente malintenzionato ha semplicemente bisogno di corrompere un particolare campo nei dati interni di un pacchetto. Non sa quale sia il suo valore, ma non ne ha bisogno. Semplicemente sostituendo quei byte di testo cifrato con numeri casuali, ha cambiato il testo in chiaro.

Questo è particolarmente interessante nei cifrari a blocchi in cui viene usato il padding, in quanto ci apre fino a riempire gli attacchi di oracle . Questi attacchi implicano la modifica del testo cifrato in un modo che altera la stringa di riempimento e osservando il risultato. Altri attacchi come BEAST e Lucky Thirteen Attack comporta la modifica del testo cifrato in modo simile. Questi tendono a fare affidamento sul fatto che alcune implementazioni decifrano ciecamente i dati prima di eseguire qualsiasi tipo di controllo di integrità.

Inoltre, potrebbe essere possibile inviare nuovamente un pacchetto crittografato, che potrebbe causare un comportamento sul client o sul server. Un esempio di questo potrebbe essere un comando per commutare lo stato abilitato del firewall. Questo è chiamato un attacco di replay e la crittografia da sola non proteggerà contro di essa. In effetti, spesso i controlli di integrità non risolvono questo problema.

Esistono, infatti, tre proprietà primarie che sono auspicabili in uno schema di comunicazione sicuro:

  • Riservatezza - La possibilità di impedire agli intercettatori di scoprire il messaggio in chiaro o le informazioni sul messaggio in chiaro (ad esempio, il peso di hamming).
  • Integrità : la possibilità di impedire a un utente malintenzionato attivo di modificare il messaggio senza che gli utenti legittimi se ne accorgano. Questo di solito viene fornito tramite un Message Integrity Code (MIC).
  • Autenticità : la capacità di dimostrare che un messaggio è stato generato da una particolare parte e impedire la falsificazione di nuovi messaggi. Questo di solito viene fornito tramite un Message Authentication Code (MAC). Nota che l'autenticità implica automaticamente l'integrità.

Il fatto che MAC e MIC possano essere forniti da un singolo schema di hash HMAC opportunamente scelto (talvolta chiamato MAIC) in alcune circostanze è del tutto incidentale. La differenza semantica tra integrità e autenticità è reale, in quanto è possibile avere integrità senza autenticità e un tale sistema può ancora presentare problemi.

La vera distinzione tra integrità e autenticità è difficile da definire, come mi ha fatto notare Thomas Pornin in chat:

There's a tricky definition point there. Integrity is that you get the "right data", but according to what notion of "right" ? How comes the data from the attacker is not "right" ? If you answer "because that's from the attacker, not from the right client" then you are doing authentication...

È un po 'un'area grigia, ma in entrambi i casi siamo tutti d'accordo sul fatto che l'autenticazione è importante.

Un'alternativa all'utilizzo di un MAC / MIC separato consiste nell'usare una modalità di cifratura a blocchi autenticata, come Gallois / Counter Mode ( GCM) o modalità EAX .

    
risposta data 01.04.2013 - 21:46
fonte
0

La crittografia assicura che i dati non possano essere letti o manomessi. L'autenticazione ti assicura di sapere da dove provengono i dati.

Una visione più pratica: la mia banca utilizza un collegamento crittografato (https) tra il mio browser web e il suo server web, ma senza l'autenticazione non mi consente di vedere ciò che non è presente nel mio conto bancario.

    
risposta data 01.04.2013 - 15:45
fonte
0

L'aggiunta dell'autenticazione impedirebbe a un utente non autorizzato di inviare dati crittografati con la chiave condivisa simmetrica (rubata), aggiungendo fondamentalmente un ulteriore segreto al mix.

    
risposta data 01.04.2013 - 16:30
fonte
0

Per quanto ne so, AES e 3DES sono cifrari a blocchi usati insieme ad alcune modalità, come CTR, CBC e quelle modalità (da sole) sono semanticamente sicure solo negli avversari che possono solo origliare. Se l'avversario può manomettere i dati trasmessi, dobbiamo garantire l'integrità e non può essere garantito dalle costruzioni di cui sopra. Auth. la crittografia garantisce che l'avversario che può manomettere i dati, non sarà in grado di creare dati crittografati che decodifichi correttamente in testo normale valido. In altre parole, l'output di uno schema auth.encryption è un testo in chiaro valido o un simbolo che rappresenta un output non valido. Se ottieni il simbolo che rappresenta l'output non valido, sai che i dati sono stati modificati.

    
risposta data 01.04.2013 - 21:21
fonte

Leggi altre domande sui tag