您的位置:首页 > 其它

探讨:网银数字证书加密解密原理

2011-05-14 19:03 190 查看
首先要先理解一些概念,这样才能更好的理解。

公钥和私钥

在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。

公钥私钥的原则:

一个公钥对应一个私钥。

密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。

如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。

如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

举个例子来说,就好比银行里的保险柜,你申请该业务后银行会给你一把钥匙,也就是私钥,但光有这一把钥匙是开不了的,还有一把在银行那里,而且这把钥匙适用于所有的保险柜,也就是公钥,只有先用银行的钥匙开启,然后再用你的钥匙开启才能完全打开保险柜。

加密算法的分类

对称加密:

对称加密是最早和著名的技术。机密密钥可以是数字、
一词或随机字母的字符串,只需,应用于以特定方式更改该内容的消息的文本。

举个例子来说,我有一段文本需要加密,文本内容是ABCD,我设置的密钥(也可以称作加密算法)是位移算法,把字母向后位移2位,那么加密后的内容应该是CDEF,然后接收方也需要知道这个密钥,通过它来推导出文本的原始内容。这样的加密方法的特点是算法公开、计算量小、加密速度快、加密效率高。但是有个缺点,接收双方都需要使用这个密钥,而且如果有n个人都需要加密的话,那么就需要n个密钥,因为不可能每个人的密钥都一样,要不就无保密性可言。对于网银来说,用户数量是相当多的,如果使用这种加密方法,那么对于网站来说密钥的数量是灾难性的,根本无法管理。

非对称加密:

与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

非对称加密算法实现机密信息交换的基本过程是:A要向B发送一段机密信息,首先B会生成一对密钥并将其中的一把作为公钥(B的公钥)向A公开;得到该公用密钥的A使用该密钥(B的公钥)对机密信息进行加密后再发送给B,B再用自己保存的另一把专用密钥(B的私钥)对加密后的信息进行解密。B只能用其私钥解密由其公钥加密后的任何信息。画了个简单的图作为参考。

数字证书与数字签名

数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构—CA机构,称为证书授权(Certificate
Authorit
y)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循
ITUT X.509国际标准。

那么,数字证书怎样完成网上身份的认证呢?

把数字证书说成是网上身份证,这是一种形象的比喻。实际上,数字证书所证明的是公钥的真实性。

认证中心对用户的身份进行严格的审核后,为用户颁发数字证书。它通过公钥加密技术对用户的公钥信息和用户的身份信息作了数字签名,把用户所宣称的身份信息与公钥绑定在一起。数字签名也就相当于敲了个公章,用来证明你的信息是真实有效的。于是,包含有用户个人身份信息、公钥和数字签名的一个特殊的电子文件就形成了数字证书。数字证书可以存储在硬盘里,也可以存储在软盘或USB
Key里。

CA

CA是Certificate Authority的缩写,也叫证书授权中心。

它是负责管理和签发证书的第三方机构。一般来说,CA必须是所有行业和所有公众都信任的、认可的。因此它必须具有足够的权威性,就好比身份证的发型机关公安局一样,公安局所颁发的身份证一定是可以信任的。但是你自己制作身份证,但是做出来的身份证是没啥用处的,因为你不是权威的公安机关,你自己搞的身份证不具有权威性,其实就是假证。

CA证书,就是CA颁发的证书。

证书之间的信任关系和证书链

证书间的信任关系,就是用一个证书来证明另一个证书是真实可信的。

实际上,证书之间的信任关系,是可以嵌套的。比如,C信任A1,A1信任A2,A2信任A3……这个叫做证书的信任链。只要你信任链上的头一个证书,那后续的证书,都是可以信任的。

根证书

根证书叫Root Certificate。

例如,假设C证书信任A和B;然后A信任A1和A2;B信任B1和B2,则它们之间,构成如下的一个树形关系。

处于最顶上的树根位置的那个证书,就是“根证书”。除了根证书,其它证书都要依靠上一级的证书,来证明自己。那谁来证明“根证书”可靠呢?实际上,根证书自己证明自己是可靠滴(或者换句话说,根证书是不需要被证明,就像我们的ZF一样,呵呵)。所以,根证书是整个证书体系安全的根本。所以,如果某个证书体系中,根证书出了问题(不再可信了),那么所有被根证书所信任的其它证书,也就不再可信了,这个后果是相当相当的严重。

Hash(哈希)算法

刚才我们说到了加密,我们在传送信息的时候对信息内容进行加密,但是如果信息内容庞大,那么对内容本身加解密会花去很长的时间,为了提高效率,因此需要使用一种数学算法—哈希算法,先对这段信息作一次数学变换,把这段信息进行压缩,形成了一段短短的“数字摘要”,让数字摘要来“代表”信息本身。可以通过检验数字摘要,借以判断信息本身是否发生了改变。

比方说我们用网上银行向B用户转账100元,但是万一B利用黑客技术更改了你发送的信息内容,把100改成了1000,那怎么办?所以Hash算法就是来验证数据是否被更改。我们可以用Hash值换算工具来举个例子,我有个TXT的文档,里面的内容是100,然后我把数字改成了1000,我们再看一下它的Hash值对比:

310b86e0b62b828562fc91c7be5380a992b2786a
e3cbba8883fe746c6e35783c9404b4bc0c7ee9eb
完全不一样,所以它能有效的验证数据是否完整有效。

说了那么多概念,接下来我们来探讨一下网上银行的加解密流程吧。

首先先探讨一下用USB
Key作为证书的网银流程。

前面提到,USB
Key就是包含有用户个人身份信息、公钥和数字签名的一个特殊的电子文件的一种数字证书,只不过这个证书是存放在USB介质里,而不存放在个人的电脑上。假设有个用户Bob要使用USB
Key模式的网上银行,那么我们来解释一下:

首先,Bob已经有了自己的USB
Key,这个Key里包含了Bob的公钥、私钥以及银行颁发的数字证书(这张证书是用来证明Bob身份的),当Bob需要向网银传送数据的时候,先把数据用Hash算法算出Hash值H,然后用自己的私钥加密Hash值H,最后再用银行的公钥加密(用银行的公钥加密是为了防止数据不会传送到错误的地方,因为只有银行用自己的私钥来解密,任何其他伪造的站点是不具有银行的私钥的,也就无法解密数据)后发送给银行。

银行收到数据后首先用自己的私钥解密,解密后得到加密后的Hash值H,因为这个H是用Bob的私钥来加密的,所以用Bob的公钥来解密,解密后得到H,银行再用同样的算法算出数据的Hash值H’,对比H和H’,如果一致,说明数据没有被中途更改,才能继续通讯,这样交易双方都互相经过验证并互信,交易才可以进行。

还有一种是没有USB
Key的网上银行,只用数字证书,比如浦发银行的数字证书版就是这样。其实原理都是一样的,只不过这种方式用户的私钥是存放在本地的,它和USB
Key的区别就是安全性上的区别。

举例来说,如果我用的只是数字证书版,数字证书是安装在我的笔记本上,而且的我记比较差,为了方便记忆,我把我的用户名和密码都记录在一个文本文件上。某天我的笔记本丢了,被某个别有用心的人捡到后找到了我存放用户名密码的文件,并且当时我粗心大意,并没有向银行挂失,因为我比较传统,以为卡还在钱包里就没问题,那么这个别有用心的人就可以用我的笔记本登录网上银行并进行转账等操作了。

那么USB key呢,因为使用USB证书后我的私钥是存放在USB盘里的,而且USB
Key使用时还需输入一个PIN码,相当于密码,虽然我还是有可能把这个密码存放在那个文件中,但是一般我也不会笔记本和USB
Key一块丢掉,因为这个USB也只有用网上银行的时候使用,平时肯定会收起来的,而且这个USB
Key只能在一台电脑上使用,换台电脑也不行,它记录了机器的硬件码,只要不是笔记本、USB、密码本一起丢掉,那么安全度还是相当高的,如果这几样同时都丢了,那真的没办法了,我想送钱给别人,那你们也别拦我了,呵呵。

经过那么多篇幅的描述,我想大家应该能够理解了吧,如果还有疑问,或者我有些地方说的不对,那么请和我再一起探讨,毕竟这些也是我自己的理解,还是会有差错的。

源文档 <http://patrickyan2008.wordpress.com/2010/04/19/%E6%8E%A2%E8%AE%A8%EF%BC%9A%E7%BD%91%E9%93%B6%E6%95%B0%E5%AD%97%E8%AF%81%E4%B9%A6%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86%E5%8E%9F%E7%90%86/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: