腾讯 soter 原理

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

  • 所有关键数据存储与操作均根本依赖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中安全存储。

准备根密钥

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

准备应用密钥

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

准备业务密钥

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

认证或开通

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

转自:https://www.xttblog.com/?p=1793

### SOTER协议简介 SOTER是一种由腾讯提出的生物识别认证协议,旨在提供一种安全、高效的移动端设备认证解决方案。该协议通过结合硬件级的安全模块(如TEE,Trusted Execution Environment)和软件层面的设计,实现了对用户身份的强认证能力[^3]。 #### 协议核心组件 SOTER协议的核心在于其密钥管理机制。具体来说,它引入了一种名为`AuthKey`的密钥体系,其中包含私钥`AuthKey_pri`和公钥`AuthKey_pub`。这些密钥是由更高层次的根密钥`ASK_pri`派生而来,并且整个过程严格依赖于TEE环境来保障安全性。以下是几个重要概念: - **TEE (可信执行环境)**:用于隔离运行敏感操作的一个独立区域,在此环境中处理的数据不会泄露给操作系统或其他应用程序。 - **ASK (Authentication Secret Key)**:作为最高级别的根密钥存在,仅存在于TEE内部,外部无法访问到其实体形式。 - **AuthKey**:分为公开可用的部分(AuthKey_pub) 和保密存储在 TEE 中 的 私有 部分(AuthKey_pri),主要用于签署消息或验证签名。 #### 工作流程概述 当应用需要进行指纹或者其他类型的生物特征认证时,会遵循如下步骤完成整个认证过程: 1. 用户触发认证请求后,客户端向服务器发送初始化命令; 2. 服务器返回挑战码(challenge code), 客户端将其传递至TEE层; 3. 在TEE环境下利用用户的生物特性样本与预存模板对比成功之后,使用 AuthKey_pri 对这个随机数进行加密/签名得到结果C; 4. 将计算所得的结果 C 发送给 APP 后台服务端; 5. 后者依据之前收到过的对应关系查找匹配项并解密确认无误,则允许继续后续动作比如登录账户或者发起交易等等行为发生;如果失败则拒绝相应指令执行下去。 这种设计不仅能够有效防止中间人攻击(MitM Attack),还能极大程度减少因恶意程序窃取而导致的信息泄漏风险,从而提升了整体系统的健壮性和可靠性水平。 ```python def soter_authentication(user_id, biometric_sample): challenge_code = generate_challenge() # Step 1 & 2 signed_result = tee_sign(biometric_sample, challenge_code) # Step 3 inside TEE verification_status = server_verify(signed_result, user_id) # Step 4 and 5 at Server Side return verification_status ``` 以上伪代码展示了简化版的SOTER认证逻辑框架图示例说明如何实现基本的功能需求。 ### 应用场景分析 由于具备高度安全保障措施,SOTER广泛适用于各类涉及个人隐私保护的应用场合之中,例如但不限于以下几个方面: - 手机银行类金融服务; - 社交媒体平台的身份核实环节 ; - 游戏道具购买支付授权校验等. 总之凡是要求较高权限准入门槛的地方都可以考虑采纳此类先进技术手段加以改进优化用户体验的同时也增强了防护等级.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值