本发明涉及信息安全技术领域,具体地涉及一种组合公钥cpk的密钥生成方法、装置及存储介质。
背景技术:
cpk(combinedpublickey,组合公钥)是国际上第一个具有数字签名和密钥加密功能的基于标识的公钥体制。cpk编制简练,组合量极大,运算速度极快。但是随着网络的发展,网络犯罪也日益猖獗。而且随着量子计算机的出世,其犯罪技术也日益精悍,给传统的公钥体制提出了新的挑战,迫使人们采用使穷举运算失效的新技术。
技术实现要素:
本发明实施例的目的是提供一种组合公钥cpk的密钥生成方法、装置及存储介质,将密钥分成两部分分别存放,提高了用户密钥的安全性。
为了实现上述目的,本发明实施例提供一种cpk的密钥生成方法,所述方法应用于服务中心svc,包括:接收客户端发送的密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部;将加密后的所述密钥前半部发送给所述客户端,以便所述客户端根据所述密钥前半部与本地存储的密钥后半部得到待使用的密钥。
进一步地,当所述密钥申请类型为签名私钥前半部时,所述根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部包括:采集第一网络时间;根据hashhkey1(time1-alice)=a0,a1,a2,…,a15,映射得到第一映射序列a0,a1,a2,…,a15,其中,alice为所述用户标识,time1是所述第一网络时间,hkey1为所述第一映射密钥;根据
进一步地,当所述密钥申请类型为脱密私钥前半部时,所述密钥申请消息中还包括第二网络时间,所述根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部包括:根据hashhkey1(time2-alice)=b0,b1,b2,…,b15,映射得到第二映射序列b0,b1,b2,…,b15,其中,alice为所述用户标识,time2是所述第二网络时间,hkey1为所述第一映射密钥;根据
进一步地,当所述密钥申请类型为验证公钥前半部时,所述密钥申请消息中还包括第一网络时间,所述根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部包括:根据hashhkey1(time1-alice)=a0,a1,a2,…,a15,映射得到第一映射序列a0,a1,a2,…,a15,其中,alice为所述用户标识,time1是所述第一网络时间,hkey1为所述第一映射密钥;根据
进一步地,当所述密钥申请类型为加密公钥前半部时,所述根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部包括:采集第二网络时间;根据hashhkey1(time2-alice)=b0,b1,b2,…,b15,映射得到第二映射序列b0,b1,b2,…,b15,其中,alice为所述用户标识,time2是所述第二网络时间,hkey1为第一映射密钥;根据
相应的,本发明实施例还提供一种cpk的密钥生成方法,所述方法应用于客户端,包括:向服务中心svc发送密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;接收所述svc返回的加密后的密钥前半部,并解密得到所述密钥前半部;将所述密钥前半部与本地存储的密钥后半部相加后得到待使用的密钥。
进一步地,当所述密钥申请类型为私钥前半部时,所述本地存储的密钥后半部通过下述方式获得:向密钥管理中心kmc发送私钥后半部申请消息,所述私钥后半部申请消息中包括用户标识以及私钥申请类型。
进一步地,当所述密钥申请类型为公钥前半部时,所述本地存储的密钥后半部通过下述方式获得:根据hashhkey2(alice)=c0,c1,c2,…,c15,映射得到映射序列c0,c1,c2,…,c15,其中,alice为所述用户标识,hkey2为所述第二映射密钥;根据所述映射序列以及公钥矩阵的后半部,得到所述本地存储的公钥后半部。
进一步地,当所述密钥申请类型为加密公钥前半部时,所述根据所述映射序列以及公钥矩阵的后半部,得到所述本地存储的公钥后半部包括:根据
进一步地,当所述密钥申请类型为验证公钥前半部时,所述根据所述映射序列以及公钥矩阵的后半部,得到所述本地存储的公钥后半部包括:根据
相应的,本发明实施例还提供一种组合公钥cpk的密钥生成装置,所述装置应用于服务中心svc,包括:接收模块,用于接收客户端发送的密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;密钥生成模块,用于根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部;发送模块,用于将加密后的所述密钥前半部发送给所述客户端,以便所述客户端根据所述密钥前半部与本地存储的密钥后半部得到待使用的密钥。
相应的,本发明实施例还提供一种组合公钥cpk的密钥生成装置,所述装置应用于客户端,包括:发送模块,用于向服务中心svc发送密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;接收模块,用于接收所述svc返回的加密后的密钥前半部,并解密得到所述密钥前半部;密钥合成模块,用于将所述密钥前半部与本地存储的密钥后半部相加后得到待使用的密钥。
相应的,本发明实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有指令,该指令用于使得机器执行应用于svc的cpk的密钥生成方法和/或应用于客户端的cpk的密钥生成方法。
通过上述技术方案,将密钥分成两部分分别存放,提高了用户密钥的安全性。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是本发明实施例提供的一种cpk的密钥生成方法的流程示意图;
图2是本发明实施例提供的各个密钥的生成图谱的示意图;
图3是本发明实施例提供的另一种cpk的密钥生成方法的流程示意图;
图4是本发明实施例提供的又一种cpk的密钥生成方法的流程示意图;
图5是本发明实施例提供的另一种cpk的密钥生成方法的流程示意图;
图6是本发明实施例提供的一种cpk的密钥生成装置的结构示意图;
图7是本发明实施例提供的另一种cpk的密钥生成装置的结构示意图。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
虽然现有技术中的cpk体制编制简练,组合量极大,运算速度极快,但是,随着量子计算机的面世,宣布了所有公钥体制的“死亡”,于是不得不研究抗量子穷举的新体制。为了防止量子穷举,在本发明实施例中将密钥分成两部分分别存储,其中密钥的前半部由svc(servicecentre,服务中心)生成,密钥的后半部分由原来生成标识密钥的kmc(keymanagementcenter,密钥管理中心)负责,在本发明实施例中将由kmc生成的基于标识的密钥作为新密钥的后半部分,既可以利用原有的密钥,又可以由svc生成密钥的前半部,从而前半部与后半部相加后得到所要使用的新密钥,进一步提高了密钥的安全性。下面将详细描述本发明实施例。
实施例一
图1是本发明实施例提供的一种cpk的密钥生成方法的流程示意图。
如图1所示,所述方法应用于svc,所述方法包括如下步骤:
步骤101,接收客户端发送的密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;
步骤102,根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部;
步骤103,将加密后的所述密钥前半部发送给所述客户端,以便所述客户端根据所述密钥前半部与本地存储的密钥后半部得到待使用的密钥。
其中,在本发明实施例中将cpk的密钥矩阵设置为签名矩阵和加密矩阵,矩阵大小均为32x32。签名矩阵和加密矩阵又分别分为私钥矩阵和公钥矩阵,每一矩阵的前16列称前半部,后16列称后半部。签名私钥矩阵的前半部以ri,j表示,后半部以si,j表示,签名公钥矩阵的前半部以ri,j表示,后半部以si,j表示。加密私钥矩阵的前半部以ti,j表示,后半部以ui,j表示,加密公钥矩阵的前半部以ti,j表示,后半部ui,j表示。其中,签名私钥矩阵的前半部、签名公钥矩阵的前半部、加密私钥矩阵的前半部以及加密公钥矩阵的前半部均存储于svc内,而签名私钥矩阵的后半部以及加密私钥矩阵的后半部均存储于kmc内。对于签名公钥矩阵的后半部与加密公钥矩阵的后半部是对外公开的。
另外,由于密钥包括签名私钥、脱密私钥、验证公钥以及加密公钥,而每种密钥均包括前半部与后半部。因此,由图2所示的各个密钥的生成图谱可知,当客户端预要使用密钥时,均需要向svc申请密钥前半部(包括公钥前半部和私钥前半部),向kmc申请私钥后半部,而由于公钥矩阵的后半部是公开的,因此客户端本地可自行生成公钥后半部。
在本发明实施例中,svc接收到客户端发送的密钥申请消息后,从中提取所述密钥申请类型,并根据所述密钥申请类型进行不同的处理。其中,所述密钥申请类型包括签名私钥前半部、脱密私钥前半部、验证公钥前半部以及加密公钥前半部。下面分别针对密钥申请类型中的签名私钥前半部、脱密私钥前半部、验证公钥前半部以及加密公钥前半部进行描述。
a、当所述密钥申请类型为签名私钥前半部时,先采集第一网络时间,并根据hashhkey1(time1-alice)=a0,a1,a2,…,a15,映射得到第一映射序列a0,a1,a2,…,a15,其中,alice为所述用户标识,time1是所述第一网络时间,其精度为微秒级,hkey1为所述第一映射密钥。
其中,所述第一映射密钥hkey1用于矩阵前半部的映射,包括签名私钥矩阵的前半部、签名公钥矩阵的前半部、加密私钥矩阵的前半部以及加密公钥矩阵的前半部。
然后,根据
在得到所述签名私钥前半部之后,可利用svc与客户端之间预先设置的通道密钥,对所述第一网络时间与所述签名私钥前半部进行加密,并将加密后的信息发送至所述客户端,以便所述客户端解密得到所述第一网络时间与所述签名私钥前半部,并将所述签名私钥前半部与本地存储的签名私钥后半部相加得到签名私钥。其中,所述第一网络时间的发送是为了客户端在向其他用户发送验证信息时,对方可利用第一网络时间申请验证公钥前半部。
b、当所述密钥申请类型为脱密私钥前半部时,所述密钥申请消息中还包括第二网络时间,然后根据hashhkey1(time2-alice)=b0,b1,b2,…,b15,映射得到第二映射序列b0,b1,b2,…,b15,其中,alice为所述用户标识,time2是所述第二网络时间,其精度为微秒级,hkey1为所述第一映射密钥。
之后,根据
在得到所述脱密私钥前半部之后,同样可利用svc与客户端之间预先设置的通道密钥,对所述脱密私钥前半部加密后发送至客户端,以便客户端解密后得到脱密私钥前半部,并将所述脱密私钥前半部与本地存储的脱密私钥后半部相加得到签名私钥。
c、当所述密钥申请类型为验证公钥前半部时,所述密钥申请消息中还包括第一网络时间,根据hashhkey1(time1-alice)=a0,a1,a2,…,a15,映射得到第一映射序列a0,a1,a2,…,a15,其中,alice为所述用户标识,time1是所述第一网络时间,其精度为微秒级,hkey1为所述第一映射密钥。
然后,根据
在得到所述验证公钥前半部之后,同样可利用svc与客户端之间预先设置的通道密钥,对所述验证公钥前半部进行加密后发送至所述客户端,以便所述客户端解密得到所述验证公钥前半部,并将所述验证公钥前半部与本地存储的验证公钥后半部相加得到验证公钥。
d、当所述密钥申请类型为加密公钥前半部时,先采集第二网络时间,然后根据hashhkey1(time2-alice)=b0,b1,b2,…,b15,映射得到第二映射序列b0,b1,b2,…,b15,其中,alice为所述用户标识,time2是所述第二网络时间,其精度为微秒级,hkey1为第一映射密钥。
之后,根据
在得到所述加密公钥前半部之后,同样可利用svc与客户端之间预先设置的通道密钥,对所述第二网络时间与所述加密公钥前半部进行加密,并将加密后的信息发送至所述客户端,以便所述客户端解密得到所述第二网络时间与所述加密公钥前半部,并将所述加密公钥前半部与本地存储的加密公钥后半部相加得到加密公钥。
通过上述四种类型的密钥前半部生成可知,当用户标识与网络时间相同时,所映射得到的映射序列就相同,从而得到的私钥前半部与公钥前半部即存在对应关系。例如,当用户标识为alice,网络时间为time1,则在生成签名私钥前半部和验证公钥前半部时,得到的映射序列均为a0,a1,a2,…,a15,即对应指示签名私钥矩阵的前半部的行坐标与签名公钥矩阵的前半部的行坐标。同样的,当用户标识为alice,网络时间为time2,则在生成加密公钥前半部与脱密私钥前半部时,得到的映射序列均为b0,b1,b2,…,b15,即对应指示加密公钥矩阵的前半部的行坐标与加密私钥矩阵的前半部的行坐标。
通过本发明实施例,将签名矩阵和加密矩阵分开,签名作业和加密作业各自独立,互不影响;矩阵的前半部和后半部分开,矩阵的前半部放在svc中保密,而后半部放在kmc和客户端中公布。由于矩阵分别存放,杜绝了svc和kmc单独作案的可能性,因为kmc只能对密钥的后半部有权限,而svc只能对密钥的前半部有权限。密钥的分开分发,进一步提高了密钥的安全性。
实施例二
图3是本发明实施例提供的一种cpk的密钥生成方法的流程示意图。
如图3所示,所述方法应用于客户端,包括如下步骤:
步骤301,向svc发送密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;
步骤302,接收所述svc返回的加密后的密钥前半部,并解密得到所述密钥前半部;
步骤303,将所述密钥前半部与本地存储的密钥后半部相加后得到待使用的密钥。
其中,客户端预要使用密钥,均需要向svc申请密钥前半部。在向svc发送的密钥申请消息中通过密钥申请类型表明客户端需要申请的是哪一类密钥前半部。其中,所述密钥申请类型包括签名私钥前半部、脱密私钥前半部、验证公钥前半部以及加密公钥前半部。
在客户端与svc之间预先设置通道密钥,当接收到svc返回的经由通道密钥加密后的密钥前半部之后,解密得到预要申请的密钥前半部。
当所述密钥申请类型为私钥前半部(包括签名私钥和脱密私钥)时,由图2可知,私钥后半部可向kmc申请,因此,客户端向kmc发送私钥后半部申请消息,所述私钥后半部申请消息中包括用户标识以及私钥申请类型。其中,当需要申请签名私钥后半部时,则所述私钥申请类型为签名私钥后半部,当需要申请脱密私钥后半部时,所述私钥申请类型为脱密私钥后半部。客户端向kmc申请私钥后半部的具体流程可参见相关技术中由kmc生成基于标识的私钥申请过程,此处不再赘述。在通过kmc得到私钥后半部之后,将所述私钥前半部与所述私钥后半部直接相加即可得到待使用的私钥,例如,私钥前半部为alice′,私钥后半部为alice″,由alice=alice″ alice′,得到私钥alice。
当所述密钥申请类型为公钥前半部(包括验证公钥和加密公钥)时,由图2可知,公钥后半部由客户端自行生成:
首先,根据hashhkey2(alice)=c0,c1,c2,…,c15,映射得到映射序列c0,c1,c2,…,c15,其中,alice为所述用户标识,hkey2为所述第二映射密钥。其中,所述第二映射密钥专门用于矩阵后半部的映射,且处于公开状态。之后,客户端可根据所述映射序列以及公钥矩阵的后半部,得到所述本地存储的公钥后半部。其中,对于公钥矩阵的选取,则与申请密钥类型有关。
具体的,当客户端向svc申请加密公钥前半部时,即所述密钥申请类型为加密公钥前半部,则可根据
当客户端向svc申请验证公钥前半部时,即所述密钥申请类型为验证公钥前半部,则可根据
之后,即可将得到的公钥前半部与本地生成的公钥后半部相加,即可得到待使用的公钥,例如,公钥前半部为alice′,公钥后半部为alice″,由alice′ alice″=alice,从而得到公钥alice。
通过本发明实施例,客户端所持有的仅是私钥后半部与公钥矩阵的后半部。即使上述数据都丢失了,也不影响安全,如手机整机内容被复制了,甚至丢失了,手机也不怕,即不怕破译者的静态分析。因为,其无法获得私钥前半部,即无法得到整个私钥。这个特性提供了另一种应用,比如一个传感器,只要有一个标识,其它签名、验证等工作可以委托其他部件进行,因此对器件的要求可以不高,因此应用范围极广。
实施例三
为了便于理解本发明实施例,下面通过两个客户端之间的数字签名过程来描述客户端、svc与kmc之间的交互过程。其中,svc管理私钥矩阵的前半部(包括加密私钥矩阵的前半部与签名私钥矩阵的前半部)、公钥矩阵的前半部(包括签名公钥矩阵的前半部与加密公钥矩阵的前半部)以及映射序列中使用的第一映射密钥,kmc管理私钥矩阵的后半部(包括加密私钥矩阵的后半部与签名私钥矩阵的后半部),签名公钥矩阵的后半部、加密公钥矩阵的后半部以及在映射序列中使用的第二映射密钥是公布的,客户端在获取到用户标识的时刻,可自行生成任何公钥后半部。
如图4所示,两个客户端分别为alice与bob,alice进行签名,bob进行验证,包括如下步骤:
步骤401,alice向svc发送签名私钥前半部申请消息,该消息中包括用户标识alice以及密钥申请类型,该密钥申请类型为签名私钥前半部;
步骤402,svc接收所述签名私钥前半部申请消息,并采集当前的第一网络时间;
步骤403,svc根据所述用户标识、第一网络时间以及第一映射密钥,映射得到第一映射序列;
其中,根据hashhkey1(time1-alice)=a0,a1,a2,…,a15,映射得到第一映射序列a0,a1,a2,…,a15,其中,time1是所述第一网络时间,其精度为微秒级,hkey1为所述第一映射密钥。
步骤404,svc根据所述第一映射序列与签名私钥矩阵的前半部,得到所述签名私钥前半部;
其中,根据
步骤405,svc利用通道密钥将所述第一网络时间与所述签名私钥前半部经加密后发送给所述客户端alice;
步骤406,客户端alice接收到加密后的所述第一网络时间与所述签名私钥前半部后,利用通道密钥解密得到所述第一网络时间与所述签名私钥前半部;
步骤407,alice向kmc发送签名私钥后半部申请消息,所述消息中包括所述用户标识以及私钥申请类型,所述私钥申请类型为签名私钥后半部;
步骤408,kmc接收所述签名私钥后半部申请消息;
步骤409,kmc根据所述用户标识以及第二映射密钥,映射得到密钥后半部映射序列;
其中,根据hashhkey2(alice)=w0,w1,..,w15,映射得到密钥后半部映射序列w0,w1,..,w15,其中,hkey2为所述第二映射密钥。
步骤410,kmc根据所述密钥后半部映射序列以及签名私钥矩阵的后半部,得到签名私钥后半部;
其中,根据
步骤411,kmc将所述签名私钥后半部经通道密钥加密后发送至客户端alice;
步骤412,客户端alice接收加密后的所述签名私钥后半部,经通道密钥解密后得到所述签名私钥后半部。
其中,上述步骤407-412可在步骤401-406之间的任何一个步骤之前执行。
步骤413,客户端alice将签名私钥前半部与签名私钥后半部相加后,得到签名私钥;
其中,由alice=alice″ alice′,得到签名私钥alice。
步骤414,客户端alice利用签名私钥对待签名数据进行数字签名,得到签名后的数据;
其中,可参考现有技术中的数字签名的过程,实现对待签名数据h的数字签名:
选择随机数k,计算k*g=(x,y);c=(x y)2mod2m。s=k-1(h c*alice)modn,以sigalice(h)=(s,c)=sign标记,从而得到签名数据sign。
步骤415,客户端alice将验证信息发送至客户端bob,所述验证信息包括用户标识alice、签名数据、第一网络时间;
步骤416,客户端bob接收所述验证信息后,向svc发送验证公钥前半部申请消息,该消息中包括用户标识alice、第一网络时间以及密钥申请类型,该密钥申请类型为验证公钥前半部;
步骤417,svc根据所述用户标识alice、第一网络时间以及第一映射密钥,得到第一映射序列;
其中,根据hashhkey1(time1-alice)=a0,a1,a2,…,a15,映射得到第一映射序列a0,a1,a2,…,a15。
步骤418,svc根据所述第一映射序列以及签名公钥矩阵的前半部,得到验证公钥前半部;
其中,根据
步骤419,svc利用通道密钥将所述验证公钥前半部加密后发送至客户端bob;
步骤420,bob利用解密后的验证公钥前半部与本地存储的验证公钥后半部相加得到验证公钥;
其中,所述本地存储的验证公钥后半部可通过下述方式获得:
根据hashhkey2(alice)=c0,c1,c2,…,c15,映射得到映射序列c0,c1,c2,…,c15,其中,alice为所述用户标识,hkey2为所述第二映射密钥。
然后,根据所述映射序列以及公钥矩阵的后半部,得到所述本地存储的公钥后半部。即,根据
之后,将alice′ alice′′=alice,从而得到验证公钥alice。
步骤421,客户端bob利用验证公钥验证所述验证信息中的签名数据。
对于数字签名的验证可参考现有技术中的验证过程:
s-1*h*g s-1*c*alice=(x,y);c’=(x y)2mod2m;以veralice(h,s)=c’标记。
其中,当验证c与c’相同时,则确定所述签名数据为真。
通过本发明实施例,将矩阵分为签名矩阵和加密矩阵,签名作业和加密作业各自独立,互不影响。另外,矩阵的前半部和后半部分开,矩阵的前半部放在svc中保密,而后半部放在kmc和客户端中公布。由于分别存放,杜绝了svc和kmc单独作案的可能性,因为kmc只能对密钥的后半部有权限,而svc只能对密钥的前半部有权限。
客户所保有的密钥只是私钥的后半部,公钥矩阵的后半部。假如都丢失了也不影响安全,如手机整机内容被复制了,甚至丢失了手机也不怕,即不怕破译者的静态分析。这个特性提供了另一种应用,比如一个传感器,只要有一个标识,其它签名、验证等工作可以委托其他部件进行,因此对器件的要求可以不高,因此应用范围极广。
而且,在本申请是基于时刻映射,即时刻密钥起到一次一密的作用,可应用于数字货币系统中,保证现在发行的货币到量子时代也仍然有效。
另外,本申请中的设置灵活性高,根据工业互联网所参与的实体,对存储量的要求,运算速度要求,可以选择适当的密钥长度,适当的矩阵大小,可以满足不同业务需求。
实施例四
为了便于理解本发明实施例,下面通过两个客户端之间的加密过程来描述客户端、svc与kmc之间的交互过程。与实施例三中的设置相同,svc管理私钥矩阵的前半部、公钥矩阵的前半部以及映射序列中使用的第一映射密钥,kmc管理私钥矩阵的后半部,而签名公钥矩阵的后半部、加密公钥矩阵的后半部以及在映射序列中使用的第二映射密钥是公布的,客户端在获取到用户标识的时刻,可自行生成任何公钥后半部。
如图5所示,两个客户端分别为al与bl,bl向al发送加密数据,al接收加密数据后解密,包括如下步骤:
步骤501,bl向svc发送加密公钥前半部申请消息,该消息中包括用户标识al以及密钥申请类型,该密钥申请类型为加密公钥前半部;
步骤502,svc接收所述加密公钥前半部申请消息,并采集当前的第二网络时间;
步骤503,svc根据所述用户标识、第二网络时间以及第一映射密钥,映射得到第二映射序列;
其中,根据hashhkey1(time2-al)=b0,b1,b2,…,b15,映射得到第二映射序列b0,b1,b2,…,b15,其中,al为所述用户标识,time2是所述第二网络时间,其精度为微秒级,hkey1为第一映射密钥。
步骤504,svc根据所述第二映射序列与加密公钥矩阵的前半部,得到所述加密公钥前半部;
其中,根据
步骤505,svc利用通道密钥将所述第二网络时间与所述加密公钥前半部经加密后发送给所述客户端bl;
步骤506,客户端bl接收到加密后的所述第二网络时间与所述加密公钥前半部后,利用通道密钥解密得到所述第二网络时间与所述加密公钥前半部;
步骤507,客户端bl根据用户标识al以及第二映射密钥,映射得到映射序列;
其中,根据hashhkey2(al)=c0,c1,c2,…,c15,映射得到映射序列c0,c1,c2,…,c15,其中,al为所述用户标识,hkey2为所述第二映射密钥。
步骤508,根据所述映射序列以及加密公钥矩阵的后半部,得到所述本地存储的加密公钥后半部;
其中,根据
其中,上述步骤507-508可在步骤501-506之间的任何一个步骤之前执行。
步骤509,客户端bl将加密公钥前半部与加密公钥后半部相加后,得到加密公钥;
其中,根据al′ al″=al,从而得到加密公钥al。
步骤510,客户端bl根据加密密钥、加密公钥以及数据,得到加密信息。
其中,客户端bl生成随机数r,计算加密密钥r*g=key,其中g为椭圆曲线的基点,并利用加密密钥key对数据data进行加密,得到ekey(data)=code,然后利用加密公钥对加密密钥进行加密encal(key)=β。之后,发送加密消息msg={code,β}。其中,e为对称密钥的加密函数,enc为非对称密钥的加密函数。
步骤511,客户端bl将加密信息以及第二网络时间发送至客户端al;
步骤512,当客户端al接收到加密信息与第二网络时间之后,向svc发送脱密私钥前半部申请消息,其中所述脱密私钥前半部申请消息包括用户标识al、第二网络时间以及私钥申请类型;
步骤513,svc接收所述脱密私钥前半部申请消息;
步骤514,svc根据所述用户标识、第二网络时间以及第一映射密钥,映射得到第二映射序列;
其中,根据hashhkey1(time2-al)=b0,b1,b2,…,b15,映射得到第二映射序列b0,b1,b2,…,b15,其中,al为所述用户标识,time2是所述第二网络时间,hkey1为所述第一映射密钥。
步骤515,svc根据所述第二映射序列与加密私钥矩阵的前半部,得到所述脱密私钥前半部;
其中,根据
步骤516,svc利用通道密钥将所述脱密私钥前半部经加密后发送给所述客户端al;
步骤517,客户端al接收到加密后的所述脱密私钥前半部后,利用通道密钥解密得到所述脱密私钥前半部;
步骤518,向kmc发送脱密私钥后半部申请消息,所述脱密私钥后半部申请消息包括用户标识al以及私钥申请类型,所述私钥申请类型为脱密私钥后半部。其中,当客户端al接收到加密信息之后,可同时向svc和kmc发送私钥申请消息。
步骤519,kmc接收所述脱密私钥后半部申请消息,根据所述用户标识以及第二映射密钥,映射得到密钥后半部映射序列;
其中,根据hashhkey2(al)=w0,w1,..,w15,映射得到密钥后半部映射序列w0,w1,..,w15,其中,hkey2为所述第二映射密钥。
步骤520,kmc根据所述密钥后半部映射序列以及加密私钥矩阵的后半部,得到脱密私钥后半部;
其中,根据
步骤521,kmc将所述脱密私钥后半部经通道密钥加密后发送至客户端al;
步骤522,客户端al接收加密后的所述脱密私钥后半部,经通道密钥解密后得到所述脱密私钥后半部;
步骤523,客户端al将脱密私钥前半部与脱密私钥后半部相加得到脱密私钥。
其中,将al″ al′=al,得到脱密私钥al。
步骤524,客户端al利用脱密私钥脱密得到加密信息中的数据。
其中,对于加密信息的脱密过程可参考现有技术中的脱密过程:
decal(β)=key,dkey(code)=data。其中,d为对称密钥的脱密函数,dec为非对称密钥的脱密函数。
实施例五
图6是本发明实施例提供的一种cpk的密钥生成装置的结构示意图。如图6所示,所述装置应用于服务中心svc,所述装置60包括:接收模块61,用于接收客户端发送的密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;密钥生成模块62,用于根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部;发送模块63,用于将加密后的所述密钥前半部发送给所述客户端,以便所述客户端根据所述密钥前半部与本地存储的密钥后半部得到待使用的密钥。
进一步地,当所述密钥申请类型为签名私钥前半部时,所述密钥生成模块具体用于:
采集第一网络时间;
根据hashhkey1(time1-alice)=a0,a1,a2,…,a15,映射得到第一映射序列a0,a1,a2,…,a15,其中,alice为所述用户标识,time1是所述第一网络时间,hkey1为所述第一映射密钥;
根据
所述发送模块具体用于:
将所述第一网络时间与所述签名私钥前半部经加密后发送给所述客户端。
进一步地,当所述密钥申请类型为脱密私钥前半部时,所述密钥申请消息中还包括第二网络时间,所述密钥生成模块具体用于:
根据hashhkey1(time2-alice)=b0,b1,b2,…,b15,映射得到第二映射序列b0,b1,b2,…,b15,其中,alice为所述用户标识,time2是所述第二网络时间,hkey1为所述第一映射密钥;
根据
进一步地,当所述密钥申请类型为验证公钥前半部时,所述密钥申请消息中还包括第一网络时间,所述密钥生成模块具体用于:
根据hashhkey1(time1-alice)=a0,a1,a2,…,a15,映射得到第一映射序列a0,a1,a2,…,a15,其中,alice为所述用户标识,time1是所述第一网络时间,hkey1为所述第一映射密钥;
根据
进一步地,当所述密钥申请类型为加密公钥前半部时,所述密钥生成模块具体用于:
采集第二网络时间;
根据hashhkey1(time2-alice)=b0,b1,b2,…,b15,映射得到第二映射序列b0,b1,b2,…,b15,其中,alice为所述用户标识,time2是所述第二网络时间,hkey1为第一映射密钥;
根据
所述发送模块具体用于:
将所述第二网络时间与所述加密公钥前半部经加密后发送给所述客户端。
在本实施例中,cpk的密钥生成装置60中:接收模块61、密钥生成模块62和发送模块63的具体处理及其所带来的技术效果可参考图1、4、5对应实施例中的相关说明,在此不再赘述。
实施例六
图7是本发明实施例提供的一种cpk的密钥生成装置的结构示意图。如图7所示,所述装置应用于客户端,所述装置70包括:发送模块71,用于向服务中心svc发送密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;接收模块72,用于接收所述svc返回的加密后的密钥前半部,并解密得到所述密钥前半部;密钥合成模块73,用于将所述密钥前半部与本地存储的密钥后半部相加后得到待使用的密钥。
进一步地,当所述密钥申请类型为私钥前半部时,所述发送模块还用于通过下述方式获得所述本地存储的密钥后半部:
向密钥管理中心kmc发送私钥后半部申请消息,所述私钥后半部申请消息中包括用户标识以及私钥申请类型。
进一步地,当所述密钥申请类型为公钥前半部时,所述装置70还包括:
公钥后半部生成模块74,用于通过下述方式获得所述本地存储的密钥后半部:
根据hashhkey2(alice)=c0,c1,c2,…,c15,映射得到映射序列c0,c1,c2,…,c15,其中,alice为所述用户标识,hkey2为所述第二映射密钥;
根据所述映射序列以及公钥矩阵的后半部,得到所述本地存储的公钥后半部。
进一步地,当所述密钥申请类型为加密公钥前半部时,所述公钥后半部生成模块还用于:根据
进一步地,当所述密钥申请类型为验证公钥前半部时,所述公钥后半部生成模块还用于:
根据
在本实施例中,cpk的密钥生成装置70中:发送模块71、接收模块72、密钥合成模块73和公钥后半部生成模块74的具体处理及其所带来的技术效果可参考图3、4、5对应实施例中的相关说明,在此不再赘述。
相应地,本发明实施例还提供了一种机器可读存储介质,所述机器可读存储介质上存储有指令,该指令用于使得机器执行应用于svc的cpk的密钥生成方法和/或应用于客户端的cpk的密钥生成方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
1.一种组合公钥cpk的密钥生成方法,其特征在于,所述方法应用于服务中心svc,包括:
接收客户端发送的密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;
根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部;
将加密后的所述密钥前半部发送给所述客户端,以便所述客户端根据所述密钥前半部与本地存储的密钥后半部得到待使用的密钥。
2.根据权利要求1所述的组合公钥cpk的密钥生成方法,其特征在于,当所述密钥申请类型为签名私钥前半部时,所述根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部包括:
采集第一网络时间;
根据hashhkey1(time1-alice)=a0,a1,a2,…,a15,映射得到第一映射序列a0,a1,a2,…,a15,其中,alice为所述用户标识,time1是所述第一网络时间,hkey1为所述第一映射密钥;
根据
所述将加密后的所述密钥前半部发送给所述客户端包括:
将所述第一网络时间与所述签名私钥前半部经加密后发送给所述客户端。
3.根据权利要求1所述的组合公钥cpk的密钥生成方法,其特征在于,当所述密钥申请类型为脱密私钥前半部时,所述密钥申请消息中还包括第二网络时间,所述根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部包括:
根据hashhkey1(time2-alice)=b0,b1,b2,…,b15,映射得到第二映射序列b0,b1,b2,…,b15,其中,alice为所述用户标识,time2是所述第二网络时间,hkey1为所述第一映射密钥;
根据
4.根据权利要求1所述的组合公钥cpk的密钥生成方法,其特征在于,当所述密钥申请类型为验证公钥前半部时,所述密钥申请消息中还包括第一网络时间,所述根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部包括:
根据hashhkey1(time1-alice)=a0,a1,a2,…,a15,映射得到第一映射序列a0,a1,a2,…,a15,其中,alice为所述用户标识,time1是所述第一网络时间,hkey1为所述第一映射密钥;
根据
5.根据权利要求1所述的组合公钥cpk的密钥生成方法,其特征在于,当所述密钥申请类型为加密公钥前半部时,所述根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部包括:
采集第二网络时间;
根据hashhkey1(time2-alice)=b0,b1,b2,…,b15,映射得到第二映射序列b0,b1,b2,…,b15,其中,alice为所述用户标识,time2是所述第二网络时间,hkey1为第一映射密钥;
根据
所述将加密后的所述密钥前半部发送给所述客户端包括:
将所述第二网络时间与所述加密公钥前半部经加密后发送给所述客户端。
6.一种组合公钥cpk的密钥生成方法,其特征在于,所述方法应用于客户端,包括:
向服务中心svc发送密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;
接收所述svc返回的加密后的密钥前半部,并解密得到所述密钥前半部;
将所述密钥前半部与本地存储的密钥后半部相加后得到待使用的密钥。
7.根据权利要求6所述的组合公钥cpk的密钥生成方法,其特征在于,当所述密钥申请类型为公钥前半部时,所述本地存储的密钥后半部通过下述方式获得:
根据hashhkey2(alice)=c0,c1,c2,…,c15,映射得到映射序列c0,c1,c2,…,c15,其中,alice为所述用户标识,hkey2为所述第二映射密钥;
根据所述映射序列以及公钥矩阵的后半部,得到所述本地存储的公钥后半部。
8.一种组合公钥cpk的密钥生成装置,其特征在于,所述装置应用于服务中心svc,包括:
接收模块,用于接收客户端发送的密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;
密钥生成模块,用于根据所述密钥申请类型、第一映射密钥以及密钥矩阵的前半部,生成密钥前半部;
发送模块,用于将加密后的所述密钥前半部发送给所述客户端,以便所述客户端根据所述密钥前半部与本地存储的密钥后半部得到待使用的密钥。
9.一种组合公钥cpk的密钥生成装置,其特征在于,所述装置应用于客户端,包括:
发送模块,用于向服务中心svc发送密钥申请消息,所述密钥申请消息中包括用户标识以及密钥申请类型;
接收模块,用于接收所述svc返回的加密后的密钥前半部,并解密得到所述密钥前半部;
密钥合成模块,用于将所述密钥前半部与本地存储的密钥后半部相加后得到待使用的密钥。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质上存储有指令,该指令用于使得机器执行所述权利要求1-5中的任一项所述的组合公钥cpk的密钥生成方法和/或所述权利要求6-7中的任一项所述的组合公钥cpk的密钥生成方法。
技术总结