MACSEC nonce / chiave unicità

0

802.1ae richiede l'invio di un nonce con ogni frame Ethernet nel tag MACSEC. Il nonce a 96 bit è costituito dalla concatenazione di un campo fisso a 64 bit (basato su indirizzo sorgente MAC e numero di porta) con un numero di pacchetto a 32 bit. Il numero del pacchetto viene incrementato per ogni frame. Quindi, i nonce per due frame successivi appartenenti alla stessa associazione sicura apparirebbero come segue:

Frame # 1 {MAC SA, Port Number, PN}

Frame # 2 {MAC SA, numero di porta, PN + 1}

Ora i frame sono criptati usando la modalità AES-GCM. Quindi ogni blocco di 128 bit in chiaro di ogni messaggio viene crittografato utilizzando un nonce univoco. Ad esempio:

Frame # 1, Block # 1 è crittografato usando {MAC SA, Port Number, PN}

Frame # 1, il blocco # 2 è crittografato usando {MAC SA, Port Number, PN + 1}

ecc ...

Frame # 2, Block # 1 è crittografato usando {MAC SA, Port Number, PN + 1}

Frame # 2, il blocco # 2 è crittografato usando {MAC SA, Port Number, PN + 2}

ecc ...

Quindi sembra che la stessa combinazione di nonce / chiave sia riutilizzata per diversi blocchi nei successivi frame ethernet.

Ma la modalità AES-CTR avvisa in modo specifico contro l'uso della stessa combinazione di nonce / chiave.

Cosa mi manca?

ringraziamento

    
posta user20831 15.02.2013 - 21:27
fonte

1 risposta

1

Se osservi la specifica GCM , vedrai a pagina 15 che quando l'IV ha una lunghezza esattamente di 96 bit, il contatore per la crittografia AES-CTR viene inizializzato su J 0 = IV || 0 31 || 1 , cioè il contatore a 128 bit viene creato aggiungendo 31 bit di valore 0, quindi un bit di valore 1. Gli incrementi successivi quando si esegue la crittografia CTR modificheranno i bit in questi 32 bit bassi. Quindi, non c'è sovrapposizione fino a quando nessun frame ethernet è più grande di quattro miliardi di blocchi, cioè 64 gigabyte ... e un frame ethernet è infatti molto più corto di quello.

Descrizione alternativa: se un frame utilizza IV x , allora il valore del contatore per quel frame inizia con il valore 2 32 x +1 e andrà su 2 32 x + 94 (per un frame Ethernet da 1500 byte, un po 'meno di 94 blocchi). Il prossimo frame userà IV x + 1 , per un contatore che inizia a 2 32 (x + 1) +1 = 2 32 x + 2 32 +1 , senza incorrere in sovrapposizioni.

Nota: questo significa che non sarebbe sicuro crittografare più di 64 gigabyte come una singola esecuzione con GCM. Questo è affermato esplicitamente nelle specifiche, pagina 8: la lunghezza del testo non deve superare i 2 39 -256 bit. Questo è più che sufficiente perché, per definizione , una modalità di crittografia autenticata ha lo scopo di fornire garanzie di integrità; quindi, ha senso quando i dati potrebbero essere modificati dall'attaccante; corrispondentemente, il destinatario dei dati non deve utilizzarlo fino a quando non ha verificato il MAC, che comporta il buffering dell'intero "pacchetto". Chi vuole bufferizzare gigabyte di 64 dati prima di poter iniziare l'elaborazione? Quando GCM viene utilizzato in TLS , la dimensione del buffer non supererà i 17 kilobyte; e, nel tuo caso, la dimensione massima sarà quella di un frame ethernet, che arriva a 9000 byte anche con frame jumbo .

    
risposta data 15.02.2013 - 21:51
fonte

Leggi altre domande sui tag