基于多方密钥协同的移动钱包——TEE

TEE是基于处理器由软件定义的安全系统,其安全性仍低于SE。在国内的金融和政务应用中,国家在全面推广SM2国产算法。目前TEE国际标准还不支持SM2。实际上,私钥除了用于比特币交易外,还可以用于基于区块链技术的身份认证、电子合同签名以及数字资产交易等。针对以上情况,行业内也推出了一些创新的方案,进一步优化了TEE的安全性,又支持了SM2算法,满足了合规性。

多方密钥协同的基本原理是把私钥分散到多方(两方、三方或多方),由多方分别独立生成密钥因子,使用时独立计算,数据经过二次换算后形成签名值。计算过程中,各自的密钥因子在各方内部独立计算,密钥因子不在互联网传输。

以移动端、应用端、密码服务中心三方为例,移动App完成移动密钥因子的生成、安全存储和使用,应用服务端完成应用服务端的密钥因子的生成、安全存储和使用,密码服务端负责密码服务端的密钥因子的生成、安全存储和使用。其中应用端和密码服务中心使用密码机完成随机数的生成、密钥因子的保护和使用,移动App使用TEE完成密钥因子的生成、保护和使用。

实现步骤如下。

1)密钥生成流程:移动端、应用端、密码服务中心三方共同生成一个SM2密钥。

①手机上产生随机数dl,dl=MobileGenRand()。

•从dl计算中间数据pl,pl=Encode(dl)。

•使用应用端的公钥加密pl,pl/=Encrypt(pl,SerPubKey)

•发送pi'到应用端。

②应用端解密pi',pl=Decrypt(pl',SerPriKey)。

•应用端调用密码机生成随机数d2,d2=HSMGenRand()

•根据d2和pi计算中间数据p2,p2=Encode(d2,pi)。

•p2使用密码服务中心的公钥加密,p2'=Encrypt(p2,TDSerPubKey)

•发送p2'到密码服务中心。

③密码服务中心解密p2',p2=Decrypt(p2',TDSerPriKey)

密码服务中心调用密码机生成随机数d3,d3=HSMGenRand()

根据d3和p2计算得到用户公钥,UserPubKey=GenPubKey(d3,p2)。

④移动端、应用端、密码服务中心分别保存dl、d2、d3。

2)手机端密钥因子保护的方法:移动端的密钥因子通过TEE/SE、绑定设备硬件、指纹、口令等综合手段保护。

①在TEE/SE内产生一对非对称算法的设备密钥:DevKey=GenKeypairByTEE/SE()。

②使用设备密钥的公钥加密dl,dl'=Encrypt(dl,DevPubKey)。

其中TEE/SE对设备密钥的访问控制支持指纹或本地口令认证。

3)密钥使用流程:用户在移动端通过认证后,移动端、应用端、密码服务中心三方各自根据自身的密钥因子对数据进行运算,运算结果再进行二次运算形成最后结果。

①在手机上输入手机设备密钥登入命令(指纹或口令),调用手机的设备私钥,对dr进行解密,得到d1, dl=De cypt(d1',DevPriKey)。

②移动端使用dl对待处理的数据进行计算,得到中间结果sl,sl=Signl (dl,HashData)。

③发送si到应用端。

④应用端调用密码机解密d2' , d2=Decypt(d2',HSMPriKey) 。

⑤使用d2对待处理的数据进行计算,得到s2,s2=Sign2(d2,si,HashData)。

⑥密码服务中心调用密码机解密d3',d3=Decypt (d3',HSMPriKey)。

⑦使用d3对待处理的数据进行计算,得到s3, s3=Sign3(d3, s2, HashData)。

⑧si、s2、s3经过二次合成计算形成最后签名结 果S,S=SignEnd(si,s2,s3)。

综上,基于多方密钥协同技术,可以分散密钥保护的风险,大大提升黑客攻击的成本,不依赖TEE自身的密钥算法实现SM2国密算法。

868区块链学习网为您整理《基于多方密钥协同的移动钱包——TEE》仅供参考。