加密解密(0)公钥,私钥,对称加密,非对称加密简介

mac2022-07-01  19

PKI 基础知识 

1.摘要

  本白皮书介绍了加密和公钥基本结构(PKI)的概念和使用 Microsoft Windows 2000 Server 操作系统中的证书服务的基础知识。如果您还不熟悉加密和公钥技术,先阅读本白皮书将有助于理解 Windows 2000 Web 站点上有关这些主题的其它技术白皮书。

2.引言

  Microsoft Windows 2000 证书服务提供的集成的公钥基本结构(PKI)使电子商务能够在安全的环境中进行。本白皮书介绍了加密和 PKI 的概念。理解这些相关概念是理解证书服务功能的先决条件,证书服务是 Microsoft Windows 2000 Server 操作系统中的一个组件。

3.加密概念

  加密是通过 Intranet、Extranet 和 Internet 进行安全的信息交换的基础。从业务的角度来看,通过加密实现的安全功能包括: 身份验证 ,使收件人确信发件人就是他或她所声明的那个人; 机密性 ,确保只有预期的收件人能够阅读邮件;以及 完整性 ,确保邮件在传输过程中没有被更改。从技术的角度来看,加密是利用数学方法将邮件转换为不可读格式从而达到保护数据的目的的一门科学。

本节介绍下列加密概念:

对称密钥加密:一个密钥公钥加密:两个密钥单向散列算法数字签名:结合使用公钥与散列密钥交换:结合使用对称密钥与公钥

前三个小节分别定义并说明对称密钥加密、公钥加密和散列算法。后两个小节说明 组合使用 这些技术的方法-尤其是,将公钥算法与散列算法相结合以创建数字签名,以及将对称算法与公钥算法相结合使交换密(私)钥成为可能。

4.对称密钥加密:一个密钥

  对称密钥加密,也叫做共享密钥加密或机密密钥加密,使用发件人和收件人共同拥有的单个密钥。这种密钥既用于加密,也用于解密,叫做机密密钥 (也称为 对称密钥 或 会话密钥 )。对称密钥加密是加密大量数据的一种行之有效的方法。.

对称密钥加密有许多种算法,但所有这些算法都有一个共同的目的-以可还原的方式将 明文 (未加密的数据)转换为 暗文 。暗文使用加密密钥编码,对于没有解密密钥的任何人来说它都是没有意义的。由于对称密钥加密在加密和解密时使用相同的密钥,所以这种加密过程的安全性取决于是否有未经授权的人获得了对称密钥。这就是它为什么也叫做机密密钥加密的原因。希望使用对称密钥加密通信的双方,在交换加密数据之前必须先安全地交换密钥。

衡量对称算法优劣的主要尺度是其密钥的长度。密钥越长,在找到解密数据所需的正确密钥之前必须测试的密钥数量就越多。需要测试的密钥越多,破解这种算法就越困难。有了好的加密算法和足够长的密钥,如果有人想在一段实际可行的时间内逆转转换过程,并从暗文中推导出明文,从计算的角度来讲,这种做法是行不通的。

5.非对称加密(公钥加密):两个密钥

  公钥加密使用两个密钥- 一个公钥 和 一个私钥 ,这两个密钥在数学上是相关的。为了与对称密钥加密相对照,公钥加密有时也叫做不对称密钥加密。在公钥加密中,公钥可在通信双方之间公开传递,或在公用储备库中发布,但相关的私钥是保密的。只有使用私钥才能解密用公钥加密的数据。使用私钥加密的数据只能用公钥解密。在图 1 中,发件人拥有收件人的公钥,并用它加密了一封邮件,但只有收件人掌握解密该邮件的有关私钥。

图 1 公钥加密要求使用一个公钥和一个私钥。

  与对称密钥加密相似,公钥加密也有许多种算法。然而,对称密钥和公钥算法在设计上并无相似之处。您可以在程序内部使用一种对称算法替换另一种,而变化却不大,因为它们的工作方式是相同的。而另一方面,不同公钥算法的工作方式却完全不同,因此它们不可互换。

公钥算法是复杂的数学方程式,使用十分大的数字。公钥算法的主要局限在于,这种加密形式的速度相对较低。实际上,通常仅在关键时刻才使用公钥算法,如在实体之间交换对称密钥时,或者在签署一封邮件的散列时(散列是通过应用一种单向数学函数获得的一个定长结果,对于数据而言,叫做散列算法)。将公钥加密与其它加密形式(如对称密钥加密)结合使用,可以优化性能。公钥加密提供了一种有效的方法,可用来把为大量数据执行对称加密时使用的机密密钥发送给某人。也可以将公钥加密与散列算法结合使用以生成数字签名。

若要进一步了解关于将公钥加密与对称密钥加密或散列算法结合使用的信息,请参见下面两节:“数字签名: 结合使用公钥与散列算法”和“密钥交换:结合使用对称密钥与公钥”

6.将公钥加密用于数字签名

  数字签名是邮件、文件或其它数字编码信息的发件人将他们的身份与信息绑定在一起(即为信息提供签名)的方法。对信息进行数字签名的过程,需要将信息与由发件人掌握的秘密信息一起转换为叫做签名的标记。数字签名用于公钥环境中,它通过验证发件人确实是他或她所声明的那个人,并确认收到的邮件与发送的邮件完全相同,来帮助确保电子商务交易的安全。

通常,数字签名用于以明文(如电子邮件)分发数据的情形。在这种情况下,当邮件本身的敏感性可能无法保证加密的安全性时,确保数据处于其原始格式且并非由假冒者发送,是非常重要的。

要了解如何结合使用公钥与散列算法来创建数字签名,请参见下面的“数字签名: 结合使用公钥与散列算法”一节

7.常用公钥算法

下面是三种最常用的公钥算法:

RSA -适用于数字签名和密钥交换。 Rivest-Shamir-Adleman (RSA) 加密算法是目前应用最广泛的公钥加密算法,特别适用于通过 Internet 传送的数据。这种算法以它的三位发明者的名字命名:Ron Rivest、Adi Shamir 和 Leonard Adleman。RSA 算法的安全性基于分解大数字时的困难(就计算机处理能力和处理时间而言)。在常用的公钥算法中,RSA 与众不同,它能够进行数字签名和密钥交换运算。Microsoft Base Cryptographic Service Provider (Microsoft Base CSP 1 ) 支持 RSA 加密算法,并且 Microsoft Enhanced Cryptographic Service Provider (Microsoft Enhanced CSP 2 ) 已经内置到包括 Microsoft Internet Explorer 在内的许多软件产品中。DSA -仅适用于数字签名。 数字签名算法 (Digital Signature Algorithm, DSA) 由美国国家安全署 (United States National Security Agency, NSA) 发明,已经由美国国家标准与技术协会 (National Institute of Standards and Technology, NIST) 收录到联邦信息处理标准 (Federal Information Processing Standard, FIPS) 之中,作为数字签名的标准。DSA 算法的安全性源自计算离散算法的困难。这种算法仅用于数字签名运算(不适用于数据加密)。Microsoft CSP 支持 DSA 算法。Diffie-Hellman -仅适用于密钥交换。 Diffie-Hellman 是发明的第一个公钥算法,以其发明者 Whitfield Diffie 和 Martin Hellman 的名字命名。Diffie-Hellman 算法的安全性源自在一个有限字段中计算离散算法的困难。Diffie-Hellman 算法仅用于密钥交换。Microsoft Base DSS 3 和 Diffie-Hellman CSP 都支持 Diffie-Hellman 算法。

8.单向散列算法

  散列-也称为 散列值 或 消息摘要 ,是一种与基于密钥(对称密钥或公钥)的加密不同的数据转换类型。散列就是通过把一个叫做散列算法的单向数学函数应用于数据,将任意长度的一块数据转换为一个定长的、不可逆转的数字。所产生的散列值的长度应足够长,因此使找到两块具有相同散列值的数据的机会很少。发件人生成邮件的散列值并加密它,然后将它与邮件本身一起发送。而收件人同时解密邮件和散列值,并由接收到的邮件产生另外一个散列值,然后将两个散列值进行比较。如果两者相同,邮件极有可能在传输期间没有发生任何改变。

9.常用的单向散列函数

下面是两个最常用的散列函数:

MD5 。 MD5 是由 Ron Rivest 设计的可产生一个 128 位的散列值的散列算法。MD5 设计经过优化以用于 Intel 处理器。这种算法的基本原理已经泄露,这就是为什么它不太受欢迎的原因。SHA-1 。 与 DSA 公钥算法相似,安全散列算法 1(SHA-1)也是由 NSA 设计的,并由 NIST 将其收录到 FIPS 中,作为散列数据的标准。它可产生一个 160 位的散列值。SHA-1 是流行的用于创建数字签名的单向散列算法。

10.数字签名:结合使用公钥与散列算法

  可以结合使用公钥技术与散列算法来创建数字签名。数字签名可用作数据完整性检查并提供拥有私钥的凭据。

签署和验证数据(由启用 PKI 的应用程序如 Microsoft Outlook 完成)的步骤如下:

发件人将一种散列算法应用于数据,并生成一个散列值。发件人使用私钥将散列值转换为数字签名。然后,发件人将数据、签名及发件人的证书发给收件人。收件人将该散列算法应用于接收到的数据,并生成一个散列值。收件人使用发件人的公钥和新生成的散列值验证签名。

对用户而言这一过程是透明的。

散列算法处理数据的速度比公钥算法快得多。散列数据还缩短了要签名的数据的长度,因而加快了签名过程。当创建或验证签名时,公钥算法必须且只需转换散列值(128 或 160 位的数据)。创建签名和验证签名的详细步骤取决于所采用的公钥算法。

11.密钥交换:结合使用对称密钥与公钥

  对称密钥算法非常适合于快速并安全地加密数据。但其缺点是,发件人和收件人必须在交换数据之前先交换机密密钥。结合使用加密数据的对称密钥算法与交换机密密钥的公钥算法可产生一种既快速又灵活的解决方案。

基于公钥的密钥交换步骤如下:

发件人获得收件人的公钥。发件人创建一个随机机密密钥(在对称密钥加密中使用的单个密钥)。在 Windows 2000 中,CryptoAPI 4 可用于创建机密密钥。(有关 CryptoAPI 的详细信息,请参见下面的“证书链验证”一节。)发件人使用机密密钥和对称密钥算法将明文数据转换为暗文数据。发件人使用收件人的公钥将机密密钥转换为暗文机密密钥。发件人将暗文数据和暗文机密密钥一起发给收件人。收件人使用其私钥将暗文机密密钥转换为明文。收件人使用明文机密密钥将暗文数据转换为明文数据。

同样,这些步骤是由启用 PKI 的应用程序(如 Microsoft Outlook)来完成的,并且对用户来说是透明的。

转载于:https://www.cnblogs.com/sjjg/p/4696781.html

最新回复(0)