SEAL (kriptográfiai algoritmus)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2014. március 26-án áttekintett verziótól ; az ellenőrzések 9 szerkesztést igényelnek .

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 .

Történelem

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 .  

Leírás

Az algoritmus leírásánál a következő műveleteket és jelöléseket használjuk:

Titkosítási táblák létrehozása kulcsból

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.

Szolgáltatási nyilvántartások inicializálása

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.

Pszeudo-véletlen függvény létrehozása

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 .

Tulajdonságok és gyakorlati alkalmazás

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 .

Jegyzetek

  1. P.Rogaway , D.Coppersmith . Szoftverre optimalizált titkosítási algoritmus . – 1998.
  2. US 5,454,039 számú szabadalom "Szoftver-hatékony álvéletlen funkció és ennek használata titkosításra"

Források

Linkek