Encryption 其中,在AES-128 CTR模式的128位计数器块中以PIFF格式放置64位IV

Encryption 其中,在AES-128 CTR模式的128位计数器块中以PIFF格式放置64位IV,encryption,aes,smooth-streaming,Encryption,Aes,Smooth Streaming,这些文件似乎没有提供答案 微软试图清楚地解释这个问题,但仍然模棱两可。至少在我们的情况下 我们有一个加密的MP4流。它包含“SampleEncryptionBox”es或“PIFF”框,其中包含加密块的8字节=64位初始化向量。但是:用于解密“AES-128计数器模式”加密视频数据的实际“计数器块”为128位。我不知道要把静脉注射放在哪里 表示16字节IV是AES-CTR模式的整个计数器块(显然)。此外,对于AES-ECB模式,8字节IV放在计数器块的开头(第17页)。但是对于AES-CTR模

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

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

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

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

  • 表示128位应包含4字节Nonce+8字节IV+4字节计数器。并且Nonce值应该取自为主128位AES密钥提供的额外4字节。我只能通过保护头获得128位密钥,我应该在哪里获得4字节的Nonce


任何额外的知识都将不胜感激。

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

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


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

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

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

AES-ECB模式与此无关