MD6 | |
---|---|
Létrehozva | 2008 |
közzétett | 2008 |
Hash méret | változó, 0<d≤512 |
A körök száma | változó. Alapértelmezett, Kulcs nélkül=40+[d/4], kulcs=max(80,40+(d/4)) |
Típusú | hash függvény |
Az MD6 ( Message Digest 6 ) egy változó hosszúságú kivonatoló algoritmus , amelyet Ronald Rivest professzor , a Massachusetts Institute of Technology munkatársa fejlesztett ki 2008 -ban [1] . Tetszőleges hosszúságú "ujjlenyomatok" vagy üzenetkivonatok létrehozására tervezték . A kevésbé fejlett MD5 helyettesítésére javasolták . A szerzők szerint az algoritmus ellenáll a differenciális kriptoanalízisnek. A közzétett üzenetek sértetlenségének és bizonyos értelemben hitelességének ellenőrzésére szolgál az üzenetkivonat és a közzétett üzenet összehasonlítása révén. Ezt a műveletet hash ellenőrzésnek nevezik. A hash függvényeket széles körben használják fix hosszúságú kulcsok generálására is titkosítási algoritmusokhoz egy adott kulcskarakterlánc alapján.
Az MD6 egyike azoknak az üzenetösszesítő algoritmusoknak, amelyeket Ronald L. Rivest professzor , a Massachusetts Institute of Technology munkatársa fejlesztett ki. Az MD6-ot először a Crypto 2008 konferencián mutatták be, mint az SHA-3 szabvány jelöltjét . Később azonban, 2009-ben, ugyanazon a konferencián a Rivest kijelentette, hogy az MD6 még nem áll készen arra, hogy szabvánnyá váljon. Az MD6 hivatalos honlapján azt nyilatkozta, hogy bár a kérelmet formálisan nem vonják vissza, az algoritmusnak még mindig vannak problémái a sebességgel, és nem tud biztonságot nyújtani a csökkentett körszámú verzióban [2] . Ennek eredményeként az MD6 nem jutott be a verseny második fordulójába. Korábban, 2008 decemberében a Fortify Software egyik kutatója puffertúlcsordulási hibát fedezett fel az eredeti MD6 implementációban. 2009. február 19-én Rivest professzor közzétette ennek a hibának a részleteit, és egy implementációs javítást is készített [3] .
A hash függvény algoritmusa nagyon eredeti ötleteket használ. Egy menetben 512 bájt kerül feldolgozásra, ami megnehezíti számos támadás végrehajtását, és megkönnyíti a párhuzamosítást, amelyet a fastruktúrákhoz is használnak.
M | eredeti üzenet hossza m , 1 ≤ m ≤ (2 64 - 1) bit |
---|---|
d | az eredményül kapott hash hossza bitben, 1 ≤ d ≤ 512 |
K | tetszőleges kulcsérték a keylen bájtok hosszúságában (0 ≤ keylen ≤ 64), jobb oldalon nullákkal kitömve 64-es számmal - keylen |
L | nem negatív 1 bájtos paraméter, 0 ≤ L ≤ 64 (alapértelmezett L = 64), jelzi a párhuzamos számítások számát és a fa mélységét |
r | 12 bites, nem negatív paraméter: körök száma (alapértelmezett r = 40 + [ d /4]) |
K | egy 15 elemből álló 8 bájtos tömb, értéke alább látható |
ƒ | MD6 tömörítési funkció, amely 712 bájt bemeneti adatot (beleértve az 512 bájtos B blokkot is) 128 bájtos C eredményre konvertál r kiértékelési kör használatával |
PAR | párhuzamos zsugorítási művelet minden faszinthez, soha nem hívják meg, ha L = 0 |
SEQ | soros tömörítési művelet, soha nem hívják meg, ha L = 64 |
Q tömb
Jelölje l = 0, M 0 = M , m 0 = m .
FőhurokA PAR egy m l = 1024 * max(1, [ m l-1 / 4096]) hosszúságú üzenetet ad vissza .
Eljárás törzseA SEQ d bit hosszúságú hash-t ad vissza . Ezt a műveletet soha nem hívják meg, ha L = 64.
Eljárás törzseA függvény bemenetként egy N tömböt vesz fel , amely n = 89 8 bájtos szóból (712 bájt) és az r körök számából áll .
A függvény egy 16 elemből álló, 8 bájtos
C tömböt ad vissza.
t0 _ | t1_ _ | t2_ _ | t3_ _ | t4_ _ |
---|---|---|---|---|
17 | tizennyolc | 21 | 31 | 67 |
( i - n ) mód 16 | 0 | egy | 2 | 3 | négy | 5 | 6 | 7 | nyolc | 9 | tíz | tizenegy | 12 | 13 | tizennégy | tizenöt |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
r i-n | tíz | 5 | 13 | tíz | tizenegy | 12 | 2 | 7 | tizennégy | tizenöt | 7 | 13 | tizenegy | 7 | 6 | 12 |
l i-n | tizenegy | 24 | 9 | 16 | tizenöt | 9 | 27 | tizenöt | 6 | 2 | 29 | nyolc | tizenöt | 5 | 31 | 9 |
S i-n = S | (in)/
16S | 0 = 0x0123456789abcde
S* = 0x7311c2812425cfa0
S | j+1 = ( S | j <<< 1) ⊕ ( S | j ^ S*)
Jelölje t = 16 r . (16 lépés lesz minden körben)
Legyen A [0.. t + n - 1] t + n 8 bájtos elemekből álló tömb . Az első n elemet ki kell másolni az N bemeneti tömbből .
A fő függvényhurok így néz ki:
i = n - t + n - 1 esetén: /* t lépések */
Return A [ t + n - 16 .. t + n - 1].
Hash függvények | |
---|---|
Általános rendeltetésű | |
Kriptográfia | |
Kulcsgenerálási funkciók | |
Csekkszám ( összehasonlítás ) | |
Hashes |
|