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?
libsodium故意不支持ECB模式.
在此模式下,加密两次的同一块产生两次相同的密文.
从安全角度来看,为什么这是可怕的经典例证是欧洲央行企鹅.
libsodium提供了一套精选的安全结构,而不是提供许多基元,模式和参数供选择,而且许多组合实际上都是不安全的.
AES-ECB不是其中之一,并且绝不会出于上述原因.
你真的应该改用不同的结构.