在https://www.rfc-editor.org/rfc/rfc7539#section-2.8.1中描述的aad方案中,aad和密码文本被填充为长度为16个字节的倍数。为什么有这个必要?与不填充数据相比,它有什么优势吗?
发布于 2019-02-13 13:28:19
使用Poly1305的身份验证需要填充;填充不会扩展密文。Poly1305操作在128位的块上。填充是为了使Poly1305能够始终处理完整的输入块。之后,填充物被丢弃-它不与密文一起保存。
在验证期间,填充将被重新应用,否则计算的身份验证标记将与保存在/ is中的验证标记不完全相同。
在Poly1305的情况下,似乎附加的经过身份验证的数据(AAD或仅AD)是单独填充的,而不是将两者连接起来并填充两者的组合。这使得可以独立于身份验证标记的密文组件计算AAD组件,正如牛丹玉的回答所指出的那样。
注意,在实践中,将在Poly1305函数的实现中使用单个块输入缓冲区。实现将填充缓冲区而不是实际输入。丢弃包括清除缓冲区--如果缓冲区被清除,它也可以忽略缓冲区中的数据。
发布于 2019-01-13 12:06:24
它提供的一个优点是,在为密文计算验证器之后,可以计算关联数据的验证器,在计算时可能无法完全使用。
尽管按照规范,您应该在调用加密API时准备好所有的数据,ChaCha20-Poly1305被设计为一种“高吞吐量”的AEAD模式,就像GCM一样,这将使这种计算成为可能。
https://crypto.stackexchange.com/questions/66450
复制相似问题