Smítko | |
---|---|
Tvůrce | NSA |
zveřejněno | 2013 _ |
Velikost klíče | 64, 72, 96, 128, 144, 192 nebo 256 bitů |
Velikost bloku | 32, 48, 64, 96 nebo 128 bitů |
Počet kol | 22-34, závisí na velikosti bloku a klíči |
Typ | ARX |
Speck je rodina snadno implementovatelných blokových šifer publikovaná americkou NSA v červnu 2013 [1] . Šifry Speck jsou optimalizovány pro softwarové implementace, zatímco Simon publikovaný s nimi je optimalizován pro hardwarové implementace. Speck patří do rodiny ARX ( add-rotate-xor ) .
Speck podporuje několik velikostí bloků a klíčů. Blok jsou dvě slova a slovo může mít velikost 16, 24, 32, 48 nebo 64 bitů. Klíč má velikost 2, 3 nebo 4 slova. Kruhová funkce se skládá z několika fází:
Počet kol závisí na zvoleném slově a délce klíče: [2]
Velikost bloku (bity) | Velikost klíče (bity) | kola |
---|---|---|
2x16 = 32 | 4x16 = 64 | 22 |
2x24 = 48 | 3x24 = 72 | 22 |
4x24=96 | 23 | |
2x32 = 64 | 3x32 = 96 | 26 |
4x32 = 128 | 27 | |
2x48 = 96 | 2x48 = 96 | 28 |
3x48 = 144 | 29 | |
2x64 = 128 | 2x64 = 128 | 32 |
3x64 = 192 | 33 | |
4x64 = 256 | 34 |
Stejná funkce zaokrouhlení se používá pro generování klíčů ( plán klíčů ) .
Vývojáři šifry v IACR ePrint zveřejnili referenční implementaci Speck se 128bitovým blokem a klíčem. Klíč je označen jako klíč = (K[1], K[0]). [3]
Při implementaci s 16bitovými slovy používají rotace 7bitovou pravou a 2bitovou rotaci doleva. Pro jiné velikosti slov, jak je znázorněno v příkladu, se používají posuny 8 a 3, v tomto pořadí.
Speck je jednou z nejrychlejších šifer dostupných v benchmarkových testech „lehkých“ šifer, ale výkon je vysoce závislý na architektuře. Některé průměry pro 64bitovou verzi bloku a 128bitový klíč: Tmote(18bit MSP) - 9780 cyklů, Raspberry Pi (32bitový ARM) - 35 cyklů, což je mnohem méně ve srovnání s výsledky AES: Tmote (18 bit MSP) - 25350 cyklů, Raspberry Pi (32 bit ARM) - 254 cyklů. Když je implementován na Arduino Uno (8 bit AVR), AES trvá 62208 cyklů, zatímco Speck trvá 64768. [4]
Při implementaci na 8bitovém mikrokontroléru AVR spotřebuje Speck s 64bitovými bloky a 128bitovým klíčem 192 bajtů Flash, dočasné proměnné zabírají 112 bajtů RAM a zašifrování každého bajtu v bloku trvá 164 cyklů. [5]
Salsa20 je proudová šifra se srovnatelným výkonem. V některých aplikacích je však často obtížné bezpečně používat proudové šifry, zatímco blokové šifry, jako je Speck, fungují dobře. To vedlo Google k přidání implementace Speck do linuxového jádra verze 4.17 a plánoval ji nabídnout jako možnost pro šifrování disku na těch zařízeních Android , která by jinak byla nešifrovaná kvůli slabému výkonu AES na procesorech, které toto rozšíření nemají. AES command systems . [6] Speck byl později odstraněn z linuxového jádra a místo toho Google přešel na algoritmus Adiantum.
Vývojáři tvrdí, že Speck, ačkoli je to „lehká“ šifra, je navržena tak, aby byla co nejbezpečnější proti standardním útokům založeným na zvoleném otevřeném textu a zvoleném šifrovém textu . Odolání útokům na propojené klíče bylo také cílem šifry, i když méně důležité, protože útoky v tomto modelu nejsou typické. [7] Vývojáři se nepokusili čelit známým útokům na rozpoznávání klíčů. Také neuvažovali o použití Specka jako hashovací funkce . [osm]
Od roku 2018 nejsou známy žádné úspěšné útoky na varianty Speck s plným počtem kol. Kvůli zájmu o šifry Simona a Specka bylo publikováno asi 70 článků o kryptoanalýze. [9] Stejně jako u iterativních šifer byly útoky na varianty s redukovaným zaokrouhlením úspěšné. Nejlepší publikované útoky na Speck ve standardním modelu útoku jsou diferenciální kryptoanalýzové útoky ; zachytí asi 70–75 % kol většiny variací šifry, ačkoli tyto lepší útoky jsou jen nepatrně rychlejší než hrubá síla . Vývojový tým zvolil vhodný počet nábojů pro pevnou délku klíče takovým způsobem, aby byla zachována míra bezpečnosti podobná AES-128 , přibližně 30 %, během diferenciálních útoků. [deset]
Nejlepší publikované diferenciální útoky na Speck ve standardním modelu útokuVolba | Hackovaná kola | Obtížnost v průběhu času | Požadované údaje | Bajty paměti |
---|---|---|---|---|
Speck128/256 | 25/34 (74 %) | 2 253,35 | 2 125,35 | 222 _ |
Speck128/192 | 24/33 (73 %) | 2 189,35 | 2 125,35 | 222 _ |
Speck 128/128 | 23/32 (72 %) | 2 125,35 | 2 125,35 | 222 _ |
Speck96/144 | 21/29 (72 %) | 2 143,94 | 2 95,94 | 222 _ |
Speck96/96 | 20/28 (71 %) | 2 95,94 | 2 95,94 | 222 _ |
Speck64/128 | 20/27 (74 %) | 2 125,56 | 2 61,56 | 222 _ |
Speck64/96 | 19/26 (73 %) | 2 93,56 | 2 61,56 | 222 _ |
Speck48/96 | 17/23 (74 %) | 2 95,8 | 2 47,8 | 222 _ |
Speck48/72 | 16/22 (73 %) | 2 71,8 | 2 47,8 | 222 _ |
Speck32/64 | 15/22 (68 %) | 2 63,39 | 2 31,39 | 222 _ |
Speckův vývojový tým tvrdí, že zbytečně velké bezpečnostní rezervy mají skutečnou cenu, a to zejména u „lehkých“ zařízení. Také tvrdí, že kryptoanalýza ve fázi návrhu správně nastavila požadovaný počet nábojů a že tato hodnota splňuje bezpečnostní rezervu AES, takže Speck může být považován za bezpečný i s malou rezervou bezpečnosti. [jedenáct]
Vývojáři tvrdí, že kryptoanalýza NSA zjistila, že algoritmus nemá žádné slabiny a jeho bezpečnost je úměrná délce klíče. [12] Autoři uvádějí, že jejich metody kryptoanalýzy zahrnovaly lineární a diferenciální kryptoanalýzu pomocí standardních metod, jako je Matsuiho algoritmus a SAT/SMT řešiče, ačkoli není uveden úplný seznam. [9]
NSA schválila použití Simon128/256 a Speck128/256 v amerických národních bezpečnostních systémech, ačkoli AES-256 je stále doporučován pro neomezené aplikace. [13]
Speck nepoužívá S-boxy (substituční boxy) ani jiné vyhledávací tabulky, takže je přirozeně imunní vůči útokům načasování . To jej odlišuje od šifer vyhledávacích tabulek, jako je AES, u kterých se ukázalo, že jsou vůči těmto druhům útoků zranitelné. Stejně jako většina blokových šifer (včetně AES) je však Speck zranitelný vůči útokům na spotřebu energie , pokud nejsou přijata hardwarová protiopatření. [čtrnáct]
Zatímco rodina šifer Speck zahrnuje varianty se stejnou velikostí bloků a klíčů jako AES (Speck128/128, Speck128/192 a Speck128/256), zahrnuje také varianty s velikostí bloků až 32 bitů a velikostí klíčů až 64 bitů. Tyto malé velikosti bloků a klíčů nejsou bezpečné pro obecné použití, protože mohou být zranitelné vůči narozeninám a útokům hrubou silou , bez ohledu na formální zabezpečení šifry. [15] Vývojáři tvrdí, že tyto velikosti bloků a klíčů byly přidány pro zařízení s omezenými zdroji, kde neexistují žádné jiné možnosti nebo když jsou šifrována pouze velmi malá množství dat, jako například v protokolech RFID . Pouze 128bitová velikost bloku a 256bitová velikost klíče je schválena pro použití v amerických národních bezpečnostních systémech. [13]
První pokusy o standardizaci Simona a Specka nebyly úspěšné, protože nebylo dosaženo většiny hlasů ISO požadovaných pro toto rozhodnutí. Expertní delegáti ISO z několika zemí, včetně Německa, Japonska a Izraele, se postavili proti snahám NSA standardizovat šifry Simon a Speck, přičemž uvedli, že NSA trvá na jejich standardizaci, protože zná zranitelnost v šifrách. Stanovisko vycházelo z částečného potvrzení nalezení slabin v šifrách, absence jasné potřeby standardizace nových šifer a předchozího zapojení NSA do tvorby a propagace záložního kryptografického algoritmu Dual_EC_DRBG [16] .
Poté, co první pokusy o standardizaci šifer selhaly, ISO standardizovala Simona a Specka v jiných pracovních skupinách. Od října 2018 byly šifry Simon a Speck standardizovány organizací ISO jako součást standardu RFID vzdušného rozhraní, mezinárodního standardu ISO/29167-21 (pro Simona) a mezinárodního standardu ISO/29167-22 (pro Speck). Staly se dostupnými pro komerční organizace. [17] [18]
7. srpna 2018 byl Speck zcela odstraněn z linuxového jádra verze 4.20. [19]
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |