一种利用单向哈希函数关联数字证书的方法

文档序号:8397973阅读:513来源:国知局
一种利用单向哈希函数关联数字证书的方法
【技术领域】
[0001]本发明涉及数字证书领域,尤其涉及一种利用单向哈希函数关联数字证书的方法。
【背景技术】
[0002]公钥基础设施(Public Key Infrastructure, PKI)以数字证书授权机构(Certificate Authority,CA)签发数字证书的方式,将用户个人身份与公钥绑定在一起,以解决密钥属于谁也即密钥认证的问题。
[0003]PKI体系中的CA作为法定的数字证书授权机构,负责签发数字证书,是通信双方都信任的第三方实体。每张数字证书都包含了公钥数据、相应密钥拥有者的身份、证书有效期等信息,并应带有CA的数字签名以作为证书合法性的证明;证书中同时还应包含CA的名称,以便验证者找到CA的公钥从而验证证书上的数字签名。
[0004]公钥密码技术是数字签名的理论基石,其中,RSA算法作为一个成熟的公钥密码算法,被广泛应用于PKI体系中。多数密码学家认为该算法的安全性建立在大整数分解的困难性之上,即分解两个大素数的乘积在计算上是困难的。在实际使用的RSA算法中,公钥之一的N作为两个大素数的乘积,长度(记作|N|)至少应是1024比特。若N被成功分解为它的两个素因子(这通常需要耗费很长的时间),则相应签名用的密钥一定会被破解。
[0005]然而,随着计算机硬件性能的快速提升,用户的密钥面临越来越容易被破解的威胁。有鉴于此,一方面可以增加数字证书中公钥N的长度(如增加至2048、3072、甚至4096比特)以加大分解难度,另一方面则可以让CA定期或按需为用户更换证书以保证数字签名的不可否认性。然而,增加InI会造成通信双方通信与计算开销的显著增加,而让CA定期或按需为用户更换数字证书则会给CA和用户都带来额外的负担。
[0006]此外,在某些应用场景如无线自组织网络中,通常不存在CA这样的可信第三方,证书(无CA签名)的更换完全由各网络节点自行处理,节点间的信任只基于彼此离线交换的证书而建立。一旦某个公钥N被分解,网络无法像PKI中那样通过CA颁布证书撤销列表来撤销相应证书,故需引入灵活自主的更换机制来应对用户密钥越来越容易被破解的威胁。

【发明内容】

[0007]为解决上述问题,本发明利用单向哈希树这种数据结构,结合RSA算法中公钥N可以部分指定(例如预先选定其前缀)的特性,为用户提供一种利用单向哈希函数来关联数字证书的方法。其中哈希函数也称散列函数、杂凑函数等,其特点是输入任意但输出长度固定。单向哈希函数是特殊的哈希函数,其特点是从输出反推输入在实际计算上不可行。
[0008]与传统网络中每个用户拥有一张证书不同,本发明以一种高效的方式使得即使单个用户也能拥有多张相互关联的数字证书,且能在预计的N被分解之时前就先行更换证书。该方法较传统的数字证书管理有多方面优势,例如避免了使用长N造成的高通信与计算开销,以及能为用户提供灵活可控的匿名性等。
[0009]本发明提出的利用单向哈希函数关联数字证书的方法,其中的用户涉及两种角色:一种是证书持有者,另一种是其通信对端,称为证书验证者。例如,证书持有者可以是一个提供HTTPS服务的网站,而证书验证者可以是一个浏览器。再如,在对等网络中,任何参与通信的实体往往同时扮演证书持有者和验证者的角色。本发明对传统的数字证书进行了扩展,从而使得证书持有者可以选择性的向验证者揭示证书的合法性(因而确定密钥的归属性)。例如,不知晓特定秘密信息的验证者将认为待验证的证书是非法的,而证书持有者恰好可利用此特性来隐藏其真实身份。
[0010]本发明采用的技术方案如下:
[0011]证书持有者基于单向哈希树这种数据结构生成并关联数字证书,证书与树的节点一一对应。证书间的关联依赖密码学上的单向哈希函数;函数可以是公开的,也可以是受密钥保护的。下面以高度为h的全满二叉树为例进行说明,假定各证书中公钥N等长且每张证书的寿命均为T。如图1所示,将二叉树第I层左起第m个节点编号为(l,m),对应的证书记为C(1,m)。基于上述二叉树生成及验证n = (2h-l)张证书的步骤为:
[0012]—、生成过程
[0013]I)证书持有者首先生成(n+l)/2 = 2114张独立的证书,对应于二叉树的叶子节点即第h层节点;
[0014]2)如图2所示,从第h层开始,将每两张相邻证书的单向哈希值以特定方式组合作为低一层即对应父节点证书中N的指定(或称给定)部分;持有者基于它们再构造各个公钥N,并结合有效期等信息生成相应的证书(但无需拥有CA的正确签名),直至得到最低层也即根节点证书;因此,该步骤中,除叶子节点证书外,其余所有证书中的公钥N均包含指定部分;
[0015]3)证书持有者以提交给CA检查并签名(或面对面离线交换)的方式建立根节点证书的合法性,即根节点证书对通信对端是可信赖的;在CA签名的方式中,CA不对根节点以外的证书进行处理,甚至不知晓根节点以外各证书的存在;这些证书可以是未经签名的,也可以是带有不合法签名(例如自签名)的。
[0016]二、验证过程
[0017]验证者为验证证书持有者对应于单向哈希树某一节点的证书(假定当前时间在其有效期内),只需沿从该节点到根节点的路径,依次验证路径上每张证书的单向哈希值与路径上低一层节点对应证书中公钥N的特定部分是否相同,并验证根节点证书是否合法。若上述验证全部通过则判定待验证证书合法,否则判定非法。关于上述“特定部分”,由于以子节点证书哈希值的组合作为其父节点证书公钥N的“指定部分”,在验证某一子节点证书时,其哈希值是“指定部分”的一部分,故称为“特定部分”。
[0018]进一步的,所述单向哈希树可能是对称的也可能是不对称的,即有的叶子节点可能并不位于树的最高层,这样的不对称哈希树同样也适用于本发明。上述证书生成过程以全满二叉树为例仅为了更加简洁直观的说明。
[0019]进一步的,各证书中声明的身份可灵活指定;证书中可能使用的是持有者的真名,也可能是持有者的假名。
[0020]进一步的,所述证书生成过程也可由多个证书持有者协同完成(尽管这种情况可能较少发生)。此时,基于单向哈希函数关联的数字证书各自归相应生成者持有;若相关联的两张证书分别由不同的用户生成,则这两个证书持有者之间应存在一种特殊关系(例如隶属关系或信任关系)。
[0021]进一步的,所述节点(I,m)对应的证书C(1,m)可以为按时间顺序启用的第QH+m-l)张证书,其有效期为至QH+m-DT (这里仍假定各证书中公钥N等长且各证书寿命均为T)。
[0022]进一步的,所述各证书的寿命T取决于证书持有者所处的环境,证书有效期彼此可以不重叠(如上述顺序启用从而恰好衔接的例子)也可以重叠,但为安全起见,任何一张证书的寿命T都应小于在可预见的未来分解掉相应长度的N的最短所需时间,以保证任何一张证书启用后,在签名用的密钥被破解之前,该证书就能自动作废(并被其他新启用的证书所替代)。
[0023]进一步的,相应的数字签名需结合证书的编号来生成/验证。
[0024]进一步的,所述对证书进行关联而采用的单向哈希函数,可以是公开的(如SHA-224),也可以是受密钥保护的(如HMAC_SHA256)。在后一种情况下,受密钥保护的单向哈希函数可以依赖于同一个密钥,也可以依赖不同的密钥;密钥可以预先分发,也可以在相关证书启用之后才分发;具体策略由证书持有者根据实际需要来制定,从而实现特定的需求(典型的如可控的匿名性)。
[0025]进一步的,所述将子节点证书单向哈希值以特定方式组合,可采用复杂的处理方式,如拆分后随机排序的方式,即将对应于同一个父节点的所有子节点证书单向哈希值拆分后进行随机排序并拼接,作为低一层即对应父节点证书中公钥N的指定部分;也可采用简单的按序拼接方式,即将对应于同一个父节点的所有子节点证书的单向哈希值按序拼接,作为低一层即对应父节点证书中公钥N的指定部分。组合方式的不同对应验证过程中验证证书公钥N特定部分的不同。
[00
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1