哈希函数——SHA1
哈希函數簡介
信息安全的核心技術是應用密碼技術。密碼技術的應用遠不止局限于提供機密性服務,密碼技術也提供數據完整性服務。密碼學上的散列函數(Hash Functions)就是能提供數據完整性保障的一個重要工具。Hash函數常用來構造數據的短“指紋”,消息的發送者使用所有的消息產生一個短“指紋”,并將該短“指紋”與消息一起傳輸給接收者。即使數據存儲在不安全的地方,接收者重新計算數據的指紋,并驗證指紋是否改變,就能夠檢測數據的完整性。這是因為一旦數據在中途被破壞或改變,短指紋就不再正確。
散列函數是一個函數,它以一個變長的報文作為輸入,并產生一個定長的散列碼,有時也稱為報文摘要,作為函數的輸出。散列函數最主要的作用是用于鑒別,鑒別在網絡安全中起到舉足輕重的地位。鑒別的目的有以下兩個:第一,驗證信息的發送者不是冒充的,同時發信息者也不能抵賴,此為信源識別;第二,驗證信息完整性,在傳遞或存儲過程中未被篡改,重放或延遲等。
哈希函數特點
密碼學哈希函數(cryptography hash function,簡稱為哈希函數)在現代密碼學中起著重要的作用,主要用于數據完整性認證和消息認證。哈希函數的基本思想是對數據進行運算得到一個摘要,運算過程滿足:
● 壓縮性:任意長度的數據,算出的摘要長度都固定。
● 容易計算:從原數據容易計算出摘要。
● 抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的摘要都有很大區別。
● 弱抗碰撞:已知原數據和其摘要,想找到一個具有相同摘要的數據(即偽造數據),在計算上是困難的。
● 強抗碰撞:想找到兩個不同的數據,使它們具有相同的摘要,在計算上是困難的。
針對哈希函數的攻擊
對散列函數的攻擊方法主要有兩種:
● 窮舉攻擊:它可以用于對任何類型的散列函數的攻擊,最典型的方式就是所謂的“生日攻擊”。采用生日攻擊的攻擊者將產生許多明文消息,然后計算這些明文消息的摘要,進行比較。
● 利用散列函數的代數結構:攻擊其函數的弱性質。通常的有中間相遇攻擊、修正分組攻擊和差分分析攻擊等。
SHA1與MD5差異
SHA1對任意長度明文的預處理和MD5的過程是一樣的,即預處理完后的明文長度是512位的整數倍,但是有一點不同,那就是SHA1的原始報文長度不能超過2的64次方,然后SHA1生成160位的報文摘要。SHA1算法簡單而且緊湊,容易在計算機上實現。
● 安全性:SHA1所產生的摘要比MD5長32位。若兩種散列函數在結構上沒有任何問題的話,SHA1比MD5更安全。
● 速度:兩種方法都是主要考慮以32位處理器為基礎的系統結構。但SHA1的運算步驟比MD5多了16步,而且SHA1記錄單元的長度比MD5多了32位。因此若是以硬件來實現SHA1,其速度大約比MD5慢了25%。
● 簡易性:兩種方法都是相當的簡單,在實現上不需要很復雜的程序或是大量存儲空間。然而總體上來講,SHA1對每一步驟的操作描述比MD5簡單。
總結
以上是生活随笔為你收集整理的哈希函数——SHA1的全部內容,希望文章能夠幫你解決所遇到的問題。