誰是最安全的U盤?淺談加密快閃記憶體設備的演算法與工業設計

本人聲明:本人對文章所涉任何公司與產品無任何利益關係,純粹出於研究性質討論。

進入數字時代以後,個人信息安全是大家相當關注的話題。密碼學的研究與應用貫穿了整個互聯網時代:以RSA為代表的數字簽名演算法傳遞了我們在互聯網上訪問與發送的信息。

但是,相伴於此的,裝載我們隱私數據的存儲設備面臨著許多被竊風險。從物理角度來說,攜帶型存儲設備(如手機、u盤、電腦)的丟失很可能會造成極其嚴重的後果。想想李宗偉和冠希哥,再想想看丟失綁定支付寶賬戶的手機會對自己造成多大的損失。在天朝,電子數據取證也是查水表的必經手段,老大哥會直接把電腦的硬碟拆走沒收。

那麼,如何才能穩固最後一道防線,哪怕讓你的u盤、移動硬碟已經落入他人手中,也能保證自己信息安全無虞呢?究竟怎麼樣的加密演算法以及軟體防禦手段才能算是「安全」,怎麼樣的硬體設計才能保證極端情況的可靠?縱觀全球,對信息安全狀況最防微杜漸的恐怕就是沒底了。知己知彼,百戰百勝,我們來看看美帝老大哥的說法。

美帝在1996年開始制定了聯邦資料處理標準(FIPS),裡面包含了美帝聯邦政府給聯邦/州政府與各級政府承包商的信息處理標準。其中,有關加密演算法的標準包含FIPS 197(只包含AES演算法)與FIPS 140-2(加密模塊安全級別分類)。FIPS 140-2包含4個級別,其中1級安全度最低,4級則最高。網上竟然沒有該標準的中文翻譯(好像也沒有什麼不對),我謹慎翻譯了下,下面是其要求(知乎發不了好看的表格,煩請點大圖):

上述FIPS140-2對硬體加密模塊在密碼學過程中的關鍵環節做出了詳盡要求,但上面的表格並沒有直接闡明符合FIPS140-2的加密演算法。當然,FIPS140-2標準可以算是選擇一款相當安全u盤的分水嶺,低於該標準的快閃記憶體盤會是怎麼樣的呢?

示例1:Kingston Datatraveler Locker+ G3

這款「加密」usb設備乍眼看上去外觀逼格還不錯,但是實際上它只有一個搭載autorun軟體的基於密碼訪問控制程序,和裸奔幾無兩樣。好在這款產品很便宜,算是防君子不防小人的玩具。

示例2:Kingston Datatraveler Vault

這款產品則是號稱搭載基於FIPS197的加密模塊(意思就是只有AES256演算法),如果光認為該演算法在計算層面較難破解,就認為該款設備足夠安全的話,請考慮這兩點:

  • 產品的硬塑料外殼可拆卸,無法保證tamper safe,即別人拆開把裡面的硬體掉包,也不一定能看得出來
  • 同上,該設備再拆開外殼後無任何防護措施,若靠讀取晶元電平時序則可側路攻擊並大大降低破譯演算法複雜度
  • 全盤加密方式是CBC,即是密碼分組鏈接(Cipher-block chaining),而不是目前在工業界較為被認可的帶有調整和密文竊取的XEX加密模式(即XTS)。

關於CBC與XTS的爭論,之所以放到第三點,是因為這個爭論在學界中並未形成統一意見。有的密碼學專家稱XTS並不比CBC安全太多,原因是隨機生成字元碰撞明文值時,開頭兩位十六進位值為 0x30 0x00所對應加密為ASCII值為0的可能性極高。

如果將標準調高至FIPS 140-2 Level 3,則是民用級別存儲設備里最安全可靠的了。具有代表性的產品來自下面三個公司:

第一個Ironkey是美國政府和他們承包商的老主顧,從2005年來美帝國安局(DHS)就一直資助它的母公司Imation,後來再2016年的時候被賣給了Kingston。Ironkey產品的外觀設計這麼多年都沒怎麼變過,外殼為一體成型的不鏽鋼,在不鏽鋼外殼下面則是灌有環氧樹脂的電路板,使得不留痕迹將晶元取出而不損壞晶元結構的難度非常大。據NIST檢測標準稱,電路板環氧樹脂外還有一層金屬屏蔽層,若強行拆開則會觸發篡改檢測響應機制(temper detection and respond),在通電讀取數據時將直接觸發數據自毀。

第二款Kingston dt4000g2的消費者面向對象同樣是美帝政府部門與高科技企業。這款設備使用一體成型不鏽鋼鍍鈦合金外殼,電路板兩側灌注環氧樹脂,NIST的技術文件里有拆解圖,如下所示

而第三款aegis secure key的公司apricon則很有意思,它並沒有多少產品銷售至美帝政府的記錄,且產品線內包含許多與非加密存儲設備(移動硬碟、e-sata轉ssd盒...)讓人懷疑該產品的專業性。但這款aegis secure key確實通過了FIPS140-2 level 3認證,且它具有上述加密產品都沒有的特徵:免安裝軟體,靠物理按鍵輸入密碼。裡面內置充電電池的aegis key將所有基於身份的認證方式與含有關鍵性安全參數的埠都存儲於內置的加密晶元中。使用的方法則很簡單,從口袋裡掏出U盤,輸入密碼後按解鎖鍵,稍待片刻就完成了解密程序,便可插入USB埠讀取數據。想像一下你有windows、linux和各種嵌入式設備都要使用u盤,這貨就能繞過繁瑣的操作系統安裝加解密軟體步驟。同樣的,為了防止物理攻擊,這貨裡面也有環氧樹脂封裝。

這三款u盤的加密方式都採用了AES256與SHA256,在未來的十餘年內足夠抵禦暴力碰撞攻擊。而在全盤數據加密的方面,Ironkey與dt4000g2均採用了密鑰散列消息認證碼(HMAC),配合XTS方式,它能夠有效碰撞法對Hash函數的破解概率。而Aegis key則沒有採用HMAC,並直接使用hash值輸入至隨機數發生器。**我們記得斯諾登當年的爆料指出NSA在2006年行賄RSA公司將雙橢圓曲線確定性隨機比特生成器(Dual_EC_DRBG)寫進NIST SP800-90A有關加密演算法隨機數發生器的技術要求里!** 這個演算法後門使得NSA能夠大大降低碰撞Dual_EC_DRBG偽隨機數生成密碼的時間複雜度,從而繞過AES演算法時間複雜度的障礙。如果換了我,同樣的隨機數發生器,我一定會選類似隨機鹽演算法的HMAC先對hash加密再生成隨機數。

說了這麼多,似乎上面三款u盤已經足夠狂拽酷霸屌了。有沒有更給力點的?

有!當然有!

上文所說的FIPS140-2,是美國聯邦政府所規定的加密模組標準。它的適用範圍(level 4)頂多也就到政府放放沒那麼機要的文件上。別忘了美帝國防部下面還有個屌屌的國家安全局,直屬總統管(現在是川普了)在美帝的保密政策上,真正和諧的東西當然是歸他們管。我們來看看NSA對加密演算法的管理政策:

在2005年,NSA公布了用於保護只允許在國內流傳(US-Only)與保密相關信息(SCI)文件的加密演算法成套標準(NSA Suite B),

  1. 對稱加密:使用分組密碼工作模式的AES-128與AES-256
  2. 數字簽名:橢圓曲線數字簽名演算法(ECDSA)
  3. 密鑰協議:橢圓曲線Diffie–Hellman密鑰交換(ECDH)
  4. 散列函數:SHA-256與SHA-384

我們來看看NSA對Secret(美帝保密政策第二級,相當於我國「秘密」)與Top Secret(美帝保密政策第三級,相當於我國「絕密」)的加密要求:

首先是對稱加密演算法,AES-128及以上適用於Secret級,AES-256適用於Top Secret

其次是數字簽名,ECDSA-256適用於Secret級,ECDSA-384適用於Top Secret。

NSA對RSA演算法相當的不放心,就算到了3072bit強度也不得用於SCI文件的加密上(RSA-3072的強度約等於AES-128,AES-256強度約等於RSA-15360)。

在密鑰協議上,ECDH-256適用於Secret級,ECDH-384適用於Top Secret。

最後是散列函數:SHA-256適用於Secret級,SHA-384適用於Top Secret。

有人可能覺得奇怪:AES-256的加密強度明明可以趕得上512bit的橢圓曲線函數,而384bit的ECC只算得上是AES-192,為什麼在數字簽名和密鑰協議里NSA都只需要384bit就能符合要求了??他們難道是糊塗了不成。其實並不是:原因在於橢圓曲線的時間複雜度區別使得ECC-512會比ECC-384消耗極大,ECC-384已經足夠安全(見圖)。

什麼設備能滿足NSA Suite B的要求呢?鄙人不才,曾經聽說過的,能夠生產這種設備的公司就兩個:美帝的Spyrus和英帝的Eclypt (現在改名叫viasat)。Spyrus自己生產的密碼晶元完全符合Suite B的最高要求:AES-256、SHA-384與ECC-384。問題在於他們的產品實在是神龍見首不見尾:沒得賣。比如前兩年和PNY合作的pocket vault系列,堪稱便攜加密存儲設備的黑科技產品:滿足Suite B的條件下還擁有USB3.0讀寫速度,以及最大1TB容量,可惜並沒有找著。

再遠一點,2010年的時候Spyrus和kingston合作生產過兩款極其特殊的,符合Suite B標準的datatraveler系列U盤:Kingston DT5000和Kingston DT6000。

這兩款U盤長得非常低調,怎麼看也和一般的U盤沒什麼區別,很少有人會一探乾坤知道背後的故事。可惜的是,它產量極少,且早已停產了。

至於Ecylpt,公開資料上只找到它的低端版本(Eclypt Nano 200,密級相當於FIPS 140-2 Level 2),而它的高端版本甚至沒有出現在NIST的認證列表裡,看來英國佬也對美帝信不過啊。

下圖是Ecylpt nano 200,曾經在英國有出售,但現在也沒了

那麼,有沒有更給力的啊?

答案是 有。

但是我真沒法寫下去了。。。


推薦閱讀:

HOPE, zjo np mjoh, 19/2, never-1, enqfds是什麼意思?
如何證明 f(x)=m^x mod N 的周期性?
跪求神人解這個密碼:744x0l?
究竟什麼才是隨機預言機(random oracle)呢?
為什麼不能計算兩次哈希,以及在什麼情況下不能計算兩次哈希?

TAG:密码学 | 信息安全 | 保密 |