SEAL ( S oftware - optimized Encryption Algorithm , software -optimized Encryption Algorithm ) on symmetrinen tietovirran salausalgoritmi, joka on optimoitu ohjelmistojen toteuttamiseen.
Phil Rogaway ja Don Coppersmith kehittivät IBM : llä vuonna 1993. _ _ _ Algoritmi on optimoitu ja sitä suositellaan 32-bittisille prosessoreille . Se vaatii useita kilotavuja välimuistia ja kahdeksan 32-bittistä rekisteriä toimiakseen . Salausnopeus on noin 4 konesykliä tekstitavua kohden . Koodaukseen ja dekoodaukseen käytetään 160-bittistä avainta . Välttääkseen ei-toivotun nopeuden menetyksen hitaiden näppäinkäsittelytoimintojen vuoksi , SEAL suorittaa sille useita muunnoksia, jolloin tuloksena on kolme tietyn kokoista taulukkoa. Itse avaimen sijasta näitä taulukoita käytetään suoraan tekstin salaamiseen ja salauksen purkamiseen.
Algoritmia pidetään erittäin luotettavana, erittäin nopeana [1] ja se on suojattu US - patentilla nro 5454039 [2] joulukuusta 1993 lähtien .
Vuonna 1991 Ralph C. Merkle kuvaili ohjelmistopohjaisten salausten kustannustehokkuutta . Hänen mielestään tehokkaimmat näistä olivat Khufu , FEAL ja RC4 . Asiakkaiden jatkuvasti kasvavat luotettavan kryptografian tarpeet vaativat kuitenkin uusien etsimistä ja vanhojen ratkaisujen hiomista.
Kesällä 1992 aloitettiin uuden ohjelmistooptimoidun SEAL 1.0 -algoritmin ensimmäisen version kehittäminen. Kehittäjät ottivat pääideat ja toimintaperiaatteet lohkosalauksesta Ralph Merkle ( eng. Ralph C. Merkle ) Khufu , joka vaikutti heistä tuolloin täydellisimmältä. He päättivät saavuttaa projektin parhaat ominaisuudet (pääasiassa nopeus) kaventamalla laitteiden valikoimaa, joilla sen toteuttaminen on mahdollista. Valinta tehtiin 32-bittisille koneille , joissa on vähintään kahdeksan yleiskäyttöistä rekisteriä ja vähintään 8 kt :n välimuisti . Maaliskuussa 1993 päätettiin luoda lohkosalaus , mutta saman vuoden lokakuuhun mennessä kehitetty näennäissatunnaisten toimintojen perherakenne toimi nopeammin, mikä sai kehittäjät käyttämään suoratoistosalausta .
Tämä rakenne koostui neljästä rekisteristä , joista jokainen vaihtoi "naapuriaan" avaimesta saadun taulukon mukaan . Useiden tällaisten muutosten jälkeen rekisteriarvot lisätään avainsekvenssiin, joka kasvaa jokaisella iteraatiolla , kunnes se saavuttaa tietyn pituuden.
Kehityksen aikana lähes kaikki huomio kiinnitettiin algoritmin sisäiseen silmukkaan , koska rekisterin alustusmenettelyllä ja menetelmällä luoda taulukoita avaimesta ei ollut juurikaan vaikutusta sen turvallisuuteen. Lopullisessa muodossaan SEAL 1.0 -projekti ilmestyi vasta joulukuussa 1993 .
Vuonna 1996 Helen Handschuh ja Henri Gilbert itse SEAL 1.0:aa vastaan. He tarvitsivat tekstejä, kukin neljä 32-bittistä sanaa, löytääkseen näennäissatunnaisen funktion riippuvuuden avaimesta . Tämän seurauksena SEAL 3.0- ja SEAL 2.0 -algoritmien seuraaviin versioihin tehtiin joitain parannuksia ja muutoksia . Esimerkiksi versiossa 1.0 jokainen iteraatio avainsekvenssillä päättyi vain kahden rekisterin muutokseen , ja versiossa 3.0 kaikkia neljää muutettiin. SEAL 3.0 ja SEAL 2.0 käyttivät myös SHA-1 ( Secure Hash Algorithm-1 ) -algoritmia taulukoiden luomiseen alkuperäisen SHA : n sijasta , mikä teki niistä entistä vastustuskykyisempiä kryptausanalyysille .
Algoritmia kuvattaessa käytetään seuraavia toimintoja ja merkintöjä:
Välttääkseen salausnopeuden menettämisen hitaiden toimintojen aikana algoritmi käyttää kolmea taulukkoa: R , S ja T . Nämä taulukot lasketaan käyttämällä SHA -1- algoritmin menettelyä ja riippuvat vain avaimesta . Näiden taulukoiden täyttäminen voidaan kuvata G -funktiolla, joka palauttaa 160-bittisen arvon 160-bittisestä merkkijonosta ja 32-bittisen luvun .
Esittelemme seuraavat funktiot ja muuttujat indeksistä riippuen :
160-bittinen merkkijono jaetaan sitten viiteen 32-bittiseen sanaan niin, että
Myös kuusitoista 32-bittistä sanaa luodaan
Sitten suoritetaan lopulliset laskelmat:
Esittelemme toiminnon missä varten
Sitten taulukot:
Lisäksi avainta ei käytetä algoritmissa.
Ennen pseudosatunnaisfunktion luomista on valmisteltava neljä 32-bittistä palvelurekisteriä ( , , ja ) ja neljä 32-bittistä sanaa ( , , ja ). Niiden arvot määritetään taulukoista ja , 32-bittinen luku ja jokin numero seuraavassa menettelyssä.
Tekstin salaamiseksi sinun on luotava näennäissatunnainen funktio.
Salausprosessi koostuu suuresta määrästä iteraatioita , joista jokainen päättyy näennäissatunnaisen funktion luomiseen . Läpäistyjen iteraatioiden lukumäärä näkyy laskurilla l . Kaikki ne on jaettu useisiin vaiheisiin, joilla on samanlaiset toiminnot. Jokaisessa vaiheessa yhden rekisterin ( A , B , C tai D ) ylempää 9 bittiä käytetään osoittimena , jolla arvo valitaan taulukosta T. Tämä arvo lisätään aritmeettisesti tai bittikohtaisesti modulo 2 (XOR) seuraavan rekisterin kanssa (jälleen jokin seuraavista: A , B , C tai D ). Ensimmäistä valittua rekisteriä kierretään sitten oikealle 9 paikkaa. Lisäksi joko muutetaan toisen rekisterin arvoa lisäämällä tai XOR ensimmäisen (jo siirretyn) sisällöllä ja suoritetaan siirtyminen seuraavaan vaiheeseen tai tämä siirtyminen suoritetaan välittömästi. 8 tällaisen kierroksen jälkeen arvot A , B , C ja D lisätään (aritmeettisesti tai XORed ) tietyillä taulukon S sanoilla ja lisätään näppäinsarjaan y . Iteroinnin viimeinen vaihe on 32-bittisten lisäarvojen ( n1 , n2 tai n3 , n4 ) lisääminen rekistereihin . Lisäksi tietyn arvon valinta riippuu tämän iteraation lukumäärän pariteetista .
Tätä algoritmia kehitettäessä päähuomio kiinnitettiin seuraaviin ominaisuuksiin ja ideoihin:
SEAL - salaus vaatii noin neljä konejaksoa jokaisen tekstitavun salaamiseen ja salauksen purkamiseen . Se toimii noin 58 Mbps 32-bittisellä 50 MHz prosessorilla ja on yksi nopeimmista salakirjoituksista .
Symmetriset salausjärjestelmät | |
---|---|
Suoratoista salauksia | |
Feistelin verkko | |
SP verkko | |
Muut |