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 .
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 funktion på tasten . 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 .
Når algoritmen beskrives, bruges følgende operationer og notation:
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.
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.
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 .
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 .
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |