Panama (hashfunktion)

Panama [1]  är en kryptografisk primitiv som kan användas antingen som en kryptografisk hashfunktion eller som ett strömchiffer. Den utvecklades 1998 av Joan Dymen och Craig Klep för att förbättra effektiviteten i programvara för 32-bitars arkitekturer. Det är en av förfäderna till Keccak- hash-algoritmen , som blev vinnaren i tävlingen om kryptografiska primitiver från US National Institute of Standards and Technology [2] . Förlitar sig mycket på StepRightUp-strömningshashmodulen. [3]

Funktioner

Enligt utvecklarna hade "Panama" vid utvecklingstillfället en hög säkerhetsnivå, men detta uppnåddes till priset av en enorm beräkningsbelastning. Därför, som det visade sig, visade sig "Panama" som hashfunktion vara mindre lämplig för att hasha meddelanden än sina konkurrenter. Om vi ​​talar om "Panama" som ett strömchiffer, visade sig en lång initialiseringsprocedur vara ett utmärkande drag för dess användning. Därför, när du använder det i uppgifter som kräver höga hastigheter, är det nödvändigt att tillhandahålla alla villkor som kommer att syfta till att minska antalet avsynkroniseringar. [fyra]

Det antogs att "Panama" skulle användas för att kryptera eller dekryptera video för att komma åt vissa applikationer, i synnerhet "betal-TV". [5] Utvecklarnas logik var att set-top-boxar och digitala TV-apparater skulle använda höghastighetsprocessorer, och Panama skulle inte ladda dessa processorer för mycket under dekryptering.

Struktur

"Panama" är baserad på en finita tillståndsmaskin, bestående av två stora block: 544 tillståndsbitar och en 8192-bitars buffert, som arbetar enligt principen om ett återkopplingsskiftregister . Återkopplingen säkerställer att ingångsbitarna går igenom flera iterationer efter inmatningen, vilket i sin tur säkerställer bitvis diffusion. Jag måste säga att en liknande buffert används i SHA-komprimeringsfunktionen. [6] Panama arbetsobjekt är ett 32-bitars ord och tillståndet består av 17 sådana ord, medan bufferten har 32 celler, som var och en innehåller 8 sådana ord. [7]

Operationer

Panama kan uppdatera bufferten och tillstånden genom att iterera. Och för den iterativa funktionen är tre lägen implementerade: "Återställ", "Push" och "Pull". I "Push"-läge tar maskinen emot viss input men matar inte ut någonting. I "Pull"-läget, tvärtom, bildas utdata, men ingenting tas som indata. En "tom pull-iteration" betyder också att utdata från den iterationen kasseras. I "Reset"-läget återställs tillståndet och bufferten till noll. [åtta]

Tillståndsförändringen kännetecknas av hög diffusion och distribuerad icke-linjäritet. [9] Detta betyder att ett litet antal iterationer är tillräckligt för att uppnå god spridning. Detta görs med hjälp av 4 block, som var och en löser sin egen uppgift.

Om vi ​​betraktar "Panama" som en hashfunktion, är algoritmen för dess funktion som följer. Inledningsvis accepterar hashfunktionen alla block av meddelanden. Därefter utförs flera fler "Push" iterationer, vilket gör att de senast mottagna blocken av meddelanden kan spridas inuti bufferten och tillståndet. Därefter utförs den sista "Pull" iterationen, vilket gör att du kan få hashresultatet. Strömmande krypteringsschemat initieras enligt följande: först går två "Push" iterationer igenom för att erhålla nyckeln och diversifieringsparametern. Därefter sker ett antal "Pull"-iterationer för att sprida nyckeln och parametern inuti bufferten och tillstånden. Detta slutför initieringen och Panama är redo att skapa bitar av utdatasekvensen genom att utföra "Pull" iterationer. [3]

Hur det fungerar

Du kan beteckna tillståndet som , och de 17 orden som definierar tillstånd kan betecknas som . Bufferten betecknas som , den -th av dess cell - as , och ett av orden som ligger inuti denna cell - as . Inledningsvis är både tillståndet och bufferten fyllda med endast nollor. I "Push"-läget tar "Panama" emot ett 8-bitars ord som inmatning, i "Pull"-läget bildas ett 8-bitars ord som en utgång. [7]

Om vi ​​anger funktionen som uppdaterar bufferten som , då, om vi accepterar det , kan vi få följande regler för uppdatering av bufferten:

vid , , för

där det i "Push"-läget finns ett ingångsblock och i "Pull"-läget är det en del av tillståndet , dvs 8 av dess komponenter, definierade som

för

Tillståndet uppdateras enligt följande regel , som är en överlagring av 4 olika transformationer:

där  är en invers linjär transformation,  är återigen en invers linjär transformation,  är en kombination av ordbitrotation och ordpositionsblandning, och transformationen  är en bitvis addition av bufferten och inmatningsordet.

I det här fallet kommer det att bestämma summan av operationer, där den till höger utförs först.

Nu kan vi överväga var och en av dessa operationer. definieras enligt följande:

för ,

där alla index tas modulo . Observera att reversibiliteten för denna transformation följer av det faktum att den är coprime med .

kan definieras som:

för ,

där alla index tas modulo .

Om det för konverteringen fastställs att det finns en offset i positioner från den minst signifikanta biten till den mest signifikanta, då:

,

och , och

Om för omvandlingen kommer att utföras som , då

, för , för

I "Push"-läge är inmatningsmeddelandet och i "Pull"-läge - .

Utgångsordet i "Pull"-läge definieras enligt följande:

. [elva]

"Panama" som en hashfunktion

"Panama" som en hashfunktion mappar ett hashresultat på 256 bitar till ett meddelande av godtycklig längd. [11] I det här fallet sker hashing i två steg

Kan betecknas som en sekvens av ingångsblock . Sedan, vid tidpunkten noll, genereras återställningsläget, sedan, under cyklerna, laddas ingångsblocken. Därefter utförs 32 tomma "Pull" iterationer. Och sedan på den 33:e "Pull"-iterationen returneras hashresultatet .

Huvuduppgiften med att utveckla Panama-hashfunktionen var att hitta en "hermetisk" hashfunktion [11] , det vill säga en funktion för vilken (om hashresultatet består av bitar):

Dessutom är det inte möjligt att detektera systematiska korrelationer mellan någon linjär kombination av inmatningsbitar och någon linjär kombination av hashresultatbitar. [elva]

Hitta kollisioner

Denna hash-funktion har framgångsrikt attackerats två gånger. Redan 2001 visades det att denna hashfunktion inte är kryptografiskt säker, eftersom kollisioner för operationer hittades. Dessutom visade Joan Dymen att det är möjligt att hitta kollisioner redan för operationer, och för att uppfylla tillförlitlighetsparametrarna är det nödvändigt att kollisioner lokaliseras åtminstone för operationer. [12]

Anteckningar

  1. Snabb hashing och strömkryptering med Panama av Joan Daemen, Craig Clapp
  2. NIST utser vinnare av tävlingen Secure Hash Algorithm (SHA-3) . Tillträdesdatum: 5 november 2016. Arkiverad från originalet 5 oktober 2012.
  3. 1 2 J. Daemen, "Chiffer- och hashfunktionsdesignstrategier baserade på linjär och differentiell kryptoanalys"
  4. Snabb hashing och strömkryptering med Panama" Joan Daemen, Craig Clapp
  5. Arkiverad kopia (länk ej tillgänglig) . Hämtad 16 december 2016. Arkiverad från originalet 15 augusti 2011. 
  6. SHA1 version 1.0 . Hämtad 16 december 2016. Arkiverad från originalet 14 maj 2017.
  7. 12 Panama . _ Hämtad 4 november 2016. Arkiverad från originalet 26 december 2016.
  8. Panamas kryptografiska funktion | Dr Dobbs (inte tillgänglig länk) . Datum för åtkomst: 4 november 2016. Arkiverad från originalet 23 februari 2016. 
  9. * "Fast Hashing and Stream Encryption with Panama" av Joan Daemen, Craig Clapp
  10. PANAMA-kod | Krypteringsblogg . Hämtad 5 november 2016. Arkiverad från originalet 5 november 2016.
  11. 1 2 3 4 "Snabb hashing och strömkryptering med Panama" Joan Daemen, Craig Clapp
  12. Producerar kollisioner för Panama, omedelbart . Hämtad 13 november 2016. Arkiverad från originalet 10 oktober 2019.

Litteratur

Länkar