在阅读了大量关于AES、CTR及其IV的内容之后,我仍然不确定是否可以使用可预测的IV。
我搜索了网络,找到了一些以这种方式使用加密的程序/设备。
比如萝拉。Lora是一个低速网络,用于在拥有数千台设备的完整城市中交换数据(温度或湿度传感器)。
示例:我在Web上找到了Lora的源代码,它就是这样做的。
一个序列计数器,它在整个节点生存期内只使用每个值一次。
每一个新的16字节块就有一个1字节的计数器。
初始化IV
static uint8_t aBlock[] = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
after this
aBlock[5] = dir; ( direction of message)
aBlock[6] = ( address ) & 0xFF; (Hardware address of device)
aBlock[7] = ( address >> 8 ) & 0xFF; (Hardware address of device)
aBlock[8] = ( address >> 16 ) & 0xFF; (Hardware address of device)
aBlock[9] = ( address >> 24 ) & 0xFF; (Hardware address of device)
aBlock[10] = ( sequenceCounter ) & 0xFF; (counter that never repeats)
aBlock[11] = ( sequenceCounter >> 8 ) & 0xFF; (counter that never repeats)
aBlock[12] = ( sequenceCounter >> 16 ) & 0xFF; (counter that never repeats)
aBlock[13] = ( sequenceCounter >> 24 ) & 0xFF; (counter that never repeats)
aBlock[15] = ( ( ctr ) & 0xFF ); ( a counter value that is incremented for every 16 Byte Block)这够安全吗?
源代码:https://github.com/Lora-net/LoRaMac-node/blob/master/src/mac/LoRaMacCrypto.c第108行: void LoRaMacPayloadEncrypt()
http://www.semtech.com/wireless-rf/internet-of-things/
发布于 2017-01-17 15:05:23
对于CTR模式,不需要随机IV。唯一的要求是,在所有加密过程中,计数器在每个块中都是唯一的。(这与CBC模式形成对比,CBC模式中IV的不可预测性是必不可少的。)
https://crypto.stackexchange.com/questions/43050
复制相似问题