BEZPEČNĚJŠÍ

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 .

Historie

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

SAFER K-64

Šifrovací algoritmus

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í):

  1. Vstupní blok B a oba klíče a jsou rozděleny na 8 částí po jednom bajtu (8 bitů ). Odpovídající podbloky vstupního textu a klíče jsou buď přidány modulo dva ( operace XOR ) - pro podbloky č. 1, 4, 5 a 8, nebo přidány podle obvyklých pravidel (operace sčítání bajtů modulo 256) - pro podbloky č. 2, 3, 6 7.
  2. Výsledky sčítání procházejí tzv. S-boxy ( S-boxy ). Jejich obsahem je jedna z nelineárních operací: (kde y = 0, když x = 128) nebo (y = 128, když x = 0). Zde x  je vstupní bajt, y  je výstupní bajt. Tyto operace jsou operacemi na konečném poli GF(257), kde 45 je primitivní prvek pole. Protože je pokaždé velmi nepohodlné počítat výsledky těchto operací v praktických implementacích algoritmu, zpravidla se k získání výsledků jejich činnosti používají speciálně sestavené tabulky.
  3. Operace podobná položce 1 se provede s výsledky předchozí akce, pouze s tím rozdílem, že se použije druhý podklíč a operace XOR a modulo 256 jsou obráceny.
  4. Výsledné bajty procházejí víceúrovňovým systémem transformací, které se vzájemně sčítají v jiném pořadí. To se provádí za účelem dosažení lepšího lavinového efektu , tj. zvýšení závislosti výstupních bitů na všech bitech vstupního bloku. Na diagramu jsou transformace prezentovány jako síť operací sčítání modulo 256. Tato síť je ekvivalentní třem úrovním Hadamardových pseudo -transformací ( Pseudo-Hadamardova transformace , PHT ) [5] . Každá transformace se chová tak, že se vstupními bajty a na výstupu dostaneme:

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šifrovací algoritmus

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ě:

Generování klíčů

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).

  1. Nechť jsou  8bitové hodnoty. Nechť  je j -tý bajt konstanty i -tého stupně šifrování.
  2. .
  3. .
  4. Pro od do :
    • pro 1 až 8: .
    • pro 1 až 8: .

Algoritmus kryptoanalýzy

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] .

SAFER K-128

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.

Generování klíčů

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 .

Kryptoanalýza

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] .

SAFER SK-64

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).

  1. Nechť jsou  8bitové hodnoty. Nechť být  -byte konstanty -tého stupně šifrování.
  2. ; (přidání se provádí modulo 2).
  3. Pro od do :
    • pro 1 až 9: .
    • pro 1 až 8: .

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.

Kryptoanalýza

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.

SAFER SK-128

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] .

SAFER SK-40

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+

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:

Šifrovací algoritmus

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):

  1. Překrytí klíče : bajty vstupního bloku jsou přidány do bajtů klíče pomocí sčítání modulo 2 pro bajty očíslované 1, 4, 5, 8, 9, 12, 13 a 16 a přidání modulo 256 pro bajty očíslované 2, 3, 6 , 7, 10, 11, 14 a 15.
  2. Nelineární převod : jsou provozovány bajty s čísly 1, 4, 5, 8, 9, 12, 13 a 16 ( nahrazeny nulou). Bajty s čísly 2, 3, 6, 7, 10, 11, 14 a 15 podléhají operaci (a ). výsledky těchto operací, stejně jako pro jiné varianty algoritmu SAFER, jsou v praxi často uloženy ve speciálních tabulkách. V tomto případě to vyžaduje 512 bajtů.
  3. Překrytí klíče : bajty vstupního bloku se sčítají s byty klíče , ale na rozdíl od položky 1 jsou operace sčítání modulo 2 a modulo 256 zaměněny.
  4. Lineární transformace : násobení 16bajtového datového bloku vpravo speciální nesingulární maticí M (všechny operace jsou založeny na bytech a provádějí se modulo 256 ). Násobení touto maticí je ekvivalentní čtyřem úrovním transformace PHT , mezi kterými se provádějí některé byte permutace [2] . Tato část algoritmu je z výpočetního hlediska nejnáročnější.

Po r kolech šifrování se provede míchání klíčů , podobně jako míchání klíčů .

Dešifrovací algoritmus

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í:

  1. Místo matice dochází k násobení s její inverzní maticí ;
  2. Všechny operace sčítání modulo 256 jsou nahrazeny operacemi odčítání;
  3. Operace a (které jsou vzájemně inverzní) jsou zaměněny.
Při šifrování se používá následující matice M : [13]
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
Při dešifrování se používá inverzní matice : [13]
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

Generování klíčů

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):

  1. Obsah bajtů registru klíčů se cyklicky posouvá doleva o 3 pozice (k posunu dochází v rámci bajtů jednotlivě, nikoli v registru jako celku);
  2. Z registru je vybráno 16 bajtů. V tomto případě jsou pro klíč vybrány bajty registru , počínaje i -tým a dále v cyklu.
  3. Vybraných 16 bytů je přidáno modulo 256 k bytům offsetového slova (viz níže). Výsledkem přidání bude podklíč .

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.

Kryptoanalýza

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]

SAFER++

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] .

Algoritmus

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ů:

  1. 16 vstupních bajtů se zamíchá v následujícím pořadí: [9, 6, 3, 16, 1, 14, 11, 8, 5, 2, 15, 12, 13, 10, 7, 4];
  2. Byty v novém pořadí jsou rozděleny do skupin po 4. Každá skupina je podrobena 4bodové Hadamardově pseudo -transformaci ;
  3. Po převodu se bajty opět smíchají ve stejném pořadí jako v odstavci 1;
  4. Podobně jako u položky 2 procházejí bajty opět Hadamardovými pseudo-transformacemi . Výsledkem je výstup.

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.

Generování klíčů

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):

  1. Z registru je vybráno 16 bajtů, počínaje číslem i a dále v cyklu. Takže pro klíč s číslem i =5 budou bajty vybrány následovně: [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1, 2, 3 ],
  2. Přijaté bajty jsou přidány k odpovídajícímu offsetovému slovu (viz níže)
  3. Obsah všech bajtů registru je otočen o 6 bitů, pokud je i liché, a o 3 bity, pokud je i sudé .

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 :

Kryptoanalýza

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.

Praktické použití

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] .

Poznámky

  1. 1 2 3 4 Mukherjee, Ganguly, Naskar, 2009 .
  2. 1 2 3 4 5 Panasenko S.P. Vývoj šifrovacích algoritmů, šifer SAFER+ a SAFER++ (12. července 2007). - Článek s podrobnou diskusí o algoritmech SAFER + a SAFER ++ . Staženo: 12. listopadu 2009.  (nepřístupný odkaz)
  3. 1 2 B. Kiwi. Soutěž o nový krypto standard AES (duben 1999). — Stručný popis algoritmu SAFER+ . Získáno 12. listopadu 2009. Archivováno z originálu 3. července 2011.
  4. Massey, 1994 .
  5. 1 2 3 4 5 6 7 Schneier B. Kapitola 14. A další blokové šifry // Aplikovaná kryptografie. Protokoly, algoritmy, zdrojový kód v jazyce C = Aplikovaná kryptografie. Protocols, Algorithms and Source Code in C. - M .: Triumf, 2002. - S. 382-384. — 816 s. - 3000 výtisků.  - 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. Evoluce šifrovacích algoritmů, SAFER K a SAFER SK Algorithms (15. června 2007). - Článek s podrobnou diskusí o algoritmech SAFER K-64/128 a SAFER SK-64/128 . Staženo: 12. listopadu 2009.  (nepřístupný odkaz)
  8. Panasenko S.P. Moderní metody prolomení šifrovacích algoritmů, část 5 (nedostupný odkaz) (25. prosince 2006). — Popis metody nemožných diferenciálů. Získáno 12. listopadu 2009. Archivováno z originálu dne 23. dubna 2008. 
  9. 1 2 3 4 Nakahara J.Jr., Preneel B., Vandewalle J. Impossible Differential Attacks on Reduced-Round SAFER Ciphers // Katholieke Universiteit Leuven, Belgium. - 12. března 2003.
  10. 1 2 Nakahara J.Jr. Kryptoanalýza a návrh blokových šifer // Katholieke Universiteit Leuven. - červen 2003.
  11. Savard, John SAFER (Rutina bezpečného a rychlého šifrování ) . — popis algoritmů SAFER K a SAFER SK. Získáno 22. prosince 2009. Archivováno z originálu 30. ledna 2012.  
  12. Panasenko S.P. Šifrovací algoritmy - Finalisté soutěže AES (24. srpna 2006). - obsahuje závěry o vlastnostech algoritmu SAFER +. Získáno 12. listopadu 2009. Archivováno z originálu 30. ledna 2012.
  13. 1 2 3 4 Barichev, Goncharov, Serov, 2011 .
  14. 1 2 Kelsey, Schneier, Wagner, 1999 .
  15. Biham, Shamir, 1999 .
  16. Chari, Jutla, Rao a kol., 1999 .
  17. Nová evropská schémata pro podpisy, integritu a šifrování  // v. 0,15. - Závěrečná zpráva evropského projektu IST-1999-12324, 19. dubna 2004. - S. 476 .
  18. Nakahara J.Jr. Aktualizace lineární kryptoanalýzy SAFER++  //  Katholieke Universiteit Leuven, Belgie. - 12. března 2003.
  19. Piret G., Quisquater J.-J. Integrální kryptoanalýza na redukovaném cyklu SAFER++  (anglicky)  // Universite catolique de Louvain, Louvain-la-Neuve, Belgie.
  20. Biryukov A., De Canniere C., Dellkrantz G. Cryptanalysis of SAFER++ (anglicky)  // KULeuven, Belgium. - 2003. Archivováno 15. května 2006.  

Literatura

Odkazy

V ruštině

V jiných jazycích