赞
踩
非对称加密原理解析
一、加密算法种类
1密钥1、使用数字证书申请者的身份信息生成数字签名
2、将证书申请者的身份信息和数字签名一起组成数字证书
3.2.3数字证书原理
有了数字证书以后,A和想跟B通信,就可以通过B的数字证书来获取B的公钥,以达到验证自己手中的公钥到底是不是B的目的。过程是这样的:
1、B给A回信的时候,在信息后面附上了自己的数字证书
2、A收到B的回信以后,会取出附带的数字证书,并读取证书中的发布机构(Issuer),然后从操作系统的受信任证书机构列表中查找该证书办发机构的公钥,如果找不到,说明这个证书颁发机构是个不受信任的,B发过来的信息当然也是不安全的
3、使用上一步取到的证书颁发机构的公钥,解出数字证书,得到可能是B的用户信息和数字签名
4、A通过证书中指定的加密算法对可能是B的用户信息进行hash加密
5、加密后的结果和证书中解出的数字签名进行对比,如果相同,就说明这份用户信息确实是B的,也就是说用户信息中包含的公钥确实是B的
这样就验证了B身份的真实性。
下图很形象的表示了这个过程:
3.2.4证书发布中心(CA)的公钥的嵌套验证
这里有一个有趣的问题,用户A使用证书机构的公钥来验证用户B的数字证书,但如果A和B使用的证书认证中心(CA)不同怎么办呢?由于证书认证中心可以通过另外一个更高级别的认证中心对该证书机构的公钥颁发一个证书,这样形成了一个公钥证书的嵌套循环,该循环的终点就是根证书机构。根证书机构较少,其公钥可以通过安全的方式发布,如通过USB拷贝、书面文件当面移交。如此依赖,A就必须从B的CA的树形结构底部开始,从底层CA往上层CA查询,一直到找到共同的信任CA为止。
整个过程如下图所示:
3.2.5证书发布机构
3.2.5.1谁可以成为证书发布机构
到这里,你可能会想,那我们自己就不能发布证书吗?就一定要花钱去申请?
当然不是,我们自己也可以成立证书发布机构,但是需要通过一些安全认证等等,只是有点麻烦。另外,如果数字证书只是要在公司内部使用,公司可以自己给自己生成一个证书,在公司的所有机器上把这个证书设置为操作系统信任的证书发布机构的证书(这句话仔细看清楚,有点绕口),这样以后公司发布的证书在公司内部的所有机器上就可以通过验证了(在发布证书时,把这些证书的Issuer(发布机构)设置为我们自己的证书发布机构的证书的Subject(主题)就可以了)。但是这只限于内部应用,因为只有我们公司自己的机器上设置了信任我们自己这个所谓的证书发布机构,而其它机器上并没有事先信任我们这个证书发布机构,所以在其它机器上,我们发布的证书就无法通过安全验证。
我们自己可以去注册一家公司来专门给别人发布证书,但是很明显,我们自己的专门发布证书的公司是不会被那些国际上的权威机构认可的,人家怎么知道你是不是个狗屁皮包公司?因此微软(或其它操作系统提供商)在它的操作系统中,并不会信任我们这个证书发布机构,当应用程序在检查证书的合法信的时候,一看证书的发布机构并不是操作系统所信任的发布机构,就会抛出错误信息。也就是说windows操作系统中不会预先安装好我们这个证书发布机构的证书,不信任我们这个发布机构。
3.2.5.2不受信任的证书发布机构的危害
为什么一个证书发布机构受不受信任这么重要?我们举个例子。假设我们开了一个狗屁公司来为别人发布证书,并且我和微软有一腿,微软在他们的操作系统中把我设置为了受信任的证书发布机构。现在如果有个小公司叫hisunsray花了10块钱让我为他们公司申请了一个证书,并且公司慢慢壮大,证书的应用范围也越来越广。然后有个奸商的公司baidu想冒充hisunsray,于是给了我¥10000,让我为他们颁布一个证书,但是证书的名字(Subject)要写hisunsray,假如我为了这¥10000,真的把证书给了他们,那么他们以后就可以使用这个证书来冒充hisunsray了。
如果是一个优秀的证书发布机构,比如你要向他申请一个名字叫hisunsray的证书,它会让你提供很多资料证明你确实可以代表hisunsray这个公司,也就是说他回去核实你的身份。证书发布机构是要为他发布出的证书负法律责任的。
3.2.6如何查看数字证书
我们的操作系统中会预先安装好一些证书发布机构的证书,我们可以通过证书管理器进行证书的增、删操作,下面介绍如何找到它们。
3.2.6.1windows
开始菜单->运行,输入certmgr.msc,回车
3.2.6.2mac
打开keychain,选择钥匙串中的系统根证书,种类中的证书即可看到下图所示的收信人证书发布机构列表:
当然,以上这些内容,只涉及到非对称加密方法的最基础原理,实际使用的时候肯定复杂很多,有兴趣大家可以私下研究。
-----------by wangzz
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。