Speck | |
---|---|
Skaber | NSA |
offentliggjort | 2013 _ |
Nøglestørrelse | 64, 72, 96, 128, 144, 192 eller 256 bit |
Blokstørrelse | 32, 48, 64, 96 eller 128 bit |
Antal runder | 22-34, afhænger af blokstørrelse og nøgle |
Type | ARX |
Speck er en familie af blokcifre, der er nemme at implementere, udgivet af US NSA i juni 2013 [1] . Speck-cifrene er optimeret til softwareimplementeringer, mens Simon udgivet med den er optimeret til hardwareimplementeringer. Speck tilhører ARX-familien ( add-rotate-xor ) .
Speck understøtter flere blok- og nøglestørrelser. En blok er to ord, og et ord kan være på 16, 24, 32, 48 eller 64 bit. Nøglen har en størrelse på 2, 3 eller 4 ord. Den runde funktion består af flere faser:
Antallet af runder afhænger af det valgte ord og nøglelængder: [2]
Blokstørrelse (bits) | Nøglestørrelse (bits) | runder |
---|---|---|
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 |
Den samme runde funktion bruges til at generere nøgler ( nøgleskema ) .
Chifferudviklerne hos IACR ePrint udgav en Speck- referenceimplementering med en 128-bit blok og nøgle. Nøglen er betegnet som nøgle = (K[1], K[0]). [3]
Når de implementeres med 16-bit ord, bruger rotationer en 7-bit højre og 2-bit venstre rotation. For andre ordstørrelser, som vist i eksemplet, anvendes forskydninger på henholdsvis 8 og 3.
Speck er en af de hurtigste cifre, der er tilgængelige i benchmarktest af "lette" cifre, men ydeevnen er meget arkitekturafhængig. Nogle gennemsnit for en 64-bit version af en blok og en 128-bit nøgle: Tmote(18 bit MSP) - 9780 cyklusser, Raspberry Pi (32 bit ARM) - 35 cyklusser, hvilket er meget mindre sammenlignet med resultaterne af AES: Tmote(18 bit MSP) - 25350 cyklusser, Raspberry Pi (32 bit ARM) - 254 cyklusser. Når det implementeres på en Arduino Uno (8 bit AVR), tager AES 62208 cyklusser, mens Speck tager 64768. [4]
Når det implementeres på en 8-bit AVR-mikrocontroller, bruger Speck med 64-bit blokke og en 128-bit nøgle 192 bytes Flash, midlertidige variabler optager 112 bytes RAM, og det tager 164 cyklusser at kryptere hver byte i en blok. [5]
Salsa20 er en stream-chiffer med sammenlignelig ydeevne. Det er dog ofte svært at bruge stream-cifre sikkert i nogle applikationer, mens blok-cifre som Speck fungerer godt. Dette fik Google til at tilføje en Speck-implementering til Linux-kerneversionen 4.17 og planlagde at tilbyde den som en mulighed for diskkryptering på de Android -enheder , der ellers ville være ukrypteret på grund af dårlig AES -ydelse på processorer, der mangler udvidelsen. AES-kommandosystemer . [6] Speck blev senere fjernet fra Linux-kernen, og i stedet skiftede Google til Adiantum-algoritmen.
Udviklerne hævder, at Speck, selv om det er en "letvægts" chiffer, er designet til at være så sikker som muligt mod standardangreb baseret på valgt almindelig tekst og valgt chiffertekst . At modstå angreb på forbundne nøgler var også et mål med chifferen, selvom det er mindre vigtigt, fordi angrebene i denne model ikke er typiske. [7] Der er ikke gjort forsøg fra udviklerne på at imødegå kendte nøglegenkendelsesangreb. De overvejede heller ikke at bruge Speck som en hash-funktion . [otte]
Fra 2018 er der ingen kendte vellykkede angreb på Speck-varianter med et fuldt antal runder. På grund af interesse for Simon og Speck-cifrene er omkring 70 kryptoanalyseartikler blevet offentliggjort. [9] Som med iterative ciphers, har angreb på reducerede runde varianter været succesfulde. De bedst publicerede angreb på Speck i standardangrebsmodellen er differentielle kryptoanalyseangreb ; de opsnapper omkring 70-75% af runderne af de fleste chiffervariationer, selvom disse bedre angreb kun er marginalt hurtigere end brute force . Udviklingsteamet valgte det passende antal runder for en fast nøglelængde på en sådan måde, at der opretholdes en sikkerhedsmargin svarende til AES-128 , cirka 30 %, under differentielle angreb. [ti]
Mulighed | Hackede runder | Besvær over tid | Nødvendige data | Bytes af hukommelse |
---|---|---|---|---|
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 udviklingsteam hævder, at unødvendigt store sikkerhedsmargener har en reel pris, især på "lette" enheder. De hævder også, at kryptoanalyse på designstadiet korrekt indstillede det nødvendige antal runder, og at denne værdi opfylder AES-sikkerhedsmarginen, så Speck kan betragtes som sikker, selv med en lille sikkerhedsmargin. [elleve]
Udviklerne hævder, at NSA -krypteringsanalyse fandt ud af, at algoritmen ikke har nogen svagheder, og at dens sikkerhed står mål med nøglelængden. [12] Forfatterne siger, at deres kryptoanalysemetoder inkluderede lineær og differentiel kryptoanalyse ved brug af standardmetoder såsom Matsui-algoritmen og SAT/SMT-løsere, selvom en komplet liste ikke er givet. [9]
NSA har godkendt brugen af Simon128/256 og Speck128/256 i amerikanske nationale sikkerhedssystemer, selvom AES-256 stadig anbefales til ubegrænsede applikationer. [13]
Speck bruger ikke S-bokse (erstatningsbokse) eller andre opslagstabeller, så den er naturligvis immun over for timing-angreb . Dette adskiller det fra opslagstabelcifre som AES, som har vist sig at være sårbare over for denne slags angreb. Som de fleste blokchiffere (herunder AES) er Speck imidlertid sårbar over for strømforbrugsangreb , medmindre der træffes hardwaremodforanstaltninger. [fjorten]
Mens Speck-chifferfamilien inkluderer varianter med samme blok- og nøglestørrelser som AES (Speck128/128, Speck128/192 og Speck128/256), inkluderer den også varianter med blokstørrelser op til 32 bit og nøglestørrelser op til 64 bit. Disse små blok- og nøglestørrelser er ikke sikre til generel brug, da de kan være sårbare over for fødselsdags- og brute-force-angreb , uanset chifferens formelle sikkerhed. [15] Udviklerne hævder, at disse blok- og nøglestørrelser blev tilføjet til ressourcebegrænsede enheder, hvor der ikke er andre muligheder, eller når kun meget små mængder data er krypteret, såsom i RFID -protokoller . Kun muligheden for 128-bit blokstørrelse og 256-bit nøglestørrelse er godkendt til brug i amerikanske nationale sikkerhedssystemer. [13]
Tidlige forsøg på at standardisere Simon og Speck var ikke succesfulde, da ISO- flertalsafstemningen , der kræves til denne beslutning, ikke blev opnået. ISO-ekspertdelegerede fra flere lande, herunder Tyskland, Japan og Israel, modsatte sig NSA's bestræbelser på at standardisere Simon og Speck-cifrene, med henvisning til NSA 's insisteren på at standardisere dem, idet de kendte sårbarhederne i cifrene. Holdningen var baseret på delvis bekræftelse af at finde svagheder i chifferne, fraværet af et klart behov for at standardisere nye chiffere og NSA's tidligere involvering i oprettelsen og promoveringen af Dual_EC_DRBG backup kryptografisk algoritme [16] .
Efter at tidlige forsøg på at standardisere cifre mislykkedes, standardiserede ISO Simon og Speck i andre arbejdsgrupper. Fra oktober 2018 er Simon og Speck-cifrene blevet standardiseret af ISO som en del af RFID-luftgrænsefladestandarden, International Standard ISO/29167-21 (for Simon) og International Standard ISO/29167-22 (for Speck). De er blevet tilgængelige til brug af kommercielle organisationer. [17] [18]
Den 7. august 2018 blev Speck fuldstændigt fjernet fra Linux-kerneversion 4.20. [19]
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |