基于非对称密钥池的抗量子计算非对称加密方法和系统与流程

文档序号:17600369发布日期:2019-05-07 20:12阅读:353来源:国知局
基于非对称密钥池的抗量子计算非对称加密方法和系统与流程

本发明涉及elgamal公钥密码体制和非对称密钥池技术技术,具体涉及非对称加密体系的抗量子计算elgamal加密方法。



背景技术:

迅速发展的internet给人们的生活、工作带来了巨大的方便,人们可以坐在家里通过internet收发电子邮件、打电话、进行网上购物、银行转账等活动。同时网络信息安全也逐渐成为一个潜在的巨大问题。一般来说网络信息面临着以下几种安全隐患:网络信息被窃取、信息被篡改、攻击者假冒信息、恶意破坏等。

当前保证网络信息安全的关键技术就是密码技术,而在如今的密码学领域中,主要有两种密码系统,一是对称密钥密码系统,即加密密钥和解密密钥使用同一个。另一个是公开密钥密码系统,即加密密钥和解密密钥不同,其中一个可以公开。

对称密钥密码系统的安全性依赖以下两个因素。第一,加密算法必须是足够强的,仅仅基于密文本身去解密信息在实践上是不可能的;第二,加密方法的安全性来自于密钥的秘密性,而不是算法的秘密性。对称加密系统最大的问题是密钥的分发和管理非常复杂、代价高昂。对称加密算法另一个缺点是不容易实现数字签名。所以,在当今的移动电子商务领域中的加密算法实现主要是依赖于公开密钥体制。

公开密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。由于加密钥匙是公开的,密钥的分配和管理就很简单,公开密钥加密系统还能够很容易地实现数字签名。

自公钥加密问世以来,学者们提出了许多种公钥加密方法,它们的安全性都是基于复杂的数学难题。根据所基于的数学难题来分类,有以下三类系统目前被认为是安全和有效的:大整数因子分解系统(代表性的有rsa)、离散对数系统(代表性的有dsa)和椭圆离散对数系统(ecc)。

在密码学中,elgamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。它在1985年由塔希尔·盖莫尔提出。gnupg和pgp等很多密码学系统中都应用到了elgamal算法。elgamal加密算法可以定义在任何循环群g上。它的安全性取决于g上的离散对数难题。

elgamal加密系统通常应用在混合加密系统中。例如:用对称加密体制来加密消息,然后利用elgamal加密算法传递密钥。这是因为在同等安全等级下,elgamal加密算法作为一种非对称密码学系统,通常比对称加密体制要慢。对称加密算法的密钥和要传递的消息相比通常要短得多,所以相比之下使用elgamal加密密钥然后用对称加密来加密任意长度的消息,这样要更快一些。

但是随着量子计算机的发展,经典非对称密钥加密算法将不再安全,无论加解密还是密钥交换方法,量子计算机都可以通过公钥计算得到私钥,因此目前常用的非对称密钥将在量子时代存在很大安全隐患。



技术实现要素:

本发明提供一种进一步提高安全性的抗量子计算非对称加密方法和系统。

本发明基于非对称密钥池的抗量子计算非对称加密方法,参与方配置有密钥卡,密钥卡内存储有公钥密钥池以及私钥,所述私钥包括用于实施elgamal算法的第一私钥、以及用于实施rsa算法的第二私钥,在所述公钥密钥池中存储有与所述第一私钥相对应的第一公钥,以及与所述第二私钥相对应的第二公钥,且第一公钥与第二公钥在密钥卡内的存储地址相关;

所述抗量子计算非对称加密方法,加密时包括:

从密钥卡中获得与接收方相应的第一公钥和第二公钥;

利用第一公钥生成共享密钥,并利用共享密钥加密消息原文得到第一密文;

利用第二公钥将生成共享密钥的相关信息加密得到第二密文;

将所述第一密文和所述第二密文发送至接收方以供解密获得消息原文。

可选的,从密钥卡中获得与接收方相应的第一公钥和第二公钥的方式为:

向颁发所述密钥卡的密钥管理服务站发送请求,并从所述密钥管理服务站获得与接收方相应的公钥指针地址;

依据所述公钥指针地址从密钥卡中获得与接收方相应的第一公钥和第二公钥。

可选的,公钥密钥池内存储有所有用户的第一公钥和第二公钥,针对同一用户的第一公钥和第二公钥在密钥卡内的存储地址相邻。

可选的,所述密钥卡内存储有循环群g的参数{g,q,g},生成所述共享密钥时,包括:

生成第一真随机数,利用该真随机数得到处于{1,…,q-1}范围内的参数k;所述第一公钥与参数k进行运算得到所述共享密钥。

可选的,利用共享密钥加密消息原文得到第一密文时,包括:

将消息原文映射到循环群g中的元素m;

将元素m与共享密钥进行运算得到所述第一密文。

可选的,利用第二公钥将生成共享密钥的相关信息加密得到第二密文时,包括:

计算生成共享密钥的相关信息,所述相关信息为c1=g^k;

将所述相关信息与第二公钥进行运算得到所述第二密文。

可选的,利用第二公钥将生成共享密钥的相关信息加密得到第二密文时,包括:

发送方生成第二真随机数;

利用所述第二真随机数,对生成共享密钥的相关信息加密得到第一部分,所述相关信息为c1=g^k;

利用第二公钥加密第二真随机数得到第二部分;

所述第一部分和第二部分组成所述第二密文。

可选的,解密时包括:

接收来自发送方的所述第一密文和所述第二密文;

利用第二私钥解密第二密文,得到生成共享密钥的相关信息;

利用生成共享密钥的相关信息、结合第一私钥得到共享密钥;

利用共享密钥解密第一密文得到消息原文。

本发明还提供一种基于非对称密钥池的抗量子计算非对称加密系统,参与方配置有密钥卡,密钥卡内存储有公钥密钥池以及私钥,所述私钥包括用于实施elgamal算法的第一私钥、以及用于实施rsa算法的第二私钥,在所述公钥密钥池中存储有与所述第一私钥相对应的第一公钥,以及与所述第二私钥相对应的第二公钥,且第一公钥与第二公钥在密钥卡内的存储地址相关;

所述抗量子计算非对称加密系统,包括:

第一模块,用于从密钥卡中获得与接收方相应的第一公钥和第二公钥;

第二模块,用于利用第一公钥生成共享密钥,并利用共享密钥加密消息原文得到第一密文;

第三模块,用于利用第二公钥将生成共享密钥的相关信息加密得到第二密文;

第四模块,用于将所述第一密文和所述第二密文发送至接收方以供解密获得消息原文。

本发明还提供一种基于非对称密钥池的抗量子计算非对称加密系统,参与方配置有密钥卡,密钥卡内存储有公钥密钥池以及私钥,所述私钥包括用于实施elgamal算法的第一私钥、以及用于实施rsa算法的第二私钥,在所述公钥密钥池中存储有与所述第一私钥相对应的第一公钥,以及与所述第二私钥相对应的第二公钥,且第一公钥与第二公钥在密钥卡内的存储地址相关;

参与方包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现所述的抗量子计算非对称加密方法。

本发明中,使用的密钥卡是独立的硬件隔离设备。公钥、私钥和真随机数等其他相关参数均在服务器内生成,在密钥卡中存储,被恶意软件或恶意操作窃取密钥的可能性大大降低,也不会被量子计算机获取并破解。由于公钥并不在网络中传输,以及相关参数均在网络中传输的仅为公钥的指针地址,所以通信双方的公私钥被窃取破解的可能性较低。在群组中,对象间加密后所得的c1通过非对称加密或者对称加密后进行发送,且非对称加密算法的公钥不对群组外公开,所以相比经典的elgamal算法更加安全,且公私钥不容易被破解,保障了通信双方在群组中的通信安全。

附图说明

图1为公钥池公钥分布及公私钥对应关系图;

图2为实施例1中对象甲加密消息的流程图;

图3为实施例1中对象乙解密消息的流程图;

图4为实施例2中对象甲加密消息的流程图;

图5为实施例2中对象乙解密消息的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了更好地描述和说明本申请的实施例,可参考一幅或多幅附图,但用于描述附图的附加细节或示例不应当被认为是对本申请的发明创造、目前所描述的实施例或优选方式中任何一者的范围的限制。

应该理解的是,除非本文中有明确的说明,各步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

本发明实现场景为群组内任意拥有非对称密钥池的两个对象甲、乙。本发明中的密钥卡不仅可以存储大量的数据,还具有处理信息的能力。本发明中,对象甲和对象乙的本地系统中都存在相应需求的算法。

密钥卡的描述可见申请号为“201610843210.6”的专利申请。当为移动终端时,密钥卡优选为密钥sd卡;当为固定终端时,密钥卡优选为密钥usbkey或主机密钥板卡。

与申请号为“201610843210.6”的专利申请相比,密钥卡的颁发机制有所不同。本发明的密钥卡颁发方为密钥卡的主管方,一般为群组的管理部门,例如某企业或事业单位的管理部门;密钥卡被颁发方为密钥卡的主管方所管理的成员,一般为某企业或事业单位的各级员工。用户端首先到密钥卡的主管方申请开户。当用户端进行注册登记获批后,将得到密钥卡(具有唯一的密钥卡id)。密钥卡存储了客户注册登记信息。密钥卡中的用户侧密钥都下载自同一个密钥管理服务站,且对同一个密钥卡的主管方来说,其颁发的每个密钥卡中存储的密钥池是完全一致的。优选为,密钥卡中存储的密钥池大小可以是1g、2g、4g、8g、16g、32g、64g、128g、256g、512g、1024g、2048g、4096g等等。

密钥卡从智能卡技术上发展而来,是结合了真随机数发生器(优选为量子随机数发生器)、密码学技术、硬件安全隔离技术的身份认证和加解密产品。密钥卡的内嵌芯片和操作系统可以提供密钥的安全存储和密码算法等功能。由于其具有独立的数据处理能力和良好的安全性,密钥卡成为私钥和密钥池的安全载体。每一个密钥卡都有硬件pin码保护,pin码和硬件构成了用户使用密钥卡的两个必要因素。即所谓“双因子认证”,用户只有同时取得保存了相关认证信息的密钥卡和用户pin码,才可以登录系统。即使用户的pin码被泄露,只要用户持有的密钥卡不被盗取,合法用户的身份就不会被仿冒;如果用户的密钥卡遗失,拾到者由于不知道用户pin码,也无法仿冒合法用户的身份。

密钥卡在注册时,密钥管理服务器会指定密钥卡一个群组身份,并给予群组内的id。密钥卡会被写入一个公钥密钥池。服务器在创建一个群组时会产生与群组成员个数相同的用于elgamal加密的公私钥对和用于rsa加密算法的公私钥对。所有的elgamal算法公钥和rsa算法公钥会写入到同一个文件内组成公钥文件,elgamal算法公钥与rsa算法公钥相互隔开,具体放置方式如图1所示。在密钥卡注册时,服务器除了会将公钥文件存储在密钥卡内,同时还会将未分配的elgamal算法私钥中随机选取一个分配给该密钥卡并将对应的公钥指针地址存储在密钥卡内,公钥指针地址用于查找与私钥成对的公钥。同时,将上述对应公钥的下一个指针地址的rsa算法公钥所对应的rsa算法私钥存储在该密钥卡内。另外,密钥卡内存储有循环群g的参数{g,q,g},循环群g为服务器创建群组时定义的,用于elgamal算法的公私钥生成和加解密。

设本系统密钥协商的对象分别为对象甲和对象乙。对象甲为消息的发送方,对象乙为消息的接收方。设对象甲对应的elgamal算法公私钥对为(a,a),a为公钥,a为私钥;对象乙对应的elgamal算法公私钥对为(b,b),b为公钥,b为私钥,并且a和b均处于{1,…,q-1}范围内。假设对象甲的rsa算法公私钥为(ea,da),对象乙的rsa算法公私钥为(eb,db)。

结合图1,本发明中参与方配置有密钥卡,密钥卡内存储有公钥密钥池以及私钥,以成员1为例,其他成员同理,所述私钥包括:

用于实施elgamal算法的第一私钥,即图中的elgamal私钥1;

用于实施rsa算法的第二私钥,即图中的rsa私钥1;

在所述公钥密钥池中存储有与所述第一私钥相对应的第一公钥,即图中的elgamal公钥1~n;以及与所述第二私钥相对应的第二公钥,即图中的rsa公钥1~n。

第一公钥与第二公钥在密钥卡内的存储地址相关;针对同一用户的第一公钥和第二公钥在密钥卡内的存储地址相邻。例如图中的elgamal公钥1与rsa公钥1存储地址相邻。

本申请的基于非对称密钥池的抗量子计算非对称加密方法,加密时包括:

从密钥卡中获得与接收方相应的第一公钥和第二公钥;

向颁发所述密钥卡的密钥管理服务站发送请求,并从所述密钥管理服务站获得与接收方相应的公钥指针地址;

依据所述公钥指针地址从密钥卡中获得与接收方相应的第一公钥和第二公钥。

由于发送方密钥卡中,存储了与多个用户对应的公钥,因此就某个具体用户而言,其对应的公钥位置需要向颁发所述密钥卡的密钥管理服务站请求获得,具体包括:

向颁发所述密钥卡的密钥管理服务站发送请求,并从所述密钥管理服务站获得与接收方相应的公钥指针地址;

依据所述公钥指针地址从密钥卡中获得与接收方相应的第一公钥和第二公钥。

发送方得到第一公钥和第二公钥后,再利用第一公钥生成共享密钥,并利用共享密钥加密消息原文得到第一密文;

所述密钥卡内存储有循环群g的参数{g,q,g},生成所述共享密钥时,包括:

生成第一真随机数,利用该真随机数得到处于{1,…,q-1}范围内的参数k;所述第一公钥与参数k进行运算得到所述共享密钥。

利用共享密钥加密消息原文得到第一密文时,包括:

将消息原文映射到循环群g中的元素m;

将元素m与共享密钥进行运算得到所述第一密文。

发送方得到第一公钥和第二公钥后,还利用第二公钥将生成共享密钥的相关信息加密得到第二密文。

得到第二密文有两种方式,其一为利用第二公钥将生成共享密钥的相关信息加密得到第二密文时,包括:

计算生成共享密钥的相关信息,所述相关信息为c1=g^k;

将所述相关信息与第二公钥进行运算得到所述第二密文。

得到第二密文的第二种为:

发送方生成第二真随机数;

利用所述第二真随机数,对生成共享密钥的相关信息加密得到第一部分,所述相关信息为c1=g^k;

利用第二公钥加密第二真随机数得到第二部分;

所述第一部分和第二部分组成所述第二密文。

发送方得到第一密文和所述第二密文后,将所述第一密文和所述第二密文发送至接收方以供解密获得消息原文。

接收方解密时包括:

接收来自发送方的所述第一密文和所述第二密文;

利用第二私钥解密第二密文,得到生成共享密钥的相关信息;

利用生成共享密钥的相关信息、结合第一私钥得到共享密钥;

利用共享密钥解密第一密文得到消息原文。

以下结合图2~图5进一步详细说明加解密过程。

实施例1

步骤1:对象甲生成共享密钥,并加密消息发送至对象乙

1.1对象甲取得对象乙公钥:对象甲向颁发密钥卡的密钥管理服务站发送获取对象乙对应的公钥指针地址的请求,密钥管理服务站向对象甲返回对象乙的公钥指针地址pb。对象甲根据指针地址pb从公钥池文件中取出对象乙所对应elgamal公钥b=g^b,即得到第一公钥。

对象甲根据指针地址(pb+1)从公钥池文件中取出对象乙所对应的rsa公钥eb,即得到第二公钥。

1.2对象甲计算共享密钥:对象甲产生一个真随机数r即第一随机数。对象甲利用指定算法计算随机数序列r得到处于{1,…,q-1}范围内的k。对象甲计算得到c1=g^k,同时计算得到共享密钥s=b^k。

1.3对象甲加密消息,并发送给对象乙:对象甲将消息原文m映射到g的一个元素得到m。对象甲计算得到c2=m·s,相当于得到第一密文。

对象甲利用rsa公钥eb对c1进行rsa加密计算得到{c1}eb,相当于得到第二密文。

对象甲将c2和{c1}eb组合得到({c1}eb,c2),并将({c1}eb,c2)发送到对象乙。

步骤2:对象乙生成密钥并解密消息

2.1对象乙解析消息:对象乙接收到来自对象甲的消息({c1}eb,c2)’,并解析得到{c1}eb’和c2’。

2.2对象乙解密得到c1:对象乙利用己方的rsa算法私钥db即第二私钥对{c1}eb’进行rsa解密算法计算得到c1’。

对象乙取出己方的elgamal算法私钥b即第一私钥,并计算得到共享密钥s’=c1’^b。

2.3对象乙解密得到消息明文:对象乙利用共享密钥s’和密文消息c2’进行解密计算得到m’=c2’·s’-1。s-1是s在群g上的逆元。利用m’映射到循环群g得到消息原文m’。

根据上述描述可知,m’=c2’·s’-1=m·bk·(c1’b)-1=m·gbk·g-kb=m,即可实施相应的加密和解密。

实施例2

步骤1:对象甲生成共享密钥,并加密消息发送至对象乙

1.1对象甲取得对象乙公钥:该步骤同实施例1的步骤1.1。

1.2对象甲计算共享密钥:该步骤同实施例1的步骤1.2。

1.3对象甲加密消息,并发送给对象乙:对象甲将消息原文m映射到g的一个元素得到m。对象甲计算得到c2=m·s,相当于得到第一密文。

对象甲产生一个真随机数kt即第二随机数,将kt作为密钥对c1进行对称加密得到{c1}kt,即得到第一部分。

对象甲利用eb对kt进行rsa加密计算得到{kt}eb,即得到第二部分。

第一部分和第二部分组成第二密文,即{c1}kt和{kt}eb。

对象甲将c2、{c1}kt和{kt}eb组合得到({c1}kt,{kt}eb,c2),并将({c1}kt,{kt}eb,c2)发送到对象乙。

步骤2:对象乙生成密钥并解密消息

2.1对象乙解析消息:对象乙接收到来自对象甲的消息({c1}kt,{kt}eb,c2)’,并解析得到{c1}kt’、{kt}eb’和c2’。

2.2对象乙解密得到c1:对象乙利用己方的rsa算法私钥db即第二私钥对{kt}eb’进行rsa解密算法计算得到kt’。

对象乙利用kt’对{c1}kt’进行指定的对称算法解密得到c1’。对象乙取出己方的elgamal算法私钥b即第一私钥,并计算得到共享密钥s’=c1’^b。

2.3对象乙解密得到消息明文:对象乙利用共享密钥s’和密文消息c2’进行解密计算得到m’=c2’·s’-1。s-1是s在群g上的逆元。利用m’映射到循环群g得到消息原文m’。

根据上述描述可知,m’=c2’·s’-1=m·bk·(c1’b)-1=m·gbk·g-kb=m,即可实施相应的加密和解密。

在一个实施例中,提供了一种基于非对称密钥池的抗量子计算非对称加密系统,参与方配置有密钥卡,密钥卡内存储有公钥密钥池以及私钥,所述私钥包括用于实施elgamal算法的第一私钥、以及用于实施rsa算法的第二私钥,在所述公钥密钥池中存储有与所述第一私钥相对应的第一公钥,以及与所述第二私钥相对应的第二公钥,且第一公钥与第二公钥在密钥卡内的存储地址相关;

所述抗量子计算非对称加密系统,包括:

第一模块,用于从密钥卡中获得与接收方相应的第一公钥和第二公钥;

第二模块,用于利用第一公钥生成共享密钥,并利用共享密钥加密消息原文得到第一密文;

第三模块,用于利用第二公钥将生成共享密钥的相关信息加密得到第二密文;

第四模块,用于将所述第一密文和所述第二密文发送至接收方以供解密获得消息原文。

在一个实施例中,所述抗量子计算非对称加密系统,还包括:

第五模块,用于接收来自发送方的所述第一密文和所述第二密文;

第六模块,用于利用第二私钥解密第二密文,得到生成共享密钥的相关信息;

第七模块,用于利用生成共享密钥的相关信息、结合第一私钥得到共享密钥;

第八模块,用于利用共享密钥解密第一密文得到消息原文。

关于抗量子计算非对称加密系统的具体限定可以参见上文中对于抗量子计算非对称加密的限定,在此不再赘述。上述各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,即一种基于非对称密钥池的抗量子计算非对称加密系统,该计算机设备可以是终端,其内部结构可以包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述抗量子计算非对称加密方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

其中一实施例中,提供一种基于非对称密钥池的抗量子计算非对称加密系统,参与方配置有密钥卡,密钥卡内存储有公钥密钥池以及私钥,所述私钥包括用于实施elgamal算法的第一私钥、以及用于实施rsa算法的第二私钥,在所述公钥密钥池中存储有与所述第一私钥相对应的第一公钥,以及与所述第二私钥相对应的第二公钥,且第一公钥与第二公钥在密钥卡内的存储地址相关;

参与方包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现所述的抗量子计算非对称加密方法。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1