Sikkerhet for AES-modmodus vs CBC-modus

Evgeni Vaknin 09/05/2017. 1 answers, 401 views
aes cbc ctr nonce

For AES-CBC å være CPA sikker, må IV som brukes slumpvis velges for hver pakke. Hvis IV er forutsigbar enn kryptering, er ikke CPA sikker. Er det samme sant for AES-CTR-modus? det vil si for AES-CTR-modus må den første telleren være tilfeldig eller det kan være en nonce? Takk

1 Answers


Patrick K 07/31/2017.

Kravet for AES-CTR-inngangsblokkene er at de skal være unique løpet av en nøkkel. I de fleste tilfeller brukes en tilfeldig 96bit nonce med en 32bit-teller som starter fra 0. Hvis samme inngangsblokk for AES-CTR forekommer to ganger, er AES-CTR ikke lenger CPA-sikker. I dette tilfellet kan dette skyldes en overflyt etter $ 2 ^ {32} $ blokker eller på grunn av å kollidere tilfeldig valgte 96bit nonces (bursdag paradoks: 50% sjanse etter $ \ sqrt {2 ^ {96}} $ meldinger. Tenk på følgende tilfelle:

To forskjellige 1-blokksmeldinger $ P $ og $ P '$ sendes under samme nøkkel $ K $ (som kan forhandles på forhånd) og med samme $ N $. Angriperen vet at de tilhørende kryptertekstene $ C $ og $ C '$ der beregnes av XORing dem med nøkkelstrømmen (som er basert på nonce og telleren):

$ C = P \ oplus E_K (N, 0) $

$ C '= P' \ oplus E_K (N, 0) $

Deretter kan angriperen helt enkelt skille ut kodene

$ C \ opplus C '= P \ u00e5 E_K (N, 0) \ u

og han får "avstanden" mellom de to enkle teksten. På grunn av redundans på engelsk, kan han kanskje bestemme $ P $ og $ P '$.

Dette problemet er også kjent som "to-times-pad". Når samme nøkkelstrøm er XORed med ren tekst, kommer vi inn i problemer. Derfor er det viktig at inngangen til AES-kryptering er unik i løpet av en nøkkel. Det trenger ikke å være uforutsigbar, bare unik.

5 comments
Evgeni Vaknin 07/31/2017
av setningen "2 ^ 32 meldinger" Jeg mener du mener 2 ^ 32 blokker med 16 byte hver i AES? I så fall er 2 ^ 32 * 128 biter 2 ^ 32 * 128 biter, som ligger i 10 Gbps, ca. 1 minutt ... så hvert 1 minutt må en nøkkelvekslingsalgoritme utføres for å sette opp en ny nøkkel og ikke ?
1 Patrick K 07/31/2017
Ja du har rett. Jeg har redigert svaret. Hvis du har en statisk nonce, vil du måtte gjøre en nøkkelutveksling hvert minutt i dette tilfellet. Men siden nonce er vanligvis endret med hver melding, er du begrenset til meldinger med en maksimal lengde på $ 2 ^ {32} \ cdot128 $ bits. Maksimalt antall meldinger som kan sendes under en gitt nøkkel, er begrenset av bursdagsparadosen. Hvis 96bit nonce er valgt jevnt tilfeldig for hver melding, er sannsynligheten for en nonce kollisjon $ \ ca 0,5q ^ 2/2 ^ {96} $ for q meldinger. Hvis du vil at denne termen skal være høyst 1%, vil din $ q_ {max} = 4 \ cdot10 ^ {13} $.
Evgeni Vaknin 07/31/2017
Hva skjer hvis jeg ikke bruker tilfeldig nonce, heller bruker jeg en tilfeldig verdi for nonce initial verdi og enn øker den hver pakke? For eksempel, la oss si at hver pakke inneholder mindre enn 256 AES-blokker (128 bit hver), og telleren for AES-CTR består av ikke-120 bits, som initialiseres tilfeldig når nøkkelen utveksles, og enn innenfor pakken 8 biter teller brukes til å telle 128 bitene blokkene. Og hver ny pakke, (fortsett i neste kommentar)
Evgeni Vaknin 07/31/2017
Jeg øker nonce med 1, og fjern 8 bit counter. I dette tilfellet er bursdagsparadosen ikke relevant, da kollisjonen er umulig (forutsatt at jeg erstatter nøkkelen før 120 bit-telleren i nonce-utløpet)
1 Patrick K 08/01/2017
Ja, hvis du på en eller annen måte sørger for at du aldri gjenbruker det samme (input-block, key) -paret for nøkkelstrømgenerasjonen, så er alt bra. (selvfølgelig forutsatt at nøkkelen holdes hemmelig og velges jevnt fra tilfeldig)

Related questions

Hot questions

Language

Popular Tags