加密算法和比较

404 阅读13分钟

加密是一种将数据转换为无法破译的格式的方法,这样只有授权方才能访问信息。在本文中,我们将了解对称和非对称加密以及它们用于加密数据的流行加密算法。

密钥与加密算法组合,共同构成加密过程。根据这些密钥的使用方式,可以将加密算法分为两类:“对称加密”和“非对称加密”。这两种方法都使用不同的数学算法来打乱数据。常用加密算法包括 RSA、ECC、3DES、AES 等。

对称加密

该类算法名字的特点时,其加密/解密使用相同的密钥,由于这两个过程都使用同一个密钥,所以被称为对称加密,同时具有加解密速度较快的特征。

2022-02-24-20220224161120

接下来我们以一个例子来介绍对称加密算法。

假设小明和小红互相喜欢,经常上课传纸条,但是他们二人的座位隔着很多同学,传递纸条时需要经过很多同学,为了保护小纸条的内容不被别人看懂,他们决定使用拼音传递信息,同时将每个字母转换为其后2位的字母(加密),如 woaini 转换为 xpbjoj ,当另一人接收到消息时,只需要回推即可(解密)。

今天的加密算法比上面描述的要复杂的多,即使是许多超级计算机的综合计算能力也无法破解它们。这就是为什么我们可以放心地发送我们的信息而无需担心。

对称加密特点

对称加密最突出的特点是其过程十分简单。只需要通过使用单个密钥进行加密和解密。

  • 比非对称加密快的多。
  • 加算量少。
  • 不会影响网络响应速度。

因此,当我们要加密大量数据的时候,对称加密算法是一个不错的选择。

三种常见的加密算法

每种加密方法背后都有特定的逻辑,今天使用的加密方法依赖于高度复杂的数学函数,破解它们几乎是不可能的。一些最常见的加密方法包括 AES、RC4、DES、3DES、RC5、RC6 等。在这些算法中,DES 和 AES 算法最为人所知。让我们看一下最常见的三种。

:::tip 更多加密算法请参看。 :::

1. DES对称加密算法

DES(数据加密标准)于 1976 年推出,是最古老的对称加密方法之一。它由 IBM 开发,用于保护敏感的非机密电子政府数据,并于 1977 年正式被联邦机构采用。 DES 使用 56 位加密密钥,它基于由密码学家 Horst Feistel 设计的 Feistel 结构。 DES 加密算法包含在 TLS(传输层安全)版本 1.0 和 1.1 中。

DES 将 64 位纯文本数据块转换为密文,方法是将块分成两个单独的 32 位块,并对每个块单独应用加密过程。这涉及 16 轮各种过程——例如扩展、置换、替换或使用轮密钥的 XOR 操作——数据在加密时将通过这些过程。最终,生成 64 位加密文本块作为输出。

今天,DES 已不再使用,因为它已被许多安全研究人员破解。 2005 年,DES 被正式弃用,取而代之的是 AES 加密算法,我们稍后再谈。 DES 的最大缺点是它的加密密钥长度短,这使得暴力破解很容易。当今使用最广泛的 TLS 协议 TLS 1.2 不使用 DES 加密方法。

2. 3DES对称加密算法

3DES(也称为TDEA,代表三重数据加密算法),顾名思义,是已发布的DES算法的升级版。 3DES 是为克服 DES 算法的缺点而开发的,并于 1990 年代后期开始投入使用。为此,它将 DES 算法三次应用于每个数据块。结果,这个过程使得 3DES 比其前身 DES 更难破解。它也成为金融行业支付系统、标准和技术中广泛使用的加密算法。它还成为 TLS、SSH、IPsec 和 OpenVPN 等加密协议的一部分。

所有的加密算法最终都会屈服于时间的力量,3DES也不例外。研究人员 Karthikeyan Bhargavan 和 Gaëtan Leurent 发现的 Sweet32 漏洞,这一发现导致安全行业考虑弃用该算法,美国国家标准与技术研究院 (NIST) 在 2019 年发布的指南草案中宣布弃用该算法。

根据该草案,2023 年之后的所有新应用都将取消使用 3DES。另外值得注意的是,SSL/TLS 协议的最新标准 TLS 1.3 也停止使用 3DES。

3. AES对称加密算法

AES 代表“高级加密系统”,是最普遍使用的加密算法类型之一,是作为 DES 算法的替代方案而开发的。 AES 也称为 Rijndael,于 2001 年成为 NIST 批准的加密标准。与 DES 不同,AES 是一组分组密码,由不同密钥长度和分组大小的密码组成。

AES 研究替换和排列的方法。首先,将明文数据变成块,然后使用加密密钥进行加密。加密过程由子字节、移位行、混合列、添加轮密钥等各种子过程组成。根据密钥的大小,执行 10、12 或 14 次这样的轮次。值得注意的是,上一轮不包括混合列的子过程以及为加密数据而执行的所有其他子过程。

AES 是安全、快速和灵活的。与 DES 相比,AES 是一种更快的算法。多个密钥长度选项是您拥有的最大优势,因为密钥越长,破解它们就越难。

今天,AES 是使用最广泛的加密算法——它被用于许多应用程序中,包括:

  • 无线网络安全。
  • 处理器安全和文件加密。
  • SSL/TLS 协议(网站安全)。
  • WiFi安全。
  • 移动应用加密。
  • VPN(虚拟专用网络)。

目前,许多政府机构,都依赖 AES 加密算法来保护其敏感信息。

非对称加密

与对称加密方法相比,非对称加密算法用于加密和解密数据的是多个密钥。非对称加密包含两个在数学上相互关联的不同加密密钥。这些密钥中的一个称为“公钥”,另一个称为“私钥”。

正如我们在上面的例子中看到的,当 小明 和 小红 想要交换信息时,对称加密非常有效。但是,如果小明是个海王, 想要与多个小红安全地传递消息,该怎么办呢?

为了解决这个问题,小明使用了非对称加密,他将公钥提供给向他发送信息的每个人,并将私钥留给自己。他指示小红们使用公钥加密信息,以便只能使用他拥有的私钥解密数据。这消除了密钥泄露的风险,因为数据只能使用小明拥有的私钥解密。

非对称加密特点

这种加密的最明显的优势是它提供的安全性。在这种方法中,公开可用的公钥用于加密数据,而数据的解密则使用需要安全存储的私钥完成。这可确保数据受到保护,免受中间人 (MiTM) 攻击。对于每分钟连接到数十万个客户端的网络/电子邮件服务器来说,非对称加密无疑是一个福音,因为它们只需要管理和保护一个密钥。此外,非对称加密允许创建加密连接,而不必先离线交换密钥。

非对称加密提供的第二个关键特性是身份验证。正如我们所看到的,由公钥加密的数据只能使用与其相关的私钥解密。因此,它确保只有应该接收数据的实体才能看到和解密数据。简而言之,它可以保证信息交换双方的合法性。

非对称加密算法的两种主要类型

1. RSA非对称加密算法

RSA 由 Ron Rivest、Adi Shamir 和 Leonard Adleman(因此称为“RSA”)于 1977 年发明,是迄今为止使用最广泛的非对称加密算法。它的效力在于它所依赖的“素数分解”方法。基本上,这种方法涉及两个巨大的随机素数,这些数字相乘以创建另一个巨大的数字。这里的难题是从这个巨大的乘数中确定原始素数。

事实证明,对于今天的超级计算机,更不用说人类,如果使用由足够熵生成的正确密钥长度,这个难题几乎是不可能的。 2010 年,一组研究人员进行了研究,他们花费了 1500 多年的计算时间(分布在数百台计算机上)来破解 RSA-768 位密钥——这远低于正在使用的标准 2048 位 RSA 密钥今天。

RSA 提供的一个巨大优势是它的可扩展性。它具有各种加密密钥长度,例如 768 位、1024 位、2048 位、4096 位等。因此,即使较低的密钥长度被成功暴力破解,您也可以使用较高的密钥长度加密因为暴力破解密钥的难度随着密钥长度的增加而增加。

RSA 基于简单的数学方法,这就是为什么它在公钥基础设施 (PKI) 中的实现变得简单。这种对 PKI 的适应性及其安全性使 RSA 成为当今使用最广泛的非对称加密算法。 RSA 广泛用于许多应用程序,包括 SSL/TLS 证书、加密货币和电子邮件加密。

2.ECC非对称加密算法

1985 年,两位名叫 Neal Koblitz 和 Victor S. Miller 的数学家提出在密码学中使用椭圆曲线。近二十年后,当 ECC(椭圆曲线密码学)算法于 2004-05 年投入使用时,他们的想法变成了现实。

在 ECC 加密过程中,一条椭圆曲线表示满足数学方程 (y2 = x3 + ax + b) 的点集。

与 RSA 一样,ECC 也遵循不可逆原则。用更简单的话来说,在一个方向上计算它很容易,但要反转它并得出原点却非常困难。在 ECC 中,表示曲线上一个点的数字乘以另一个数字,得出曲线上的另一个点。现在,要破解这个难题,您必须找出曲线上的新点。 ECC 的数学构建方式使得即使您知道原始点,也几乎不可能找出新点。

2022-02-24-20220224170608

与 RSA 相比,ECC 提供了更高的安全性(针对当前的破解方法),因为它相当复杂。它提供与 RSA 类似的保护级别,但它使用的密钥长度要短得多。因此,使用更大长度的密钥应用 ECC 将花费相当多的时间来使用暴力攻击来破解。

ECC 中较短密钥的另一个优点是性能更快。较短的密钥需要较少的网络负载和计算能力,这对于存储和处理能力有限的设备来说非常有用。在 SSL/TLS 证书中使用 ECC 时,它可以显着减少执行 SSL/TLS 握手所需的时间,并帮助您更快地加载网站。 ECC 加密算法用于加密应用、应用数字签名、伪随机生成器等。

然而,使用 ECC 的挑战在于,许多服务器软件和控制面板尚未添加对 ECC SSL/TLS 证书的支持。我们希望这种情况在未来有所改变,但这意味着 RSA 在此期间将继续成为更广泛使用的非对称加密算法。

混合加密:对称+非对称加密

首先澄清一下,混合加密不是像对称和非对称加密那样的“方法”。它充分利用了这两种方法,并创造了协同作用来构建强大的加密系统。

尽管对称和非对称加密具有优势,但它们都有其缺点。对称加密方法非常适合快速加密大数据。但它不能提供身份验证,而这正是互联网安全方面的当务之急。另一方面,非对称加密确保数据被合法的目标接收者访问。但是,这种验证在大规模实施时会使加密过程非常缓慢。

在许多应用程序中,例如网站安全,需要对数据进行高速加密,并且还需要验证身份以确保用户正在与预期的实体交谈。混合加密的想法就是这样诞生的。

混合加密技术用于 SSL/TLS 证书等应用程序。在称为“TLS 握手”的过程中,在服务器和客户端(Web 浏览器)之间的一系列来回通信期间应用 SSL/TLS 加密。在此过程中,使用私钥和公钥验证双方的身份。一旦双方确认了他们的身份,数据的加密就会通过使用临时(会话)密钥的对称加密进行。这确保了我们每分钟在互联网上发送和接收的大量数据的快速传输。

2022-02-24-20220224170817

如何选择

对称加密和非对称加密各有各的优势,我们应该充分结合这两类算法的特点来加密我们的系统、数据,而不是简单的做二选一。

从安全角度来看,非对称加密无疑更好,因为它可以确保身份验证和不可否认性。然而,性能也是我们不能忽视的一个方面,这就是为什么总是需要对称加密的原因。

以下是两类对加密类型的总结:

对称加密非对称加密
单个密钥用于加密和解密数据。密钥对用于加密和解密。这些密钥称为公钥和私钥。
由于只使用一个密钥,因此它是一种更简单的加密方法。由于密钥对的存在,加解密过程更加复杂。
对称加密主要用于加密。非对称加密可确保加密、身份验证和不可否认性。
与非对称加密相比,它提供更快的性能,并且需要更少的计算。它比对称加密慢,并且由于其复杂性而需要更多的计算。
较小的密钥长度用于加密数据(例如,128-256 位长度)。通常,非对称加密方法涉及更长的密钥(例如1024-4096位长度)。
非常适合需要加密大量数据的应用程序。非常适合通过确保身份验证使用少量数据的应用程序。
标准对称加密算法包括 RC4、AES、DES、3DES 和 QUAD。标准非对称加密算法包括RSA,Diffie-Hellman,ECC,El Gamal和DSA。