BMW hashfunktion

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 2 augusti 2013; kontroller kräver 12 redigeringar .

BMW ( Eng.  BMW  - Blue Midnight Wish ) är en kryptografisk hashfunktion (xf) med en utdata på n bitar , där n = 224 256, 384 eller 512. Hashfunktioner är utformade för att skapa "fingeravtryck" eller "sammandrag" av meddelanden från godtycklig bitlängd. De används i olika applikationer eller komponenter relaterade till informationssäkerhet .

BLUE MIDNIGHT WISH designades för att vara en mycket effektivare kryptografisk hashfunktion än SHA-2 samtidigt som den fortfarande ger samma eller bättre säkerhet.

Historik

Den 7 november 2008 öppnade US National Institute of Standards and Technology ( NIST  - National Institute of Standards and Technology ) en tävling om en ny SHA-3-hashfunktion .  SHA-3 måste stödja utdatablockstorlekar på 224, 256, 384 och 512 bitar. 160-bitars block tillhandahölls inte på grund av möjligheten att hitta kollisioner genom brute force attacker (uppräkning av alternativ). Samma krav har bevarats som för de tidigare hashfunktionerna:

  1. den maximala storleken på inmatningsvärdet,
  2. kollisionsmotstånd ,
  3. motstånd mot att hitta en förbild och en andra förbild
  4. strömmande beräkningsläge "i ett pass".

Följande standardparametrar för hållbarhet har avancerats till funktionerna:

Det fanns 51 SHA-3-kandidater i den första omgången. 14 av dem (inklusive BMW) gick vidare till andra omgången.

Algoritm

Allmänna egenskaper

BMW-algoritmen arbetar med meddelanden genom att dela upp dem i block. Blocket är i sin tur uppdelat i ord. Storleken på block och ord beror på den specifika implementeringen av algoritmen. Tabellen nedan listar huvudegenskaperna för alla fyra varianterna av BMW-algoritmen.

Algoritm Meddelandestorlek Block storlek Ordstorlek Digital signatur
BMW 224 <2 64 512 32 224
bmw384 <2 64 512 32 384
BMW 224 <2 64 1024 64 224
BMW512 <2 64 1024 64 512

Parametrar, variabler och konstanter

Variabel Beskrivning
H Dubbelpipa ( English  pipe ). Ett variabelvärde som är minst dubbelt så brett som den slutliga digitala signaturen på n bitar.
F Fyrdubbelt rör.
Hej) i:te värdet på H. H(0) är initialvärdet.
H(N) slutvärde H. Det används för att bestämma den digitala signaturen för n bitar .
Q(i) i:te värdet för det fyrdubbla röret.
H(i, j) je är ett ord från H(i). Där H(i) är uppdelad i ett förutbestämt antal block som kallas ord
H(i,0) Det allra första (vänster) ordet från H(i)
Q(i, j) j:te ordet i det i:te fyrfaldiga röret Q(i)
Q(i, a) De första 16 orden i Q(i), de är Q(i, j) där j=0..15
Q(i, b) De sista 16 orden i Q(i), de är Q(i, j) där j=16..31
l Meddelandelängd M i bitar
m Antal bitar i meddelandeblock M(i)
M Inmatningsmeddelande med bitlängd l
Mi) det ingående meddelandets block. Bitlängd m
M(i, j) ordet M(i). M(i)=[M(i,0),M(i,1),..,M(i,15)]
XL,XH Två tillfälliga ord (längd 32 eller 64 bitar, beroende på modifieringen av algoritmen) som används för att beräkna H(i)

Operationer som används i algoritmen

  1. Bitvis XOR -operation
  2. Bitvis addition + eller subtraktion operationer - modulo 32 eller 64 , beroende på modifieringen av algoritmen
  3. Skift åt vänster (höger) operation med r bitar SHL r (respektive SHR r )
  4. Rotation (rotera vänster) ROTL r

Allmänna egenskaper hos BMW-strukturen

BLUE MIDNIGHT WISH följer de allmänna principerna för att bygga hashfunktioner som ofta används idag. Det betyder nämligen att algoritmen är uppdelad i två delar:

förbearbetning
  1. Skriver ett meddelande
  2. Parsar det inmatade meddelandet i m-bitars block
  3. Initiering av de initiala värdena som kommer att användas vid beräkning av xf
Hashberäkning
  1. Beräkna fallet för ett meddelande från ett mottaget meddelande
  2. Använda detta register för att beräkna en sekvens av värden H(i)
  3. n minst signifikanta bitar ( eng.  LSB  - Least Significant Bits ) väljs som en digital signatur

Förberäkningsstadiet

Beroende på modifieringen av algoritmen utförs behandlingen av det inmatade meddelandet enligt följande:

BMW224 eller BMW256

Låt meddelandelängden vara l. En 1 tilldelas meddelandet, följt av en sekvens av k nollor, där k är den minsta icke-negativa lösningen till ekvationen l+1+k=448 mod512 . Därefter tilldelas ett 64-bitars block av den binära representationen av talet l

BMW384 eller BMW512

Låt meddelandelängden vara l. En 1 tilldelas meddelandet, följt av en sekvens av k nollor, där k är det minsta icke-negativa värdet. lösning av ekvationen l+1+k=960 mod1024 . Därefter tilldelas ett 64-bitars block av den binära representationen av talet l. Ett exempel är postty-representationen av "abc" (enligt ASCII )

Initiering av initiala värden

Det initiala värdet för H(0) in beror på modifieringen av algoritmen

Algoritm Initialt värde H(0)
BMW 224 0x000120308090A0B1011121318191A1B2021222328292A2B3031323338393A3B040506070C0D0E0F141516171C1D1

E1F242526272C2D2E2F243536373C3D3E3F

BMW 256 0x4041424348494A4B5051525358595A5B6061626368696A6B7071727378797A7B444546474C4D4E4F545556575C5D

5E5F646566676C6D6E6F747576777C7D7E7F

bmw384 0x00010203040506071011121314151617202122232425262730313233243536374041424344454647505152535455

56576061626364656667707172737475767708090A0B0C0D0E0F18191A1B1C1D1E1F28292A2B2C2D2E2F38393A3B3C3D3E3F484 94A4B4C4D4E4F58595A5B5C5D5E5F68696A6B6C6D6E6F78797A7B7C7D7E7F

BMW512 0x80818283848586879091929394959697A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7D0D1D2D3

D4D5D6D7E0E1E2E3E4E5E6E7F0F1F2F3F3F4F5F6F788898A8B8C8D8E8F98999A9B9C9D9E9FA8A9AAABACADAEAFB8B9BABBBCBD BEBFEDACEDFFFFDEFDEF9

Steget för hashberäkning

Tre funktioner används i beräkningsprocessen

  • Första funktionen F 0  : {0,1} 2m →{0,1} m . Den tar två argument M(i) och H(i−1) och producerar en bijektiv mappning M(i) XOR H(i−1). Här är M(i) det i:te meddelandeblocket, H(i−1) är det aktuella värdet på binärröret. Resultatet skrivs till den första delen av det fyrdubbla röret: Q(i, a)=F 0 (M(i), H(i−1))= A2 ( A1 (M(i) XOR H(i−1) ))).
  • Andra funktionen F 1  : {0,1} 2m →{0,1} m . Det tar som argument ett meddelandeblock M(i) (av längden m bitar) och den första delen av ett fyrdubbelt rör Q(i, a). Resultatet skrivs till den andra delen av det fyrdubbla röret Q(i, b)=F 1 (M(i),Q(i, a)).
  • Tredje funktionen F 3  : {0,1} 3m →{0,1} m . Termen vikning används för det ( engelska  {{{1}}}  - folding ) för att betona egenskaperna hos dess faltning av ett 3m-dimensionellt utrymme till ett m-dimensionellt. Det tar två värden som argument: meddelandeblocket M(i) och det aktuella värdet på det fyrdubbla röret Q(i)=Q(i, a)||Q(i, b). Resultatet skrivs som ett nytt värde på H(i): H(i) = F 2 (M(i),Q(i))
Hash-funktion Pseudokod för (i=1;i<N;i++) { Q(i,a)=F0 ( M(i),H(i-1)); Q(i,b)=Fi ( 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)); Beskrivning av funktioner f 0 , f 1 och f 2

Hjälpberäkningar:

För att bestämma funktionerna f 0 , f 1 och f 2 introduceras först ytterligare funktioner

BMW224/BMW256 BMW384/BMW512


Här är konstanten K j =j × (0x05555555) (för 32-bitarsversioner) och Kj =j × (0x05555555555555555) (för 64-bitarsversioner). j=16,17,…,31

Funktionerna expand 1 och expand 2 används i beräkningssteget för funktionen F 1 , det vill säga i det fyrdubbla rörets expansionssteget. Den första funktionen, expand 1 , är beräkningsmässigt mycket mer komplex än den andra, men ger betydligt bättre resultat.

Funktion f 0 :

Funktion f 1 :

Parametrarna ExpandRound1 och ExpandRound2 bestämmer hur många iterationer som kommer att utföras av var och en av algoritmerna expand 1 och expand 2 som beskrivs ovan.

För (j=0;j<ExpandRound1;j++) Q(i,j)=expandera 1 (j+16); För (j=ExpandRound1;j<ExpandRound2+ExpandRound1;j++) Q(i,j)=expandera 2 (j+16);

Funktion f 2 :

1. Beräkning av tilläggsvariabler XL och XH


2. Beräkning av ett nytt värde på H(i)

Slutligt hashvärde

Efter att slutvärdet H(N) har beräknats är det nödvändigt att välja n bitar som motsvarar värdet på hashfunktionen Hash=Hash(H(N))

  • Hash=H(N,8)||H(N,9)||…||H(n,15) — för BMW256- och BMW512-versioner
  • Hash=H(N,10)||H(N,11)||…||H(n,15) — för BMW384-versionen
  • Hash=H(N,9)||H(N,10)||…||H(n,15) — för BMW224-versionen


Cryptanalysis of the Blue Midnight Wish

Enligt den forskning som utförts av BMW Algorithm Development Group är det möjligt att formulera de viktigaste bestämmelserna om kryptografisk styrka, kollisionsmotstånd, föravbildning, återförbilder, motstånd mot längdförlängning och multikollisionsattacker:

  1. Kollisionsmotstånd ca n/2 bitar
  2. Förbildsresistans n bitar
  3. Ombilda nk bitar för alla meddelanden kortare än 2 n-k bitar
  4. Motstånd mot förlängning
  5. Motståndskraftig mot multikollisionsattacker

NIST:s tävlingskommittés beslut

"BMW har mycket bra prestanda och verkar vara lämplig för de flesta plattformar. Har moderna minneskrav. De allvarligaste kryptoanalytiska resultaten mot BMW är i praktiken icke-viktiga pseudokollisionsattacker. Dessa attacker ifrågasätter säkerheten för funktionen."

"BMW visar sig vara instabil mot pseudotacker - kollisioner och andra förbilder. Säkerhetsnivån är lägre än förväntat: BMW-256 är nedgraderad till 65 bitar, BMW-512 till 128 bitar. Minnesavtrycket som krävs för att utföra dessa attacker är försumbart."

Litteratur