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

dav*_*ung 1 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 
Run Code Online (Sandbox Code Playgroud)

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

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

Fra*_*nis 6

libsodium故意不支持ECB模式.

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

从安全角度来看,为什么这是可怕的经典例证是欧洲央行企鹅.

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

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

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

  • 谢谢你的回答!由于您的名字出现在 [libsodium](https://github.com/jedisct1/libsodium/blob/master/LICENSE) 的许可页面上,我假设您知道您在说什么。我当然不会争论 AES-ECB 的优点,因为它不是我的选择。 (2认同)