适用于云计算的基于sm2算法的签名及解密方法和系统的利记博彩app

文档序号:7812955阅读:1462来源:国知局
适用于云计算的基于sm2算法的签名及解密方法和系统的利记博彩app
【专利摘要】本发明公开了适用于云计算的基于SM2算法的签名及解密方法和系统。具体地,可在通信双方分别存储部分私钥,两方联合才能对消息进行签名或解密等操作,通信双方均无法获取到对方私钥的任何信息,因此攻击者在入侵其中任何一方的情况下,都不能伪造签名或解密密文,从而提高了云计算环境中的私钥的安全性;而且,签名过程和解密过程中,通信双方仅需要进行很少的交互,从而能够满足云计算环境中低延迟、少交互的应用需求。
【专利说明】适用于云计算的基于SM2算法的签名及解密方法和系统

【技术领域】
[0001] 本发明涉及密码领域,特别涉及适用于云计算的基于SM2算法的签名及解密方法 和系统。

【背景技术】
[0002] 目前,基于公钥密码学的数字签名和加解密技术已经广泛应用在电子商务、身份 认证等应用中,成为保证信息安全的重要工具,而私钥的安全性及使用是保证这些应用安 全的基础。
[0003] 在云计算环境中,主要的资源向服务器端聚集,客户端通常以弱终端的形式存在, 如智能手机等,这类弱终端通常以软件的形式存储和使用私钥,因此安全防护能力较差。比 如,如果私钥完整的存储在智能手机的单个文件中,那么攻击者通过权限提升则可获得私 钥,另外,如果私钥完整的出现在每次的签名计算过程中,那么攻击者则可以有很多方式将 其从智能手机内存中导出。
[0004] 为了提高私钥的安全性,现有技术中提出了一种称为门限密码学的算法,即将私 钥进行拆分并分布在不同的物理设备中,以避免全部私钥信息的直接存储和使用。比如,一 个(t,n)的门限签名方案中,私钥可分布在η个成员中,t个或t个以上成员可以合作完全 签名,而小于t个成员时则无法完成签名。
[0005] 但是,上述算法的实现往往交互复杂,通信次数繁多,不能满足云计算环境中低延 迟、少交互的应用需求,也就是说,上述方式对云计算环境并不适用。


【发明内容】

[0006] 有鉴于此,本发明提供了适用于云计算的基于SM2算法的签名及解密方法和系 统,能够提高云计算环境中的私钥的安全性。
[0007] 为了达到上述目的,本发明的技术方案是这样实现的:
[0008] -种适用于云计算的基于SM2算法的签名方法,包括:
[0009] 第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2 ;
[0010] 第一通信方生成待签名消息Μ的消息摘要e和第一部分签名Q1,并将e和Q1发送 给第二通信方;
[0011] 第二通信方根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2和 第四部分签名s3,将r、s2和s3发送给第一通信方;
[0012] 第一通信方根据Dl、r、s2和s3生成完整签名并输出。
[0013] 一种适用于云计算的基于SM2算法的解密方法,包括:
[0014] 第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2 ;
[0015] 第一通信方根据D1对获取到的密文C进行部分解密,得到第一部分明文T1,并发 送给第二通信方;
[0016] 第二通信方根据D2和T1生成第二部分明文T2,并发送给第一通信方;
[0017] 第一通信方根据T2对密文C进行完整解密,得到完整明文输出。
[0018] 一种适用于云计算的基于SM2算法的签名系统,包括:
[0019] 第一通信方,用于生成自身的子私钥D1 ;并生成待签名消息Μ的消息摘要e和第 一部分签名Q1,将e和Q1发送给第二通信方;根据Dl、r、s2和s3生成完整签名并输出;
[0020] 第二通信方,用于生成自身的子私钥D2 ;并根据Q1和e生成第二部分签名r,并根 据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给第一通信方。
[0021] 一种适用于云计算的基于SM2算法的解密系统,包括:
[0022] 第一通信方,用于生成自身的子私钥D1 ;并根据D1对获取到的密文C进行部分解 密,得到第一部分明文T1,发送给第二通信方;根据T2对密文C进行完整解密,得到完整明 文输出;
[0023] 第二通信方,用于生成自身的子私钥D2 ;并根据D2和T1生成第二部分明文T2,并 发送给第一通信方。
[0024] 可见,采用本发明所述方案,可在通信双方分别存储部分私钥,两方联合才能对消 息进行签名或解密等操作,通信双方均无法获取到对方私钥的任何信息,因此攻击者在入 侵其中任何一方的情况下,都不能伪造签名或解密密文,相应地,当将该方案应用于云计算 环境中时,即可提高云计算环境中的私钥的安全性;而且,签名过程和解密过程中,通信双 方仅需要进行很少的交互,从而能够满足云计算环境中低延迟、少交互的应用需求。

【专利附图】

【附图说明】
[0025] 图1为本发明适用于云计算的基于SM2算法的签名方法实施例的流程图。
[0026] 图2为本发明第一通信方和第二通信方生成各自的子私钥和公钥的过程示意图。
[0027] 图3为本发明第一通信方和第二通信方生成待签名消息Μ的完整签名的过程示意 图。
[0028] 图4为本发明适用于云计算的基于SM2算法的解密方法实施例的流程图。
[0029] 图5为本发明第一通信方和第二通信方解密得到密文C的完整明文的过程示意 图。

【具体实施方式】
[0030] 针对现有技术中存在的问题,本发明中提出一种适用于云计算环境中的、基于SM2 算法的签名方案和解密方案。SM2算法是一种标准的商用密码算法,在密码产品中被广泛的 支持和使用。
[0031] 为了使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所 述方案作进一步的详细说明。
[0032] 图1为本发明适用于云计算的基于SM2算法的签名方法实施例的流程图,如图1 所示,包括以下步骤11?14。
[0033] 步骤11 :第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2。
[0034] 为便于表述,分别用第一通信方和第二通信方来表示通信双方,其中,第一通信方 可以为客户端或服务器端,相应地,当第一通信方为客户端时,第二通信方则为服务器端, 当第一通信方为服务器端时,第二通信方则为客户端。
[0035] 第一通信方和第二通信方共享SM2算法的椭圆曲线参数E (Fq)、G和n,椭圆曲线E 为定义在有限域Fq上的椭圆曲线,G表示椭圆曲线E上η阶的基点,各参数的具体取值等 均根据SM2算法预先设定。
[0036] 第一通信方和第二通信方需要分别生成自身的子私钥D1和D2,另外,还可进一步 合作生成公钥Ρ。
[0037] 相应地,图2为本发明第一通信方和第二通信方生成各自的子私钥和公钥的过程 示意图,如图2所示,包括以下步骤21?26。
[0038] 步骤21 :第一通信方产生一个位于[1,η-1]之间的随机数,将产生的随机数作为 Dl〇
[0039] 即有:D1 e [1,η-1]。
[0040] 步骤22 :第二通信方产生一个位于[1,η-1]之间的随机数,将产生的随机数作为 D2〇
[0041] 即有:D2 e [1,η-1]。
[0042] 步骤23 :第一通信方计算D1在Fq上的逆元Dldmod η。
[0043] mod表示求模运算。
[0044] 步骤24 :第二通信方计算D2在Fq上的逆元D2<mod η。
[0045] 步骤25 :第一通信方计算Dr^G,将计算结果Ρ1发送给第二通信方。
[0046] 即有:PI = DlKG,其中,Μ表示椭圆曲线点乘运算。
[0047] 步骤26 :第二通信方计算D2<[*]P1 [_]G,将计算结果Ρ作为公钥进行公开。
[0048] 即有:P = DSKPlMG,其中,[-]表示椭圆曲线点减运算。
[0049] 需要说明的是,上述步骤21?26的表示方式仅为举例说明,并不用于限制各步骤 的执行顺序,在实际应用中,可根据实际需要设定各步骤的执行顺序,只要最终能够得到所 需的结果即可,后续涉及到的各示意图中同样如此,不再赘述。
[0050] 步骤12 :第一通信方生成待签名消息Μ的消息摘要e和第一部分签名Q1,并将e 和Q1发送给第二通信方。
[0051] 步骤13 :第二通信方根据Q1和e生成第二部分签名r,并根据D2生成第三部分签 名s2和第四部分签名s3,将r、s2和s3发送给第一通信方。
[0052] 步骤14 :第一通信方根据Dl、r、s2和s3生成完整签名并输出。
[0053] 通过步骤12?14所示过程,即可生成待签名消息Μ的完整签名。
[0054] 图3为本发明第一通信方和第二通信方生成待签名消息Μ的完整签名的过程示意 图,如图3所示,包括以下步骤31?39。
[0055] 步骤31 :第一通信方将Ζ和Μ拼接形成Μ',并计算Hash (Μ'),将计算结果作为e, 其中,Z表示第一通信方和第二通信方共同的身份标识,Hash〇表示预定的密码杂凑函数。
[0056] 即有:Μ' = Z| |M,| |表示拼接;
[0057] e = Hash (M,)。
[0058] 步骤32 :第一通信方产生一个位于[1,η-1]之间的随机数kl,并计算kl [*]G,将 计算结果作为Q1。
[0059] 即有:kl e [1,η-1];
[0060] Ql = kl[*]G。
[0061] 步骤33 :第一通信方将e和Q1发送给第二通信方。
[0062] 步骤34:第二通信方产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G,得 到计算结果Q2。
[0063] 即有:k2 ε [1,n_l];
[0064] Q2 = k2[*]G。
[0065] 步骤35 :第二通信方产生一个位于[1,n-1]之间的随机数k3,计算k3[*]Ql [+] Q2,得到计算结果(xl,yl),并计算xl+e mod n,将计算结果作为r,其中,[+]表示椭圆曲线 点加运算。
[0066] 即有:k3 ε [1,n_l];
[0067] (xl,yl) = k3[*]Ql [+]Q2 ;
[0068] r = xl+e mod n。
[0069] 其中,若r不等于0,则执行步骤36,若r等于0,则第二通信方可重新产生k3,并 重新计算得到(xl,yl)和r,直到r不等于0为止。
[0070] 步骤36 :若r不等于0,则第二通信方计算D2*k3mod η,将计算结果作为s2,并计 算D2*(r+k2)mod n,将计算结果作为s3。
[0071] 即有:s2 = D2*k3mod η ;
[0072] S3 = D2*(r+k2)mod η。
[0073] 步骤37 :第二通信方将r、s2和s3发送给第一通信方。
[0074] 步骤38 :第一通信方计算(Dl*kl) *s2+Dl*s3_r mod η,得到计算结果s。
[0075] 即有:s = (Dl*kl) s2+Dl*s3_r mod η。
[0076] 其中,若s等于0或等于n-r,则可从重新产生kl,并将与此相关的步骤重新执行, 若s不等于0且不等于n-r,则执行步骤39。
[0077] 步骤39 :若s不等于0且不等于n-r,则第一通信方将(r,s)作为完整签名输出。
[0078] 同时,还可输出待签名消息M。
[0079] 上述各步骤中涉及到的各随机数kl、k2、k3等均为整数。
[0080] 图4为本发明适用于云计算的基于SM2算法的解密方法实施例的流程图,如图4 所示,包括以下步骤41?44。
[0081] 步骤41 :第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2。
[0082] 为便于表述,分别用第一通信方和第二通信方来表示通信双方,其中,第一通信方 可以为客户端或服务器端,相应地,当第一通信方为客户端时,第二通信方则为服务器端, 当第一通信方为服务器端时,第二通信方则为客户端。
[0083] 第一通信方和第二通信方共享SM2算法的椭圆曲线参数E (Fq)、G和n,椭圆曲线E 为定义在有限域Fq上的椭圆曲线,G表示椭圆曲线E上η阶的基点,各参数的具体取值等 均根据SM2算法预先设定。
[0084] 本步骤的具体实现可参照步骤11中的相关说明,此处不再赘述。
[0085] 步骤42 :第一通信方根据D1对获取到的密文C进行部分解密,得到第一部分明文 Τ1,并发送给第二通信方。
[0086] 步骤43 :第二通信方根据D2和Τ1生成第二部分明文Τ2,并发送给第一通信方。 [0087] 步骤44 :第一通信方根据Τ2对密文C进行完整解密,得到完整明文输出。
[0088] 通过步骤42?44所示过程,即可得到密文C的完整明文。
[0089] 图5为本发明第一通信方和第二通信方解密得到密文C的完整明文的过程示意 图,如图5所示,包括以下步骤51?510。
[0090] 步骤51 :第一通信方从密文C中提取出比特串C1,密文C由比特串C1、C2和03拼 接而成,并对C1进行数据类型转换后,验证C1是否为椭圆曲线E上的非无穷远点。
[0091] 即有:C = Cl I |C2| |C3。
[0092] 对Cl进行数据类型转换,通常是指将其从比特串转换为整数,如何进行转换为现 有技术,如何验证C1是否为椭圆曲线E上的非无穷远点同样为现有技术。
[0093] 若C1为椭圆曲线E上的非无穷远点,则执行步骤52,否则,可报错退出。
[0094] 步骤52 :第一通信方计算DrKCl,将计算结果作为T1,其中,Dr1为D1在Fq上 的逆元。
[0095] 即有:T1 = DlKCl。
[0096] 步骤53 :第一通信方将T1发送给第二通信方。
[0097] 步骤54 :第二通信方计算D2KT1,将计算结果作为T2,其中,D24为D2在Fq上 的逆元。
[0098] 即有:T2 = D2-1[*]T1。
[0099] 步骤55 :第二通信方将T2发送给第一通信方。
[0100] 步骤56 :第一通信方计算T2[-]C1,得到计算结果(x2, y2)。
[0101] 即有:(x2, y2) = T2[-]C1。
[0102] 步骤57 :第一通信方计算KDF(x2| |y2,klen),得到计算结果t,其中,I I表示拼接, KDF0为预定的密钥派生函数,klen表示输出的比特串长度,取值为预先设定。
[0103] 即有:t = KDF (x2 | | y2, klen)。
[0104] 若t不等于0,则执行步骤58,否则,可报错退出。
[0105] 步骤58 :若t不等于0,第一通信方从密文C中提取出比特串C2,并计算C2?t,得 到计算结果M",其中,Θ表示按位异或运算。
[0106] 即有:M,,=C2?t。
[0107] 步骤59 :第一通信方计算Hash(x2 | |M" | | y2),得到计算结果u。
[0108] 即有:u = Hash (x2 | | Μ" | | y2)。
[0109] 步骤510 :第一通信方从密文C中提取出比特串C3,若u等于C3,则将Μ"作为完 整明文输出。
[0110] 若u不等于C3,可报错退出。
[0111] 基于上述介绍,本发明同时公开了一种适用于云计算的基于SM2算法的签名系统 以及一种适用于云计算的基于SM2算法的解密系统,分别介绍如下。
[0112] 所述适用于云计算的基于SM2算法的签名系统中包括:
[0113] 第一通信方,用于生成自身的子私钥D1 ;并生成待签名消息Μ的消息摘要e和第 一部分签名Q1,将e和Q1发送给第二通信方;根据Dl、r、s2和s3生成完整签名并输出;
[0114] 第二通信方,用于生成自身的子私钥D2 ;并根据Q1和e生成第二部分签名r,并根 据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给第一通信方。
[0115] 其中,
[0116] 第一通信方和第二通信方共享SM2算法的椭圆曲线参数E (Fq)、G和n,椭圆曲线E 为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上η阶的基点;
[0117] D1和D2均为位于[1,η-1]之间的一个随机数。
[0118] 另外,
[0119] 第一通信方可进一步用于,计算D1在Fq上的逆元Driod η,并计算DlKG,将 计算结果P1发送给第二通信方;
[0120] 第二通信方可进一步用于,计算D2在Fq上的逆元D2<mod η,并计算D2<|>]P1[-] G,将计算结果P作为公钥进行公开,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算, [_]表示椭圆曲线点减运算。
[0121] 具体地,
[0122] 第一通信方计算e = Hash(M'),M' = Z| |M,其中,| |表示拼接,Z表示第一通信方 和第二通信方共同的身份标识,HashO表示预定的密码杂凑函数;并计算Q1 = kl[*]G,其 中,kl为位于[1,η-1]之间的一个随机数,[*]表示椭圆曲线点乘运算。
[0123] 第二通信方计算 r = xl+e mod n,(xl,yl) = k3[*]Ql [+]Q2,Q2 = k2[*]G ;其中, mod表示求模运算,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算;k2和k3均为 位于[1,η-1]之间的一个随机数;当r不等于0时,计算s2 = D2*k3mod n,s3 = D2*(r+k2) mod n〇
[0124] 第一通信方计算(Dl*kl)*s2+Dl*s3_r mod n,得到计算结果s,其中,mod表示求 模运算,若s不等于0且不等于n-r,则将(r,s)作为完整签名输出。
[0125] 所述适用于云计算的基于SM2算法的解密系统中包括:
[0126] 第一通信方,用于生成自身的子私钥D1 ;并根据D1对获取到的密文C进行部分解 密,得到第一部分明文T1,发送给第二通信方;根据T2对密文C进行完整解密,得到完整明 文输出;
[0127] 第二通信方,用于生成自身的子私钥D2 ;并根据D2和T1生成第二部分明文T2,并 发送给第一通信方。
[0128] 其中,
[0129] 第一通信方和第二通信方共享SM2算法的椭圆曲线参数E (Fq)、G和n,椭圆曲线E 为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上η阶的基点;
[0130] D1和D2均为位于[1,η-1]之间的一个随机数。
[0131] 另外,
[0132] 第一通信方可进一步用于,从密文C中提取出比特串C1,密文C由比特串Cl、C2和 C3拼接而成,并对C1进行数据类型转换后,验证C1是否为椭圆曲线Ε上的非无穷远点;若 是,则计算Dr1 [*] C1,将计算结果作为Τ1,其中,Dr1为D1在Fq上的逆元,[*]表示椭圆曲 线点乘运算。
[0133] 具体地,
[0134] 第二通信方计算T2 = 02^11,其中,D2-1为D2在Fq上的逆元,[*]表示椭圆曲 线点乘运算。
[0135] 第一通信方还可进一步用于,计算T2[_]C1,得到计算结果(x2, y2),其中,[_]表 示椭圆曲线点减运算;计算KDF (x2 | | y2, klen),得到计算结果t,其中,| |表示拼接,KDF () 表示预定的密钥派生函数,klen表示预定的输出的比特串长度;若t不等于0,则从密文 C中提取出比特串C2,并计算C2?t,得到计算结果M",其中,φ表示按位异或运算;计算 Hash(x2 | |M" | |y2),得到计算结果u,其中,Hash()表示预定的密码杂凑函数;从密文C中 提取出比特串C3,若u等于C3,则将M"作为完整明文输出。
[0136] 上述系统实施例的具体工作流程请参照前述方法实施例中的相应说明,此处不再 赘述。
[0137] 综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的 保护范围之内。
【权利要求】
1. 一种适用于云计算的基于SM2算法的签名方法,其特征在于,包括: 第一通信方生成自身的子私钥Dl,第二通信方生成自身的子私钥D2 ; 第一通信方生成待签名消息M的消息摘要e和第一部分签名Ql,并将e和Ql发送给第 二通信方; 第二通信方根据Ql和e生成第二部分签名r,并根据D2生成第三部分签名s2和第四 部分签名s3,将r、s2和s3发送给第一通信方; 第一通信方根据Dl、r、s2和s3生成完整签名并输出。
2. 根据权利要求1所述的方法,其特征在于, 第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为 定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点; 所述第一通信方生成自身的子私钥Dl包括:第一通信方产生一个位于[l,n-l]之间的 随机数,将产生的随机数作为Dl; 所述第二通信方生成自身的子私钥D2包括:第二通信方产生一个位于[l,n-l]之间的 随机数,将产生的随机数作为D2。
3. 根据权利要求2所述的方法,其特征在于,
该方法进一步包括: 第一通信方计算Dl在Fq上的逆元Dr1Iiiodn,并计算 ,将计算结果Pl发送给 第二通信方; 第二通信方计算D2在Fq上的逆元D2^ii〇dn,并计算
,将计算结果P作 为公钥进行公开,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[_]表示椭圆曲线 点减运算。
4. 根据权利要求2或3所述的方法,其特征在于, 所述第一通信方生成待签名消息M的消息摘要e和第一部分签名Ql包括: 第一通信方将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e,其中,Z表示第 一通信方和第二通信方共同的身份标识,HashO表示预定的密码杂凑函数; 第一通信方产生一个位于[1,n-1]之间的随机数kl,并计算kl[*]G,将计算结果作为Q1,其中,[*]表示椭圆曲线点乘运算。
5. 根据权利要求2或3所述的方法,其特征在于, 所述第二通信方根据Ql和e生成第二部分签名r,并根据D2生成第三部分签名s2和 第四部分签名s3包括: 第二通信方产生一个位于[l,n-l]之间的随机数k2,并计算
,得到计算结果Q2, 其中,[*]表示椭圆曲线点乘运算; 第二通信方产生一个位于[1,n-1]之间的随机数k3,计算
,得到计算结 果(xl,yl),并计算xl+emodn,将计算结果作为r,其中,mod表示求模运算,[*]表示椭圆 曲线点乘运算,[+]表示椭圆曲线点加运算; 若r不等于0,则第二通信方计算D2*k3modn,将计算结果作为s2,并计算:

,将计算结果作为S3。
6. 根据权利要求4所述的方法,其特征在于, 所述第一通信方根据Dl、r、s2和s3生成完整签名并输出包括: 第一通信方计算
,得到计算结果S,其中,mod表示求模运 算; 若s不等于0且不等于n-r,则第一通信方将(r,s)作为完整签名输出。
7. -种适用于云计算的基于SM2算法的解密方法,其特征在于,包括: 第一通信方生成自身的子私钥Dl,第二通信方生成自身的子私钥D2 ; 第一通信方根据Dl对获取到的密文C进行部分解密,得到第一部分明文T1,并发送给 第二通信方; 第二通信方根据D2和Tl生成第二部分明文T2,并发送给第一通信方; 第一通信方根据T2对密文C进行完整解密,得到完整明文输出。
8. 根据权利要求7所述的方法,其特征在于, 第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为 定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点; 所述第一通信方生成自身的子私钥Dl包括:第一通信方产生一个位于[I,n-1]之间的 随机数,将产生的随机数作为Dl; 所述第二通信方生成自身的子私钥D2包括:第二通信方产生一个位于[I,n-1]之间的 随机数,将产生的随机数作为D2。
9. 根据权利要求8所述的方法,其特征在于, 所述第一通信方根据Dl对获取到的密文C进行部分解密,得到第一部分明文Tl包括: 第一通信方从密文C中提取出比特串C1,密文C由比特串C1、C2和C3拼接而成,并对 Cl进行数据类型转换后,验证Cl是否为椭圆曲线E上的非无穷远点; 若是,则计算Dr1 [*]Cl,将计算结果作为Tl,其中,Dr1为Dl在Fq上的逆元,[*]表示 椭圆曲线点乘运算。
10. 根据权利要求8所述的方法,其特征在于, 所述第二通信方根据D2和Tl生成第二部分明文T2包括: 第二通信方计算D2KT1,将计算结果作为T2,其中,D24为D2在Fq上的逆元,[*] 表示椭圆曲线点乘运算。
11. 根据权利要求9所述的方法,其特征在于, 所述第一通信方根据T2对密文C进行完整解密,得到完整明文输出包括: 第一通信方计算T2[-]C1,得到计算结果(x2,y2),其中,[-]表示椭圆曲线点减运算; 第一通信方计算KDF(x2IIy2,klen),得到计算结果t,其中,II表示拼接,KDFO表示 预定的密钥派生函数,klen表示预定的输出的比特串长度; 若t不等于0,则第一通信方从密文C中提取出比特串C2,并计算C2?t,得到计算结果M",其中,?表示按位异或运算; 第一通信方计算Hash(x2IIM"IIy2),得到计算结果u,其中,HashO表示预定的密码 杂凑函数; 第一通信方从密文C中提取出比特串C3,若u等于C3,则将M"作为完整明文输出。
12. -种适用于云计算的基于SM2算法的签名系统,其特征在于,包括: 第一通信方,用于生成自身的子私钥Dl;并生成待签名消息M的消息摘要e和第一部 分签名Q1,将e和Ql发送给第二通信方;根据Dl、r、s2和s3生成完整签名并输出; 第二通信方,用于生成自身的子私钥D2 ;并根据Ql和e生成第二部分签名r,并根据D2 生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给第一通信方。
13. 根据权利要求12所述的系统,其特征在于, 第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为 定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点; Dl和D2均为位于[1,n-1]之间的一个随机数。
14. 根据权利要求13所述的系统,其特征在于, 第一通信方进一步用于,计算Dl在Fq上的逆元Dr1Hiodn,并计算Dr1 [*]G,将计算结 果Pl发送给第二通信方; 第二通信方进一步用于,计算D2在Fq上的逆元D2^iodn,并计算D2KPl[_]G,将计 算结果P作为公钥进行公开,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[-]表 示椭圆曲线点减运算。
15. 根据权利要求13或14所述的系统,其特征在于, 第一通信方计算e=Hash(M'),M' =Z| |M,其中,II表示拼接,Z表示第一通信方和第 二通信方共同的身份标识,HashO表示预定的密码杂凑函数;并计算Ql=kl[*]G,其中, kl为位于[1,n-1]之间的一个随机数,[*]表示椭圆曲线点乘运算。
16. 根据权利要求13或14所述的系统,其特征在于, 第二通信方计算
其中,mod 表示求模运算,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算;k2和k3均为位于 [1,n-1]之间的一个随机数;当r不等于0时,计算

17. 根据权利要求15所述的系统,其特征在于, 第一通信方计算
,得到计算结果s,其中,mod表示求模运 算,若s不等于0且不等于n-r,则将(r,s)作为完整签名输出。
18. -种适用于云计算的基于SM2算法的解密系统,其特征在于,包括: 第一通信方,用于生成自身的子私钥Dl;并根据Dl对获取到的密文C进行部分解密, 得到第一部分明文T1,发送给第二通信方;根据T2对密文C进行完整解密,得到完整明文 输出; 第二通信方,用于生成自身的子私钥D2 ;并根据D2和Tl生成第二部分明文T2,并发送 给第一通信方。
19. 根据权利要求18所述的系统,其特征在于, 第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为 定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点; Dl和D2均为位于[1,n-1]之间的一个随机数。
20. 根据权利要求19所述的系统,其特征在于, 第一通信方进一步用于,从密文C中提取出比特串C1,密文C由比特串C1、C2和03拼 接而成,并对Cl进行数据类型转换后,验证Cl是否为椭圆曲线E上的非无穷远点;若是,则 计算DrKCl,将计算结果作为T1,其中,Dr1为Dl在Fq上的逆元,[*]表示椭圆曲线点 乘运算。
21. 根据权利要求19所述的系统,其特征在于, 第二通信方计算
,其中,Df1为D2在Fq上的逆元,[*]表示椭圆曲线点 乘运算。
22. 根据权利要求20所述的系统,其特征在于, 第一通信方进一步用于,计算T2[-]C1,得到计算结果(x2,y2),其中,[-]表示椭圆 曲线点减运算;计算KDF(x2IIy2,klen),得到计算结果t,其中,II表示拼接,KDFO表 示预定的密钥派生函数,klen表示预定的输出的比特串长度;若t不等于0,则从密文C 中提取出比特串C2,并计算C2?t,得到计算结果M",其中,?表示按位异或运算;计算 Hash(x2IIM"IIy2),得到计算结果u,其中,HashO表示预定的密码杂凑函数;从密文C中 提取出比特串C3,若u等于C3,则将M"作为完整明文输出。
【文档编号】H04L29/06GK104243456SQ201410437599
【公开日】2014年12月24日 申请日期:2014年8月29日 优先权日:2014年8月29日
【发明者】林璟锵, 马原, 荆继武, 王琼霄, 雷灵光, 蔡权伟, 王雷 申请人:中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1