安全散列算法1

安全散列算法1

安全散列算法是數宇簽名等密碼學套用中重要的工具。目前最常用的安全散列算法是SHA-1算法,它被廣泛地套用於電子商務等信息安全領域。

基本介紹

  • 中文名:安全散列算法1
  • 外文名:Secure Hash Algorithm,SHA
  • 簡稱:SHA-1
概述,特性,算法實現與安全性,算法實現,算法安全性,

概述

安全散列算法(SHA)是一種常用的數據加密算法。它由美國國家標準與技術局(NIST)於1993年作為聯邦信息處理標準公布(即第一代SHA算法SHA-0)。在1995年,其改進版本SHA一1也正式公布(SHA一1具有比SHA—0更高的安全性)。SHA-1算法是目前最常用的安全散列算法和最先進的加密技術。SHA-1算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單地理解為取一串輸入碼,把它們轉化為長度較短、位數固定的輸出序列即散列值(稱為信息摘要)的過程。該算法對長度不超過2的64次方的訊息產生160位的訊息摘要輸出,輸入按512位的分組進行處理。
SHA-1算法在加密學中扮演著極其重要的角色,可以用於實現數據保密、防止數據更改和身份驗證等功能。一個典型的套用是從數字訊息、IP信息包、磁碟檔案等數據抽取散列值(稱為訊息摘要),井與對稱或非對稱加密技術一起來完成對原始數據的認證和完整性檢查。另外,SHA-1算法是當今眾多流行加密思想核心,幾乎無處不在。它在許多安全協定中廣為使用,如:數字簽名標準(DSS)、傳輸層安全(TLS)、安全電子交易(SET),網際網路協定安全(IPSec)、無線區域網路(WLANs)安全、隨機數生成算法和密碼存儲機制等。

特性

SHA-1算法具有兩個重要特性:單向性和抗碰撞性。單向性即由原始訊息計算出信息摘要很容易,而由訊息摘要計算出原始訊息在計算上則幾乎是不可行的。而所謂的抗碰撞性是指,要找到兩個不同的原始訊息生成同一個信息摘要在計算上也是不可行的。

算法實現與安全性

算法實現

SHA-1算法是一種易於實現並可以基於多種平台的方便易行的安全算法,目前很多計算機語言,像C,Java, C++PHP依照SHA一1算法的標準都能實現SHA-1。當然,受語言平台套用性的制約,套用最廣泛的是C語言和Java語言。自身計算機上的訊息認證一般採用C語言實現就足夠,不僅能夠保證良好的可移植性,而且實現起來也比較簡單、容易理解。考慮到網路上的數字簽名,乃至電子商務等,一般採用Java實現代碼較簡單迅速,其可移植性和安全性也能得到更好的保證。事實上,這裡還存在一個潛在的問題:SHA-1算法信息摘要的計算速度井不總是能滿足要求。使得SHA-1算法的硬體實現也有很多途徑,如利用現場可程式門陣列不僅可以實現這種算法,井且某種程度上也能提高運算速度。特別是隨著數字通信領域的飛速發展,在急劇增長的無線移動設備領域,對加密系統的性能要求越來越嚴格。使得SHA一1算法軟硬體最佳化方案的實現成為專家關注的熱點。

算法安全性

SHA-1算法是由MDS算法演變而來的,它們之間最大的區別在於前者產生的摘要長度比後者長32bit。SHA-1對於強行攻擊,產生任何一個報文使之摘要等於給定報文摘要的難度為2160數量級的操作,較MDS的2128數量級操作要難。因此,SHA-1算法對抵抗強行攻擊的強度很高。同時,因為SHA-1算法的循環步驟有80次,比MDS算法的64次要多,所以其運行速度也較慢。
從目前密碼學研究的最新進展來看,SHA-1雖然被發現存在缺陷(碰撞),但在近幾年內,仍然可以大量使用SHA-1算法。同時,專家們認為王小雲等人發現當前所用的散列算法存在的問題,必將幫助新的散列算法設計者考慮到這方面的問題,使得新的散列算法具有更好的安全性。美國政府的大多數套用被要求在以前改用SHA-2散列函式系列,早期的套用也要儘可能地進行升級。SHA-2算法跟 SHA一1基本上相似,至今尚末出現對SHA-2算法的攻擊。

相關詞條

熱門詞條

聯絡我們