现如今,生物识别作为一个新兴的认证方式,从好莱坞大片的银幕中正款款走出,进入人们的日常生活。其中,指纹识别是生物识别茫茫类目中的佼佼者,尤其是自从2011年苹果公司推出了iPhone 4s这一款跨时代的智能手机之后,指纹识别模块越来越多得出现在各大智能终端上。尤其是近两年,无论是小清新iOS设备,还是Geek范的Android设备,都越来越重视生物识别在智能手机上的应用。从应用场景上来说,从之前单纯的人脸或者指纹解锁,到如今指纹支付以及授权通过各大app普及开来;而从系统层面,作为一向习惯于将设备接口能力开放出去Google,也在2015年2015年5月的Google I/O大会发布的Android M(正式版为Android 6.0)中提供了官方的指纹接口以及针对指纹的增强版本密钥管理机制。
然而,在这貌似明朗的生物识别的智能设备的天空中,始终漂浮着一朵乌云:目前,并没有一个能被各大手机厂商统一认可的生物识别标准流程。这就意味着虽然无论是iOS还是Android系统中虽然都提供了完备的客户端接口获取单次的指纹验证结果,但是:
1、系统会告诉你这次验证结果正确与否,但是如果手机被破解(例如root或者越狱),结果很容易被破解;
2、数据传输过程中如果遭遇网络劫持,很容易被篡改。
为了解决上述问题,开发者必须根据不同的生物识别方式、不同的厂商进分别实现,效率低下且不现实。
腾讯通过自身强大的影响力,和各大手机、芯片以及TrustZone厂商合作,在自家应用——微信上成功实现了安全的指纹支付认证流程。同时,作为一家有责任感的公司,腾讯在微信指纹支付全流程之上,将流程抽象为一套完备的生物识别标准——SOTER。
SOTER的本意是希腊神话中的神祗,象征着安全。这也意味着作为一项标准的SOTER,与厂商合作,在系统原有的接口能力之上提供安全加固。SOTER具有以下优点:
1. 第三方应用不需要深入安全域,通过调用业务无关的安全域(TEE,即独立于手机操作系统的安全区域,root或越狱无法访问到)应用程序(TA),降低开发难度和适配成本;
2. 对于Android来说,在指纹方面,适配Android 6.0FingerprintManager以及KeyStore接口以做到接口统一,同时对于Android不安全情况进行加固;
3. 对于第三方应用,给到应用方自由度,可以对验证结果进行二次确认;
4. 即使外部环境不可信,依然可以安全授权。
SOTER改变了厂商与开发者复杂的链式对接关系,通过它的连接,手机厂商的生物识别技术能简单且灵活的被各类APP所运用,开发者能快速且安全地在自家应用上实现各种生物认证能力,为用户打造出快速安全的极致体验。
在此之前,需要向大家普及一个概念:TEE。前文说过,TEE(Trusted Execution Environment)是独立于手机操作系统的一块独立运行的安全区域。SOTER标准中,所有的密钥生成、数据签名处理、指纹验证、敏感数据传输等敏感操作均在TEE中进行。不仅如此,SOTER使用的设备根密钥由厂商在产线上烧入,从根本上解决了根密钥不可信的问题,并以此根密钥为信任链根,派生密钥,从而完成。与微信合作的所有手机厂商将均带有硬件TEE,并且通过腾讯安全平台和微信支付安全团队验收,符合SOTER标准。
设备根密钥(Attestation Key,以下简称ATTK)是SOTER方案的核心密钥。对于Android设备而言,ATTK由厂商在设备出厂之前在生产线上烧入。ATTK具有以下特点:
设备根密钥的安全性是SOTER安全性的保障,微信团队将会对支持的设备进行充分的安全监控,保证设备安全。
信任链模型如下图所示:
图1 密钥信任链
图1中,密钥信任关系为:自上而下为信任关系,自下而上为派生关系。派生以及鉴定流程如图2:
图2 密钥派生以及鉴定流程
具体步骤:
1. 根密钥提供商在设备出厂之前请求到设备,要求生成设备根密钥
2. 设备在密钥生成TA内生成根密钥,并将该密钥私钥存储在安全存储区域,公钥导出到根密钥提供商
3. 根密钥提供商将根密钥公钥通过后台可信接口(以微信为例,即微信公众号接口)传输至密钥公提供商,鉴权通过则存储
4. 对于第2-n级密钥,则客户端(设备)主动请求到密钥生成TA,请求生成该级别密钥
5. 密钥生成完毕之后,将私钥存储在安全存储区域
6. 密钥公钥导出至设备,同时从安全区域中导出的有该公钥使用上一级别的密钥的签名。将密钥公钥和签名传输至密钥公钥提供商(或应用程序后台),验签通过,则将该密钥公钥存储
其中,设备根密钥的密钥公钥提供商为TAM,其他级别密钥的密钥提供商为应用程序后台,由应用自行存储。微信团队将提供统一的后台API供应用程序后台获取某台设备的ATTK公钥,获取过程如下图:
除了刚刚介绍的ATTK之外,App Secure Key (ASK)为应用二级密钥,建议在应用启动时即生成,每一个应用生成一个;Authentication Key(Auth Key)是业务密钥,建议应用内每一个业务(如支付业务和登陆业务)均生成一对。同时,Auth Key的使用需要用户通过生物信息(如指纹)进行授权。在此将密钥特性整理如下:
密钥准备完毕之后,即可以在合适的时候(如用户支付时),请求用户生物信息授权,对授权信息进行签名。应用后台对签名进行验签,通过之后可以检查其他相关信息(如指纹id等,同样包含在授权信息中),并最终返回授权结果。相关过程如图3所示:
除了已经在使用的微信支付之外,SOTER有很多其他的应用场景:
更多场景,待你发掘。
目前,SOTER支持两种方式进行实现:
关注WeCooper——微信终端合作官方公众号,以获取详细接口开发信息。
我们希望通过产业链上下游的共同努力,推进生物识别技术发展,完善产业链构建生物认证生态体系,用科技实现“智能化生活”的美好愿景,改变生活。