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.
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:
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.
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 |
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) |
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örbearbetningBeroende på modifieringen av algoritmen utförs behandlingen av det inmatade meddelandet enligt följande:
BMW224 eller BMW256Lå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 BMW512Lå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 |
Tre funktioner används i beräkningsprocessen
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)
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))
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:
"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."
Hash-funktioner | |
---|---|
generell mening | |
Kryptografisk | |
Nyckelgenereringsfunktioner | |
Kontrollnummer ( jämförelse ) | |
Hashes |
|