PKI 基础知识 git
本白皮书介绍了加密和公钥基本结构(PKI)的概念和使用 Microsoft Windows 2000 Server 操做系统中的证书服务的基础知识。若是您还不熟悉加密和公钥技术,先阅读本白皮书将有助于理解 Windows 2000 Web 站点上有关这些主题的其它技术白皮书。算法
Microsoft Windows 2000 证书服务提供的集成的公钥基本结构(PKI)使电子商务可以在安全的环境中进行。本白皮书介绍了加密和 PKI 的概念。理解这些相关概念是理解证书服务功能的先决条件,证书服务是 Microsoft Windows 2000 Server 操做系统中的一个组件。安全
加密是经过 Intranet、Extranet 和 Internet 进行安全的信息交换的基础。从业务的角度来看,经过加密实现的安全功能包括: 身份验证 ,使收件人确信发件人就是他或她所声明的那我的; 机密性 ,确保只有预期的收件人可以阅读邮件;以及 完整性 ,确保邮件在传输过程当中没有被更改。从技术的角度来看,加密是利用数学方法将邮件转换为不可读格式从而达到保护数据的目的的一门科学。ide
本节介绍下列加密概念:函数
前三个小节分别定义并说明对称密钥加密、公钥加密和散列算法。后两个小节说明 组合使用 这些技术的方法-尤为是,将公钥算法与散列算法相结合以建立数字签名,以及将对称算法与公钥算法相结合使交换密(私)钥成为可能。性能
对称密钥加密,也叫作共享密钥加密或机密密钥加密,使用发件人和收件人共同拥有的单个密钥。这种密钥既用于加密,也用于解密,叫作机密密钥 (也称为 对称密钥 或 会话密钥 )。对称密钥加密是加密大量数据的一种行之有效的方法。.测试
对称密钥加密有许多种算法,但全部这些算法都有一个共同的目的-以可还原的方式将 明文 (未加密的数据)转换为 暗文 。暗文使用加密密钥编码,对于没有解密密钥的任何人来讲它都是没有意义的。因为对称密钥加密在加密和解密时使用相同的密钥,因此这种加密过程的安全性取决因而否有未经受权的人得到了对称密钥。这就是它为何也叫作机密密钥加密的缘由。但愿使用对称密钥加密通讯的双方,在交换加密数据以前必须先安全地交换密钥。优化
衡量对称算法优劣的主要尺度是其密钥的长度。密钥越长,在找到解密数据所需的正确密钥以前必须测试的密钥数量就越多。须要测试的密钥越多,破解这种算法就越困难。有了好的加密算法和足够长的密钥,若是有人想在一段实际可行的时间内逆转转换过程,并从暗文中推导出明文,从计算的角度来说,这种作法是行不通的。编码
公钥加密使用两个密钥- 一个公钥 和 一个私钥 ,这两个密钥在数学上是相关的。为了与对称密钥加密相对照,公钥加密有时也叫作不对称密钥加密。在公钥加密中,公钥可在通讯双方之间公开传递,或在公用储备库中发布,但相关的私钥是保密的。只有使用私钥才能解密用公钥加密的数据。使用私钥加密的数据只能用公钥解密。在图 1 中,发件人拥有收件人的公钥,并用它加密了一封邮件,但只有收件人掌握解密该邮件的有关私钥。加密
图 1 公钥加密要求使用一个公钥和一个私钥。
与对称密钥加密类似,公钥加密也有许多种算法。然而,对称密钥和公钥算法在设计上并没有类似之处。您能够在程序内部使用一种对称算法替换另外一种,而变化却不大,由于它们的工做方式是相同的。而另外一方面,不一样公钥算法的工做方式却彻底不一样,所以它们不可互换。
公钥算法是复杂的数学方程式,使用十分大的数字。公钥算法的主要局限在于,这种加密形式的速度相对较低。实际上,一般仅在关键时刻才使用公钥算法,如在实体之间交换对称密钥时,或者在签署一封邮件的散列时(散列是经过应用一种单向数学函数得到的一个定长结果,对于数据而言,叫作散列算法)。将公钥加密与其它加密形式(如对称密钥加密)结合使用,能够优化性能。公钥加密提供了一种有效的方法,可用来把为大量数据执行对称加密时使用的机密密钥发送给某人。也能够将公钥加密与散列算法结合使用以生成数字签名。
若要进一步了解关于将公钥加密与对称密钥加密或散列算法结合使用的信息,请参见下面两节:“数字签名: 结合使用公钥与散列算法”和“密钥交换:结合使用对称密钥与公钥”
数字签名是邮件、文件或其它数字编码信息的发件人将他们的身份与信息绑定在一块儿(即为信息提供签名)的方法。对信息进行数字签名的过程,须要将信息与由发件人掌握的秘密信息一块儿转换为叫作签名的标记。数字签名用于公钥环境中,它经过验证发件人确实是他或她所声明的那我的,并确认收到的邮件与发送的邮件彻底相同,来帮助确保电子商务交易的安全。
一般,数字签名用于以明文(如电子邮件)分发数据的情形。在这种状况下,当邮件自己的敏感性可能没法保证加密的安全性时,确保数据处于其原始格式且并不是由假冒者发送,是很是重要的。
要了解如何结合使用公钥与散列算法来建立数字签名,请参见下面的“数字签名: 结合使用公钥与散列算法”一节
下面是三种最经常使用的公钥算法:
散列-也称为 散列值 或 消息摘要 ,是一种与基于密钥(对称密钥或公钥)的加密不一样的数据转换类型。散列就是经过把一个叫作散列算法的单向数学函数应用于数据,将任意长度的一块数据转换为一个定长的、不可逆转的数字。所产生的散列值的长度应足够长,所以使找到两块具备相同散列值的数据的机会不多。发件人生成邮件的散列值并加密它,而后将它与邮件自己一块儿发送。而收件人同时解密邮件和散列值,并由接收到的邮件产生另一个散列值,而后将两个散列值进行比较。若是二者相同,邮件极有可能在传输期间没有发生任何改变。
下面是两个最经常使用的散列函数:
能够结合使用公钥技术与散列算法来建立数字签名。数字签名可用做数据完整性检查并提供拥有私钥的凭据。
签署和验证数据(由启用 PKI 的应用程序如 Microsoft Outlook 完成)的步骤以下:
对用户而言这一过程是透明的。
散列算法处理数据的速度比公钥算法快得多。散列数据还缩短了要签名的数据的长度,于是加快了签名过程。当建立或验证签名时,公钥算法必须且只需转换散列值(128 或 160 位的数据)。建立签名和验证签名的详细步骤取决于所采用的公钥算法。
对称密钥算法很是适合于快速并安全地加密数据。但其缺点是,发件人和收件人必须在交换数据以前先交换机密密钥。结合使用加密数据的对称密钥算法与交换机密密钥的公钥算法可产生一种既快速又灵活的解决方案。
基于公钥的密钥交换步骤以下:
一样,这些步骤是由启用 PKI 的应用程序(如 Microsoft Outlook)来完成的,而且对用户来讲是透明的。