Encrypt and Data Integrity: h = CRC-8 (m) ec = Encrypt (k, m) quindi invia (h, c) su un canale. Sicuro? [chiuso]

0
m := plaintext message
c := Encrypt(k,m) (AES-128 in counter mode)
k := Key (16 Byte)
h1 := CRC-8/16/32(m)
h2 := CRC-8/16/32(c)

1. Se invio (h1, c) su un canale, è sicuro?

Un CRC-8/16/32 è dipendente dalla linearità, e lo costruiamo sopra il testo in chiaro quindi suppongo di poter ottenere in qualche modo alcune informazioni su m o k avendo solo c e h, giusto?

2. Se invio (h2, c) su un canale, è sicuro?

Questo non può essere migliore, perché se così fosse davvero facile, l'uomo nel mezzo potrebbe semplicemente creare una coppia valida (h2, c), mentre se inviamo (h1, c) ha bisogno di conoscere il testo in chiaro per calcolare un CRC valido?

Domanda

Se esiste un sistema, come i due sopra menzionati, come può un uomo-in-the-the-middle attaccare il sistema? Alcuni esempi e / o matematica sono apprezzati!

So che non è possibile utilizzare un CRC per l'autenticazione in un sistema reale, si tratta di una domanda teorica. Ci sono persone là fuori che usano CRC invece di MAC reale. Voglio solo capire i rischi della (cattiva) soluzione CRC. (in dettaglio con la matematica)

    
posta Werner W. 06.04.2018 - 05:56
fonte

1 risposta

2

Entrambi i tuoi schemi sono difettosi, e questo non è dovuto a CRC. Se sostituisci il CRC con una funzione di hash crittografica, i tuoi schemi non sono ancora sicuri.

  1. hash (m) + Encrypt (m, k)
    Uno è lo scopo della crittografia è quello di garantire la riservatezza del messaggio in chiaro. Un messaggio può essere rivelato solo rompendo la chiave a 128 bit. Al contrario, l'hash è indipendente dalla chiave. Se il numero di possibili testi in chiaro è limitato, un utente malintenzionato può facilmente forzare il testo in chiaro.

    Poiché la funzione hash non accetta la chiave come input e AES è protetto contro gli attacchi in testo normale, non è possibile ottenere alcuna informazione sulla chiave dall'hash.

  2. hash (Encrypt (m, k)) + Encrypt (m, k) La funzione di hash qui non garantisce l'autenticità del testo cifrato, perché chiunque può calcolare l'hash. A differenza dello schema precedente, questo hash non riduce la sicurezza della crittografia.

Se il tuo obiettivo è l'autenticità, modifica il secondo schema usando HMAC anziché CRC. Oppure non utilizzare un MAC separato e utilizzare AES in modalità GCM anziché CTR.

    
risposta data 06.04.2018 - 11:37
fonte

Leggi altre domande sui tag