![公钥算法 - Hunter - 一生有你 公钥算法 - Hunter - 一生有你](http://img.ph.126.net/eoeWO_9UmdpQRWSgP1l2eQ==/3278339053750721636.jpg)
定义:
不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信者使用收信者的公钥加密信件,收信者使用自己的私钥钥解密信件 。
显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。
密码术有很长的历史。古代人在没有高速运算设备的条件下想尽了各种方法,也包含了许多巧妙的构思。早在公元前1900年,一个古埃及书写员就在一个铭文中使用了非标准的象形文字,这是人类最早的有记录的密码术。其后,古代人使用的密码术有如把字母表的顺序颠倒过来、进行字母替代,或者用错后一定数目的位置的字母替代前面的字母。其中有些密码术的构思也是十分巧妙的。
现代密码术的划时代突破,是威特菲尔德;迪菲(Whitfield Diffie)和马丁;海尔曼(Martin Hellman)有关公开密钥加密系统的构想,这是在1976年发表的。但威特菲尔德;迪菲和马丁;海尔曼提供的MH背包算法于1984年被破译,因而失去了实际意义。真正有生命力的公开密钥加密系统算法是由隆;里维斯特(Ronald L. Rivest)、阿迪;沙米尔(Adi Shamir)和雷奥纳德;阿德尔曼(Leonard M.Adlemen)在威特菲尔德·迪菲和马丁;海尔曼的论文的启发下,在1977年发明的,这就是沿用至今的RSA算法。它是第一个既能用于数据加密也能用于数字签名的算法。
公钥加密标准(PKCS)是RSA实验室和全球各家安全系统开发商进行合作而开发出的标准。PKCS标准已经被广泛地采纳,而PKCS系列的标准已经成为许多正式和实际标准的一部分,包括ANSI X9、PKIX、SET、S/MIME。
1976 年,Whitfield Diffe 和 Martin Hellman 创建了公钥加密。公钥加密是重大的创新,因为它从根本上改变了加密和解密的过程。
Diffe 和 Hellman 提议使用两个密钥,而不是使用一个共享的密钥。一个密钥(称为“私钥”)是保密的。它只能由一方保存,而不能各方共享。第二个密钥(称为“公钥”)不是保密的,可以广泛共享。这两个密钥(称为“密钥对”)在加密和解密操作中配合使用。密钥对具有特殊的互补关系,从而使每个密钥都只能与密钥对中的另一个密钥配合使用。这一关系将密钥对中的密钥彼此唯一地联系在一起:公钥与其对应的私钥组成一对,并且与其他任何密钥都不关联。
由于公钥和私钥的算法之间存在特殊的数学关系,从而使得这种配对成为可能。密钥对在数学上彼此相关,例如,配合使用密钥对可以实现两次使用对称密钥的效果。密钥必须配合使用:不能使用每个单独的密钥来撤消它自己的操作。这意味着每个单独密钥的操作都是单向操作:不能使用一个密钥来撤消它的操作。此外,设计两个密钥使用的算法时,特意设计无法使用一个密钥确定密钥对中的另一个密钥。因此,不能根据公钥确定出私钥。但是,使得密钥对成为可能的数学原理也使得密钥对具有对称密钥所不具有的一个缺点。这就是,所使用的算法必须足够强大,才能使人们无法通过强行尝试,使用已知的公钥来解密通过它加密的信息。公钥利用数学复杂性以及它的单向特性来弥补它是众所周知的这样一个事实,以防止人们成功地破解使用它编码的信息。
如果将此概念应用于前面的示例,则发件人将使用公钥将纯文本加密成密码。然后,收件人将使用私钥将密码重新解密成纯文本。
由于密钥对中的私钥和公钥之间所存在的特殊关系,因此一个人可以在与许多人交往时使用相同的密钥对,而不必与每个人分别使用不同的密钥。只要私钥是保密的,就可以随意分发公钥,并让人们放心地使用它。使许多人使用同一个密钥对代表着密码学上的一个重大突破,因为它显著降低了密钥管理的需求,大大提高了密码学的可用性。用户可以与任意数目的人员共享一个密钥对,而不必为每个人单独设立一个密钥。
公钥加密是邮件安全中的一个基本要素。如果没有公钥加密,那么是否存在实用的邮件安全解决方案是值得怀疑的,因为在公钥加密出现之前,密钥管理是一件很麻烦的事情。在了解了公钥加密的基本概念之后,接下来便是了解如何借助这些概念来实现邮件安全性。
公钥体系的原理为:用户A有一对密钥对,分为公钥和私钥,这对密钥对是唯一的,是通过对一个巨大的素数进行因数分解所得。当用公钥加密过的信息,只能使用与它配对的私钥来解密,反之亦然,私钥加密码的信息也只能用公钥来解密。这样,A从认证体系生成密钥对后,把它的私钥保存好,把公钥公开出去,当一个用户B要与A通信,又想确保数据安全时,就可以使用A的公钥来加密信息,再把密文传给A,因此这个世界是只有A手中的私钥才能对这个密文进行解密,这样就确保了信息的安全。
事实上,信息加密码只是公钥体系的用途之一,它还有一个用途就是对信息进行签名,防此信息发布者抵赖,和被第三方修改。为什么这种机制可以实现这此功能呢?很简单,还是使用了“公钥加密,只有私钥能解;私钥加密,只有公钥能解”的道理。举例:用户A用自已的私钥对他发出去的信息进行签名(加密),然后发出去,后来他发现他公开的信息对他不利,他就不承认这些信息是他发的,但是他不可能抵赖了,因为这些信息有他的私钥签名,那么,使用他的公钥对信息验证就知道,这些信息肯定是A发的了,因为只有A使用的私钥签名得到的信息,才能用这个公钥来解。如果A还认是他发的信息,那只有一个可能,那就是他的私钥被人盗取了。
现在我们知道公钥机制的原理了,那它有什么用呢?上述举的例子就比较常用,而在我们日常工作中也有些用到公钥机制的地方,我们可能有人用过钥匙盘,它是一个类似U盘的东西,一般提供USB接口,它就使用了公钥机制,当我们在一台计算机上初始化这个钥匙盘的时候,它会生成一对密钥对,把公钥存在计算机上,私钥存在钥匙盘上,当用户要进行一个系统虽要身份验证时,只虽插入钥匙盘,就会通过公私钥加解密的原理,完成这个用户的身份验证过程,而无需输入帐号和密码进行验证。
现实上,公钥机制也有它的缺点,那就是效率非常低,比常用的单密钥算法慢上一两个数量级都有可能,所以它不适合经常为大量的原始信息进行加密,而使用单密码钥机制对原始信息进行加密码,然后这个单密钥,我们可以通过公钥机制进行加密。