SEAL (kryptografisk algoritme)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 26. marts 2014; checks kræver 9 redigeringer .

SEAL ( softwareoptimeret krypteringsalgoritme , softwareoptimeret krypteringsalgoritme ) er en symmetrisk strømdatakrypteringsalgoritme  optimeret til softwareimplementering . _ _

Udviklet hos IBM i 1993 af Phil Rogaway og Don Coppersmith . _  _ Algoritmen er optimeret og anbefalet til 32-bit processorer . Det kræver flere kilobytes cachehukommelse og otte 32-bit registre for at fungere . Krypteringshastigheden  er cirka 4 maskincyklusser pr. byte tekst . En 160-bit nøgle bruges til kodning og afkodning . For at undgå det uønskede tab af hastighed på grund af langsomme nøglebehandlingsoperationer udfører SEAL flere transformationer på den, hvilket resulterer i tre tabeller af en vis størrelse. I stedet for selve nøglen bruges disse tabeller direkte til at kryptere og dekryptere teksten. 

Algoritmen anses for meget pålidelig, meget hurtig [1] og er beskyttet af US patent nr. 5454039 [2] siden december 1993 .

Historie

I 1991 beskrev Ralph C. Merkle  omkostningseffektiviteten af ​​software-baserede cifre . Efter hans mening var de mest effektive af disse Khufu , FEAL og RC4 . Men kundernes stadigt stigende behov for pålidelig kryptografi krævede søgen efter nyt og forfining af gamle løsninger.

I sommeren 1992 begyndte udviklingen af ​​den første version af den nye softwareoptimerede SEAL 1.0 - algoritme . Udviklerne tog hovedideerne og operationsprincippet fra blokchifferet Ralph Merkle ( eng.  Ralph C. Merkle ) Khufu , som forekom dem den mest perfekte på det tidspunkt. De besluttede at opnå de bedste egenskaber ved projektet (hovedsageligt hastighed), hvilket indsnævrede rækken af ​​udstyr , som dets gennemførelse er mulig på. Valget blev truffet til fordel for 32-bit maskiner med mindst otte generelle registre og en cache på mindst 8 KB . I marts 1993 blev beslutningen taget om at oprette en blokchiffer , men strukturen fra familien af ​​pseudo-tilfældige funktioner , udviklet i oktober samme år, fungerede hurtigere, hvilket fik udviklere til at streame kryptering .

Denne struktur bestod af fire registre , som hver ændrede sin "nabo" afhængigt af tabellen opnået fra nøglen . Efter en række sådanne modifikationer tilføjes registerværdierne til nøglesekvensen, som vokser med hver iteration , indtil den når en vis længde.

Under udviklingen blev næsten al opmærksomhed rettet mod den indre sløjfe af algoritmen , da registerinitialiseringsproceduren og metoden til at generere tabeller fra nøglen havde ringe effekt på dens sikkerhed. I sin endelige form dukkede SEAL 1.0-projektet først op i december 1993 .

I 1996 Helen Handschuh og Henri Gilbert angreb på SEAL 1.0 og på SEAL 1.0 selv. De havde brug for tekster, hver fire 32-bit ord lange, for at finde afhængigheden af ​​den pseudo-tilfældige funktiontasten . Som følge heraf blev der foretaget nogle forbedringer og ændringer i de næste versioner af SEAL 3.0- og SEAL 2.0- algoritmerne . For eksempel, i version 1.0 endte hver iteration med en nøglesekvens med en modifikation af kun to registre , og i version 3.0 blev alle fire modificeret. SEAL 3.0 og SEAL 2.0 brugte også SHA-1 ( Secure Hash Algorithm-1 ) algoritmen til at generere tabeller i stedet for den originale SHA , hvilket gjorde dem mere modstandsdygtige over for kryptoanalyse .  

Beskrivelse

Når algoritmen beskrives, bruges følgende operationer og notation:

Oprettelse af krypteringstabeller fra en nøgle

For at undgå tab af krypteringshastighed ved langsomme operationer, bruger algoritmen tre tabeller: R , S og T . Disse tabeller beregnes ved hjælp af en procedure fra SHA-1- algoritmen og afhænger kun af nøglen . Udfyldning af disse tabeller kan beskrives ved hjælp af G -funktionen, som returnerer en 160-bit værdi fra en 160-bit streng og et 32-bit tal .

Vi introducerer følgende funktioner og variabler afhængigt af indekset :

160-bit strengen opdeles derefter i fem 32-bit ord, således at

Seksten 32-bit ord oprettes også

Derefter udføres de endelige beregninger:

Vi introducerer funktionen hvor for

Derefter tabeller:

Ydermere bruges nøglen ikke i algoritmen.

Initialisering af serviceregistre

Før du genererer en pseudo-tilfældig funktion, skal der forberedes fire 32-bit serviceregistre ( , , og ) og fire 32-bit ord ( , , og ). Deres værdier bestemmes ud fra tabellerne og , et 32-bit tal og nogle tal i den følgende procedure.

Oprettelse af en pseudo-tilfældig funktion

For at kryptere tekst skal du oprette en pseudo-tilfældig funktion.

      

      

            

            

            

            

            

            

            

            

            

            

            

                                

Krypteringsprocessen består af et stort antal iterationer , som hver afsluttes med generering af en pseudo-tilfældig funktion . Antallet af beståede iterationer vises af tælleren l . Alle er opdelt i flere faser med lignende operationer. På hvert trin bruges de øverste 9 bit af et af registrene ( A , B , C eller D ) som en pointer , hvormed en værdi vælges fra tabel T. Denne værdi tilføjes aritmetisk eller bitvis modulo 2 (XOR) med det næste register (igen et af A , B , C eller D ). Det første valgte register roteres derefter til højre med 9 positioner. Yderligere modificeres enten værdien af ​​det andet register ved addition eller XOR med indholdet af det første (allerede forskudt), og overgangen til det næste trin udføres, eller også udføres denne overgang straks. Efter 8 sådanne runder tilføjes værdierne A , B , C og D (aritmetisk eller XORed ) med bestemte ord fra tabel S og tilføjes til tastesekvensen y . Det sidste trin i iterationen er at tilføje yderligere 32-bit værdier ( n1 , n2 eller n3 , n4 ) til registrene . Desuden afhænger valget af en specifik værdi af pariteten af ​​antallet af denne iteration .

Egenskaber og praktisk anvendelse

Ved udviklingen af ​​denne algoritme blev hovedvægten lagt på følgende egenskaber og ideer:

SEAL - chifferet kræver omkring fire maskincyklusser for at kryptere og dekryptere hver tekstbyte . Den kører med cirka 58 Mbps på en 32-bit 50 MHz processor og er en af ​​de hurtigste ciphers derude .

Noter

  1. P.Rogaway , D.Coppersmith . En softwareoptimeret krypteringsalgoritme . - 1998.
  2. US patent 5.454.039 "Softwareeffektiv pseudotilfældig funktion og brugen deraf til kryptering"

Kilder

Links