今天要為大家介紹的是哈希演算法,在介紹SHA之前,只有了解什么是SHA,我們才清楚SSL證書如何使用哈希來形成數字簽名,那么什么是哈希呢? HASH演算法將任意長度的二進制值映射為較短的固定長度的二進制值,這個小的二進制值稱為哈希值,
什么是哈希值?
例如句子“那只敏捷的棕色狐貍跳過了懶惰的狗,”通過一種稱為CRC32的特定演算法運行,將會產生結果“07606bb6”,而這個結果被稱為HASH(哈希),
SHA演算法,是HASH演算法的一種,SHA表示加密散列演算法,用于網路加密安全,一般情況下,電腦可以對hash進行識別、比較、或對檔案和字串進行資料計算,計算機會先對HASH進行計算,然后與原始檔案進行校驗,HASH演算法的重要特征是其確定性,上述的列子,在任何一臺電腦使用任意的hash演算法得出的結果都是一樣的,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7zUXDlQZ-1613822800018)(images/news_2018111301.png)]](https://img.uj5u.com/2021/02/22/226870221040591.png)
散列演算法的一個關鍵屬性是確定性,世界上任何理解您選擇的散列演算法的計算機都可以在本地計算我們的例句的散列并得到相同的答案,
對于加密散列演算法的最重要的因素是他們產生不可逆的和獨特的哈希值,不可逆性,資料一旦產生哈希值,那么就不可能通過單一的哈希值解出原始的資料,獨特性,兩個不懂的資料是不能產生同樣的哈希值,
數字簽名
SSL / TLS協議是為客戶端到服務端之間搭建一條安全的網路資料傳輸通道,為了簡單理解,很多人把SSL直接決議為“加密”,但是,SSL還有另外重要的功能——身份驗證,SSL證書檔案的任務之一是提供身份驗證所需的資訊,具體而言,SSL證書將特定的公鑰連接到安全標識,
SSL / TLS協議是使用非對稱加密來確保安全連接,這意味著有兩個加密密鑰:一個用于加密的公鑰,另一個用于解密的私鑰,每個SSL證書都包含一個公鑰,客戶端可以使用該密鑰對資料進行加密,擁有SSL證書的所有者可以在其服務器上安全的存盤一個撕咬,然后對資料進行解密,安全查看資料內容,
認證對于SSL/TLS提供的安全特性非常重要,如果沒有可靠的方式驗證誰擁有加密密鑰,那么資料加密就沒有意義了,因為客戶端無法判斷哪一個服務端擁有安全的密鑰,如果將資料直接發給中間人的攻擊者,那么密鑰就沒有存在的意義,
數字簽名是SSL證書提供身份驗證的重要組成部分,頒發證書時,是由證書提供商(CA機構)進行數字簽名(如Symantec、GlobalSign、沃通CA),該簽名提供加密密鑰,CA簽署了SSL證書,證書沒有被修改或轉載,
非對稱密鑰將再次被使用,但是為了簽名而不是加密,從數學角度來說,簽名涉及到資料和密鑰組合的方式,為了讓計算機在安全的情況下回應迅速,安全創建和檢測簽名,CA機構會先在證書生成哈希值,這比簽署整個證書更有效率,
然后,數字簽名提供所需證書,證明所提供的證書是受信任CA頒發給相關網站的有效證書,
數字簽名是非常靈敏的,對檔案的任何更改都會導致簽名改變,同一單詞的英文大小所產生的哈希值都是不同的,這就意味著其散列的結果簽名也是不一樣的,如果改變一千萬位元組的檔案,將會產生完全不同的哈希,
數字簽名非常敏感——對檔案的任何更改都會導致簽名改變,如果我們從上一節中參考我們的示例陳述句,并將其完全小寫(“快速的棕色狐貍跳過懶惰的狗”),得到的哈希將是完全不同的,這意味著該散列的結果簽名也會不同,甚至改變一個多千位元組檔案會導致完全不同的哈希,
這樣,攻擊者就不可能更改合法的證書或偽造類似正確的欺詐性證書,不同的哈希值意味著其簽名是無效的,當客戶端訪問服務器是,計算機就會自動驗證SSL證書,一旦遇到無效的證書,就會觸發錯誤并阻止客戶端鏈接,
SHA-1和SHA-2
SHA代表安全散列演算法,SHA-1和SHA-2是該演算法的兩個不同版本,它們在構造(如何從原始資料創建結果散列)和簽名的位長方面都不同,您應該將SHA-2視為SHA-1的繼承者,因為它是一個整體改進,
首先,人們把重點放在位元長度上作為重要的區別,SHA-1是160位散列,SHA-2實際上是哈希的“家族”,有各種長度,最受歡迎的是256位,
各種各樣的SHA-2哈希可能會引起一些混亂,因為網站和作者以不同的方式表達它們,如果你看到“SHA-2”,“SHA-256”或“SHA-256位”,那些名稱指的是同一個東西,如果您看到“SHA-224”,“SHA-384”或“SHA-512”,則它們指的是SHA-2的備用位長度,您可能還會看到一些網站更明確,并寫出演算法和位元長度,例如“SHA-2 384”,
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-lk1ycXR1-1613822800033)(images/news_2018111303.png)]
SSL行業已選擇SHA作為其數字簽名的哈希演算法
從2011年到2015年,SHA-1是主要演算法,一個的顯示SHA-1的弱點研究越來越多促使人民幣升值,事實上,谷歌甚至還提供了一個SHA-1碰撞(當兩個不同的資料創建相同的哈希值時),因此,從2016年開始,SHA-2是新標準,如果您今天收到SSL / TLS證書,則必須至少使用該簽名,
有時您會看到使用SHA-2 384位的證書,您很少會看到224位變體,它不被批準用于公開信任的證書,或者是512位變體,它不受軟體廣泛支持,
SHA-2可能會使用至少五年,但是,可能會發現一些意外的演算法攻擊,這會導致早期轉換,
較大的位散列可以提供更高的安全性,因為有更多可能的組合,請記住,加密哈希演算法的一個重要功能是產生唯一的哈希值,同樣,如果兩個不同的值或檔案可以產生相同的哈希,那么您將創建我們稱之為沖突的東西,
只要不發生沖突,就只能保證數字簽名的安全性,沖突非常危險,因為它們允許兩個檔案生成相同的簽名,因此,當計算機檢查簽名時,即使該檔案從未實際簽名,它也可能看起來有效,
保持簽名安全
隨著時間的推移,對密碼學的攻擊將得到改善,計算機處理能力將變得更低,這使得有效的SHA-2簽名在2020年的安全性低于2016年,因此,演算法的選擇將比直接需要的更加強大,因此短期改進不會導致安全性的損害,特定的散列演算法在十年內保持安全并不是不現實的,
世界各地的行業專家和安全研究人員正在不斷分析SHA-2和其他加密哈希演算法,因此請放心,目前的SSL證書將在一段時間內具有可靠和安全的數字簽名,
這并不意味著密碼學家只會坐等并等到出現問題,SHA-2的繼任者,方便地命名為SHA-3,已經完成,當需要進行另一次切換時,SSL行業可能會使用SHA-3作為下一個選擇,或者它可能會采用完全不同的演算法,
需要數年才能正確研究和審核新的加密標準,然后開發支持它們的軟體,希望知道該行業始終至少領先一步是令人放心的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/262093.html
標籤:區塊鏈
