首页> 中国专利> 数字证书存储方法、系统以及数字证书读取方法和系统

数字证书存储方法、系统以及数字证书读取方法和系统

摘要

本发明公开了一种数字证书存储方法、系统以及数字证书读取方法和系统,所述数字证书存储方法包括:将数字证书分割为两个以上的数据片段;对分割所得的数据片段进行数据匹配,获取至少两个结构和内容均一致的数据片段,将结构和内容均一致的数据片段划分为至少一个冗余数据片段和至少一个有效数据片段;将分割所得的数据片段中除所述冗余数据片段外的其它数据片段,存储到证书存储空间,并对应记录存储的各数据片段在数字证书中的数据位置信息,其中,对所述有效数据片段记录其自身的数据位置信息以及所述冗余数据片段的数据位置信息。实施本发明的方法和系统,在保证完整存储数字证书的同时,可节约存储空间,并能快速读取完整的数字证书。

著录项

  • 公开/公告号CN103885723A

    专利类型发明专利

  • 公开/公告日2014-06-25

    原文格式PDF

  • 申请/专利权人 广东数字证书认证中心有限公司;

    申请/专利号CN201410077035.5

  • 发明设计人 张永强;王胜男;

    申请日2014-03-04

  • 分类号G06F3/06(20060101);G06F21/33(20130101);G06F21/34(20130101);

  • 代理机构44224 广州华进联合专利商标代理有限公司;

  • 代理人王茹;向群

  • 地址 528200 广东省佛山市南海区狮山镇南海软件科技园科教路

  • 入库时间 2024-02-20 00:15:49

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-06-06

    授权

    授权

  • 2016-09-14

    著录事项变更 IPC(主分类):G06F3/06 变更前: 变更后: 申请日:20140304

    著录事项变更

  • 2014-07-16

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20140304

    实质审查的生效

  • 2014-06-25

    公开

    公开

说明书

技术领域

本发明涉及数字认证技术领域,特别是涉及一种数字证书存储方法、系统 以及数字证书读取方法和系统。

背景技术

在数字认证技术中,数字证书的内容经过证书认证机构(Certificate  Authority,CA)的签名,严格保证了数据的完整性,在对数字证书进行传输和 存储时也必须保证其数据的完整性,否则将被视为无效的证书。因此现有技术 在存储数字证书时,通常是将数字证书作为一个完整的数据文件存储在证书介 质中。

由于合法的CA需要实施双证书体系,一个证书介质中至少需要存放签名证 书和加密证书两张证书。而为了实现SM2(中国国家密码局制定的一种非对称 密码算法)证书与现有RSA证书在应用上的兼容,一个证书介质中很可能需要 同时存放SM2算法的签名证书、加密证书以及RSA算法的签名证书、加密证书, 导致存储数字证书的存储空间紧张。

同时,随着数字证书应用的不断推广,证书介质正在迅速的从传统的USB  Key(使用通用串行总线接口的证书及密钥存储介质)扩展到各种IC(Integrate  Circuit集成电路)卡、SIM(Subscriber Identity Module用户身份识别模块)卡、 RFID(Radio Frequency IDentification射频识别)卡等存储空间严格受限的介质 中,也造成了数字证书在空间受限介质中的存储困难。

此外,随着“一Key多用”、“一证多用”观念的推广,即使是存储空间相 对比较充裕的USB Key,也常常因为同时承担了多个应用需求,USB Key中存 储了除证书和密钥之外的多种应用业务数据,从而导致USB Key存储空间紧张。

发明内容

基于此,有必要针对上述数字认证技术的存储介质中数字证书存储困难的 问题,提供一种数字证书存储方法、系统以及数字证书读取方法和系统。

一种数字证书存储方法,包括以下步骤:

根据ASN.1编码规则,将数字证书分割为两个以上的数据片段;

对分割所得的数据片段进行数据匹配,获取结构和内容均一致的至少两个 数据片段,将所述结构和内容均一致的数据片段划分为至少一个冗余数据片段 和至少一个有效数据片段;

将分割所得的数据片段中除所述冗余数据片段外的其它数据片段,存储到 证书存储空间,并对应记录存储的各数据片段在数字证书中的数据位置信息, 其中,对所述有效数据片段记录其自身的数据位置信息以及所述冗余数据片段 的数据位置信息。

一种数字证书存储系统,包括:

分割模块,用于根据ASN.1编码规则,将数字证书分割为两个以上的数据 片段;

匹配模块,用于对分割所得的数据片段进行数据匹配,获取结构和内容均 一致的至少两个数据片段,将所述结构和内容均一致的数据片段划分为至少一 个冗余数据片段和至少一个有效数据片段;

存储模块,用于将分割所得的数据片段中除所述冗余数据片段外的其它数 据片段,存储到证书存储空间,并对应记录存储的各数据片段在数字证书中的 数据位置信息,其中,对所述有效数据片段记录其自身的数据位置信息以及所 述冗余数据片段的数据位置信息。

上述数字证书存储方法和系统,通过将数字证书分割为两个以上的数据片 段,并从分割所得的数据片段中获取结构和内容均一致的数据片段再将除部分 数目的结构和内容均一致的数据片段外的其它数据片段,存储到证书存储空间, 并记录存储在所述证书存储空间的各数据片段在各数字证书中的数据位置信 息,对所述有效数据片段记录其自身的数据位置信息以及所述冗余数据片段的 数据位置信息,在保证完整存储数字证书的同时,可不存储部分数目的结构和 内容均一致数据片段,消除了部分冗余信息,节约了数字证书存储量,降低对 证书存储中心或证书存储介质的内存要求。

一种数字证书读取方法,包括以下步骤:

从证书存储空间获取与待读取的数字证书对应的数据片段,以及所述数据 片段在所述数字证书中对应的数据位置信息,其中,所述数据片段包括至少一 个有效数据片段,所述有效数据片段对应至少两个数据位置信息;

将所述有效数据片段之外的数据片段按照其对应的数据位置信息进行组 合,将有效数据片段分别在其对应的每个数据位置恢复对应的数据片段,重组 成所述数字证书。

一种数字证书读取系统,包括:

读取模块,用于从证书存储空间获取与待读取的数字证书对应的数据片段, 以及所述数据片段在所述数字证书中对应的数据位置信息,其中,所述数据片 段包括至少一个有效数据片段,所述有效数据片段对应至少两个数据位置信息;

重组模块,用于将所述有效数据片段之外的数据片段按照其对应的数据位 置信息进行组合,将有效数据片段分别在其对应的每个数据位置恢复对应的数 据片段,重组成所述数字证书。

上述数字证书读取方法和系统,通过从证书存储空间获取与待读取的数字 证书对应的数据片段,以及所述数据片段在所述数字证书中对应的数据位置信 息,再将所述有效数据片段之外的数据片段按照其对应的数据位置信息进行组 合,将有效数据片段分别在其对应的每个数据位置恢复对应的数据片段,重组 成所述数字证书,可在节约存储空间的基础上,快速读取完整的数字证书。

一种数字证书读取方法,包括以下步骤:

根据ASN.1编码规则,将数字证书分割为两个以上的数据片段;

对分割所得的数据片段进行数据匹配,获取结构和内容均一致的至少两个 数据片段,将所述结构和内容均一致的数据片段划分为至少一个冗余数据片段 和至少一个有效数据片段;

将分割所得的数据片段中除所述冗余数据片段外的其它数据片段,存储到 证书存储空间,并对应记录存储的各数据片段在所述数字证书中的数据位置信 息,其中,对所述有效数据片段记录其自身的数据位置信息以及所述冗余数据 片段的数据位置信息;

从证书存储空间获取与待读取的数字证书对应的数据片段,以及所述数据 片段在所述数字证书中对应的数据位置信息;

将所述有效数据片段之外的数据片段按照其对应的数据位置信息进行组 合,将有效数据片段分别在其对应的每个数据位置恢复对应的数据片段,重组 成所述数字证书。

一种数字证书读取系统,包括:

分割模块,用于根据ASN.1编码规则,将数字证书分割为两个以上的数据 片段;

匹配模块,用于对分割所得的数据片段进行数据匹配,获取结构和内容均 一致的至少两个数据片段,将所述结构和内容均一致的数据片段划分为至少一 个冗余数据片段和至少一个有效数据片段;

存储模块,用于将分割所得的数据片段中除所述冗余数据片段外的其它数 据片段,存储到证书存储空间,并对应记录存储的各数据片段在所述数字证书 中的数据位置信息,其中,对所述有效数据片段记录其自身的数据位置信息以 及所述冗余数据片段的数据位置信息;

读取模块,用于从证书存储空间获取与待读取的数字证书对应的数据片段, 以及所述数据片段在所述数字证书中对应的数据位置信息;

重组模块,用于将所述有效数据片段之外的数据片段按照其对应的数据位 置信息进行组合,将有效数据片段分别在其对应的每个数据位置恢复对应的数 据片段,重组成所述数字证书。

上述数字证书读取方法和系统,通过将分割所得的数据片段中除所述冗余 数据片段外的其它数据片段,存储到证书存储空间,并对应记录存储的各数据 片段在所述数字证书中的数据位置信息,以及所述数据片段在所述数字证书中 对应的数据位置信息,再将所述有效数据片段之外的数据片段按照其对应的数 据位置信息进行组合,将有效数据片段分别在其对应的每个数据位置恢复对应 的数据片段,重组成所述数字证书,可在节约存储空间的基础上,快速读取完 整的数字证书。

附图说明

图1是本发明数字证书存储方法第一实施方式的流程示意图;

图2是本发明数字证书存储方法第二实施方式的流程示意图;

图3是本发明数字证书存储方法第三实施方式的流程示意图;

图4是本发明数字证书存储方法第四实施方式中数据集的属性示意图;

图5是本发明数字证书存储系统第一实施方式的结构示意图;

图6是本发明数字证书读取方法第一实施方式的流程示意图;

图7是本发明数字证书读取方法第二实施方式的流程示意图;

图8是本发明数字证书读取系统第一实施方式的结构示意图;

图9是本发明另一数字证书读取方法第一实施方式的流程示意图;

图10是本发明另一数字证书读取系统第一实施方式的结构示意图。

具体实施方式

请参阅图1,图1是本发明数字证书存储方法第一实施方式的流程示意图。

本实施方式的所述数字证书存储方法包括以下步骤:

步骤101,根据ASN.1编码规则,将数字证书分割为两个以上的数据片段。

步骤102,对分割所得的数据片段进行数据匹配,获取结构和内容均一致的 至少两个数据片段,将所述结构和内容均一致的数据片段划分为至少一个冗余 数据片段和至少一个有效数据片段。

步骤103,将分割所得的数据片段中除所述冗余数据片段外的其它数据片 段,存储到证书存储空间,并对应记录存储的各数据片段在数字证书中的数据 位置信息,其中,对所述有效数据片段记录其自身的数据位置信息以及所述冗 余数据片段的数据位置信息。

上述数字证书存储方法,通过将数字证书分割为两个以上的数据片段,并 从分割所得的数据片段中获取结构和内容均一致的数据片段再将除部分数目的 结构和内容均一致的数据片段外的其它数据片段,存储到证书存储空间,并记 录存储在所述证书存储空间的各数据片段在各数字证书中的数据位置信息,对 所述有效数据片段记录其自身的数据位置信息以及所述冗余数据片段的数据位 置信息,在保证完整存储数字证书的同时,可不存储部分数目的结构和内容均 一致数据片段,消除了部分冗余信息,节约了数字证书存储量,降低对证书存 储中心或证书存储介质的内存要求。

其中,对于步骤101,所述数字证书由证书认证机构(Certificate Authority, CA)签名发行,优选地,可包括根证书、二级CA业务证书、用户证书等。

进一步地,在对数字证书进行分割时,当待存储的数字证书仅为1个时, 将该数字证书分割为两个以上的数据片段,然后执行步骤102的操作。当待存 储的数字证书为2个以上时,可将每个数字证书均分隔为两个以上的数据片段, 然后执行步骤102的操作,从分割多个证书所得的数据片段中,获取结构和内 容均一致的数据片段。

在一个实施例中,所述根据ASN.1编码规则,将数字证书分割为两个以上 的数据片段的步骤包括以下步骤:

根据数字证书的证书类型,确定与所述数字证书对应的分割边界。

根据确定的分割边界,将所述数字证书分割为两个以上的数据片段。

本实施例的数字证书存储方法,可减小存储数据位置信息所耗内存,进一 步减少存储数字证书占用的存储空间。

在本实施例中,ASN.1编码的基本结构单元为标签(Tag)、长度(Length)、 值(Value),即TLV结构。TLV结构允许嵌套使用,即某个TLV结构可以是另 一个TLV结构的Value字段。在根据ASN.1编码规则进行数据分割时,分割边 界可以为独立的Tag字段、Length字段和Value字段的边界,或者是若干独立字 段组成的复合结构的边界。如:当数字证书为OID类型的数字证书时,将分割 边界确定为Tag字段的边界与Length字段和Value字段组成的复合结构的结构 边界。

在其他实施方式中,还可以使用本领域技术人员惯用的其他技术手段对数 字证书进行数据分割。

在另一个实施例中,在执行所述将数字证书分割为两个以上的数据片段的 步骤之前,还可包括以下步骤:

步骤1012,设置与待存储的数字证书对应的证书存储模板和数据片段的存 储格式。

其中,在步骤1012中,可使一个数字证书可对应一个证书存储模板,也可 使多个数字证书对应一个证书模板,可设置一种复合证书格式,一个复合证书 可包含多个数字证书的数据。一方面可确保冗余的用户数据仅仅保存一个实例, 另一方面又可以帮助消除ASN.1编码的冗余信息。

进一步地,可在复合证书中以数据集格式存储数据片段,将复合证书的基 本单元设为数据集,用来保存符合一定数据特征的数字证书的数据片段,这些 特征由数据集的属性(Attribute)来标识。所述属性,优选地可包括Tag值(标 签)、各数据单元的对象类型和存储格式等。

优选地,可根据待存储的数字证书的数据内容,设置数据集。同一个数据 集可用于保存同一类型的数据片段。例如:可设OID数据集,用于保存内容为 对象标识符的数据片段。其中,对象标识符用于标识对象类或属性的编号。也 可以设定数据集用来保存没有任何含义,但是满足特定条件的离散数据,譬如 长度为1字节的数据。

在其他实施方式中,也可以将各数据片段以分区存储的方式进行存储,并 将各数据片段的存储区域与各数据片段存储前所处的数字证书进行对应。

对于步骤102,可以每分割一个数字证书,对该数字证书的数据片段进行一 次数据匹配,查找出分割该数字证书所得的数据片段中结构和内容均一致的数 据片段。也可以在分割完两个以上的数字证书后,对两个以上的数字证书的数 据片段进行一次数据匹配,查找出两个以上的数字证书分割所得的数据片段中 结构和内容均一致的数据片段。

优选地,可将结构和内容均一致的数据片段中的一个数据片段划分为有效 数据片段,剩余数据片段均划分为冗余数据片段。若划分后,有效数据片段的 数目为两个以上时,可对多个有效数据片段中的一个有效数据片段记录其自身 的数据位置信息以及所述冗余数据片段的数据位置信息。

进一步地,所述结构和内容均一致的一组数据片段,为一个或多个数字证 书中的冗余信息。在一个Ukey(一种通过USB直接与计算机相连、具有密码验 证功能、可靠高速的小型存储设备)中保存的数字证书存在大量的冗余信息。 譬如:Ukey等证书存储介质,通常需同时保存用户证书与证书认证机构的机构 证书,以便构造完整的证书链。而用户证书的颁发者与证书认证机构的公钥证 书的主体信息完全一致,即为冗余信息。又如:Ukey等证书存储介质,分别保 存了签名证书与加密证书,这两张证书的颁发者、主体信息均完全一致,即为 冗余信息。再如:上述证书存储介质,会保存多种密钥类型的用户证书,而这 些用户证书的主体信息一般均相同,即为冗余信息。

此外,数字证书遵循的ASN.1编码本身也存在很多冗余信息,譬如证书一 般有SEQUENCE(证书版本号)类型嵌套而成,此时数字证书中会包含很多用 来标识这种类型的Tag字节。数字证书中存在大量的OID类型数据,同样会包 含多个用于标识该类型的Tag字节。通过分割步骤(步骤101)后,匹配步骤(步 骤102)可将上述冗余信息查找出来,其中一些为用于存储的有效数据片段,另 一些不存储的冗余数据片段。

在一个实施例中,所述对分割所得的数据片段进行数据匹配,获取结构和 内容均一致的至少两个数据片段的步骤包括以下步骤:

步骤1021,通过计算分割所得的数据片段的Hash校验值,对各数据片段进 行匹配校验,校验出结构和内容均一致的数据片段。

在其他实施方式中,本领域技术人员还可以通过本领域惯用的其他技术手 段,对分割所得的数据片段进行数据匹配。如:预先对证书模板进行分析,可 以根据先验信息来进行匹配,不一定是完全智能算法。又如:证书颁发者对象 可以作为整体进行匹配,证书主体信息则应取其签名若干SET序列的组合来进 行匹配。

在另一个实施例中,可根据存储数字证书的存储介质的存储空间的大小, 来划分所述冗余数据片段和所述有效数据片段,若存储空间较小,需要存储的 数字证书的数目较多,那么可将结构和内容均一致的数据片段中一个数据片段 划分为有效数据片段,其他的数据片段均为冗余数据片段(优选地,可将冗余 数据片段删除),即结构和内容均一致的数据片段仅存储一个。

对于步骤103,当结构和内容均一致的数据片段中除一个数据片段作为有效 数据片段用于存储外,其他的数据片段均为冗余数据片段时,对用于存储的一 个有效数据片段记录其自身的数据位置信息以及划分为冗余数据片段的其他数 据片段的数据位置信息,在重组时用于替代与其结构和内容均一致的冗余数据 片段在各数字证书中的数据位置。所述数据位置信息用于记录各数据片段在数 字证书中所处位置,可以为各数据片段间的相对位置关系,还可以是各数据片 段的绝对位置(相对与数字证书起始数据或末尾数据)。

优选地,可为每一个数据片段设定一个数据标识,该数据标识可以是数字 编号,也可以是各数据片段的存储位置,进而可以通过记录各数据片段的数据 标识来记录各数据片段间的数据关系,并将记录的数据关系与各数字证书一一 对应。

在一个实施例中,将分割所得的数据片段中除所述冗余数据片段外的其它 数据片段,存储到证书存储空间,并对应记录存储的各数据片段在数字证书中 的数据位置信息的步骤还包括以下步骤:

步骤1031,将分割所得的数据片段中除所述冗余数据片段外的其它数据片 段,分别作为数据集的数据单元进行存储,其中,一个数据片段对应一个数据 集的一个数据单元。

步骤1032,根据分割所得的各数据片段在所述数字证书中的数据位置,获 取并存储各数据单元间的数据关系,以记录存储的各数据片段在所述数字证书 中的数据位置信息。

其中,所述数据关系优选地为各数据片段在数字证书中的位置关系或排列 顺序。

进一步地,所述获取并存储各数据单元间的数据关系的步骤包括以下步骤:

为每个数据单元分配唯一的全局索引,并将分配的全局索引存储在预设的 索引数据集中。

对应分割所得的各数据片段在所述数字证书中的数据位置,将各数据单元 的全局索引进行排序,形成用于恢复所述数字证书的索引序列,以记录存储的 各数据片段在所述数字证书中的数据位置信息。

更进一步地,在所述形成用于恢复所述数字证书索引序列的步骤之后,还 包括以下步骤:

分析形成的索引序列,查找出形成的索引序列中出现次数高于频率阈值的 序列片段,将高于频率阈值的序列片段作为数据集的数据单元进行存储,并为 存储所述序列片段的数据单元分配全局索引,以替换所述索引序列中的所述序 列片段。

其中,所述频率阈值由序列片段的大小和存储空间的大小决定,优选地可 以于或等于2。

在另一个实施例中,所述将分割所得的数据片段中除所述冗余数据片段外 的其它数据片段,存储到证书存储空间,并对应记录存储的各数据片段在所述 数字证书中的数据位置信息的步骤还包括以下步骤:

判断分割所得的数据片段中每组相同片段组中数据片段的数目是否超过片 段阈值,其中,所述相同片段组为一组结构和内容均一致的数据片段。

若超过,则将超过所述片段阈值的相同片段组中的有效数据片段作为数据 集的属性进行存储。

将除所述冗余数据片段和所述作为所述数据集的属性进行存储的有效数据 片段外的其他分割所得的数据片段,分别作为所述数据集的数据单元进行存储, 其中,一个数据片段对应一个数据集的一个数据单元。

根据分割所得的各数据片段在所述数字证书中的数据位置,获取并存储所 述数据集的属性以及各数据单元间的数据关系,以记录存储的各数据片段在所 述数字证书中的数据位置信息。

其中,所述片段阈值由数据片段的大小和存储空间的大小决定,优选地可 以于或等于2。

优选地,例如数字证书为OID类型的数字证书,分割边界确定为Tag字段 的边界与Length字段和Value字段组成的复合结构的结构边界,在本实施例中, 可将Tag字段作为数据集属性,经上述步骤后剩余的数据片段作为数据集的数 据单元进行存储。

请参阅图2,图2是本发明数字证书存储方法第二实施方式的流程示意图。

本实施方式的数字证书存储方法与第一实施方式的区别在于:所述根据 ASN.1编码规则,将数字证书分割为两个以上的数据片段的步骤包括以下步骤:

步骤201,获取待存储的各数字证书。

步骤202,将各数字证书的数据内容转换为统一的编码格式,同时记录转换 所得的数据内容在各数字证书中的原始编码格式和数据位置信息。

步骤203,根据格式转换后的各数字证书的特征信息,从预设的证书存储模 板中查找与格式转换后的各数字证书匹配的证书存储模板。

步骤204,建立查找到的证书存储模板中的各占位符与格式转换后的各数字 证书的数据内容间的对应关系。

步骤205,根据ASN.1编码规则,对与各占位符对应的数据内容进行数据 分割,分割为两个以上的数据片段。

本实施方式所述的数字证书存储方法,可进一步消除ASN.1编码的冗余信 息,节省存储空间。

其中,对于步骤202,将数字证书的数据内容转换为统一的编码格式,可将 原来不同的数据内容转换为结构和内容均一致的数据内容。

在一个实施例中,所述将各数字证书的数据内容转换为统一的编码格式, 同时记录转换所得的数据内容在各数字证书中的原始编码格式和数据位置信息 的步骤包括以下步骤:

将各数字证书中的所有字符串对象均转换为UTF8格式,同时记录转换所得 的各字符串对象在各数字证书中的原始编码格式和数据位置信息。

在其他实施方式中,所述统一的编码格式还可以是本领域技术人员惯用的 其他编码格式。

请参阅图3,图3是本发明数字证书存储方法第三实施方式的流程示意图。

本实施方式的数字证书存储方法与第一实施方式的区别在于:当与格式转 换后的各数字证书匹配的证书存储模板为一个复合证书时,所述将分割所得的 数据片段中除所述冗余数据片段外的其它数据片段,存储到证书存储空间,并 对应记录存储的各数据片段在数字证书中的数据位置信息的步骤包括以下步 骤:

步骤301,根据分割所得的数据片段的数据特征,将分割所得的数据片段中 除冗余数据片段外的其它数据片段,作为所述复合证书的各数据集的数据单元 进行存储,其中,所述预设的存储格式与各数字证书的数据格式对应。

步骤302,为所述复合证书的各数据集中的各数据单元建立全局索引,并将 建立的全局索引存储在预设的索引数据集中。

步骤303,对应分割所得的各数据片段在各数字证书中的数据位置,将各数 据单元的全局索引进行排序,形成用于恢复各数字证书的索引序列,以记录存 储的各数据片段在各数字证书中的数据位置信息。

步骤304,将各索引序列作为所述复合证书的数据集的数据单元进行存储, 并为存储各索引序列的数据单元建立全局索引。

步骤305,将存储各索引序列的数据单元的全局索引作为各数字证书的证书 描述。

本实施方式所述的数字证书存储方法,多个数字证书对应一个复合证书模 板进行数据片段的存储,可将多个数字证书中的冗余信息消除,通过索引来引 用数据单元,方便记录各数据单元间的数据关系,而且可快速准确的检索到对 应的数据片段。

其中,对于步骤302和步骤304,每个数据集内部保存的用户数据都赋予一 个序号,所有数据集的序号进行统一编码,一个序号仅对应一个数据单元,并 将其称为索引。通过将一系列的索引按照特定顺序来拼接,表示这些索引对应 的用户数据可以按照相同的顺序进行拼接,从而构建一个数字证书的片断,甚 至是一个完整的数字证书。这样的索引序列也可以被一个索引进行编号,换言 之可以采用嵌套的序列来描述数字证书的结构。

对于步骤305,还可根据获得的各数字证书的证书特性,将各数字证书的证 书名称作为证书描述保存在所述复合证书中

优选地,还可根据获得的各数字证书的证书特性,将各数字证书的私钥名 称、密钥用法、密钥类型的索引值、私钥文件的索引值和公钥文件的索引值, 作为密钥描述存储在所述复合证书中。

在一个实施例中,所述将各索引序列作为所述复合证书的数据集的数据单 元进行存储的步骤还包括以下步骤:

分析形成的各索引序列,查找出在一个或多个索引序列中出现次数高于频 率阈值的序列片段,将高于频率阈值的序列片段作为数据集的数据单元进行存 储,并为存储所述序列片段的数据单元分配全局索引,以替换一个或多个索引 序列中的所述序列片段。

将替换后的各索引序列作为所述复合证书的数据集的数据单元进行存储。

在另一个实施例中,在将数据片段、索引序列或全局索引作为数据集的数 据单元进行存储时,在各数据集的属性中记录各数据单元的对象类型和存储格 式,其中,所述对象类型包括ASN.1格式的对象、索引序列格式的对象、X509 格式的对象、带格式化的对象、带实例化序列的对象和外部文件对象中的至少 一种,所述存储格式用于将数据单元转换为数据片段。

以下是本发明数字证书存储方法第四实施方式。

本实施方式的数字证书存储方法与第一实施方式至第三实施方式的区别在 于:证书存储空间设置有证书容器,证书容器可包括标识符1、标识符2证书容 器标识符和至少一个复合证书,证书容器的具体格式如表1、复合证书的具体格 式如表2、复合证书内的设定数据集列表如表3所示:

表1:

表2:

表3:

其中,证书存储空间优选地可包括8个证书容器文件,每个证书容器文件 中可以包含至少一个复合证书对象,每个复合证书对象可以包含至少一个数字 证书。

优选地,全局信息表记录证书容器信息,包括ID和长度。其中,ID占1 个字节,最高比特用于判断容器是否存在,1表示存在,0表示不存在,其余7 个比特用于表示证书容器的标识符,长度占2个字节,用于表示证书容器的长 度,若容器不存在,则长度设置为0。

进一步地,所有的内部、外部数据单元都具有唯一的索引作为标识符。所 有证书容器文件中的任何一个数据单元的索引都不相同。索引的取值范围为0~ 0xDF,共有224个。0xE0-0xFF用于指明命名空间,分别对应0-31号空间。

其中,证书容器文件中包含的数据单元为内部数据单元,外部文件的标识 符等为外部数据单元。

对于表1,证书容器包括的标识符1、标识符2、证书容器标识符等只能存 在1个实例,每个复合证书对象可采用TLV编码的方式。

对于表2,复合证书包括多个证书描述和多个数据集构成,每个证书描述 对象与一个数字证书相对应,复合证书可以通过包含的多个证书描述对象来声 明其保存了多个数字证书。这些数字证书的数据可以保存于多个证书容器,及 每个证书容器中多个复合证书所包含的多个数据集。

证书描述优选地,可包括证书名称、证书密钥类型在O数据集中的索引值、 证书文件根对象的索引值、证书序列号在N数据集中的索引值和证书文件的 Hash校验值,每个字段采用TLV编码的方式,如表4所示:

表4:

Type Length(长度,单位byte) Value(值域) 1 可变 证书名称 2 2 证书文件根对象的索引值 3 2 证书序列号在N数据集中的索引值 4 8 证书文件的Hash校验值

进一步地,密钥描述如表5所示:

表5:

在一个实施例中,数据集的存储格式如表6所示:

表6:

NS Attribute Baselndex Count Tag Length Value 1 2 1 1 1 2 变长

对于表6,NS为数据集的数据空间,Attribute为数据集的属性,BaseIndex 为该数据集对象的基索引,Count为对象个数,Tag为数据集对象对应的标识符, Length为Value参数的字节数,Value是Count个对象依次串联。

优选地,NS取值范围为0~31,该参数一方面表明了本数据集中包含的对象 所属命名空间,另一方面也表明了数据集中数据单元在采用索引来引用其它数 据集对象时的默认命名空间。如果要索引默认命名空间之外的对象,则需要使 用0xE0-0xFF作为前导字节。

Attribute元素表明当前数据集的数据单元的相关属性,如图4所示,其中:

0-简单对象,包含了可以直接用于解码的数据(注:除了简单对象需要根据 {b4,b3}来决定解码规则,其他对象的{b4,b3}=00)。1-复合对象,由索引构成的 一个序列。2-X509格式的证书或证书数据模板,此数据单元中包含SEQUENCE、 SET及长度等ASN.1元素,并且还包含A-Z字母表示的占位符。3-带格式化序 列的复合对象,其数据单元存储格式为{O,P},即每个数据单元都由2个用户 索引构成,其中第1个索引指向某个复合对象,第2个索引应该指向X数据集 的某个“字符串格式化序列”对象。格式化序列存在两种描述方式:1前导字符 为A,则后面包含若干索引,分别对应N个字符串。2前导字符为I,则后面包 含若干个{Index,Tag}键值对,对应若干个字符串格式更正描述。

4-带实例化序列的复合对象,其数据单元存储格式为{O,P},即每个数据单 元都由2个用户索引构成,其中第1个索引指向P数据集中的某个证书模板对 象,第2个索引应该指向M数据集的某个“占位符实例化序列”对象。5-外部 文件的标识。

Usage/Len={b3,b2,b1,b0}:

0-保留,1-定长数据的字节数为1,2-定长数据的字节数为2,3-定长数据的 字节数为3,4-定长数据的字节数为4,对于更长的定长数据,应采用变长数据 格式来存储,5-[TL]变长数据单元为TL结构,6-L[V]变长数据单元为LV结构, 并且每个V数据可直接用于解码操作,定长数据单元位V结构,可直接/间接用 于解码操作,7-[LV]数据单元为LV结构,并且每个LV数据可直接用于解码操 作,8-[(T)LV]数据单元为LV结构,并且每个LV数据要与集合的T元素组合 才能用于解码操作,9-L[FOL]数据单元为LV结构,其中,V数据保存了一个 FOL结构(File/Offset/Length),F为文件标识符,O/L为复合ASN.1编码规则 的长度数据,10-[TLV]数据单元为TLV结构,并且每个TLV数据可直接用于 解码操作,这类数据集的Tag元素没有实际意义,在数据集中按照TLV结构来 保存数据,任何仅仅被使用1次的TLV数据,都推荐保存到此类数据集,使得 解码过程中节省1次检索T数据集的操作,11-L[V]L[P]数据单元为LVLP结构, 其中LV代表某个对象,LP代表对LV修正的参数,12-[OP]数据单元为OP结 构(Object/Parameters),其中,O为指向某个对象的索引,P为指向修正参数的 索引。中括号内部数据直接用于解码操作,圆括号内部数据来自数据集参数。

其中,Type和Usage/Len的组合规则如表7所示:

表7:

序号 Type Usage/Len 1 简单对象 1~10 2 复合对象 6 3 X509格式 6 4 带格式化序列的复合对象 11、12 5 带实例化序列的复合对象 11、12 6 外部文件的标识 2

进一步地,BaseIndex元素为当前数据集第1个数据单元的索引值,其后每 个数据单元的索引依次递增,基索引由压缩算法自行决定,根据需要来调整各 类集合的容量,但是必须避免任何两个集合中数据单元的索引发生冲突。

Count元素为本数据集包含的数据单元个数。Tag元素表示数据集的类型, 与数据元素在证书中的Tag一致,分解元素时匹配Tag来决定该元素属于哪个 集合。如果Attribute元素的Usage=8,重组数字证书过程中将Tag与每个数据单 元串接,并替换索引。Length元素表示Value元素的字节数。Value元素为多个 数据单元的集合,每个数据单元存储格式由Attribute元素的Type、Usage决定。

本实施方式所述的数字证书存储系统,设定了数字证书的数据片段的具体 存储方式,设计了灵活的索引规则,仅仅使用1个字节的索引,有效的节省了 索引序列自身占据的存储空间,同时使用命名空间来扩展索引的数量。

请参阅图5,图5是本发明数字证书存储系统第一实施方式的结构示意图。

本实施方式的所述数字证书存储系统包括分割模块100、匹配模块200和存 储模块300,其中:

分割模块100,用于根据ASN.1编码规则,将数字证书分割为两个以上的 数据片段。

匹配模块200,用于对分割所得的数据片段进行数据匹配,获取结构和内容 均一致的至少两个数据片段,将所述结构和内容均一致的数据片段划分为至少 一个冗余数据片段和至少一个有效数据片段。

存储模块300,用于将分割所得的数据片段中除所述冗余数据片段外的其它 数据片段,存储到证书存储空间,并对应记录存储的各数据片段在数字证书中 的数据位置信息,其中,对所述有效数据片段记录其自身的数据位置信息以及 所述冗余数据片段的数据位置信息。

上述数字证书存储系统,通过将数字证书分割为两个以上的数据片段,并 从分割所得的数据片段中获取结构和内容均一致的数据片段再将除部分数目的 结构和内容均一致的数据片段外的其它数据片段,存储到证书存储空间,并记 录存储在所述证书存储空间的各数据片段在各数字证书中的数据位置信息,对 所述有效数据片段记录其自身的数据位置信息以及所述冗余数据片段的数据位 置信息,在保证完整存储数字证书的同时,可不存储部分数目的结构和内容均 一致数据片段,消除了部分冗余信息,节约了数字证书存储量,降低对证书存 储中心或证书存储介质的内存要求。

其中,对于分割模块100,所述数字证书由证书认证机构(Certificate  Authority,CA)签名发行,优选地,可包括根证书、二级CA业务证书、用户 证书等。

进一步地,在对数字证书进行分割时,当待存储的数字证书仅为1个时, 将该数字证书分割为两个以上的数据片段,然后执行匹配模块200的操作。当 待存储的数字证书为2个以上时,可将每个数字证书均分隔为两个以上的数据 片段,然后执行匹配模块200的操作,从分割多个证书所得的数据片段中,获 取结构和内容均一致的数据片段。

在一个实施例中,分割模块100还可用于:

根据数字证书的证书类型,确定与所述数字证书对应的分割边界。

根据确定的分割边界,将所述数字证书分割为两个以上的数据片段。

本实施例的数字证书存储方法,可减小数据位置信息所耗内存,进一步减 少存储数字证书占用的存储空间。

在本实施例中,ASN.1编码的基本结构单元为标签(Tag)、长度(Length)、 值(Value),即TLV结构。TLV结构允许嵌套使用,即某个TLV结构可以是另 一个TLV结构的Value字段。在根据ASN.1编码规则进行数据分割时,分割边 界可以为独立的Tag字段、Length字段和Value字段的边界,或者是若干独立字 段组成的复合结构的边界。如:当数字证书为OID类型的数字证书时,将分割 边界确定为Tag字段的边界与Length字段和Value字段组成的复合结构的结构 边界。

在其他实施方式中,还可以使用本领域技术人员惯用的其他技术手段对数 字证书进行数据分割。

在另一个实施例中,还包括设置模块,用于在将数字证书分割为两个以上 的数据片段之前,设置与待存储的数字证书对应的证书存储模板和数据片段的 存储格式。

其中,可使一个数字证书可对应一个证书存储模板,也可使多个数字证书 对应一个证书模板,可设置一种复合证书格式,一个复合证书可包含多个数字 证书的数据。一方面可确保冗余的用户数据仅仅保存一个实例,另一方面又可 以帮助消除ASN.1编码的冗余信息。

进一步地,可在复合证书中以数据集格式存储数据片段,将复合证书的基 本单元设为数据集,用来保存符合一定数据特征的数字证书的数据片段,这些 特征由数据集的属性(Attribute)来标识。所述属性,优选地可包括Tag值(标 签)、各数据单元的对象类型和存储格式等。

优选地,可根据待存储的数字证书的数据内容,设置数据集。同一个数据 集可用于保存同一类型的数据片段。例如:可设OID数据集,用于保存内容为 对象标识符的数据片段。其中,对象标识符用于标识对象类或属性的编号。也 可以设定数据集用来保存没有任何含义,但是满足特定条件的离散数据,譬如 长度为1字节的数据。

在其他实施方式中,也可以将各数据片段以分区存储的方式进行存储,并 将各数据片段的存储区域与各数据片段存储前所处的数字证书进行对应。

对于匹配模块200,可以每分割一个数字证书,对该数字证书的数据片段进 行一次数据匹配,查找出本数字证书分割所得的数据片段中结构和内容均一致 的数据片段。也可以在分割完两个以上的数字证书后,对两个以上的数字证书 的数据片段进行一次数据匹配,查找出两个以上的数字证书分割所得的数据片 段中结构和内容均一致的数据片段。

优选地,可将结构和内容均一致的数据片段中的一个数据片段划分为有效 数据片段,剩余数据片段均划分为冗余数据片段。若划分后,有效数据片段的 数目为两个以上时,可对多个有效数据片段中的一个有效数据片段记录其自身 的数据位置信息以及所述冗余数据片段的数据位置信息。

进一步地,所述结构和内容均一致的一组数据片段,为一个或多个数字证 书中的冗余信息。在一个Ukey(一种通过USB直接与计算机相连、具有密码验 证功能、可靠高速的小型存储设备)中保存的数字证书存在大量的冗余信息。 譬如:Ukey等证书存储介质,通常需同时保存用户证书与证书认证机构的机构 证书,以便构造完整的证书链。而用户证书的颁发者与证书认证机构的公钥证 书的主体信息完全一致,即为冗余信息。又如:Ukey等证书存储介质,分别保 存了签名证书与加密证书,这两张证书的颁发者、主体信息均完全一致,即为 冗余信息。再如:上述证书存储介质,会保存多种密钥类型的用户证书,而这 些用户证书的主体信息一般均相同,即为冗余信息。

此外,数字证书遵循的ASN.1编码本身也存在很多冗余信息,譬如证书一 般有SEQUENCE(证书版本号)类型嵌套而成,此时数字证书中会包含很多用 来标识这种类型的Tag字节。数字证书中存在大量的OID类型数据,同样会包 含多个用于标识该类型的Tag字节。通过分割步骤(步骤101)后,匹配步骤(步 骤102)可将上述冗余信息查找出来,其中一些为用于存储的有效数据片段,另 一些不存储的冗余数据片段。

在一个实施例中,匹配模块200可用于:

通过计算分割所得的数据片段的Hash校验值,对各数据片段进行匹配校验, 校验出结构和内容均一致的数据片段。

在其他实施方式中,本领域技术人员还可以通过本领域惯用的其他技术手 段,对分割所得的数据片段进行数据匹配。如:预先对证书模板进行分析,可 以根据先验信息来进行匹配,不一定是完全智能算法。又如:证书颁发者对象 可以作为整体进行匹配,证书主体信息则应取其签名若干SET序列的组合来进 行匹配。

在另一个实施例中,可根据存储数字证书的存储介质的存储空间的大小, 来划分所述冗余数据片段和所述有效数据片段,若存储空间较小,需要存储的 数字证书的数目较多,那么可将结构和内容均一致的数据片段中一个数据片段 划分为有效数据片段,其他的数据片段均为冗余数据片段(优选地,可将冗余 数据片段删除),即结构和内容均一致的数据片段仅存储一个。

对于存储模块300,当结构和内容均一致的数据片段中除一个数据片段作为 有效数据片段用于存储外,其他的数据片段均为冗余数据片段时,对用于存储 的一个有效数据片段记录其自身的数据位置信息以及划分为冗余数据片段的其 他数据片段的数据位置信息,在重组时用于替代与其结构和内容均一致的冗余 数据片段在各数字证书中的数据位置。

优选地,可为每一个数据片段设定一个数据标识,该数据标识可以是数字 编号,也可以是各数据片段的存储位置,进而可以通过记录各数据片段的数据 标识来记录各数据片段间的数据关系,并将记录的数据关系与各数字证书一一 对应。

在一个实施例中,存储模块300可用于:

将分割所得的数据片段中除所述冗余数据片段外的其它数据片段,分别作 为数据集的数据单元进行存储,其中,一个数据片段对应一个数据集的一个数 据单元。

根据分割所得的各数据片段在所述数字证书中的数据位置,获取并存储各 数据单元间的数据关系,以记录存储的各数据片段在所述数字证书中的数据位 置信息。

其中,所述数据关系优选地为各数据片段在数字证书中的位置关系或排列 顺序。

进一步地,存储模块300还可用于:

为每个数据单元分配唯一的全局索引,并将分配的全局索引存储在预设的 索引数据集中。

对应分割所得的各数据片段在所述数字证书中的数据位置,将各数据单元 的全局索引进行排序,形成用于恢复所述数字证书的索引序列,以记录存储的 各数据片段在所述数字证书中的数据位置信息。

更进一步地,存储模块300还可进一步用于分析形成的索引序列,查找出 形成的索引序列中出现次数高于频率阈值的序列片段,将高于频率阈值的序列 片段作为数据集的数据单元进行存储,并为存储所述序列片段的数据单元分配 全局索引,以替换所述索引序列中的所述序列片段。

在另一个实施例中,存储模块300可用于:

判断分割所得的数据片段中每组相同片段组中数据片段的数目是否超过片 段阈值,其中,所述相同片段组为一组结构和内容均一致的数据片段。

若超过,则将超过所述片段阈值的相同片段组中的有效数据片段作为数据 集的属性进行存储。

将除所述冗余数据片段和所述作为所述数据集的属性进行存储的有效数据 片段外的其他分割所得的数据片段,分别作为所述数据集的数据单元进行存储, 其中,一个数据片段对应一个数据集的一个数据单元。

根据分割所得的各数据片段在所述数字证书中的数据位置,获取并存储所 述数据集的属性以及各数据单元间的数据关系,以记录存储的各数据片段在所 述数字证书中的数据位置信息。

其中,例如数字证书为OID类型的数字证书,分割边界确定为Tag字段的 边界与Length字段和Value字段组成的复合结构的结构边界,在本实施例中, 可将Tag字段作为数据集属性,经上述步骤后剩余的数据片段作为数据集的数 据单元进行存储。

以下所述是本发明数字证书存储系统第二实施方式。

本实施方式的数字证书存储系统与第一实施方式的区别在于:分割模块100 还可用于:

获取待存储的各数字证书。

将各数字证书的数据内容转换为统一的编码格式,同时记录转换所得的数 据内容在各数字证书中的原始编码格式和数据位置信息。

根据格式转换后的各数字证书的特征信息,从预设的证书存储模板中查找 与格式转换后的各数字证书匹配的证书存储模板。

建立查找到的证书存储模板中的各占位符与格式转换后的各数字证书的数 据内容间的对应关系。

根据ASN.1编码规则,对与各占位符对应的数据内容进行数据分割,分割 为两个以上的数据片段。

本实施方式所述的数字证书存储系统,可进一步消除ASN.1编码的冗余信 息,节省存储空间。

其中,对于分割模块100,将数字证书的数据内容转换为统一的编码格式, 可将原来不同的数据内容转换为结构和内容均一致的数据内容。

在一个实施例中,分割模块100还可用于:

将各数字证书中的所有字符串对象均转换为UTF8格式,同时记录转换所得 的各字符串对象在各数字证书中的原始编码格式和数据位置信息。

在其他实施方式中,所述统一的编码格式还可以是本领域技术人员惯用的 其他编码格式。

以下所述是本发明数字证书存储系统第三实施方式。

本实施方式的数字证书存储系统与第一实施方式的区别在于:当与格式转 换后的各数字证书匹配的证书存储模板为一个复合证书时,存储模块300还可 用于:

根据分割所得的数据片段的数据特征,将分割所得的数据片段中除冗余数 据片段外的其它数据片段,作为所述复合证书的各数据集的数据单元进行存储, 其中,所述预设的存储格式与各数字证书的数据格式对应。

为所述复合证书的各数据集中的各数据单元建立全局索引,并将建立的全 局索引存储在预设的索引数据集中。

对应分割所得的各数据片段在各数字证书中的数据位置,将各数据单元的 全局索引进行排序,形成用于恢复各数字证书的索引序列,以记录存储的各数 据片段在各数字证书中的数据位置信息。

将各索引序列作为所述复合证书的数据集的数据单元进行存储,并为存储 各索引序列的数据单元建立全局索引。

将存储各索引序列的数据单元的全局索引作为各数字证书的证书描述。

本实施方式所述的数字证书存储系统,多个数字证书对应一个复合证书模 板进行数据片段的存储,可将多个数字证书中的冗余信息消除,通过索引来引 用数据单元,方便记录各数据单元间的数据关系,而且可快速准确的检索到对 应的数据片段。

其中,对于存储模块300,每个数据集内部保存的用户数据都赋予一个序号, 所有数据集的序号进行统一编码,一个序号仅对应一个数据单元,并将其称为 索引。通过将一系列的索引按照特定顺序来拼接,表示这些索引对应的用户数 据可以按照相同的顺序进行拼接,从而构建一个数字证书的片断,甚至是一个 完整的数字证书。这样的索引序列也可以被一个索引进行编号,换言之可以采 用嵌套的序列来描述数字证书的结构。

进一步地,还可根据获得的各数字证书的证书特性,将各数字证书的证书 名称作为证书描述保存在所述复合证书中

优选地,还可根据获得的各数字证书的证书特性,将各数字证书的私钥名 称、密钥用法、密钥类型的索引值、私钥文件的索引值和公钥文件的索引值, 作为密钥描述存储在所述复合证书中。

在一个实施例中,存储模块300还可用于:

分析形成的各索引序列,查找出在一个或多个索引序列中出现次数高于频 率阈值的序列片段,将高于频率阈值的序列片段作为数据集的数据单元进行存 储,并为存储所述序列片段的数据单元分配全局索引,以替换一个或多个索引 序列中的所述序列片段。

将替换后的各索引序列作为所述复合证书的数据集的数据单元进行存储。

在另一个实施例中,在将数据片段、索引序列或全局索引作为数据集的数 据单元进行存储时,在各数据集的属性中记录各数据单元的对象类型和存储格 式,其中,所述对象类型包括ASN.1格式的对象、索引序列格式的对象、X509 格式的对象、带格式化的对象、带实例化序列的对象和外部文件对象中的至少 一种,所述存储格式用于将数据单元转换为数据片段。

请参阅图6,图6所示为本发明数字证书读取方法第一实施方式的流程示意 图。

本实施方式所述的数字证书读取方法包括以下步骤:

步骤601,从证书存储空间获取与待读取的数字证书对应的数据片段,以及 所述数据片段在所述数字证书中对应的数据位置信息,其中,所述数据片段包 括至少一个有效数据片段,所述有效数据片段对应至少两个数据位置信息。

步骤602,将所述有效数据片段之外的数据片段按照其对应的数据位置信息 进行组合,将有效数据片段分别在其对应的每个数据位置恢复对应的数据片段, 重组成所述数字证书。

本实施方式所述的数字证书读取方法,通过从证书存储空间获取与待读取 的数字证书对应的数据片段,以及所述数据片段在所述数字证书中对应的数据 位置信息,再将所述有效数据片段之外的数据片段按照其对应的数据位置信息 进行组合,将有效数据片段分别在其对应的每个数据位置恢复对应的数据片段, 重组成所述数字证书,可在节约存储空间的基础上,快速读取完整的数字证书。

其中,对于步骤601,所获取的数据片段为通过图1至4中任意一项所示的 数字证书存储方法存储的数据片段。

优选地,可根据预先设置的标记(如索引)或与待读取的数字证书对应的 数据特性,查找到所述数据片段。

对于步骤602,所述预先记录的存储在所述证书存储空间的各数据片段在各 数字证书中的数据位置与图1至4中任意一项所示的数字证书存储方法中记录 的数据位置对应。

请参阅图7,图7是本发明数字证书读取方法第二实施方式的流程示意图。

本实施方式的数字证书读取方法与第一实施方式的区别在于:当所述数据 片段作为数据集的数据单元存储在所述证书存储空间,所述数据位置信息为用 于恢复所述数字证书的索引序列时,所述从证书存储空间获取与待读取的数字 证书对应的数据片段,以及所述数据片段在所述数字证书中对应的数据位置信 息的步骤包括以下步骤:

步骤701,获取所述数字证书的索引序列,依次扫描所述索引序列中每个全 局索引对应的数据集的数据单元,并将每个全局索引转换为扫描到的数据单元。

步骤702,根据各扫描到的数据单元所属数据集的属性,对每个转换后的全 局索引执行预设的恢复操作,恢复为对应的数据片段。

本实施方式所述的数字证书读取方法,通过全局索引,可快速读取需要读 取的数字证书,节约读取时间。

其中,对于步骤701,所述全局索引为本发明所述的数字证书存储方法中建 立的全局索引。优选地,当所述数字证书的索引序列作为所述数字证书的证书 描述对应记录时,直接查找所述数字证书的证书描述即可获取。

在一个实施例中,在执行所述获取所述数字证书的根索引的步骤之前,还 包括以下步骤:

分析所述证书存储空间内的每个数据集,建立全局索引与数据单元之间一 一对应的数据表。

优选地,在具体的分析过程中,可读取索引文件,获得证书容器文件标识 符的列表,读取每一个证书容器文件,分析其中包含的所有复合证书,读取每 一个复合证书,分析其中包含的所有证书描述、数据集,分析每一个数据集, 提取每一个数据单元对应的索引,检查数据单元个数与Count参数是否匹配, 若不匹配则终止读取数字证书,检查所有数据单元的索引是否存在冲突,若发 生冲突则终止读取数字证书。

在另一个实施例中,所述获取所述数字证书的索引序列的步骤包括以下步 骤:

获取所述数字证书的证书描述,扫描所述证书描述所含的全局索引对应的 数据集的数据单元,从所述数据单元中获取所述数字证书的索引序列。

在其他实施例中,所述依次扫描获取的每个全局索引对应的数据集的数据 单元,并将每个全局索引转换为扫描到的数据单元的步骤包括以下步骤:

根据扫描到的数据单元所在数据集的属性,获取所述数据单元的对象类型, 其中,所述对象类型包括ASN.1格式的对象、索引序列格式的对象、带格式化 的对象、带实例化序列的对象和外部文件对象中的至少一种。

若扫描到的数据单元为ASN.1格式的对象(或简单对象),则将每个全局索 引转换为扫描到的数据单元。

若扫描到的数据单元是索引序列格式的对象(或复合对象),则将所述数据 单元仍以索引序列的形式保存,并根据所述索引序列继续扫描,直至扫描到的 数据单元为ASN.1格式的对象时,将所述索引序列中的各全局索引转换为扫描 到的数据单元。

若扫描到的数据单元是带格式化的对象(或带格式化序列的复合对象),则 根据第一子索引进行扫描,直至对应的数据单元,扫描到的数据单元为ASN.1 格式的对象时,将所述索引序列中的各全局索引转换为扫描到的数据单元。

根据第二子索引获取字符串格式。

若扫描到的数据单元是带实例化序列的对象(或带实例化序列的复合对 象),则根据第一子索引读取与所述数字证书匹配的证书存储模板。

根据第二子索引获取与各占位符对应的数据单元的索引序列。

根据各索引序列继续扫描,直至扫描到的数据单元为ASN.1格式的对象时, 将所述索引序列中的各全局索引转换为扫描到的数据单元。

若扫描到的数据单元是外部文件对象(或外部文件标识),则读取对应的外 部文件的数据内容。

优选地,经过多次扫描,尝试恢复每个索引对应的原始数据片段,其中第1 次扫描恢复所有的简单对象,其后的每次扫描则用户恢复复合对象,当发现复 合对象索引的对象是尚未恢复原始数据的对象,则先处理被索引的对象。经过 若干次扫描之后,应该恢复所有索引对应的原始数据,对于每个索引对应的数 据单元,需要根据所在数据集的Attribute元素,分别采用如下不同方式来恢复 它们的原始数据。

对于步骤702,所述预设的恢复操作与本发明所述的数字证书存储方法第四 实施方式中数据集中存储的数据单元的具体格式或所属数据集的属性(Attribute 元素)对应。

在一个实施例中,所根据各扫描到的数据单元所属数据集的属性,对每个 转换后的全局索引执行预设的恢复操作,恢复为对应的数据片段的步骤包括以 下步骤:

若扫描到的数据单元为ASN.1格式的对象、和/或索引序列格式的对象,则 根据最终各扫描到的数据单元所属数据集的属性中记录存储格式,将每个转换 后的全局索引作为与所述数字证书对应的数据片段,或将每个转换后的全局索 引与数据集的T元素串接后作为所述数字证书对应的数据片段。

若扫描到的数据单元是带实例化序列的对象,则将转换后的全局索引填充 到读取的证书存储模板中,每个占位符对应的数据单元的索引序列全部转换后, 则计算其对应的数据片段的长度,以替换所述证书存储模板中L字段的数据。

在另一个实施例中:

所述将所述有效数据片段之外的数据片段按照其对应的数据位置信息进行 组合的步骤还包括以下步骤:

将恢复后的数据片段按照所述索引序列进行排序和/或嵌套。

或,在执行所述获取所述数字证书的根索引的步骤之前,还包括以下步骤:

分析所述证书存储空间内的每个数据集,建立全局索引与数据单元之间一 一对应的数据表。

此外才,索引序列对应的原始数据被成功恢复,则代表某张证书被成功恢 复,通过计算杂凑并与证书描述中的Hash进行比较,从而判断解码的证书是否 正确。

请参阅图8,图8所示为本发明数字证书读取系统第一实施方式的结构示意 图。

本实施方式所述的数字证书读取系统包括读取模块810和重组模块820,其 中:

读取模块810,从证书存储空间获取与待读取的数字证书对应的数据片段, 以及所述数据片段在所述数字证书中对应的数据位置信息,其中,所述数据片 段包括至少一个有效数据片段,所述有效数据片段对应至少两个数据位置信息。

重组模块820,将所述有效数据片段之外的数据片段按照其对应的数据位置 信息进行组合,将有效数据片段分别在其对应的每个数据位置恢复对应的数据 片段,重组成所述数字证书。

本实施方式所述的数字证书读取系统,通过从证书存储空间获取与待读取 的数字证书对应的数据片段,以及所述数据片段在所述数字证书中对应的数据 位置信息,再将所述有效数据片段之外的数据片段按照其对应的数据位置信息 进行组合,将有效数据片段分别在其对应的每个数据位置恢复对应的数据片段, 重组成所述数字证书,可在节约存储空间的基础上,快速读取完整的数字证书。

其中,对于读取模块810,所获取的数据片段为通过图1至4中任意一项所 示的数字证书存储方法存储的数据片段。

优选地,可根据预先设置的标记(如索引)或与待读取的数字证书对应的 数据特性,查找到所述数据片段。

对于重组模块820,所述预先记录的存储在所述证书存储空间的各数据片段 在各数字证书中的数据位置与图1至4中任意一项所示的数字证书存储方法中 记录的数据位置对应。

以下所述本发明数字证书读取系统第二实施方式。

本实施方式的数字证书读取系统与第一实施方式的区别在于:当所述数据 片段作为数据集的数据单元存储在所述证书存储空间,所述数据位置信息为用 于恢复所述数字证书的索引序列时,读取模块810还可用于:

获取所述数字证书的索引序列,依次扫描所述索引序列中每个全局索引对 应的数据集的数据单元,并将每个全局索引转换为扫描到的数据单元。

根据各扫描到的数据单元所属数据集的属性,对每个转换后的全局索引执 行预设的恢复操作,恢复为对应的数据片段。

本实施方式所述的数字证书读取系统,通过全局索引,可快速读取需要读 取的数字证书,节约读取时间。

其中,对于读取模块810,所述全局索引为本发明所述的数字证书存储方法 中建立的全局索引。优选地,当所述数字证书的索引序列作为所述数字证书的 证书描述对应记录时,直接查找所述数字证书的证书描述即可获取。

在一个实施例中,在执行所述获取所述数字证书的根索引的步骤之前,还 包括以下步骤:

分析所述证书存储空间内的每个数据集,建立全局索引与数据单元之间一 一对应的数据表。

优选地,在具体的分析过程中,可读取索引文件,获得证书容器文件标识 符的列表,读取每一个证书容器文件,分析其中包含的所有复合证书,读取每 一个复合证书,分析其中包含的所有证书描述、数据集,分析每一个数据集, 提取每一个数据单元对应的索引,检查数据单元个数与Count参数是否匹配, 若不匹配则终止读取数字证书,检查所有数据单元的索引是否存在冲突,若发 生冲突则终止读取数字证书。

在另一个实施例中,所述获取所述数字证书的索引序列的步骤包括以下步 骤:

获取所述数字证书的证书描述,扫描所述证书描述所含的全局索引对应的 数据集的数据单元,从所述数据单元中获取所述数字证书的索引序列。

在其他实施例中,所述依次扫描获取的每个全局索引对应的数据集的数据 单元,并将每个全局索引转换为扫描到的数据单元的步骤包括以下步骤:

根据扫描到的数据单元所在数据集的属性,获取所述数据单元的对象类型, 其中,所述对象类型包括ASN.1格式的对象、索引序列格式的对象、带格式化 的对象、带实例化序列的对象和外部文件对象中的至少一种。

若扫描到的数据单元为ASN.1格式的对象(或简单对象),则将每个全局索 引转换为扫描到的数据单元。

若扫描到的数据单元是索引序列格式的对象(或复合对象),则将所述数据 单元仍以索引序列的形式保存,并根据所述索引序列继续扫描,直至扫描到的 数据单元为ASN.1格式的对象时,将所述索引序列中的各全局索引转换为扫描 到的数据单元。

若扫描到的数据单元是带格式化的对象(或带格式化序列的复合对象),则 根据第一子索引进行扫描,直至对应的数据单元,扫描到的数据单元为ASN.1 格式的对象时,将所述索引序列中的各全局索引转换为扫描到的数据单元。

根据第二子索引获取字符串格式。

若扫描到的数据单元是带实例化序列的对象(或带实例化序列的复合对 象),则根据第一子索引读取与所述数字证书匹配的证书存储模板。

根据第二子索引获取与各占位符对应的数据单元的索引序列。

根据各索引序列继续扫描,直至扫描到的数据单元为ASN.1格式的对象时, 将所述索引序列中的各全局索引转换为扫描到的数据单元。

若扫描到的数据单元是外部文件对象(或外部文件标识),则读取对应的外 部文件的数据内容。

优选地,经过多次扫描,尝试恢复每个索引对应的原始数据片段,其中第1 次扫描恢复所有的简单对象,其后的每次扫描则用户恢复复合对象,当发现复 合对象索引的对象是尚未恢复原始数据的对象,则先处理被索引的对象。经过 若干次扫描之后,应该恢复所有索引对应的原始数据,对于每个索引对应的数 据单元,需要根据所在数据集的Attribute元素,分别采用如下不同方式来恢复 它们的原始数据。

对于读取模块810,所述预设的恢复操作与本发明所述的数字证书存储方法 第四实施方式中数据集中存储的数据单元的具体格式或所属数据集的属性 (Attribute元素)对应。

在一个实施例中,所根据各扫描到的数据单元所属数据集的属性,对每个 转换后的全局索引执行预设的恢复操作,恢复为对应的数据片段的步骤包括以 下步骤:

若扫描到的数据单元为ASN.1格式的对象、和/或索引序列格式的对象,则 根据最终各扫描到的数据单元所属数据集的属性中记录存储格式,将每个转换 后的全局索引作为与所述数字证书对应的数据片段,或将每个转换后的全局索 引与数据集的T元素串接后作为所述数字证书对应的数据片段。

若扫描到的数据单元是带实例化序列的对象,则将转换后的全局索引填充 到读取的证书存储模板中,每个占位符对应的数据单元的索引序列全部转换后, 则计算其对应的数据片段的长度,以替换所述证书存储模板中L字段的数据。

在另一个实施例中:

所述将所述有效数据片段之外的数据片段按照其对应的数据位置信息进行 组合的步骤还包括以下步骤:

将恢复后的数据片段按照所述索引序列进行排序和/或嵌套。

或,在执行所述获取所述数字证书的根索引的步骤之前,还包括以下步骤:

分析所述证书存储空间内的每个数据集,建立全局索引与数据单元之间一 一对应的数据表。

此外才,索引序列对应的原始数据被成功恢复,则代表某张证书被成功恢 复,通过计算杂凑并与证书描述中的Hash进行比较,从而判断解码的证书是否 正确。

请参阅图9,图9所示为本发明另一数字证书读取方法第一实施方式的流程 示意图。

本实施方式所述的数字证书读取方法包括以下步骤:

步骤901,根据ASN.1编码规则,将数字证书分割为两个以上的数据片段。

步骤902,对分割所得的数据片段进行数据匹配,获取结构和内容均一致的 至少两个数据片段,将所述结构和内容均一致的数据片段划分为至少一个冗余 数据片段和至少一个有效数据片段。

步骤903,将分割所得的数据片段中除所述冗余数据片段外的其它数据片 段,存储到证书存储空间,并对应记录存储的各数据片段在所述数字证书中的 数据位置信息,其中,对所述有效数据片段记录其自身的数据位置信息以及所 述冗余数据片段的数据位置信息。

步骤904,从证书存储空间获取与待读取的数字证书对应的数据片段,以及 所述数据片段在所述数字证书中对应的数据位置信息。

步骤905,将所述有效数据片段之外的数据片段按照其对应的数据位置信息 进行组合,将有效数据片段分别在其对应的每个数据位置恢复对应的数据片段, 重组成所述数字证书。

其中,上述步骤901至步骤903,与图1至图4中任意一个对应的上述数字 证书存储方法中的存储数字证书的操作过程相应。

步骤904与步骤905与图6和图7所述的数字证书读取方法中的操作过程 相应。

请参阅图10,图10所示为另一本发明数字证书读取系统第一实施方式的结 构示意图。

本实施方式所述的数字证书读取系统包括分割模块100、匹配模块200、存 储模块300、读取模块810和重组模块820,其中:

分割模块100,用于根据ASN.1编码规则,将数字证书分割为两个以上的 数据片段。

匹配模块200,用于对分割所得的数据片段进行数据匹配,获取结构和内容 均一致的至少两个数据片段,将所述结构和内容均一致的数据片段划分为至少 一个冗余数据片段和至少一个有效数据片段。

存储模块300,用于将分割所得的数据片段中除所述冗余数据片段外的其它 数据片段,存储到证书存储空间,并对应记录存储的各数据片段在所述数字证 书中的数据位置信息,其中,对所述有效数据片段记录其自身的数据位置信息 以及所述冗余数据片段的数据位置信息。

读取模块810,用于从证书存储空间获取与待读取的数字证书对应的数据片 段,以及所述数据片段在所述数字证书中对应的数据位置信息。

重组模块820,用于将所述有效数据片段之外的数据片段按照其对应的数据 位置信息进行组合,将有效数据片段分别在其对应的每个数据位置恢复对应的 数据片段,重组成所述数字证书。

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号