Speck

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 1. august 2019; checks kræver 15 redigeringer .
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 ) . 

Indstillinger

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:

  1. Roter det første ord til højre med 8 bits;
  2. Tilføjelse af det andet ord med det første modulo 2 til potensen af ​​ordlængden;
  3. XOR-betjening af tasten og resultatet af addition;
  4. Drej det andet ord til venstre med 3 bits;
  5. XOR-operationen af ​​det andet ord og resultatet af den forrige XOR.

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

Implementering

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]

#include <stdint.h> #define ROR(x, r) ((x >> r) | (x << (64 - r))) #define ROL(x, r) ((x << r) | (x >> (64 - r))) #definer R(x, y, k) (x = ROR(x, 8), x += y, x ^= k, y = ROL(y, 3), y ^= x) #define RUNDE 32 void encrypt ( uint64_t const pt [ static 2 ], uint64_t ct [ static 2 ], uint64_t const K [ statisk 2 ]) { uint64_t y = pt [ 0 ], x = pt [ 1 ], b = K [ 0 ], a = K [ 1 ]; R ( x , y , b ); for ( int i = 0 ; i < RUND - 1 ; i ++ ) { R ( a , b , i ); R ( x , y , b ); } ct [ 0 ] = y ; ct [ 1 ] = x ; }

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.

Effektivitet

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.

Sikkerhed

Krypteringsanalyse

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]

Bedst publicerede differentielle angreb på speck i standardangrebsmodellen
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]

Sidekanalangreb

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]

Blok- og nøglestørrelser

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]

Standardiseringsbestræbelser og kontroverser

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]

Noter

  1. The SIMON and SPECK Families, 2013 , s. en.
  2. The SIMON and SPECK Families, 2013 , s. 6.
  3. Perspectives of System Informatics: 12th International Andrei P. Ershov Informatics Conference, PSI 2019, Novosibirsk, Rusland, 2-5 juli 2019, Revised Selected Papers / Bjørner N., Virbitskaite I., Voronkov A.. — Springer International Publishing, 2019. - S. 249. - (Teoretisk datalogi og generelle spørgsmål). - ISBN 978-3-030-37486-0 . Arkiveret 20. december 2019 på Wayback Machine
  4. Shin S., Kim M., Kwon T. Eksperimentel præstationsanalyse af letvægtsblokcifre og meddelelsesgodkendelseskoder til trådløse sensornetværk  //  International Journal of Distributed Sensor Networks. - 2017. - Bd. 13 , udg. 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 og Speck Block Ciphers på AVR 8-bit mikrocontrollere  // National Security Agency. - 2014. - S. 15 . Arkiveret fra originalen den 16. juni 2016.
  6. speck - tilføj understøttelse af speck-blokchifferet . Linux-kernens kildetræ . git.kernel.org (2018). Arkiveret 17. maj 2019.
  7. Bemærkninger om designet SIMON og SPECK, 2018 , s. 2.
  8. The SIMON and SPECK Families, 2013 , s. 7-8.
  9. 1 2 Bemærkninger om designet SIMON og SPECK, 2018 , s. ti.
  10. Bemærkninger om designet SIMON og SPECK, 2018 , s. 12-13.
  11. The SIMON and SPECK Families, 2013 , s. 6-7.
  12. Simon og Speck for tingenes internet, 2015 , s. 2.
  13. ↑ 12 NSA . [ https://nsacyber.github.io/simon-speck/papers/Algorithms-to-Support-the-Evolution-of-Information-Assurance-Needs.pdf Algoritmer til at understøtte udviklingen af ​​informationssikringsbehov]. - 2016. - 1. november. - S. 6 . Arkiveret fra originalen den 13. december 2019.
  14. Simon og Speck for tingenes internet, 2015 , s. 12.
  15. Bhargavan K., Leurent G. On the Practical (In-) Security of 64-bit Block Ciphers  // ACM. - 2016. - Oktober. - S. 2-4 . Arkiveret fra originalen den 24. april 2017.
  16. Mistroiske amerikanske allierede tvinger spionagenturet til at trække sig tilbage i krypteringskampen , Reuters  (21. september 2017). Arkiveret fra originalen den 13. december 2019. Hentet 13. december 2019.
  17. ↑ Crypto suite SIMON sikkerhedstjenester til luftgrænsefladekommunikation  . ISO/IEC 29167-21 . ISO (2018).
  18. ↑ Crypto suite SPECK sikkerhedstjenester til luftgrænsefladekommunikation  . ISO/IEC 29167-22 . ISO (2018).
  19. speck - fjern speck . Linux-kernens kildetræ . git.kernel.org (2018). Arkiveret 21. oktober 2020.

Litteratur


Links