For å beregne autentiseringsmerket i Galois / Counter-modus (GCM), beregnes først en MAC ved hjelp av GHASH over krypteringen tekst og tilleggsdata. Etter det blir denne MAC kryptert med GCTR (ved hjelp av den første telleren).

Spørsmålet mitt er: Hvorfor er dette siste krypteringstrinnet nødvendig? Hva ville sikkerhetsproblemet være hvis jeg bare brukte utdata fra GHASH direkte som godkjenningskode?

Svar

Hva ville sikkerhetsproblemet være, hvis jeg bare brukte utdataene fra GHASH direkte som godkjenningsmerke?

Så kan noen som lytter til krypterte meldinger gjenopprette $ H $ , hvorav den ene er riktig.

Utdata fra GHASH er et offentlig polynom (basert på ciphertext og AAD), evaluert til en hemmelig verdi $ H $ . Det viser seg at, gitt et slikt polynom, kan $ H $ effektivt gjenopprettes, enten ved å skrive om polynomet til $ \ mathrm {GHASH} (H) + \ mathrm {Tag} = 0 $ , og gjenopprette røttene til det (som kan gjøres i et endelig felt), eller enda enklere, å få to slike krypteringstekster, omskrive begge dem, og bruk en utvidet euklidisk verdi for å gjenopprette den vanlige roten.

Gitt $ H $ , kan en angriper trivielt gjøre vilkårlige endringer i krypterte meldinger ; ja, det er dårlig.

Kommentarer

  • Ytterligere et spørsmål: Hvorfor er det nødvendig å bruke GCTR for å kryptere GHASH-blokken i stedet for bare å bruke $ Enc_H (GHASH) $ som tag? På den måten kan GMAC brukes uten behov for IV.
  • @mat: du mener å sende $ GHASH $ gjennom AES (bruker $ H $ som nøkkel Vel, faktisk ville den slags ting fungere (vel, jeg ville ikke ' ikke bruke $ H $ som en nøkkel, men annet enn det …) og ville være en mer konservativ design; GCM var imidlertid opprinnelig designet for å være en rørlinjemodus; det vil si at den kunne implementeres gitt en AES-maskinvareimplementering der hver klokkesyklus gir vi neste klartekstblokk til maskinvaren, og hver klokkesyklus, ciphertext fra 10-14 sykluser siden dukker opp. Ved å gjøre en kryptering på GHASH blokkerer vi ' rørledningen …
  • Jeg mener bare en enkel ECB-kryptering (med enten $ H $ eller $ K $ som nøkkel) av GHASH i stedet for å gjøre det med GCTR. Det w ville ha fordelen at GMAC ville være enklere å bruke, fordi det ikke ville ' ikke trenger et nonce lenger. Rørledningen er ikke noe problem her, siden kryptering av koden er det aller siste trinnet i GCM uansett, så rørledningen er definitivt tom på dette stadiet.
  • @ David 天宇 Wong: for det meste ytelse ( GHASH er parallelliserbar, hash med nøkkel ikke er vanligvis ' t)
  • @David ong Wong: å, rett, det også …

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *