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

AEAD(authenticated encryption with associated data),即关联数据的认证加密,它不仅保护加密数据的隐私、完整性和真实性,还确保未加密关联数据的完整性。本文介绍AEAD的工作原理,实现步骤,以及常用算法如AES256-GCM和ChaCha20-Poly1305的特性。

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

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

AEAD的实现步骤为:

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

常用的AEAD加密算法主要有:
在这里插入图片描述
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://shadowsocks.org/en/spec/AEAD-Ciphers.html
[5] https://libsodium.gitbook.io/doc/secret-key_cryptography/aead

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值