A SEAL ( Softverre optimalizált titkosítási algoritmus , szoftverre optimalizált titkosítási algoritmus) egy szimmetrikus adatfolyam - titkosítási algoritmus , amelyet szoftveres implementációra optimalizáltak .
Phil Rogaway és Don Coppersmith fejlesztette ki az IBM - nél 1993 - ban . _ _ Az algoritmus optimalizált és 32 bites processzorokhoz ajánlott . Működéséhez több kilobájt gyorsítótár és nyolc 32 bites regiszter szükséges . A titkosítási sebesség körülbelül 4 gépi ciklus szövegbájtonként . A kódoláshoz és a dekódoláshoz 160 bites kulcsot használnak . A lassú kulcsfeldolgozási műveletek miatti nemkívánatos sebességveszteség elkerülése érdekében a SEAL előzetesen több átalakítást hajt végre rajta, ami három, bizonyos méretű táblát eredményez. Maga a kulcs helyett ezek a táblázatok közvetlenül a szöveg titkosítására és visszafejtésére szolgálnak.
Az algoritmust nagyon megbízhatónak, nagyon gyorsnak [1] tartják, és az US 5454039 [2] számú szabadalom védi 1993 decembere óta .
1991 -ben Ralph C. Merkle leírta a szoftver alapú titkosítások költséghatékonyságát . Véleménye szerint ezek közül a leghatékonyabbak a Khufu , a FEAL és az RC4 voltak . Az ügyfelek megbízható kriptográfia iránti egyre növekvő igénye azonban új megoldások felkutatását és a régi megoldások finomítását tette szükségessé.
1992 nyarán megkezdődött az új, szoftverre optimalizált SEAL 1.0 algoritmus első verziójának fejlesztése. A fejlesztők a fő gondolatokat és a működési elvet a számukra akkoriban a legtökéletesebbnek tűnő Ralph Merkle ( eng. Ralph C. Merkle ) Khufu blokk titkosítástól vették át. Úgy döntöttek, hogy elérik a projekt legjobb jellemzőit (főleg a sebességet), leszűkítve azon berendezések körét, amelyeken a megvalósítás lehetséges. A választás a 32 bites gépek mellett esett, amelyek legalább nyolc általános célú regiszterrel és legalább 8 KB gyorsítótárral rendelkeznek . 1993 márciusában döntés született egy blokk titkosítás létrehozásáról , de a pszeudo-véletlen függvénycsaládból az év októberére kifejlesztett struktúra gyorsabban működött, ami arra késztette a fejlesztőket, hogy az adatfolyam - titkosítást alkalmazzák .
Ez a struktúra négy regiszterből állt, amelyek mindegyike megváltoztatta a "szomszédját" a kulcsból nyert táblázat függvényében . Számos ilyen módosítás után a regiszterértékek hozzáadódnak a kulcssorozathoz, amely minden iterációval növekszik, amíg el nem ér egy bizonyos hosszúságot.
A fejlesztés során szinte minden figyelem az algoritmus belső ciklusára irányult , mivel a regiszter inicializálási eljárása és a kulcsból táblák generálásának módja alig volt hatással annak biztonságára. A SEAL 1.0 projekt végleges formájában csak 1993 decemberében jelent meg .
1996-ban Helen Handschuh és Henri Gilbert SEAL 1.0 elleni támadásokat. Szövegekre volt szükségük , egyenként négy 32 bites szóból, hogy megtalálják az álvéletlen függvény függőségét a billentyűtől . Ennek eredményeként néhány fejlesztést és változtatást hajtottak végre a SEAL 3.0 és SEAL 2.0 algoritmus következő verzióiban. Például az 1.0-s verzióban minden egyes kulcssorozattal végzett iteráció csak két regiszter módosításával ért véget, a 3.0-s verzióban pedig mind a négy módosult. A SEAL 3.0 és SEAL 2.0 is az SHA-1 ( Secure Hash Algorithm-1 ) algoritmust használta a táblázatok előállításához az eredeti SHA helyett , ami ellenállóbbá tette őket a kriptoanalízissel szemben .
Az algoritmus leírásánál a következő műveleteket és jelöléseket használjuk:
A lassú műveleteknél a titkosítási sebesség elvesztésének elkerülése érdekében az algoritmus három táblázatot használ: R , S és T . Ezeket a táblázatokat az SHA-1 algoritmus egyik eljárásával számítjuk ki, és csak a kulcstól függenek . A táblázatok kitöltése a G függvénnyel írható le , amely 160 bites sztringből 160 bites értéket és 32 bites számot ad vissza .
Az indextől függően a következő függvényeket és változókat vezetjük be :
A 160 bites karakterláncot ezután öt 32 bites szóra osztják úgy, hogy
Tizenhat 32 bites szó is létrejön
Ezután elvégezzük a végső számításokat:
Bemutatjuk a függvényt , ahol for
Aztán táblázatok:
Ezenkívül a kulcsot nem használják az algoritmusban.
A pszeudo-véletlen függvény generálása előtt négy 32 bites szolgáltatásregisztert ( , , és ) és négy 32 bites szót ( , , és ) kell elkészíteni. Értékeiket a táblázatokból és egy 32 bites számból és néhány számból határozzuk meg a következő eljárásban.
A szöveg titkosításához létre kell hoznia egy pszeudo-véletlen függvényt.
A titkosítási folyamat nagyszámú iterációból áll, amelyek mindegyike egy pszeudo-véletlen függvény generálásával végződik . Az átment iterációk számát az l számláló mutatja . Mindegyikük több szakaszra oszlik hasonló műveletekkel. Minden szakaszban az egyik regiszter ( A , B , C vagy D ) felső 9 bitjét használjuk mutatóként , amellyel kiválasztunk egy értéket a T táblázatból . Ezt az értéket aritmetikailag vagy bitenkénti modulo 2 (XOR) adjuk hozzá a következő regiszterrel (ismét az A , B , C vagy D valamelyikével ). Az első kiválasztott regiszter ezután 9 pozícióval jobbra fordul . Továbbá vagy a második regiszter értékét módosítjuk összeadással, vagy XOR -t az első (már eltolt) tartalmával, és végrehajtjuk az átmenetet a következő szakaszba, vagy ezt az átmenetet azonnal végrehajtjuk. 8 ilyen kör után az A , B , C és D értékek hozzáadódnak (számtanilag vagy XORed ) bizonyos szavakkal az S táblázatból , és hozzáadódnak az y billentyűsorozathoz . Az iteráció utolsó lépése további 32 bites értékek ( n1 , n2 vagy n3 , n4 ) hozzáadása a regiszterekhez . Ezenkívül egy adott érték kiválasztása az iteráció számának paritásától függ .
Az algoritmus kidolgozásakor a fő figyelmet a következő tulajdonságokra és ötletekre fordítottuk:
A SEAL titkosítás körülbelül négy gépi ciklust igényel a szöveg minden egyes bájtjának titkosításához és visszafejtéséhez . Körülbelül 58 Mbps sebességgel fut egy 32 bites 50 MHz-es processzoron , és az egyik leggyorsabb titkosítás .
Szimmetrikus titkosítási rendszerek | |
---|---|
Rejtjelfolyam adatfolyam | |
Feistel hálózat | |
SP hálózat | |
Egyéb |