筆者昨天在網上看到一條消息,說 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,來加密保護Touch ID數據。如果使用中要調用指紋數據,整個過程都會有AES密鑰隨機加密保護。在這個過程中,指紋傳感器與Secure Enclave共享唯一密鑰A,使得每一臺設備的指紋傳感器與手機A7處理器是一對一的綁定關系。
蘋果這種芯片級安全方案,幾乎可以讓任何Touch ID用戶產生“高枕無憂”的錯誤安全感,因為他們相信指紋加密信息和密鑰都被完整放進了一個絕對安全的黑色“保險箱”。但是這真的安全嗎?黑客再次用事實證明,實際情況并非如此。
正所謂“不怕賊偷,就怕賊惦記”,而密鑰正是黑客所惦記的東西。世界上沒有絕對的安全,一旦那個黑色“保險箱”被人打開,其將徹底成為“白盒”,那把唯一能打開你加密信息的密鑰也就赤裸裸擺在黑客眼前了。
保護一滴水,最好辦法是把它放進大海里
如果想進入一個銅墻鐵壁的房子,最明智的辦法是“偷取”房門鑰匙。對于黑客而言偷密鑰肯定比攻破加密算法容易得多。因此密鑰一定會被黑客盯上,其安全問題時刻面臨巨大挑戰。
曾幾何時,人們認為把密鑰鎖進“保險柜”已經很安全了,可蘋果Secure Enclave芯片級安全區被攻破事件卻打破了人們的美夢,更何況市場上大多數應用系統采用密鑰保護方式。
黑客可以通過簡單的調試工具,對運行在終端設備上的應用程序進行反編譯,于反編譯后的程序中找到加密算法,在運行的內存中輕松找到完整密鑰。這時所有加密信息都猶如明文般赤裸裸擺在了黑客面前。
那密鑰安全防護到底應該怎么才安全?筆者認為既然防不住黑客對密鑰的竊取,那就讓密鑰“消失”。正如保護一滴水那樣,最好的辦法就是把它放進大海里。
動態密鑰白盒:讓密鑰“消失”的新一代防護體系
密鑰白盒是將密碼算法白盒化的過程,從本質上說是提高加解密程序的復雜度,致使逆向人員無法分析還原出密鑰。密鑰白盒可分為靜態密鑰白盒和動態密鑰白盒。前者是將密鑰和加密算法綁定混淆,生成密鑰白盒,一個密鑰對應一個密鑰白盒,以庫文件形式存在,需要在開發應用程序時集成到工程里。因此在進行密鑰更新時非常麻煩,只能引用一些熱更新技術解決,且類似技術會長期伴隨著兼容性、個別機型閃退等問題。
為解決靜態密鑰白盒更新密鑰時的局限性,國內移動安全領導廠商梆梆安全設計出了動態密鑰白盒,它包括白盒庫和白盒密鑰。在密碼程序運行的任何階段,原始密鑰信息完全融入到加解密算法之中,原始密鑰信息已經不存在。即只能輸入明文得到密文,或者相反操作得到明文。同時還可以在保持白盒庫不變的情況下更換密鑰。這極大提升了白盒密碼產品的靈活性。
三種密鑰保護方式
動態密鑰白盒的重要意義就是保護終端密鑰安全,所以凡是有需要保護密鑰的應用場景,都可以利用安全密鑰白盒系統生成的白盒庫和白盒密鑰進行有效保護。下面介紹幾個典型的應用場景:
1. 設備身份認證
白盒密鑰支持“一人一密”、“一機一密”,并且白盒庫可以與設備指紋相綁定,從而達到身份識別的用途。
2. 通訊協議保護
在移動互聯網、物聯網等應用場景中,應用開發商都有一些私有的通訊協議需要保護,尤其是物聯網應用CPU計算能力都有限,而梆梆安全可以提供輕量級白盒庫,在性能、體積、資源消耗等方面都滿足物聯網的苛刻條件。
3. 本地數據保護
軟件開發者可以將白盒加密算法用于本地資源文件的加密保護,防止重要的本地資源文件被竊取、被篡改。
寫在最后
這個世上沒有絕對的安全,因此再堅固的“黑盒”也會被人攻破變成“白盒”,千萬不要認為將密鑰放到一個自認為堅不可摧的“保險箱”中就安全了。保護密鑰最安全辦法就是讓密鑰消失,這樣就可以讓黑客失去攻擊目標,再強大的攻擊也會變得毫無意義了。
作者:葉林華