一种针对计算资源受限装置的密码运算方法
【技术领域】
[0001]本发明属于信息安全技术领域,特别是一种针对计算资源受限装置的密码运算方法。
【背景技术】
[0002]在使用手机等移动终端进行应用操作的过程中,常常需要进行涉及公开密钥密码算法的密码运算,如数据加密、解密,数字签名、签名验证,这些运算常常涉及大数运算,以手机等移动终端的计算能力,很难在用户可接受的时间完成密码运算(通常一个操作动作超过了 2秒才有响应,则用户无法接受),对此,需要借助其他技术手段来解决这一问题。如果密码运算不涉及需要保密的敏感数据,如签名验证,则手机等移动终端可以委托其他具有较强计算能力的系统(如专门的密码运算服务系统)进行相关密码运算。但是,如果密码运算涉及需要保密的敏感数据,则这种委托有可能导致敏感数据的泄露,本发明就是要解决此问题。
【发明内容】
[0003]本发明的目的是提出一种针对计算资源受限装置的密码运算方法以解决计算资源受限装置进行复杂密码运算的问题。
[0004]为了实现本发明的目的,本发明所提出的技术方案是:一种针对计算资源受限装置的密码运算方法,其特征是:
[0005]当一个计算资源受限装置使用一个保密数据进行密码运算时,密码运算过程按如下方式进行:
[0006]第一步:计算资源受限装置将从保密数据分解或导出的η份数据连同非保密数据通过网络分别提交到η个密码运算系统,即每个密码运算系统分别得到1份从保密数据分解或导出的数据以及同样的非保密数据;
[0007]第二步:每个密码运算系统利用接收到的从保密数据分解或导出的数据和非保密数据进行密码运算,然后将密码运算的结果返回到计算资源受限装置;
[0008]第三步:计算资源受限装置利用η个密码运算系统返回的密码运算结果计算得到最终的密码运算结果;
[0009]所述计算资源受限装置是指不能在用户期望的时间内完成密码运算的计算装置;所述密码运算系统是帮助计算资源受限装置进行密码运算的系统。
[0010]所述方法中使用保密数据进行密码运算所用的计算公式具有如下特点:
[0011]使用一个保密数据同非保密数据进行密码运算后得到结果(数据)是使用从此保密数据分解或导出的η份数据分别同非保密数据进行密码运算后得到的结果(数据)的组入口 ο
[0012]从以上描述可以看到,除非一个攻击者同时从η个密码运算系统获取到η份保密数据,否则攻击者无法获得用户的保密数据(如私钥),从η个密码运算系统同时获取到η份保密数据是很困难的,特别是当这η个密码运算系统位于不同位置、属于不同运行者时,因此,基于本发明的方法,一个计算资源受限装置可安全使用其他计算设施进行密码运算。
【附图说明】
[0013]无。
【具体实施方式】
[0014]下面结合实施例对本发明的具体实施进行描述。
[0015]本发明的实施不必针对一个密码运算(如加密、解密,签名、签名验证)的完整计算过程,只需针对整个计算过程中涉密的、计算量大的部分,不涉密的、计算量不大的部分,不需要实施本发明的方法。下面举例就如何对涉及保密数据的密码运算中,保密数据的分解或导出、密码运算结果的整合加以说明。
[0016]案例1。在RSA密码算法的数据加密计算过程中需要计算nf mod t,这里m是待加密的保密数据,e是解密或签名用户的、需要保密的私钥,mod t是计算模t余数算子,t是正整数,0<m〈t,t足够大以保障安全性。由于e和m都很大,因此,计算nf需要消耗很多的计算资源,在手机等计算能力有限的移动终端上进行计算所花费的时间通常超出了人们能够接受的限度,故可以按如下方式进行计算:
[0017]选取叫,m2,…,mn,使得m = 1^*1112*...*mn mod t,将叫、e 和 t, m2、e 和 t,…,mn、e和t分别提交给n个密码运算系统计算获得nijexp (e)mod t, m2exp (e)mod t,…,mn exp (e)mod t (这里叫exp (e)表示叫的e次幂),然后再在手机等移动终端上计算m e mod t =(m^xp (e)mod t) * (m2exp (e)mod t)*."*(mn exp (e) mod t)mod t。
[0018]m2,...,mn可按如下方式获得:
[0019]随机选取与t互素的n-1个正整数叫,m2,..., mn丨,得到mn= m*j) ^odt,这里(m!*!!!;;*…*mn !)堤?*!!!;;*…*!!^ i的模t乘法逆。m m2,…,mn可以每次计算时临时生成(每次不同),或者nii,m2,…,mn i生成后多次使用超过一定次数或时间后更新,而m?需要每次根据m计算得到。
[0020]在实际应用中η = 2即可。
[0021]案例1可推广到更一般的情形。
[0022]若密码运算的所有保密数据是一个乘法或加法么半群(monoid),且当保密数据表示为么半群中η个元素的乘积或加法和时,针对保密数据的密码运算结果是分别针对η个元素的密码运算结果的组合,则从一个保密数据m分解或导出η份数据叫,!^…,mn的一种方法如下:
[0023]在保密数据幺半群的所有可逆元素构成的子群中任选n-Ι个元素叫,!!^…,mn ^若幺半群是乘法么半群,则 mn=J \ 其中J ^ mj的乘法逆;若幺半群是加法幺半群,贝1J mn= m-(m 1+m2+---+mn !),其中-(11^+1112+-+1? !)是m1+m2+--*+mn丨的加法逆。
[0024]这里么半群的可逆元素构成的子群的阶要足够大以保证计算安全性,即攻击者无法在密码学可接受的时间范围内通过穷举法破解出nk,m2,…,mn 1<3
[0025]案例2。在RSA密码算法的数据解密或数字签名计算过程中需要计算md mod t,这里m是待解密的数据或待签名的数据(消息散列值)(这里m本身无需保密),d是解密或签名用户的需要保密的私钥,mod t是计算模t余数算子,t是正整数,0 ( m〈t,t足够大以保障安全性。由于d和m都很大,因此,计算md需要消耗很多的计算资源,在手机等计算能力有限的移动终端上进行计算所花费的时间通常超出了人们能够接受的限度,故可以按如下方式进行计算:
[0026]任选取正整数山,d2,…,dn,使得d =山+(12+...+dn,将d^m和t, d2、m和t,…,dn、m和t分别提交给η个密码运算系统计算获得m exp (d^mod t, m exp (d2)mod t,…,m exp (dn)mod t (这里m exp(di)表示m的山次幂),然后再在手机等移动终端上计算md mod t = (mexp (山)mod t)*(m exp (d2) modexp (dn) mod t)mod t。
[0027]di, d2,…,屯可按如下方式获得:
[0028]随机选n-Ι 个正整数 du d2,…,dn:,并使得 dn= d_(d !+(!;;+…+dn》>(),则 du d2,...,dn即为所求。
[0029]山,d2,…,dn可以每次计算时临时生成(每次不同),或者生成后多次使用超过一定次数或时间后更新。
[0030]在实际应用中η = 2即可。
[0031]案例3。在椭圆曲线数字签名算法中(Elliptic Curve Digital SignatureAlgorithm),签名时会涉及到计算kG,其中k是一个需要保密的大正整数(随机数),G是椭圆曲线上的一点(基点,base point)。由于k很大,因此,计算kG需要消耗很多的计算资源,在手机等计算能力有限的移动终端上进行计算所花费的时间通常超出了人们能够接受的限度,故可以按如下方式进行计算:
[0032]选取k1; k2,...,kn,使得 k = W...+kn,将 k^P G, k 2和 G,...,k n和 G 分别提交给η个密码运算系统计算获得kA k2G,…,knG,然后再在手机等移动终端上计算kG=kiG+k2G+-+knG,或者将kf,k2G,…,knG提交给第n+1个密码运算系统计算得到kG =k1G+k2G+...+knG0
[0033]k1; k2,…,1可按如下方式获得:
[0034]任意给定n-Ι个整数k1; k2,…,kn丨,得到kn= k_(k …+kn:)。(虽然k通常是取正整数,但这里匕k2,…,1不必都是正整数)
[0035]k1; k2,…,kn每次计算时临时生成(每次不同),或者k i,k2,…,kn i生成后多次使用超过一定次数或时间后更新,而kn 1每次根据k计算。
[0036]在实际应用中η = 2即可。
[0037]案例4。在椭圆曲线集成加密方案中(Elliptic Curve Integrated Encrypt1nScheme),加密时会涉及到计算rG和rKB,其中r是一个需要保密的大整数(随机数),G是椭圆曲线上的一点(基点,base point),&是解密方的公钥(K B= sG,s是解密方的私钥)。这时密码运算的分解、整合方案同案例3。
[0038]案例5。基于双线性映射(如Wei Pairing)的基于标识的加密(Identity BasedEncrypt1n,