BMW ( Eng. BMW - Blue Midnight Wish ) este o funcție hash criptografică (xf) cu o ieșire de n biți , unde n = 224,256, 384 sau 512. Funcțiile hash sunt concepute pentru a crea „amprente” sau „rezumate” de mesaje ale lungime de biți arbitrară. Sunt utilizate în diverse aplicații sau componente legate de securitatea informațiilor .
BLUE MIDNIGHT WISH a fost conceput pentru a fi o funcție hash criptografică mult mai eficientă decât SHA-2 , oferind totuși aceeași securitate sau mai bună.
Pe 7 noiembrie 2008, Institutul Național de Standarde și Tehnologie din SUA ( NIST - Institutul Național de Standarde și Tehnologie ) a deschis un concurs pentru o nouă funcție hash SHA-3 . SHA-3 trebuie să accepte dimensiuni de bloc de ieșire de 224, 256, 384 și 512 biți. Blocurile de 160 de biți nu au fost furnizate din cauza posibilității de a găsi coliziuni prin atacuri de forță brută (enumerarea opțiunilor). Au fost păstrate aceleași cerințe ca și pentru funcțiile hash anterioare:
Următorii parametri standard de durabilitate au fost avansați la funcții:
Au fost 51 de candidați SHA-3 în primul tur. 14 dintre ei (inclusiv BMW) au avansat în turul doi.
Algoritmul BMW funcționează cu mesajele împărțindu-le în blocuri. Blocul, la rândul său, este împărțit în cuvinte. Dimensiunile blocurilor și cuvintelor depind de implementarea specifică a algoritmului. Tabelul de mai jos enumeră principalele proprietăți ale tuturor celor 4 variante ale algoritmului BMW.
Algoritm | Dimensiunea mesajului | Dimensiunea blocului | Dimensiunea cuvântului | Semnatura digitala |
---|---|---|---|---|
BMW224 | <2 64 | 512 | 32 | 224 |
bmw384 | <2 64 | 512 | 32 | 384 |
BMW224 | <2 64 | 1024 | 64 | 224 |
BMW512 | <2 64 | 1024 | 64 | 512 |
Variabil | Descriere |
---|---|
H | Conductă dublă (țeavă engleză ) . O valoare variabilă care este de cel puțin două ori mai largă decât semnătura digitală finală de n biți. |
Q | Conductă cvadruplă. |
Bună) | i-a valoare a lui H. H(0) este valoarea inițială. |
H(N) | Valoarea finală H. Este folosită pentru a determina semnătura digitală de n biți . |
Q(i) | i-a valoare a conductei cvadruple. |
H(i, j) | je este un cuvânt din H(i). Unde H(i) este împărțit într-un număr predeterminat de blocuri numite cuvinte |
H(i,0) | Primul cuvânt (stânga) din H(i) |
Q(i, j) | j-al-lea cuvânt al i-a conductă cvadruplă Q(i) |
Q(i, a) | Primele 16 cuvinte din Q(i), acestea sunt Q(i, j) unde j=0..15 |
Q(i, b) | Ultimele 16 cuvinte din Q(i), acestea sunt Q(i, j) unde j=16..31 |
l | Lungimea mesajului M în biți |
m | Numărul de biți din blocul de mesaje M(i) |
M | Mesaj de intrare cu lungimea de biți l |
M(i) | al-lea bloc al mesajului de intrare. Lungimea biților m |
M(i, j) | cuvantul M(i). M(i)=[M(i,0),M(i,1),...,M(i,15)] |
XL,XH | Două cuvinte temporare (lungime 32 sau 64 de biți, în funcție de modificarea algoritmului) utilizate în calcularea H(i) |
BLUE MIDNIGHT WISH urmează principiile generale de construire a funcțiilor hash care sunt adesea folosite astăzi. Și anume, asta înseamnă că algoritmul este împărțit în două părți:
preprocesareÎn funcție de modificarea algoritmului, procesarea mesajului introdus se realizează astfel:
BMW224 sau BMW256Fie ca lungimea mesajului să fie l. A 1 este atribuit mesajului, urmat de o succesiune de k zerouri, unde k este cea mai mică soluție nenegativă a ecuației l+1+k=448 mod512 . În continuare, este atribuit un bloc de 64 de biți al reprezentării binare a numărului l
BMW384 sau BMW512Fie ca lungimea mesajului să fie l. A 1 este atribuit mesajului, urmat de o secvență de k zerouri, unde k este cea mai mică valoare nenegativă. rezolvarea ecuației l+1+k=960 mod1024 . În continuare, este atribuit un bloc de 64 de biți al reprezentării binare a numărului l. Un exemplu este reprezentarea post-ty a lui „abc” (conform ASCII )
Inițializarea valorilor inițiale
Valoarea inițială a lui H(0) în depinde de modificarea algoritmului
Algoritm | Valoarea inițială H(0) |
---|---|
BMW224 | 0x000120308090A0B1011121318191A1B2021222328292A2B3031323338393A3B040506070C0D0E0F141516171C1D1
E1F242526272C2D2E2F243536373C3D3E3F |
BMW256 | 0x4041424348494A4B5051525358595A5B6061626368696A6B7071727378797A7B444546474C4D4E4F545556575C5D
5E5F646566676C6D6E6F747576777C7D7E7F |
bmw384 | 0x00010203040506071011121314151617202122232425262730313233243536374041424344454647505152535455
56576061626364656667707172737475767708090A0B0C0D0E0F18191A1B1C1D1E1F28292A2B2C2D2E2F38393A3B3C3D3E3F484 94A4B4C4D4E4F58595A5B5C5D5E5F68696A6B6C6D6E6F78797A7B7C7D7E7F |
BMW512 | 0x80818283848586879091929394959697A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7D0D1D2D3
D4D5D6D7E0E1E2E3E4E5E6E7F0F1F2F3F4F5F6F788898A8B8C8D8E8F98999A9B9C9D9E9FA8A9AAABACADAEAFB8B9BABBBCBD BEBFC8C8C8D8E8F98999A9B9C9D9E9FA8A9AAABACADAEAFB8B9BABBBCBD BEBFC8CDFDCDFEDFED98CDFEDFED98CDFEDFED9 |
În procesul de calcul sunt utilizate trei funcții
Calcule auxiliare:
Pentru a determina funcțiile f 0 , f 1 și f 2 , sunt introduse mai întâi funcții suplimentare
BMW224/BMW256 | BMW384/BMW512 |
---|---|
|
Aici constanta K j =j × (0x05555555) (pentru versiunile pe 32 de biți) și K j =j × (0x0555555555555555) (pentru versiunile pe 64 de biți). j=16,17,…,31
Funcțiile expand 1 și expand 2 sunt utilizate în etapa de calcul a funcției F1 , adică în etapa de expansiune a conductei cvadruple . Prima funcție, expand 1 , este mult mai complexă din punct de vedere computațional decât a doua, dar dă rezultate semnificativ mai bune.
Funcția f 0 :
Funcția f 1 :
Parametrii ExpandRound1 și ExpandRound2 determină câte iterații vor fi efectuate de fiecare dintre algoritmii expand 1 și expand 2 descriși mai sus.
Pentru (j=0;j<ExpandRound1;j++) Q(i,j)=expand 1 (j+16); Pentru (j=ExpandRound1;j<ExpandRound2+ExpandRound1;j++) Q(i,j)=expand 2 (j+16);Funcția f 2 :
1. Calculul variabilelor suplimentare XL și XH
2. Calculul unei noi valori a lui H(i)
După ce valoarea finală H(N) a fost calculată, este necesar să se selecteze n biți corespunzători valorii funcției hash Hash=Hash(H(N))
Conform cercetării efectuate de BMW Algorithm Development Group , este posibil să se formuleze principalele prevederi despre puterea criptografică, rezistența la coliziune, găsirea preimagine, re-preimagini, rezistența la extinderea lungimii și atacurile multi-coliziune:
„BMW are performanțe foarte bune și pare a fi potrivit pentru majoritatea platformelor. Are cerințe moderne de memorie. Cele mai grave rezultate criptoanalitice împotriva BMW sunt, în practică, atacuri de pseudo-coliziune neimportante. Aceste atacuri pun sub semnul întrebării securitatea funcției.”
„BMW se dovedește a fi instabil la pseudo-atacuri - coliziuni și a doua preimagini. Nivelul de securitate este mai scăzut decât se aștepta: BMW-256 este retrogradat la 65 de biți, BMW-512 la 128 de biți. Amprenta de memorie necesară pentru a efectua aceste atacuri este neglijabilă.”
Funcții hash | |
---|---|
scop general | |
Criptografic | |
Funcții de generare a cheilor | |
Numărul de verificare ( comparație ) | |
Hashes |
|