1

这些文件似乎没有提供答案..

微软试图清楚地解释这个主题,但仍然模棱两可。至少在我们的情况下。

我们有一个加密的 MP4 流。它包含“SampleEncryptionBox”es 或“PIFF”框,其中包含用于加密块的 8 字节 = 64 位初始化向量。但是:用于解密“AES-128 计数器模式”加密视频数据的实际“计数器块”是128-bit。我不知道到底把IV放在哪里!!

  • PIFF 文档说 16 字节 IV 是 AES-CTR 模式的整个计数器块(显然)。此外,对于AES-ECB 模式(第 17 页),将 8 字节 IV 放在计数器块的开头。但是对于AES-CTR 模式下的 8 字节 IV,它什么也没说!

  • 这个 RFC 文档说 128 位应该包括 4 字节 Nonce + 8 字节 IV + 4 字节计数器。Nonce 值应取自为主 128 位 AES 密钥提供的额外 4 个字节。我只能通过 Protection Header 获得 128 位的密钥,我应该从哪里获得 4 字节的 Nonce?

任何一点额外的知识都将受到高度赞赏。

4

2 回答 2

1

好的,我找到了解释。它在“ ISO/IEC JTC 1/SC 29 N ”文档中写得很清楚。

如果该IV_size字段为 8,则将其值复制到 0 到 7 的InitializationVector字节,并将 8 到 15 的字节InitializationVector设置为零。当标志为 0x1时,该IV_size字段不应为 0 。IsEncrypted

AES-ECB 模式与它无关。

于 2014-05-14T11:51:59.123 回答
1

请改用 NIST SP 800-38A,第 B.2 节。请注意,此文档是 Microsoft 文档引用的第一个文档:

满足跨消息唯一性的第二种方法是为每个消息分配一个唯一的 b/2 位字符串(如果 b 是奇数,则向上舍入),换句话说,一个消息随机数,并将消息随机数合并到每个消息的计数器块。每个计数器块的前导 b/2 位(如果 b 为奇数,则向上取整)将是消息随机数,标准递增函数将应用于剩余的 m 位,以提供消息的计数器块的索引。因此,如果 N 是给定消息的消息随机数,则第 j 个计数器块由 Tj = N | [j]m,对于 j = 1 ...n。任何 m 消息中的块数 n 必须满足 n < 2 。应该建立一个程序来确保消息随机数的唯一性。

请注意,您需要 2 ^ 64个数据才能到达下一个“消息随机数”或 IV。这只是生成计数器的示例方法;不幸的是,NIST 没有指定任何默认值的坏习惯。所以它也取决于协议,但上面是最常见的。

于 2014-05-13T20:42:01.920 回答