在规格中选择AES ECB

时间:2016-06-14 12:52:39

标签: security networking encryption cryptography aes

当我看到这个时,我正在阅读 the specification of LoRaWAN,这是一个使用AES进行安全保护的物联网网络:

  

注意:网络服务器在ECB中使用AES解密操作   模式加密加入 - 接受消息,以便终端设备可以   使用AES加密操作来解密消息。这样一来   终端设备只需要实现AES加密,但不能实现AES解密。

This Q&A以及其他几个来源*表示不应使用ECB。链接问题的答案补充说," OFB / CFB更好,因为你只需要加密而不是解密,这可以节省代码空间"。那么为什么LoRaWAN的概念选择使用ECB?

*:维基百科为a striking example提供了一张用AES-ECB加密的图片。

1 个答案:

答案 0 :(得分:0)

从我(快速)读取规范,相同的设备专用密钥(" Appkey")用于"解密"服务器上的明文消息。我把"解密"在引号中,因为它使用AES解密来实际加密消息;然后,只需要实现AES加密的接收设备就可以解密密文。请记住,这些都是资源有限的低功耗设备。

无论如何,要回答你的问题 - 我基于规范的第6.2.5节 - 似乎很多字段都是可预测的,关键是不会改变,所以他们依赖于24位随机数的唯一性(nonce =数字曾经使用过一次)。 2 ^ 24约为1600万。如果nonce被重复使用(即使是偶然的,例如,如果它是随机生成的并且存在nonce冲突(只是谷歌"生日悖论"))你有一个真正的安全问题。

我没有花足够的时间与规范进一步理解/批评安全措施,但我愿意打赌有一些实现使用rand()为nonce(悲伤的面孔)甚至更糟糕的是,一个硬编码的值(非常悲伤的脸)。