HAJ

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 5. november 2019; checks kræver 3 redigeringer .
HAJ
Skaber Vincent Rayman , Joan Dymen , Bart Presnel , Antun Bosalers og Eric de Veen
Oprettet 1996 _
offentliggjort 1996 _
Nøglestørrelse 128 bit
Blokstørrelse 64 bit
Antal runder 6 [1] (8 [2] )
Type Substitution-permutation netværk

SHARK ( Eng.  Secure Hash Algorithm Regenerative Keys  - en sikker hashing-algoritme med genskabte nøgler) er en symmetrisk blokchifferalgoritme udviklet af en gruppe kryptografer, herunder Vincent Rayman , forfatteren af ​​AES -chifferet . I teorien tillader det brugen af ​​blokke og nøgler af forskellig længde, men forfatterens implementering bruger en 128-bit nøgle og 64-bit blokke. Strukturen ligner den for et permutationsnetværk .

SHARK's historie

SHARK -chifferen  er den første i en række af algoritmer udviklet som en del af en undersøgelse for at skabe sikre og effektive blokcifre baseret på Wide Trail-designstrategien [3] . Resultatet af forskningen var senere oprettelsen af ​​standardchifferet AES [2] .

Forfatterne placerede SHARK som en algoritme designet til at erstatte den dengang udbredte DES -chiffer . Følgende krav blev præsenteret for den nye algoritme:

Selvom SP-net- baserede cifre ( MMB, SAFER , 3-Way ) allerede eksisterede før , var SHARK den første til at bruge MDS-koder [4] til lineær transformation, nemlig Reed-Solomon-koder [1] .

Der er to versioner af SHARK-chifferet : SHARK-A ( eng.  affine transform ) og SHARK-E ( eng.  exor ), opkaldt efter de forskellige måder at introducere runde nøgler på [5] .

Algoritmedesign

SHARK- algoritmen består af tre komponenter:

Hver komponent i algoritmen betragtes separat, og hver komponent skal have bestemte egenskaber. Diffusionslaget bør således have ensartede og gode diffusionsegenskaber. Det ikke-lineære lag skal også have ensartede ikke-lineære egenskaber, og komponenterne i algoritmen er uafhængige i følgende forstand: hvis implementeringen af ​​f.eks. det ikke-lineære lag ændres (nogle S-bokse erstattes af andre S-bokse med samme egenskaber), forbliver sikkerheden af ​​algoritmen uændret. En sådan strategi er en variant af Wide trail-strategien [3] beskrevet i Joan Dymens doktorafhandling [1] .

SHARK består af runder, et ekstra nøgletilsætningslag og et ekstra omvendt diffusionslag. Hver runde består igen af ​​at tilføje en nøgle, en ikke-lineær erstatning og et diffusionslag. Et ekstra lag med at tilføje en nøgle er nødvendig for at forhindre en angriber i at adskille den sidste runde. Et ekstra lag af inverteret diffusion er nødvendigt for at forenkle dekrypteringsoperationen [1] .

Det ikke-lineære substitutionslag består af S-bokse, som hver er en -bit-permutation. Algoritmen er således i stand til at kryptere blokke af længde [1] .

Diffusionslag

Diffusionslaget modtager -bit-numre, der kan betragtes som elementer over feltet . Det pågældende lag er nødvendigt for at skabe en lavineeffekt . Denne effekt manifesterer sig i lineære og forskellige sammenhænge:

Lad være  en reversibel lineær transformation ,  være et element i feltet ,  være Hamming-afstanden , så kvantitativt estimeres lavineeffekten af ​​springtallet ( eng. grennummer ) [1] .  

Hvis , så . kaldes det optimale springtal ( eng. optimalt grennummer ). I hovedartiklen viste forfatterne, at ved hjælp af MDS-koder er det muligt at konstruere en reversibel lineær transformation med et optimalt springtal. Implementeringen bruger Reed-Solomon-koder [1] .  

Ikke-lineært lag (substitutionsblokke)

Ikke-lineære S-bokse giver beskyttelse mod lineær og differentiel kryptoanalyse. En af de vigtige numeriske egenskaber ved sikkerheden af ​​chifferen er matrixen af ​​eksklusive OR ( engelsk  exor table ) mappings , hvis elementer er bestemt af formlen , hvor  - angiver antallet af elementer, der opfylder betingelsen,  - elementerne af feltet . Store værdier af matrixelementer kan føre til chifferens modtagelighed for differentielt angreb [1] .

Forfatterne valgte S-bokse ud fra kortlægningen over feltet . I dette tilfælde, når lige, har matrixen følgende egenskaber:

For at fjerne fikspunkterne og , bruges en inverterbar affin transformation af outputbittene [1] .

Nøgleskema

Nøgleplanlægning giver dig mulighed for at udvide den originale nøgle ved at få runde nøgler .  God planlægning giver dig mulighed for at få runde nøgler med maksimal entropi. Forfatterne foreslår to måder at indtaste den runde nøgle på:

  1. Exor er en simpel XOR med input i hver runde. Den tilsvarende algoritme er SHARK-E.
  2. Affin transformation er en affin transformation af inputdata, der afhænger af nøglen. Den tilsvarende algoritme er SHARK-A [1] .
Exor

En simpel XOR af input-bits af runden og undernøglen beregnes. Fordelene ved metoden er hastighed og stabilitet: ingen nøgle er stærkere eller svagere end en anden. Ulempen ved metoden er, at den runde nøgles entropi ikke overstiger [1] .

Affin transformation

Lad være  en ikke-singular matrix over feltet , afhængigt af nøglen (mere præcist, på dens forlængelse). Lad os introducere en nøgleoperation på inputdataene som følger: . Dette er en lineær operation, så den introducerer ikke svage taster. Derudover øges entropien af ​​de runde nøgler til . Denne operation er dog ret dyr med hensyn til ydeevne, så forfatterne foreslår at begrænse underrummet af diagonale matricer . I dette tilfælde bliver entropien af ​​de runde nøgler tæt på [1] .

Generering af undernøgler

I SHARK- algoritmen genereres rundnøgler som følger:

  1. runde -bit nøgler initialiseres med de første poster i substitutionstabellen . 
  2. Matricer initialiseres med identitetsmatricer .
  3. Den brugervalgte nøgle er sammenkædet med sig selv, indtil den er lidt lang.
  4. SHARK -algoritmen anvendes på sekvensen opnået i trin 3 i CFB -tilstand .
  5. De første bits af outputtet bruges til at danne de runde nøgler .
  6. De sidste bits af outputdata fortolkes som elementer i feltet og danner de diagonale elementer i matricerne . Hvis et element er lig med nul, så kasseres det, og alle efterfølgende elementer flyttes ned med én. Yderligere krypterede nul-strenge tilføjes i slutningen for at udfylde de resterende diagonale elementer [1] .

Undernøglegenereringsmekanismen tillader i princippet brugen af ​​en bitlængdenøgle, men forfatterne anbefaler at bruge en nøgle, der ikke overstiger 128 bit [1] .

Implementeringsnoter

Udskiftningstabeller

For at opnå høj ydeevne kombineres diffusionslaget og substitutionsblokkene i én operation [1] . Lad betegne rundens inputdata;  - output;  — permutationsmatricer (S-bokse);  er matrixen, der definerer diffusionslaget; og  - betegne addition og multiplikation over feltet . Derefter

Ved at bruge udvidede substitutionstabeller af dimension , bestemt af formlen , kan vi skrive transformationen på en simpel form:

En runde kræver således tabelopslag og binære operationer. Men på grund af det faktum, at tabellens bits optager en byte for bloklængden, viste algoritmen for blokke med en længde på 128 bit eller mere sig at være ineffektiv for de fleste processorer på den tid (1996), derfor den eksisterende begrænsning på bloklængden på 64 bit ( ) [2] .

MDS-kodematrix

For kan man konstruere en matrix, der definerer diffusionslaget ud fra Reed-Solomon-koden [2] .

Dekryptering

For at beskrive dekryptering, overvej 2-runde versionen af ​​SHARK [1] . Lad være  en lineær operation,  vær en ikke-lineær erstatning,  og vær en nøgleadditionsoperation for den runde nøgle . Krypteringsfunktionen er i dette tilfælde lig med , hvor  er operationen kombineret fra diffusionslaget og S-bokse. Da tilføjelsestastoperationen og diffusionsoperationen er lineære operationer, kan deres rækkefølge vendes [1] :

,

hvor notationen

Vi anvender den resulterende formel til [1] :

Lad os nu vise, at dekrypteringsoperationen har samme struktur. For at gøre dette skal du først vende krypteringsoperationen [1] :

Ved at bytte nøgleadditionsoperationen og diffusionsoperationen får vi den samme struktur som i krypteringsoperationen [1] :

Bemærkelsesværdige angreb

I øjeblikket er der ikke fundet nogen sårbarheder i den klassiske implementering af algoritmen. Der er kun angreb på variationer af algoritmen:

  • I 1997 viste Thomas Jacobsen og Lars Knudsen , at en 64-bit implementering af SHARK-E ( SHARK med en exor round key injection strategi) er teoretisk sårbar over for et interpolationsangreb, når den er begrænset til 5 runder, samt en 128 -bit implementering - begrænset til 8 runder. Men de viste også, at der skal mindst 6 runder til for tilstrækkelig sikkerhed [6] .
  • I 2013 viste Yang  Shi og Hongfei Fan , at White-Box-implementeringen [  7] af SHARK ikke er sikker nok og kan knækkes med en arbejdsfaktor på cirka 1,5*(2^47) [8] .

Noter

  1. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Vincent Raymen , Joan Dymen , Bart Presnel , Antun Bosalers, Eric de Vin. Cipher SHARK  : PDF .
  2. ↑ 1 2 3 4 Vincent Raymen , Joan Dymen . Rijndaels design  : PDF . - S. 161-165 .
  3. ↑ 1 2 Joan Dymen . Cipher- og Hash-funktionsdesignstrategier baseret på lineær og differentiel kryptoanalyse  : PDF . Arkiveret fra originalen den 16. maj 2018.
  4. ↑ 1 2 MDS-koder - koder med den største kodeafstand
  5. Scans indlæg for Shark . Hentet 16. december 2017. Arkiveret fra originalen 28. januar 2012.
  6. Thomas Jacobsen , Lars Knudsen . Interpolationsangrebet på blokchiffere . Springer International Publishing AG (17. maj 2006). Hentet 9. februar 2018. Arkiveret fra originalen 14. december 2017.
  7. White-box-angrebskontekst - angriberen har fuld adgang til softwareimplementeringen af ​​chifferen.
  8. Yang Shi, Hongfei Fan. Om sikkerhed for en White-Box-implementering af SHARK . Hentet 14. december 2017. Arkiveret fra originalen 14. december 2017.

Litteratur

Links