BMW hash funktion

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 2. august 2013; checks kræver 12 redigeringer .

BMW ( Eng.  BMW  - Blue Midnight Wish ) er en kryptografisk hash-funktion (xf) med et output på n bit , hvor n = 224.256, 384 eller 512. Hash-funktioner er designet til at skabe "fingeraftryk" eller "sammendrag" af meddelelser fra vilkårlig bitlængde. De bruges i forskellige applikationer eller komponenter relateret til informationssikkerhed .

BLUE MIDNIGHT WISH er designet til at være en meget mere effektiv kryptografisk hashfunktion end SHA-2, mens den stadig giver den samme eller bedre sikkerhed.

Historie

Den 7. november 2008 åbnede US National Institute of Standards and Technology ( NIST  - National Institute of Standards and Technology ) en konkurrence om en ny SHA-3 hash-funktion .  SHA-3 skal understøtte outputblokstørrelser på 224, 256, 384 og 512 bit. 160-bit blokke blev ikke leveret på grund af muligheden for at finde kollisioner ved brute force angreb (opregning af muligheder). De samme krav er bevaret som for de tidligere hash-funktioner:

  1. den maksimale størrelse af inputværdien,
  2. kollisionsmodstand ,
  3. modstand mod at finde et forbillede og et andet forbillede
  4. streaming-beregningsmetode "i én gang".

Følgende standard holdbarhedsparametre er blevet avanceret til funktionerne:

Der var 51 SHA-3-kandidater i første runde. 14 af dem (inklusive BMW) gik videre til anden runde.

Algoritme

Generelle egenskaber

BMW-algoritmen arbejder med beskeder ved at dele dem op i blokke. Blokken er til gengæld opdelt i ord. Størrelsen af ​​blokke og ord afhænger af den specifikke implementering af algoritmen. Tabellen nedenfor viser hovedegenskaberne for alle 4 varianter af BMW-algoritmen.

Algoritme Meddelelsesstørrelse Blokstørrelse Ordstørrelse Digital signatur
BMW 224 <2 64 512 32 224
bmw384 <2 64 512 32 384
BMW 224 <2 64 1024 64 224
BMW 512 <2 64 1024 64 512

Parametre, variable og konstanter

Variabel Beskrivelse
H Dobbeltrør ( engelsk  rør ). En variabel værdi, der er mindst dobbelt så bred som den endelige digitale signatur på n bit.
Q Firedobbelt rør.
Hej) i-te værdi af H. H(0) er startværdien.
H(N) slutværdi H. Den bruges til at bestemme den digitale signatur af n bits .
Q(i) i-te værdi af det firdobbelte rør.
H(i, j) je er et ord fra H(i). Hvor H(i) er opdelt i et forudbestemt antal blokke kaldet ord
H(i,0) Det allerførste (venstre) ord fra H(i)
Q(i, j) j-te ord i det i:de firdobbelte rør Q(i)
Q(i, a) De første 16 ord i Q(i), det er Q(i, j) hvor j=0..15
Q(i, b) De sidste 16 ord i Q(i), det er Q(i, j) hvor j=16..31
l Meddelelseslængde M i bits
m Antal bits i meddelelsesblok M(i)
M Indtastningsmeddelelse med bitlængde l
M(i) blok af inputmeddelelsen. Bitlængde m
M(i, j) ord M(i). M(i)=[M(i,0),M(i,1),..,M(i,15)]
XL,XH To midlertidige ord (længde 32 eller 64 bit, afhængig af modifikationen af ​​algoritmen), der bruges til at beregne H(i)

Operationer brugt i algoritmen

  1. Bitvis XOR operation
  2. Bitvise addition + eller subtraktion operationer - modulo 32 eller 64 , afhængigt af modifikationen af ​​algoritmen
  3. Skift til venstre (højre) operation med r bit SHL r (henholdsvis SHR r )
  4. Rotation (drej til venstre) ROTL r

Generelle træk ved BMW-strukturen

BLUE MIDNIGHT WISH følger de generelle principper for at bygge hashfunktioner, som ofte bruges i dag. Det betyder nemlig, at algoritmen er opdelt i to dele:

forbehandling
  1. Indtastning af en besked
  2. Parsing af den indtastede meddelelse i m-bit blokke
  3. Initialisering af startværdierne, der vil blive brugt ved beregning af xf
Hash-beregning
  1. Beregning af tilfældet med en besked fra en modtaget besked
  2. Brug af dette register til at beregne en sekvens af værdier H(i)
  3. n mindst signifikante bit ( eng.  LSB  - Least Significant Bits ) er valgt som en digital signatur

Forberegningstrin

Afhængigt af ændringen af ​​algoritmen udføres behandlingen af ​​den indtastede meddelelse som følger:

BMW224 eller BMW256

Lad beskedens længde være l. En 1 er tildelt meddelelsen, efterfulgt af en sekvens af k nuller, hvor k er den mindste ikke-negative løsning til ligningen l+1+k=448 mod512 . Dernæst tildeles en 64-bit blok af den binære repræsentation af tallet l

BMW384 eller BMW512

Lad beskedens længde være l. En 1 er tildelt meddelelsen, efterfulgt af en sekvens af k nuller, hvor k er den mindste ikke-negative værdi. løsning af ligningen l+1+k=960 mod1024 . Dernæst tildeles en 64-bit blok af den binære repræsentation af tallet l. Et eksempel er post-ty-repræsentationen af ​​"abc" (ifølge ASCII )

Initialisering af startværdier

Startværdien af ​​H(0) in afhænger af modifikationen af ​​algoritmen

Algoritme Startværdi H(0)
BMW 224 0x000120308090A0B1011121318191A1B2021222328292A2B3031323338393A3B040506070C0D0E0F141516171C1D1

E1F242526272C2D2E2F243536373C3D3E3F

BMW 256 0x4041424348494A4B5051525358595A5B6061626368696A6B7071727378797A7B444546474C4D4E4F545556575C5D

5E5F646566676C6D6E6F747576777C7D7E7F

bmw384 0x00010203040506071011121314151617202122232425262730313233243536374041424344454647505152535455

56576061626364656667707172737475767708090A0B0C0D0E0F18191A1B1C1D1E1F28292A2B2C2D2E2F38393A3B3C3D3E3F484 94A4B4C4D4E4F58595A5B5C5D5E5F68696A6B6C6D6E6F78797A7B7C7D7E7F

BMW 512 0x80818283848586879091929394959697A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7D0D1D2D3

D4D5D6D7E0E1E2E3E4E5E6E7F0F1F2F3F3F4F5F6F788898A8B8C8D8E8F98999A9B9C9D9E9FA8A9AAABACADAEAFB8B9BABBBCBD BEBFEDACEDAFFFFDFDEF8

Hash-beregningstrinnet

Tre funktioner bruges i beregningsprocessen

  • Første funktion F 0  : {0,1} 2m →{0,1} m . Den tager to argumenter M(i) og H(i−1) og producerer en bijektiv afbildning M(i) XOR H(i−1). Her er M(i) den i-te beskedblok, H(i−1) er den aktuelle værdi af det binære rør. Resultatet skrives til den første del af det firdobbelte rør: Q(i, a)=F 0 (M(i), H(i−1))= A2 ( A1 (M(i) XOR H(i−1) ))).
  • Anden funktion F 1  : {0,1} 2m →{0,1} m . Det tager som argumenter en meddelelsesblok M(i) (af længden m bit) og den første del af et firdobbelt rør Q(i, a). Resultatet skrives til anden del af det firdobbelte rør Q(i, b)=F 1 (M(i),Q(i, a)).
  • Tredje funktion F 3  : {0,1} 3m →{0,1} m . Udtrykket foldning bruges om det ( engelsk  {{{1}}}  - folding ) for at understrege egenskaberne ved dets foldning af et 3m-dimensionelt rum til et m-dimensionalt. Det tager to værdier som argumenter: meddelelsesblokken M(i) og den aktuelle værdi af det firdobbelte rør Q(i)=Q(i, a)||Q(i, b). Resultatet skrives som en ny værdi af H(i): H(i) = F 2 (M(i),Q(i))
Hash-funktion Pseudokode for (i=1;i<N;i++) { Q(i,a)=F0 ( M(i),H(i-1)); Q(i,b)=F1 ( M(i), Q(i,a)); Q(i)=Q(i,a)||Q(i,b); H(i)=F2 ( M(i), Q(i)); } Hash=N_LeastSignificantBits(H(i)); Beskrivelse af funktioner f 0 , f 1 og f 2

Hjælpeberegninger:

For at bestemme funktionerne f 0 , f 1 og f 2 introduceres først yderligere funktioner

BMW224/BMW256 BMW384/BMW512


Her er konstanten K j =j × (0x05555555) (for 32 bit versioner) og K j =j × (0x05555555555555555) (for 64 bit versioner). j=16,17,…,31

Funktionerne expand 1 og expand 2 bruges i beregningstrinnet af funktionen F 1 , det vil sige i firedobbelt rørudvidelsestrinnet. Den første funktion, expand 1 , er beregningsmæssigt meget mere kompleks end den anden, men giver væsentligt bedre resultater.

Funktion f 0 :

Funktion f 1 :

Parametrene ExpandRound1 og ExpandRound2 bestemmer, hvor mange iterationer, der udføres af hver af de ovenfor beskrevne expand 1- og expand 2 -algoritmer.

For (j=0;j<ExpandRound1;j++) Q(i,j)=udvid 1 (j+16); For (j=ExpandRound1;j<ExpandRound2+ExpandRound1;j++) Q(i,j)=udvid 2 (j+16);

Funktion f 2 :

1. Beregning af yderligere variable XL og XH


2. Beregning af en ny værdi af H(i)

Endelig hashværdi

Efter den endelige værdi H(N) er blevet beregnet, er det nødvendigt at vælge n bit svarende til værdien af ​​hashfunktionen Hash=Hash(H(N))

  • Hash=H(N,8)||H(N,9)||…||H(n,15) — for BMW256- og BMW512-versioner
  • Hash=H(N,10)||H(N,11)||…||H(n,15) — for BMW384 version
  • Hash=H(N,9)||H(N,10)||…||H(n,15) — for BMW224 version


Krypteringsanalyse af det blå midnatsønske

Ifølge forskningen udført af BMW Algorithm Development Group er det muligt at formulere de vigtigste bestemmelser om kryptografisk styrke, kollisionsmodstand, preimage-finding, re-preimages, modstand mod længdeudvidelse og multikollisionsangreb:

  1. Kollisionsmodstand ca n/2 bit
  2. Preimage modstand n bit
  3. Re-imaging nk bits for alle meddelelser kortere end 2 n-k bits
  4. Modstand mod forlængelse
  5. Modstandsdygtig over for multikollisionsangreb

NIST-konkurrenceudvalgets beslutning

“BMW har meget god ydeevne og ser ud til at være velegnet til de fleste platforme. Har moderne hukommelseskrav. De mest alvorlige kryptoanalytiske resultater mod BMW er i praksis ikke-vigtige pseudo-kollisionsangreb. Disse angreb sætter spørgsmålstegn ved funktionens sikkerhed."

"BMW viser sig at være ustabil over for pseudo-angreb - kollisioner og 2. forbilleder. Sikkerhedsniveauet er lavere end forventet: BMW-256 er nedgraderet til 65 bit, BMW-512 til 128 bit. Hukommelsesaftrykket, der kræves for at udføre disse angreb, er ubetydeligt."

Litteratur