数字签名 数字证书

数字签名原理简介(附数字证书)

首先要了解什么叫对称加密和非对称加密,消息摘要这些知识。html

1. 非对称加密算法

在通讯双方,若是使用非对称加密,通常听从这样的原则:公钥加密,私钥解密。同时,通常一个密钥加密,另外一个密钥就能够解密。安全

由于公钥是公开的,若是用来解密,那么就很容易被没必要要的人解密消息。所以,私钥也能够认为是我的身份的证实。网络

若是通讯双方须要互发消息,那么应该创建两套非对称加密的机制(即两对公私钥密钥对),发消息的一方使用对方的公钥进行加密,接收消息的一方使用本身的私钥解密。post

2.消息摘要加密

消息摘要能够将消息哈希转换成一个固定长度的值惟一的字符串。值惟一的意思是不一样的消息转换的摘要是不一样的,而且可以确保惟一。该过程不可逆,即不能经过摘要反推明文(彷佛SHA1已经能够被破解了,SHA2尚未。通常认为不可破解,或者破解须要耗费太多时间,性价比低)。url

利用这一特性,能够验证消息的完整性。spa

消息摘要一般用在数字签名中,下面介绍用法。.net

 

了解基础知识以后,就能够看一下数字签名和数字证书了。3d

3.数字签名

假设如今有通讯双方A和B,二者之间使用两套非对称加密机制。

如今A向B发消息。

那么,若是在发送过程当中,有人修改了里面密文消息,B拿到的密文,解密以后获得明文,并不是A所发送的,信息不正确。

要解决两个问题:1. A的身份认证 2. A发送的消息完整性 那么就要用到上面所讲的基础知识。

数字签名的过程以下图:

简单解释:

A:将明文进行摘要运算后获得摘要(消息完整性),再将摘要用A的私钥加密(身份认证),获得数字签名,将密文和数字签名一块发给B。

B:收到A的消息后,先将密文用本身的私钥解密,获得明文。将数字签名用A的公钥进行解密后,获得正确的摘要(解密成功说明A的身份被认证了)。

对明文进行摘要运算,获得实际收到的摘要,将两份摘要进行对比,若是一致,说明消息没有被篡改(消息完整性)。

疑问:

摘要使用A的私钥加密,若是被拥有A的公钥的第三者截获,不就能够获取到摘要了么?会不会对安全形成威胁。

不会。由于摘要是不可逆推出原文的。

 

4.数字证书

理解了数字签名以后,数字证书就好理解了。

因为网络上通讯的双方可能都不认识对方,那么就须要第三者来介绍,这就是数字证书。

数字证书由Certificate Authority( CA 认证中心)颁发。

关于数字证书的具体描述,须要百度,目前未彻底理解。记一个TODO。

图解以下:

首先A B双方要互相信任对方证书。//TODO

而后就能够进行通讯了,与上面的数字签名类似。不一样的是,使用了对称加密。这是由于,非对称加密在解密过程当中,消耗的时间远远超过对称加密。若是密文很长,那么效率就比较低下了。但密钥通常不会特别长,对对称加密的密钥的加解密能够提升效率。

 


 

 

一.什么是数字证书?

  数字证书是一种权威性的电子文档。它提供了一种在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

 

原文连接:http://www.cnblogs.com/SirSmith/p/4985571.html

http://www.cnblogs.com/hyddd/archive/2009/01/07/1371292.html

相关文章
相关标签/搜索