网络安全-安全散列函数,信息摘要SHA-1,MD5原理
-----------------------------------------------歡迎查看網絡安全連載博客-----------------------------------
【網絡安全】-安全散列函數。信息摘要SHA-1。MD5算法? ? ? ?【網絡安全】-非對稱加密,RSA算法,數字簽名
【網絡安全】-RSA非對稱算法算法、數字簽名? ? ? ? ? ? ? ? ? ? ? ? ?【網絡安全】-建立安全socket連接、登錄
【網絡安全】-【數字證書,證書鏈】
---------------------------------------------------------------------------------------------------------------------
本文絕大部分內容來自《網絡安全基礎——應用與標準》第五版——清華大學出版社。
當中藍色部門是自己加入
安全散列函數
? ? ? ??單向散列函數或者安全散列函數之所以重要,不僅在于消息認證(消息摘要。數據指紋)。還有數字簽名(加強版的消息認證)和驗證數據的完整性。常見的單向散列函數有MD5和SHA
散列函數的要求
? ? ? ? 散列函數的目的是文件、消息或者其它數據塊產生“指紋”。為滿足在消息認證中的應用,散列函數H必須具有下列性質:
? ? ? ? (1)H可適用于隨意長度的數據塊。
? ? ? ? (2)H能夠生成固定長度的輸出。
? ? ? ? (2)對于隨意給定的x,計算H(x)相對easy,而且能夠用軟/硬件實現。
? ? ? ? (4)對于隨意給定的h,找到滿足H(x)=h的x在計算上不可行。滿足這一特性的散列函數稱之為:具備抗原像攻擊性。
? ? ? ? (5)對于隨意給定的數據塊x,找到滿足H(y)=H(x)的y?≠?x在計算上是不可行;滿足這一特性的散列函數稱之為:抗弱碰撞性。
? ? ? ? (6)找到滿足H(x) = H(y)的隨意一對(x,y)在計算上是不可行的。
滿足這一特性的散列函數稱之為:抗碰撞性。
? ? ? ? 前三個性質是使用散列函數進行消息認證的實際可行要求。第四個屬性,抗原像攻擊,防止攻擊者能夠回復秘密值。抗弱碰撞性保證了對于給定的消息。不可能找到具有同樣散列值的可替換消息。
? ? ? ? 滿足上面前5個性質的散列函數稱之為弱散列函數。
假設還滿足第6個性質則稱之為強散列函數。
一般來說:能夠認識散列函數的兩個特點就OK,1.輸出固定長度的 2. 不可逆轉!
散列函數的安全性
? ? ? ? 有兩種方法能夠攻擊安全散列函數:password分析法和暴力攻擊法。
散列函數抵抗暴力攻擊的強度全然依賴于算法生成的散列碼長度。
Van Oorschot和Wiener以前提出,花費1000萬美元涉及一個被專門用來搜索MD5算法碰撞的機器,則平均24天內就能夠找到一個碰撞。
? ? ? ? 2004年8月中國password學家王小云教授等首次發布了提出一種尋找MD5碰撞的新方法。眼下利用該方法用普通微機幾分鐘內就可以找到MD5的碰撞。MD5已經唄徹底攻破。
簡單散列函數
全部的散列函數都依照以下的基本操作。把輸入(消息、文件等)看成n比特塊的序列。對輸入用迭代方法處理一塊,生成n比特的散列函數。一種最簡單散列函數的每個數據塊都依照比特異或。
例如以下所看到的
? ? ? ??? ? ? ??Ci = bi1⊕ bi2⊕ … ⊕ bim
當中:Ci為散列碼的第i比特。1<= ?i <=n;
m為輸入中n比特數據塊的數目。
bij為第j塊的第i比特。
⊕為異或操作
下圖說明了這個操作:
上圖僅僅是簡單的散列函數。由于沒一列都有同樣的可能性。所以這個函數的有效性差。
SHA安全散列函數
近些年,應用最廣泛的散列函數是SHA。由于其它每一種被廣泛應用的散列函數都已經被證實存在這password分析學中的缺陷。接著到2005年,SHA也許僅存的安全散列算法。SHA由美國國家標準與技術研究院(NIST)開發。
● 2002年,發布了SHA-2(SHA-256、SHA-384、SHA-512)
● 2008年,添加了SHA-224
更具體的例如以下圖所看到的:
以下對SHA-512做一下介紹,其它SHA算法與之非常類似。該算法以最大長度不超過2128比特作為輸入,生成512比特的消息摘要輸出。輸入以1024比特的數據塊進行處理。
如圖所看到的:
處理過程:
● 第1步、追加填充比特
填充消息使其長度模1024同余896[長度 896(模1024)]。及時消息已經是期望的長度,也總是要加入填充。填充部分是由單個比特1后接所需個數的比特0構成。● 第2步、追加長度
將128比特的數據塊追加在消息上。該數據被看作是128比特的無符號整數。它含有原始消息的長度。經過前兩步,生成了1024倍數的消息。如上圖所看到的。被延展的消息表示為1024比特的數據塊M1,M2,M3...Mn。結合這兩點:“同余”比較難以理解,填充比特的邏輯能夠這么理解:填充的目的是為了形成1024的倍數,可是,最后一個1024塊的最后128比特必須保留(用于記錄原始消息的長度)。舉例:原始消息895比特,那么須要填充1個比特。這樣895+1+128=1024原始消息896比特。這樣的情況下,加上128字節正好是1024,可是依照規則,仍是要填充1024個字節。原始消息897比特,897+128>1024,所以須要填充。填充1023個比特。● 第3步、初始化散列緩沖區
用512比特的緩沖區保存散列函數中間和終于結果。緩沖區能夠是8個64比特的寄存器(a,b,c,d,e,f,g,h),這些寄存器初始化為64比特的整數(十六進制):a=6a09e667f3bcc908b=bb67ae8584caa73bc=3c6ef372fe94f82bd=a54ff53a5f1d36f1e=510e527fade682d1f=9b05688c2b3e6c1fg=1f83d9abfb41bd6bh=5be0cd19137e2179這些值以逆序的形式存儲,即字的最高字節存在最低地址(最左邊)字節位置。這些字的獲取方式例如以下:前8個素數取平方跟,取小數部分前64位。
● 第4步、處理1024比特的數據塊消息
? ? ? ??算法的核心是80輪迭代構成的模塊。該模塊在上圖中標記為F,下圖是其邏輯關系。每一輪都以512比特的緩沖區值abcdefgh作為輸入。而且更新緩沖區內容。
在第一輪時,緩沖區的值是中間值Hi-1.在隨意t輪。使用從當前正在處理的1024比特的數據塊(Mi)導出64位比特值Wt。每一輪還使用附加常數Kt。當中0<=t<=79表示80輪中的某一輪。這些常數的獲取方式例如以下:前8個素數的立方根。取小數部分的前64位。這些常數提供了64位隨機串集合,能夠初步消除輸入數據中的不論什么規則性。第80輪輸出加到第1輪輸入(Hi-1)生成Hi。
緩沖區里的8個字與Hi-1中對應的字進行模264加法運算。
● 第5步、輸出
當全部N個1024比特的數據塊都處理完成后,從第N階段輸出的便是512比特的消息摘要。SHA-512算法使得散列碼的隨意比特都是輸入端每1比特的函數。基本函數F的復雜迭代產生非常好的混淆效果;即隨機取兩組類似的消息也不可能生成同樣的散列碼。除非SHA-512隱含一些直到如今都還沒有發布的弱點。
總結
以上是生活随笔為你收集整理的网络安全-安全散列函数,信息摘要SHA-1,MD5原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ipadmini5支持快充吗
- 下一篇: iphone8plus支持5g吗(苹果i