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 -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] .
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] .
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æ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ø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å:
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 transformationLad 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øglerI SHARK- algoritmen genereres rundnøgler som følger:
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] .
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] .
For kan man konstruere en matrix, der definerer diffusionslaget ud fra Reed-Solomon-koden [2] .
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] :
I øjeblikket er der ikke fundet nogen sårbarheder i den klassiske implementering af algoritmen. Der er kun angreb på variationer af algoritmen:
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |