我已经看到针对不同加密硬件引擎的AES(CTR)模式的多个开源驱动程序,我不太确定计数器大小,nonce等。 请任何人提供以下
的一些信息AES驱动程序在CTR操作模式下如何识别计数器大小?
在点击模式下看起来像AES支持"反对"多种长度如下:
1:首先是一个由nonce和counter组成的计数器。随机数是随机的,其余字节是计数器字节(递增)。 例如,一个16字节的块密码可能使用高8字节作为nonce,而低8字节作为计数器。
2:秒是计数器块,其中所有字节都是计数器字节,并且可以在生成进位时递增。 例如,在16字节的块密码中,所有16个字节都是计数器字节
Linux Kernel Crypto子系统是否会为每个输入块增加计数器值,还是需要内核驱动程序为相应的Crypto H / W进行处理?
计数器和随机数是从IV中提取的东西,即IV = nonce + counter。注意如果" l"是IV的长度然后是第一个" l / 2"是nonce和next的长度" l / 2"是反对的长度。如果我对IV,计数器和nonce的理解是否正确,请告诉我?
有关上述内容的任何信息都非常明显。
BR, &安培; Sanumala
答案 0 :(得分:1)
AES驱动程序在CTR操作模式下如何识别计数器大小?
很可能不会。只要它将IV视为一个大的128位计数器,那么就没有问题。如果计数器是64位并在所有零上初始化,那么在2 ^ 64 = 18,446,744,073,709,551,616(16字节)数据块之后你只会遇到问题;那不太可能发生。
Linux Kernel Crypto子系统是否会为每个输入块增加计数器值,还是需要内核驱动程序为相应的Crypto H / W进行处理?
内核驱动程序需要注意。我只在API中看到IV作为输入。这对于加密API来说通常就是这种情况。如果必须为要加密的每个16字节更新计数器,则无法获得任何性能。
计数器和随机数是从IV中提取的东西,即IV = nonce + counter。注意如果" l"是IV的长度然后是第一个" l / 2"是nonce和next的长度" l / 2"是反对的长度。如果我对IV,计数器和nonce的理解是否正确,请告诉我?
是的,你理解正确。如果协议使用单独的随机数和计数器并且两者是随机生成的,则只会出现问题。在这种情况下,您可能会遇到从计数器到nonce字段的进位问题。
请注意,最好将数据大小限制为,例如~68 GB,并将前12个字节用作随机数,以避免被生日问题所困扰。