Poly1305
Poly1305是由丹尼尔·J·伯恩斯坦设计的密码学消息认证码(MAC)。它可用于验证数据完整性和消息真伪。不依赖AES的Poly1305变种已由互联网工程任务组在RFC 8439中标准化。
概述
在原始提案中,Poly1305使用AES分组密码来扩展密钥(Poly1305-AES)。在NaCl中,Poly1305使用Salsa20替代AES,在TLS和SSH中,它与ChaCha20密钥流一起使用。
Google选择了伯恩斯坦设计的,带Poly1305消息认证码的ChaCha20,作为OpenSSL中RC4的替代品,用以完成互联网的安全通信。[1]Google最初实现了HTTPS (TLS/SSL)流量在Chrome浏览器(Android手机版)与Google网站之间的通信。[2]
不久之后,Google在TLS中采用它,ChaCha20和Poly1305算法也以 chacha20-poly1305@openssh.com 成为OpenSSH中的一个新密码包。[3][4]后来,通过编译时选项避免它依赖于OpenSSL也成为可能。[5]ChaCha20-Poly1305的使用已在RFC 7905中标准化。
实现
以下是支持Poly1305的加密库列表:
- Botan
- Bouncy Castle
- Crypto++
- Libgcrypt
- libsodium
- Nettle
- OpenSSL
- GnuTLS
- LibreSSL
- mbedTLS
- wolfCrypt
参考文献
- ^ draft-ietf-tls-chacha20-poly1305 The ChaCha20-Poly1305 AEAD Cipher for Transport Layer Security
- ^ Google Swaps Out Crypto Ciphers in OpenSSL (页面存档备份,存于互联网档案馆), InfoSecurity, April 24, 2014
- ^ Miller, Damien. ssh/PROTOCOL.chacha20poly1305. BSD Cross Reference, OpenBSD src/usr.bin/. 2013-12-02 [2014-12-26]. (原始内容存档于2014-12-27).
- ^ Murenin, Constantine A. Unknown Lamer , 编. OpenSSH Has a New Cipher — Chacha20-poly1305 — from D.J. Bernstein. Slashdot. 2013-12-11 [2014-12-26]. (原始内容存档于2021-03-09).
- ^ Murenin, Constantine A. Soulskill , 编. OpenSSH No Longer Has To Depend On OpenSSL. Slashdot. 2014-04-30 [2014-12-26]. (原始内容存档于2016-06-24).
外部链接
- Poly1305-AES(页面存档备份,存于互联网档案馆) reference and optimized implementation by author D. J. Bernstein
- Fast Poly1305 implementation in C(页面存档备份,存于互联网档案馆) on github.com