最近晚上有空闲时间,分析了下腾讯Soter的原理和开源代码。

开源代码:https://github.com/Tencent/soter

三级**管理(采用的RSA2048**)

ATTK:设备根**,在设备出厂前在TEE中生成,公钥通过安全通道传输到腾讯TAM服务器,私钥存储在RPMB

ASK:App Secure Key,应用**,在应用启动时生成,每个应用生成一个

AuthKey:Authentication Key,业务**,应用内每个业务生成一对

主要流程解析

1、生成ASK

通过Android keystore机制,在TEE中生成ASK公私钥对,公钥结构体使用ATTK签名后导出并上传,私钥加密存储在文件系统中

身份认证之SOTER

2、生成AuthKey

与ASK流程基本上一致,在TEE内生成公私钥对,公钥结构体使用ASK签名后导出并上传,私钥加密存储在文件系统中,使用时需要认证生物特征进行授权

身份认证之SOTER

3、认证流程

应用通过用户指纹授权后,将请求的挑战因子(challenge)作为签名对象,通过keystore调用指定的AuthKey私钥进行签名,组装的JSON签名结果中包含了挑战因子、用户使用的手指(fid)、其他设备信息及签名值。其中,指纹验证的fid在TEE中自动读取并被组装到报文中,黑客是无法伪造。

身份认证之SOTER

相关文章: