一種rsa解密的方法及裝置制造方法
【專利摘要】本發(fā)明提供一種RSA解密的方法及裝置,該方法包括:在RSA參數(shù)初始化的過程中,獲取對RSA私鑰對象設(shè)置的模加擾后的模數(shù)寬度,獲取以2為底、所述模數(shù)寬度為指數(shù)的冪的平方除以所述對RSA私鑰對象設(shè)置的模所得到的余數(shù)和商;存儲所述余數(shù)和商;在對加密對象進行RSA運算的過程中,通過所述余數(shù)和商獲取模加擾后的蒙哥馬利常數(shù)的平方,利用所獲取的蒙哥馬利常數(shù)的平方進行解密處理。通過本發(fā)明可以提高應(yīng)用RSA私鑰進行RSA運算的效率。
【專利說明】-種RSA解密的方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信領(lǐng)域,特別是涉及一種RSA解密的方法及裝置。
【背景技術(shù)】
[0002] RSA即RSA算法。RSA公鑰加密算法是1977年由羅納德?李維斯特(Ron Rivest)、 阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman) -起提出的。當時他 們?nèi)硕荚诼槭±砉W(xué)院工作。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的。
[0003] RSA算法是一種非對稱密碼算法,所謂非對稱,就是指該算法需要一對密鑰,使用 其中一個加密,則需要用另一個才能解密。
[0004] RSA的算法涉及三個參數(shù),N、e、d。
[0005] 其中,N是兩個大質(zhì)數(shù)p、q的積,N的二進制表示所占用的位數(shù),就是所謂的密鑰 長度。密鑰長度為32的倍數(shù),現(xiàn)在常用的是1024、1480、2048等,一般要求N的最高bit為 1,此時習(xí)慣稱相應(yīng)的RSA為1024位的RSAU480位的RSA、2048位的RSA等。
[0006] e和d是一對相關(guān)的值,e可以任意取,但要求e與(p-l)*(q-l)互質(zhì);再選擇d, 要求(e*d)mod((p-l)*(q_l)) = 1。
[0007] (N,e),(N,d)就是密鑰對。其中(N,e)為公鑰,(N,d)為私鑰。e的取值一般不 超 4 個字節(jié),經(jīng)常用的為 3(即 0x00000003),17(即 0x00000011),257(即 0x00000101), 65537(即 0x00010001)。
[0008] RSA加解密的算法完全相同,設(shè)m為明文,c為密文,貝U :m= cdmodN ;c = memodN(公 鑰加密體制中,一般用公鑰加密,私鑰解密)。
[0009] e和d可以互換使用,即:
[0010] c = mdmodN ;m = cemod N。
[0011] 蒙哥馬利(Montgomery)定理:N和R都是整數(shù),滿足gcd(N, R) = 1,即N、R的最大 公約數(shù)為1,N、R互質(zhì)。令Ν' 是滿足0<T<NR的正整數(shù),若U = TN'modR, 則(T+UN) /R 是整數(shù),且(T+UN) /R 三 TIT1 (modN)。
[0012] 根據(jù)蒙哥馬利定理,b = 232,如果所有整數(shù)都表示成b進制,并且R = bn,則滿足 gcd(N,R) = 1。若T = A*B,那么TR^OnodN)就可以根據(jù)定理計算(T+UN)/R,而公式中的 除以R,可以直接利用移位運算即可,對R取??梢灾苯尤〉臀?,避免了除法運算,提高了 速度。通常即上述的模乘為蒙哥馬利模乘,符號為麗(A,B,N) lA^B^tmodN。根據(jù)定理 0 彡(T+UN)/R < 2R。
[0013] RSA算法就是計算mdmodN,其步驟一般為:
[0014] 步驟 101、計算 Montgomery 常數(shù)平方 C = R2modN,其中 R = 2k, k = (log2N)+1,即 k是模數(shù)N的位數(shù),一般為32的倍數(shù)。
[0015] 步驟102、調(diào)用Montgomery模乘算子,將乘數(shù)從普通域轉(zhuǎn)換到Montgomery域,即1? =MM(m, C, N) = (m*R)modN,
[0016] 步驟103、通過Montgomery模乘算子計算N) = (m2*R)modN,連續(xù)調(diào)用 Montgomery模乘算子可得到中間結(jié)果t = (md*R)modN。
[0017] 步驟 104、取常數(shù) 1,調(diào)用 Montgomery 模乘算子 S = MM(t, 1,N) = mdmodN,若 S 彡 N, S = S-N,返回 S。
[0018] 在RSA的應(yīng)用中,私鑰是需要保護的,RSA的攻擊方法有SPA (Simple power analysis,簡單能量分析)、DPA (Differential Power Analysis,差分能量分析)、FA (Fault attack,錯誤攻擊)等。為了防止DPA,除需要對指數(shù)進行加擾以外,還需要對模N進行加 擾。加擾的方式是對N乘以一個32bits的隨機奇數(shù)r,此時模數(shù)變?yōu)閞N。當N不加擾時, 如用公鑰時運算,可以在預(yù)計算時直接計算蒙哥馬利常數(shù)平方C = R2modN保存,然后在每 次調(diào)用時直接用C。當N加擾后,此時新的C就需要重新計算,每次調(diào)用時的r都是隨機產(chǎn) 生的,因而C是變化的,現(xiàn)有的計算是采用大數(shù)除法計算C,效率非常低。
[0019] RSA的另一種私鑰形式是RSA_CRT (中國剩余定理),其私鑰對象為 (p, q, dp, dq, qinv),其中,dp = dmod(p-l),dq = dmod(q-l),qinv = q^modp,該方式將模數(shù) 寬度減半,如l〇24bits的RSA,其對應(yīng)的p、q分別為512bits寬度。RSA_CRT分別以(p,dp), (q,dq)進行普通的RSA計算,然后再進行組合運算。對普通的RSA來說模加擾是對N進行 加擾,對RSA_CRT來說模加擾是對p、q的進行加擾。
[0020] RSA JavaCard應(yīng)用流程如下(只考慮私鑰的情況):
[0021] RSA參數(shù)初始化:
[0022] 1、創(chuàng)建一個 RSA cipher (密文)或 signature (簽名)對象;
[0023] 2、根據(jù)模N的寬度創(chuàng)建RSAPrivateKey對象(如果為CRT模式,則是 RSAPrivateCrtKey 對象);
[0024] 3、對 RSAPrivateKey (如果為 CRT 模式,則是 RSAPrivateCrtKey)對象設(shè)置模N(如 果為CRT模式,則是p、q);
[0025] 4、對RSAPrivateKey對象設(shè)置私鑰d (如果為CRT模式,則是dp、dq);
[0026] 5、cipher 對象利用 RSAPrivateKey (如果為 CRT 模式,則是 RSAPrivateCrtKey)對 象進行初始化。
[0027] RSA 運算:
[0028] 1、獲得密文或簽名數(shù)據(jù);
[0029] 2、調(diào)用加密對象對密文進行解密或?qū)灻麛?shù)據(jù)進行hash (哈希)處理后調(diào)用加密 對象進行解密;
[0030] 3、加密對象調(diào)用native (本地)接口進行RSA運算;
[0031] 4、返回結(jié)果。
[0032] 現(xiàn)有的計算蒙哥馬利常數(shù)平方的方法是大數(shù)除法,缺點是效率低,而且對硬件的 依賴性很強。在CPU頻率3. 8M、大數(shù)算子30M (主要是調(diào)用硬件的大數(shù)算子)的卡上計算一 個512bits寬度的N的蒙哥馬利常數(shù)平方需要二十多毫秒,即使CPU速度提高到30M,對速 度的提高也不大,僅縮短1毫秒左右。
[0033] 應(yīng)用RSA私鑰進行RSA運算時,為了保護私鑰,需要對RSA模數(shù)進行加擾,加擾后 的模是變化的,每次進行RSA運算時,需要將原始輸入與蒙哥馬利常數(shù)的平方進行一次蒙 哥馬利模乘,而蒙哥馬利常數(shù)的平方,現(xiàn)有技術(shù)采用大數(shù)除大數(shù)方法來計算,效率非常低。
【發(fā)明內(nèi)容】
[0034] 本發(fā)明要解決的技術(shù)問題是提供一種RSA解密的方法及裝置,以提高應(yīng)用RSA私 鑰進行RSA運算的效率。
[0035] 為了解決上述技術(shù)問題,本發(fā)明提供了一種RSA解密的方法,包括:
[0036] 在RSA參數(shù)初始化的過程中,獲取對RSA私鑰對象設(shè)置的模加擾后的模數(shù)寬度,獲 取以2為底、所述模數(shù)寬度為指數(shù)的冪的平方除以所述對RSA私鑰對象設(shè)置的模所得到的 余數(shù)和商;
[0037] 存儲所述余數(shù)和商;
[0038] 在對加密對象進行RSA運算的過程中,通過所述余數(shù)和商獲取模加擾后的蒙哥馬 利常數(shù)的平方,利用所獲取的蒙哥馬利常數(shù)的平方進行解密處理。
[0039] 進一步地,上述方法還具有下面特點:所述獲取以2為底、所述模數(shù)寬度為指數(shù)的 冪的平方除以所述對RSA私鑰對象設(shè)置的模所得到的余數(shù)和商,通過下式實現(xiàn):
[0040] 余數(shù)Q = 4 ,商& = Α / Λ,其中,N為對RSA私鑰對象設(shè)直的|旲,加擾后 的模數(shù)寬度為k+32,札=2k+32, k為Ν的比特寬度。
[0041] 進一步地,上述方法還具有下面特點:所述通過所述余數(shù)和商獲取模加擾后的蒙 哥馬利常數(shù)的平方,包括:
[0042] 隨機產(chǎn)生一個32比特寬度奇數(shù)r ;
[0043] 通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方C3 :
[0044] C2 = K^modr,其中 C2 < r_l ;
[0045] C3 = C^N+Ci 〇
[0046] 進一步地,上述方法還具有下面特點:所述獲取以2為底、所述模數(shù)寬度為指數(shù)的 冪的平方除以所述對RSA私鑰對象設(shè)置的模所得到的余數(shù)和商,通過下式實現(xiàn):
[0047] 余數(shù)(、=< mod 廠,商 = < / /),
[0048] 余數(shù)C9l = mod <:/,商= % / ?/,
[0049] 其中,加擾后的模數(shù)寬度為k+32,Ri = 2k+32,p、q是對RSA私鑰對象設(shè)置的模,k為 對RSA私鑰對象設(shè)置的模p的比特寬度。
[0050] 進一步地,上述方法還具有下面特點:通過所述余數(shù)和商獲取模加擾后的蒙哥馬 利常數(shù)的平方,包括:
[0051] 隨機產(chǎn)生一個32比特寬度奇數(shù)rp ;
[0052] 通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方Cp3 :
[0053] Cp2 = Kplmodrp,其中 Cp2 彡 rp_l ;
[0054] Cp3 = Cp2*p+Cpl ;
[0055] 隨機產(chǎn)生一個32比特寬度奇數(shù)rq ;
[0056] 通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方Cq3 :
[0057] Cq2 = K^modiv 其中 Cq2 彡 rq-l ;
[0058] Cq3 = Cq2*q+Cql〇
[0059] 為了解決上述問題,本發(fā)明還提供了一種RSA解密的裝置,其中,包括:
[0060] 獲取模塊,用于在RSA參數(shù)初始化的過程中,獲取對RSA私鑰對象設(shè)置的模加擾后 的模數(shù)寬度,獲取以2為底、所述模數(shù)寬度為指數(shù)的冪的平方除以所述對RSA私鑰對象設(shè)置 的模所得到的余數(shù)和商;
[0061] 存儲模塊,用于存儲所述余數(shù)和商;
[0062] 處理模塊,用于在對加密對象進行RSA運算的過程中,通過所述余數(shù)和商獲取模 加擾后的蒙哥馬利常數(shù)的平方,利用所獲取的蒙哥馬利常數(shù)的平方進行解密處理。
[0063] 進一步地,上述裝置還具有下面特點:
[0064] 所述獲取模塊,獲取以2為底、所述模數(shù)寬度為指數(shù)的冪的平方除以所述對RSA私 鑰對象設(shè)置的模所得到的余數(shù)和商,通過下式實現(xiàn):余數(shù)? =片mod.V,商&二和/T, 其中,Ν為對RSA私鑰對象設(shè)置的模,加擾后的模數(shù)寬度為k+32,札=2k+32, k為Ν的比特寬 度。
[0065] 進一步地,上述裝置還具有下面特點:
[0066] 所述處理模塊,通過所述余數(shù)和商獲取模加擾后的蒙哥馬利常數(shù)的平方,包括:隨 機產(chǎn)生一個32比特寬度奇數(shù)r ;通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方C3 :C2 = K^modr,其中 C2 < r_l ;C3 = C2*N+C1〇
[0067] 進一步地,上述裝置還具有下面特點:
[0068] 所述獲取模塊,獲取以2為底、所述模數(shù)寬度為指數(shù)的冪的平方除以所述對RSA私 鑰對象設(shè)置的模所得到的余數(shù)和商,通過下式實現(xiàn):余數(shù)=尺 :mod廠,商=/〈_: /廠, 余數(shù)Γ(;1 modg,商& =/? /g,其中,加擾后的模數(shù)寬度為k+32,札=2k+32, p、q是對 RSA私鑰對象設(shè)置的模,k為對RSA私鑰對象設(shè)置的模p的比特寬度。
[0069] 進一步地,上述裝置還具有下面特點:
[0070] 所述處理模塊,通過所述余數(shù)和商獲取模加擾后的蒙哥馬利常數(shù)的平方,包括:隨 機產(chǎn)生一個32比特寬度奇數(shù)r p,通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方Cp3 :Cp2 = Kplmodrp,其中Cp2彡rp-l,C p3 = Cp2*p+Cpl ;隨機產(chǎn)生一個32比特寬度奇數(shù)r,,通過下式獲取 模加擾后的蒙哥馬利常數(shù)的平方Cq3 :Cq2 = I^modiv其中,Cq2彡rq-l ;Cq3 = Cyq+Cf
[0071] 綜上,本發(fā)明提供一種RSA解密的方法及裝置,可以提高應(yīng)用RSA私鑰進行RSA運 算的效率。
【專利附圖】
【附圖說明】
[0072] 圖1為本發(fā)明實施例的一種RSA解密的方法的流程圖;
[0073] 圖2為本發(fā)明實施例的一種RSA解密的裝置的示意圖。
【具體實施方式】
[0074] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下文中將結(jié)合附圖對本發(fā)明 的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中 的特征可以相互任意組合。
[0075] 在實際中,一個RSA的JAVA應(yīng)用,只進行一次RSA參數(shù)初始化流程,而后可以任意 調(diào)用RSA運算。而RSA的初始化一般在應(yīng)用安裝時即完成,針對這種情況,可以在RSA參數(shù) 初始化過程中,進行一些耗時的預(yù)計算,而不會影響用戶運行RSA運算的速度。
[0076] 圖1為本發(fā)明實施例的一種RSA解密的方法的流程圖,如圖1所示,本實施例的方 法包括:
[0077] 步驟11、在RSA參數(shù)初始化的過程中,獲取對RSA私鑰對象設(shè)置的模加擾后的模數(shù) 寬度,獲取以2為底、所述寬度為指數(shù)的冪的平方除以所述對RSA私鑰對象設(shè)置的模所得到 的余數(shù)和商;
[0078] 步驟12、存儲所述余數(shù)和商;
[0079] 步驟13、在對加密對象進行RSA運算的過程中,通過所述余數(shù)和商獲取模加擾后 的蒙哥馬利常數(shù)的平方,利用所獲取的蒙哥馬利常數(shù)的平方進行解密處理。
[0080] 以下以兩個具體實施例對本發(fā)明的方法進行詳細的說明。
[0081] 實施例一、普通RSA私鑰的方案:
[0082] 對N加擾一般情況是& = N*r,其中r是一個32bits寬度的隨機奇數(shù)。此時新的 模數(shù)寬度增加了 32bits,札=2k+32, k為N的bits寬度。步驟如下:
[0083] RSA參數(shù)初始化,包括以下步驟:
[0084] 步驟 101、創(chuàng)建一個 RSA cipher 或 signature 對象;
[0085] 步驟102、根據(jù)模N的寬度創(chuàng)建RSAPrivateKey對象;
[0086] 步驟 103、對 RSAPrivateKey 對象設(shè)置模 N ;
[0087] 預(yù)計算? = /〈: mod Λ? =斤/i¥ (即Q是余數(shù),Q < N,&是商),保存余數(shù)Q 和商數(shù)I ;
[0088] 步驟104、對RSAPrivateKey對象設(shè)置私鑰d ;
[0089] 步驟105、cipher對象或signature對象利用RSAPrivateKey對象進行初始化。
[0090] RSA運算,包括以下步驟:
[0091] 步驟201、獲得密文或簽名數(shù)據(jù);
[0092] 步驟202、調(diào)用加密對象對密文進行解密或?qū)灻麛?shù)據(jù)進行hash處理后調(diào)用加密 對象進行解密;
[0093] 步驟203、加密對象調(diào)用native接口進行RSA運算:
[0094] 步驟203. 1、隨機產(chǎn)生一個32bits寬度奇數(shù)r ;
[0095] 步驟203. 2、計算C2 = Kimodr (C2 < r-1,這兒r是一個32bits寬度的數(shù),可以快 速的計算C2)
[0096] 步驟203. 3、計算C3 = 即為模加擾后的Montgomery常數(shù)的平方(證明 見后)
[0097] 步驟203. 4、將密文轉(zhuǎn)入到蒙哥馬利域,即通過蒙哥馬利模乘計算得(^ = MM(c, C3, r*N);如果為signature,則c為簽名數(shù)據(jù)進行hash運算后的值。
[0098] 步驟 203. 5、計算*= c;7 mod(/. * Λ〇 ;
[0099] 步驟 203. 6、計算 S = SimodN ;
[0100] 步驟204、返回解密(簽名)結(jié)果。
[0101] 新預(yù)算方法證明:
[0102]
[0103] 因為 C3 = C3N+Q <= (r-lRN+Q < (r-l)*N+N = r*N
[0104] 即 C3 < r*N
[0105] 所以 C, = /(: mod(,· * 。
[0106] 實施例二、RSA_CRT私鑰的方案:
[0107] 對p、q加擾一般情況是Pi = p*rp、qi = q*rq,其中,rp,rq是一個32bits寬度的 隨機奇數(shù)。此時新的模數(shù)寬度增加了 32bits,札=2k+32, k為p、q的bits寬度,即為N的 bits寬度的一半。
[0108] RSA_CRT參數(shù)初始化,包括以下步驟:
[0109] 步驟 301、創(chuàng)建一個 RSA cipher 或 signature 對象;
[0110] 步驟302、調(diào)用加密對象對密文進行解密或?qū)灻麛?shù)據(jù)進行hash處理后調(diào)用加密 對象進行解密;
[0111] 步驟 303、對 RSAPrivateCrtKey 對象設(shè)置模 p、q ;
[0112] 預(yù)計算< mod/?,^ =和//7 (即Cpl是余數(shù),Cpl < p,Kpl是商),保存余 數(shù)Cpl和商數(shù)Kpl ;
[0113] 預(yù)計算C# =./( mod ?/,=/〈;l /?/ (即 Cql 是余數(shù),Cql < q,Kql 是商),保存余數(shù) Q和商數(shù)Kql ;
[0114] 步驟 304、對 RSAPrivateCrtKey 對象設(shè)置私鑰中的 dp、dq、qinv ;
[0115] 步驟305、cipher對象或signature對象利用RSAPrivateKey對象進行初始化。
[0116] RSA_CRT運算,包括以下步驟:
[0117] 步驟401、獲得密文或簽名數(shù)據(jù);
[0118] 步驟402、調(diào)用加密對象對密文進行解密或?qū)灻麛?shù)據(jù)進行hash處理后調(diào)用加密 對象進行解密;
[0119] 步驟403、加密對象調(diào)用native接口進行RSA_CRT運算:
[0120] 步驟403. 1、對p、dp、c進行普通RSA計算:
[0121] A、隨機產(chǎn)生一個32bits寬度奇數(shù)rp ;
[0122] B、計算Cp2 = Kplmodrp(Cp2彡rp_l,這兒r p是一個32bits寬度的數(shù),可以快速的計 算 Cp2);
[0123] C、計算Cp3 = Cp2*p+Cpl,Cp3即為模p加擾后的Montgomery常數(shù)的平方(證明同普 通 RSA);
[0124] D、將密文轉(zhuǎn)入到蒙哥馬利域,即通過蒙哥馬利模乘計算得cpl =麗(c,Cp3, rp*p), 如果為signature,則c為簽名數(shù)據(jù)進行hash運算后的值。
[0125] E、計算?=eg mod(rp * /?);
[0126] F、計算 sp = splmodp。
[0127] 步驟403. 2、對q、dq、c進行普通RSA計算;
[0128] A、隨機產(chǎn)生一個32bits寬度奇數(shù)rq ;
[0129] B、計算Cq2 = KumodrJCp彡rq-l,這兒rq是一個32bits寬度的數(shù),可以快速的計 算 Cp2)
[0130] C、計算Cq3 = Cyq+C^C^即為模q加擾后的Montgomery常數(shù)的平方(證明同普 通 RSA)
[0131] D、將密文轉(zhuǎn)入到蒙哥馬利域,即通過蒙哥馬利模乘計算得cql =麗(c,Cq3, rfq), 如果為signature,則c為簽名數(shù)據(jù)進行hash運算后的值。
[0132] E、計算 s9l = m〇d(/:;、)
[0133] F、計算 sq = sqlmodq
[0134] 步驟403. 3、根據(jù)中國剩余定理得到最終結(jié)果:
[0135] s = [sq+q. (((sp_sq) · qinv)modp) ]modN。
[0136] 本發(fā)明實施例是基于JavaCard RSA私鑰應(yīng)用,包括RSA私鑰和RSA_CRT私鑰的, 提供了一種通過預(yù)計算快速計算模加擾蒙哥馬利常數(shù)平方的方法。
[0137] 圖2為本發(fā)明實施例的一種RSA解密的裝置的示意圖,如圖2所示,本實施例的裝 置包括:
[0138] 獲取模塊,用于在RSA參數(shù)初始化的過程中,獲取對RSA私鑰對象設(shè)置的模加擾后 的模數(shù)寬度,獲取以2為底、所述模數(shù)寬度為指數(shù)的冪的平方除以所述對RSA私鑰對象設(shè)置 的模所得到的余數(shù)和商;
[0139] 存儲模塊,用于存儲所述余數(shù)和商;
[0140] 處理模塊,用于在對加密對象進行RSA運算的過程中,通過所述余數(shù)和商獲取模 加擾后的蒙哥馬利常數(shù)的平方,利用所獲取的蒙哥馬利常數(shù)的平方進行解密處理。
[0141] 在一優(yōu)選實施例中,所述獲取模塊,獲取以2為底、所述模數(shù)寬度為指數(shù)的 冪的平方與所述對RSA私鑰對象設(shè)置的模N的余數(shù)Q和商&,可以通過下式實現(xiàn)的: ?二<mod_V,A二和/,,其中,N為對RSA私鑰對象設(shè)置的模,加擾后的模數(shù)寬度為 k+32,札=2k+32, k為N的比特寬度。
[0142] 在一優(yōu)選實施例中,所述處理模塊,通過所述余數(shù)q和商&獲取模加擾后的蒙哥 馬利常數(shù)的平方仏,包括:隨機產(chǎn)生一個32比特寬度奇數(shù)r ;通過下式獲取模加擾后的蒙哥 馬利常數(shù)的平方C3 :C2 = Kpodr,其中C2彡r-1 ;C3 = C3N+Q。
[0143] 在一優(yōu)選實施例中,所述獲取模塊,獲取以2為底、所述模數(shù)寬度為指數(shù)的冪的 平方與所述對RSA私鑰對象設(shè)置的模p、q的余數(shù)C pl、Cql和商Kpl、Kql,通過下式實現(xiàn)的: Cmod廠,、=化:/廠,(、=/〈: m〇d ?/,& = /? / (/,其中,加擾后的模數(shù)寬度為 k+32,札=2k+32, k為ρ的比特寬度。
[0144] 在一優(yōu)選實施例中,所述處理模塊,通過所述余數(shù)和商獲取模加擾后的蒙哥馬利 常數(shù)的平方,包括:隨機產(chǎn)生一個32比特寬度奇數(shù)rp,通過下式獲取模加擾后的蒙哥馬利 常數(shù)的平方Cp3 :Cp2 = Kplmodrp,其中Cp2彡rp-l,C p3 = Cp2*p+Cpl ;隨機產(chǎn)生一個32比特寬度 奇數(shù)通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方Cq3 = 其中,C q2彡Γ(Γ1 ; Cq3 = Cq2*q+Cql〇
[0145] 傳統(tǒng)的計算采用大數(shù)除法來進行運算,效率非常低,并且非常依賴于做大數(shù)運算 的硬件算子,本方法將大數(shù)除法移到了私鑰初始化中。本發(fā)明實施例針對具有RSA私鑰 的應(yīng)用,在私鑰初始化時,進行一次長時間(幾十個毫秒)預(yù)計算,并保存預(yù)計算后的余數(shù) q (或Cpl、Cql)和商數(shù)& (或Kpl、Kql),以后每次進行RSA運算時,用商數(shù)& (或Cpl、Cql)對隨 機數(shù)r (或Γρ、Γ(1)取模,再利用一次乘加操作即完成蒙哥馬利常數(shù)的平方的計算。本發(fā)明的 成本非常低,只需消耗最多不到600字節(jié)的E2P空間,效率非常高,在30MCPU的卡上,只需 不到1毫秒。
[0146] 本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令 相關(guān)硬件完成,所述程序可以存儲于計算機可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤 等??蛇x地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現(xiàn)。相應(yīng) 地,上述實施例中的各模塊/單元可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的 形式實現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。
[0147] 以上僅為本發(fā)明的優(yōu)選實施例,當然,本發(fā)明還可有其他多種實施例,在不背離本 發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當可根據(jù)本發(fā)明作出各種相應(yīng)的改變 和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
【權(quán)利要求】
1. 一種RSA解密的方法,包括: 在RSA參數(shù)初始化的過程中,獲取對RSA私鑰對象設(shè)置的模加擾后的模數(shù)寬度,獲取以 2為底、所述模數(shù)寬度為指數(shù)的冪的平方除以所述對RSA私鑰對象設(shè)置的模所得到的余數(shù) 和商; 存儲所述余數(shù)和商; 在對加密對象進行RSA運算的過程中,通過所述余數(shù)和商獲取模加擾后的蒙哥馬利常 數(shù)的平方,利用所獲取的蒙哥馬利常數(shù)的平方進行解密處理。
2. 如權(quán)利要求1所述的方法,其特征在于:所述獲取以2為底、所述模數(shù)寬度為指數(shù)的 冪的平方除以所述對RSA私鑰對象設(shè)置的模所得到的余數(shù)和商,通過下式實現(xiàn): 余數(shù)? = /PfmodiV,商& = </#,其中,N為對RSA私鑰對象設(shè)置的模,加擾后的 模數(shù)寬度為k+32,札=2k+32, k為N的比特寬度。
3. 如權(quán)利要求2所述的方法,其特征在于:所述通過所述余數(shù)和商獲取模加擾后的蒙 哥馬利常數(shù)的平方,包括: 隨機產(chǎn)生一個32比特寬度奇數(shù)r ; 通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方C3 : C2 = Kimodr,其中 C2 < r_l ; c3 = c2*n+c1〇
4. 如權(quán)利要求1所述的方法,其特征在于:所述獲取以2為底、所述模數(shù)寬度為指數(shù)的 冪的平方除以所述對RSA私鑰對象設(shè)置的模所得到的余數(shù)和商,通過下式實現(xiàn): 余數(shù)(.、=/f mod /,,商[片=/(//), 余數(shù)= mod g,商尤* =心丨'彳, 其中,加擾后的模數(shù)寬度為k+32, & = 2k+32, p、q是對RSA私鑰對象設(shè)置的模,k為對 RSA私鑰對象設(shè)置的模p的比特寬度。
5. 如權(quán)利要求4所述的方法,其特征在于:通過所述余數(shù)和商獲取模加擾后的蒙哥馬 利常數(shù)的平方,包括: 隨機產(chǎn)生一個32比特寬度奇數(shù)rp ; 通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方Cp3 : Cp2 = Kplmodrp,其中 Cp2 彡 rp-l ; Cp3 = Cp2*p+Cpl ; 隨機產(chǎn)生一個32比特寬度奇數(shù)rq ; 通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方Cq3 : Cq2 = Lmodiv 其中 Cq2 彡 rq-l ; Cq3 = Cq2*q+Cql〇
6. -種RSA解密的裝置,其特征在于,包括: 獲取模塊,用于在RSA參數(shù)初始化的過程中,獲取對RSA私鑰對象設(shè)置的模加擾后的模 數(shù)寬度,獲取以2為底、所述模數(shù)寬度為指數(shù)的冪的平方除以所述對RSA私鑰對象設(shè)置的模 所得到的余數(shù)和商; 存儲模塊,用于存儲所述余數(shù)和商; 處理模塊,用于在對加密對象進行RSA運算的過程中,通過所述余數(shù)和商獲取模加擾 后的蒙哥馬利常數(shù)的平方,利用所獲取的蒙哥馬利常數(shù)的平方進行解密處理。
7. 如權(quán)利要求6所述的裝置,其特征在于: 所述獲取模塊,獲取以2為底、所述模數(shù)寬度為指數(shù)的冪的平方除以所述對RSA私鑰 對象設(shè)置的模所得到的余數(shù)和商,通過下式實現(xiàn):余數(shù)A = <mod」V,商旱=片/.Y,其 中,N為對RSA私鑰對象設(shè)置的模,加擾后的模數(shù)寬度為k+32, & = 2k+32, k為N的比特寬 度。
8. 如權(quán)利要求7所述的裝置,其特征在于: 所述處理模塊,通過所述余數(shù)和商獲取模加擾后的蒙哥馬利常數(shù)的平方,包括:隨機產(chǎn) 生一個32比特寬度奇數(shù)r ;通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方C3 :C2 = Kimodr, 其中 C2 彡 r-1 ;C3 = C^N+Q。
9. 如權(quán)利要求6所述的裝置,其特征在于: 所述獲取模塊,獲取以2為底、所述模數(shù)寬度為指數(shù)的冪的平方除以所述對RSA私鑰對 象設(shè)置的模所得到的余數(shù)和商,通過下式實現(xiàn):余數(shù)C# =巧2 mod/?,商?:# //>,余數(shù) Γ = "i: mod ?/,商= % / ¢/,其中,力口擾后的模數(shù)寬度為k+32,& = 2k+32,p、q是對RSA 私鑰對象設(shè)置的模,k為對RSA私鑰對象設(shè)置的模p的比特寬度。
10. 如權(quán)利要求9所述的裝置,其特征在于: 所述處理模塊,通過所述余數(shù)和商獲取模加擾后的蒙哥馬利常數(shù)的平方,包括:隨機 產(chǎn)生一個32比特寬度奇數(shù)rp,通過下式獲取模加擾后的蒙哥馬利常數(shù)的平方Cp3 :CP2 = Kplmodrp,其中Cp2彡rp-l,C p3 = Cp2*p+Cpl ;隨機產(chǎn)生一個32比特寬度奇數(shù)r,,通過下式獲取 模加擾后的蒙哥馬利常數(shù)的平方Cq3 :Cq2 = I^modiv其中,Cq2彡rq-l ;Cq3 = Cyq+Cf
【文檔編號】H04L9/28GK104104504SQ201410350403
【公開日】2014年10月15日 申請日期:2014年7月22日 優(yōu)先權(quán)日:2014年7月22日
【發(fā)明者】周興建, 王俊 申請人:大唐微電子技術(shù)有限公司