2

我需要使用 AES-128-ECB 加密数据块,并希望使用 libsodium 和 Ruby 来加密。我使用 OpenSSL API 在 Ruby 中构建了一个解决方案原型,如下所示:

aes = OpenSSL::Cipher::Cipher.new("AES-128-ECB")
aes.encrypt
aes.key = key
aes.update(data) + aes.final 

这可行,但我需要 libsodium 的其他功能,所以我想改用它并摆脱对 OpenSSL 的依赖。不幸的是,我没有看到任何适用于 ECB 模式的 API。我也在使用 ruby​​ 包装器 RbNaCl,但我什至看不到使用基本 libsodium API 的任何方法。我确实看到了AES-128-CTR

是否可以使用 libsodium 加密 AES-128-ECB?

4

1 回答 1

7

libsodium 故意不支持 ECB 模式。

在这种模式下,相同的块被加密两次,产生相同的密文两次。

从安全的角度来看,为什么这很糟糕的一个经典例子是欧洲央行的企鹅

libsodium 没有提供许多可供选择的原语、模式和参数,许多组合实际上是不安全的,而是提供了一组精心挑选的安全结构。

AES-ECB 不是其中之一,并且永远不会出于上述原因。

你真的应该切换到不同的结构。

于 2015-09-02T20:29:38.230 回答