我可以使用Libsodium进行AES-128-ECB加密吗?

时间:2015-09-01 14:22:17

标签: ruby aes libsodium

我需要使用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?

1 个答案:

答案 0 :(得分:5)

libsodium故意不支持ECB模式。

在此模式下,加密两次的同一块产生两次相同的密文。

从安全角度来看,为什么这是可怕的经典例证是the ECB penguin

libsodium不是提供许多基元,模式和参数供选择,而且许多组合实际上都是不安全的,它提供了一套精心挑选的安全结构。

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

你真的应该改用不同的结构。