数字证书的构成和原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字证书的构成和原理
数字证书的构成和原理
1、数字证书的格式
认证中心颁发的证书均遵循X.509 V3标准。

2、数字证书的作用
数字证书是PKI标准基于公钥密码体制,用于标志通讯各方身份的一种证书。

一般是由权威的CA认证机构颁发,用于在网络流通中让别人识别自己的身份。

主要用于密钥管理上。

在使用公钥协商对称密钥的安全通讯中,客户端会先收到服务端收到的数字证书,证书中包含了服务端的公开密钥,再使用这个公开密钥加密客户端产生的对称密钥,就组成了数字信封。

客户端会先查看证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。

如果符合要求,用户就可以用该证书里的公钥来验证服务端私钥的签名。

数字证书为什么能作为标志身份的工具,并运用在密钥管理之上呢?
因为数字证书具有安全性、唯一性、不可篡改性等特性(具体实现在后面的原理部分会体现)。

因此被权威的CA认证中心颁发了证书的个人或者单位,可以用它来唯一的标识自己的身份。

3、数字证书的构成与原理
1)数字证书的构成
数字证书是一连串被处理过的信息的集合。

下面是一个已经存在于计算机中的证书样板:
一个证书中包含很多内容,下面是其中几个主要的内容(仅列出一部分):Version 证书版本号,不同版本的证书格式不同Serial Number 序列号,同一身份验证机构签发的证书序列号唯一
Issuer 证书发布机构,指出这个证书是哪个公司创建的,这是哪个CA中心的证书
Valid from,Valid to 证书的有效期,也就是证书的使用期限
Subject 主题,就是这个证书的所有者(由于上面的证书是在电脑中的根证书,所以Issuer跟Subject是一样的)
Public key 公钥,即该证书持有人的公钥
Signature algorithm 签名算法,指的是这个数字证书中的数字签名所使用的加密算法,可以通过根证书中的公钥对这个证书中的指纹进行解密Thumbprint,Thumbprint algorithm 指纹以及指纹算法,在证书发布的时候,发布机构会根据指纹算法先计算出整个证书的hash值,并使用证书发布机构的私钥对其进行签名构成一个指纹,并将指纹与该证书放在一起
2)基于数字证书的PKI公钥密码体制
一个公司想要在网络上标志自己的身份,可以向一个权威的CA中心购买证书。

假如某公司A向某知名CA中心B购买证书,CA中心首先会去确认该公司的身份,确认完之后,会给该公司颁发一个数字证书(内容和上面的基本一致)。

此外还会给公司一个证书公钥对应的私钥。

之后,如果有一个客户需要在网络上认证该公司身份,公司会先将自己的数字证书发送给客户。

客户查看证书中的版本、认证中心是否权威、证书是否过期、证书持有人是否是该公司、CA认证的根证书是否能解开该证书中的数字签名、证书是否被修改,查看完之后确认该证书确实是该公司所有。

然后发送一条明文给服务端,让服务端用私钥签名之后返回。

客户收到签名后的消息,用证书中的公钥解开,看是否与自己发送的消息一致,如果一致则确认对方确实是你要连接的公司。

那该客户又是哪里来的CA认证根证书呢?每个CA中心都会给自己颁发一个根证书,根证书中包含CA中心自己私钥对应的公钥。

用该公钥可以解开所有经过CA中心签名的证书。

这些认证公司的根证书在我们安装系统的时候就已经安装好了,微软(或者其他一些操作系统的公司)在系统中已经安装了一些数字证书,并将它们设置为受信任的证书。

这些数字证书都是一些权威认证中心的根证书。

这样就防止了一些不靠谱的CA中心来随便颁发根证书,从而影响了证书体制(所有的公司都能发布证书,这在后面将会讲到)。

3)数字证书如何支持公钥密码体制的运行
每个数字证书中都包含了证书所有人的信息、公钥等内容。

那么如何保障数字证书的安全性、权威性、不可篡改性、唯一性的?
首先,先看权威性。

数字证书经常用于密钥的分发,由受认可的CA中心颁发的数字证书,可受到该CA中心保证。

除此之外也可以是任意一家公司颁发的数字证书,如果用于特定范畴之内是行得通的。

但是如果是用于在互联网上流通,这个证书是不会受到国际认可的,
一个用户发现收到的数字证书的颁发机构不受信任,也不会对该证书信任的。

再看唯一性,每个证书机构颁发的证书号都是唯一的,如果是受信任的权威CA机构,他们会先对证书申请人进行身份确认。

这样就防止了一些公司假冒其他公司来进行诈骗。

不可篡改性,每个数字证书中都包含了对整个证书进行指定hash 算法计算出来的hash值。

客户收到证书之后,也进行相同的hash计算,如果证书内容有稍微被修改,hash值就会改变。

这样就能保证证书不被篡改。

注意,这里有个细节特别重要:
这个hash值是经过认证机构的私钥进行签名的,这样可以防止别人修改hash值,因为这个hash值的签名只有发布机构能签名,该机构的根证书中的公钥能解开。

即别人无法伪造、也无法修改签名,从而保证证书不被篡改。

最后看下安全性,综上面所述,客户收到的数字证书是由受信任机构颁发的唯一指定证书持有人的不可被修改的证书。

客户对证书进行如下操作:
①查看证书使用日期是否过期,并用颁发机构的根证书对该证书中的指纹进行解密。

②用证书中指定的hash算法(一般是SHA1,现在可能采用更安全的摘要算法)对整个证书进行hash计算,得到一段hash值。

③用自己计算的hash值与指纹解密之后的hash值进行比较。

如果一样,说明证书是由受信任的机构颁发,且证书没被修改过。

否则该证书就是不安全的。

④查看证书持有人是否就是你与之通信的公司(或者个人)。

如果是,则继续进行下一步,否则丢弃证书、断开连接。

⑤取出证书中的公钥。

之后可以采用约定的办法进行身份确认,我采用的是这样的方式:
客户发送一段明文给服务端,要求服务端对它进行签名。

服务端收到明文之后,先对这段明文进行hash计算,将得到的hash值与使用的摘要算法打包,并用自己的私钥签名发送给客户。

客户收到报文
后,先用公钥解开签名,接着按照指定的摘要算法对自己发送的明文进行加密。

对比两段hash值,如果值一样则可以确认对方就是证书持有人。

这种方式可以防止别人恶意的发送规律的明文,从而破解私钥,因为经过hash算法之后的摘要是不规则的。

⑥确认完对方身份之后,客户就可以用证书中的公钥加密消息发送给对方。

这时证书可以被拦截,但是无法被破解,只有对方的私钥能解密密文。

注意:这种方式只能保证单向的加密,因为私钥只有一个人所有,公钥却所有人都能拥有。

4、如何建立自己的CA
所有公司都可以颁发证书,但是不是所有的公司颁发的证书在国际上都受到认可。

但是如果是在自己生产的终端中安装了自己建立的CA的根证书,并将该证书放到受信任证书中。

就能保证自己建立的CA在某一体系受信任。

例如:
一家公司里生产某种终端,而且需要在这些终端中进行安全通讯。

这样的情况下,就可以自己建立一个CA中心,并采用X.509证书标准。

公司在终端出厂之前在每个终端中都安装了自己CA的根证书、以及每个终端唯一标志身份的终端证书。

这样就能保证在这些终端通讯中数字证书有效。

具体创建CA的步骤,可以使用makecert工具,OpenSSL中也有建立CA的方案(还待继续研究)。

相关文档
最新文档