官术网_书友最值得收藏!

  • 輕松讀懂區塊鏈
  • 杜經農 杜江天
  • 1830字
  • 2020-05-22 15:21:22

3.2 美國國家安全局設計的密碼武器——SHA256算法

在計算機技術中,存在很多種類的哈希算法,比如美國國家安全局提出的SHA系列算法、報文摘要算法、Ethash算法、RIPEMD160算法等,又比如我國提出的SM3算法等,如圖3.4所示。比特幣系統中使用了SHA256算法,它的全稱是安全哈希算法(Secure Hash Algorithm),它是SHA系列算法中的一個,其他的還有SHA1、SHA224、SHA384和SHA512等。

圖3.4│各類哈希算法示意圖

SHA256算法有哪些優點呢?可以總結如下。

(1)從密文很難反推出明文。使用了SHA256算法后,即使你知道算法的步驟,也看到了最終的加密計算結果,仍然很難知道原來的內容是什么。雖然不能完全否定反推的可能,但是至少根據目前人類所掌握的計算資源和算法,是不能反推明文的。

(2)SHA256算法抵抗“哈希碰撞”的能力很強,也就是說,想要找到兩組不同的明文信息對應同樣的密文,從計算理論上來說是非常困難的。在SHA256算法中,明文信息只要發生一點細微的變動,哪怕只是改變了一個字或一個標點,都會使最終的密文(哈希值)產生非常大的變化。因此,一段明文總是和它的哈希值一一對應,就像每個人都有不同的指紋,人和指紋一一對應。因此,形象地說,一段信息的哈希值就相當于這段信息的“指紋”。

(3)不論輸入的明文信息有多長,最后生成的密文長度總是固定的,且是一個256位的二進制數值。為了使用方便,通常會表示成64位的十六進制數值,例如一個SHA256哈希數值可以是:6D768EEF6ECAD3C29A5A629280E686CF0C3F5D5A86 AFF3CA12020C923ADC6C65。由于有這個優點,有時它會被用來壓縮信息以節省存儲空間。

因為SHA256算法有這些優點,它在信息科學中得到了非常廣泛的應用。下面介紹它在加密信息、檢驗信息的一致性及壓縮數據等多方面的應用。

(1)利用SHA256算法加密。因為SHA256算法是不可逆的,不能從密文反推出明文,所以它經常被用來加密重要信息,例如銀行賬戶的密碼。假設小明要開設一個銀行賬戶,他在開戶時設置了對應的密碼。這個密碼會存放在銀行的數據庫里,當他下一次存取款時,用來和他輸入的密碼進行比對,以確定身份。但是,如果密碼以明文形式存放在數據庫里,會帶來極大的危險。假如二黑是銀行的內部工作人員,他利用職權非法進入了數據庫,知道了小明的密碼,就可以取走小明的錢了。因此,為保安全,賬戶密碼總是以密文形式存放的。小明設置的賬戶密碼會通過SHA256算法進行加密,變成密文后存放在數據庫里。下次他在銀行窗口辦理業務輸入密碼時,密碼會先通過SHA256算法進行計算,再和數據庫里的密文比對,如果一致,說明他的密碼是正確的。經過這種加密處理,即使二黑進入了銀行的密碼數據庫,仍然不知道小明的密碼,如圖3.5所示。

圖3.5│哈希算法用于加密存儲

(2)檢驗信息的一致性。假設小明要在網上發情書給他的女朋友翠花,在網絡傳輸中,有時可能因為數據傳輸故障導致發送的信息不完整,或者更糟糕的是,被小明的情敵二黑中途截獲并惡意篡改,原本寫的是“我愛你”,翠花收到的可能是“我恨你”,小明的幸福人生從此變得岌岌可危。所幸小明是天才,他很快想出一個好辦法:在發送信息時,先使用SHA256算法對原始信息進行一次計算,得到這段信息的哈希值,然后把原始信息和對應的哈希值一起發送給翠花。翠花收到信息后,也使用SHA256算法對原始信息進行一次計算得到哈希值,然后和小明發送的哈希值進行比對,如果不一致,說明原始信息出現了問題,如圖3.6所示。從此,小明的媽媽再也不擔心他找不到女朋友了。

圖3.6│哈希算法用于通信校驗的過程

(3)壓縮數據。翠花長得很漂亮,她很喜歡拍照,幾年的時間就拍了幾萬張照片,小明的計算機已經存不下了,他必須把這些資料放到其他計算機中。但是,他很想在自己的計算機中保存一份完整的檔案,以便查找。于是,他使用SHA256算法對每一張照片進行計算,得到它們的哈希值,這些哈希值的數據量遠遠小于對應照片的數據量。小明把照片的存放位置和照片的哈希值一一對應,編制成了一張表。這樣,小明能在自己的計算機里存下這張表,并隨時可以根據照片的哈希值在其他計算機上找到這張照片,如圖3.7所示。即使年深日久,存儲在其他計算機上的照片發生存儲錯誤,或者被人惡意修改了,他也能通過哈希值及時發現。

圖3.7│哈希算法用于數據的壓縮與存儲

SHA256算法是一個強大的加密算法,它在各方面保障了小明的幸福生活。但是二黑也不是吃素的,他很快就發現了一個漏洞。小明在網上給翠花發送情書的時候,二黑截獲了情書和對應的哈希值。這次他不但篡改了情書,也使用SHA256算法對篡改后的情書進行計算,從而得到對應的哈希值。現在二黑把這份偽造的情書和對應的哈希值發送給翠花,翠花即使進行校驗,也沒法發現問題。天才小明這下也傻眼了。那這個問題要怎么解決呢?

主站蜘蛛池模板: 丽江市| 台东县| 类乌齐县| 江陵县| 临朐县| 广饶县| 靖宇县| 祁连县| 元氏县| 江永县| 宿州市| 自贡市| 石台县| 绥江县| 南昌市| 黔西县| 乳源| 巴中市| 班戈县| 苍山县| 惠水县| 闵行区| 手机| 独山县| 马关县| 寿阳县| 丰县| 沁阳市| 万盛区| 临沧市| 英山县| 资中县| 天水市| 且末县| 高州市| 万盛区| 偃师市| 井冈山市| 洛南县| 武冈市| 鄂托克前旗|