密钥池的更新方法和系统与流程

文档序号:18104015发布日期:2019-07-06 11:31阅读:614来源:国知局
密钥池的更新方法和系统与流程

本发明涉及安全通信领域,尤其是一种密钥池的更新方法和系统。



背景技术:

技术国际互联网的广泛应用使得远在世界各个角落的互不相识的人们可以快速交换信息,共享信息资源。在交换的过程中,人们并不总是希望自己发出的信息被所有人获悉,处于种种考虑,发出信息的人只希望所发出的信息被与此有关的人获悉。为此人们使用密码对自己所发出的信息进行加密,只有配有相同密码的人才能解密信息。另外,在通过互联网把全球连接在一个如此广泛的网络世界的时代,出于全球电子商务和电子贸易的目的,人们需要使用统一的密码进行信息加密。因此在1975年公布的美国数据加密标准des。作为传统密码体制的des算法,使用时通信双方必须预先分配相同的密钥并妥善保管,在没有专门的密钥管理机构时,互不认识的通信双方如何预先得到所需的密钥,如何识别对方的身份,是一个非常重要的问题。这个问题可以归结到如何授权对方成为自己本次通信的唯一合法的通信伙伴,使其具有合法的权利和能力解密自己所发出去的密文。

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

1.客户端非对称密钥池颁发后,如果某客户端需要更新其公钥,没有合适的方法来更新客户端非对称密钥池。



技术实现要素:

基于此,有必要针对上述问题,提供一种密钥池的更新方法和系统。

一种密钥池的更新方法,实施在客户端,所述客户端配有密钥卡,所述密钥池存储在所述密钥卡中,所述更新方法包括:

生成数据文件,所述数据文件包括更新请求参数及第一随机数,所述第一随机数用于供服务器提取客户端公钥;

利用客户端私钥对运算后的所述数据文件加密获得数字签名;

利用服务器公钥加密所述数据文件以及所述数字签名获得第一加密消息,所述服务器公钥是利用所述密钥卡产生的第二随机数与所述密钥池结合提取;

将所述第一加密消息以及所述第二随机数发送至服务器,供服务器验证后发起密钥池更新。

在本实施例中,一个服务器对应多个客户端,服务器及客户端均有密钥卡,所有客户端密钥卡都是由服务器颁发,公钥和私钥都存储在密钥卡中。服务器密钥卡中拥有客户端非对称密钥池(公钥池)和服务器非对称密钥池(私钥池)两种密钥池;客户端密钥卡中拥有客户端非对称密钥池(公钥池)、服务器非对称密钥池(公钥池)和客户端私钥;其中客户端非对称密钥池(公钥池)中存储所有客户端的公钥,服务器非对称密钥池(私钥池)存储的是服务器的私钥,服务器非对称密钥池(公钥池)存储的是服务器的公钥。客户端非对称密钥池(公钥池)拥有每个客户端的公钥,每个公钥pk的存储位置可以用公钥指针随机数r确定;每个pk同时存储有一个pk生成时间tpk,该tpk是服务器获取到该pk的时间,即tpk统一由服务器确定。公钥指针随机数r同时用于作为客户端的id。

密钥卡中的公私钥来对更新客户端中密钥池的过程进行签名和加密,保证消息的保密性和可靠性。密钥池一直位于密钥卡中,密钥卡是独立的硬件隔离设备,被恶意软件或恶意操作窃取密钥可能性大大降低。

在其中一个实施例中,还包括:接收来自服务器的加密的更新文件,该更新文件为服务器对所述加密消息验证后生成,其更新文件中带有更新消息的数字签名、所述第二随机数及更新消息,所述更新消息包含数据文件及更新结果;对所述更新消息的数字签名验证通过后解析更新消息进密钥池更新。

在其中一个实施例中,更新消息的数字签名验证方法包括:

利用客户端私钥解密所述加密的更新文件;

利用所述第二随机数结合密钥卡提取服务器公钥,令该服务器公钥解密所述更新消息的数字签名获得更新消息摘要;

对所述更新文件内更新消息进行相应运算后获得的摘要值与更新消息摘要比较,实现更新消息的数字签名认证。

在其中一个实施例中,当所述更新请求参数包括客户端公钥、客户端公钥生成时间和客户端新公钥时,解析更新消息方法包括:将更新请求参数内的所述客户端公钥、所述客户端公钥生成时间与密钥卡内存储的客户端公钥、客户端公钥生成时间比较,确定相等后,客户端公钥池进行更新。

在其中一个实施例中,当所述更新请求参数包括通信客户端的公钥指针随机数、通信客户端公钥生成时间时,解析更新消息方法包括:

将更新结果内新公钥和新公钥生成时间替换密钥卡内记载的所述通信客户端公钥及公钥更新时间。

一种密钥池的更新方法,实施在服务器,所述服务器配有密钥卡,所述密钥池存储在所述密钥卡中,所述更新方法包括:

接收第一加密消息以及第二随机数,其中:所述第一加密消息是利用服务器公钥加密数据文件以及数字签名获得;

利用所述第二随机数与密钥卡内密钥池结合提取服务器私钥,利用该服务器私钥解密所述第一加密消息获得所述数据文件及数字签名,其中:所述数据文件包括更新请求参数及第一随机数,所述第一随机数用于供服务器提取客户端公钥;所述数字签名是利用客户端私钥对运算后的所述数据文件加密获得;

利用所述第一随机数对数字签名验证通过后解析数据文件发起密钥池更新。

在其中一个实施例中,还包括:生成更新文件,所述更新文件包括更新消息、第二随机数、更新消息的数字签名,所述更新消息包含数据文件及更新结果;

利用服务器私钥对对运算后的更新消息加密获得更新消息的数字签名,所述服务器私钥是利用所述密钥卡产生的第二随机数与所述密钥池结合提取;

利用客户端的客户端公钥对更新文件加密获得加密的更新文件;

将所述第一随机数以及所述加密的更新文件发送至客户端,待客户端验证后进行密钥池更新。

在其中一个实施例中,当所述更新请求参数包括客户端公钥、客户端公钥生成时间和客户端新公钥,解析数据文件步骤包括:

将所述服务器密钥卡内存储的客户端公钥、客户端公钥生成时间与获得的更新请求参数内的所述客户端公钥、所述客户端公钥生成时间比较,确定相等后,服务器发起密钥池更新。

在其中一个实施例中,当所述更新请求参数包括通信客户端的公钥指针随机数、通信客户端公钥生成时间,解析数据文件步骤包括:

将获得的更新请求参数内通信客户端公钥生成时间与服务器密钥卡内记载的所述通信客户端公钥生成时比较,若相等则无需更换客户端的公钥。

一种密钥池的更新系统,包括客户端和服务器,所述客户端和服务器均配有密钥卡,所述密钥池存储在所述密钥卡中,客户端将第一加密消息以及第二随机数发送至服务器,服务器利用所述第二随机数解密所述第一加密消息,其中第一加密消息是利用服务器公钥加密的数据文件及数字签名,所述服务器公钥是利用所述密钥卡产生的第二随机数与所述密钥池结合提取,所述数据文件包括更新请求参数及第一随机数,所述第一随机数用于供服务器提取客户端公钥;所述数字签名是利用客户端私钥对运算后的所述数据文件加密,所述服务器利用所述第一随机数对数字签名验证通过后解析数据文件发起密钥池更新。

上述一种密钥池的更新方法和系统,包括客户端和服务器,所述客户端和服务器均配有密钥卡,所述密钥池存储在所述密钥卡中,客户端将第一加密消息以及第二随机数发送至服务器,服务器利用所述第二随机数解密所述第一加密消息,其中第一加密消息是利用服务器公钥加密的数据文件及数字签名,所述服务器公钥是利用所述密钥卡产生的第二随机数与所述密钥池结合提取,所述数据文件包括更新请求参数及第一随机数,所述第一随机数用于供服务器提取客户端公钥;所述数字签名是利用客户端私钥对运算后的所述数据文件加密,所述服务器利用所述第一随机数对数字签名验证通过后解析数据文件发起密钥池更新,使用密钥卡存储客户端的公私钥和服务器中对应不同客户端的公私钥,根据随机数才能选择密钥卡中的公钥和私钥进行计算,而且整个计算过程中公钥和私钥不会出密钥卡,密钥卡是独立的硬件隔离设备,被恶意软件或恶意操作窃取密钥可能性大大降低。

附图说明

图1为本发明中使用的服务器密钥卡内部结构图;

图2为本发明中使用的客户端密钥卡内部结构图。

具体实施方式

本发明实施例中,一个服务器对应多个客户端,服务器及客户端均有密钥卡,所有客户端密钥卡都是由服务器颁发,公钥和私钥都存储在密钥卡中。

服务器密钥卡中拥有客户端非对称密钥池(公钥池)和服务器非对称密钥池(私钥池)两种密钥池;

客户端密钥卡中拥有客户端非对称密钥池(公钥池)、服务器非对称密钥池(公钥池)和客户端私钥;

其中客户端非对称密钥池(公钥池)中存储所有客户端的公钥,服务器非对称密钥池(私钥池)存储的是服务器的私钥,服务器非对称密钥池(公钥池)存储的是服务器的公钥。

客户端非对称密钥池(公钥池)拥有每个客户端的公钥,每个公钥pk的存储位置可以用公钥指针随机数r确定;每个pk同时存储有一个pk生成时间tpk,该tpk是服务器获取到该pk的时间,即tpk统一由服务器确定。公钥指针随机数r同时用于作为客户端的id。

在以下实施例中,客户端为客户端a和客户端b,客户端a和客户端b各自从颁发方得到密钥卡,服务器为s。

实施例1

步骤1.1:客户端a向s提出需要更新客户端a的客户端公钥pka

客户端a将自己的公钥指针随机数ra即第一随机数,用于提取客户端公钥pka、客户端公钥生成时间tpka和客户端新公钥pkanew组合起来得到ra||pka||tpka||pkanew,命名为数据文件ma。其中,更新请求参数包括客户端公钥pka、客户端公钥生成时间tpka和客户端新公钥pkanew,客户端a生成客户端新公钥pkanew的同时也生成了客户端新私钥skanew。

客户端a用自己的客户端私钥ska对数据文件ma进行签名,即用哈希算法对ma进行计算得到摘要hma,再用客户端私钥ska对摘要进行加密就可以得到数字签名{hma}ska,命名为数字签名sa。用服务器公钥pksa对应的公钥指针随机数rsa即第二随机数从密钥卡中对应密钥池内取出服务器公钥pksa,再用服务器公钥pksa加密数字签名sa和数据文件ma得到第一加密消息{ma||sa}pksa,再将第一加密消息{ma||sa}pksa和第二随机数rsa组合起来得到的rsa||{ma||sa}pksa发送给服务器s。

步骤1.2:服务器s处理客户端a的请求

服务器s收到客户端a发送过来的第二随机数和第一加密消息rsa||{ma||sa}pksa后,根据第二随机数rsa从服务器密钥卡的服务器非对称密钥池(私钥池)中取得对应a的服务器私钥sksa,用服务器私钥sksa去解密述第一加密消息{ma||sa}pksa得到数据文件及数字签名ma||sa,从而得到数字签名sa和数据文件ra||pka||tpka||pkanew。

根据第一随机数ra从服务器密钥卡的客户端非对称密钥池(公钥池)中取出a的客户端公钥pka,用客户端公钥pka验证数字签名sa。即用与客户端a相同的哈希算法对ma进行计算得到新的摘要hma’,再用客户端公钥pka对数字签名sa进行解密得到旧的摘要hma,将新的摘要和旧的摘要进行对比,如果相同则可以确认客户端a的身份,不然服务器s将拒绝更新密钥。

记录当前服务器时间tpkanew。服务器解析数据文件:验证从数据文件ma中解析得到的客户端公钥pka与客户端公钥生成时间tpka是否和从服务器密钥卡中取出的客户端公钥pka与客户端公钥生成时间tpka相等,如果相等则更换密钥卡中的客户端公钥pka为客户端新公钥pkanew,更换密钥卡中的客户端公钥生成时间tpka为tpkanew。

步骤1.3:服务器s向客户端a发送更新结果作为响应

更新消息包含数据文件及更新结果,如果更新成功,令更新消息mas=ma||tpkanew,如果更新失败,则令更新消息mas=ma||resulta,其中resulta为更新失败的原因。

服务器s用服务器私钥sksa对更新消息mas进行签名,与步骤1中客户端a签名的过程相似,得到签名{hmas}sksa,命名为更新消息的数字签名sas,其中hmas为更新消息摘要,签名用的服务器私钥的公钥指针随机数为rsa即第二随机数。服务器s用客户端的客户端公钥pka对更新文件加密得到第二加密消息{mas||rsa||sas}pka,所述更新文件包括更新消息mas、第二随机数rsa、更新消息的数字签名sas,再将第一随机数和第二加密消息ra||{mas||rsa||sas}pka发送给a。

步骤1.4:客户端a接受服务器s的响应

客户端a收到服务器s发送过来的消息ra||{mas||rsa||sas}pka后,用客户端私钥ska解密其中的加密的更新文件{mas||rsa||sas}pka得到更新文件mas||rsa||sas。

根据第二随机数rsa从密钥卡中取出服务器公钥pksa,用服务器公钥pksa验证更新消息的数字签名sas,验证过程与步骤1.2中服务器s验证签名过程相似,即对所述更新文件mas||rsa||sas内更新消息mas进行相应运算后获得的摘要值与更新消息摘要hmas比较,如果验证失败则更新密钥失败,流程结束,如果验证成功则进行接下来的步骤。

解析更新消息mas,如果得到的是resulta则更新失败,可以查看失败原因,流程结束;如果得到的是tpkanew,获取pka、tpka、pkanew、tpkanew。

验证从更新消息mas中解析得到的客户端公钥pka与客户端公钥生成时间tpka是否和从密钥卡中取出的客户端公钥pka与客户端公钥生成时间tpka相等,如果相等则更换密钥卡中的客户端公钥pka为客户端新公钥pkanew,更换密钥卡中的客户端公钥生成时间tpka为tpkanew。客户端a同时也更新旧的客户端私钥ska为客户端新私钥skanew。

实施例2

步骤2.1.当客户端b需要使用通信客户端a的公钥时,客户端b向服务器s询问是否需要更新通信客户端a的通信客户端公钥pka

客户端b将自己的公钥指针随机数rb即第一随机数、通信客户端的公钥指针随机数ra、通信客户端公钥pka的通信客户端公钥生成时间tpka组合起来得到rb||ra||tpka,命名为数据文件mb。其中包含通信客户端公钥生成时间tpka的意思是向服务器s上报客户端b本地的通信客户端a的公钥的最新时间,从而询问通信客户端公钥是否需要更新,更新请求参数包括通信客户端的公钥指针随机数ra、通信客户端公钥生成时间tpka。

客户端b用自己的客户端私钥skb对数据文件mb进行签名,即用哈希算法对数据文件mb进行计算得到摘要hmb,再用客户端私钥skb对摘要进行加密就可以得到签名{hmb}skb,命名为数字签名sb。用服务器公钥pksb对应的公钥指针随机数rsb即第二随机数从密钥卡中取出服务器公钥pksb,再用服务器公钥pksb加密数字签名sb和数据文件mb得到第一加密消息{mb||sb}pksb,再将第一加密消息{mb||sb}pksb和第二随机数rsb组合起来得到的rsb||{mb||sb}pksb发送给服务器s。

步骤2.2.服务器s处理客户端b的请求

服务器s收到客户端b发送过来的消息rsb||{mb||sb}pksb后,根据公钥指针随机数rsb即第二随机数从服务器密钥卡的服务器非对称密钥池(私钥池)中取得对应服务器b的服务器私钥sksb,用服务器私钥sksb去解密第一加密消息{mb||sb}pksb得到mb||sb,从而得到数字签名sb和数据文件rb||ra||tpka。

根据第一随机数rb从服务器密钥卡的客户端非对称密钥池(公钥池)中取出客户端b的客户端公钥pkb,用客户端公钥pkb验证数字签名sb。即用与客户端b相同的哈希算法对数据文件mb进行计算得到新的摘要hmb’,再用客户端公钥pkb对数字签名sb进行解密得到旧的摘要hmb,将新的摘要和旧的摘要进行对比,如果相同则可以确认客户端b的身份,不然服务器s将拒绝回复该消息。

服务器s对通信客户端公钥更新验证,根据解析数据文件mb得到的通信客户端的公钥指针随机数ra从服务器密钥卡中取出通信客户端公钥生成时间tpka’,再将其与从解析数据文件mb得到的通信客户端公钥生成时间tpka进行比较,如果相等则无需更换客户端a的公钥,如果不相等则需要更换客户端a的公钥。

步骤2.3.服务器s向客户端b发送更新结果作为响应

如果需要更新客户端a的公钥,令更新消息mbs=mb||pkanew||tpkanew,如果不需要更新客户端a的公钥,则令更新消息mbs=mb||resultb,其中resultb包含不需要更新客户端a的公钥的内容。

服务器s用服务器私钥sksb对更新消息mbs进行签名,与步骤2.1中服务器b签名的过程相似,得到签名{hmbs}sksb,命名为更新消息的数字签名sbs,其中hmbs为更新消息摘要,签名用的私钥的公钥指针随机数为rsb即第二随机数。服务器s用客户端公钥pkb对更新文件进行加密得到第二加密消息{mbs||rsb||sbs}pkb,所述更新文件包括更新消息mbs、第二随机数rsb、更新消息的数字签名sbs,再将第一随机数和第二加密消息rb||{mbs||rsb||sbs}pkb发送给客户端b。

步骤2.4.客户端b接受服务器s的响应

客户端b收到服务器s发送过来的消息rb||{mbs||rsb||sbs}pkb后,用己端私钥skb解密其中的第二加密消息{mbs||rsb||sbs}pkb得到更新文件mbs||rsb||sbs。

根据二随机数rsb从密钥卡中取出服务器公钥pksb,用服务器公钥pksb验证更新消息的数字签名sbs,验证过程与步骤2.2中s验证签名过程相似。如果验证失败则更新密钥失败,流程结束,如果验证成功则进行接下来的步骤。

解析更新消息mbs,如果得到的是resultb则无需更新,流程结束;如果得到的是pkanew和tpkanew,则将更新结果内新公钥pkanew和新公钥生成时间tpkanew替换密钥卡内记载的所述通信客户端公钥pka及公钥更新时间tpka,即更换密钥卡中的pka为pkanew,更换密钥卡中的tpka为tpkanew。

上述实施例均可作用在密钥池更新系统中,该密钥池系统包括客户端和服务器,所述客户端和服务器均配有密钥卡,所述密钥池存储在所述密钥卡中,其特征在于,客户端将第一加密消息以及第二随机数发送至服务器,服务器利用所述第二随机数解密所述第一加密消息,其中所述第一加密消息是利用服务器公钥加密的数据文件及数字签名,所述服务器公钥是利用所述密钥卡产生的第二随机数与所述密钥池结合提取,所述数据文件包括更新请求参数及第一随机数,所述第一随机数用于供服务器提取客户端公钥;所述数字签名是利用客户端私钥对运算后的所述数据文件加密,所述服务器利用所述第一随机数对数字签名验证通过后解析数据文件发起密钥池更新。

本发明中,使用密钥卡存储客户端的公私钥和服务器中对应不同客户端的公私钥,根据非对称密钥指针随机数才能选择密钥卡中的公钥和私钥进行计算,而且整个计算过程中公钥和私钥不会出密钥卡。使用密钥卡中的公私钥来对更新客户端中密钥池的过程进行签名和加密,保证消息的保密性和可靠性。密钥池一直位于密钥卡中,密钥卡是独立的硬件隔离设备,被恶意软件或恶意操作窃取密钥可能性大大降低。

本发明中,以非对称密钥池为例,说明了如何安全更新非对称密钥池数据的方法。本发明也可以用于对密钥卡中的其他数据进行更新,例如对称密钥池、用户共享数据等。

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

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

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