一种数字证书撤销列表的快速处理方法 【技术领域】
本发明涉及一种用于互联网中,对用户或服务器进行身份认证时的一种数字证书撤销列表的快处理方法。
背景技术
随着互联网的发展,人们越来越多的采用网络来完成一些敏感数据的事务处理,比如:网上银行,网上购物等等。这些敏感数据的事务处理的电子化导致非常重要和私密的数据经常在网络中传输。为此,人们发明了很多新的技术来保证这些重要和私密的数据能够在网络中安全可靠的传输,越来越多的用户使用数字证书技术来验证用户身份和网络上服务器的身份,其中标识用户或服务器已经在黑名单中的技术是数字证书撤销列表。
数字证书应用系统,如浏览器、SSL加速器等,在进行验证时都需要检查数字证书是否在数字证书撤销列表中,通常数字证书撤销列表中包含的数据量很大,而数字证书撤销列表本身又是根据ASN.1(Abstract Syntax Notation One)编码的复杂实体,应用系统需要进行复杂的读取和分析工作。
对数字证书撤销列表的解析,基本的解决方案是按照ASN.1编码规则对数字证书撤销列表进行解码,然后套用到数字证书撤销列表的结构中,这种方法的好处是能够利用ASN.1的编码特点进行迭代,应用系统容易实现,但忽略了数字证书撤销列表结构自身的特点,比较盲目,容易造成系统处理瓶颈,导致数字证书验证缓慢,因此优化数字证书撤销列表的处理就成为非常紧迫和具有现实意义的需求。
【发明内容】
针对上述问题,本发明的目的是提供一种应用系统处理效率高同时对系统资源消耗低的数字证书撤销列表快速处理方法。
为实现上述目的,本发明采取以下技术方案:一种数字证书撤销列表的快速处理方法,它包括以下步骤1)根据数字证书撤销列表的结构特点,将数字证书撤销列表拆成数字证书撤销信息主体、数字证书撤销列表签名算法标识和数字证书撤销列表签名值三个部分;2)根据数字证书撤销列表的编码格式,从数字证书撤销信息主体中定位并解析出各主要子段;3)根据所有解析出来的主要字段的位置信息建立一张偏移长度信息表,并将所有主要字段的偏移和长度存放到偏移长度信息表中;4)当重新用到数字证书撤销列表的主要字段信息时,直接从步骤3)建立的偏移长度信息表中读取。
在执行步骤2)时,通过以下方法进行:①首先定位到以″30″开头来标识新部分;②把紧跟″30″的数字与作为证书字段开始标志的数字80进行比较;③如果比较结果是″no″,则根据将下一个八位位组的值作为长度;④如果比较的结果是″yes″,则先计算出长度占用的位数,然后将紧接着的几位八位位组转化为整数即为长度,将偏移量设为长度的后一位,将偏移量和长度存放在偏移长度表中;⑤根据偏移量和算出的内容长度读取这个主要字段的内容。
由于采用了以上技术方案,本发明具有如下优点:1、由于本发明根据数字证书撤销列表的结构特点和编码格式,能够快速定位到主要字段的准确位置,因此在查找过程中,每次使用到数字证书撤销列表的内容时,均能快速读取到相关信息,大大提高了数字证书撤销列表解析和验证的过程,加快了安全事务处理的响应时间。2、当需要再次用到数字证书撤销列表的主要字段信息时,本发明可以直接从以前建立的偏移长度表中读取,因此节省了后续多次而重复的数字证书撤销列表解析工作,为后续访问提供了极大的便利。3、由于本发明数字证书撤销列表解析和验证的工作效率提高了,因此对系统资源,如处理器,内存等等的损耗大大降低。
【附图说明】
图1是本发明数字证书撤销列表整体结构示意图
图2是本发明数字证书撤销列表信息主体结构示意图
图3是本发明数字证书撤销列表处理的流程图
【具体实施方式】
下面结合附图和实施例对本发明进行详细的描述。
如图1所示,数字证书撤销列表的结构包括数字证书撤销列表信息主体(tbsCertList)、数字证书撤销列表签名算法标识(signatureAlgorithm)和数字证书撤销列表签名值(signatureValue)。其中tbsCertList部分是主要部分,它包含了证书的很多主要宇段。如图2所示,比如:签发者名称(issuer)、本次更新时间(thisUpdate)、下次更新时间(nextUpdate)、已撤销的证书(revokedCertificate)以及其它的相关信息,这些主要字段正是验证证书合法性所需要的数据。
由于数字证书撤销列表结构非常清晰,在解析数字证书撤销列表时,无须完全按照ASN.1编码地格式先行完整而繁琐的解析。本发明的解析方法,能够依赖ASN.1DER(Distinguished Encoding Rules,非典型编码规则)编码规范的特点和数字证书撤销列表结构的特点进行快速的解析。本发明在提高应用系统处理证书证书撤销列表处理性能的同时降低了系统资源的消耗,为处理数字证书撤销列表提供了极大的便利。
为了详细说明本发明的方法及所达到的功效,现举以下实施例:
1、根据数字证书撤销列表的结构特点将数字证书撤销列表拆成数字证书撤销列表撤销信息主体、数字证书撤销列表签名算法标识和数字证书撤销列表签名值三个部分。
一份数字证书撤销列表的主要内容如下所示:30 8x……30 8w yy yy tbsCertList30 0D signatureAlgorithm 03 81 81 signatureValue
上述数字证书撤销列表的二进制数据流中的内容以″30″开头来标识新部分的开始,紧跟″30″后面的数字表示新部分的数据长度。比如″8x″表示的是要分拆的三部分的总长度,″8w″表示的是tbsCertList的长度有w位,取出w位的长度的字节就是tbsCertList部分。依此类推,″30 0D”一表示signatureAlgorithm有13位,″03 81 81″表示signatureValue有129位。
2、根据数字证书撤销列表的编码格式,从数字证书撤销列表信息主体中定位主要字段的准确位置后读取出各主要字段的位置信息。
首先需要解析出来的主要字段包括数字证书撤销列表信息主体中的证书必备域,具体有签发者名称、本次更新时间、下次更新时间、已撤销的证书以及其它的相关信息。
如图3所示,说明了如何定位并读取一个关键字段的基本过程:
①先定位到以″30″开头来标识新部分;②把紧跟″30″的数字与作为数字证书撤销列表字段开始标志的数字80进行比较;③如果比较结果是″no″,则根据函数length=p[i+1]&0X7F计算出长度,其中p[i+1]表示从p的i+1处取出的八位位组,这个内容就是长度;④如果比较的结果是″yes″,则先计算出lensize的值,然后根据ASN.1整数的计算方法,计算长度为lensize的整数,即为内容的长度;⑤根据算出的内容长度读取这个主要字段的内容。
3、根据所有解析出来的主要字段的位置信息建立一张偏移长度表,并将所有主要字段的偏移和长度存放到偏移长度表中。
偏移长度表用一个二维数组来表示,如下面所示:
offsetLength[0][0]=4/*第一个是数字证书撤销列表主体数据的偏移*/
offsetLength[0][1]=2367/*第一个是数字证书撤销列表主体数据的长度*/
offsetLength[1][0]=2324/*第二个是签发者数据的偏移*/
offsetLength[1][1]=13/*第二个是签发者数据的长度*/
offsetLength[2][0]=2339/*第三个是签名值数据的偏移*/
offsetLength[2][1]=129/*第三个是签名值数据的长度*/
…………
4、从这步开始,凡是要用到主要字段信息的都直接从步骤3建立起来的偏移长度表中读取出来。这样在验证证书时,每次使用到数字证书撤销列表的内容时,均能快速读取到相关信息,大大提高了数字证书撤销列表解析和验证的速度,缩短了应用系统处理数字证书撤销列表的响应时间,并且由于数字证书撤销列表解析和验证的工作效率提高了,对系统资源(如处理器,内存等等)的损耗大大降低。
上述实施例仅为本发明的一个较佳实施例,在本发明的实质创意范围内,本发明采用的算法可以有许多变化或替换,这些算法的变化或替换都不应排除在本发明的保护范围之外。