Rebound attack är en teknik för kryptoanalys av kryptografiska hashfunktioner . Denna attack publicerades först av Florian Mendel, Christian Rechberger, Martin Schlaffer och Sören Thompson 2009. Den var avsedd att attackera AES -liknande algoritmer som Whirlpool och Grøstl , men visade sig senare vara tillämpbar på andra konstruktioner som Keccak , JH och Skein också .
Rebound Attack är en statistisk hashattack som använder roterande och differentiell kryptoanalys för att hitta funktionskollisioner och sårbarheter .
Huvudidén med attacken är att studera de differentiella egenskaperna hos ett blockchiffer (eller dess fragment), permutation eller andra kryptografiska algoritmer på låg nivå. Att hitta värden som uppfyller egenskaperna uppnås genom att dela upp den primitiva algoritmen i 3 delar: . - den inre fasen, och tillsammans utgör den yttre fasen. Angriparen väljer värden som deterministiskt implementerar en del av den externa fasens differentialegenskaper och kompletterar resten av egenskaperna i en sannolikhetsform.
Rebound attack inkluderar 2 steg:
Fördelen med att använda en ingångs- och två utgångsfaser av algoritmen är möjligheten att beräkna komplexa differentialegenskaper mer effektivt och exakt. Denna metod är effektivare än vanliga differentialmetoder.
Överväg hashfunktioner som använder AES- liknande substitutions- och permutationsblockchiffer som komprimeringsfunktioner . Denna komprimeringsfunktion består av ett antal omgångar av S-boxar och linjära transformationer. Huvudidén med attacken är att bygga en differentialkarakteristik, som har den mest komplexa beräkningsdelen i mitten. Denna del kommer att användas i den inre fasen, medan de mer lätträknade delarna av karaktäristiken kommer att vara i den yttre fasen. Ekvationssystemet som beskriver egenskaperna i den inre fasen måste vara underbestämd för att erhålla en uppsättning utgångspunkter i den yttre fasen. Eftersom de svårare delarna av karakteristiken finns i den inre fasen, använder den yttre fasen enkla funktioner för att beräkna differentialegenskaperna. I början har den interna fasen ett litet antal aktiva (icke-noll) bytes , mot mitten ökar deras antal avsevärt, och i slutet av fasen minskar det igen till ett litet antal. Huvudtanken är att få många aktiva bytes in och ut ur S-boxen mitt i fasen. Egenskaperna kan effektivt beräknas genom att använda skillnadsvärdena i början och slutet av fasen och matcha ingången och utsignalen från S-boxen.
I den externa fasen kontrolleras de matchade egenskaperna i framåt- och bakåtriktningen för att avgöra om de matchar de önskade differentialegenskaperna. Vanligtvis syftar det till att hitta effektiva värdepar av trunkerade algoritmer, eftersom det är här det har störst sannolikhet att lyckas. Möjligheten att hitta de önskade egenskaperna i den externa fasen beror direkt på antalet aktiva bytes och deras placering i egenskapen. För att uppnå kollision räcker det inte att ha skillnader av någon speciell typ; alla aktiva byte vid ingången och utgången av karaktäristiken måste ha ett värde som avbryter alla efterföljande operationer av algoritmen. Sålunda, vid design av en karakteristik, måste valfritt antal aktiva byte i början och slutet av den externa fasen vara i samma position. Att erhålla sådana bytevärden ökar sannolikheten för att erhålla yttre fasegenskaper.
I allmänhet är det nödvändigt att generera lika många inre fasegenskaper som för att erhålla mer än en förväntad uppsättning av yttre faskarakteristika. Dessutom finns det möjlighet att erhålla en nästan kollision, där vissa aktiva bytes i början och slutet av den externa fasen inte avbryter ytterligare åtgärder av algoritmen.
En returattack kan användas på Whirlpool- hashfunktionen för att hitta kollisioner i 4,5 eller 5,5 omgångar. Nästan-kollisioner kan hittas i 6,5 och 7,5 omgångar. Attacken på 4,5 omgångar beskrivs nedan.
Antal beslut | Frekvens |
---|---|
0 | 39655 |
2 | 20018 |
fyra | 5043 |
6 | 740 |
åtta | 79 |
256 | ett |
För att göra rebound-attacken mer effektiv beräknas S-box- differenstabellen innan attacken startar. Låt beteckna S-block. Sedan, för varje par, hittar vi lösningar (om några) på följande likhet
,
var är skillnaden vid ingången, och är skillnaden vid utgången av S-boxen. Denna 256x256 tabell låter dig hitta värden som uppfyller egenskaperna för alla möjliga par som passerar genom S-boxen. Tabellen till höger visar det möjliga antalet lösningar och sannolikheten för att de inträffar. Den första raden visar fallet med inga lösningar, den sista beskriver fallet med noll skillnad.
För att hitta en Whirlpool- kollision över 4,5 omgångar måste differentialegenskaperna i tabellen nedan beräknas. Funktionen med minst aktiva bytes är markerad med rött. Egenskapen kan beskrivas med antalet aktiva bytes i varje omgång, till exempel 1 → 8 → 64 → 8 → 1 → 1.
Syftet med den interna fasen är att slutföra de karakteristiska skillnaderna i steg 8 → 64 → 8. Detta kan göras i 3 steg:
Dessa steg kan upprepas med 264 olika ingångsvärden i steg 1, vilket resulterar i totalt 2128 värden som uppfyller den interna fasdifferentialkarakteristiken. Varje uppsättning av 2 64 värden kan hittas med en komplexitet på 2 8 omgångar av transformationer på grund av förberäkningssteget.
Extern fasDen yttre fasen kompletterar dessa egenskaper på ett probabilistiskt sätt. Den använder trunkerade differentialer i motsats till intern fas. Varje referenspunkt räknas framåt och bakåt. För att få de ursprungliga egenskaperna måste 8 aktiva byte bilda 1 aktiv byte i båda riktningarna. Att konvertera 8 byte till 1 sker med en sannolikhet på 2 −56 , [1] , så att få egenskaper har en chans på 2 −112 . För att entydigt få en kollision är det nödvändigt att byten vid ingången och utgången blockerar alla efterföljande operationer. Detta sker med en sannolikhet på cirka 2−8 , i allmänhet är sannolikheten för framgång för den externa fasen 2–120 .
För att upptäcka en kollision måste minst 2 120 poäng genereras i den interna fasen. Därefter kan upptäcktsoperationen utföras med en tidskomplexitet på 1 per startpunkt, [2] därför är den slutliga tidskomplexiteten för attacken 2 120 .
En grundläggande attack på 4,5 omgångar kan uppgraderas till en attack på 5,5 omgångar genom att lägga till ytterligare en omgång till insidans fas. Detta kommer att öka tidskomplexiteten för algoritmen till 2184 . [3]
Att förbättra den yttre fasen för att börja och sluta med 8 aktiva byte resulterade i en nästan kollision av 52 Whirlpool -byte , vilket utökade attacken till 7,5 omgångar med en tidskomplexitet på 2192 . [3]
Förutsatt att angriparen har kontroll över värdet på kedjan och därmed inträde i Whirlpool-nyckelgrafen, kan attacken utökas till 9,5 omgångar med en villkorligt fri kollision på 52 byte med en tidskomplexitet på 2 128 . [fyra]