浅析数字证书

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

 hyddd原创,转载请说明出处:>

  最近看会Session hijack的东西,劫持现在已经实现,yahoo等一些没有用Https协议的邮箱被成功地劫持了(迟下发文章),由于对Https不熟悉,所以看了一下为什么Https的会话不能劫持。

  本文主要介绍的SSL中的涉及到的"数字证书"这个东东。

一.什么是数字证书?

  数字证书是一种权威性的电子文档。它提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构----CA证书授权(Certificate Authority)中心发行的,人们可以在互联网交往中用它来识别对方的身份。当然在数字证书认证的过程中,证书认证中心(CA)作为权威的、公正的、 可信赖的第三方,其作用是至关重要的。

  Ok,知道什么是数字证书后,先看看它长的什么样吧:>,文件缩略图如下:

  

  双击后打开如下:

  

 

二.CA认证机构/CA认证中心

  1.CA认证中心是什么?

  CA认证中心是负责签发管理认证数字证书的机构,是基于国际互联网平台建立的一个公正,权威,可信赖的第三方组织机构。

  2.世界上的CA认证中心不止一间,那他们之间的关系是什么(CA认证中心之间的关系)?

  嗯,回答这个问题之前可以先看看下图:

  

  从图中可以看到,CA认证中心之间是一个树状结构,根CA认证中心可以授权多个二级的CA认证中心,同理二级CA认证中心也可以授权多个3级的CA认证中心...如果你是数字证书申请人(比如说:交通银行),你可以向根CA认证中心,或者二级,三级的CA认证中心申请数字证书,这是没有限制的,当你成功申请后,你就称为了数字证书所有人。值得注意的是,根CA认证中心是有多个的,也就是说会有多棵这样的结构树。FireFox里面默认记录了一些根CA认证机构的信息,如图:

  

  看到这里,肯定有人会问,如果有现在新的根CA认证机构成立,FireFox肯定是没有这个CA认证中心的信息的(这些信息是用来验证子CA认证机构的,很重要,后面来会讲到),那怎么办呢?嗯~~确实,如果今天2009-1-8日突然在哪里成立一个新的CA认证中心,我FireFox里面肯定没有他的信息的!但解决办法还是有的,看上图,可以找到一个"Import"按钮,当我们遇到这样的倒霉事时,只有自己去下载并导入根CA认证中心信息了(其实这样做是不太安全的!),或者期望FireFox的升级会升级这些信息,但这个我是不确定的。

  3.为什么CA认证中心是权威的?

  其实搞清楚这个问题后,你也会真正了解“CA认证中心是如何授权子CA认证中心的?”,“为什么伪造的数字证书是无效的”,“为什么数字证书是一种权威性的电子文档”等等一系列的问题。并且SSL可以说是建立在CA认证中心的权威,公正,可信赖的基础上的,如果CA认证中心的信息可以被伪造的,那么SSL的一切就完了......

  首先,我们先来看看,在FireFox里记录的CA认证中心的信息到底是什么东西??见上图,单击某项,Export导出....你会看到导出的东西很面熟,原来就是数字证书!!

  实际上每个CA认证中心/数字证书所有人,他们都有一个数字证书,和属于自己的RSA公钥和密钥,这些是他们的父CA认证中心给他们颁发的,这里先大概解释一下RSA,RSA是一种非对称加密的算法,它的公钥和密钥是配对的,如果用公钥加密,用私钥解密就可以得到明文;如果用私钥加密,用公钥解密也可以得到原来的明文,这由RSA特性决定,他效果可以用下图概括:

  

  对于私钥:CA认证中心/数字证书所有人自己保存,不公开。

  对于公钥:CA认证中心/数字证书所有人会把公钥存在他的CA认证中心的数字证书内。

  (1).首先,CA认证中心/数字证书所有人,它在网络上的表现形式只能是一张数字证书!所以我们可以把某张数字证书等价于某个CA认证中心/数字证书所有人。这样的话,验证数字证书的合法性就可以确定CA认证中心/数字证书所有人是否是合法的!!!

  (2).数字证书使用数字签名作验证!这里简单说明一下数字签名的过程:你从Firefox/IE导出的数字证书包含3个部分:证书内容(F),加密算法(A),F加密密文(F') (数字证书结构会在第三部分详细介绍),在这里,A不是一个算法,而是两个,所以密文F'是F两次加密后的结果。

  首先,F会被散列算法SHA1计算出hash值h1(称为128bit的摘要),然后h1会被发布这个数字签名的CA认证机构的用私钥进行RSA加密,注意:是发布这个数字签名的CA认证机构,如果现在被加密的数字证书是属于二级CA认证机构的,那么用来加密这个证书的私钥是根CA认证机构的私钥!!RAS加密完后,就形成密文F'。

  当你要验证这个数字证书可信/合法性时,你需要找到你的上一层CA认证中心的数字证书,并且从中获取公钥,把数据证书中的密文F'进行RSA解密,如果得出的值h2和h1比较(h1可以立即用数据证书中的F现场算出来),如果相等,则认为证书是可信的,合法的!由于你是不可能知道上一层CA认证中心的私钥,所以你无法伪造一个可以用上一层CA认证中心公钥解密的数字证书!!

  详细流程图如下:

  

   由于一个数字证书基于上层的数字证书作验证,那上层的数字证书又是否合法呢??这就会出现一直递归上去的现象,事实也是这样的,验证一个证书是否合法,需要验证到他的最顶层的根证书是否合法!从其他的文章弄来的这幅图很好地表达了这个思想:

   

  这里肯定又有人会问,那么最顶层的CA认证中心如何证明它的合法性呢?.......呵~这就是为什么FireFox要预先把一些最顶层(这里的"最顶层"和"根"是同一个概念)的CA认证中心的证书加入到权威信任列表中了,因为,最顶层CA认证中心没有办法证明,所以,最顶层的CA认证中心是总是受信任的!!而事实上,最顶层的CA认证中心在是世界上也是为数不多的。这里大家应该了解为什么我刚才说自己导入根CA证书是不太安全的,因为你无法验证。

三.数字证书的组成

  可以先看看我从Firefox的证书截图:

  

  1.Certificate(证书):

   (1).Common Name(证书所有人姓名,简称CN,其实就是证书的名字,如第一幅图看到的:ABA.ECOMRoot....)

   (2).Version(版本,现在一般是V3了)

   (3).Issuer(发证机关)

   (4).Validity(有效日期)

   (5).Subject(证书信息,你会发现它和Issuer里面的内容是一样的)

   (6).Subject's Public Key Info(证书所有人公钥,刚才所说的公钥就是这个!)

   (7).Extension(扩展信息)

   (8).Certificate Signature Algorithm(公钥加密算法)、

    以上这几项就是上面所说的证书内容(F)。 

  2.Certificate Signature Algorithm:

    这是描述证书的加密算法,就是上所说的加密算法(A),看它的Fireld Value,一般会写:PKCS #1 SHA-1 With RSA Encryption

  3.Certificate Signature Value:

   这记录的是证书被加密后的结果,相当于上面说讲的F'。

四.数字证书的验证

  要回答数字证书是如何验证的,首先要知道数字证书是要验证些什么东西:>,数字证书的验证,上面已经讲了一些,这做一个总结:

  1.可信性验证/合法性验证:这个刚才已经说的很明白了吧:>

  2.完整性验证:在验证可信性的过程中,h1和h2的比较,其实已经顺便验证其完整性了。

  3.有效性验证:比如验证它的Vilidity值,看是否过期...

 

  先写这么多,其他以后补充!并且可能有些地方写得会比较乱,这个我稍后会改正:>~欢迎拍砖!

 

五.参考资料:

1.http://baike.baidu.com/view/204415.htm

2.http://finance.sina.com.cn/money/roll/20080401/00404692291.shtml

3.http://blog.csdn.net/sfdev/archive/2008/03/12/2174305.aspx

4.http://man.chinaunix.net/develop/rfc/RFC2313.txt

5.http://www.zhlmmc.com/diary/14554



本文转自hyddd博客园博客,原文链接:http://www.cnblogs.com/hyddd/archive/2009/01/07/1371292.html,如需转载请自行联系原作者。

目录
相关文章
|
存储 安全 算法
数字证书
本实验带您了解并使用数字证书。
|
7月前
|
安全 网络安全 数据安全/隐私保护
数字证书是什么?
【5月更文挑战第9天】数字证书是什么?
125 1
|
7月前
|
运维 安全 网络安全
Digicert 证书
DigiCert是全球领先的数字证书颁发机构,提供SSL/TLS、代码签名等多种证书服务,确保网络通信安全。其证书以高安全性、广泛兼容性及优质客户服务著称。DigiCert的EV SSL证书能严格验证网站身份,增强用户信任。通过代码签名,保证软件未经篡改。适用于商业网站和电商,提供高级安全保障。在网络安全日益重要的今天,DigiCert证书是值得信赖的选择,为数字化世界保驾护航。
163 0
|
7月前
阿里云认证证书
阿里云认证证书为什么不是自己的名字,怎么解决
519 1
|
12月前
|
安全 网络安全 数据安全/隐私保护
Globalsign证书
Globalsign证书
118 0
|
安全 网络安全 数据安全/隐私保护
什么是Sectigo证书?
什么是Sectigo证书?
379 0
|
网络安全
SSL证书不受信任怎么办?
 随之愈来愈多的ssl证书错误的状况出現,大伙儿都是有ssl证书不受信任怎么办这类的难题,而且对这种难题很头痛,下边将带大伙儿解析一下ssl证书不受信任的缘故及解决方案。
311 0
|
存储 监控 安全
开发笔记之数字证书(一):数字证书介绍
开发笔记之数字证书(一):数字证书介绍
开发笔记之数字证书(一):数字证书介绍
|
开发者
公钥证书
开放平台证书说明  蚂蚁金服开放平台提供对X.509格式证书的支持,开发者上传证书后,后续在和支付宝开放平台交互过程中支付宝会尝试使用该证书进行报文验签。  证书说明 在报文签名场景下,报文接受方使用发送方的公钥进行报文验签即可,而证书的一个好处在于引入了CA机构对公钥进行认证,保证该证书所属实体的真实性。
694 12
|
安全 网络安全 数据安全/隐私保护
关于ssl证书私钥的工作原理
  相信不少的网友都知道ssl证书在互联网中的作用,知道ssl证书可以给网站的客户端和服务端打开一条安全通道,保护客户在网站中的信息。但是即便是很多经常接触互联网的人,也不知道ssl证书的工作原理。为什么ssl证书可以保护我们浏览网站时的信息数据安全呢?这得益于网站部署ssl证书后生成的两把密钥,一把叫做私钥,另一把是公钥。
1457 0