BEZPEČNĚJŠÍ | |
---|---|
Tvůrce | James Massey |
Vytvořeno | 1993 |
zveřejněno | 1993 |
Velikost klíče | 64 (128, 192, 256) bitů |
Velikost bloku | 64 (40, 128) bitů |
Počet kol | 6-16 |
Typ | Substitučně-permutační síť |
Mediální soubory na Wikimedia Commons |
SÁFER ( anglicky Secure And Fast Encryption Routine - bezpečný a rychlý šifrovací postup) - v kryptografii rodina symetrických blokových kryptografických algoritmů založených na substitučně-permutační síti . Hlavním příspěvkem k vývoji algoritmů byl James Massey . První verze šifry vznikla a vyšla v roce 1993 .
Existuje několik variant šifry, které se od sebe liší délkou šifrovacího klíče a velikostí bloků zdrojového textu.
První verze algoritmu , SAFER K-64 , byla vyvinuta Jamesem Masseyem pro kalifornskou korporaci Cylinc v roce 1993 [1] . Algoritmus, publikovaný ve stejném roce, měl 64bitový šifrovací blok a klíč . Pro něj bylo doporučeno použít 6 kol šifrování. Kvůli potřebě zvýšit délku klíče na 128 bitů (protože byla objevena slabina v původním algoritmu), Massey vyvinul novou verzi šifry SAFER K-128 , která byla zveřejněna příští rok po SAFER K-64. . Nový algoritmus zahrnoval klíčový plán vyvinutý singapurským ministerstvem vnitra a následně jej využívalo pro různé účely. Pro tento algoritmus bylo také doporučeno použít 10 (maximálně 12) šifrovacích kol.
O něco později, v prvních verzích algoritmu, byly odhaleny některé slabiny objevené Larsem Knudsenem a Seanem Murphym [1] . To znamenalo vytvoření nových verzí algoritmu nazvaných SAFER SK-64 a SAFER SK-128 , ve kterých byl změněn klíčový rozvrh podle schématu navrženého Knudsenem. Byla vyvinuta i varianta s délkou klíče sníženou na 40 bitů - SAFER SK-40 . Zkratka „ SK “ v názvu algoritmů znamená „ Strengthened Key schedule “ (Reinforced key schedule). Pro nové varianty šifer bylo navrženo použít ne 6, ale alespoň 8 (maximálně 10) šifrovacích kol.
Algoritmus SAFER+ byl vyvinut v roce 1998 kalifornskou korporací Cylinc spolu s Arménskou akademií věd pro účast v soutěži AES , kde prošlo pouze první kvalifikační kolo. Tato šifra má vstupní blok 128 bitů a velikost klíče 128, 192 nebo 256 bitů.
Poslední vytvořenou variantou algoritmu SAFER je SAFER++ , vyvinutý Massey v roce 2000 a stává se dalším vývojem algoritmu SAFER+ . Algoritmus se zúčastnil evropské soutěže algoritmů NESSIE , kde byl prezentován ve dvou verzích: šifra s 64bitovým blokem a 128bitovým blokem. Kvalifikoval se do druhé fáze soutěže, ale nebyl vybrán do souboru kryptografických primitiv doporučených společností NESSIE . Odborníci se domnívali, že šifra byla příliš pomalá na všech strojích kromě 8bitových (jako jsou čipové karty ) a bezpečnostní míra šifry byla příliš nízká [2] [3] .
Algoritmy SAFER nejsou soukromým majetkem a nejsou chráněny autorským právem, to znamená, že je lze používat bez jakýchkoli omezení. Protože se skládají výhradně z jednoduchých bajtových operací (s výjimkou bajtové rotace při generování klíče), mohou být tyto algoritmy implementovány procesory s malou bitovou hloubkou [4] .
Níže je souhrnná tabulka všech existujících variant šifry SAFER
titul | Angličtina | datum vytvoření | délka bloku | délka klíče | počet kol |
---|---|---|---|---|---|
BEZPEČNĚJŠÍ K-64 | klíč 64 bit | 1993 | 64 | 64 | 6 |
BEZPEČNĚJŠÍ K-128 | klíč 128 bit | 1995 | 64 | 128 | 10 (max. 12) |
BEZPEČNĚJŠÍ SK-64 | Plán zesíleného klíče, 64 bit | 1995 | 64 | 64 | 8 (minimálně 6, maximálně 10) |
BEZPEČNĚJŠÍ SK-128 | Plán zesíleného klíče, 128 bit | 1995 | 64 | 128 | 10 (max. 12) |
BEZPEČNĚJŠÍ SK-40 | Plán zesíleného klíče, 40 bitů | 1995 | 64 | 40 | |
SAFE+ | SAFER Plus | 1998 | 128 | 128, 192, 256 | 8, 12, 16 |
SAFER++ | SAFER Plus Plus | 2000 | 64, 128 | 128, 256 | 7, 10 |
Délka zašifrovaného bloku a délka klíče jsou 64 bitů. Algoritmus je iterativní bloková šifra , tj. stejná šifrovací funkce je postupně aplikována na vstupní blok r - krát, přičemž v každé fázi jsou použity různé klíče. Při každé iteraci (fáze, kole) v uvažovaném algoritmu se berou dva 64bitové podklíče.
Struktura jednoho kola algoritmu je znázorněna na obrázku. Popišme si algoritmus krok za krokem (pod i běží hodnoty od 1 do r , kde r je počet kol šifrování):
Po dokončení po sobě jdoucích kol se na získaný výsledek použije operace podobná odstavci 1, kde se jako klíč použije poslední podklíč.
Autor algoritmu doporučuje používat kola, ale pro zvýšení spolehlivosti můžete jejich počet zvýšit [5] .
Dešifrování se provádí v opačném pořadí, ale operace jsou obrácené. Operace sčítání modulo 256 jsou tedy nahrazeny operacemi odčítání a sčítání modulo 2 se provádí stejným způsobem jako při šifrování. Operace a jsou vyměněny. Hadamardovy pseudotransformace jsou nahrazeny inverzními ( Inverse PHT , IPHT ), které působí následovně:
První šifrovací klíč je tajný klíč zadaný uživatelem. Každý následující šifrovací klíč se získá z předchozího podle vzorce (sčítání se provádí modulo 256, přičemž bajty se sčítají samostatně). Operace „ “ je zde cyklický posun bajtu po byte doleva o 3 bity, to znamená, že k posunu dochází v rámci každého jednotlivého bajtu klíče. Hodnota se nazývá konstanta stupně šifrování. Můžete to získat následovně: jestliže — j -tý bajt konstanty i -tého stupně, pak všechny konstanty stupňů jsou vyjádřeny následujícím vzorcem: [5] . Takto získané stavové konstanty se chovají jako náhodná čísla s dobrou přesností. Hodnoty všech těchto konstant se zpravidla ukládají do speciálních tabulek, aby se zkrátil čas na výpočty.
Formální popis algoritmu generování klíčů: [6]
INPUT: 64bitový klíč ; počet kol .
VÝSTUP: 64bitové podklíče . Byte - klíčový bajt (číslování zleva doprava).
James Massey dokázal, že po šesti kolech šifrování poskytuje algoritmus SAFER K-64 absolutní odolnost vůči diferenciální kryptoanalýze [5] . Zároveň se po třech kolech šifrování stává lineární kryptoanalýza pro hackování neúčinná [5] .
Navzdory tomu byla v roce 1995 objevena slabina v algoritmu klíčové generace pro SAFER K-64 Larsem Knudsenem . Ukázal [5] , že pro jakýkoli šifrovací klíč lze nalézt jeden nebo více (až devět) klíčů (lišících se od něj hodnotou pouze jednoho bajtu), takže při šifrování dvou různých otevřených textů je jeden a tentýž šifrovaný text získané, které lze zapsat ve tvaru . Počet různých otevřených textů M, ze kterých je získán stejný šifrový text, leží v intervalu mezi a z možných textů. Analýzou od do prostého textu lze tedy vypočítat 8 bitů 64bitového tajného klíče. Tento útok dále posílili John Kelsey , Bruce Schneier a David Wagner ( anglicky David A. Wagner ). Autoři útoku tvrdili, že algoritmus je snadno přístupný útokům na související klíče díky velmi jednoduchému a jednotnému postupu pro generování podklíčů [7] .
Tato vlastnost výrazně snižuje spolehlivost algoritmu SAFER K-64 při použití jako jednosměrná hašovací funkce . Jeho spolehlivost jako šifrovacího algoritmu se nesnižuje. Tato slabina algoritmu spolu s útokem později publikovaným Murphym však přiměla Masseyho ke zlepšení algoritmu generování klíčů. Jako výsledek, v září 1995 publikoval SAFER SK-64 algoritmus .
Další certifikovaný útok na algoritmus SAFER K- 64 provedli Lars Knudsen a Thomas A. Berson 6Byl navržen pro prostý text délky , zašifrovaný 5 koly algoritmu SAFER K-64 . Přestože tento útok nebyl schopen prolomit šifrovaný text ani po 6 kolech šifrování, ukázal, že šifrovací síla algoritmu byla menší, než Massey původně tvrdil (prohlásil, že algoritmus je absolutně odolný vůči metodám lineární kryptoanalýzy ).
Francouzský kryptograf Serge Vaudenay ( fr. Serge Vaudenay ) ukázal, že když je obsah S-boxů nahrazen náhodnými permutacemi , algoritmus SAFER K-64 se stává méně odolným vůči kryptoměnám [6] .
Algoritmus se liší od SAFER K-64 pouze délkou uživatelského klíče a tedy i samotnou metodou generování klíče . Tuto metodu vyvinulo Ministerstvo vnitra Singapuru [5] a následně ji použil James Massey ve svém algoritmu.
Tento algoritmus používá 128bitový klíč namísto jednoho 64bitového klíče, což je ekvivalentní zadání dvou 64bitových klíčů. Z těchto dvou klíčů se pomocí metody velmi podobné metodě použité v šifře SAFER K-64 vygenerují dvě nezávislé sekvence podklíčů. Klíče z těchto sekvencí se střídavě používají ve všech kolech šifrování.
Jak je vidět z diagramu, v každé fázi jsou klíčové bajty bitově posunuty nikoli o 3, ale o 6 bitů. To vede k tomu, že při stejných počátečních klíčích dostaneme, že 128bitový klíč je kompatibilní s 64bitovým klíčem . To znamená, že pomocí typového klíče v algoritmu SAFER K-128 a klíče v SAFER K-64 získáme stejné sekvence podklíčů, což znamená, že samotné šifrování v SAFER K-128 se nebude nijak lišit od šifrování v SAFER K-128. BEZPEČNĚJŠÍ K-64 .
Navzdory podobnosti algoritmu SAFER K-128 s jeho předchůdcem existuje řada rozdílů. Takže v nové verzi algoritmu James Massey doporučuje použít ne 6, ale 10 (maximálně 12) kol šifrování [7] . To je způsobeno skutečností, že s menším počtem iterací je algoritmus, stejně jako SAFER K-64 , vystaven útoku Larse Knudsenovi . Připomeňme, že jde o použití algoritmu jako základu pro hashovací funkci . Zvýšení počtu šifrovacích kol podle autora výrazně zvyšuje kryptografickou sílu algoritmu v tomto smyslu [7] .
Tento algoritmus se od SAFER K-64 liší pouze způsobem generování podklíčů. Tuto metodu navrhl Lars Knudsen poté, co také našel útok na algoritmus SAFER K-64 . Doporučený počet kol šifrování byl zvýšen z 6 na 8 [7] . Rozdíly v klíčových expanzních metodách jsou jasně viditelné ve formálním popisu algoritmu:
Formální popis algoritmu generování klíčů: [6]
INPUT: 64bitový klíč ; počet kol .
VÝSTUP: 64bitové podklíče . Byte - klíčový bajt (číslování zleva doprava).
Hlavním rozlišovacím znakem tohoto algoritmu je použití dalšího bajtu , který se získá bitovým přidáním osmi bajtů klíče. Dále se v každé fázi algoritmu tyto bajty cyklicky posouvají, v důsledku toho se ukazuje, že podklíč závisí na bytech , podklíč závisí na bytech , podklíč závisí na bytech atd. Bitový posun o 3 bity a struktura šifrovacích konstant zůstává nezměněna.
Takové zdánlivě malé změny v algoritmu generování klíčů významně zvyšují kryptografickou sílu algoritmu. V současné době nejsou známy žádné útoky na algoritmy SAFER SK-64 a SAFER SK-128 , které by byly účinnější než vyhledávání hrubou silou [ 7] .
Zároveň existují útoky zaměřené na zkrácené verze těchto algoritmů. Zde jsou některé z nich: [7]
Jak vidíte, všechny tyto útoky nejsou příliš praktické, protože vyžadují poměrně hodně zdrojů a času.
Tento šifrovací algoritmus se liší od SAFER SK-64 přesně stejným způsobem, jakým se SAFER K-128 liší od SAFER K-64 . Jmenovitě, samotné šifrovací algoritmy a algoritmy generování podklíčů zůstávají stejné, ale místo jednoho počátečního 64bitového klíče jsou použity dva takové klíče, pro každý z nich jsou nezávisle vytvořeny sekvence podklíčů, které jsou pak postupně aplikovány. Každá sekvence pro sudé a liché klíče má navíc podobnou strukturu jako algoritmus rozšíření klíče v SAFER SK-64 . V něm se stejným způsobem v první fázi zavádí další bajt, což je modulo 2 součet zbývajících osmi bajtů, a pak v každé fázi dochází k cyklickému posunu byte po byte.
Pokud jde o algoritmy SAFER K-64 a SAFER K-128 , při použití klíče vlastního zobrazení v SAFER SK-128 a klíče v SAFER SK-64 je účinek algoritmů naprosto stejný. Počet šifrovacích kol doporučených pro SAFER SK-128 přitom zůstává stejný jako u SAFER K-128 a je roven 10 [7] .
Tato verze šifry používá redukovaný klíč na pouhých 40 bitů (5 bajtů ). To umožnilo algoritmu obejít exportní omezení , která v té době existovala ve Spojených státech . Algoritmus funguje téměř stejně jako SAFER SK-64 , s jedním malým rozdílem v počáteční fázi generování podklíče.
V algoritmu SAFER SK-64 byl devátý bajt přiřazen 8 bytům původního klíče , což se rovná jejich bitovému součtu modulo 2 . V SAFER SK-40 je těchto 9 bajtů získáno zcela jiným způsobem. Označme je , , … . Prvních 5 z nich jsou bajty původního klíče. Zbývající 4 bajty se získají z prvních takto [11] :
,
,
,
;
První podklíč se získá z prvních osmi přijatých bajtů. Následující podklíče jsou pomocí nich generovány přesně stejným způsobem jako v algoritmu SAFER SK-64 .
SAFER+ je vylepšená verze rodiny algoritmů SAFER . Algoritmus byl vyvinut v roce 1998 , aby soutěžil o standard AES . Na jeho vzniku spolupracovali specialisté z kalifornské korporace Cylinc ( James Massey ) a Akademie věd Arménské republiky (Gurgen Khachatryan a Melsik Kuregyan) [2] .
V soutěži AES prošel algoritmus prvním kvalifikačním kolem spolu s dalšími 14 algoritmy. SAFER+ se nedostal do finále soutěže, do kterého bylo povoleno pouze 5 algoritmů , protože podle výsledků důkladné analýzy se ukázalo, že je náchylný k řadě útoků a má nízkou rychlost provádění [ 12] . Algoritmus byl vytvořen pro práci na 8bitových procesorech a v důsledku toho na 32bitových procesorech pracuje poměrně pomalu [3] .
SAFER+ zpracovává data ve 128bitových blocích. Algoritmus podporuje 128, 192 a 256bitové klíče v souladu s požadavky stanovenými americkým Národním institutem pro standardy a technologie (NIST) [13] . Počet kol šifrování závisí na velikosti klíče:
Struktura algoritmu SAFER+ připomíná SAFER K-64 . Skládá se ze stejných hlavních etap, mírně odlišných ve své struktuře. V každém kole algoritmu je nejprve smíchán jeden podklíč, poté bajty projdou nelineárními náhradními bloky, poté se smísí druhý podklíč a bajty se lineárně smíchají. Podklíče se generují postupně pomocí vstupního klíče. Níže je podrobnější popis práce jedné iterace ( i je číslo iterace):
Po r kolech šifrování se provede míchání klíčů , podobně jako míchání klíčů .
Operace v dešifrovacím algoritmu jsou podobné operacím šifrování a provádějí se v opačném pořadí. Rozdíl je následující:
2 | 2 | jeden | jeden | 16 | osm | 2 | jeden | čtyři | 2 | čtyři | 2 | jeden | jeden | čtyři | čtyři |
jeden | jeden | jeden | jeden | osm | čtyři | 2 | jeden | 2 | jeden | čtyři | 2 | jeden | jeden | 2 | 2 |
jeden | jeden | čtyři | čtyři | 2 | jeden | čtyři | 2 | čtyři | 2 | 16 | osm | 2 | 2 | jeden | jeden |
jeden | jeden | 2 | 2 | 2 | jeden | 2 | jeden | čtyři | 2 | osm | čtyři | jeden | jeden | jeden | jeden |
čtyři | čtyři | 2 | jeden | čtyři | 2 | čtyři | 2 | 16 | osm | jeden | jeden | jeden | jeden | 2 | 2 |
2 | 2 | 2 | jeden | 2 | jeden | čtyři | 2 | osm | čtyři | jeden | jeden | jeden | jeden | jeden | jeden |
jeden | jeden | čtyři | 2 | čtyři | 2 | 16 | osm | 2 | jeden | 2 | 2 | čtyři | čtyři | jeden | jeden |
jeden | jeden | 2 | jeden | čtyři | 2 | osm | čtyři | 2 | jeden | jeden | jeden | 2 | 2 | jeden | jeden |
2 | jeden | 16 | osm | jeden | jeden | 2 | 2 | jeden | jeden | čtyři | čtyři | čtyři | 2 | čtyři | 2 |
2 | jeden | osm | čtyři | jeden | jeden | jeden | jeden | jeden | jeden | 2 | 2 | čtyři | 2 | 2 | jeden |
čtyři | 2 | čtyři | 2 | čtyři | čtyři | jeden | jeden | 2 | 2 | jeden | jeden | 16 | osm | 2 | jeden |
2 | jeden | čtyři | 2 | 2 | 2 | jeden | jeden | jeden | jeden | jeden | jeden | osm | čtyři | 2 | jeden |
čtyři | 2 | 2 | 2 | jeden | jeden | čtyři | čtyři | jeden | jeden | čtyři | 2 | 2 | jeden | 16 | osm |
čtyři | 2 | jeden | jeden | jeden | jeden | 2 | 2 | jeden | jeden | 2 | jeden | 2 | jeden | osm | čtyři |
16 | osm | jeden | jeden | 2 | 2 | jeden | jeden | čtyři | čtyři | 2 | jeden | čtyři | 2 | čtyři | 2 |
osm | čtyři | jeden | jeden | jeden | jeden | jeden | jeden | 2 | 2 | 2 | jeden | 2 | jeden | čtyři | 2 |
2 | −2 | jeden | −2 | jeden | −1 | čtyři | −8 | 2 | −4 | jeden | −1 | jeden | −2 | jeden | −1 |
−4 | čtyři | −2 | čtyři | −2 | 2 | −8 | 16 | −2 | čtyři | −1 | jeden | −1 | 2 | −1 | jeden |
jeden | −2 | jeden | −1 | 2 | −4 | jeden | −1 | jeden | −1 | jeden | −2 | 2 | −2 | čtyři | −8 |
−2 | čtyři | −2 | 2 | −2 | čtyři | −1 | jeden | −1 | jeden | −1 | 2 | −4 | čtyři | −8 | 16 |
jeden | −1 | 2 | −4 | jeden | −1 | jeden | −2 | jeden | −2 | jeden | −1 | čtyři | −8 | 2 | −2 |
−1 | jeden | −2 | čtyři | −1 | jeden | −1 | 2 | −2 | čtyři | −2 | 2 | −8 | 16 | −4 | čtyři |
2 | −4 | jeden | −1 | jeden | −2 | jeden | −1 | 2 | −2 | čtyři | −8 | jeden | −1 | jeden | −2 |
−2 | čtyři | −1 | jeden | −1 | 2 | −1 | jeden | −4 | čtyři | −8 | 16 | −2 | 2 | −2 | čtyři |
jeden | −1 | jeden | −2 | jeden | −1 | 2 | −4 | čtyři | −8 | 2 | −2 | jeden | −2 | jeden | −1 |
−1 | jeden | −1 | 2 | −1 | jeden | −2 | čtyři | −8 | 16 | −4 | čtyři | −2 | čtyři | −2 | 2 |
jeden | −2 | jeden | −1 | čtyři | −8 | 2 | −2 | jeden | −1 | jeden | −2 | jeden | −1 | 2 | −4 |
−1 | 2 | −1 | jeden | −8 | 16 | −4 | čtyři | −2 | 2 | −2 | čtyři | −1 | jeden | −2 | čtyři |
čtyři | −8 | 2 | −2 | jeden | −2 | jeden | −1 | jeden | −2 | jeden | −1 | 2 | −4 | jeden | −1 |
−8 | 16 | −4 | čtyři | −2 | čtyři | −2 | 2 | −1 | 2 | −1 | jeden | −2 | čtyři | −1 | jeden |
jeden | −1 | čtyři | −8 | 2 | −2 | jeden | −2 | jeden | −1 | 2 | −4 | jeden | −1 | jeden | −2 |
−2 | 2 | −8 | 16 | −4 | čtyři | −2 | čtyři | −1 | jeden | −2 | čtyři | −1 | jeden | −1 | 2 |
Prezentovaný algoritmus je použitelný pro vstupní klíče o délce 128, 192 a 256 bitů (16, 24 a 32 bytů , v tomto pořadí). První podklíč je prvních 16 bajtů vstupního klíče. Zbytek klíčů se generuje následovně: nejprve se celý zdrojový klíč zapíše do registru klíčů o 1 bajt delší než samotný klíč (to znamená, že délka registru je 17, 25 nebo 33 bajtů pro různé vstupní klíče ). Všechny bajty klíče se modulo sečtou 2 bit po bitu, výsledek se zapíše do posledního bajtu registru. Pro získání každého dalšího klíče se s obsahem registru provedou následující operace (pro i od 2 do 2 r +1):
Offsetová slova jsou 16bajtové konstanty vypočítané pomocí následujícího vzorce:
— j -tý bajt i -tého offsetového slova. Pokud pak, je tento bajt nahrazen 0.
Je jasné, že protože počet iterací šifrování je různý pro různé délky klíče (a je roven 8, 12 a 16 pro klíče 128, 192 a 256 bitů, v tomto pořadí), pak nebudou použity všechny offsetové bloky. Takže s délkou klíče 128 bitů se použije pouze , ... , pro klíč 192 bitů - , ... a pro klíč 256 bitů - všechna slova ofsetu.
V souvislosti s účastí algoritmu SAFER + v soutěži AES byla velmi velká pozornost kryptologů věnována jeho kryptoanalýze. V důsledku toho bylo nalezeno několik útoků na algoritmus. Uvádíme některé z nich:
Během soutěže AES byl algoritmus SAFER+ charakterizován následovně: [2]
Algoritmus je dalším vývojem SAFER+ a téměř kompletně zdědil jeho strukturu. Rozdíly jsou především v optimalizaci (z hlediska usnadnění výpočtů) některých částí algoritmu. Používá méně kol: sedm pro 128bitový klíč a deset pro 256bitový klíč. Délka bloku v této šifře je 128 bitů, ale navíc je poskytován režim „zpětně kompatibilní“ při použití bloků o délce 64 bitů.
Algoritmus prošel do druhé fáze soutěže NESSIE , ale nebyl vybrán do sady kryptografických primitiv doporučených společností NESSIE . Odborníci se domnívali, že šifra byla příliš pomalá na všech strojích kromě čipových karet a bezpečnostní míra šifry byla příliš malá [17] .
Významná část postupu šifrování se neliší od postupu v algoritmu SAFER+ . Hlavní rozdíl spočívá v lineární transformační proceduře, která byla výrazně optimalizována z výpočetního hlediska (v SAFER+ je nutné provádět násobení s maticí 16x16, což vyžaduje velké množství sčítání bajtu po byte).
Lineární transformace , jak je vidět z diagramu, se skládá z následujících kroků:
Hadamardova pseudotransformace spočívá ve vynásobení 4bajtového řetězce nesingulární maticí 4x4 , která má následující strukturu:
.Inverzní matice používaná při dešifrování je
Výhodou tohoto přístupu ve srovnání s násobením maticí 16x16 používanou v SAFER+ je, že lineární transformace vyžaduje díky struktuře Hadamardových transformačních matic výrazně méně elementárních operací. Konkrétně při násobení 16bajtového řetězce maticí 16x16 to obvykle trvá 15*16 sčítání a 16*16 násobení. Násobení Hadamardovou transformační maticí vyžaduje pouze 6 operací sčítání: [13]
Jestliže a , b , c , d jsou vstupní bajty, A , B , C , D jsou výstupní bajty, pak výpočty reprezentují vzorce (sčítání se provádí modulo 256 ):
(3 operace přidání), (1 operace přidání), (1 operace přidání), (1 operace přidání).I když tedy vezmeme v úvahu, že matice je násobena 8krát, dostaneme pouze 6*8=48 operací, což je mnohem méně než v SAFER+ (i když vezmeme v úvahu všechny byte permutace provedené v algoritmu SAFER++ ).
Celou strukturu lineární transformace lze znázornit, stejně jako v SAFER+ , jako nesingulární matici 16x16 . Většina prvků v této matici se však bude rovnat jedné. V inverzní matici potřebné k provedení dešifrovací procedury bude většina prvků rovna nule.
Existují také určité rozdíly oproti SAFER+ v algoritmu generování podklíče používaného v různých šifrovacích kolech. V tomto ohledu jsou rozdíly mezi SAFER+ a SAFER++ podobné těm mezi SAFER K-64 a SAFER K-128 v tom smyslu, že sudé a liché podklíče jsou v SAFER++ generovány nezávisle. Podívejme se na algoritmus podrobněji.
Používají se 2 klíčové registry dlouhé 16+1=17 bajtů. Pokud je délka uživatelského klíče 128 bitů (16 bajtů), je tento klíč zpočátku zapsán do obou registrů. Pokud je délka klíče 256 bitů (32 bajtů), bajty klíče od 1. do 16. se zapisují do prvního registru a od 17. do 32. do druhého. Místo 17. bajtu je do každého registru vložen bajtový kontrolní součet z prvních 16 bajtů. Poté, pro i od 1 do ( r je počet šifrovacích kol), se provedou následující akce (pro i = 1,3, ... 2 r +1 se uvažuje první registr, pro i = 2,4, .. 2 r - druhý registr):
Offsetová slova se počítají téměř stejným způsobem jako v SAFER+ , pouze s tím rozdílem, že se mění rozsahy parametru i :
V rámci soutěže NESSIE byl algoritmus SAFER++ pečlivě prozkoumán z hlediska kryptografické síly. Podle odborníků nebyly zranitelnosti předchozího algoritmu SAFER+ zděděny. Pro úplný algoritmus SAFER++ nebyly nalezeny žádné nové útoky . Zároveň byla provedena řada útoků na varianty šifry se sníženým počtem šifrovacích kol [9] [18] [19] Jeden z nich, vzhledem k obrovskému množství nutných výpočtů neproveditelný, je teoreticky schopen cracking SAFER ++ s 5,5 ranami místo sedmi. [20] . Tento útok byl jedním z hlavních důvodů, proč algoritmus soutěž nevyhrál. Podle některých odborníků může algoritmus také obsahovat slabiny, které dosud nebyly identifikovány. Hlavním důvodem byl nedostatečný výkon algoritmu při implementaci na vícebitových zařízeních.
Algoritmy SAFER sice nezískaly status standardů v USA nebo EU , ale našly velmi široké uplatnění. Jako základ ověřovacího protokolu Bluetooth se používá zejména SAFER+ . Samotný šifrovací algoritmus v Bluetooth však tento algoritmus nepoužívá [1] .
Navzdory skutečnosti, že se v názvu algoritmu objevuje slovo „ rychlý “, jsou podle moderních standardů algoritmy rodiny SAFER poměrně pomalé.
Z hlediska kryptografické síly je i úplně první verze algoritmu SAFER K-64 absolutně odolná vůči diferenciální kryptoanalýze . Poslední algoritmus rodiny, SAFER++ , se stal ještě robustnějším, protože byl výrazně upraven, aby zohlednil mnoho útoků prováděných na dřívějších verzích algoritmu. V současné době nebyly nalezeny žádné skutečně proveditelné útoky na algoritmus [1] .
Vzhledem k tomu, jak daleko pokročily algoritmy SAFER za dobu své existence - od SAFER K-64 po SAFER++ , můžeme předpokládat, že vývoj těchto algoritmů není u konce [2] .
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |