Fläck

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 1 augusti 2019; kontroller kräver 15 redigeringar .
Fläck
Skapare NSA
publiceras 2013 _
Nyckelstorlek 64, 72, 96, 128, 144, 192 eller 256 bitar
Block storlek 32, 48, 64, 96 eller 128 bitar
Antal omgångar 22-34, beror på blockstorlek och nyckel
Sorts ARX

Speck  är en familj av lättimplementerade blockchiffer publicerade av US NSA i juni 2013 [1] . Speck-chiffrorna är optimerade för programvaruimplementeringar, medan Simon som publiceras med den är optimerad för hårdvaruimplementationer. Speck tillhör familjen ARX ( add-rotate-xor ) . 

Alternativ

Speck stöder flera block- och nyckelstorlekar. Ett block är två ord och ett ord kan vara 16, 24, 32, 48 eller 64 bitar stort. Nyckeln har storleken 2, 3 eller 4 ord. Den runda funktionen består av flera steg:

  1. Rotera det första ordet åt höger med 8 bitar;
  2. Tillägg av det andra ordet med det första modulo 2 till potensen av ordlängden;
  3. XOR-drift av nyckeln och resultatet av addition;
  4. Rotera det andra ordet åt vänster med 3 bitar;
  5. XOR-operationen för det andra ordet och resultatet av föregående XOR.

Antalet omgångar beror på det valda ordet och nyckellängden: [2]

Blockstorlek (bitar) Nyckelstorlek (bitar) Omgångar
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

Samma runda funktion används för att generera nycklar ( nyckelschema ) . 

Implementering

Chifferutvecklarna på IACR ePrint publicerade en Speck- referensimplementering med ett 128-bitars block och nyckel. Nyckeln betecknas som nyckel = (K[1], K[0]). [3]

#inkludera <stdint.h> #definiera ROR(x, r) ((x >> r) | (x << (64 - r))) #define ROL(x, r) ((x << r) | (x >> (64 - r))) #definiera R(x, y, k) (x = ROR(x, 8), x += y, x ^= k, y = ROL(y, 3), y ^= x) #define OMGÅNG 32 void encrypt ( uint64_t const pt [ static 2 ], uint64_t ct [ static 2 ], uint64_t const K [ static 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 ; }

När de implementeras med 16-bitars ord använder rotationer en 7-bitars höger- och 2-bitars vänsterrotation. För andra ordstorlekar, som visas i exemplet, används förskjutningar på 8 respektive 3.

Effektivitet

Speck är en av de snabbaste chiffer som finns tillgängliga i benchmark-tester av "lättvikts" chiffer, men prestandan är mycket arkitekturberoende. Några medelvärden för en 64-bitarsversion av ett block och en 128-bitars nyckel: Tmote(18-bitars MSP) - 9780 cykler, Raspberry Pi (32-bitars ARM) - 35 cykler, vilket är mycket mindre jämfört med resultaten av AES: Tmote (18 bitars MSP) - 25350 cykler, Raspberry Pi (32 bitars ARM) - 254 cykler. När det implementeras på en Arduino Uno (8 bitars AVR), tar AES 62208 cykler, medan Speck tar 64768. [4]

När det implementeras på en 8-bitars AVR-mikrokontroller, förbrukar Speck med 64-bitars block och en 128-bitars nyckel 192 byte Flash, temporära variabler upptar 112 byte RAM och det tar 164 cykler att kryptera varje byte i ett block. [5]

Salsa20 är ett streamchiffer med jämförbar prestanda. Det är dock ofta svårt att använda strömchiffer på ett säkert sätt i vissa applikationer, medan blockchiffer som Speck fungerar bra. Detta ledde till att Google lade till en Speck-implementation till Linux-kärnversionen 4.17 och planerar att erbjuda den som ett alternativ för diskkryptering på de Android- enheter som annars skulle vara okrypterade på grund av dålig AES- prestanda på processorer som saknar tillägget. AES kommandosystem . [6] Speck togs senare bort från Linux-kärnan och istället bytte Google till Adiantum-algoritmen.

Säkerhet

Kryptanalys

Utvecklarna hävdar att Speck, även om det är ett "lättviktigt" chiffer, är designat för att vara så säkert som möjligt mot standardattacker baserat på vald klartext och vald chiffertext . Att motstå attacker på länkade nycklar var också ett mål för chiffern, även om det är mindre viktigt eftersom attackerna i denna modell inte är typiska. [7] Inga försök har gjorts av utvecklarna för att motverka kända attacker för nyckeligenkänning. De övervägde inte heller att använda Speck som en hashfunktion . [åtta]

Från och med 2018 finns det inga kända framgångsrika attacker på Speck-varianter med ett helt antal omgångar. På grund av intresset för Simon och Speck-chiffrorna har ett 70-tal kryptoanalysartiklar publicerats. [9] Som med iterativa chiffer har attacker på varianter med reducerad runda varit framgångsrika. De bäst publicerade attackerna på Speck i standardattackmodellen är differentiella kryptoanalysattacker ; de fångar upp omkring 70–75% av rundorna av de flesta chiffervariationer, även om dessa bättre attacker bara är marginellt snabbare än brute force . Utvecklingsteamet valde lämpligt antal omgångar för en fast nyckellängd på ett sådant sätt att en säkerhetsmarginal som liknar AES-128 , cirka 30 %, bibehålls under differentiella attacker. [tio]

Bäst publicerade differentiella attacker mot Speck i standardattackmodellen
Alternativ Hackade rundor Svårighet över tid Nödvändig data Bytes minne
Speck128/256 25/34 (74 %) 2 253,35 2 125,35 222 _
Speck128/192 24/33 (73 %) 2 189,35 2 125,35 222 _
Speck128/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 _

Specks utvecklingsteam hävdar att onödigt stora säkerhetsmarginaler har en verklig kostnad, särskilt på "lätta" enheter. De hävdar också att kryptoanalys på designstadiet korrekt ställt in det erforderliga antalet omgångar och att detta värde uppfyller AES-säkerhetsmarginalen, så Speck kan anses vara säker, även med en liten säkerhetsmarginal. [elva]

Utvecklarna hävdar att NSA -krypteringsanalys fann att algoritmen inte har några svagheter och att dess säkerhet står i proportion till nyckellängden. [12] Författarna säger att deras kryptoanalysmetoder inkluderade linjär och differentiell kryptoanalys med standardmetoder som Matsui-algoritmen och SAT/SMT-lösare, även om en fullständig lista inte ges. [9]

NSA har godkänt användningen av Simon128/256 och Speck128/256 i amerikanska nationella säkerhetssystem, även om AES-256 fortfarande rekommenderas för obegränsade tillämpningar. [13]

Sidokanalattacker

Speck använder inte S-boxar (ersättningsboxar) eller andra uppslagstabeller, så den är naturligt immun mot tajmingsattacker . Detta skiljer den från uppslagstabellchiffer som AES, som har visat sig vara sårbara för den här typen av attacker. Men precis som de flesta blockchiffer (inklusive AES) är Speck sårbart för attacker mot strömförbrukning , såvida inte hårdvarumotåtgärder vidtas. [fjorton]

Block- och nyckelstorlekar

Medan Speck-chifferfamiljen inkluderar varianter med samma block- och nyckelstorlekar som AES (Speck128/128, Speck128/192 och Speck128/256), inkluderar den även varianter med blockstorlekar upp till 32 bitar och nyckelstorlekar upp till 64 bitar. Dessa små block- och nyckelstorlekar är inte säkra för allmänt bruk, eftersom de kan vara sårbara för födelsedag- och brute-force-attacker , oavsett chifferets formella säkerhet. [15] Utvecklarna hävdar att dessa block- och nyckelstorlekar lades till för resursbegränsade enheter där det inte finns några andra alternativ, eller när endast mycket små mängder data krypteras, till exempel i RFID- protokoll . Endast alternativet 128-bitars blockstorlek och 256-bitars nyckelstorlek är godkända för användning i amerikanska nationella säkerhetssystem. [13]

Standardiseringsansträngningar och kontroverser

Tidiga försök att standardisera Simon och Speck var inte framgångsrika, eftersom ISO- majoriteten som krävdes för detta beslut inte erhölls. ISO-expertdelegater från flera länder, inklusive Tyskland, Japan och Israel, motsatte sig NSA:s ansträngningar att standardisera Simon och Speck-chiffrorna, med hänvisning till NSA :s insisterande på att standardisera dem, med kännedom om sårbarheterna i chiffrerna. Positionen baserades på en partiell bekräftelse av att hitta svagheter i chiffrarna, frånvaron av ett tydligt behov av att standardisera nya chiffer och NSA:s tidigare engagemang i skapandet och främjandet av Dual_EC_DRBG backup kryptografisk algoritm [16] .

Efter att tidiga försök att standardisera chiffer misslyckades, standardiserade ISO Simon och Speck i andra arbetsgrupper. Från och med oktober 2018 har Simon och Speck-chiffrorna standardiserats av ISO som en del av RFID-luftgränssnittsstandarden, International Standard ISO/29167-21 (för Simon) och International Standard ISO/29167-22 (för Speck). De har blivit tillgängliga för användning av kommersiella organisationer. [17] [18]

Den 7 augusti 2018 togs Speck bort helt från Linux-kärnversion 4.20. [19]

Anteckningar

  1. Familjerna SIMON och SPECK, 2013 , sid. ett.
  2. Familjerna SIMON och SPECK, 2013 , sid. 6.
  3. Perspectives of System Informatics: 12th International Andrei P. Ershov Informatics Conference, PSI 2019, Novosibirsk, Ryssland, 2–5 juli 2019, Revised Selected Papers / Bjørner N., Virbitskaite I., Voronkov A.. — Springer International Publishing, 2019. - S. 249. - (Teoretisk datavetenskap och allmänna frågor). - ISBN 978-3-030-37486-0 . Arkiverad 20 december 2019 på Wayback Machine
  4. Shin S., Kim M., Kwon T. Experimentell prestandaanalys av lättviktsblockchiffer och meddelandeautentiseringskoder för trådlösa sensornätverk  //  International Journal of Distributed Sensor Networks. - 2017. - Vol. 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. Simon och Speck Block Chiphers på AVR 8-bitars mikrokontroller  // National Security Agency. - 2014. - S. 15 . Arkiverad från originalet den 16 juni 2016.
  6. speck - lägg till stöd för Speck-blockchifferet . Linux-kärnan källträd . git.kernel.org (2018). Arkiverad 17 maj 2019.
  7. Anmärkningar om designen SIMON och SPECK, 2018 , sid. 2.
  8. Familjerna SIMON och SPECK, 2013 , sid. 7-8.
  9. 1 2 Anmärkningar om designen SIMON och SPECK, 2018 , sid. tio.
  10. Anmärkningar om designen SIMON och SPECK, 2018 , sid. 12-13.
  11. Familjerna SIMON och SPECK, 2013 , sid. 6-7.
  12. Simon och Speck för Internet of Things, 2015 , sid. 2.
  13. ↑ 12 NSA . [ https://nsacyber.github.io/simon-speck/papers/Algorithms-to-Support-the-Evolution-of-Information-Assurance-Needs.pdf Algoritmer för att stödja utvecklingen av informationssäkringsbehov]. - 2016. - 1 november. - S. 6 . Arkiverad från originalet den 13 december 2019.
  14. Simon och Speck för Internet of Things, 2015 , sid. 12.
  15. Bhargavan K., Leurent G. Om den praktiska (in-)säkerheten för 64-bitars blockchiffer  // ACM. - 2016. - Oktober. - S. 2-4 . Arkiverad från originalet den 24 april 2017.
  16. Misstroende amerikanska allierade tvingar spionbyrån att backa i krypteringskampen , Reuters  (21 september 2017). Arkiverad från originalet den 13 december 2019. Hämtad 13 december 2019.
  17. Krypteringssvit SIMON säkerhetstjänster för  luftgränssnittskommunikation . ISO/IEC 29167-21 . ISO (2018).
  18. Krypteringssvit SPECK säkerhetstjänster för  luftgränssnittskommunikation . ISO/IEC 29167-22 . ISO (2018).
  19. fläck - ta bort fläck . Linux-kärnan källträd . git.kernel.org (2018). Arkiverad 21 oktober 2020.

Litteratur


Länkar