赞
踩
Android系统终端上的5个密钥
手机终端软件安全的相关从业者不得不面对以下5个密钥,如下图所示:
这5个密钥,有些是因为支付宝支付、微信支付所必须要的如IFAAKey、SoterKey。有些是Google最新Android8.0版本所要求的,比如attestationKey,有些是因为一些业务需要比如DRMKey。最后一个RPMBKey是TEEOS所需要的,作为可信安全存储的一个密钥。
当然最重要的是,这些Key的都需要TEE系统作为支撑,也就是说可信执行环境成为一个必选项!下面安智客简要介绍一些这些key:(IFAA:https://www.cctime.com/html/2019-1-23/1431131.htm)
腾讯在微信指纹支付——SOTER。SOTER标准中,所有的密钥生成、数据签名处理、指纹验证、敏感数据传输等敏感操作均在TEE中进行。不仅如此,SOTER使用的设备根密钥由厂商在产线上烧入,从根本上解决了根密钥不可信的问题,并以此根密钥为信任链根,派生密钥,从而完成。与微信合作的所有手机厂商将均带有TEE,并且通过腾讯安全平台和微信支付安全团队验收,符合SOTER标准。soterkey即ATTK(设备密钥)密钥在设备出厂之前需要在TEE中生成,公钥被被厂商安全得传输到腾讯的TAM服务器,私钥则在TEE中安全存储。
IFAA全称internetfinanceauthentiationalliance,互联网金融身份认证联盟,也指一种认证规范,IFAAkey其实分三个层次,分别是业务密钥,可信根密钥和设备密钥。这里所说的IFAAkey,说的其实是设备密钥。
AttestationKey在AndroidO中,认证密钥必不可少,在CTS/GTS中进行测试检查。密钥认证旨在提供一种方法来强有力地确定非对称密钥对是否由硬件支持(如果来自HWKeymaster)。在APP获取Keymaster密钥对后,APP可以要求Keymaster提供一个证书链(证书密钥签名的证书,而根证书来自google),并验证证书链是否有效。应用程序应该自行验证证书。
原文链接:http://www.lofter.com/lpost/1fd7ea22_12e0e463c
什么是SOTER?
TENCENT SOTER是微信团队推出的一套安全、通用、完整的指纹认证方案,Android手机上的微信支付底层指纹能力,采用的就是SOTER指纹认证方案。
SOTER认证的原理是,当用户使用指纹授权时,手机内部有一个签名的角色根据指纹对比结果决定是否签名,一旦签名成功,对应的手机外部有一个认证签名的角色。认证完成,设备即可执行相关指令。
于是,我们需要在手机内部和外部分别设立签名和验证签名的场所。
这里涉及到三个场所分别是:
①TEE:签名场所
TEE位于手机内部,独立于手机操作系统,出厂时即装备成功,保持了绝对安全与密闭。
②TAM:验证签名场所一
TAM是微信为验证签名业务专门提供的服务器。
③APP服务器:验证签名场所二
APP服务器是指使用SOTER技术的不同APP的本地服务器。和TAM相似,也是提供验证签名服务的场所,只是针对的是具体APP以及APP的不同功能和场景。
TEE、TAM和APP服务器里分别住了三对房客,分别是ATTK家族、ASK家族、AuthKey家族。
让我们用一个例子来说明,他们是如何工作的。
以微信支付为例。
现在,假设你女朋友说:“亲爱的,春天来了,我没衣服穿啦。”你虽然很想说:“不穿正好。”但是你依然拿出了手机,准备发一个红包给她。
首先响应的是ATTK家族。
ATTK家族的作用是为每一款APP(如微信)派出一对ASK,ASK是为APP所服务的。
ATTK_pri 和ATTK_pub在设备出厂时自带,ATTK_pri存储在TEE中,是负责签名的笔,ATTK_pub存储在TAM中,是负责验证签名的印章。只要笔签下的名字,印章经过确认都会打上“合格”。
其次响应的是ASK家族。
ASK家族的作用是为APP的每一项功能(如微信支付、微信公众平台授权)派出一对AuthKey,Authkey是为APP的每一项细分功能服务的。
ASK家族由ATTK_pri派出,ASK_pri也存在于TEE执行签字工作,ASK_pub这枚印章则ATTK_pub验证签名通过后,输送到APP服务器中存储,负责认证ASK_pri签名的工作。
最后出场的,也是最一线的AuthKey家族。
AuthKey家族由ASK_pri派出。同理,AuthKey_pri存储在TEE中,依然扮演签字笔,AuthKey_pub由这枚印章ASK_pri签名后送入APP服务器。ASK_pub一看是ASK_pri送来的,就印上“合格”,将AuthKey_pub存储在APP服务器负责验证签名。
于是,ATTK家族为APP指定ASK,ASK家族又为不同功能指定AuthKey,AuthKey家族最终决定是否通过一项指令。一层又一层,井然有序。
万事俱备,终于轮到指纹登场。
当你点下 确认支付 时,手机下一个画面要求你“验证已有的指纹,用于支付”。
此时,微信后台会生成随机串A,随机串A从信客户端传输至TEE,静静地等待你的指纹。
指纹由指纹传感器传输进入TEE。在TEE中,指纹对比无误,主管签字的AuthKey_pri就会签下名字,将随机串A连同签名一起发送给APP应用服务器。
APP服务器中的AuthKey_pub看到AuthKey_pri的签名,大手一挥说“合格”,只需要留下签名凭据,就可以通知银行扣款了。
至此,你的女朋友就收到了你满满的春日问候啦。
可能你要问了,经过了几次签名流程的SOTER是如何保障安全快速的呢?答案是——
1.所有的关键步骤都在安全屋TEE中进行。而且,AuthKey_pri的签名凭证输出后,如果被篡改,AuthKey_pub是无论如何都不会通过验证的。
2.由于TEE是独立于手机操作系统的存在,因此即使手机被Root,SOTER方案依然有效。
3.指纹只需从传感器“行走”至TEE进行授权,无需经过微信客户端或服务器,确保了指纹支付的光速进行,不会受到网络等外力的影响。
这也满足了人类对“万能钥匙”的终极幻想——
1.安全:无法复制,不会丢失或被窃取。
2.迅速:解“锁”速度<1秒。
3.方便:无需记忆,随“身”携带。
本文链接:https://www.ngui.cc/el/2590457.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。