经常听到大家说起数字证书的事情,但是总没有在心里形成一个清晰的框架。
昨天特意的搜索阅读了一些关于数字认证的知识,觉得有些领悟,所以就有了以下这点短小的文章。
ps: 网络真是给好东西,想学什么都触手可及。
从网络上的会话建立过程说起
A 要和 B 通过网络通信,最基本的一点要求是,A必须确认对方就是B,为了达到这一目的,一个密码技术被使用,那就是 RSA(非对称加密书算法)。
RSA有一个特点,他的可以分为私有key,和公有key,两个key不同,但是使用一方加密的文件,另一方可以使用另一个key解密。
有了RSA这个强大的工具,A确认对端是B的方式就产生了
首先,A 问 B,请证实你是 B
随后,B 使用私有key对一段文字进行加密,将原文和密文一起发送给A
接着,A 使用 B 预先提供的公有key,解密密文,只要能解密成功,那么对方肯定就是 B 了,因为私有key只有B自己知道
目前为止,一个认证的过程就结束了,但是双发通信时其实不是加密的过程,因为公有key大家都知道,所以B发的消息任何人都可以只到内容。
如何解决这个尴尬的问题,过程如下
完成B的身份确认后,A使用公有key对一组密码和采用的对称加密算法进行加密,然后发给B
因为私有key只有B有,所以B对其进行解密,知道了加密方式和密码,至此双方可以使用对称加密的方式对通信内容进行加密,进而安全通信
据说以上就是https的通信建立过程
略加思考,发现有一个问题还需要解释,即,B的共有key在哪儿得到?
这时就CA就出现了,即所谓的证书颁发机构
B想发布他的共有key,那么他先把他的共有key和相关信息交给CA,CA对B的信息和其提供的共有key进行hash,对hash进行加密,生成指纹数据,
将B的信息,B的共有key,和指纹数据,一起发布出去,供想和B通信的人使用。这样就解决了上述问题。
但是,又有了一个问题,CA对hash值进行加密生成指纹数据,那么拿到证书的人,怎么解密?
当然还得是RSA的方式,但是,CA的公有key又存在哪里,貌似生成了一个鸡和蛋的问题。
这时候就得说说操作系统发布的时候,在发布时,系统中就集成了一个几个经过系统开发商确认的CA自己的证书,这样就打破了死循环。
关于指纹数据,说明一下
指纹其实就是对信息的一个hash值,这个hash值对不同的数据时不同的,即保证唯一性(据说可以有方式构造不同数据有相同的hash值)
然后对这个hash值进行加密,就生成和数据的指纹
至此,基本的原理性的东西都说完了,有不对的地方还请指点。
本文参考: http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
阅读(1818) | 评论(0) | 转发(0) |