大家也许使用过一些电子商务的站,购买东西或是使用网上银行,当我们要传送出一些机密性比较高的数据时(如信用卡号,密码等),就会有个提示,表明这些数据在传送过程中会受到SSL保护.大家知不知道这里面做了些什么呢?为什么说我们的数据在传输过程中是安全的呢?没错,这些信息是加密过的,可是我们传统的加密方法是单密钥的,也就是说加密的密钥跟解密的密钥是相同的,这种方法在今天来说已经非常不可靠了.那么银行,机关等要害部门是用什么方法来确保数据安全呢?
那就是公钥体系,下面先来介绍一下这种体系的原理。公钥体系的原理为:用户A有一对密钥对,分为公钥和私钥,这对密钥对是唯一的,是通过对一个巨大的素数进行因数分解所得。当用公钥加密过的信息,只能使用与它配对的私钥来解密,反之亦然,私钥加密码的信息也只能用公钥来解密。这样,A从认证体系生成密钥对后,把它的私钥保存好,把公钥公开出去,当一个用户B要与A通信,又想确保数据安全时,就可以使用A的公钥来加密信息,再把密文传给A,因此这个世界是只有A手中的私钥才能对这个密文进行解密,这样就确保了信息的安全。
事实上,信息加密码只是公钥体系的用途之一,它还有一个用途就是对信息进行签名,防此信息发布者抵赖,和被第三方修改。为什么这种机制可以实现这此功能呢?很简单,还是使用了“公钥加密,只有私钥能解;私钥加密,只有公钥能解”的道理。举例:用户A用自已的私钥对他发出去的信息进行签名(加密),然后发出去,后来他发现他公开的信息对他不利,他就不承认这些信息是他发的,但是他不可能抵赖了,因为这些信息有他的私钥签名,那么,使用他的公钥对信息验证就知道,这些信息肯定是A发的了,因为只有A使用的私钥签名得到的信息,才能用这个公钥来解。如果A还认是他发的信息,那只有一个可能,那就是他的私钥被人盗取了。
现在我们知道公钥机制的原理了,那它有什么用呢?上述举的例子就比较常用,而在我们日常工作中也有些用到公钥机制的地方,我们可能有人用过钥匙盘,它是一个类似U盘的东西,一般提供USB接口,它就使用了公钥机制,当我们在一台计算机上初始化这个钥匙盘的时候,它会生成一对密钥对,把公钥存在计算机上,私钥存在钥匙盘上,当用户要进行一个系统虽要身份验证时,只虽插入钥匙盘,就会通过公私钥加解密的原理,完成这个用户的身份验证过程,而无需输入帐号和密码进行验证.
现实上,公钥机制也有它的缺点,那就是效率非常低,比常用的单密钥算法慢上一两个数量级都有可能,所以它不适合经常为大量的原始信息进行加密,而使用单密码钥机制对原始信息进行加密码,然后这个单密钥,我们可以通过公钥机制进行加密.