密码学中的AEAD(authenticated encryption with associated data)

AEAD(authenticated encryption with associated data):关联数据的认证加密,顾名思义,除可提供对密文数据的隐私、完整性和真实性保证外,还可提供对未加密的关联数据的完整性保证。常用的关联数据通常包括消息的长度和消息的编码方式。

AEAD为AE的变种,可让receiver验证所收到消息中已加密和未加密信息的完整性。任何企图将有效加密信息与不同上下文结合的篡改都可通过AEAD发现。

AEAD的实现步骤为:

  • 通过密钥key对消息加密,通过增加随机数来保证隐私;
  • 计算一个认证标签,通过该认证标签可保证一条消息中加密和未加密的部分均未被篡改。

常用的AEAD加密算法主要有:
密码学中的AEAD(authenticated encryption with associated data)_第1张图片
libsodium中,对AES256-GCM和ChaCha20-Poly1305 这两种常用的算法做了支持。

libsodium中AES256-GCM算法的实现,需依赖Intel SSSE3指令集及aesnipclmul等指令来进行硬件加速。对于不依赖于硬件的纯软件实现,容易有cache-collision timing attacks。

对于不支持SSSE3指令集的硬件平台,可采用ChaCha20-Poly1305算法,该算法对timing攻击不敏感。

参考资料:
[1] https://cryptography.io/en/latest/hazmat/primitives/aead/
[2] https://zh.wikipedia.org/wiki/%E8%AE%A4%E8%AF%81%E5%8A%A0%E5%AF%86
[3] https://en.wikipedia.org/wiki/Authenticated_encryption
[4] https://s.org/en/spec/AEAD-Ciphers.html
[5] https://libsodium.gitbook.io/doc/secret-key_cryptography/aead

你可能感兴趣的:(密码学中的AEAD(authenticated encryption with associated data))