• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

腾讯 soter 原理

JAVA web前端中文站 2年前 (2017-08-16) 793次浏览 已收录 0个评论

前面已经对腾讯的 soter 开源生物认证有了一些讲解介绍,下面主要是对soter的原理给大家介绍一下。

TENCENT SOTER 之所以能实现支付级别的指纹授权安全性,主要原因有三:

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

  • 所有关键数据存储与操作均根本依赖 TEE
  • 厂商在设备出厂之前安全环境会专门生成 TENCENT SOTER 设备根密钥
  • 生物授权的实质是密钥签名,TEE 级别保证“无授权,不签名”。

Soter 架构

腾讯 soter 原理

TENCENT SOTER 中,一共有三个级别的密钥:ATTK,App Secure Key(ASK)以及 AuthKey。这些密钥都是 RSA-2048 的非对称密钥。

所有的密钥都由 TEE(一个独立于 Android 系统的安全环境,这也是 TENCENT SOTER 能解决 root 下手机认证的关键所在)保护安全保存。这也就意味着除了数据所有者之外,没有人可以使用私钥。更重要的是,如果密钥是在 TEE 中生成的,所有人——包括微信、厂商等——都无法得到密钥私钥。一句话总结,TENCENT SOTER 中所有非对称密钥均是在 TEE 内部生成的,即使设备被 root,私钥也不会泄露。

除了密钥之外,TENCENT SOTER 所有关键流程,如签名等,均在 TEE 中进行,这也保证了核心流程不会被恶意应用篡改。

工作流程

ATTK(设备密钥)私钥在设备出厂之前就已经在 TEE 中生成,公钥被被厂商安全得传输到腾讯的 TAM 服务器,私钥则在 TEE 中安全存储。

腾讯 soter 原理

第三方应用能且只能在 TEE 中生成唯一 ASK(应用密钥)。一旦 ASK 被成功生成,私钥被存储在 TEE 中(或者更加准确地说,被 TEE 中安全密钥加密存储在手机 sfs 中,等同于存储在 TEE 中,即使手机被 root 了也是安全的)。公钥结构体(包含公钥信息以及其他辅助信息)导出的时候会自动带上 ATTK 对公钥数据的签名。应用开发者将公钥结构体以及 ATTK 对该结构体的签名通过微信开放平台接口(见接口文档)发送到 TAM 服务器认证公钥结构体合法性。如果合法,则第三方保存该结构体备用。

腾讯 soter 原理

对于每一个业务场景,你应该生成一对 AuthKey(业务密钥)用于该场景指纹认证。AuthKey 的生成过程与 ASK 类似——在 TEE 中生成,私钥在 TEE 中保存,公钥上传到服务器。不同的是,第三方应用应该自己检查 AuthKey 的合法性(实际上,我们真的不想知道你们的用户做了多少笔支付)。同时,生成 AuthKey 的时候,需要标记私钥只有在用户指纹授权之后才可以使用(正如 Google 在标准接口中定义的那样)。

腾讯 soter 原理

在认证之前,应用需要先向自己的服务器请求一个挑战因子(通常是一个随机串)作为用于签名的对象。用户指纹授权之后,你将可以导出一个 JSON 结果,其中包含了你刚刚请求的挑战因子、用户使用了哪个手指(fid)以及其他设备信息,和这个 JSON 结果对应 AuthKey 的签名。之后,将他们发送到自己的服务器,自己使用之前存储的 AuthKey 公钥验签就好。其中,fid 也是在 TEE 中自动读取并连同结果一起被签名的,也就是说,黑客是无法伪造。

以上,就是 TENCENT SOTER 的原理,欢迎留言讨论。

【注:本文源自网络文章资源,由站长整理发布】


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:腾讯 soter 原理
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址