Cipher Block Chaining-modus
Cipher Block Chaining Mode ( CBC-modus ) is een bedrijfsmodus waarin blokcijfers kunnen worden gebruikt. Voordat een plaintext blok wordt gecodeerd , wordt het eerst gekoppeld aan het gecodeerde blok gegenereerd in de vorige stap met behulp van XOR (exclusieve). De modus werd in 1976 gepubliceerd door William F. Ehrsam, Carl HW Meyer, John L. Smith en Walter L. Tuchman.
Algemeen
De structuur van de codering in CBC-modus wordt weergegeven in de volgende afbeelding:
Dit diagram kan ook wiskundig worden uitgedrukt in formules, de coderingsfunctie aanduiden met de sleutel , de bijbehorende decoderingsfunctie. Wijs het i-de platte tekstblok, het i-de cijfertekstblok aan en wees de initialisatievector; meestal is het gedefinieerd. Geef bovendien de logische XOR aan. Vervolgens wordt de codering in CBC-modus als volgt recursief gedefinieerd:
De structuur van de decodering in CBC-modus wordt weergegeven in de volgende afbeelding:
De bijbehorende decodering is daarentegen niet recursief in CBC-modus en heeft dezelfde aanduidingen als hierboven:
Een tijdstempel of een willekeurige reeks getallen wordt gebruikt als de initialisatievector (IV) . Sommige applicaties gebruiken ook een voorspelbaar, eenvoudig oplopend getal, maar dit is niet zeker, omdat mensen buiten een ongewenste watermerkaanval ( watermerkaanval kan worden uitgevoerd) op dergelijke gegevens. De dm-crypt- module gebruikt het ESS- proces om de IV .
Voor de veiligheid van het algoritme is het niet nodig om de initialisatievector in het geheim te verzenden.
De CBC-modus heeft enkele belangrijke voordelen:
- Voorbeelden van platte tekst worden vernietigd.
- Identieke blokken met platte tekst resulteren in verschillende cijferteksten.
- Verschillende aanvallen (uitruil van tijdgeheugen en aanvallen met platte tekst) worden bemoeilijkt.
Omdat een cijfertekstblok alleen afhankelijk is van het vorige blok, veroorzaakt een beschadigd cijfertekstblok, zoals een bitfout tijdens de datatransmissie, niet al te veel schade tijdens het decoderen, omdat alleen het betreffende leesbare tekstblok en het volgende leesbare tekstblok verkeerd worden ontcijferd. Dit kan direct worden afgeleid uit de definitie van de decodering en de bovenstaande figuur, aangezien een beschadigd versleutelde blok alleen invloed op de leesbare tekst blokken en en niet verder te verspreiden. Niettemin kan deze beperkte vermenigvuldiging van slechts een enkele bitfout in de code met CBC het corrigeren van voorwaartse fouten van de platte tekst moeilijk of onmogelijk maken. Evenzo veroorzaakt een beschadigde initialisatievector niet al te veel schade tijdens het decoderen, aangezien het alleen het leesbare tekstblok beschadigt.
De CBC-modus is veel veiliger dan de ECB- modus, vooral als je geen willekeurige teksten hebt. Onze taal en andere bestanden, zoals. B. videobestanden zijn zeker niet willekeurig, daarom is de ECB-modus gevaarlijk.
voorbeeld
- Platte tekst
- 01 10
- Verdeeld in blokken
- 01 = , 10 =
- sleutel
- 11 = k
- Init.vector (IV)
- 01
Eenvoudigheidshalve wordt als coderingsfunctie , de binaire optelling en als decoderingsfunctie de binaire aftrekking gebruikt.
Versleuteling
Blok 1:
Blok 2:
Versleutelde tekst:
Als je naar de versleuteling van kijkt , zie je dat dit nodig is. In het algemeen betekent dit dat het coderingsblok vereist is voor codering . Een parallellisatie van het versleutelingsproces is daarom niet mogelijk.
Decodering
Blok 1:
Blok 2:
Platte tekst:
Als je naar de decodering van kijkt , kun je zien dat dit niet alleen hiervoor nodig is . In het algemeen betekent dit dat alleen nodig is voor decodering . Hierdoor kan het decoderingsproces parallel worden uitgevoerd.
Integriteitsborging met CBC, CBC-MAC
CBC kan ook worden gebruikt om de integriteit te waarborgen door de initialisatievector op nul te zetten en het laatste blok versleuteld met CBC als MAC (de zogenaamde CBC-MAC of CBC-restwaarde) toe te voegen aan het originele niet-versleutelde bericht en dit samen met dit bericht te verzenden. MAC. Met behulp van het CBC-algoritme kan de ontvanger de CBC-MAC van het ontvangen bericht berekenen en nu vergelijken of de zojuist berekende waarde overeenkomt met de waarde die aan het bericht is gekoppeld. Als een met CBC versleuteld bericht moet worden beveiligd met een CBC-MAC, mag voor het genereren van de CBC-MAC niet dezelfde sleutel worden gebruikt als voor de versleuteling. Als dezelfde sleutel zou worden gebruikt, zou het MAC-blok hetzelfde zijn als het laatste coderingsblok en kan een aanvaller het hele bericht ongemerkt wijzigen, met uitzondering van het laatste blok.
CBC-MAC is alleen beveiligd voor berichten met een vaste lengte. Als de berichtlengte varieert , kan de methode worden aangevallen door lengteverlenging . Een aanvaller kan een geldige MAC genereren voor een nieuw bericht (de aaneenschakeling van de twee berichten) uit twee geldige bericht-MAC-paren. Twee aanpassingen kunnen deze aanval voorkomen: elk bericht kan worden voorafgegaan door de berichtlengte of het MAC-blok wordt bovendien versleuteld met een tweede sleutel.
literatuur
- Reinhard Wobst: Adventure-cryptologie. Methoden, risico's en voordelen van gegevensversleuteling. 2e, herziene editie. Addison-Wesley Longman, Bonn et al.1998 , ISBN 3-8273-1413-5 .
Individueel bewijs
- ↑ William F. Ehrsam, Carl HW Meyer, John L. Smith, Walter L. Tuchman, "Berichtverificatie en transmissiefoutdetectie door block chaining", Amerikaans octrooi 4074066, 1976
- ↑ Mihir Bellare , Joe Kiliany, Phillip Rogaway: The Security of the Cipher Block Chaining Message Authentication Code . In: Journal of Computer and System Science . plakband 61 , nee. 3 , 2000, blz. 362-399 ( gedigitaliseerde versie ( PDF; 466 kB) ( herinnering van 5 februari 2012 in het internetarchief )). De beveiliging van de coderingsblokkering Berichtauthenticatiecode ( herinnering aan het origineel van 5 februari 2012 in het internetarchief ) Info: de archieflink is automatisch ingevoegd en is nog niet gecontroleerd. Controleer de originele link en de archieflink volgens de instructies en verwijder deze melding.