数字证书——密码学笔记(六)
一、数字证书
数字证书可用于:发送安全电子邮件、访问安全站点、网上证券、网上招标采购、网上签约、网上办公、网上缴费、网上税务等网上安全电子事务处理和安全电子交易活动。
数字证书的格式一般采用X.509国际标准。目前,数字证书认证中心主要签发安全电子邮件证书、个人和企业身份证书、服务器证书以及代码签名证书等几种类型证书。
数字证书的格式遵循ITUTX.509国际标准。
1.1 证书结构
证书结构 |
基本证书域(TBSCertificate) |
签名算法域(signatureAlgorithm) |
|
签名值域(signatureValue) |
1.2 基本证书域结构
名称 |
描述 |
说明 |
version |
版本号 |
|
serialNumber |
序列号 |
|
signature |
签名算法 |
|
issuer |
颁发者 |
|
validity |
有效日期 |
|
subject |
主体 |
|
subjectPublicKeyInfo |
主体公钥信息 |
|
issuerUniqueID |
颁发者唯一标识符 |
本标准中不使用 |
subjectUniqueID |
主体唯一标识符 |
本标准中不使用 |
extensions |
扩展项 |
按本标准的扩展项进行定义,参考下一节 |
1.3 标准的扩展域结构
名称 |
描述 |
关键度 |
authorityKeyIdentifier |
机构密钥标识符 |
非关键 |
subjectKeyIdentifier |
主体密钥标识符 |
非关键 |
keyUsage |
密钥用法 |
双证书标记为关键,单证书标记为非关键 |
extKeyUsage |
扩展密钥用途 |
如果密钥的用法只限于所指示的用途时标记为关键,否则标记为非关键 |
privateKeyUsagePeriod |
私有密钥使用期 |
非关键 |
certificatePolicies |
证书策略 |
非关键 |
policyMappings |
策略映射 |
如果证书用户需要正确解释发布的CA设定的规则时标识为关键,否则标识为非关键 |
subjectAltName |
主体替换名称 |
非关键 |
issuerAltName |
颁发者替换名称 |
非关键 |
subjectDirectoryAttributes |
主体目录属性 |
非关键 |
basicConstraints |
基本限制 |
CA证书标记为关键,终端实体证书标记为非关键 |
nameConstraints |
名称限制 |
如果证书用户系统应检验所处理的认证路径与此扩展中的值是否一致时标记为关键,否则标记为非关键 |
policyConstraints |
策略限制 |
如果证书用户需要正确地解释认证机构CA设定的规则时标识为关键,否则标识为非关键 |
CRLDistributionPoints |
CRL分发点 |
非关键 |
inhibitAnyPolicy |
限制所有策略 |
如果证书用户需要正确地解释认证机构CA设定的规则时标识为关键,否则标识为非关键 |
freshestCRL |
最新的CRL |
非关键 |
id-pkix |
私有的 Internet 扩展 |
非关键 |
authorityInfoAccess |
机构信息访问 |
非关键 |
SubjectInformationAccess |
主体信息访问 |
非关键 |
IdentifyCardNumber |
个人身份证号码 |
非关键 |
InuranceNumber |
个人社会保险号 |
非关键 |
ICRegistrationNumber |
企业工商注册号 |
非关键 |
OrganizationCode |
企业组织机构代码 |
非关键 |
TaxationNumber |
企业税号 |
非关键 |
二、X.509数字证书的编码
X.509证书的结构是用ASN1(Abstract Syntax Notation One)进行描述数据结构,并使用ASN1语法进行编码。
ASN1采用一个个的数据块来描述整个数据结构,每个数据块都有四个部分组成:
数据块数据类型标识(一个字节)
数据块长度(1-128个字节)
数据块的值
数据块结束标识(可选)
1.数据块数据类型标识(一个字节)
数据类型包括简单类型和结构类型。
简单类型是不能再分解类型,如整型(INTERGER)、比特串(BIT STRING)、字节串(OCTET STRING)、对象标识符(OBIECT IDENTIFIER)、日期型(UTCTime)等
结构类型是由简单类型和结构类型组合而成的,如顺序类型(SEQUENCE,SEQUENCE OF)、选择类型(CHOICE)、集合类型(SET)等。
- 顺序类型的数据块值由按给定顺序成员成员数据块值按照顺序组成
- 选择类型的数据块值由多个成员数据数据块类型中选择一个的数据块值
- 集合数据块类型由成员数据块类型的一个或多个值构成
这个标识字节的结构如下:
1.1 Bite-bit 7
用来表示TAG类型,共有四种,分别是universal(00)、application(01)、context-specific(10)和private(11)。
这两位为universal(00)时,bit5-bit1的值表示不同的universal的值:
标记(TAG) 对应类型
[UNIVERSAL 1] BOOLEAN [有两个值:false或true]
[UNIVERSAL 2] INTEGER [整型值]
[UNIVERSAL 3] BIT STRING [0位或多位]
[UNIVERSAL 4] OCTET STRING [0字节或多字节]
[UNIVERSAL 5] NULL
[UNIVERSAL 6] OBJECT IDENTIFIER [相应于一个对象的独特标识数字]
[UNIVERSAL 7] OBJECT DESCRIPTOR [一个对象的简称]
[UNIVERSAL 8] EXTERNAL, INSTANCE OF [ASN.1没有定义的数据类型]
[UNIVERSAL 9] REAL [实数值]
[UNIVERSAL 10] ENUMERATED [数值列表,这些数据每个都有独特的标识符,作为ASN.1定义数据类型的一部分]
[UNIVERSAL 12] UTF8String
[UNIVERSAL 13] RELATIVE-OID
[UNIVERSAL 16]SEQUENCE,SEQUENCE OF [有序数列,SEQUENCE里面的每个数值都可以是不同类型的,而SEQUENCE OF里是0个或多个类型相同的数据]
[UNIVERAL 17]SET,SET OF[无序数列,SET里面的每个数值都可以是不同类型的,而SET OF 里是0个或多个类型相同的数据]
[UNIVERSAL 18] NumericString [0-9以及空格]
[UNIVERSAL 19] PrintableString [A-Z、a-z、0-9、空格以及符号'()+,-./:=?]
[UNIVERSAL 20] TeletexString, T61String
[UNIVERSAL 21] VideotexString
[UNIVERSAL 22] IA5String
[UNIVERSAL 23] UTCTime [统一全球时间格式]
[UNIVERSAL 24] GeneralizedTime
[UNIVERSAL 25] GraphicString
[UNIVERSAL 26] VisibleString, ISO646String
[UNIVERSAL 27] GeneralString
[UNIVERSAL 28] UniversalString
[UNIVERSAL 29] CHARACTER STRING
[UNIVERSAL 30] BMPString
[UNIVERSAL 31]... reserved for future use
这两位为context-specific(10)时,bit5-bit1的值表示特殊内容:
[0] -- 表示证书的版本
[1] -- issuerUniqueID,表示证书发行者的唯一id
[2] -- subjectUniqueID,表示证书主体的唯一id
[3] -- 表示证书的扩展字段
1.2 bit6
表示是否为结构类型(1位结构类型,0则表明编码类型是简单类型)。
1.3 bit5-bit1
是类型的TAG值。根据bit8-bit7的不同值有不同的含义,具体含义见上面的描述。
如SEQUENCE类型数据块,其TAG类型位UNIVESAL(00),属于结构类型(1),TAG的值为16(10000),所以其类型标示字段值为(10100011),即为0xA3。
2. 数据块长度(1-128个字节)
长度字段,有两种编码格式。
若长度值小于等于127,则用一个字节表示,bit8=0,bit7-bit1存放长度值;
若长度值大于127,则用多个字节表示,可以有2到127个字节。第一个字节的第8位为1,其它低7位给出后面该域使用的字节的数量,从该域第二个字节开始给出数据的长度,高位优先。
还有一种特殊情况,这个字节为0x80,表示数据块长度不定,由数据块结束标识结束数据块。
3. 数据块的值
存放数据块的值,具体编码随数据块类型不同而不同。
4. 数据块结束标识(可选)
结束数据块的值,两个字节(0x0000),只有在长度值为不定时才会出现。
三、X.509证书的结构
1. X.509证书基本部分
1.1 版本号
标识证书的版本(版本1、版本2或是版本3)
1.2 序列号
标识证书的唯一整数,由证书颁发者分配的本证书的唯一标识符。
1.3 签名
用于签证书的算法标识,由对象标识符加上相关的参数组成,用于说明本证书所用的数字签名算法。例如,SHA-1和RSA的对象标识符就用来说明该数字签名是利用RSA对SHA-1杂凑加密。
1.4 颁发者
证书颁发者的可识别名(DN)
1.5 有效期
证书有效期的时间段。本字段由“Not Before”和“Not After”两项组成,它们分别由UTC时间或一般的时间表示(在RFC2459中有详细的时间表示规则)。
1.6 主体
证书拥有者的可识别名,这个字段必须是非空的,除非你在证书扩展中有别名。
1.7 主体公钥信息
主体的公钥(以及算法标识符)
1.8 颁发者唯一标识符
标识符——证书颁发者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。
1.9 主体唯一标识符
证书拥有者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。
2. X.509扩展部分
可选的标准和专用的扩展(仅在版本2和版本3中使用),扩展部分的元素都有这样的结构:
ExtensiExtension ::= SEQUENCE {
exextnID OBJECT IDENTIFIER,
crcritical BOOLEAN DEFAULT FALSE,
exextnValue OCTET STRING }
extnID:表示一个扩展元素的OID
critical:表示这个扩展元素是否极重要
extnValue:表示这个扩展元素的值,字符串类型
扩展部分包括:
2.1 发行者密钥标识符
证书所含密钥的唯一标识符,用来区分同一证书拥有者的多对密钥。
2.2 密钥使用
一个比特串,指明(限定)证书的公钥可以完成的功能或服务,如:证书签名、数据加密等。
如果某一证书将KeyUsage扩展标记为“极重要”,而且设置为“KeyCertSign”,则在SSL通信期间该证书出现时将被拒绝,因为该证书扩展表示相关私钥应只用于签写证书,而不应该用于SSL。
2.3 CRL分布点
指明CRL的分布地点。
2.4 私钥的使用期
指明证书中与公钥想联系的私钥的使用期限,它也有Not Before和Not After组成。若此项不存在时,公私钥的使用期是一样的。
2.5 证书策略
由对象标识符和限定符组成,这些对象标识符说明证书的颁发和使用策略有关。
2.6 策略映射
表明两个CA域之间的一个或多个策略对象标识符的等价关系,仅在CA证书里存在。
2.7 主体别名
指出证书所拥有者的别名,如电子邮件地址、IP地址等,别名是和DN绑定在一起的。
2.8 颁发者别名
指出证书颁发者的别名,如电子邮件地址、IP地址等,但颁发者的DN必须出现在证书的颁发者字段。
2.9 主体目录属性
指出证书拥有者的一系列属性。可以使用这一项来传递访问控制信息。
数字证书——密码学笔记(六)相关推荐
- 数字图像处理学习笔记 六 彩色图像处理
目录 (一)彩色模型介绍 1.1 RGB模型 1.2 CMY.CMYK模型 1.3 HSI彩色模型 1.4 HSV模型 1.5 YCbCr 彩色空间 (二)伪彩色图像处理 (三)全彩色图像处理及彩色变 ...
- 开发笔记之数字证书(一):数字证书介绍
若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...
- 什么是数字签名?什么是数字证书?密码学知识?
阮一峰老师2011年的这篇文章很好,原文如下: 作者:阮一峰 日期:2011年8月9日 来源:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digi ...
- 【密码学】 一篇文章讲透数字证书
[密码学] 一篇文章讲透数字证书 数字证书介绍 数字证书是一种用于认证网络通信中参与者身份和加密通信的证书,人们可以在网上用它来识别对方的身份. 我们在上一篇博客中介绍了数字签名的作用和原理, ...
- 信息系统项目管理师必背核心考点(六十八)数字证书、数字签名
科科过为您带来软考信息系统项目管理师核心重点考点(六十八)数字证书.数字签名和CA认证中心,内含思维导图+真题 [信息系统项目管理师核心考点]数字证书 1.具有不可抵赖性的特征(一段电子文档) 2.包 ...
- 【K210】K210学习笔记六——MaixHub在线模型训练识别数字
[K210]K210学习笔记六--MaixHub在线模型训练识别数字 前言 K210准备工作 数据的获取 MaixHub如何在线训练模型 训练模型在K210上的测试 小结 前言 本人大四学生,电赛生涯 ...
- 笔记-信息系统安全管理-数字证书
数字证书是公开密钥体制的一种密钥管理媒介.它是一种权威性的电子文档,形同网络计算环境中的一种身份证,用于证明某一主体(如人.服务器等)的身份以及其公开密钥的合法性.在使用公钥体制的网络环境中,必须向公 ...
- 数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)——Web网络系列学习笔记
数字签名是什么? 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥. 2. 鲍勃把公钥送给他的朋友们--帕蒂.道格.苏珊--每人一把. 3. 苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果. 4 ...
- 信息安全工程师笔记-数字证书
概念 数字证书也称公钥证书,是由证书认证机构(CA)签名的,包含公开密钥拥有者信息.公开密钥.签发者信息.有效期.以及扩展信息的一种数据结构. 数字证书基本信息域 序号 项目名 描述 1 versio ...
最新文章
- 【B/S实践】解决:vs中修改样式表后不起作用的问题
- DirectShow基础编程 最简单的源Filter的编写步骤 (转)
- Linux用ICMP协议实现简单Ping网络监测功能
- 前端学习(2096):作业得回顾和完成
- 网络安全发展的趋势及措施
- 银辉给园子里的兄弟姐妹们拜年啦
- Postman系列之发送不同HTTP类型请求
- 微信小程序之WebSocket
- Java: JavaMail 初试(一)
- 手机在线编程软件Anycodes
- 光遇自动弹琴脚本代码_光遇自动弹琴脚本
- 1一10到时的英文单词_1到90的英语单词,1~10的英文单词!
- python 改变图片像素值
- [算法·思想]囚徒困境中Tit For Tat策略为什么就是最好的,之JAVA代码模拟实现
- 一定要会的Python爬虫技能,搜索名字即可下载全文小说?
- 氢键H-H的博客目录
- Snapper转换器的捕捉类型
- 倾斜摄影超大场景的三维模型的顶层合并的轻量化处理技术
- 深扒程序员外包,为啥我不建议你去外包公司?
- 【python PDF解析】python 读取PDF文件内容
热门文章
- 数据中心巡检实操之UPS及电池
- 云平台已经成为发生网络攻击的重灾区
- 成功解决SQL Server软件中出现的18456问题
- 成功解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xba in position 2: illegal multibyte sequence
- ML之LoRBaggingRF:依次利用LoR、Bagging、RF算法对泰坦尼克号数据集 (Kaggle经典案例)获救人员进行二分类预测(最全)
- HighNewTech之Job:关于人工智能领域专业的公司求职数据分析(最全)
- ML之Hierarchical clustering:利用层次聚类算法来把100张图片自动分成红绿蓝三种色调
- 成功解决当Win10系统进行深度学习的时候发现系统C盘满了,教你如何正确卸载一些非必要的内容
- NLP之ASR:语音识别技术(Automatic Speech Recognition)的简介、发展历史、案例应用之详细攻略
- numpy reshape resize用法