iOS Secure Enclave
Posted 长沙火山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS Secure Enclave相关的知识,希望对你有一定的参考价值。
一、概述
可能对于大多数 ios开发而已,对于 Secure Enclave 很陌生,Secure Enclave 翻译成中文是 “安全区域” 的意思。在iOS安全白皮书中对于 Secure Enclave 是这样定义的 :
Secure Enclave 是 Apple A7 或更高版本 A 系列处理器中集成的协处理器。
其实,还是不太理解 Secure Enclave 是什么东西。根据小编的理解,我们可以把 Secure Enclave 看作是一个密封的箱子,里面存放着一些很机密的数据,比如用户的指纹信息、脸部数据等。我们可以把它想象成一个绝对的安全环境,任何黑客都无法破解这个盒子,它被集成在手机的硬件中。暂时这么理解吧,下面小编会和大家一起进一步的探索 Secure Enclave 的庐山真面目。
二、Secure Enclave 介绍
很多年前手机其实只用于简单的接听电话和收发短信,那个时候还不存在手机的安全问题。随着手机的发展,很快便出现了智能手机。智能手机的功能越来越丰富,可以拍照、购物、支付等,随之就产生了移动端设备上数据安全的问题。那么怎么解决移动设备上数据的安全问题呢?TrustZone是针对移动设备安全问题提出来的一套解决方案。
1. Secure Enclave 的前身 TrustZone
2012年 ARM 公司推出了TrustZone安全解决方案,旨在提供独立的安全操作系统及硬件虚拟化技术,为手机安全支付的过程中提供可信的执行环境。TrustZone技术在2014年以后发展迅猛,在目前市面上大多数智能手机都带有TrustZone技术的芯片和操作系统。
TrustZone技术是软件和硬件结合的解决方案。TrustZone从硬件安全扩展来提供资源隔离,软件提供基本的安全服务和接口。TrustZone技术将软硬件资源隔离成两个环境,分别为 “普通世界” 和 “安全世界”。
一些普通的数据都被存放在 “普通世界” 中,而一些机密数据则被存放在 “安全世界” 中,即使手机被黑客入侵,黑客也无法拿到 “安全世界” 中存储的机密数据。黑客为什么不能拿到 “安全世界” 中的机密数据呢?因为 “普通世界” 和 “安全世界” 是完全隔绝的,就连系统也无法直接访问 “安全世界” 的机密数据。
2. Secure Enclave 登场
2013年,苹果推出了 iPhone 5S,搭配了指纹解锁的功能。指纹信息是很敏感的信息,那么苹果如何保护用户的指纹数据呢?苹果在手机硬件中内置了 Secure Encalve 处理器,专门用于存储用户的机密信息,而 Secure Encalve 的设计思想来源于 TrustZone。至此,我们可以完全的揭开 Secure Enclave 的面纱了。Secure Enclave 其实是苹果内置在手机硬件的一款保护用户隐私数据安全的处理器。
三、Secure Enclave 的工作原理
既然 Secure Enclave 安全性这么高,那我能把我 APP 登录的账号密码存在 Secure Enclave 里面么?答案是肯定不能的,因为 Secure Enclave 没有提供对外的数据读写接口。如果 Secure Enclave 提供对外的数据读写接口,那么黑客很容易就能通过系统提供的接口获取 Secure Enclave 中的机密数据。Secure Enclave 设计的初衷就是要制造一个完全隔绝的独立安全区域,要是提供对外的数据读写接口,那就没有绝对的安全性了。
那么 Secure Enclave 里面不能存APP 的登录账号密码,那能存放哪些数据呢?
1. Secure Enclave 存放什么数据
Secure Enclave 是一个绝对的安全环境,所以存放的当然也是最高机密的数据。那什么数据属于最高机密的数据呢?一般是用户的生物特征信息,比如指纹信息 TouchID、面部信息 FaceID 等。
2. 机密信息怎么写入 Secure Enclave
前面提到了 Secure Enclave 没有对外提供数据读写接口,那么用户录入的指纹怎么写入 Secure Enclave 中呢?苹果在用户录入指纹的时候,是由指纹传感器收集用户的指纹信息,直接通过指纹传感器将指纹数据传入了 Secure Enclave 中,是通过硬件直接写入的,而非系统接口。
3. Secure Enclave 怎么验证指纹信息
当用户用 TouchID 解锁时,Secure Enclave 怎么判断用户的指纹信息是否正确呢?用户按下指纹之后,指纹传感器会将指纹发送到 Secure Enclave 中,Secure Enclave 只会告诉你 YES 或者 NO,而不会把之前录入的指纹取出来和当前的指纹去进行对比。
以上是关于iOS Secure Enclave的主要内容,如果未能解决你的问题,请参考以下文章
在我的 iOS 应用程序中,是不是有任何理由为会话 cookie 设置 HttpOnly 和 Secure 标志?
iOS Secure Enclave 中可以存储多少个密钥?