複製鏈接
請複製以下鏈接發送給好友

md6

鎖定
md6是一種算法。繼MD5被攻破後,在Crypto2008上, Rivest提出了MD6算法,該算法的Block size為512 bytes(MD5的Block Size是512 bits), Chaining value長度為1024 bits, 算法增加了並行 機制,適合於多核CPU。
中文名
第六代消息摘要算法
外文名
MD6
出現原因
MD5無法區分惡意軟件或偽造證書
提出者
Rivest
增加了
並行 機制

md6基礎介紹

Crypto2008上,Rivest提出的MD6算法。他本人稱該算法能夠抵抗截止至2020年已知的所有攻擊。
相較於MD5,加密結構雖更為完善,但其在SHA3競賽的第一輪競賽中,有證明的版本速度太慢,而效率高的版本並不能給出類似的證明,MD6因此淘汰,故大概率無法投入廣泛使用。
相較MD5,其安全性大大改進,可算做能完全代替MD5的散列驗證算法.
MD6相較MD5的優點如下.
  1. Large input message block size(輸入信息塊的數據長度更大)
  2. provably resistant to differential attacks(抵抗差分攻擊)
  3. Alternative sequential mode(可變的序列模式)
  4. Key input K is of up to 512 Byte and K is input to every compression function(密鑰輸入K達到512Byte並且K是作為每一個壓縮函數的輸入)
  5. 1024-bit intermediate (chaining) value root truncated to desired final length? Location (level,index) input to each node(1024-bit中間(鏈接)值根截斷所期望的最終長度(水平位置,指數)輸入到每個節點)
  6. Root bit (aka “z-bit” or “pumpkin bit”) input to each compression function(根點又名“z-bit”或“南瓜點”輸入到每個壓縮功能)
  7. Operations on 64-bit words The following operations only: –XOR–AND–SHIFT by fixed amounts.(操作在64位字以下操作:–異或和移位––都在固定的範圍)

md6相關資料

MD6雜湊函數被認為具有較高的安全性和性能。雜湊函數的設計包括壓縮函數和工作模式。壓縮函數是雜湊函數的核心,由步操作和消息擴展構成,不安全的壓縮函數會導致不安全的雜湊函數。步操作通常可以分為非平衡Feistel和SPN兩種結構,非平衡Feistel結構的優點是比較簡單,通常只需要較少的指令即可實現,不足是擴散性較差。MD4族雜湊函數的步操作可以表示為一個四級或五級移位寄存器,只需要十條左右x86指令即可實現;而其每一步只升級內部鏈變量的1/4或1/5,導致擴散性下降。MD4族壓縮函數的消息擴展通常採用置換或迭代計算的方式,其擴展過程是一維的,靈活性和擴散性受到限制,MD4MD5SHASHA-1消息擴展的擴散性不足也是它們受到攻擊的原因。工作模式的設計對於提高雜湊函數的性能和安全性非常重要,隨着硬件資源的進步,串行工作模式在效率方面受到限制,並行工作模式逐漸受到人們的重視。
二維消息擴展可以認為消息擴散不是在直線上,而是在平面中進行,消息擴展的靈活性和擴散性都獲得提高。在不同的維度上可以使用不同的消息擴展方案,Hash的橫向消息擴展采用置換的方式而縱向消息擴展采用迭代的方式,同時具有MD5高效和SHA-1擴散性好的的優點。
與MD工作模式相比,Par模式理論和實際上都具有線性加速比。與Tree模式相比,Par模式消息填充簡單,計算單元間的同步控制少,只在計算最終雜湊值時才需要同步。當加速比同為L時,其所佔用的臨時存儲空間為L乘以壓縮值的大小,要小於Tree模式佔用的臨時存儲空間。。Hash的非線性變換層的輸入輸出為8bit,擴散層的輸入輸出為32bit(MD4族雜湊函數步操作的輸入至少為128bit,輸出至少為32bit),因此步操作的非線性和擴散性可以量化分析。小部件還使得Hash在8位處理器上的性能優化更加容易。
基於基數列表的MD6 算法實現中存儲器的消耗為log4 n . 樹的每層由4 個模塊組成,當樹的該層填滿時,將通過壓縮這4 個模塊來去除這一層,並將結果填充到下層次.這一版本並沒有直接的並行性,實現的MD6 算法採用的是逐層壓縮數據.開始階段存儲了整個消息,算法中的存儲器使用代價為O( n). 使用了2 個數組:一個用於工作層,另一個用於工作層的下一層(由模塊壓縮結果填充) ,大小是前一數組的4 倍.當下層次填滿時,它將變為工作層,將分配一個新的數組(大小是前一數組的4倍)用於新工作層的下一層
MD6 算法將長度小於2^64bit的消息作為輸入參量.輸出結果為d bit(O小於d:S;512)的摘要值,d的缺省值為256 ,但它可以變化.此外,MD6算法的很多參量都有默認值,但也可以變化.密鑰K 默認值為空(長度為0) .它作為哈希函數的輸入密鑰.層次L MD6 算法實質上是4 個子結點一組的Merkle樹.樹的高度指定為L , 其默認值為64 (此時Merkle 樹是一棵完整的樹) .如果L 值為0 ,將按順序壓縮數據.如果L 值小於64 , MD6 將使用混合模式:首先基於Merkle 樹,從層次O 到層次L , 隨後,在每個層次內按順序壓縮數據.圈數r 默認r=40+Ld/4J值,因此,當d為默認值(I!P 512) 時, r=104.其他參數壓縮函數中使用的常量(像Q 或t;) 也可以改變.