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 ) .
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:
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 ) .
Chifferutvecklarna på IACR ePrint publicerade en Speck- referensimplementering med ett 128-bitars block och nyckel. Nyckeln betecknas som nyckel = (K[1], K[0]). [3]
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.
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.
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]
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]
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]
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]
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]
Symmetriska kryptosystem | |
---|---|
Streama chiffer | |
Feistel nätverk | |
SP nätverk | |
Övrig |