证书基本结构与编码_第1页
证书基本结构与编码_第2页
证书基本结构与编码_第3页
证书基本结构与编码_第4页
证书基本结构与编码_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章证书根本结构与编码本节内容证书根本结构证书描述方法证书编码证书根本结构一张数字证书由证书内容、签名算法和签名结果组成证书内容签名算法签名结果证书的根本结构证书根本结构证书内容包括版本号——为了更好的升级、扩展证书主体Subject主体公钥内容签发者Issuer序列号——证书唯一标识有效期扩展项。。。证书根本结构证书实例证书根本结构版本号数字证书有自己的格式,而这个格式可能会不断改进。为了让所有应用系统正确地识别证书内容,需考虑向前和向后兼容。因此,在证书中标明自己的格式版本有利于应用程序根据不同的格式定义来正确阅读不同的证书。证书主体证书的持有者〔订户〕不仅具有证书的使用权,而且具有证书的所有权。不仅可以把证书复制或传递给别人,更重要的是,证书主体拥有证书中的身份、公钥和对应的私钥。证书根本结构主体公钥信息PKI是算法无关的,实际中可以使用多种算法公钥信息中首先需要指明所用的公钥算法,随后才是公钥信息本身签发者CA序列号证书编号如果签发者命名能满足唯一性要求的话,用“签发者〞和“序列号〞就可以唯一的标识任何一张数字证书。证书根本结构有效期持有数字证书也就享有了证书签发结构通过证书提供的平安效劳,其中还包含着责任和一些法律义务。订户享受的效劳是有时效性的,因此,数字证书应具有一个有效期。长期使用同一密钥是不平安的,而且证书持有者的信息经过一段时间可能会改变,所以需要为证书设置一个包含起、止时间的“有效期〞。本质上是CA负责维护证书状态的时间范围,在此时间内CA担保证书持有者和公钥绑定关系的正确性。证书描述方法证书的描述需要使用精确的语言将内容准确的、无二义的表达出来,以便PKI系统中的各个组件都能正确的处理证书,各种应用系统也能正确的从证书中获取公钥和持有者的信息。根本要求:简明的、无歧义的自然语言?多种语言同语种中一词多义和一义多词程序设计语言?有较严格的语法和较清晰的数据结构表达方式但由于平台相关的编译器不同,同一数据类型在不同系统中的实现就可能有差异。程序语言在内容的顺序上也没有严格规定。证书描述方法ASN.1语法记法标准AbstractSyntaxNotationone抽象语法表示法是描述数据的表示、编码、传输、解码的灵活的记法。它提供了一套正式、无歧义和精确的规那么以描述独立于特定计算机硬件的对象结构。ASN.1是ISO和ITU-T的联合标准,最初是1984年的CCITTX.409:1984的一局部。由于其广泛应用,1988年ASN.1移到独立标准X.208,1995年进行全面修订后变成X.680系列标准。ASN.1本身只定义了表示信息的抽象句法,但是没有限定其编码的方法。证书描述方法ASN.1语法记法标准〔续〕简单类型BITSTRING比特串BOOLEAN布尔型INTEGER整数NULL空值OBJECTIDENTIFIER对象标识符OCTETSTRING字节串PrintableString可打印字符串UTCTime“协调世界时”GeneralizedTime通用时间ASN.1中常用的简单数据类型证书描述方法ASN.1语法记法标准〔续〕构造类型复杂事物可以视为简单的事物集合或序列。集合是顺序无关的,而序列是顺序有关的。构造类型被用来描述复杂的事物,包括假设干字段〔简单类型或其他构造类型〕。ASN.1定义了四种构造方式,描述有序和无序的各种情况。证书描述方法ASN.1语法记法标准〔续〕构造类型(1)SEQUENCE表示1个或多个字段组成的有序序列例如:ReportEntry::=SEQUENCE{authorOCTETSTRING,titleOCTETSTRING,bodyOCTETSTRING,biblioBookBibliography}用户定义的类型名和标识符大小写规定类型名首字母为大写的驼峰式,如“ReportEntry〞标识符首字母为小写的驼峰式,如“biblioBook〞证书描述方法ASN.1语法记法标准〔续〕构造类型(2)SEQUENCEOF表示0个或多个特定类型字段的有序序列例如:Report::=SEQUENCESIZE(100)OFReportEntryReport::=SEQUENCESIZE(MAX)OFReportEntry证书描述方法ASN.1语法记法标准〔续〕构造类型(3)SET表示1个或多个字段组成的无序集合例如:Menu::=SET{ sandwichFood, cokeBeverage}证书描述方法ASN.1语法记法标准〔续〕构造类型(4)SETOF表示0个或多个特定类型字段的无序集合例如:Class::=SETSIZE(50)OFStudent证书描述方法ASN.1语法记法标准〔续〕构造类型基于各种构造方式,将根本数据类型经过层次嵌套,最终构造出能描述任何抽象事物的数据结构。例如:Bibliography::=SEQUENCE{ authorOCTETSTRING titleOCTETSTRING publisherOCTETSTRING yearOCTETSTRING}证书描述方法ASN.1语法记法标准〔续〕其他关键字CHOICEANYOPTIONALDEFAULT证书描述方法ASN.1语法记法标准〔续〕证书的描述实例最广泛的证书格式是X.509v3标准。整体结构X.509证书分为三大局部:证书内容tbsCertificate签名算法signatureAlgorithm签名结果signatureValue使用ASN.1语法描述如下:Certificate::=SEQUENCE{ tbsCertificateTBSCertificate signatureaAlgorithmAlgorithmIdentifier signatureValueBITSTRING}证书描述方法ASN.1语法记法标准〔续〕证书的描述实例其中,签名算法〔signatureAlgorithm〕为CA对tbsCertificate进行签名所使用的算法;类型为AlgorithmIdentifier,其ASN.1语法描述如下: AlgorithmIdentifier::=SEQUENCE{ algorithmOBJECTIDENTIFIER, parametersANYDEFINEDBYalgorithmOPTIONAL }algorithm同时说明了杂凑函数和数字签名算法,常见的有:MD5withRSAEncryption,OID为SHAwithRSAEncryption,OID为签名结果〔signatureValue〕是CA对tbsCertificate进行签名的结果,类型为BITSTRING。证书描述方法ASN.1语法记法标准〔续〕证书的描述实例证书内容〔tbsCertificate〕是需要被CA签名的消息,ASN.1描述如下:

TBSCertificate::=SEQUENCE{ version [0]EXPLICITVersionDEFAULTv1, serialNumberCertificateSerialNumber, signatureAlgorithmIdentifier, issuerName, validityValidity, subjectName, subjectPublicKeyInfoSubjectPublicKeyInfo, issuerUniqueID[1]IMPLICITUniqueIentifierOPTIONAL, subjectUniqueID[2]IMPLICITUniqueIentifierOPTIONAL, extensions[3]EXPLICITExtensionsOPTIONAL}证书编码利用ASN.1可以准确地定义证书应该包含的内容。即ASN.1可以定义证书应该包含的内容的准确类型。无二义性的内容类型的实际取值发送或存储内容的编码问题可以说ASN.1解决的是高层设计者之间的交流问题,编码方法要解决的是机器间的交流问题。编码的作用就是将各种用ASN.1定义的数据类型的值对应到比特流,以便在不同通信实体之间传递,而且使得各通信实体对于所传递的信息理解没有歧义。“TLV〞方式可以完整表示特定类型的数据类型type、长度length和值value解码时,首先识别数据的类型,即可选定处理的方法;然后得到数据的长度,即可进行处理的准备工作;最后就可以正确的得到数据本身的值。证书编码“TLV〞方式的编码很多,如BasicEncodingRules〔BER〕和DistinguishedEncodingRules〔DER〕等编码需要处理的问题包括各种简单数据类型的编码规那么各种数据类型构造方式的编码规那么证书编码简单类型的编码ASN.1类型名称Type值ASN.1类型名称Type值BOOLEAN01OBJECTIDENTIFIER06INTEGER02PrintableString13BITSTRING03UTCTime17OCTETSTRING04GeneralizedTime18NULL05常用简单类型的Type值〔十六进制〕证书编码简单类型编码实例BOOLEAN两种可能取值:TRUE和FALSE在DER编码中,Type=01,Length=01,编码为

TLVTRUE0101FFFALSE010100证书编码简单类型编码实例〔续〕INTEGER整数类型5337的DER编码为 TLV020214D9如果整数非常大,比方256字节020100123456……如何解释??证书编码简单类型编码实例〔续〕INTEGER整数类型长度编码机制如果数据本身长度不大于127〔即0x7F〕,称为“短形式〞,Length占1个字节,直接将长度值赋给Length。如果数据本身长度大于127,称为“长形式〞,把数据的长度L表示为字节码,计算其长度n,然后把n与0x80“位或〞〔BIT-OR〕运算的结果赋给Length的第一个字节。证书编码整数编码实例:0x123456编码为 TLV 02031234560x1234…34〔长0100字节〕即n=2,编码为 TLV 028201001234…340x1234…EF〔长123456字节〕即n=3,编码为 TLV 02831234561234…EF证书编码构造类型数据的编码序列构造类型SEQUENCE和SEQUENCEOF的Type相同,都是30,Value局部为序列内所有工程的编码的依次排列,Length为这些工程编码的总长度。temperatureCapturedSEQUENCE(7)OFINTEGER::={21,15,5,2,5,10,5}DER编码为TLVTLV301502011502010F02010502010202010502010A020105证书编码构造类型数据的编码(续)集合构造类型SET和SETOF的Type相同,都是31,Value局部为集合内所有工程的编码,Length为这些工程编码的总长度。需注意:集合构造类型中的各字段是并列的,逻辑上不分先后,但为了编码的唯一性,在DER编码中,编码的排列是有一定顺序的。SET按标签的顺序排列,SETOF按“字典升序〞排列,即将各工程的DER结果看作字节码从小到大排列。temperatureCapturedSET(7)OF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论