華文網

蘋果Touch ID”保險箱“再次被攻破,金鑰安全該怎麼做?

筆者昨天在網上看到一條消息,說 iPhone 5s的Secure Enclave遭遇駭客入侵,金鑰被披露,在新加坡的駭客大會上還有人為iPhone 5s的Secure Enclave固件提供了提取工具。如果消息屬實,意味著iPhone 5s將成為繼iPhone 6之後第二個Secure Enclave被破解的蘋果手機。

看完這條新聞筆者內心極為震驚,曾經屬於蘋果的安全神話屢被攻破,甚至連蘋果Touch ID最好的安全“保險箱”Secure Enclave也不再是駭客“禁區”,相繼淪陷。

在這裡筆者不想猜測Secure Enclave被攻破後金鑰洩露所可能帶來的危害,而是希望通過分析該事件背後的本質原因,讓安全從業者更為深入地認知金鑰安全。正所謂“鑒於往事,有資於治道”,安全也是如此,歷史是最好的老師。

蘋果Secure Enclave安全區為什麼不再安全

在iPhone 5S上市後,

蘋果公司發表了一份有關iOS安全的白皮書,根據白皮書的描述,蘋果公司在A7晶片中集成了一個Secure Enclave輔助處理器,用來管理、核對和存儲使用者的指紋資訊。Secure Enclave輔助處理器是一個獨立的系統,有獨立的安全啟動順序和軟體升級機制,如下圖所示:

安全區硬體架構

蘋果正是通過Secure Enclave構建了一個晶片級安全區,這是一個獨立的安全空間,它與手機系統其它部分完全隔離,是一個外部無法訪問的黑盒。在這裡,指紋感測器和Secure Enclave內建一個共用金鑰A,然後系統根據這個共用金鑰A隨機生成一個唯一的金鑰B,來加密保護TouchID資料。如果使用中要調用指紋資料,整個過程都會有AES金鑰隨機加密保護。在這個過程中,指紋感測器與Secure Enclave共用唯一金鑰A,

使得每一台設備的指紋感測器與手機A7處理器是一對一的綁定關係。

蘋果這種晶片級安全方案,幾乎可以讓任何Touch ID用戶產生“高枕無憂”的錯誤安全感,因為他們相信指紋加密資訊和金鑰都被完整放進了一個絕對安全的黑色“保險箱”。但是這真的安全嗎?駭客再次用事實證明,實際情況並非如此。

正所謂“不怕賊偷,就怕賊惦記”,而金鑰正是駭客所惦記的東西。

世界上沒有絕對的安全,一旦那個黑色“保險箱”被人打開,其將徹底成為“白盒”,那把唯一能打開你加密資訊的金鑰也就赤裸裸擺在駭客眼前了。

保護一滴水,最好辦法是把它放進大海裡

如果想進入一個銅牆鐵壁的房子,最明智的辦法是“偷取”房門鑰匙。對於駭客而言偷金鑰肯定比攻破加密演算法容易得多。因此金鑰一定會被駭客盯上,其安全問題時刻面臨巨大挑戰。

曾幾何時,人們認為把金鑰鎖進“保險櫃”已經很安全了,可蘋果Secure Enclave晶片級安全區被攻破事件卻打破了人們的美夢,更何況市場上大多數應用系統採用金鑰保護方式。駭客可以通過簡單的調試工具,對運行在終端設備上的應用程式進行反編譯,於反編譯後的程式中找到加密演算法,在運行的記憶體中輕鬆找到完整金鑰,這時所有加密資訊都猶如明文般赤裸裸擺在了駭客面前。

那金鑰安全防護到底應該怎麼才安全?筆者認為既然防不住駭客對金鑰的竊取,那就讓金鑰“消失”。正如保護一滴水那樣,最好的辦法就是把它放進大海裡。

動態金鑰白盒:讓金鑰“消失”的新一代防護體系

金鑰白盒是將密碼演算法白盒化的過程,從本質上說是提高加解密程式的複雜度,致使逆向人員無法分析還原出金鑰。金鑰白盒可分為靜態金鑰白盒和動態金鑰白盒。前者是將金鑰和加密演算法綁定混淆,生成金鑰白盒,一個金鑰對應一個金鑰白盒,以庫檔形式存在,需要在開發應用程式時集成到工程裡。因此在進行金鑰更新時非常麻煩,只能引用一些熱更新技術解決,且類似技術會長期伴隨著相容性、個別機型閃退等問題。

為解決靜態金鑰白盒更新金鑰時的局限性,國內移動安全領導廠商梆梆安全設計出了動態金鑰白盒,它包括白盒庫和白盒金鑰。在密碼程式運行的任何階段,原始金鑰資訊完全融入到加解密演算法之中,原始金鑰資訊已經不存在,即只能輸入明文得到密文,或者相反操作得到明文。同時還可以在保持白盒庫不變的情況下更換金鑰,極大提升了白盒密碼產品的靈活性。

三種金鑰保護方式

動態金鑰白盒的重要意義就是保護終端金鑰安全,所以凡是有需要保護金鑰的應用場景,都可以利用安全金鑰白盒系統生成的白盒庫和白盒金鑰進行有效保護。下面介紹幾個典型的應用場景:

(1)設備身份認證

白盒金鑰支援“一人一密”、“一機一密”,並且白盒庫可以與設備指紋相綁定,從而達到身份識別的用途。

(2)通訊協定保護

在移動互聯網、物聯網等應用場景中,應用開發商都有一些私有的通訊協定需要保護,尤其是物聯網應用CPU計算能力都有限,而梆梆安全可以提供羽量級白盒庫,在性能、體積、資源消耗等方面都滿足物聯網的苛刻條件。

(3)本地資料保護

軟體發展者可以將白盒加密演算法用於本地資源檔的加密保護,防止重要的本地資源檔被竊取、被篡改。

寫在最後:

這個世上沒有絕對的安全,因此再堅固的“黑盒”也會被人攻破變成“白盒”,千萬不要認為將金鑰放到一個自認為堅不可摧的“保險箱”中就安全了。保護金鑰最安全辦法就是讓金鑰消失,這樣就可以讓駭客失去攻擊目標,再強大的攻擊也會變得毫無意義了。

那金鑰安全防護到底應該怎麼才安全?筆者認為既然防不住駭客對金鑰的竊取,那就讓金鑰“消失”。正如保護一滴水那樣,最好的辦法就是把它放進大海裡。

動態金鑰白盒:讓金鑰“消失”的新一代防護體系

金鑰白盒是將密碼演算法白盒化的過程,從本質上說是提高加解密程式的複雜度,致使逆向人員無法分析還原出金鑰。金鑰白盒可分為靜態金鑰白盒和動態金鑰白盒。前者是將金鑰和加密演算法綁定混淆,生成金鑰白盒,一個金鑰對應一個金鑰白盒,以庫檔形式存在,需要在開發應用程式時集成到工程裡。因此在進行金鑰更新時非常麻煩,只能引用一些熱更新技術解決,且類似技術會長期伴隨著相容性、個別機型閃退等問題。

為解決靜態金鑰白盒更新金鑰時的局限性,國內移動安全領導廠商梆梆安全設計出了動態金鑰白盒,它包括白盒庫和白盒金鑰。在密碼程式運行的任何階段,原始金鑰資訊完全融入到加解密演算法之中,原始金鑰資訊已經不存在,即只能輸入明文得到密文,或者相反操作得到明文。同時還可以在保持白盒庫不變的情況下更換金鑰,極大提升了白盒密碼產品的靈活性。

三種金鑰保護方式

動態金鑰白盒的重要意義就是保護終端金鑰安全,所以凡是有需要保護金鑰的應用場景,都可以利用安全金鑰白盒系統生成的白盒庫和白盒金鑰進行有效保護。下面介紹幾個典型的應用場景:

(1)設備身份認證

白盒金鑰支援“一人一密”、“一機一密”,並且白盒庫可以與設備指紋相綁定,從而達到身份識別的用途。

(2)通訊協定保護

在移動互聯網、物聯網等應用場景中,應用開發商都有一些私有的通訊協定需要保護,尤其是物聯網應用CPU計算能力都有限,而梆梆安全可以提供羽量級白盒庫,在性能、體積、資源消耗等方面都滿足物聯網的苛刻條件。

(3)本地資料保護

軟體發展者可以將白盒加密演算法用於本地資源檔的加密保護,防止重要的本地資源檔被竊取、被篡改。

寫在最後:

這個世上沒有絕對的安全,因此再堅固的“黑盒”也會被人攻破變成“白盒”,千萬不要認為將金鑰放到一個自認為堅不可摧的“保險箱”中就安全了。保護金鑰最安全辦法就是讓金鑰消失,這樣就可以讓駭客失去攻擊目標,再強大的攻擊也會變得毫無意義了。