您现在的位置是:首页 > 学习笔记 > 密码学密码学
证书
冰山2019-10-15【密码学】人已围观
简介1.证书
1.1 证书的应用场景
1.2 证书标准规范X.509
1.2.1 证书规范
1.2.2 证书格式
1.2.3 CA证书
1.3 公钥基础设施(PKI)
1.3.1 什么是公钥基础设施
1.3.2 PKI的组成要素
1.3.3 各种各样的PKI
1.证书
还记得我们上篇文章里留的问题吗,如何确定发送方的公钥是发送方的,而不是被窃密方窃取之后换成他自己的公钥吗?可以结合我们生活中的例子来看一下,要开车得先考驾照.驾照上面记有本人的照片、姓名、出生日期等个人信息.以及有效期、准驾车辆的类型等信息,并由公安局在上面盖章,我们只要看到驾照,就可以知道公安局认定此人具有驾驶车辆的资格。
没错,就是每个人在产生自己的公钥之后,交给第三方公证方,在你的公钥上加上你的个人信息(数字签名),组合之后就是公钥证书。
公钥证书(Public-Key Certificate,PKC)里面记有姓名、组织、邮箱地址等个人信息,以及属于此人的公钥,并由认证机构(Certification Authority、Certifying Authority, CA)施加数字签名。只要看到公钥证书,我们就可以知道认证机构认定该公钥的确属于此人。公钥证书也简称为证书(certificate)。
可能很多人都没听说过认证机构,认证机构就是能够认定 “公钥确实属于此人",并能够生成数字签名的个人或者组织。认证机构中有国际性组织和政府所设立的组织,也有通过提供认证服务来盈利的一般企业,此外个人也可以成立认证机构。
1.1 证书的应用场景
下面我们来通过证书的代表性应用场景来理解证书的作用。
下图展示了Alice向Bob发送密文的场景,在生成密文时所使用的Bob的公钥是通过认证机构获取的。
认证机构必须是可信的,对于“可信的第三方”,下图中会使用Trent这个名字,这个词是从trust(信任)一词演变而来的。

让我们对照着上图来看一看这些步骤具体都是怎么进行的。
1)Bob生成密钥对要使用公钥密码进行通信,首先需要生成密钥对。Bob生成了一对公钥和私钥,并将私钥自行妥善保管。在这里,密钥对是由Bob自己生成的,也可以由认证机构代为生成。
2)Bob在认证机构Trent注册自己的公钥,在这里Bob则将公钥发送给了认证机构Trent,这是因为Bob需要请认证机构Trent对他的公钥加上数字签名(也就是生成证书)。
Trent收到Bob的公钥后,会确认所收到的公钥是否为Bob本人所有。
3)认证机构Trent用自己的私钥对Bob的公钥施加数字签名并生成证书,Trent对Bob的公钥加上数字签名。为了生成数字签名,需要Trent自身的私钥,因此Trent需要事先生成好密钥对。
4)Alice得到带有认证机构Trent的数字签名的Bob的公钥(证书),现在Alice需要向Bob发送密文,因此她从Trent处获取证书。证书中包含了Bob的公钥。
5)Alice使用认证机构Trent的公钥验证数字签名,确认Bob的公钥的合法性。Alice使用认证机构Trent的公钥对证书中的数字签名进行验证。如果验证成功,就相当于确认了证书中所包含的公钥的确是属于Bob的。到这里,Alice就得到了合法的Bob的公钥。
6)Alice用Bob的公钥加密消息并发送给Bob,Alice用Bob的公钥加密要发送的消息,并将消息发送给Bob。
7)Bob用自己的私钥解密密文得到Alice的消息,Bob收到Alice发送的密文,然后用自己的私钥解密,这样就能够看到Alice的消息了。
上面就是利用认证机构Trent进行公钥密码通信的流程。其中1、2、3这几个步骤仅在注册新公钥时才会进行,并不是每次通信都需要。此外,步骤 4 仅在Alice第一次用公钥密码向Bob发送消息时才需要进行,只要Alice将Bob的公钥保存在电脑中,在以后的通信中就可以直接使用了。
1.2 证书标准规范X.509
证书是由认证机构颁发的,使用者需要对证书进行验证,因此如果证书的格式千奇百怪那就不方便了。于是,人们制定了证书的标准规范,其中使用最广泛的是由ITU(International TelecommumcationUnion,国际电信联盟)和ISO(IntemationalOrganizationforStandardization, 国际标准化组织)制定的X.509规范。很多应用程序都支持x.509并将其作为证书生成和交换的标准规范。
X.509是一种非常通用的证书格式。所有的证书都符合ITU-T X.509国际标准,因此(理论上)为一种应用创建的证书可以用于任何其他符合X.509标准的应用。X.509证书的结构是用ASN1(Abstract Syntax Notation One)进行描述数据结构,并使用ASN.1语法进行编码。
微信扫一扫~
支付宝扫一扫~
很赞哦! ()
随机图文
消息认证码
1.消息认证码 1.1 什么是消息认证码 1.2 消息认证码的使用步骤 1.3 HMAC 1.3.1 HMAC介绍 1.3.2 Go中对HMAC的使用 1.4 消息认证码的密钥配送问题 1.5 消息认证码无法解决的问题 1.6 对第三方证明 1.7 防止否认 1.8总结SSL/TLS
1.SSL/TLS 1.1客户端与服务器 1.2 用SSL/TLS承载HTTP 1.3 HTTPS 1.3.1 HTTP和HTTPS 1.3.2 HTTPS优缺点密码
1. 密码 1.1 发送者、接收者和窃听者 1.2 加密和解密 1.3 加密实现 1.3.1 密码算法 1.3.2 加密、解密及秘钥 1.4 凯撒密码 1.4.1 凯撒密码的加密 1.4.2 凯撒密码的解密 1.5 密码信息安全常识与威胁 1.5.1 密码信息安全常识分组密码
1. 分组密码的模式 1.1分组密码 1.2模式 1.3明文分组和密文分组 2.主要模式 2.1ECB 模式 2.2XOR运算 2.3CBC模式 2.4CFB 模式 2.5OFB 模式 2.6CTR 模式 2.7总结