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.
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:
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.
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 |
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) |
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:
forbehandlingAfhængigt af ændringen af algoritmen udføres behandlingen af den indtastede meddelelse som følger:
BMW224 eller BMW256Lad 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 BMW512Lad 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 |
Tre funktioner bruges i beregningsprocessen
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)
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))
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:
“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."
Hash funktioner | |
---|---|
generelle formål | |
Kryptografisk | |
Nøglegenereringsfunktioner | |
Tjek nummer ( sammenligning ) | |
Hashes |
|