Jag försöker lära mig mer om GCM-läge och hur det skiljer sig mellan CBC. Jag vet redan att GCM tillhandahåller en MAC som används för meddelandeautentisering. Enligt vad jag har läst och från kodutdrag som jag har sett gör GCM ett exklusivt eller ungefär som CBC, men jag är inte säker på vad det exklusiva-eller är emot. I CBC-läge är exklusiv-eller klartext mot det föregående ciphertext-blocket, förutom det första blocket som använder en slumpmässig IV. Gör GCM detsamma, eller gör det exklusivt eller mot något annat? Om så är fallet, kan någon snälla förklara hur GCM använder IV och hur exklusiv-eller görs.
Kommentarer
- Om du bortser från autentisering, GCM beter sig som CTR-läge, inte som CBC-läge. Slå upp dem på wikipedia.
- Bara för att det inte är ' t definierat på den här sidan … GCM = Galois / Counter Mode och CBC = Cipher Block Chaining … andra definitioner inkluderar MAC (Message Authentication Code), IV (Initialisation Vector) och CTR (CounTeR Mode).
Svar
GCM- och CBC-lägen internt fungerar helt annorlunda; de involverar båda en blockkodning och en exklusiv-eller, men de använder dem på olika sätt.
I CBC-läge krypterar du ett datablock genom att ta det aktuella klartextblocket och exklusivt-oring som med föregående chiffertextblock (eller IV), och sedan skicka resultatet av det genom blockchiffran; utsignalen från blockchiffran är ciphertext-blocket.
GCM-läge ger både integritet (kryptering) och integritet. För att tillhandahålla kryptering håller GCM en räknare; för varje datablock sänder det aktuella värdet på räknaren genom blockchiffran. Sedan tar det utdata från blockchiffrering, och exklusivt eller ”s som med klartext för att bilda ciphertext.
Observera två viktiga skillnader:
-
Vad som är exklusivt eller redigerat; i CBC-läge är klartext exklusivt eller ed med data som angriparen känner till (IV eller ett tidigare ciphertext-block); därför ger det i sig inte någon inneboende säkerhet (istället gör vi det för att minimera chansen att vi skickar samma block två gånger genom blockkodningen). I GCM-läge är klartext exklusiv eller ”redigerad med utdata från blockkodningen. Det är inneboende i säkerhetsmodellen att angriparen inte kan gissa den utdata (såvida han inte redan känner till klartext och ciffertext).
-
Vad skickas genom blockkodningen; i CBC-läge skickas klartext genom blockchiffran (efter att den har ”randomiserats” med en exklusiv-eller); i GCM-läge beror det egentligen inte på vilken data som skickas genom blockchifferen krypterad, men istället bara i internt tillstånd.
När det gäller hur GCM använder en IV (personligen anser jag att ”nonce” är en bättre term för vad GCM använder, eftersom det uttrycker tänker att med GCM kan du inte använda samma nonce för samma tangent två gånger), det används för att initialisera räknaren.
Kommentarer
- Mycket intressant … Om jag förstår rätt, säger du att i GCM-läge är ciphertext för ett block exklusivt – eller ' ed mot den klartext som just sattes genom chifferet och det blocket skickas sedan. Om detta är sant, hur dekrypteras det blocket? Krävs inte ' krypteringstexten från AES (till exempel) kryptering för att dekryptera data? erhålls det också, om o riginal krypterad text erhålls, då kan den användas för exklusiv-eller den skickade ciphertext som skulle returnera klartext och inte behöver ytterligare dekryptering … Jag ' saknar jag något .. .
- Nej, i GCM tar vi en räknare, skickar den genom blockkodningen och sedan exklusiv – eller den med klartext för att bilda ciphertext. På dekrypteringssidan upprätthåller vi samma räknare, skickar det genom blockkodningen och sedan exklusivt – eller det med krypteringstext för att bilda klartext.
- @poncho Så i GCM behöver vi inte ”Dekryptering” del av blockkrypteringen? Eftersom vi använder ”kryptering” på båda sidor.
- Om du använder samma nonce två gånger med samma nyckel, öppnar du dig själv för … vilken attack?
- @RobertSiemer: två attacker: a) angriparen får en betydande mängd information om de två meddelandena krypterade med samma nonce (möjligen tillräckligt för att härleda båda innehållen), och b) attacken får information som gör att han kan ändra meddelanden utan att detekteras