從 Secure Element 到 Android KeyStore

忽如一晚上春風來,智能手機來到每一個人的手上,咱們用它支付、理財、娛樂、工做、記錄生活、存儲私密信息、乘坐公共交通、開啓家門、控制汽車...。智能手機是如此的重要,不知每天把它拿在手上的你,是否關心過它是否足夠安全。android

本文從Secure Element(安全單元)提及,介紹手機設備上若干重要的安全角色和概念。爲後續文章介紹如何基於手機安全地實現認證、支付、DRM等業務流程打下基礎。git

SE(Secure Element)

按照Global Platform的定義:安全單元提供私密信息的安全存儲、重要程序的安全執行等功能。其內部組件包含有:CPU、RAM、ROM、加密引擎、傳感器等,大體以下圖所示:安全

SecureElementInternal

外在表現上SE是一塊物理上獨立的芯片卡。從外在表現上能夠分爲三種:性能

  • UICC 通用集成電路卡,由電信運營商發佈和使用。就是你們購買手機號時的手機SIM卡;
  • Embedded SE 雖然也是獨立的芯片,但普通用戶看不到,由手機制造廠商在手機出廠前集成在手機內部;
  • Micro SD 以SD存儲卡的形式存在,經過插入SD卡槽集成到手機上。由獨立的SE製造商製造和銷售;

SecureElementShape

SE物理上獨立,採用安全協議與外部通信。具備本身獨立的執行環境和安全存儲,軟件和硬件上防篡改。軟件經過簽名等方式防篡改不少人都瞭解,說下硬件防篡改,簡單說就是物理拆改SE,它會自毀。最簡單的硬件防篡改的例子,你們能夠參考你們給本身車安裝車牌時所使用的單向螺絲和防盜帽。加密

SE固若金湯,但保存在其中的數據和程序須要有更新機制,這經過TSM(Trusted Service Manager)來實現,以保證安全。操作系統

TrustedServiceManager

SE不年輕了從19世紀70年代就開始發展,但它十分安全,是目前手機上最安全的技術措施。code

NFC(Near-field Communication)

近場通訊是一種短距高頻的無線電技術,在13.56MHz頻率運行於20釐米距離內,由非接觸式射頻識別(RFID,公交卡、校園一卡通、門禁卡等都採用RFID技術實現)演變而來,由飛利浦、諾基亞和索尼於2004年共同研製開發。目前已成爲ISO/IEC IS 18092國際標準、EMCA-340標準與ETSI TS 102 190標準。orm

NFC設備有三種工做模式:視頻

  • 卡模擬模式(Card emulation mode):這個模式其實就是至關於一張採用RFID技術的IC卡。能夠替代如今大量的IC卡(包括信用卡)場合商場刷卡、IPASS、門禁管制、車票、門票等等。
  • 讀卡器模式(Reader/Writer mode):做爲非接觸讀卡器使用,可用來實現給公交卡充值等功能。
  • 點對點模式(P2P mode):這個模式和紅外線差很少,可用於數據交換,只是傳輸距離較短,傳輸建立速度較快,傳輸速度也快些,功耗低(藍牙也相似)。將兩個具有NFC功能的設備連接,能實現數據點對點傳輸,以下載音樂、交換圖片或者同步設備地址薄。

三種工做模式中,卡模擬模式用途最爲普遍,可將用平時使用的各類卡經過手機模擬實現,今後出門再也不帶卡。此種方式下,NFC芯片經過非接觸讀卡器的RF域來供電,即使是手機沒電也能夠工做。blog

NFC設備若要進行卡片模擬(Card Emulation)相關應用,則必須內置安全單元(Security Element, SE)以保存重要隱私數據。能夠說NFC給SE插上了翅膀,在NFC普遍應用的今天,SE如此的重要,成爲電信運營商(移動、聯通、電信等)、手機廠商(華爲、小米等)、操做系統廠商(谷歌、蘋果等)的兵家必爭之地。

NFC

HCE(Host Card Emulation)

由於不涉及硬件製造,在SE的競爭過程當中,操做系統廠商相對弱勢,確切的說是谷歌弱勢,由於蘋果既是操做系統廠商,也是手機廠商。

早期Goole Pay是基於SE實現的,但因爲在SE生態環境中弱勢的競爭地位,致使Google Pay適配的機型少,難以發展。從Android 4.4開始,谷歌獨闢蹊徑在Android系統中提供了HCE服務,用來繞過SE直接控制NFC Controller。大概的模式以下圖所示:

HCE

HCE不在依賴設備上的SE模塊,只要有NFC芯片就能夠實現支付等功能,但實際上是無奈之舉。方即是方便了,有兩個主要缺點:一個是安全性有所下降,雖然可使用白盒密碼、服務端token校驗等一系列手段來提高安全性,但相比SE,安全性下降到依賴Android OS,只要OS被攻破,HCE就沒法保證安全;一個是費電,NFC Controller + SE的方案,能夠在手機無電的狀況下,使用NFC讀卡器的電磁信號供電。而HCE則必須在手機供電,OS正常工做甚至還要聯網的狀況下才能使用。

相對的,由於對設備有這強的控制力,蘋果的Apple Pay是基於SE實現的,更安全一些。

TEE(Trusted Execution Environment)

SE千般好,除了慢。硬件隔離,獨立的計算和存儲資源,意味着SE的計算性能差、跟主機的數據傳輸速度也慢,這限制了SE的應用場景。與此同時,移動互聯網發展迅速,迫切須要一個更好的安全生態。所以TEE應運而生。

TEE是一個硬件安全執行環境,一般跟平時使用的Rich OS(Android等)共用同一個主處理器(CPU),提供了代碼和數據的安全防禦、外置設備的安全訪問等功能。TEE具備本身的TEE OS,能夠安裝和卸載執行其中的安全應用TA(TEE Application)。跟SE相比,是一個相對不那麼安全,但運行速度更快、功能更豐富的安全環境。爲全部支持TEE的手機,提供了操做系統以外的安全方案。

SE、TEE以及REE的對比:

對比項 SE TEE REE
安全級別 最高(硬件防篡改) 高(硬件安全方案) 普通
性能
是否在主處理器執行 是(極個別狀況有獨立處理器)
安全的外設訪問 不支持 支持 不支持
提供硬件證實 必定程度上提供 提供 不提供
軟件生態 較差 較好 極好

TEE的內部API和外部API都由Global Platform定義和發佈。TEE獲得了業界普遍的支持,好比ARM在2006年就發佈了ARM處理器下的TEE方案TrustZone,AMD、Intel、華爲海思等,也有本身的TEE方案。

TEE

TEE普遍應用在支付、身份認證、內容保護等領域。舉例來說,視頻廠商每每須要DRM(Digital rights management)系統來保護版權內容可以順利得在用戶設備上播放,而不被泄露。TEE自然適合用來完成這種需求,其安全存儲的能力能夠用來保存解密版權內容所需密鑰,這樣,TEE Application訪問可信的服務端獲取已加密的版權視頻後,使用安全密鑰解密,而後利用安全訪問外置設備的能力,鎖住顯卡和聲卡,將解密後的視頻送往顯卡和聲卡播放。整個過程當中,不論是加密密鑰仍是視頻內容都沒有離開過TEE,保護了版權視頻的安全。尤爲值得一提的,因其鎖定外置設備的能力,想經過錄屏來竊取內容,也是不可能的。

Android Fingerprint

Android設備的指紋識別,依賴TEE來實現用戶指紋認證,要求指紋採集、註冊和識別都必須在TEE內部進行,已保證安全。

AndroidFingerprint

Android KeyStore

Android從4.0開始引入了KeyStore,開發者可使用KeyStore API生成密鑰、使用密鑰簽名、使用密鑰加解密、獲取密鑰的屬性信息,但沒法將密鑰自己從KeyStore中取出。由於密鑰不進入應用進程,這大大提升了密鑰的安全性。隨着Android版本更迭,KeyStore的實現不斷進化得更加安全,在有些設備上,不只密鑰不進入應用進程,甚至不進入Android OS只存儲在TEE或SE中,接下來咱們大概列舉下KeyStore的進化。

Android 版本 新增的KeyStore能力
4.0 創世版本,密鑰使用用戶的passcde加密後存儲,支持RSA、ECDSA
4.1 增長了使用安全硬件的基礎設施,在可能的狀況下密鑰會被存儲到安全硬件中
6.0 增長支持AES、HMAC;增長了密鑰綁定用戶認證的能力,便可以指定某些密鑰,在每一次使用時,必須由用戶進行認證(指紋、passcode等)
7.0 強制要求預裝7.0系統的設備必須擁有安全硬件而且支持基於安全硬件的KeyStore
8.0 增長了設備證實(Key Attestation)能力,開發者可經過驗證Key Attestation的證書鏈,來確認密鑰的確保存在了安全硬件中

總結

能被業界接受的,就是好方案。

相關文章
相關標籤/搜索