標籤:

加密手機真的需要加密晶元嗎?

現在有幾家手機廠商生產加密手機,有些聲稱使用了專門的加密晶元。我曾經問他們,這個加密晶元有什麼用?整理起來大概下面2點說法,

(1) 加密運算在加密晶元中運行,密碼不出晶元,防止被其他程序掃描內存從而獲得密碼。

(2) 密鑰保存在晶元中,防止被其他程序偷走。

我對這種說法表示懷疑,

(1) android 手機的apk(限制一下,非系統程序) 能否掃描超出自己範圍的內存。我知道,正常程序肯定不能。那麼有沒有這種可能性呢?或者說,android 以前有沒有出現過這種情況?

(2) 非系統程序能否訪問另一個apk的私有空間?如果你沒有修改android系統的這個方面設計,答案應該是否定的。

如果你的手機被偷了,那麼,你的這個晶元可以自毀嗎?晶元是怎麼知道自己所在的手機被盜了?為什麼不直接自毀整部手機?被盜自毀不是加密晶元的理由。

千萬不要說,過去電腦上加密就是這麼用的,搞個U盤,~~電腦不是你生產的,windows 系統也不是你編譯的,搞個U盤表示對wintel不信任。再說,電腦太重,背不起,不隨身。

能在手機上焊加密晶元的自然是手機廠商,電路是你設計的,android系統是開源的,你自己編譯的,系統軟體也是你選擇並編譯的,搞個加密晶元表示對自己的工程師不信任?

或許還有另外的理由?


首先,我對技術上的可能性並沒有疑問。

拋開手機和備份恢復,題主說的兩件事倒都是可以辦到的。比如Amazon的KMS以及MS的Key Vault中都使用了Hardware Security Module(HSM)。這算是很成熟的產品了,一台價格在幾千到十幾萬RMB,每秒可以算數千個RSA 2048簽名。如果是小運算量,甚至可以考慮用TPM,比如英飛凌生產的,這個便宜到貌似一片只要幾十塊錢,就是慢點,估計每秒算不了一個RSA 1024簽名。

TPM通常只是用來實現可信啟動或者形成可信執行環境,也就是說只讓「可靠」的代碼段執行。而HSM通常是用來保護密鑰,我強調一下,是保護密鑰。

所以,如果將主密鑰存在類似TPM的晶元中,的確可以實現對很多數據的加密保護。也的確可以一定程度上將黑客擋在明文之外。

但是,個人對這個晶元的真正使用價值表示疑問。

手機上,我們更多想保護的是「隱私」,而這些數據在被各種軟體,比如微信、支付寶、知乎在本地處理時,在內存中大多以明文存在,而且我相信在金立手機中也是這樣,因為目前沒有一個對安卓系統進行整體加密且還能保持性能的方案。安全晶元解決不了這個。

數據傳輸過程中,理想狀態是會話密鑰是伺服器和客戶端動態協商出來的,有標準協議如TLS。專用晶元是否參與,可能並不影響協議本身的安全性。

還有就是當手機發生意外時,需要有辦法恢複數據。

比如,手機被盜後,如果連我在雲端存儲的數據都需要此唯一晶元才能解密同步到另外的設備,那麼這個手段就成了「殺敵一千,自損三千」,因為誰也沒辦法恢復我那些再也沒法複製的照片和視頻。如果不需要此晶元就能同步回來,我為什麼要額外掏錢來買「加密」晶元?

另一方面,目前使用手機CPU所用的ARM晶元已經提供的TrustZone(TrustZone - ARM),這個為什麼沒被使用?

另,提供一個對比的思路:

如果有些安全要求連在PC上都無法實現,在手機上實現的難度應該會更大。

同樣期待其他的意見。


你們都在回答個毛啊。加密晶元這種說法本來就是宣傳部門搞出來的幺蛾子,鬼才知道具體是什麼實現。現在消費級產品裡面能被叫做加密晶元的東西也就 TPM 吧。

TPM 的作用有兩個:其一是防止直接把 NAND 焊下來讀數據,保證只有在設備完整的情況下才能讀出數據;其二是在不損害用戶體驗的前提下使用盡量長的密鑰,把完整的密鑰保存在 TPM 內,用戶用相對簡單的 passphrase 解鎖 TPM 就能讀出數據。(你不想每次開機輸 4096bit 的密碼吧……)

至於 Trustzone,那是可信執行,目的是保護可信進程的執行環境和資源不被別的進程艹,雖然說往往那東西也提供一些加解密指令集,但是跟加密晶元沒什麼關係吧。你非要說這是加密晶元,那新一點的帶 AES-NI 的 CPU 難道全叫做加密晶元么。用來加速加解密運算的加速卡也是不知多少年前伺服器上就有了的東西,跑 SSL 握手用的。

硬體層面的加密防的都是硬體入侵,即在設備硬體完整的情況下沒有通過身份驗證就讀不出數據,這些東西對軟體是透明的;系統啟動起來,用戶數據解密以後你用起來跟普通手機就沒區別了。你說的那兩點(內存隔離之類的)是操作系統需要關心的東西,跟硬體加密無關。用戶自己點開了病毒.apk 也跟硬體加密機制無關。手機丟了也跟硬體加密機制關係不大,當然你可以軟體實現讓某些 TPM 在輸錯幾次密碼以後自毀,那這也是需要軟體配合的功能(內部存儲加密,系統啟動簽名驗證,加上 TPM 帶有 eFUSE)。

對於大多數用戶來說,這些所謂「加密」晶元最多只是錦上添花。我倒是想知道有哪個廠商能承諾以下兩點:

  • 第一時間跟隨 Android 的安全補丁發布系統更新;
  • 強制用戶數據加密,並且以加密後的系統作為性能測試基準。(目前強制開啟加密對 Android 設備性能影響很大。)


都已經有掃描內存的許可權了,還找密鑰做啥。你的數據本來就要解密放在內存中才能處理,我直接看不就好了?


噱頭

加密晶元如果外置的話反而降低安全性,因為晶元的外部通信匯流排暴露了,有被嗅探的可能。真正的安全晶元應該是直接集成進SoC的,只是現在大多數手機廠商都是買別人的SoC,只能這樣。蘋果一直用的是內置bootrom和AES引擎,A7開始添加了集成進SoC的安全模塊/模式。高通很多方案印象中bootrom也是可以廠家定製加密的,想不出另外買個安全晶元有何用


利益相關現國密證書相關從業者,前嵌入式行業涉及者。另外這個貼可能比較枯燥無聊,利益無關,沒有密碼學基礎的可以退散了。

根本問題手機加密晶元有用嗎?答案:現有條件無用;在一定的條件下非常有用,且必須。

那麼,問題就簡化成所謂的「一定的條件」是什麼:

我們來先看2個事情:

1,PC終端信息安全是怎麼做的;2,FIDO;

1PC終端:目前證書行業比較靠譜的做法是把公鑰證書與私鑰存在USBkey(能進行密碼運算的智能卡就行,硬體保護與管理部分暫時不提,涉及整體運算環境安全的什麼太廣泛,代碼程序簽名系統安全什麼暫時不提)中,USBKEY由人「所有」,動用私鑰進行運算,必須先由USBKEY證書用戶提供他「知道」的信息:pin碼,或者他「所有」的:指紋等生物信息之後才能進行。其中在身份認證(SSL證書認證)和簽名(P7等)等過程均涉及私鑰運算,也就是與個人身份相關的都有私鑰參與,也就是必須兩者兼備USBkey和用戶確認後才能進行。

其中,所有的待私鑰解密或者簽名數據都會從pc層到介面層到驅動到USBKEY這個方向流動,保證了私鑰不出key。也就是這個key保證了身份安全和信息安全。

2FIDO:FIDO技術層面上共有2個協議,U2F和UAF,兩個協議都建立在公鑰密碼學基礎上,暫時也沒必要展開談,我就簡要說下它是什麼,以及它做了什麼,簡單來講,它就是個技術標準聯盟,一方面規定了一些情況用生物信息代替密碼,各個介面層次如何定義,關鍵數據如何定義,信息如何交互跟其他協議沒什麼兩樣;另一方面,它拉動了目前全球比較有影響力的公司,從晶元如手機晶元等等,到軟體如瀏覽器,和伺服器,雲端等服務商廠商一起加入該標準,並且對整體方案進行評估和授權。

那我們回到一定條件的話,就一目了然了,目前如微信支付寶通訊錄等app在沒有接入某個包含安全晶元的技術框架(不一定是FIDO)下那就是毫無用處的,只有在同一安全技術標準之下,所有的私鑰密碼運算在晶元中運行,那就非常有用。

另外肯定有人問那如果硬扣掉晶元行不行呢。不行,只要廠商將整體運算環境的某些參數摘要進晶元,晶元校驗是否原計算環境即可。

當然,在某些行業需要並全盤定製的情況下,實現整體的「安全晶元-安全app-安全手機-安全服務端」的話,自然有用,而且其實已經用起來了。


加密晶元可以提高加解密的速度,這樣用戶感覺比軟體更快一些。另外加密晶元針對密碼演算法進行定製的設計比用CPU運行密碼演算法也更省電,提高手機的待機時長。


加密手機是不是需要加密晶元我不知道,但是我知道所有的電子產品,如果為了確保產品不被山寨,不被競爭對手抄板,那加一顆安全加密晶元是完全必要的。目前從安全等級上面來說,基於智能卡平台的加密晶元安全等級最高,SMEC98SP 採用增強型8051 智能卡內核,用戶可以把MCU 中程序一部分關鍵功能、演算法代碼下載到SMEC98SP 中運行。用戶採用標準C 語言編寫程序代碼,採用KEIL C 編譯器,編譯並下載到加密晶元中。在實際運行過程中,通過I2C通信,獲取加密晶元中運行結果,並以此結果,作為MCU 程序運行的輸入數據。因此SMEC98SP 成了產品的一部分,而部分關鍵功能或演算法在SMEC98SP 內部運行,盜版商無法破解,這樣就從根本上杜絕了程序被破解的可能。開發簡單,程序移植容易,而且價格不貴,所以如果有需要安全加密晶元的攻城獅是可以考慮的,有需要的可以給我私信


根本不需要加密晶元的,其實加密演算法的運算可以由CPU來完成,密鑰可以由加密分區來存儲,根本不需要如此多的噱頭!

甚至國內廠商已實現了防竊聽藍牙耳機的開發,就是單晶元SOC,詳情請關注Secguard公眾號


從信息安全的角度來看,個人認為還是很有必要加上一款優質的加密晶元的。相信在過去的時間裡,樓主也聽過不少手機被盜導致各種私人信息被泄漏,造成各方面損傷的事例。這些事例有力地說明了手機信息安全的重要性,如果能在我們的手機里安裝上一款加密晶元,就算不小心丟了或者被人偷盜了,也不會造成信息的泄漏,進而造成更大的損傷。對於這方面的知識,建議可以看看http://www.chipsec.com/article-item-349.html這篇文章,主要就是談的手機內置加密晶元是否安全的話題,我覺得還是有道理的。


(1) 比如 master key 漏洞

(2) 不能

但是即便如此TZ還是安全的呀……

不過考慮到以用戶極端作死前提下的安全…… 似乎可能也許…… 考慮個毛啊……


推薦閱讀:

TrueCrypt 为什么突然宣布不安全了?
破解密碼除了暴力破解還有什麼高端的方法?
RSA 演算法的加密原理是什麼?
如何評價蘋果於北京時間 2016 年 2 月 17 日晚發布的關於 iOS 安全的公開信?
數字簽名能用對稱加密嗎?如果用了會怎樣

TAG:手機 | 加密 |