Smítko

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 1. srpna 2019; kontroly vyžadují 15 úprav .
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 ) . 

Možnosti

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

  1. Otočit první slovo doprava o 8 bitů;
  2. Přidání druhého slova k prvnímu modulo 2 k mocnině délky slova;
  3. XOR operace klíče a výsledek sčítání;
  4. Otočte druhé slovo doleva o 3 bity;
  5. Operace XOR druhého slova a výsledek předchozího XOR.

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íčů ) . 

Implementace

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]

#include <stdint.h> #define ROR(x, r) ((x >> r) | (x << (64 - r))) #define ROL(x, r) ((x << r) | (x >> (64 - r))) #define R(x, y, k) (x = ROR(x, 8), x += y, x ^= k, y = ROL(y, 3), y ^= x) #define KOLA 32 void šifrovat ( uint64_t const pt [ statické 2 ], uint64_t ct [ statická 2 ], uint64_t const K [ statické 2 ]) { uint64_t y = pt [ 0 ], x = pt [ 1 ], b = K [ 0 ], a = K [ 1 ]; R ( x , y , b ); for ( int i = 0 ; i < ROUNDS - 1 ; i ++ ) { R ( a , b , i ); R ( x , y , b ); } ct [ 0 ] = y ; ct [ 1 ] = x ; }

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

Účinnost

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.

Zabezpečení

Kryptoanalýza

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 útoku
Volba 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]

Útoky postranním kanálem

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]

Velikosti bloků a klíčů

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]

Úsilí o standardizaci a kontroverze

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]

Poznámky

  1. Rodiny SIMON a SPECK, 2013 , str. jeden.
  2. Rodiny SIMON a SPECK, 2013 , str. 6.
  3. Perspektivy systémové informatiky: 12. mezinárodní konference informatiky Andreje P. Ershova, PSI 2019, Novosibirsk, Rusko, 2.–5. července 2019, Revised Selected Papers / Bjørner N., Virbitskaite I., Voronkov A.. — Springer International Publishing, 2019. - S. 249. - (Teoretická informatika a obecné otázky). - ISBN 978-3-030-37486-0 . Archivováno 20. prosince 2019 na Wayback Machine
  4. Shin S., Kim M., Kwon T. Experimentální analýza výkonu odlehčených blokových šifer a autentizačních kódů zpráv pro bezdrátové senzorové sítě  //  International Journal of Distributed Sensor Networks. - 2017. - Sv. 13 , iss. 11 . — S. 8, 11 . — ISSN 1550-1477 . - doi : 10.1177/1550147717744169 .
  5. Beaulieu R., Shors D., Smith J., Treatman-Clark S., Weeks B., Wingers L. The Simon and Speck Block Ciphers on AVR 8-bit Microcontrollers  // National Security Agency. - 2014. - S. 15 . Archivováno z originálu 16. června 2016.
  6. speck - přidejte podporu pro blokovou šifru Speck . Zdrojový strom linuxového jádra . git.kernel.org (2018). Archivováno 17. května 2019.
  7. Poznámky k designu SIMON and SPECK, 2018 , str. 2.
  8. Rodiny SIMON a SPECK, 2013 , str. 7-8.
  9. 1 2 Poznámky k designu SIMON a SPECK, 2018 , str. deset.
  10. Poznámky k designu SIMON and SPECK, 2018 , str. 12-13.
  11. Rodiny SIMON a SPECK, 2013 , str. 6-7.
  12. Simon a Speck pro internet věcí, 2015 , str. 2.
  13. ↑ 12 NSA . [ https://nsacyber.github.io/simon-speck/papers/Algorithms-to-Support-the-Evolution-of-Information-Assurance-Needs.pdf Algorithms to Support the Evolution of Information Assurance Needs]. - 2016. - 1. listopadu. - S. 6 . Archivováno z originálu 13. prosince 2019.
  14. Simon a Speck pro internet věcí, 2015 , str. 12.
  15. Bhargavan K., Leurent G. O praktickém (ne)zabezpečení 64bitových blokových šifer  // ACM. - 2016. - Říjen. - S. 2-4 . Archivováno z originálu 24. dubna 2017.
  16. Nedůvěřiví spojenci USA přinutí špionážní agenturu ustoupit v boji proti šifrování , Reuters  (21. září 2017). Archivováno z originálu 13. prosince 2019. Staženo 13. prosince 2019.
  17. Crypto suite Bezpečnostní služby SIMON pro  komunikaci na vzdušném rozhraní . ISO/IEC 29167-21 . ISO (2018).
  18. Bezpečnostní služby šifrovací sady SPECK pro  komunikaci na vzdušném rozhraní . ISO/IEC 29167-22 . ISO (2018).
  19. speck - remove Speck . Zdrojový strom linuxového jádra . git.kernel.org (2018). Archivováno 21. října 2020.

Literatura


Odkazy