AES 加密技术详解:CBC模式与ECB模式的对比分析

-
2017-10-03

最近要为蜘蛛表格支持图片字段,其中一个能力是「启用企业专属安全」,用户上传的图片需要被加密存储。调研众多加密算法后最终选择使用 AES-CBC 对图片进行加密。

本文主要探讨这种场景下为什么选择 AES 加密算法 Advanced Encryption Standard,高级加密标准),并详细对比加密中的两种常见模式——CBC(Cipher Block Chaining,密码块链接)模式和ECB(Electronic Codebook,电子密码本)模式的适用范围。

选哪种加密算法

对称加密 VS 非对称加密

对称加密

常用的 AES 就是对称加密。

就是使用同一个密钥对内容进行加解密。加密方和解密方必须事先共享同一个密钥,并且保证这个密钥的安全。

对称加密一般性能都很高,且有 CPU 等硬件支持(比如 Intel 的 AES-NI),适合文件加密,数据库加密,网络传输加密等数据量大的场合。

非对称加密

常用的 RSA 就是非对称加密。

包含公钥和私钥两个密钥,公钥用于加密,私钥用于解密。公钥可以公开分享,而私钥必须保持私密。非对称加密有更高的安全性,即使公钥被公开,没有私钥也无法解密信息(这也是 TLS 证书的基础)。

由于其复杂的数学运算,尤其是在处理大量数据时,比对称加密慢得多。比如 RSA-2048 加密需要两个 1024 bits 的大质数。大质数的计算可以参考早前的文章 C++计算大质数

现行的 TLS 为了平衡安全和性能,一般是使用 RSA 算法对 AES 的密钥进行加密并传输,双方拿到 AES 密钥后对网络传输的明文进行对称加密。

选择 AES 进行加密

AES是一种对称加密算法,由美国国家标准与技术研究院(NIST)于2001年公布,用于替代DES(Data Encryption Standard)。AES经过了严格的审查和测试,被认为是目前最安全的加密算法之一。它支持128位、192位和256位的密钥长度,分别对应AES-128、AES-192和AES-256。较长的密钥长度使得AES能够抵抗各种已知的密码学攻击,如暴力破解和差分密码分析。

考虑到蜘蛛表格中用户上传图片这一场景的特点,最终选择使用 AES-128 加密算法。

  1. 密钥传输环境安全性能够保障;
  2. 需要加密的图片体量较大;

用哪种工作模式

分组密码工作模式

在使用 AES 加密算法时,为了适应不同应用场景的需求,通常会采用不同的工作模式。这些模式定义了如何将明文转换为密文以及如何处理多个分组的数据。主要的工作模式包括ECB(电子密码本Electronic codebook)、CBC(密码块链 Cipher-block chaining)、CFB(Cipher Feedback)、OFB(Output Feedback)和CTR(Counter)等。其中 ECB 和 CBC 模式是较为简单和常用的两种模式。

ECB 模式

ECB是最简单的分组密码工作模式,每个明文分组独立地被加密成对应的密文分组。具体来说,相同的明文分组在相同密钥的作用下总是产生相同的密文分组。这种特性使得 ECB 模式在并行处理方面具有优势,因为它不需要依赖前一个分组的结果即可开始加密下一个分组。

优点

简单易实现:由于每个分组独立加密,实现起来相对简单,易于理解和编程。
并行处理能力强:可以同时对多个分组进行加密或解密,提高处理速度。
 

缺点

模式识别风险:如果存在重复的明文分组,它们会被加密成相同的密文分组,这可能导致模式泄露,攻击者可以通过观察密文来推测原始数据的结构。例如,一张包含大量相同颜色区域的图片在使用ECB模式加密后,这些区域的密文可能会显示出类似的模式,从而暴露图像的结构信息。

缺乏扩散性:一个分组内的任何变化不会影响到其他分组的加密结果,这降低了加密的整体安全性。这意味着如果攻击者能够获取部分明文和对应的密文,他们可以更容易地推断出其他部分的密文。
 

CBC模式

CBC模式通过将当前分组的加密结果与上一个分组的密文进行异或操作来实现链式加密。对于第一个分组,通常会使用一个随机生成的初始向量(IV)来进行异或操作。这种方式确保了即使两个相同的明文分组,在不同的上下文中也会产生不同的密文分组。

优点

增强安全性:通过引入链式操作,使得相同的明文分组在不同情况下会产生不同的密文,增加了破解难度。即使攻击者能够获取部分明文和对应的密文,也很难推断出其他部分的密文。

错误传播:如果密文中的一个分组损坏,只会影响该分组及其后续的一个分组,不会导致整个消息的解密失败。这在传输过程中尤其重要,可以减少因传输错误导致的完全解密失败的风险。

缺点

不能并行处理:由于每个分组的加密都需要等待前一个分组的结果,因此不能像ECB那样并行处理。这在处理大量数据时可能会导致性能瓶颈。

初始向量的重要性:IV的选择至关重要,如果IV被攻击者预测或控制,则可能降低安全性。因此,IV必须是随机生成且不可预测的,同时还需要妥善管理和存储。

选择 CBC 工作模式

对于蜘蛛表格应用而言,考虑到数据安全性和性能之间的平衡,最终选择使用 CBC 模式来加密用户上传的图片。虽然 CBC 模式不能像 ECB 那样提供并行处理能力,但它提供了更强的安全保障,能够有效防止用户的图片内容泄露。

CBC 模式与 ECB 模式加密图片效果对比(2021/03/10 跟CJ讨论后补充代码)

ECB vs CBC

总结

大数据量下使用 AES 等对称加密是一个较好的选择。在涉及到敏感数据保护时,CBC 模式有更强的安全性和可靠性,应该作为加密模式的首选。


目录