我想把一个an 128-CMAC从16减少到8字节。引用RFC,"...可以截断MAC。截断的结果应该以最重要的位为一阶. ...“。
当使用CryptoJS在"Hello World“上使用"0xDEADBEEF CAFEBABE DEADBEEF CAFEBABE”键生成这样的CMAC时,这将产生: 0x2425a8ff 14cea36d 0a14b3e8 3 dbfc68e。
发布于 2017-04-14 06:44:20
Q1。我不确定,根据上述定义,我截断的CMAC是
0x2425a8ff 14cea36d
还是0x0a14b3e8 3dbfc68e
__。换句话说: CMAC的0x24
是最重要的字节还是最小的字节?
你提到的RFC有如下内容:
MSB(x)字符串中最重要的位x. MSB(10010000)表示1。
这意味着最左边的字节包含最重要的位(MSB表示最重要的位)。这被称为大端字节顺序或网络字节顺序。换句话说,0x24是最重要的字节。取最左边/最重要的字节是很常见的。
Q2。当取错8字节时,它如何影响安全性?
一点也不,但它可能会损害互操作性。任何一位都与另一位一样重要;只要您决定先使用哪些位,您就可以跳过所有偶数位或奇数位,并有一个安全的MAC。
发布于 2017-04-12 13:11:02
由于8是16字节的一半,所以有其他解决方案,您可以同时使用上字节和下字节,但仍然可以得到8个字节。
当你不能决定你最喜欢哪个字节并且只需要几行代码时,这些技术是很好的.
发布于 2017-04-12 11:11:03
你选择的哪一部分不影响安全。
我假设他们声明您应该使用MSB的原因是,这是从NIST文件.派生出来的,NIST是一个标准组织,如果您想要互操作性,人们需要使用相同的位元。
我不知道CryptoJS是干什么的。
https://crypto.stackexchange.com/questions/46536
复制相似问题