用故事告诉你,微信SOTER指纹认证标准是什么黑科技

2020-08-20 04:09:21 来源:互联网 阅读:-
【摘要】TENCENTSOTER是微信团队推出的一套安全、通用、完整的指纹认证方案指纹识别已经潜移默化地走入我们的生活。微信用户每天都会使用指纹认证进行微信支付,而Android手机微信支付底层的指纹能力,采用的是SOTER指纹认证方案。

用故事告诉你,微信SOTER指纹认证标准是什么黑科技

用故事告诉你,微信SOTER指纹认证标准是什么黑科技

TENCENTSOTER是微信团队推出的

一套安全、通用、完整的指纹认证方案

指纹识别已经潜移默化地走入我们的生活。微信用户每天都会使用指纹认证进行微信支付,而Android手机微信支付底层的指纹能力,采用的是SOTER指纹认证方案。

SOTER指纹认证方案,无需读取用户的指纹信息,而且在Android 6.0的基础上进行了安全加固,每一个终端都有一个独一无二的密钥,保障了指纹认证的安全性,即使手机被root破解,获得了最高管理权限,指纹也无法被劫持,保障了方案的高安全性。

▌SOTER方案的原理?

SOTER使用的是RSA-2048非对称算法的密钥链进行签名和验签,不要求设备厂商上传用户指纹。

对于业内人士来说,可以直接看这篇文章,里面详细介绍了SOTER的原理与实现。SOTER-App接口介绍

对于普通用户,下面我们讲一个生活场景的类比故事,来帮助大家理解SOTER的安全特性。故事开始前,先给大家科普一下故事中涉及到的名词概念和人物关系:

名词概念

签名:在什么场景下你会签名?大到国家文件,小到吃饭刷信用卡——总结一下,签名就是需要你来授权的过程,签名有一个很重要的特点,就是不可伪造,同样的一段字符串ABC,每个人写出来的形状都是不一样的。

私钥:其中,签名者就对应非对称密钥中的『私钥』。

○ 公钥: 那谁来认证这个签名是不是你签的?——『警察』。只有刑警队里边的专业人员才能看出来这个是不是你本人的签名。这里的『警察』,就对应非对称密钥里边的『公钥』。

○ 验签: 同时,密码世界里边的『警察』和现实中的警察稍有不同,现实中的警察谁的签名都能认证,但是密码世界的『警察』是专人专配的,『警察』只能认证『一个人』的签名。也就是说,一个公钥只能针对特定的那个私钥签出来的字进行认证。这个过程密码学中叫做『验签』。

○ TEE: 同时还有一个概念叫『TEE』(Trusted Execution Environment),这个你可以类比为现实世界中的『监狱』。不同的是,这个『监狱』里边的人都是无期徒刑,而且没有探亲机制。这个监狱目前没有有效的『劫狱』手段,也就是说TEE中的数据除非主动给出,否则无论如何外部都是拿不到、甚至见不到的。(TEE目前没有有破解手段,即使手机被root,TEE依然安全)。

人物关系

○ TEE:是『监狱』,『监狱』里边还有一个『妇幼保健院』,可以随时『生』出一对密钥。ATTK家族是大哥,ASK家族是『妇幼保健院』生出的二哥,AuthKey家族是保健院生出的小弟。(ATTK→ASK→AuthKey)

○ pri后缀:『监狱』内的『犯人』。

○ pub后缀:『公安局』内的『警察』。

故事内容

/壹 /

目前,所有支持SOTER的设备都有这样一个『监狱』,『监狱』里边的人外面谁都看不见 。SOTER设备在出厂之前就有一对ATTK孪生兄弟:ATTK_pri、ATTK_pub。

ATTK_pri 要继续在『监狱』里呆着。

ATTK_pub 则去了『公安局』当了『警察』。

在『监狱』里呆着的那位ATTK_pri就负责给别人签名,他签了名,然后送给ATTK_pub『警察』 验证签名。ATTK_pub一看这个签名来自ATTK_pri,必须信赖,于是就会办他要求的事情。

技术描述:所有支持SOTER的设备都有TEE,设备出厂之前即通过产线工具下给TEE下达命令生成非对称密钥私 ATTK_pri 并保存在RMPB中,保证无人可以读取。同时导出公钥 ATTK_pub ,并通过微信公众平台接口传输到微信TAM服务器

/ 贰/

但是每天求ATTK_pri签名的人太多了,怎么办?于是他想到一个好办法,他让『监狱』里的『妇幼保健院』再造一对ASK兄弟,ASK_pri 留在『监狱』,ASK_pub 送到『警察局』。

『警察』得确认ASK_pub 是从安全的『监狱』过来的,于是ATTK_pri就把它的全名给写在了一张纸条上,给 ASK_pub 说:"到了『警察局』,你就把这张纸条交给 ATTK_pub,他看到我的字,就知道你来自这个『监狱』,你就能进『警察局』,后面,你就认证你大哥 ASK_pri 的签名就好了"。于是 ASK_pub 就这么进了『警察局』,同时 ATTK_pri 不负责别的事情,只负责签名送人去『警察局』。

技术描述:SOTER方案会针对每一个应用(如微信)生成一对应用密钥(ASK),私钥保存在安全区域,公钥ASK_pub由ATTK_pri进行签名,并将签名串和公钥本身传输到应用服务器。应用服务器通过后台接口请求ATTK_pub认证签名串,认证成功之后应用存储ASK_pub在后台

/叁 /

『监狱』里的ASK_pri也觉得累,虽然只负责微信家的业务,但场景太多,支付、公众号授权等等。于是,他模仿ATTK_pri的做法,让『妇幼保健院』生出一对密钥兄弟AuthKey_pri和AuthKey_pub,并使用相同的办法将AuthKey_pub送到了『警察局』,AuthKey_pri留在『监狱』。所不同的是,这一次验证ASK_pri签名的人变成了自家兄弟ASK_pub。

技术描述:对应用中的每一个业务,SOTER均建议应用生成专门的AuthKey进行业务签名、验签隔离。AuthKey生成之后,私钥AuthKey_pri存储在设备安全区域,AuthKey_pub由ASK_pri签名发送到应用服务器,使用ASK_pub验签通过之后由应用自行存储。

/ 肆/

ATTK兄弟作为大哥,只负责认证ASK,ASK兄弟又负责认证AuthKey兄弟。只要小弟签名了,就代表大哥签名了,也就是这个数据确实是从合法的『监狱』里发出。

以上故事与指纹认证有什么关系呢?原来,AuthKey_pri从出现开始,就有一个特性,除非用户按了指纹,并且这个指纹经过『相关部门』(这个『相关部门』也在『监狱』中,监狱内部不同部门之间的信息也是绝对安全的)认证确实是主人的,否则他绝不签任何名字。

而且这个特性是自有的、谁也无法改变。现在这个机制非常清晰了,比如用户想要支付一笔钱,那么银行就发送一个凭据给到『监狱』,用户指纹授权之后,AuthKey_pri才会签这个凭据,并且付上用户授权结果,代表用户确实使用指纹授权了,『警察局』里边的AuthKey_pub验证这个签名是正确的之后,存下这个签名凭据,通过『政府专线』告知『银行』进行扣款。但是这里需要注意的是,『相关部门』不会把指纹图案传出来给到其他人。

技术描述:支付流程开始时,应用后台会先下发一个随机串,并由客户端给到TEE等待用户指纹授权签名。用户使用指纹授权并成功之后,将签名串导出,发送到应用后台进行验签,验签通过之后即支付成功。全过程应用方(微信)完全接触不到指纹图案

方案优势

以上为SOTER流程介绍,这个方案的优势在哪呢?

  1. 『监狱』的安全性保障了整个流程的安全性(TEE的安全性保证了整个流程的安全性)。所有的关键流程都在『监狱』内部进行

  2. 整个流程安全可信。举个例子,纸条如果出门就被人抢了,改了里边的签名(将指纹认证结果从no改为yes),或者改了需要签名的原串,这样一个纸条给到公安手上就无法验证通过。(关键流程、关键数据均在TEE中体现,且TEE中出来的数据全部都是加上对应密钥签名无法篡改的,即使客户端被root了依然可以保证流程安全)。

  3. 不用指纹图案。只需『监狱』里的合法签名就可以了,指纹认证结果是『监狱』内部的事情(指纹图案永远不会以任何形式被外部得知)。

  4. 唯一暴露在外的其实是『警察』,但是『警察』在公安局里很安全,另外『警察』逃走了也没有影响,『银行』只认签名,『警察』虽然能认证签名,但是他自己无法签名,这比直接存指纹安全多了(只有公钥会暴露出TEE,且公钥本身存储安全风险不大,即使泄漏,也不会影响到支付流程中任何一步的安全)。

QA

1. SOTER方案是否会存储用户指纹?

答:不会。

2. 为何还有一些品牌机型未支持SOTER?

答:现主流的Android手机都支持SOTER指纹认证方案,其它品牌机型也在陆续接入合作当中。

3.如果手机被root了,SOTER指纹认证会不会被破解?

答:不会。

4.为什么不直接使用Android 6.0提供的指纹接口?

答:在Android 6.0的原生指纹方案下,手机被root之后,指纹会被劫持。

故事说到这里

现在你了解方案的安全特性了么

推荐阅读:中国知创网