一種針對(duì)計(jì)算資源受限裝置的密碼運(yùn)算方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息安全技術(shù)領(lǐng)域,特別是一種針對(duì)計(jì)算資源受限裝置的密碼運(yùn)算方法。
【背景技術(shù)】
[0002]在使用手機(jī)等移動(dòng)終端進(jìn)行應(yīng)用操作的過程中,常常需要進(jìn)行涉及公開密鑰密碼算法的密碼運(yùn)算,如數(shù)據(jù)加密、解密,數(shù)字簽名、簽名驗(yàn)證,這些運(yùn)算常常涉及大數(shù)運(yùn)算,以手機(jī)等移動(dòng)終端的計(jì)算能力,很難在用戶可接受的時(shí)間完成密碼運(yùn)算(通常一個(gè)操作動(dòng)作超過了 2秒才有響應(yīng),則用戶無法接受),對(duì)此,需要借助其他技術(shù)手段來解決這一問題。如果密碼運(yùn)算不涉及需要保密的敏感數(shù)據(jù),如簽名驗(yàn)證,則手機(jī)等移動(dòng)終端可以委托其他具有較強(qiáng)計(jì)算能力的系統(tǒng)(如專門的密碼運(yùn)算服務(wù)系統(tǒng))進(jìn)行相關(guān)密碼運(yùn)算。但是,如果密碼運(yùn)算涉及需要保密的敏感數(shù)據(jù),則這種委托有可能導(dǎo)致敏感數(shù)據(jù)的泄露,本發(fā)明就是要解決此問題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的是提出一種針對(duì)計(jì)算資源受限裝置的密碼運(yùn)算方法以解決計(jì)算資源受限裝置進(jìn)行復(fù)雜密碼運(yùn)算的問題。
[0004]為了實(shí)現(xiàn)本發(fā)明的目的,本發(fā)明所提出的技術(shù)方案是:一種針對(duì)計(jì)算資源受限裝置的密碼運(yùn)算方法,其特征是:
[0005]當(dāng)一個(gè)計(jì)算資源受限裝置使用一個(gè)保密數(shù)據(jù)進(jìn)行密碼運(yùn)算時(shí),密碼運(yùn)算過程按如下方式進(jìn)行:
[0006]第一步:計(jì)算資源受限裝置將從保密數(shù)據(jù)分解或?qū)С龅摩欠輸?shù)據(jù)連同非保密數(shù)據(jù)通過網(wǎng)絡(luò)分別提交到η個(gè)密碼運(yùn)算系統(tǒng),即每個(gè)密碼運(yùn)算系統(tǒng)分別得到1份從保密數(shù)據(jù)分解或?qū)С龅臄?shù)據(jù)以及同樣的非保密數(shù)據(jù);
[0007]第二步:每個(gè)密碼運(yùn)算系統(tǒng)利用接收到的從保密數(shù)據(jù)分解或?qū)С龅臄?shù)據(jù)和非保密數(shù)據(jù)進(jìn)行密碼運(yùn)算,然后將密碼運(yùn)算的結(jié)果返回到計(jì)算資源受限裝置;
[0008]第三步:計(jì)算資源受限裝置利用η個(gè)密碼運(yùn)算系統(tǒng)返回的密碼運(yùn)算結(jié)果計(jì)算得到最終的密碼運(yùn)算結(jié)果;
[0009]所述計(jì)算資源受限裝置是指不能在用戶期望的時(shí)間內(nèi)完成密碼運(yùn)算的計(jì)算裝置;所述密碼運(yùn)算系統(tǒng)是幫助計(jì)算資源受限裝置進(jìn)行密碼運(yùn)算的系統(tǒng)。
[0010]所述方法中使用保密數(shù)據(jù)進(jìn)行密碼運(yùn)算所用的計(jì)算公式具有如下特點(diǎn):
[0011]使用一個(gè)保密數(shù)據(jù)同非保密數(shù)據(jù)進(jìn)行密碼運(yùn)算后得到結(jié)果(數(shù)據(jù))是使用從此保密數(shù)據(jù)分解或?qū)С龅摩欠輸?shù)據(jù)分別同非保密數(shù)據(jù)進(jìn)行密碼運(yùn)算后得到的結(jié)果(數(shù)據(jù))的組入口 ο
[0012]從以上描述可以看到,除非一個(gè)攻擊者同時(shí)從η個(gè)密碼運(yùn)算系統(tǒng)獲取到η份保密數(shù)據(jù),否則攻擊者無法獲得用戶的保密數(shù)據(jù)(如私鑰),從η個(gè)密碼運(yùn)算系統(tǒng)同時(shí)獲取到η份保密數(shù)據(jù)是很困難的,特別是當(dāng)這η個(gè)密碼運(yùn)算系統(tǒng)位于不同位置、屬于不同運(yùn)行者時(shí),因此,基于本發(fā)明的方法,一個(gè)計(jì)算資源受限裝置可安全使用其他計(jì)算設(shè)施進(jìn)行密碼運(yùn)算。
【附圖說明】
[0013]無。
【具體實(shí)施方式】
[0014]下面結(jié)合實(shí)施例對(duì)本發(fā)明的具體實(shí)施進(jìn)行描述。
[0015]本發(fā)明的實(shí)施不必針對(duì)一個(gè)密碼運(yùn)算(如加密、解密,簽名、簽名驗(yàn)證)的完整計(jì)算過程,只需針對(duì)整個(gè)計(jì)算過程中涉密的、計(jì)算量大的部分,不涉密的、計(jì)算量不大的部分,不需要實(shí)施本發(fā)明的方法。下面舉例就如何對(duì)涉及保密數(shù)據(jù)的密碼運(yùn)算中,保密數(shù)據(jù)的分解或?qū)С?、密碼運(yùn)算結(jié)果的整合加以說明。
[0016]案例1。在RSA密碼算法的數(shù)據(jù)加密計(jì)算過程中需要計(jì)算nf mod t,這里m是待加密的保密數(shù)據(jù),e是解密或簽名用戶的、需要保密的私鑰,mod t是計(jì)算模t余數(shù)算子,t是正整數(shù),0<m〈t,t足夠大以保障安全性。由于e和m都很大,因此,計(jì)算nf需要消耗很多的計(jì)算資源,在手機(jī)等計(jì)算能力有限的移動(dòng)終端上進(jìn)行計(jì)算所花費(fèi)的時(shí)間通常超出了人們能夠接受的限度,故可以按如下方式進(jìn)行計(jì)算:
[0017]選取叫,m2,…,mn,使得m = 1^*1112*...*mn mod t,將叫、e 和 t, m2、e 和 t,…,mn、e和t分別提交給n個(gè)密碼運(yùn)算系統(tǒng)計(jì)算獲得nijexp (e)mod t, m2exp (e)mod t,…,mn exp (e)mod t (這里叫exp (e)表示叫的e次冪),然后再在手機(jī)等移動(dòng)終端上計(jì)算m e mod t =(m^xp (e)mod t) * (m2exp (e)mod t)*."*(mn exp (e) mod t)mod t。
[0018]m2,...,mn可按如下方式獲得:
[0019]隨機(jī)選取與t互素的n-1個(gè)正整數(shù)叫,m2,..., mn丨,得到mn= m*j) ^odt,這里(m!*!!!;;*…*mn !)堤?*!!!;;*…*!!^ i的模t乘法逆。m m2,…,mn可以每次計(jì)算時(shí)臨時(shí)生成(每次不同),或者nii,m2,…,mn i生成后多次使用超過一定次數(shù)或時(shí)間后更新,而m?需要每次根據(jù)m計(jì)算得到。
[0020]在實(shí)際應(yīng)用中η = 2即可。
[0021]案例1可推廣到更一般的情形。
[0022]若密碼運(yùn)算的所有保密數(shù)據(jù)是一個(gè)乘法或加法么半群(monoid),且當(dāng)保密數(shù)據(jù)表示為么半群中η個(gè)元素的乘積或加法和時(shí),針對(duì)保密數(shù)據(jù)的密碼運(yùn)算結(jié)果是分別針對(duì)η個(gè)元素的密碼運(yùn)算結(jié)果的組合,則從一個(gè)保密數(shù)據(jù)m分解或?qū)С靓欠輸?shù)據(jù)叫,!^…,mn的一種方法如下:
[0023]在保密數(shù)據(jù)幺半群的所有可逆元素構(gòu)成的子群中任選n-Ι個(gè)元素叫,!!^…,mn ^若幺半群是乘法么半群,則 mn=J \ 其中J ^ mj的乘法逆;若幺半群是加法幺半群,貝1J mn= m-(m 1+m2+---+mn !),其中-(11^+1112+-+1? !)是m1+m2+--*+mn丨的加法逆。
[0024]這里么半群的可逆元素構(gòu)成的子群的階要足夠大以保證計(jì)算安全性,即攻擊者無法在密碼學(xué)可接受的時(shí)間范圍內(nèi)通過窮舉法破解出nk,m2,…,mn 1<3
[0025]案例2。在RSA密碼算法的數(shù)據(jù)解密或數(shù)字簽名計(jì)算過程中需要計(jì)算md mod t,這里m是待解密的數(shù)據(jù)或待簽名的數(shù)據(jù)(消息散列值)(這里m本身無需保密),d是解密或簽名用戶的需要保密的私鑰,mod t是計(jì)算模t余數(shù)算子,t是正整數(shù),0 ( m〈t,t足夠大以保障安全性。由于d和m都很大,因此,計(jì)算md需要消耗很多的計(jì)算資源,在手機(jī)等計(jì)算能力有限的移動(dòng)終端上進(jìn)行計(jì)算所花費(fèi)的時(shí)間通常超出了人們能夠接受的限度,故可以按如下方式進(jìn)行計(jì)算:
[0026]任選取正整數(shù)山,d2,…,dn,使得d =山+(12+...+dn,將d^m和t, d2、m和t,…,dn、m和t分別提交給η個(gè)密碼運(yùn)算系統(tǒng)計(jì)算獲得m exp (d^mod t, m exp (d2)mod t,…,m exp (dn)mod t (這里m exp(di)表示m的山次冪),然后再在手機(jī)等移動(dòng)終端上計(jì)算md mod t = (mexp (山)mod t)*(m exp (d2) modexp (dn) mod t)mod t。
[0027]di, d2,…,屯可按如下方式獲得:
[0028]隨機(jī)選n-Ι 個(gè)正整數(shù) du d2,…,dn:,并使得 dn= d_(d !+(!;;+…+dn》>(),則 du d2,...,dn即為所求。
[0029]山,d2,…,dn可以每次計(jì)算時(shí)臨時(shí)生成(每次不同),或者生成后多次使用超過一定次數(shù)或時(shí)間后更新。
[0030]在實(shí)際應(yīng)用中η = 2即可。
[0031]案例3。在橢圓曲線數(shù)字簽名算法中(Elliptic Curve Digital SignatureAlgorithm),簽名時(shí)會(huì)涉及到計(jì)算kG,其中k是一個(gè)需要保密的大正整數(shù)(隨機(jī)數(shù)),G是橢圓曲線上的一點(diǎn)(基點(diǎn),base point)。由于k很大,因此,計(jì)算kG需要消耗很多的計(jì)算資源,在手機(jī)等計(jì)算能力有限的移動(dòng)終端上進(jìn)行計(jì)算所花費(fèi)的時(shí)間通常超出了人們能夠接受的限度,故可以按如下方式進(jìn)行計(jì)算:
[0032]選取k1; k2,...,kn,使得 k = W...+kn,將 k^P G, k 2和 G,...,k n和 G 分別提交給η個(gè)密碼運(yùn)算系統(tǒng)計(jì)算獲得kA k2G,…,knG,然后再在手機(jī)等移動(dòng)終端上計(jì)算kG=kiG+k2G+-+knG,或者將kf,k2G,…,knG提交給第n+1個(gè)密碼運(yùn)算系統(tǒng)計(jì)算得到kG =k1G+k2G+...+knG0
[0033]k1; k2,…,1可按如下方式獲得:
[0034]任意給定n-Ι個(gè)整數(shù)k1; k2,…,kn丨,得到kn= k_(k …+kn:)。(雖然k通常是取正整數(shù),但這里匕k2,…,1不必都是正整數(shù))
[0035]k1; k2,…,kn每次計(jì)算時(shí)臨時(shí)生成(每次不同),或者k i,k2,…,kn i生成后多次使用超過一定次數(shù)或時(shí)間后更新,而kn 1每次根據(jù)k計(jì)算。
[0036]在實(shí)際應(yīng)用中η = 2即可。
[0037]案例4。在橢圓曲線集成加密方案中(Elliptic Curve Integrated Encrypt1nScheme),加密時(shí)會(huì)涉及到計(jì)算rG和rKB,其中r是一個(gè)需要保密的大整數(shù)(隨機(jī)數(shù)),G是橢圓曲線上的一點(diǎn)(基點(diǎn),base point),&是解密方的公鑰(K B= sG,s是解密方的私鑰)。這時(shí)密碼運(yùn)算的分解、整合方案同案例3。
[0038]案例5?;陔p線性映射(如Wei Pairing)的基于標(biāo)識(shí)的加密(Identity BasedEncrypt1n,