SEAL (kryptografisk algoritm)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 26 mars 2014; kontroller kräver 9 redigeringar .

SEAL ( S oftware  -optimized Encryption Algorithm , mjukvaruoptimerad krypteringsalgoritm) är en symmetrisk strömdatakrypteringsalgoritm optimerad för programimplementering .

Utvecklad på IBM 1993 av Phil Rogaway och Don Coppersmith . _  _ _ Algoritmen är optimerad och rekommenderas för 32-bitars processorer . Det kräver flera kilobyte cacheminne och åtta 32-bitars register för att fungera . Krypteringshastigheten  är cirka 4 maskincykler per byte text . En 160-bitars nyckel används för kodning och avkodning . För att undvika oönskad hastighetsförlust på grund av långsamma nyckelbearbetningsoperationer utför SEAL flera transformationer på den, vilket resulterar i tre tabeller av en viss storlek. Istället för själva nyckeln används dessa tabeller direkt för att kryptera och dekryptera texten. 

Algoritmen anses vara mycket pålitlig, mycket snabb [1] och skyddas av US patent nr 5454039 [2] sedan december 1993 .

Historik

1991 beskrev Ralph C. Merkle  kostnadseffektiviteten hos mjukvarubaserade chiffer . Enligt hans åsikt var de mest effektiva av dessa Khufu , FEAL och RC4 . Kundernas ständigt ökande behov av tillförlitlig kryptografi krävde dock sökandet efter nya och förfining av gamla lösningar.

Sommaren 1992 började utvecklingen av den första versionen av den nya mjukvaruoptimerade SEAL 1.0 - algoritmen . Utvecklarna tog huvudidéerna och driftprincipen från blockchifferet Ralph Merkle ( eng.  Ralph C. Merkle ) Khufu , som tycktes dem vara den mest perfekta på den tiden. De bestämde sig för att uppnå de bästa egenskaperna hos projektet (främst hastighet), vilket minskade utbudet av utrustning som det är möjligt att genomföra på. Valet gjordes till förmån för 32-bitarsmaskiner med minst åtta allmänna register och en cache på minst 8 KB . I mars 1993 togs beslutet att skapa ett blockchiffer , men strukturen från familjen av pseudo-slumpmässiga funktioner , utvecklad i oktober samma år, fungerade snabbare, vilket ledde till att utvecklare strömmade kryptering .

Denna struktur bestod av fyra register , som var och en ändrade sin "granne" beroende på tabellen som erhölls från nyckeln . Efter ett antal sådana modifieringar läggs registervärdena till nyckelsekvensen, som växer med varje iteration tills den når en viss längd.

Under utvecklingen ägnades nästan all uppmärksamhet åt den inre slingan av algoritmen , eftersom registerinitieringsproceduren och metoden för att generera tabeller från nyckeln hade liten effekt på dess säkerhet. I sin slutliga form dök SEAL 1.0-projektet upp först i december 1993 .

1996 Helen Handschuh och Henri Gilbert attacker mot SEAL 1.0 och på själva SEAL 1.0. De behövde texter, vart och ett av fyra 32-bitars ord långa, för att hitta beroendet av pseudoslumpfunktionennyckeln . Som ett resultat gjordes vissa förbättringar och ändringar i nästa versioner av SEAL 3.0- och SEAL 2.0- algoritmerna . Till exempel, i version 1.0 slutade varje iteration med en nyckelsekvens med en modifiering av endast två register , och i version 3.0 modifierades alla fyra. SEAL 3.0 och SEAL 2.0 använde också SHA-1 ( Secure Hash Algorithm-1 ) algoritmen för att generera tabeller istället för den ursprungliga SHA , vilket gjorde dem mer motståndskraftiga mot kryptoanalys .  

Beskrivning

När algoritmen beskrivs används följande operationer och notation:

Skapa krypteringstabeller från en nyckel

För att undvika förlust av krypteringshastighet vid långsamma operationer använder algoritmen tre tabeller: R , S och T . Dessa tabeller beräknas med hjälp av en procedur från SHA-1- algoritmen och beror endast på nyckeln . Att fylla dessa tabeller kan beskrivas med G -funktionen, som returnerar ett 160-bitars värde från en 160-bitars sträng och ett 32-bitars nummer .

Vi introducerar följande funktioner och variabler beroende på index :

160-bitarssträngen delas sedan upp i fem 32-bitars ord så att

Sexton 32-bitars ord skapas också

Sedan utförs de slutliga beräkningarna:

Vi introducerar funktionen var för

Sedan tabeller:

Vidare används inte nyckeln i algoritmen.

Initiering av tjänsteregister

Innan en pseudo-slumpmässig funktion genereras måste fyra 32-bitars tjänstregister ( , , och ) och fyra 32-bitars ord ( , , och ) förberedas. Deras värden bestäms från tabellerna och , ett 32-bitars nummer och något nummer i följande procedur.

Skapa en pseudo-slumpmässig funktion

För att kryptera text måste du skapa en pseudo-slumpmässig funktion.

      

      

            

            

            

            

            

            

            

            

            

            

            

                                

Krypteringsprocessen består av ett stort antal iterationer , som var och en slutar med genereringen av en pseudo-slumpmässig funktion . Antalet godkända iterationer visas av räknaren l . Alla är uppdelade i flera steg med liknande operationer. I varje steg används de övre 9 bitarna i ett av registren ( A , B , C eller D ) som en pekare med vilken ett värde väljs från tabell T. Detta värde adderas aritmetiskt eller bitvis modulo 2 (XOR) med nästa register (återigen ett av A , B , C eller D ). Det första valda registret roteras sedan åt höger med 9 platser. Vidare modifieras antingen värdet för det andra registret genom addition eller XOR med innehållet i det första (redan skiftat) och övergången till nästa steg utförs, eller så utförs denna övergång omedelbart. Efter 8 sådana omgångar läggs värdena A , B , C och D till (arithmetiskt eller XORed ) med vissa ord från tabell S och läggs till i tangentsekvensen y . Det sista steget i iterationen är att lägga till ytterligare 32-bitars värden ( n1 , n2 eller n3 , n4 ) till registren . Dessutom beror valet av ett specifikt värde på pariteten för numret för denna iteration .

Egenskaper och praktisk tillämpning

När man utvecklade denna algoritm ägnades den största uppmärksamheten åt följande egenskaper och idéer:

SEAL - chifferet kräver ungefär fyra maskincykler för att kryptera och dekryptera varje byte med text . Den körs med cirka 58 Mbps på en 32-bitars 50 MHz-processor och är en av de snabbaste chiffrarna som finns .

Anteckningar

  1. P.Rogaway , D.Coppersmith . En mjukvaruoptimerad krypteringsalgoritm . — 1998.
  2. US-patent 5 454 039 "Programvarueffektiv pseudoslumpfunktion och användningen därav för kryptering"

Källor

Länkar