HC-256

HC-256  er et strømkrypteringssystem udviklet af kryptograf Hongjun Wu fra Institute of Infocommunication Research i Singapore. Først udgivet i 2004. 128-bit versionen blev indsendt til eSTREAM- konkurrencen , som havde til formål at skabe europæiske standarder for strømkrypteringssystemer. Algoritmen var en af ​​de fire finalister i den første profilkonkurrence (stream-cifre til softwareapplikationer med høj båndbredde). [1  ]

Beskrivelse af algoritmen

HC-256- strømchifferen genererer en nøglesekvens (keystream) op til bit lang ved hjælp af en 256-bit hemmelig nøgle og en 256-bit initialiseringsvektor.

HC-256 indeholder to hemmelige tabeller, hver med 1024 32-bit indgange. Hvert trin opdaterer et element fra tabellen ved hjælp af en ikke-lineær feedbackfunktion. Hvert 2048 trin vil alle elementer i de to tabeller blive opdateret. [en]

Operationer, funktioner, variabler

Algoritmen bruger følgende operationer:

 : x+y betyder x+y mod , hvor 0 x og 0 y  : x y betyder x - y mod 1024  : bitvis XOR  : sammenkædning  : højre skiftoperator med det angivne antal bit  : venstre skiftoperator med det angivne antal bits  : cirkulært skift til højre, x n betyder ((x n) (x (32 - n)), hvor 0 n 32 og 0 x





HC-256 bruger to tabeller, P og Q. Nøglen og initialiseringsvektoren er angivet med henholdsvis K og V. Tastesekvensen er betegnet S.

 : tabel med 1024 32-bit elementer. Hvert element er betegnet med P[i], hvor 0 er 1023. :  en tabel med 1024 32-bit elementer. Hvert element er betegnet med P[i], hvor 0 er 1023. :  256-bit nøgle af HC-256 algoritmen.  : 256-bit initialiseringsvektor af HC-256 algoritmen.  : nøglesekvens genereret af HC-256-algoritmen. 32-bit elementet ved udgangen af ​​det i-te trin er angivet med . S= || || || …



HC-256 har seks funktioner:






Her er x = || || ||  — 32-bit ord. , , , består af 1 byte hver, og ,  er henholdsvis lav og høj byte. [2]

Initialiseringsproces

Initialiseringsprocessen i HC-256 består i at konvertere P og Q med en nøgle og en initialiseringsvektor og køre kryptering 4096 gange uden at generere et output.

1. Sammensætning af K = || || … || og V = || || … || , hvor og består af 32 bits. Nøglen og initialiseringsvektoren udvides til et array (0 i 2559).

tager følgende værdier:



2. Opdater tabel P og Q med W:


3. Kør kryptering (nøglesekvensgenereringsalgoritme) 4096 gange uden at generere output.

Initialiseringsprocessen er fuldført, og chifferen er klar til at generere nøglesekvensen. [3]

Algoritme til generering af en nøglesekvens

Hvert trin opdaterer et element fra tabellen og genererer et 32-bit outputelement. Processen til at generere en nøglesekvens er beskrevet nedenfor:

i=0;
repeat until enough keystream bits are generated.
{

j = i mod 1024;
if (i mod 2048) < 1024
{ P[j] = P[j] + P[j 10] + (P[j 3], P[j 1023]);
(P[j 12]) P[j];
} else
{ Q[j] = Q[j] + Q[j 10] + (Q[j 3], Q[j 1023]);
(Q[j 12]) Q[j];
} end-if
i = i + 1;

}
end-repeat
[3]

HC-256 Krypteringssikkerhed

Forfatterne fremsatte følgende sikkerhedserklæringer om HC-256:

  1. Der er ingen skjulte defekter i HC-256.
  2. Den mindste periode forventes ikke at være meget større end .
  3. At genvinde den hemmelige nøgle er lige så svært som brute force.
  4. Et vellykket angreb kræver mere end lidt af nøglesekvensen.
  5. Der er ingen svage taster i HC-256.

Periode

HC-256-algoritmen sikrer, at nøglesekvensens periode er meget stor. Men det er svært at præcisere det. Den gennemsnitlige periode for en nøglesekvens estimeres til at være ca.

Privat nøglesikkerhed

Udgangsfunktionen og feedbackfunktionen på HC-256 er meget ikke-lineær. Den ikke-lineære output-funktion giver mulighed for meget lidt informationslækage ved hvert trin. Den ikke-lineære feedback-funktion sikrer, at den hemmelige nøgle ikke kan bestemmes ud fra denne læk.

Fra analysen af ​​værdierne af funktioner og følger:

For det følger nemlig af betingelsen , at . Da med sandsynlighed ca , er sandsynligheden for , også ca . Det betyder, at der lækkes cirka en bit information ved hver kollision . Samlede kampe. For at gendanne P skal du bruge outputresultater. Så vi kan konkludere, at nøglen til HC-256 er sikker, og at den ikke kan bestemmes hurtigere end en komplet søgning af nøglerne.

Sikkerhed for initialiseringsprocessen

HC-256 initialiseringsprocessen består af to trin (se ovenfor). P og Q konverteres ved hjælp af nøglen K og initialiseringsvektoren V. Hver bit af K og V påvirker alle bits i de to tabeller, og hver ændring i dem fører til ukontrollerede ændringer i tabellerne. Kryptering kører 4096 gange uden at generere et output, så tabellerne P og Q bliver mere tilfældige. Efter initialiseringsprocessen resulterer ændringer af K og V ikke i ændringer af tastesekvensen. [fire]

Angreb på HC-256

I 2008 foreslog Erik Zenner en måde at angribe HC-256-chifferet på. Det foreslåede timingangreb giver dig mulighed for at gendanne den indre tilstand, som er 2 tabeller med 1024 32-bit elementer, samt nøglen. Angrebet kræver 8 kilobyte af den kendte nøglesekvens, 6148 nøjagtige målinger af cachelæsetiden og beregningstid svarende til nøgletesttiden. Det følger heraf, at HC-256 i teorien er sårbar over for timing angreb. [5]

Du bør også være opmærksom på udgivelsen af ​​Gautham Sekar og Bart Preneel, som foreslår en klasse af kendetegn, som hver især kræver test af nær- lineære funktioner. Hver ligning indeholder 8 bits af nøglesekvensen. Sandsynligheden for et vellykket resultat er 0,9772. Til sammenligning krævede en lignende metode kendt før og foreslået af forfatteren til HC-256 selv funktioner, som hver inkluderede 10 bits af en nøglesekvens. [6]

Konklusion

HC-256 er praktisk til moderne mikroprocessorer . Afhængigheden mellem operationer i HC-256 holdes på et minimum: tre på hinanden følgende trin af algoritmen kan beregnes parallelt. Paralleliseringsevnen gør det muligt for HC-256 at være effektiv i nutidens processorer. Forfatterne implementerede HC-256 i programmeringssproget C og testede dens ydeevne på Pentium 4-processoren . HC-256-krypteringshastigheden når 1,93 bps. HC-256 er ikke patenteret og er frit tilgængelig. [7]

Noter

  1. Hongjun Wu . Stream Cipher HC-256, s. en.
  2. Hongjun Wu . Stream Cipher HC-256, s. 2.
  3. 12 Hongjun Wu . Stream Cipher HC-256, s. 3.
  4. Hongjun Wu . Stream Cipher HC-256, s. 4-6.
  5. Erik Zenner . Cache-timingsanalyse af eStream-finalister, s. 1-4.
  6. Gautham Sekar og Bart Preneel . Forbedrede skelnende angreb på HC-256, s. 1, 2, 6.
  7. Hongjun Wu . Stream Cipher HC-256, s. 1, 14.

Links