技术简介:
本专利针对传统RSA解密中蒙哥马利常数平方计算效率低的问题,提出在私钥初始化阶段预计算并存储余数与商数,通过简单乘加操作替代大数除法,显著提升运算速度。该方法将耗时的除法运算转移至初始化阶段,后续运算仅需随机数取模和乘加,降低硬件依赖,节省存储空间,适用于资源受限的嵌入式设备。
关键词:RSA解密优化,蒙哥马利常数,预计算技术
一种rsa解密的方法及装置制造方法
【专利摘要】本发明提供一种RSA解密的方法及装置,该方法包括:在RSA参数初始化的过程中,获取对RSA私钥对象设置的模加扰后的模数宽度,获取以2为底、所述模数宽度为指数的幂的平方除以所述对RSA私钥对象设置的模所得到的余数和商;存储所述余数和商;在对加密对象进行RSA运算的过程中,通过所述余数和商获取模加扰后的蒙哥马利常数的平方,利用所获取的蒙哥马利常数的平方进行解密处理。通过本发明可以提高应用RSA私钥进行RSA运算的效率。
【专利说明】-种RSA解密的方法及装置
【技术领域】
[0001] 本发明涉及通信领域,特别是涉及一种RSA解密的方法及装置。
【背景技术】
[0002] RSA即RSA算法。RSA公钥加密算法是1977年由罗纳德?李维斯特(Ron Rivest)、 阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman) -起提出的。当时他 们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
[0003] RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用 其中一个加密,则需要用另一个才能解密。
[0004] RSA的算法涉及三个参数,N、e、d。
[0005] 其中,N是两个大质数p、q的积,N的二进制表示所占用的位数,就是所谓的密钥 长度。密钥长度为32的倍数,现在常用的是1024、1480、2048等,一般要求N的最高bit为 1,此时习惯称相应的RSA为1024位的RSAU480位的RSA、2048位的RSA等。
[0006] e和d是一对相关的值,e可以任意取,但要求e与(p-l)*(q-l)互质;再选择d, 要求(e*d)mod((p-l)*(q_l)) = 1。
[0007] (N,e),(N,d)就是密钥对。其中(N,e)为公钥,(N,d)为私钥。e的取值一般不 超 4 个字节,经常用的为 3(即 0x00000003),17(即 0x00000011),257(即 0x00000101), 65537(即 0x00010001)。
[0008] RSA加解密的算法完全相同,设m为明文,c为密文,贝U :m= cdmodN ;c = memodN(公 钥加密体制中,一般用公钥加密,私钥解密)。
[0009] e和d可以互换使用,即:
[0010] c = mdmodN ;m = cemod N。
[0011] 蒙哥马利(Montgomery)定理:N和R都是整数,满足gcd(N, R) = 1,即N、R的最大 公约数为1,N、R互质。令Ν' 是满足0<T<NR的正整数,若U = TN'modR, 则(T+UN) /R 是整数,且(T+UN) /R 三 TIT1 (modN)。
[0012] 根据蒙哥马利定理,b = 232,如果所有整数都表示成b进制,并且R = bn,则满足 gcd(N,R) = 1。若T = A*B,那么TR^OnodN)就可以根据定理计算(T+UN)/R,而公式中的 除以R,可以直接利用移位运算即可,对R取模可以直接取低位,避免了除法运算,提高了 速度。通常即上述的模乘为蒙哥马利模乘,符号为丽(A,B,N) lA^B^tmodN。根据定理 0 彡(T+UN)/R < 2R。
[0013] RSA算法就是计算mdmodN,其步骤一般为:
[0014] 步骤 101、计算 Montgomery 常数平方 C = R2modN,其中 R = 2k, k = (log2N)+1,即 k是模数N的位数,一般为32的倍数。
[0015] 步骤102、调用Montgomery模乘算子,将乘数从普通域转换到Montgomery域,即1? =MM(m, C, N) = (m*R)modN,
[0016] 步骤103、通过Montgomery模乘算子计算N) = (m2*R)modN,连续调用 Montgomery模乘算子可得到中间结果t = (md*R)modN。
[0017] 步骤 104、取常数 1,调用 Montgomery 模乘算子 S = MM(t, 1,N) = mdmodN,若 S 彡 N, S = S-N,返回 S。
[0018] 在RSA的应用中,私钥是需要保护的,RSA的攻击方法有SPA (Simple power analysis,简单能量分析)、DPA (Differential Power Analysis,差分能量分析)、FA (Fault attack,错误攻击)等。为了防止DPA,除需要对指数进行加扰以外,还需要对模N进行加 扰。加扰的方式是对N乘以一个32bits的随机奇数r,此时模数变为rN。当N不加扰时, 如用公钥时运算,可以在预计算时直接计算蒙哥马利常数平方C = R2modN保存,然后在每 次调用时直接用C。当N加扰后,此时新的C就需要重新计算,每次调用时的r都是随机产 生的,因而C是变化的,现有的计算是采用大数除法计算C,效率非常低。
[0019] RSA的另一种私钥形式是RSA_CRT (中国剩余定理),其私钥对象为 (p, q, dp, dq, qinv),其中,dp = dmod(p-l),dq = dmod(q-l),qinv = q^modp,该方式将模数 宽度减半,如l〇24bits的RSA,其对应的p、q分别为512bits宽度。RSA_CRT分别以(p,dp), (q,dq)进行普通的RSA计算,然后再进行组合运算。对普通的RSA来说模加扰是对N进行 加扰,对RSA_CRT来说模加扰是对p、q的进行加扰。
[0020] RSA JavaCard应用流程如下(只考虑私钥的情况):
[0021] RSA参数初始化:
[0022] 1、创建一个 RSA cipher (密文)或 signature (签名)对象;
[0023] 2、根据模N的宽度创建RSAPrivateKey对象(如果为CRT模式,则是 RSAPrivateCrtKey 对象);
[0024] 3、对 RSAPrivateKey (如果为 CRT 模式,则是 RSAPrivateCrtKey)对象设置模N(如 果为CRT模式,则是p、q);
[0025] 4、对RSAPrivateKey对象设置私钥d (如果为CRT模式,则是dp、dq);
[0026] 5、cipher 对象利用 RSAPrivateKey (如果为 CRT 模式,则是 RSAPrivateCrtKey)对 象进行初始化。
[0027] RSA 运算:
[0028] 1、获得密文或签名数据;
[0029] 2、调用加密对象对密文进行解密或对签名数据进行hash (哈希)处理后调用加密 对象进行解密;
[0030] 3、加密对象调用native (本地)接口进行RSA运算;
[0031] 4、返回结果。
[0032] 现有的计算蒙哥马利常数平方的方法是大数除法,缺点是效率低,而且对硬件的 依赖性很强。在CPU频率3. 8M、大数算子30M (主要是调用硬件的大数算子)的卡上计算一 个512bits宽度的N的蒙哥马利常数平方需要二十多毫秒,即使CPU速度提高到30M,对速 度的提高也不大,仅缩短1毫秒左右。
[0033] 应用RSA私钥进行RSA运算时,为了保护私钥,需要对RSA模数进行加扰,加扰后 的模是变化的,每次进行RSA运算时,需要将原始输入与蒙哥马利常数的平方进行一次蒙 哥马利模乘,而蒙哥马利常数的平方,现有技术采用大数除大数方法来计算,效率非常低。
【发明内容】
[0034] 本发明要解决的技术问题是提供一种RSA解密的方法及装置,以提高应用RSA私 钥进行RSA运算的效率。
[0035] 为了解决上述技术问题,本发明提供了一种RSA解密的方法,包括:
[0036] 在RSA参数初始化的过程中,获取对RSA私钥对象设置的模加扰后的模数宽度,获 取以2为底、所述模数宽度为指数的幂的平方除以所述对RSA私钥对象设置的模所得到的 余数和商;
[0037] 存储所述余数和商;
[0038] 在对加密对象进行RSA运算的过程中,通过所述余数和商获取模加扰后的蒙哥马 利常数的平方,利用所获取的蒙哥马利常数的平方进行解密处理。
[0039] 进一步地,上述方法还具有下面特点:所述获取以2为底、所述模数宽度为指数的 幂的平方除以所述对RSA私钥对象设置的模所得到的余数和商,通过下式实现:
[0040] 余数Q = 4 ,商& = Α / Λ,其中,N为对RSA私钥对象设直的|旲,加扰后 的模数宽度为k+32,札=2k+32, k为Ν的比特宽度。
[0041] 进一步地,上述方法还具有下面特点:所述通过所述余数和商获取模加扰后的蒙 哥马利常数的平方,包括:
[0042] 随机产生一个32比特宽度奇数r ;
[0043] 通过下式获取模加扰后的蒙哥马利常数的平方C3 :
[0044] C2 = K^modr,其中 C2 < r_l ;
[0045] C3 = C^N+Ci 〇
[0046] 进一步地,上述方法还具有下面特点:所述获取以2为底、所述模数宽度为指数的 幂的平方除以所述对RSA私钥对象设置的模所得到的余数和商,通过下式实现:
[0047] 余数(、=< mod 厂,商 = < / /),
[0048] 余数C9l = mod <:/,商= % / ?/,
[0049] 其中,加扰后的模数宽度为k+32,Ri = 2k+32,p、q是对RSA私钥对象设置的模,k为 对RSA私钥对象设置的模p的比特宽度。
[0050] 进一步地,上述方法还具有下面特点:通过所述余数和商获取模加扰后的蒙哥马 利常数的平方,包括:
[0051] 随机产生一个32比特宽度奇数rp ;
[0052] 通过下式获取模加扰后的蒙哥马利常数的平方Cp3 :
[0053] Cp2 = Kplmodrp,其中 Cp2 彡 rp_l ;
[0054] Cp3 = Cp2*p+Cpl ;
[0055] 随机产生一个32比特宽度奇数rq ;
[0056] 通过下式获取模加扰后的蒙哥马利常数的平方Cq3 :
[0057] Cq2 = K^modiv 其中 Cq2 彡 rq-l ;
[0058] Cq3 = Cq2*q+Cql〇
[0059] 为了解决上述问题,本发明还提供了一种RSA解密的装置,其中,包括:
[0060] 获取模块,用于在RSA参数初始化的过程中,获取对RSA私钥对象设置的模加扰后 的模数宽度,获取以2为底、所述模数宽度为指数的幂的平方除以所述对RSA私钥对象设置 的模所得到的余数和商;
[0061] 存储模块,用于存储所述余数和商;
[0062] 处理模块,用于在对加密对象进行RSA运算的过程中,通过所述余数和商获取模 加扰后的蒙哥马利常数的平方,利用所获取的蒙哥马利常数的平方进行解密处理。
[0063] 进一步地,上述装置还具有下面特点:
[0064] 所述获取模块,获取以2为底、所述模数宽度为指数的幂的平方除以所述对RSA私 钥对象设置的模所得到的余数和商,通过下式实现:余数? =片mod.V,商&二和/T, 其中,Ν为对RSA私钥对象设置的模,加扰后的模数宽度为k+32,札=2k+32, k为Ν的比特宽 度。
[0065] 进一步地,上述装置还具有下面特点:
[0066] 所述处理模块,通过所述余数和商获取模加扰后的蒙哥马利常数的平方,包括:随 机产生一个32比特宽度奇数r ;通过下式获取模加扰后的蒙哥马利常数的平方C3 :C2 = K^modr,其中 C2 < r_l ;C3 = C2*N+C1〇
[0067] 进一步地,上述装置还具有下面特点:
[0068] 所述获取模块,获取以2为底、所述模数宽度为指数的幂的平方除以所述对RSA私 钥对象设置的模所得到的余数和商,通过下式实现:余数=尺 :mod厂,商=/〈_: /厂, 余数Γ(;1 modg,商& =/? /g,其中,加扰后的模数宽度为k+32,札=2k+32, p、q是对 RSA私钥对象设置的模,k为对RSA私钥对象设置的模p的比特宽度。
[0069] 进一步地,上述装置还具有下面特点:
[0070] 所述处理模块,通过所述余数和商获取模加扰后的蒙哥马利常数的平方,包括:随 机产生一个32比特宽度奇数r p,通过下式获取模加扰后的蒙哥马利常数的平方Cp3 :Cp2 = Kplmodrp,其中Cp2彡rp-l,C p3 = Cp2*p+Cpl ;随机产生一个32比特宽度奇数r,,通过下式获取 模加扰后的蒙哥马利常数的平方Cq3 :Cq2 = I^modiv其中,Cq2彡rq-l ;Cq3 = Cyq+Cf
[0071] 综上,本发明提供一种RSA解密的方法及装置,可以提高应用RSA私钥进行RSA运 算的效率。
【专利附图】
【附图说明】
[0072] 图1为本发明实施例的一种RSA解密的方法的流程图;
[0073] 图2为本发明实施例的一种RSA解密的装置的示意图。
【具体实施方式】
[0074] 为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明 的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中 的特征可以相互任意组合。
[0075] 在实际中,一个RSA的JAVA应用,只进行一次RSA参数初始化流程,而后可以任意 调用RSA运算。而RSA的初始化一般在应用安装时即完成,针对这种情况,可以在RSA参数 初始化过程中,进行一些耗时的预计算,而不会影响用户运行RSA运算的速度。
[0076] 图1为本发明实施例的一种RSA解密的方法的流程图,如图1所示,本实施例的方 法包括:
[0077] 步骤11、在RSA参数初始化的过程中,获取对RSA私钥对象设置的模加扰后的模数 宽度,获取以2为底、所述宽度为指数的幂的平方除以所述对RSA私钥对象设置的模所得到 的余数和商;
[0078] 步骤12、存储所述余数和商;
[0079] 步骤13、在对加密对象进行RSA运算的过程中,通过所述余数和商获取模加扰后 的蒙哥马利常数的平方,利用所获取的蒙哥马利常数的平方进行解密处理。
[0080] 以下以两个具体实施例对本发明的方法进行详细的说明。
[0081] 实施例一、普通RSA私钥的方案:
[0082] 对N加扰一般情况是& = N*r,其中r是一个32bits宽度的随机奇数。此时新的 模数宽度增加了 32bits,札=2k+32, k为N的bits宽度。步骤如下:
[0083] RSA参数初始化,包括以下步骤:
[0084] 步骤 101、创建一个 RSA cipher 或 signature 对象;
[0085] 步骤102、根据模N的宽度创建RSAPrivateKey对象;
[0086] 步骤 103、对 RSAPrivateKey 对象设置模 N ;
[0087] 预计算? = /〈: mod Λ? =斤/i¥ (即Q是余数,Q < N,&是商),保存余数Q 和商数I ;
[0088] 步骤104、对RSAPrivateKey对象设置私钥d ;
[0089] 步骤105、cipher对象或signature对象利用RSAPrivateKey对象进行初始化。
[0090] RSA运算,包括以下步骤:
[0091] 步骤201、获得密文或签名数据;
[0092] 步骤202、调用加密对象对密文进行解密或对签名数据进行hash处理后调用加密 对象进行解密;
[0093] 步骤203、加密对象调用native接口进行RSA运算:
[0094] 步骤203. 1、随机产生一个32bits宽度奇数r ;
[0095] 步骤203. 2、计算C2 = Kimodr (C2 < r-1,这儿r是一个32bits宽度的数,可以快 速的计算C2)
[0096] 步骤203. 3、计算C3 = 即为模加扰后的Montgomery常数的平方(证明 见后)
[0097] 步骤203. 4、将密文转入到蒙哥马利域,即通过蒙哥马利模乘计算得(^ = MM(c, C3, r*N);如果为signature,则c为签名数据进行hash运算后的值。
[0098] 步骤 203. 5、计算*= c;7 mod(/. * Λ〇 ;
[0099] 步骤 203. 6、计算 S = SimodN ;
[0100] 步骤204、返回解密(签名)结果。
[0101] 新预算方法证明:
[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宽度的 随机奇数。此时新的模数宽度增加了 32bits,札=2k+32, k为p、q的bits宽度,即为N的 bits宽度的一半。
[0108] RSA_CRT参数初始化,包括以下步骤:
[0109] 步骤 301、创建一个 RSA cipher 或 signature 对象;
[0110] 步骤302、调用加密对象对密文进行解密或对签名数据进行hash处理后调用加密 对象进行解密;
[0111] 步骤 303、对 RSAPrivateCrtKey 对象设置模 p、q ;
[0112] 预计算< mod/?,^ =和//7 (即Cpl是余数,Cpl < p,Kpl是商),保存余 数Cpl和商数Kpl ;
[0113] 预计算C# =./( mod ?/,=/〈;l /?/ (即 Cql 是余数,Cql < q,Kql 是商),保存余数 Q和商数Kql ;
[0114] 步骤 304、对 RSAPrivateCrtKey 对象设置私钥中的 dp、dq、qinv ;
[0115] 步骤305、cipher对象或signature对象利用RSAPrivateKey对象进行初始化。
[0116] RSA_CRT运算,包括以下步骤:
[0117] 步骤401、获得密文或签名数据;
[0118] 步骤402、调用加密对象对密文进行解密或对签名数据进行hash处理后调用加密 对象进行解密;
[0119] 步骤403、加密对象调用native接口进行RSA_CRT运算:
[0120] 步骤403. 1、对p、dp、c进行普通RSA计算:
[0121] A、随机产生一个32bits宽度奇数rp ;
[0122] B、计算Cp2 = Kplmodrp(Cp2彡rp_l,这儿r p是一个32bits宽度的数,可以快速的计 算 Cp2);
[0123] C、计算Cp3 = Cp2*p+Cpl,Cp3即为模p加扰后的Montgomery常数的平方(证明同普 通 RSA);
[0124] D、将密文转入到蒙哥马利域,即通过蒙哥马利模乘计算得cpl =丽(c,Cp3, rp*p), 如果为signature,则c为签名数据进行hash运算后的值。
[0125] E、计算?=eg mod(rp * /?);
[0126] F、计算 sp = splmodp。
[0127] 步骤403. 2、对q、dq、c进行普通RSA计算;
[0128] A、随机产生一个32bits宽度奇数rq ;
[0129] B、计算Cq2 = KumodrJCp彡rq-l,这儿rq是一个32bits宽度的数,可以快速的计 算 Cp2)
[0130] C、计算Cq3 = Cyq+C^C^即为模q加扰后的Montgomery常数的平方(证明同普 通 RSA)
[0131] D、将密文转入到蒙哥马利域,即通过蒙哥马利模乘计算得cql =丽(c,Cq3, rfq), 如果为signature,则c为签名数据进行hash运算后的值。
[0132] E、计算 s9l = m〇d(/:;、)
[0133] F、计算 sq = sqlmodq
[0134] 步骤403. 3、根据中国剩余定理得到最终结果:
[0135] s = [sq+q. (((sp_sq) · qinv)modp) ]modN。
[0136] 本发明实施例是基于JavaCard RSA私钥应用,包括RSA私钥和RSA_CRT私钥的, 提供了一种通过预计算快速计算模加扰蒙哥马利常数平方的方法。
[0137] 图2为本发明实施例的一种RSA解密的装置的示意图,如图2所示,本实施例的装 置包括:
[0138] 获取模块,用于在RSA参数初始化的过程中,获取对RSA私钥对象设置的模加扰后 的模数宽度,获取以2为底、所述模数宽度为指数的幂的平方除以所述对RSA私钥对象设置 的模所得到的余数和商;
[0139] 存储模块,用于存储所述余数和商;
[0140] 处理模块,用于在对加密对象进行RSA运算的过程中,通过所述余数和商获取模 加扰后的蒙哥马利常数的平方,利用所获取的蒙哥马利常数的平方进行解密处理。
[0141] 在一优选实施例中,所述获取模块,获取以2为底、所述模数宽度为指数的 幂的平方与所述对RSA私钥对象设置的模N的余数Q和商&,可以通过下式实现的: ?二<mod_V,A二和/,,其中,N为对RSA私钥对象设置的模,加扰后的模数宽度为 k+32,札=2k+32, k为N的比特宽度。
[0142] 在一优选实施例中,所述处理模块,通过所述余数q和商&获取模加扰后的蒙哥 马利常数的平方仏,包括:随机产生一个32比特宽度奇数r ;通过下式获取模加扰后的蒙哥 马利常数的平方C3 :C2 = Kpodr,其中C2彡r-1 ;C3 = C3N+Q。
[0143] 在一优选实施例中,所述获取模块,获取以2为底、所述模数宽度为指数的幂的 平方与所述对RSA私钥对象设置的模p、q的余数C pl、Cql和商Kpl、Kql,通过下式实现的: Cmod厂,、=化:/厂,(、=/〈: m〇d ?/,& = /? / (/,其中,加扰后的模数宽度为 k+32,札=2k+32, k为ρ的比特宽度。
[0144] 在一优选实施例中,所述处理模块,通过所述余数和商获取模加扰后的蒙哥马利 常数的平方,包括:随机产生一个32比特宽度奇数rp,通过下式获取模加扰后的蒙哥马利 常数的平方Cp3 :Cp2 = Kplmodrp,其中Cp2彡rp-l,C p3 = Cp2*p+Cpl ;随机产生一个32比特宽度 奇数通过下式获取模加扰后的蒙哥马利常数的平方Cq3 = 其中,C q2彡Γ(Γ1 ; Cq3 = Cq2*q+Cql〇
[0145] 传统的计算采用大数除法来进行运算,效率非常低,并且非常依赖于做大数运算 的硬件算子,本方法将大数除法移到了私钥初始化中。本发明实施例针对具有RSA私钥 的应用,在私钥初始化时,进行一次长时间(几十个毫秒)预计算,并保存预计算后的余数 q (或Cpl、Cql)和商数& (或Kpl、Kql),以后每次进行RSA运算时,用商数& (或Cpl、Cql)对随 机数r (或Γρ、Γ(1)取模,再利用一次乘加操作即完成蒙哥马利常数的平方的计算。本发明的 成本非常低,只需消耗最多不到600字节的E2P空间,效率非常高,在30MCPU的卡上,只需 不到1毫秒。
[0146] 本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令 相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘 等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应 地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的 形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
[0147] 以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本 发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变 和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【权利要求】
1. 一种RSA解密的方法,包括:在RSA参数初始化的过程中,获取对RSA私钥对象设置的模加扰后的模数宽度,获取以 2为底、所述模数宽度为指数的幂的平方除以所述对RSA私钥对象设置的模所得到的余数 和商;存储所述余数和商;在对加密对象进行RSA运算的过程中,通过所述余数和商获取模加扰后的蒙哥马利常 数的平方,利用所获取的蒙哥马利常数的平方进行解密处理。
2. 如权利要求1所述的方法,其特征在于:所述获取以2为底、所述模数宽度为指数的 幂的平方除以所述对RSA私钥对象设置的模所得到的余数和商,通过下式实现: 余数? = /PfmodiV,商& = </#,其中,N为对RSA私钥对象设置的模,加扰后的模数宽度为k+32,札=2k+32, k为N的比特宽度。
3. 如权利要求2所述的方法,其特征在于:所述通过所述余数和商获取模加扰后的蒙 哥马利常数的平方,包括: 随机产生一个32比特宽度奇数r ;通过下式获取模加扰后的蒙哥马利常数的平方C3 :C2 = Kimodr,其中 C2 < r_l ;c3 = c2*n+c1〇
4. 如权利要求1所述的方法,其特征在于:所述获取以2为底、所述模数宽度为指数的 幂的平方除以所述对RSA私钥对象设置的模所得到的余数和商,通过下式实现: 余数(.、=/f mod /,,商[片=/(//),余数= mod g,商尤* =心丨'彳,其中,加扰后的模数宽度为k+32, & = 2k+32, p、q是对RSA私钥对象设置的模,k为对 RSA私钥对象设置的模p的比特宽度。
5. 如权利要求4所述的方法,其特征在于:通过所述余数和商获取模加扰后的蒙哥马 利常数的平方,包括: 随机产生一个32比特宽度奇数rp ;通过下式获取模加扰后的蒙哥马利常数的平方Cp3 :Cp2 = Kplmodrp,其中 Cp2 彡 rp-l ;Cp3 = Cp2*p+Cpl ;随机产生一个32比特宽度奇数rq ;通过下式获取模加扰后的蒙哥马利常数的平方Cq3 :Cq2 = Lmodiv 其中 Cq2 彡 rq-l ;Cq3 = Cq2*q+Cql〇
6. -种RSA解密的装置,其特征在于,包括: 获取模块,用于在RSA参数初始化的过程中,获取对RSA私钥对象设置的模加扰后的模 数宽度,获取以2为底、所述模数宽度为指数的幂的平方除以所述对RSA私钥对象设置的模 所得到的余数和商;存储模块,用于存储所述余数和商;处理模块,用于在对加密对象进行RSA运算的过程中,通过所述余数和商获取模加扰 后的蒙哥马利常数的平方,利用所获取的蒙哥马利常数的平方进行解密处理。
7. 如权利要求6所述的装置,其特征在于: 所述获取模块,获取以2为底、所述模数宽度为指数的幂的平方除以所述对RSA私钥 对象设置的模所得到的余数和商,通过下式实现:余数A = <mod」V,商旱=片/.Y,其 中,N为对RSA私钥对象设置的模,加扰后的模数宽度为k+32, & = 2k+32, k为N的比特宽 度。
8. 如权利要求7所述的装置,其特征在于: 所述处理模块,通过所述余数和商获取模加扰后的蒙哥马利常数的平方,包括:随机产 生一个32比特宽度奇数r ;通过下式获取模加扰后的蒙哥马利常数的平方C3 :C2 = Kimodr, 其中 C2 彡 r-1 ;C3 = C^N+Q。
9. 如权利要求6所述的装置,其特征在于: 所述获取模块,获取以2为底、所述模数宽度为指数的幂的平方除以所述对RSA私钥对 象设置的模所得到的余数和商,通过下式实现:余数C# =巧2 mod/?,商?:# //>,余数Γ = "i: mod ?/,商= % / ¢/,其中,力口扰后的模数宽度为k+32,& = 2k+32,p、q是对RSA私钥对象设置的模,k为对RSA私钥对象设置的模p的比特宽度。
10. 如权利要求9所述的装置,其特征在于: 所述处理模块,通过所述余数和商获取模加扰后的蒙哥马利常数的平方,包括:随机 产生一个32比特宽度奇数rp,通过下式获取模加扰后的蒙哥马利常数的平方Cp3 :CP2 = Kplmodrp,其中Cp2彡rp-l,C p3 = Cp2*p+Cpl ;随机产生一个32比特宽度奇数r,,通过下式获取 模加扰后的蒙哥马利常数的平方Cq3 :Cq2 = I^modiv其中,Cq2彡rq-l ;Cq3 = Cyq+Cf
【文档编号】H04L9/28GK104104504SQ201410350403
【公开日】2014年10月15日 申请日期:2014年7月22日 优先权日:2014年7月22日
【发明者】周兴建, 王俊 申请人:大唐微电子技术有限公司