您现在的位置是:首页 > 技术笔记 > 密码学密码学

证书

冰山2019-03-10【密码学】人已围观

简介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/6    1 2 3 4 5 6 下一页 尾页

  • 微信扫一扫~
  • 支付宝扫一扫~

很赞哦! ()

上一篇:数字签名

下一篇:SSL/TLS

文章评论

本站推荐