BIZTONSÁGOSBAN

BIZTONSÁGOSBAN
Teremtő James Massey
Létrehozva 1993
közzétett 1993
Kulcsméret 64 (128, 192, 256) bit
Blokkméret 64 (40, 128) bit
A körök száma 6-16
Típusú Helyettesítő-permutációs hálózat
 Médiafájlok a Wikimedia Commons oldalon

SÁFER ( Eng.  Secure And Fast Encryption Routine  - biztonságos és gyors titkosítási eljárás) - a kriptográfiában szimmetrikus blokk-kriptográfiai algoritmusok családja, amely helyettesítési-permutációs hálózaton alapul . Az algoritmusok fejlesztéséhez a fő hozzájárulást James Massey tette . A titkosítás első változatát 1993 -ban hozták létre és adták ki .

Történelem

A titkosításnak több változata létezik, amelyek a titkosítási kulcs hosszában és a forrásszöveg blokkjainak méretében térnek el egymástól.

Az algoritmus első változatát  , a SAFER K-64 -et James Massey fejlesztette ki a kaliforniai Cylinc vállalat számára 1993 -ban [1] . Az ugyanabban az évben közzétett algoritmusnak 64 bites titkosítási blokkja és kulcsa volt . Számára 6 körös titkosítást javasoltak. Mivel azonban a kulcs hosszát 128 bitre kellett növelni (mivel egy gyengeséget fedeztek fel az eredeti algoritmusban), a Massey kifejlesztette a SAFER K-128 titkosítás új verzióját, amely a SAFER K-64 után következő évben jelent meg. . Az új algoritmus tartalmazott egy kulcsfontosságú ütemtervet, amelyet a szingapúri belügyminisztérium fejlesztett ki , és ezt követően különféle célokra használta. Ehhez az algoritmushoz 10 (maximum 12) titkosítási kört is javasoltak használni.

Nem sokkal később, az algoritmus első verzióiban néhány Lars Knudsen és Sean Murphy [1] által felfedezett gyengeség is kiderült . Ez az algoritmus új verzióinak létrehozását jelentette SAFER SK-64 és SAFER SK-128 néven, amelyekben a kulcs ütemezését a Knudsen által javasolt séma szerint módosították. Kifejlesztettek egy 40 bitre csökkentett kulcshosszú változatot is - SAFER SK-40 . Az algoritmusok nevében az „ SK ” rövidítés a „ Megerősített kulcs ütemezése ” (Reinforced Key schedule) rövidítése. Az új titkosítási változatoknál nem 6, hanem legalább 8 (maximum 10) titkosítási kört javasoltak használni.

A SAFER+ algoritmust 1998 -ban fejlesztette ki a kaliforniai Cylinc vállalat az Örmény Tudományos Akadémiával közösen, hogy részt vegyen az AES versenyen , ahol csak az első kvalifikációs kör ment át. Ennek a rejtjelnek a bemeneti blokkja 128 bites, a kulcs mérete pedig 128, 192 vagy 256 bit.

A SAFER algoritmus legújabb változata a SAFER++ , amelyet a Massey fejlesztett ki 2000 -ben, és a SAFER+ algoritmus továbbfejlesztése lett . Az algoritmus részt vett a NESSIE európai algoritmusversenyen , ahol két változatban mutatták be: egy 64 bites és egy 128 bites blokkot tartalmazó titkosítót. Bejutott a verseny második szakaszába, de nem került be a NESSIE által ajánlott kriptográfiai primitívek közé . A szakértők úgy vélték, hogy a titkosítás túl lassú a 8 bites gépeken (például intelligens kártyákon ) kívül az összes gépen, és a titkosítás biztonsági határa túl alacsony [2] [3] .

A SAFER algoritmusok nem magántulajdon és nem védettek szerzői joggal, azaz korlátozás nélkül használhatók. Mivel teljes egészében egyszerű bájtműveletekből állnak (a kulcsgenerálás során előforduló bájtforgatás kivételével), ezért ezek az algoritmusok kis bitmélységű processzorokkal is megvalósíthatók [4] .

Az alábbiakban összefoglaló táblázat található a SAFER titkosítás összes létező változatáról

cím angol létrehozásának dátuma blokk hossza kulcs hossza körök száma
BIZTONSÁGOS K-64 64 bites kulcs 1993 64 64 6
BIZTONSÁGOS K-128 128 bites kulcs 1995 64 128 10 (max. 12)
BIZTONSÁGOS SK-64 Megerősített kulcs ütemezés, 64 bit 1995 64 64 8 (minimum 6, maximum 10)
BIZTONSÁGOS SK-128 Megerősített kulcs ütemezés, 128 bit 1995 64 128 10 (max. 12)
BIZTONSÁGOS SK-40 Megerősített kulcs ütemezés, 40 bit 1995 64 40
BIZTONSÁGOS+ SAFER Plus 1998 128 128, 192, 256 8, 12, 16
BIZTONSÁGOSABB++ SAFER Plus Plus 2000 64, 128 128, 256 7, 10

BIZTONSÁGOS K-64

Titkosító algoritmus

A titkosított blokk hossza és a kulcs hossza 64 bit. Az algoritmus egy iteratív blokkrejtjel , azaz ugyanazt a titkosítási funkciót szekvenciálisan alkalmazzák a bemeneti blokkra r alkalommal, és minden lépésben különböző kulcsokat használnak. A vizsgált algoritmus minden iterációja (szakasz, kör) során két 64 bites alkulcsot vesz fel.

Az algoritmus egy körének felépítése a diagramon látható. Lépésről lépésre írjuk le az algoritmust (az i alatt 1-től r -ig fut az értékek , ahol r  a titkosítási körök száma):

  1. A B bemeneti blokk és mindkét kulcs és 8 részre van osztva, egy-egy bájtból (8 bit ). A beviteli szöveg és a kulcs megfelelő alblokkjai vagy hozzáadódnak modulo two ( XOR művelet ) - az 1., 4., 5. és 8. számú alblokkhoz, vagy a szokásos szabályok szerint (modulo 256 bájt összeadás művelet) - a No. alblokkokhoz 2, 3, 6 7.
  2. Az összeadás eredménye áthalad az úgynevezett S-boxokon ( S-boxes ). Tartalmuk a nemlineáris műveletek egyike: (ahol y = 0, ha x = 128) vagy (y = 128, ha x = 0). Itt x  a bemeneti bájt, y  a kimeneti bájt. Ezek a műveletek a GF(257) végső mezőn végzett műveletek , ahol a 45 a mező primitív eleme. Mivel minden alkalommal nagyon kényelmetlen ezeknek a műveleteknek az eredményeinek kiszámítása az algoritmus gyakorlati megvalósításaiban, általában speciálisan összeállított táblázatokat használnak a műveletek eredményeinek megszerzéséhez.
  3. Az 1. tételhez hasonló műveletet hajtanak végre az előző művelet eredményein, azzal az egyetlen különbséggel, hogy a második alkulcsot használják , és az XOR és a modulo 256 műveletek megfordulnak.
  4. Az így kapott bájtok egy többszintű átalakítási rendszeren mennek keresztül, és egymást eltérő sorrendben adják össze. Ez a jobb lavinahatás elérése érdekében történik , azaz a kimeneti bitek függőségének növelése a bemeneti blokk összes bitjétől. A diagramon a transzformációkat a 256 addíciós modulo műveletek hálózataként mutatjuk be. Ez a hálózat a Hadamard pszeudo -transzformációk három szintjének felel meg ( Pseudo-Hadamard Transform , PHT ) [5] . Minden transzformáció úgy működik, hogy a bemeneti bájtokkal és a kimeneten a következőket kapjuk:

Az egymást követő körök befejezése után az 1. bekezdéshez hasonló műveletet alkalmazunk a kapott eredményre, ahol az utolsó alkulcsot használjuk kulcsként.

Az algoritmus szerzője a körök használatát javasolja, de a megbízhatóság növelése érdekében növelheti a számukat [5] .

Dekódoló algoritmus

A visszafejtés fordított sorrendben történik, de a műveletek fordítottak. Így a 256 modulo összeadási műveleteket kivonási műveletek helyettesítik, a 2. modulo összeadást pedig ugyanúgy hajtják végre, mint a titkosításnál. Műveletek és fel vannak cserélve. A Hadamard pszeudotranszformációkat inverzekkel ( Inverse PHT , IPHT ) helyettesítik, amelyek a következők szerint működnek:

Kulcsgenerálás

Az első titkosítási kulcs egy felhasználó által megadott titkos kulcs. Minden következő titkosítási kulcsot az előzőtől kapunk a képlet szerint (a hozzáadás modulo 256 történik, miközben a bájtokat külön-külön adjuk hozzá). Itt a „ ” művelet egy bájtonkénti ciklikus eltolás 3 bittel balra, vagyis az eltolás a kulcs minden egyes bájtján belül történik. Az értéket titkosítási fokozat állandónak nevezzük. A következőképpen kaphatja meg: ha  — az i -edik fokozat állandójának j -edik bájtja , akkor a fokozatok összes állandóját a következő képlettel fejezzük ki: [5] . Az így kapott fokozatállandók jó pontossággal véletlenszámként viselkednek. Általában ezeknek az állandóknak az értékeit speciális táblázatokban tárolják, hogy csökkentsék a számításokhoz szükséges időt.

A kulcsgeneráló algoritmus formális leírása: [6]

BEMENET: 64 bites kulcs ; körök száma .

KIMENET: 64 bites alkulcsok . Byte  - kulcsbájt (számozás balról jobbra).

  1. Legyenek  8 bites értékek. Legyen  az i -edik titkosítási fokozat állandójának j -edik bájtja.
  2. .
  3. .
  4. tól -ig : _
    • 1 - től 8-ig: .
    • 1 - től 8-ig: .

Kriptanalízis algoritmus

James Massey bebizonyította, hogy hat titkosítási kör után a SAFER K-64 algoritmus abszolút ellenállást biztosít a differenciális kriptoanalízissel szemben [5] . Ugyanakkor három titkosítási kör után a lineáris kriptoanalízis is hatástalanná válik a hackeléshez [5] .

Ennek ellenére 1995 -ben Lars Knudsen egy gyengeséget fedezett fel a SAFER K-64 kulcsgeneráló algoritmusában . Megmutatta [5] , hogy bármely titkosítási kulcshoz egy vagy több (legfeljebb kilenc) kulcs található (amelyek csak egy bájt értékben különböznek tőle), így két különböző nyílt szöveg titkosításakor egy és ugyanaz a rejtjelezett szöveg. formába írható . A különböző M egyszerű szövegek száma, amelyekből ugyanazt a rejtjelezett szöveget kapjuk, a lehetséges szövegek közötti intervallumban rejlik . Így az egyszerű szövegek értelmezésével egy 64 bites titkos kulcs 8 bitjét számíthatjuk ki. Ezt a támadást tovább erősítette John Kelsey , Bruce Schneier és David Wagner ( angolul David A. Wagner ). A támadás szerzői azt állították, hogy az alkulcsok generálására szolgáló nagyon egyszerű és egységes eljárás miatt az algoritmus könnyen kezelhető a kapcsolódó kulcsok elleni támadásokra [7] .  

Ez a tulajdonság jelentősen csökkenti a SAFER K-64 algoritmus megbízhatóságát, ha egyirányú hash függvényként használják . Megbízhatósága mint titkosítási algoritmus nem csökken. Azonban az algoritmus ezen gyengesége, valamint egy később Murphy által közzétett támadás arra késztette Masseyt , hogy javítsa a kulcsgeneráló algoritmust. Ennek eredményeként 1995 szeptemberében kiadta a SAFER SK-64 algoritmust .

Egy másik hitelesített támadást a SAFER K-64 algoritmus ellen Lars Knudsen és Thomas A. Berson hajtott végre 6A SAFER K-64 algoritmus 5 fordulójával titkosított egyszerű szövegre tervezték . Bár ez a támadás még 6 titkosítási kör után sem tudta feltörni a rejtjelezett szöveget, azt mutatta, hogy az algoritmus kriptográfiai erőssége kisebb volt, mint azt Massey eredetileg állította (azt állította, hogy az algoritmus abszolút ellenáll a lineáris kriptográfiai módszereknek ).  

Serge Vaudenay francia kriptográfus ( fr.  Serge Vaudenay ) kimutatta, hogy ha az S-dobozok tartalmát véletlenszerű permutációkkal helyettesítik, a SAFER K-64 algoritmus kevésbé lesz kriptorezisztens [6] .

BIZTONSÁGOS K-128

Az algoritmus csak a felhasználói kulcs hosszában, és ennek megfelelően magában a kulcsgenerálási módszerben tér el a SAFER K-64- től . Ezt a módszert a Szingapúri Belügyminisztérium [5] fejlesztette ki , majd James Massey használta az algoritmusában.

Kulcsgenerálás

Ez az algoritmus 128 bites kulcsot használ egyetlen 64 bites kulcs helyett , ami egyenértékű két 64 bites kulcs megadásával. Ebből a két kulcsból a SAFER K-64 titkosításhoz nagyon hasonló módszerrel két független alkulcs-sorozat jön létre. Az ezekből a sorozatokból származó kulcsok felváltva használatosak a titkosítás minden körében.

Amint az a diagramból látható, minden szakaszban a kulcsbájtok biteltolása nem 3, hanem 6 bittel történik. Ez ahhoz a tényhez vezet, hogy ugyanazokkal a kezdeti kulcsokkal azt kapjuk, hogy a 128 bites kulcs kompatibilis a 64 bites kulccsal . Ez azt jelenti, hogy a SAFER K-128 algoritmus típuskulcsát és a SAFER K-64 kulcsát használva ugyanazokat az alkulcs-sorozatokat kapjuk, ami azt jelenti, hogy maga a titkosítás a SAFER K-128- ban semmiben nem fog eltérni a SAFER K-128-ban lévő titkosítástól. BIZTONSÁGOS K-64 .

Kriptanalízis

Annak ellenére, hogy a SAFER K-128 algoritmus hasonló az elődjéhez, számos különbség van. Tehát az algoritmus új verziójában James Massey nem 6, hanem 10 (maximum 12) titkosítási kört javasol [7] . Ez annak a ténynek köszönhető, hogy kevesebb iterációval az algoritmus, akárcsak a SAFER K-64 , Lars Knudsen által végrehajtott támadásnak van kitéve . Emlékezzünk vissza, hogy ez egy algoritmus használatára vonatkozik a hash függvény alapjaként . A titkosítási körök számának növelése a szerző szerint jelentősen megnöveli az algoritmus ilyen értelemben vett kriptográfiai erősségét [7] .

BIZTONSÁGOS SK-64

Ez az algoritmus csak abban különbözik a SAFER K-64- től, hogy alkulcsokat generál. Ezt a módszert Lars Knudsen javasolta , miután ő is talált egy támadást a SAFER K-64 algoritmus ellen . A titkosítási körök ajánlott számát 6-ról 8-ra növelték [7] . A kulcsfontosságú bővítési módszerek közötti különbségek jól láthatóak az algoritmus formális leírásában:

A kulcsgeneráló algoritmus formális leírása: [6]

BEMENET: 64 bites kulcs ; körök száma .

KIMENET: 64 bites alkulcsok . Byte  - kulcsbájt (számozás balról jobbra).

  1. Legyenek  8 bites értékek. Legyenek a titkosítás -edik szakaszának  -byte konstansai .
  2. ; (a hozzáadás modulo 2 történik).
  3. tól -ig : _
    • 1 - től 9-ig: .
    • 1 - től 8-ig: .

Ennek az algoritmusnak a fő megkülönböztető jellemzője egy további bájt használata , amelyet a kulcs nyolc bájtjának bitenkénti hozzáadásával kapunk. Továbbá az algoritmus minden szakaszában ezek a bájtok ciklikusan eltolódnak, ennek eredményeként kiderül, hogy az alkulcs a bájtoktól függ , az alkulcs a  bájtoktól függ, az alkulcs a  bájtoktól stb. A bitenkénti eltolás 3 bittel és a titkosítási állandók szerkezete változatlan marad.

Kriptanalízis

A kulcsgeneráló algoritmus ilyen aprónak tűnő változtatásai jelentősen növelik az algoritmus kriptográfiai erősségét . Jelenleg nem ismertek olyan támadások a SAFER SK-64 és SAFER SK-128 algoritmusok ellen , amelyek hatékonyabbak lennének a brute force keresésnél [ 7] .

Ugyanakkor vannak támadások ezen algoritmusok csonka változatai ellen. Íme néhány közülük: [7]

Mint látható, ezek a támadások nem túl praktikusak, mivel meglehetősen sok erőforrást és időt igényelnek.

BIZTONSÁGOS SK-128

Ez a titkosítási algoritmus pontosan ugyanúgy különbözik a SAFER SK-64 -től, mint a SAFER K-128 a SAFER K-64- től . Ugyanis maguk a titkosítási és alkulcsgenerálási algoritmusok ugyanazok maradnak, de egy kezdeti 64 bites kulcs helyett két ilyen kulcsot használnak, amelyek mindegyikéhez önállóan képeznek alkulcs-sorozatokat, amelyeket aztán felváltva alkalmaznak. Ezenkívül a páros és páratlan kulcsokhoz tartozó sorozatok felépítése hasonló a SAFER SK-64 kulcskiterjesztési algoritmusához . Ebben ugyanígy az első szakaszban egy további bájt kerül bevezetésre, ami a maradék nyolc bájt modulo 2 összege , majd minden szakaszban bájtonkénti ciklikus eltolás történik.

Ami a SAFER K-64 és SAFER K-128 algoritmusokat illeti , ha a SAFER SK-128- ban egyéni nézetkulcsot , a SAFER SK-64- ben pedig egy kulcsot használunk , az algoritmusok hatása pontosan ugyanaz. Ugyanakkor a SAFER SK-128- hoz javasolt titkosítási körök száma ugyanaz marad, mint a SAFER K-128- ban , és egyenlő 10 -nel [7] .

BIZTONSÁGOS SK-40

A titkosítás ezen verziója csak 40 bites (5 bájt ) csökkentett kulcsot használ. Ez lehetővé tette az algoritmus számára, hogy megkerülje az Egyesült Államokban akkoriban létező exportkorlátozásokat . Az algoritmus majdnem ugyanúgy működik, mint a SAFER SK-64 , egy kis eltéréssel az alkulcs generálás kezdeti szakaszában.

A SAFER SK-64 algoritmusban a kilencedik bájt az eredeti kulcs 8 bájtjához volt hozzárendelve, ami megegyezik azok bitenkénti modulo 2 összegével . A SAFER SK-40- ben ez a 9 bájt teljesen más módon érhető el. Jelöljük őket , , … . Közülük az első 5 az eredeti kulcs bájtja. A fennmaradó 4 bájt az elsőkből a következőképpen származik [11] :

,

,

,

;

Az első alkulcs a kapott első nyolc bájtból származik. A későbbi alkulcsok ezek felhasználásával pontosan ugyanúgy generálódnak, mint a SAFER SK-64 algoritmusban .

SAFER+

A SAFER+ a SAFER algoritmuscsalád továbbfejlesztett változata . Az algoritmust 1998 -ban fejlesztették ki, hogy versenyezzen az AES szabványért . A kaliforniai Cylinc vállalat ( James Massey ) és az Örmény Köztársaság Tudományos Akadémia (Gurgen Khachatryan és Melsik Kuregyan) szakemberei együtt dolgoztak a létrehozásán [2] .

Az AES versenyen az algoritmus 14 másik algoritmussal együtt átjutott az első kvalifikációs körön. A SAFER+ nem jutott be a verseny döntőjébe, amelyre mindössze 5 algoritmust engedtek be , mert egy alapos elemzés eredménye szerint kiderült, hogy számos támadásra érzékeny és alacsony a végrehajtási sebessége [ 12] . Az algoritmust úgy hozták létre, hogy 8 bites processzorokon működjön, ennek eredményeként a 32 bites processzorokon meglehetősen lassan működik [3] .

A SAFER+ 128 bites blokkokban dolgozza fel az adatokat. Az algoritmus támogatja a 128, 192 és 256 bites kulcsokat az Egyesült Államok Nemzeti Szabványügyi és Technológiai Intézete (NIST) [13] követelményeinek megfelelően . A titkosítási körök száma a kulcs méretétől függ:

Titkosító algoritmus

A SAFER+ algoritmus felépítése a SAFER K-64-hez hasonlít . Ugyanazokból a fő szakaszokból áll, szerkezetükben kissé eltérőek. Az algoritmus minden fordulójában először egy alkulcs keveredik, majd a bájtok átmennek nemlineáris helyettesítési blokkon, majd a második alkulcs keveredik és a bájtok lineárisan keverednek. Az alkulcsok egymás után jönnek létre a beviteli kulcs segítségével. Az alábbiakban egy iteráció munkájának részletesebb leírása található ( i  az iteráció száma):

  1. Kulcsátfedés : a bemeneti blokk bájtjai hozzáadódnak a kulcsbájtokhoz , modulo 2 összeadással az 1, 4, 5, 8, 9, 12, 13 és 16 bájtokhoz, és modulo 256 összeadással a 2, 3, 6 bájtokhoz , 7, 10, 11, 14 és 15.
  2. Nemlineáris konverzió : az 1, 4, 5, 8, 9, 12, 13 és 16 számú bájtokat kezeljük ( nulla helyett). A 2, 3, 6, 7, 10, 11, 14 és 15 számú bájtokra vonatkozik a művelet (és ). ezeknek a műveleteknek az eredményeit, valamint a SAFER algoritmus más változatainál a gyakorlatban gyakran speciális táblázatokban tárolják. Ebben az esetben ehhez 512 bájt szükséges.
  3. Kulcsátfedés : a beviteli blokk bájtjai hozzáadódnak a kulcs bájtjaihoz , de az 1. elemtől eltérően a modulo 2 és modulo 256 összeadási műveletei felcserélődnek.
  4. Lineáris transzformáció : egy 16 bájtos adatblokk szorzása a jobb oldalon egy speciális, nem szinguláris M mátrixszal (minden művelet bájt alapú, és modulo 256 hajtódik végre ). Az ezzel a mátrixszal való szorzás a PHT transzformáció négy szintjének felel meg , amelyek között néhány bájt permutációt hajtanak végre [2] . Az algoritmusnak ez a része a legnehezebb számítási szempontból.

R titkosítási kör után a kulcskeveréshez hasonlóan a kulcskeverés történik .

Dekódoló algoritmus

A visszafejtési algoritmus műveletei hasonlóak a titkosítási műveletekhez, és fordított sorrendben hajtják végre. A különbség a következő:

  1. Mátrix helyett a szorzás az inverz mátrixával történik ;
  2. A modulo 256 összes összeadási műveletét kivonási műveletek helyettesítik;
  3. A és műveletek (amelyek egymás inverzei) felcserélődnek.
A titkosítás során a következő M mátrixot használjuk : [13]
2 2 egy egy 16 nyolc 2 egy négy 2 négy 2 egy egy négy négy
egy egy egy egy nyolc négy 2 egy 2 egy négy 2 egy egy 2 2
egy egy négy négy 2 egy négy 2 négy 2 16 nyolc 2 2 egy egy
egy egy 2 2 2 egy 2 egy négy 2 nyolc négy egy egy egy egy
négy négy 2 egy négy 2 négy 2 16 nyolc egy egy egy egy 2 2
2 2 2 egy 2 egy négy 2 nyolc négy egy egy egy egy egy egy
egy egy négy 2 négy 2 16 nyolc 2 egy 2 2 négy négy egy egy
egy egy 2 egy négy 2 nyolc négy 2 egy egy egy 2 2 egy egy
2 egy 16 nyolc egy egy 2 2 egy egy négy négy négy 2 négy 2
2 egy nyolc négy egy egy egy egy egy egy 2 2 négy 2 2 egy
négy 2 négy 2 négy négy egy egy 2 2 egy egy 16 nyolc 2 egy
2 egy négy 2 2 2 egy egy egy egy egy egy nyolc négy 2 egy
négy 2 2 2 egy egy négy négy egy egy négy 2 2 egy 16 nyolc
négy 2 egy egy egy egy 2 2 egy egy 2 egy 2 egy nyolc négy
16 nyolc egy egy 2 2 egy egy négy négy 2 egy négy 2 négy 2
nyolc négy egy egy egy egy egy egy 2 2 2 egy 2 egy négy 2
A visszafejtés során az inverz mátrixot használják : [13]
2 −2 egy −2 egy −1 négy −8 2 −4 egy −1 egy −2 egy −1
−4 négy −2 négy −2 2 −8 16 −2 négy −1 egy −1 2 −1 egy
egy −2 egy −1 2 −4 egy −1 egy −1 egy −2 2 −2 négy −8
−2 négy −2 2 −2 négy −1 egy −1 egy −1 2 −4 négy −8 16
egy −1 2 −4 egy −1 egy −2 egy −2 egy −1 négy −8 2 −2
−1 egy −2 négy −1 egy −1 2 −2 négy −2 2 −8 16 −4 négy
2 −4 egy −1 egy −2 egy −1 2 −2 négy −8 egy −1 egy −2
−2 négy −1 egy −1 2 −1 egy −4 négy −8 16 −2 2 −2 négy
egy −1 egy −2 egy −1 2 −4 négy −8 2 −2 egy −2 egy −1
−1 egy −1 2 −1 egy −2 négy −8 16 −4 négy −2 négy −2 2
egy −2 egy −1 négy −8 2 −2 egy −1 egy −2 egy −1 2 −4
−1 2 −1 egy −8 16 −4 négy −2 2 −2 négy −1 egy −2 négy
négy −8 2 −2 egy −2 egy −1 egy −2 egy −1 2 −4 egy −1
−8 16 −4 négy −2 négy −2 2 −1 2 −1 egy −2 négy −1 egy
egy −1 négy −8 2 −2 egy −2 egy −1 2 −4 egy −1 egy −2
−2 2 −8 16 −4 négy −2 négy −1 egy −2 négy −1 egy −1 2

Kulcsgenerálás

A bemutatott algoritmus 128, 192 és 256 bites (16, 24 és 32 bájt ) beviteli kulcsokra alkalmazható . Az első alkulcs a beviteli kulcs első 16 bájtja. A többi kulcsot a következőképpen állítjuk elő: először a teljes forráskulcsot a kulcsregiszterbe írjuk 1 bájttal hosszabban, mint maga a kulcs (vagyis a regiszter hossza 17, 25 vagy 33 bájt különböző beviteli kulcsok esetén ). A kulcs összes bájtja modulo 2 bitenként összeadódik, az eredmény a regiszter utolsó bájtjába kerül. Minden következő kulcs megszerzéséhez a következő műveleteket kell végrehajtani a regiszter tartalmával ( i esetén 2-től 2-ig r +1):

  1. A kulcsregiszter bájtjainak tartalma ciklikusan 3 pozícióval balra tolódik el (az eltolás a bájton belül egyenként történik, és nem a regiszter egészében);
  2. 16 bájt van kiválasztva a regiszterből. Ebben az esetben a regiszter bájtjait választjuk ki a kulcshoz , az i - ediktől kezdve és tovább a ciklus mentén.
  3. A kiválasztott 16 bájt modulo 256 hozzáadásra kerül az offset szó bájtjaihoz (lásd alább). A hozzáadás eredménye az alkulcs lesz .

Az eltolási szavak  16 bájtos állandók, amelyeket a következő képlettel számítanak ki:

 - az i -edik eltolásszó j -edik bájtja . Ha akkor ezt a bájtot 0 váltja fel.

Nyilvánvaló, hogy mivel a titkosítási iterációk száma eltérő a különböző kulcshosszúságok esetén (és 128, 192 és 256 bites kulcsok esetén 8, 12 és 16), ezért nem minden eltolási blokk kerül felhasználásra. Tehát 128 bites kulcshosszúságnál csak a , ... lesz felhasználva 192 bites kulcs esetén - , ... és 256 bites kulcs esetén - az eltolás összes szava.

Kriptanalízis

A SAFER + algoritmus AES versenyen való részvétele kapcsán a kriptológusok nagyon nagy figyelmet fordítottak annak kriptoanalízisére. Ennek eredményeként számos támadást találtak az algoritmus ellen. Néhányat felsorolunk közülük:

Az AES verseny során a SAFER+ algoritmust a következőképpen jellemezték: [2]

SAFER++

Az algoritmus a SAFER+ továbbfejlesztése, és szinte teljesen örökli annak szerkezetét. A különbségek főként az algoritmus egyes szakaszainak optimalizálásában (a számítások megkönnyítésében) vannak. Kevesebb kört használ: hetet 128 bites kulcshoz, tízet 256 bites kulcshoz. Ebben a titkosításban a blokkhossz 128 bit, de ezen felül 64 bites blokkok használatakor „visszafelé kompatibilis” mód is biztosított.

Az algoritmus átkerült a NESSIE verseny második fázisába , de nem került kiválasztásra a NESSIE által ajánlott kriptográfiai primitívek készletébe. A szakértők úgy vélték, hogy a titkosítás túl lassú minden gépen, kivéve az intelligens kártyákat , és a titkosítás biztonsági határa túl kicsi [17] .

Algoritmus

A titkosítási eljárás jelentős része nem különbözik a SAFER+ algoritmustól . A fő különbség a lineáris transzformációs eljárásban rejlik, amelyet számítási szempontból jelentősen optimalizáltak (a SAFER+ -ban 16x16-os mátrixszal kell szorzást végezni, amihez nagyszámú bájtonkénti összeadás szükséges).

A lineáris transzformáció , amint az a diagramból látható, a következő lépésekből áll:

  1. A 16 bemeneti bájtot a következő sorrendben keverjük össze: [9, 6, 3, 16, 1, 14, 11, 8, 5, 2, 15, 12, 13, 10, 7, 4];
  2. Az új sorrendben lévő bájtok 4-es csoportokra vannak osztva. Mindegyik csoportot 4 pontos Hadamard pszeudo -transzformációnak vetünk alá ;
  3. Az átalakítás után a bájtokat ismét az 1. bekezdésben leírt sorrendben keverjük össze;
  4. A 2. tételhez hasonlóan a bájtok ismét Hadamard pszeudotranszformáción mennek keresztül . Az eredmény kimenet.

A Hadamard pszeudotranszformáció abból áll, hogy egy 4 bájtos karakterláncot megszorozunk egy 4x4-es nem szinguláris mátrixszal , amelynek a következő szerkezete van:

.

A visszafejtéshez használt inverz mátrix az

Ennek a megközelítésnek az az előnye a SAFER+ -ban alkalmazott 16x16 -os mátrixszal való szorzáshoz képest, hogy a lineáris transzformáció a Hadamard transzformációs mátrixok szerkezetéből adódóan lényegesen kevesebb elemi műveletet igényel. Ugyanis egy 16 bájtos karakterlánc 16x16-os mátrixszal való megszorzásakor általában 15*16 összeadás és 16*16 szorzás szükséges. A Hadamard transzformációs mátrixszal való szorzás mindössze 6 összeadási műveletet igényel: [13]

Ha a , b , c , d  bemeneti bájtok, A , B , C , D  kimeneti bájtok, akkor a számításokat képletekkel ábrázoljuk (az összeadás modulo 256 ):

(3 összeadási művelet), (1 hozzáadási művelet), (1 hozzáadási művelet), (1 összeadási művelet).

Így a mátrix 8-szorosának figyelembevételével is csak 6*8=48 műveletet kapunk, ami jóval kevesebb, mint a SAFER+ -ban (még ha figyelembe vesszük a SAFER++ algoritmusban végrehajtott összes bájtpermutációt is ).

A lineáris transzformáció teljes szerkezete, akárcsak a SAFER+ -ban, egy nem szinguláris 16x16 -os mátrixként ábrázolható . Ennek a mátrixnak a legtöbb eleme azonban egyenlő lesz eggyel. A dekódolási eljárás végrehajtásához szükséges inverz mátrixban az elemek többsége nulla lesz.

Kulcsgenerálás

A SAFER+-hoz képest a különböző titkosítási körökben használt alkulcs-generálási algoritmusban is vannak eltérések . Ebből a szempontból a SAFER+ és a SAFER++ közötti különbségek hasonlóak a SAFER K-64 és a SAFER K-128 közötti különbségekhez , abban az értelemben, hogy a páros és páratlan alkulcsok egymástól függetlenül jönnek létre a SAFER++- ban. Tekintsük részletesebben az algoritmust.

2 kulcsregisztert használnak , 16+1=17 bájt hosszúak. Ha a felhasználói kulcs hossza 128 bit (16 bájt), akkor ez a kulcs kezdetben mindkét regiszterbe kerül. Ha a kulcs hossza 256 bit (32 bájt), akkor az 1-től a 16-ig terjedő kulcsbájtok az első regiszterbe, a 17-től a 32-ig a másodikba kerülnek. A 17. bájt helyett az első 16 bájt bájt-ellenőrző összege kerül minden regiszterbe. Ezt követően i -re 1-től ( r  a titkosítási körök száma) a következő műveleteket hajtják végre ( i = 1,3, ... 2 r +1 esetén az első regisztert veszik figyelembe, ha i = 2,4, .. 2 r  - a második regiszter):

  1. 16 bájt kerül kiválasztásra a regiszterből, az i számmal kezdve, és tovább a ciklus mentén. Tehát egy i = 5-ös kulcsnál a bájtok a következőképpen kerülnek kiválasztásra: [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1, 2, 3 ],
  2. A fogadott bájtok hozzáadódnak a megfelelő eltolási szóhoz (lásd lent)
  3. A regiszter összes bájtjának tartalma 6 bittel elfordul, ha i páratlan, és 3 bittel, ha i páros .

Az eltolási szavak kiszámítása szinte ugyanúgy történik, mint a SAFER+ -ban, azzal a különbséggel, hogy az i paraméter tartományai megváltoznak :

Kriptanalízis

A NESSIE verseny részeként a SAFER++ algoritmust alaposan megvizsgálták a kriptográfiai erősség szempontjából. Szakértők szerint a korábbi SAFER+ algoritmus sebezhetősége nem öröklődött. Nem találtunk új támadást a teljes körű SAFER++ algoritmushoz . Ugyanakkor számos támadást hajtottak végre a csökkentett számú titkosítási körrel rendelkező rejtjelváltozatokon [9] [18] [19] Az egyik, mivel a szükséges számítások nagy száma miatt kivitelezhetetlen, elméletileg alkalmas a SAFER ++ feltörése hét helyett 5,5 körrel. [20] . Ez a támadás volt az egyik fő oka annak, hogy az algoritmus nem nyerte meg a versenyt. Ezenkívül egyes szakértők szerint az algoritmus tartalmazhat olyan gyengeségeket, amelyeket még nem azonosítottak. A fő ok az algoritmus elégtelen teljesítménye volt, amikor többbites eszközökön implementálták.

Gyakorlati felhasználás

Bár a SAFER algoritmusok nem kapták meg a szabványok státuszát az Egyesült Államokban vagy az EU -ban, nagyon széles körű alkalmazásra találtak. A SAFER+ különösen a Bluetooth hitelesítési protokoll alapja . Maga a Bluetooth titkosítási algoritmus azonban nem használja ezt az algoritmust [1] .

Annak ellenére, hogy az algoritmus nevében szerepel a „ gyors ” szó, a modern szabványok szerint a SAFER család algoritmusai meglehetősen lassúak.

Ami a kriptográfiai erősséget illeti, még a SAFER K-64 algoritmus legelső verziója is abszolút ellenáll a differenciális kriptoanalízisnek . A család utolsó algoritmusa, a SAFER++ még robusztusabb lett, mivel jelentősen módosították, hogy figyelembe vegyék az algoritmus korábbi verziói ellen végrehajtott számos támadást. Jelenleg nem találtak igazán megvalósítható támadást az algoritmus ellen [1] .

Figyelembe véve, hogy a SAFER algoritmusok mennyit fejlődtek a létezésük során - SAFER K-64- ről SAFER++ -ra , feltételezhetjük, hogy ezen algoritmusok fejlesztése még nem ért véget [2] .

Jegyzetek

  1. 1 2 3 4 Mukherjee, Ganguly, Naskar, 2009 .
  2. 1 2 3 4 5 Panasenko S.P. A titkosítási algoritmusok, a SAFER+ és SAFER++ titkosítások fejlődése (2007. július 12.). - Egy cikk a SAFER + és SAFER ++ algoritmusok részletes ismertetésével . Letöltve: 2009. november 12.  (elérhetetlen link)
  3. 1 2 B. Kiwi. Verseny az új kriptográfiai szabványért, az AES -ért (1999. április). — A SAFER+ algoritmus rövid leírása . Letöltve: 2009. november 12. Az eredetiből archiválva : 2011. július 3.
  4. Massey, 1994 .
  5. 1 2 3 4 5 6 7 Schneier B. 14. fejezet. És még több blokk titkosítás // Alkalmazott kriptográfia. Protokollok, algoritmusok, forráskód C nyelven = Applied Cryptography. Protokollok, algoritmusok és forráskód: C. - M . : Triumf, 2002. - S. 382-384. — 816 p. - 3000 példányban.  - ISBN 5-89392-055-4 .
  6. 1 2 3 4 Menezes, Oorschot, Vanstone, 1996 .
  7. 1 2 3 4 5 6 7 Panasenko S.P. The Evolution of Encryption Algorithms, SAFER K és SAFER SK Algorithms (2007. június 15.). - Egy cikk a SAFER K-64/128 és SAFER SK-64/128 algoritmusok részletes ismertetésével . Letöltve: 2009. november 12.  (elérhetetlen link)
  8. Panasenko S.P. A titkosítási algoritmusok feltörésének modern módszerei, 5. rész (nem elérhető link) (2006. december 25.). — A lehetetlen különbségek módszerének leírása. Letöltve: 2009. november 12. Az eredetiből archiválva : 2008. április 23.. 
  9. 1 2 3 4 Nakahara J. Jr., Preneel B., Vandewalle J. Impossible Differential Attacks on Redduced-Round SAFER Ciphers // Katholieke Universiteit Leuven, Belgium. - 2003. március 12.
  10. 1 2 Nakahara J. Jr. Block-rejtjelek kriptanalízise és tervezése // Katholieke Universiteit Leuven. - 2003. június.
  11. Savard, John SAFER (Biztonságos és gyors titkosítási rutin ) . — a SAFER K és SAFER SK algoritmusok leírása. Letöltve: 2009. december 22. Az eredetiből archiválva : 2012. január 30..  
  12. Panasenko S.P. Titkosítási algoritmusok – Az AES verseny döntősei (2006. augusztus 24.). - következtetéseket tartalmaz a SAFER + algoritmus jellemzőiről. Letöltve: 2009. november 12. Az eredetiből archiválva : 2012. január 30..
  13. 1 2 3 4 Baricsev, Goncharov, Szerov, 2011 .
  14. 1 2 Kelsey, Schneier, Wagner, 1999 .
  15. Biham, Shamir, 1999 .
  16. Chari, Jutla, Rao et al., 1999 .
  17. Új európai aláírási, integritási és titkosítási rendszerek  // v. 0,15. - Az IST-1999-12324 európai projekt zárójelentése, 2004. április 19. - 476. o .
  18. Nakahara J. Jr. Frissítés a SAFER++ lineáris kriptoanalíziséhez  //  Katholieke Universiteit Leuven, Belgium. - 2003. március 12.
  19. Piret G., Quisquater J.-J. Integral Cryptanalysis on redukált kör SAFER++  (angol)  // Universite catolique de Louvain, Louvain-la-Neuve, Belgium.
  20. Biryukov A., De Canniere C., Dellkrantz G. Cryptanalysis of SAFER++ (angol)  // KULeuven, Belgium. - 2003. Archiválva : 2006. május 15.  

Irodalom

Linkek

Oroszul

Más nyelveken