當前位置:
首頁 > 新聞 > 為什麼要用BLAKE2替換SHA-1?| 密碼學分析

為什麼要用BLAKE2替換SHA-1?| 密碼學分析


當哈希碰撞成為現實


如果你在過去的十二年里不是生活在原始森林的話,那麼你一定知道密碼學哈希函數SHA-1是存在問題的,簡而言之,SHA-1沒有我們想像中的那麼安全。SHA-1會生成160位的摘要,這意味著我們需要進行大約2^80次操作才能出現一次哈希碰撞(多虧了Birthday攻擊)。但是在2005年密碼學專家通過研究發現,發生一次哈希碰撞其實並不需要這麼多次的操作,大概只需要2^65次操作就可以實現了。

這就非常糟糕了,如果現實生活中可以實現哈希碰撞的話,那麼這就會讓很多使用SHA-1的應用程序變得更加的不安全。而這個操作次數,即2^65次,是一個比較接近實際情況的數字。如果你想用自己的筆記本電腦來進行計算的話,可能需要好幾年的時間,但是對於那些手頭上有資金有技術的大型組織而言,計算出一次哈希碰撞可能只需要一兩周的時間。

Google就是具備上述條件的一個組織,Google根據CWI的安全研究人員Marc Stevens和Pierre Karpman的最新研究成果,並使用了大量的計算資源(CPU集群和GPU集群)實現了最優分布式碰撞搜索。碰撞信息如下圖所示:

既然現在已經是2017年了,所以哈希碰撞也有自己的「昵稱」和logo了:http://shattered.io/。Marc Stevens和其他密碼學研究人員的多年努力以及Google工程產品的高性能讓哈希碰撞成為了現實,而這其實也並不會讓我們感到驚訝,因為我們知道這是遲早會發生的事情

但是,這次哈希碰撞的實現讓很多安全威脅變得離我們更加近了,很多目前正在使用SHA-1的服務也正在尋找替代方案。如果要代替SHA-1的話,我推薦BLAKE2,這是一個哈希演算法,它是由安全研究專家Samuel Neves、Zooko和CodesInChaos共同設計開發的。接下來我會告訴大家,我為何要推薦用BLAKE2來代替SHA-1。


因為SHA-1存在嚴重的安全問題

當然了,沒人會願意使用存在安全問題的哈希演算法。不過這也得看情況,這一次破解的只是SHA-1的抗碰撞性,而某些網路應用其實對抗碰撞性並沒有太高的要求。比如說,類似HMAC-SHA-1(使用HMAC偽隨機函數和SHA-1共同作為哈希函數)或PBKDF2-HMAC-SHA1(使用HMAC-SHA-1作為偽隨機函數的PBKDF2密碼哈希)這樣的哈希函數仍然是安全的,但是我們仍然建議大家放棄使用SHA-1。


因為BLAKE2是安全的

我們給BLAKE2的定位是目前安全係數最高的哈希函數,從2012年BLAKE2的發布之日至今,我們還沒有發現針對BLAKE2的攻擊。實際上,BLAKE2是基於BLAKE實現的,BLAKE是2008年被提交至SHA-3競賽的一種哈希函數,而且全世界最優秀的密碼學分析專家對這個哈希函數進行了長達四年的審查,然而並沒有發現任何的不安全因素。

除此之外,BLAKE2的內部基於的是ChaCha,而ChaCha是高度可信任的,它不太可能被破解。(註:ChaCha是一種由Daniel J.Bernstein設計的流密碼,它是TLS1.3所使用的三大密碼之一,並且符合新的TLS標準。)


因為BLAKE2的速度比SHA-1更快

由於在設計之初就考慮到了安全和性能方面的優化,BLAKE2在速度方面是要優於SHA-1的。下圖顯示的是各種不同的哈希函數在一塊英特爾CPU(Skylake架構)上的吞吐量測試信息:

因為BLAKE2非常簡單

你會發現,我們可以方便地用各種不同的編程語言來實現BLAKE2,例如C、Go、Java、JavaScript、Python或Rust。比如說,BLAKE2默認就是Go語言「/x/crypto」包中的一部分。除此之外,目前很多流行的加密代碼庫都包含有BLAKE2,例如OpenSSL和Sodium等等。如果你想使用其他語言來實現BLAKE2的話,可參考Sodium給出的資料【點擊文末的閱讀原文查看】。


因為BLAKE2就是你所需要的東西

BLAKE2不僅僅只是一個簡單的哈希函數而已!首先,BLAKE2有兩大主要版本:BLAKE2b和BLAKE2s。BLAKE2b是BLAKE的64位版本,它可以生成最高512位的任意長度哈希。BLAKE2s是BLAKE的32位版本,它可以生成最高256位的任意長度哈希。

為了進一步提升哈希計算的速度,BLAKE的並行版本BLAKE2bp和BLAKE2sp可以在多個計算核心上並行運行,而此時的運行效率將是串列運行的八倍。如果你想在BLAKE2的哈希計算中使用密鑰的話,例如偽隨機函數(PRF)或消息認證碼(MAC),你不需要像使用HMAC一樣還要專門去實現這些計算,因為BLAKE2可以接受一個密鑰作為可選輸入參數,計算完成之後你就可以得到一個跟HMAC一樣安全的哈希了。

如果你需要長度高於512位的哈希值,例如實現一個密鑰導出函數(KDF)或確定性隨機比特生成器(DRBG),我們創建了BLAKE2x,BLAKE2x是對BLAKE2的簡單擴展,它可以生成任意長度的哈希值(長度不受限制)。


為什麼不用SHA-2或SHA-3代替SHA-1呢?

SHA-2其實是一個哈希函數家族,其中包括SHA-256、SHA-384和SHA-512,而且還提供了SHA-224和SHA-384這兩個變種版本。SHA-2哈希函數可以看作是安全係數更高的SHA-1,而SHA-2目前還沒有被破解。但是跟BLAKE2相比,SHA-2哈希函數在性能和速度方面明顯要處於劣勢。除此之外,它不支持額外的功能,而且也無法抵禦哈希長度擴展攻擊。

SHA-3同樣是一個哈希函數家族,2015年發布的美國聯邦標準FIPS 202還對其進行了標準化規範。SHA-3是基於Keccak(SHA-3競賽中的勝者)實現的,SHA-3哈希函數跟BLAKE2一樣的安全,但是同樣在速度方面處於下風。很多人選擇使用SHA-3而不選擇BLAKE2的理由可能是BLAKE2並不是一種規範標準(雖然BLAKE也有自己的標準化文檔RFC),而且BLAKE2也沒有得到FIPS的許可認證。


我們應該怎麼做?

當我嘗試通過審查源代碼來發現加密演算法中的漏洞時,我通常會使用類似grep–Hnri md5或rg–i md5這樣的命令來查看代碼中MD5的使用信息,這樣就可以迅速地找出演算法中的潛在漏洞。我建議各位安全從業人員也採用這樣的方法來檢查系統中MD5和SHA-1應用的安全性,如果有需要的話,最好將哈希演算法替換成更加安全的BLAKE2。

如果你使用的是X.509證書,那麼請確保使用SHA-256作為你的簽名演算法,而不要再使用SHA-1了。除此之外,類似Chrome這樣的Web瀏覽器會將那些使用SHA-1的域名證書標記為「Inscure」(不安全)。


總結

實際上,安全研究人員早在2005年就已經對外宣稱MD5和SHA-1從理論上來說是可以被破解的,但是很多開發者仍然沒有將SHA-1升級為SHA-2,並且還在繼續使用這種不安全的哈希演算法,因為他們不願意犧牲網路服務的速度和效率來換取更高的安全性。但是現在他們就沒有任何理由繼續使用SHA-1了,因為BLAKE2的速度比SHA-1更快。當然了,你也可以選擇SHA-3,但無論如何你都應該將SHA-1從你的系統中永久移除。

* 參考來源:kudelskisecurity, FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

HTTP认证的底层技术简析与揭秘
Facebook反垃圾實踐:人工治理與機器演算法齊飛
一種會話劫持技術通殺全部Windows版本,但這真的是漏洞嗎…
如何入侵大疆Phantom 3無人機
滲透測試中利用基於時間差反饋的遠程代碼執行漏洞(Timed Based RCE)進行數據獲取

TAG:FreeBuf |

您可能感興趣

注意到沒?LTE AW 3要用iPhone 6以上機型
對SAS和SATA硬碟說再見 IBM要用NVMe取而代之
iPhone 8確定要用OLED屏:蘋果還準備了6.45寸!
驍龍845要用!ARM Cortex-A75/A55曝光:能耗絕了
JDI暗示iPhone 8要用OLED屏
vivo X20要用驍龍660 對標OPPO R11?
蘋果密謀大招:iPhone 8S要用自研4G基帶
Intel新CPU為何要用300系主板:供電部分有改進
Intel解釋新CPU為什麼要用300系主板:供電部分做了改進
Google公布可180萬億次浮點運算的Cloud TPU,還要用AI幫你畫貓貓
iPhone 8為何要用OLED屏:真相曝光
Galaxy S9 要用?傳三星 PCB 製造商大規模投資類載板
明年iPhone9要用L型電池?LG Chem有望通吃訂單
專訪DeepMind CEO:阿法狗讓我震驚,要用AI理解宇宙 | 萬字長文
JDI暗示iPhone 8要用OLED屏!屏幕尺寸大到驚人
下一代Apple Watch要用的Micro LED屏幕,到底是什麼東西?
驍龍845要用!Cortex-A75/A55曝光:能耗大提升
要用一下嗎 蘋果發布macOS High Sierra GM版
為何OPPO R11要用驍龍660,這裡有答案