SHA256


首先SHA256 和HMAC-SHA256是不一樣的,HMAC-SHA256需要密鑰生成摘要,而SHA256不需要。

簡述SHA-256算法的安全性 作者:ice 轉載並學習。

SHA安全加密標准,是至今世界上使用最廣泛且安全的壓縮算法之一,隨着密碼學研究的不斷深入和計算機技術的快速發展,SHA-256算法得到全面推廣應用。

SHA-256算法使用了一組6個邏輯函數及一組常數K ,采用512比特的消息塊,每一個消息塊X分成16個32比特的字M0,M1,….M15 。下面來看一下SHA-256指的計算過程。

1、初始化:

簡述SHA-256算法的安全性

2、准備消息列表

簡述SHA-256算法的安全性

3、用每一輪的散列值的中間結果初始化8個工作變量A、B、C、D、E、F、G、H。初始定義由H0(0)-H7(7)給出。

4、對於0≤t≤63,執行(即壓縮函數):

T1=H+∑1{256}(e)+Ch(e,f,g)+Kt{256}+Wt

T2=∑0{256}(a)+Maj(a,b,c)

H=g g=h e=d+T1 d=c c=b b=a a=T1+T2

5、每個分組的中間散列值的計算方法:

H0(i)=a+H0(i-j), H1(i)=b+H1(i-j), H2(i)=c+H2(i-j), H3(i)=d+H3(i-j), H4(i)=e+H4(i-j), H5(i)=f+H5(i-j), H6(i)=g+H6(i-j), H7(i)=h+H7(i-j)

這里i是指消息的第i個分組,將所有的分組處理完畢后,最后輸出256比特的Hash值:H0(N) | | H1(N) | | H2(N) | | H3(N) | | H4(N) | | H5(N) H6(N) | | H7(N)

算法中使用的6個邏輯函數:

簡述SHA-256算法的安全性

SHA-256的安全性

Hash函數的安全性很大程度上取決於抗強碰撞的能力,即攻擊者找出兩個涓息M和MtM≠Mt,使得H(M)=HM ,因此,評價一個Hash函數的安全性,就是看攻擊者在現有的條件下,是否可以找到該函數的一對碰撞。目前已有的對Hash函數攻擊的方法包括生日攻擊、彩虹表攻擊、差分攻擊等。

生日攻擊:生日攻擊是一種可用於攻擊任何類型函數Hash函數的攻擊方法。從攻擊原理上看,它沒有利用Hash函數的結構和任何代數弱性質,只依賴與Hash值的長度。因此,抵御生日攻擊最有效的方法是Hash值必須有足夠的長度。

差分攻擊:差分攻擊是目前破譯迭代Hash函數最有效的手法之一,其基本方法是利用明文的輸入差值對輸出差值的影響,運用差分的高概率的繼承或者消除來產生最終的相同輸出。

用於消息唯一性和數據完整性驗證的Hash函數,其安全性依賴於函數本身的屬性和對抗碰撞的抵抗。Hash函數的算法結構特點和Hash值的長度是決定函數碰撞性的而主要因素,Hash值越長,越能抵御生日攻擊。SHA-256有256比特Hash值,MD5和SHA-1分別有128和160比特的Hash值。因此,SHA-256比MD5和SHA-1能抵抗生日攻擊。通過對Chabaud-Joux攻擊SHA-256的分析,找到了SHA-256的一個部分碰撞,其復雜度為266,但無法找到SHA-256的一個整體碰撞,因此SHA-256算法也能抵御現有的差分攻擊。由此可見,在抵御生日攻擊和抵御已知差分攻擊方面,SHA-256算法比現在廣泛使用的MD5和SHA-1等更具安全性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM