首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Salsa20+Poly1305是个广告吗?

Salsa20+Poly1305是个广告吗?
EN

Cryptography用户
提问于 2020-04-01 10:36:16
回答 4查看 1.3K关注 0票数 2

我看到Chacha20Poly1305、XsalsaPoly1305和AES GCM在文献和实现中经常被使用和提及,作为AEAD密码器。我的问题是,Poly1305提供身份验证,Salsa20提供加密,两者的结合是否可以被认为是AEAD?虽然它不是一个标准,但它在技术上是否符合“广告”的定义?

EN

回答 4

Cryptography用户

回答已采纳

发布于 2020-04-01 15:55:38

是的,它可以实现为一个AEAD密码,虽然通用的定义使用ChaCha20代替。ChaCha是一个带有扩散性稍好,性能较好的密码,两个密码都是由Daniel编写的。如果您想使用Salsa,那么只需将ChaCha20替换为Salsa20 --但我不想这样做。

例如,ChaCha20 / Poly1305是在引用RFC 8439: IETF协议的IETF 20和Poly1305,第2.8节 (定义AEAD_CHACHA20_POLY1305 )的TLS 1.3密码套件中实现的。广泛使用的RFC是标准化的明确标志。

票数 6
EN

Cryptography用户

发布于 2020-04-01 12:32:34

当然,它是用来做广告的!

AEAD是指使用相关数据进行认证的加密。

它为您的加密提供了机密性和真实性,这意味着数据是加密的,任何人都不能更改任何数据。如果进行了更改,将在验证过程中检测到。

ChaCha、Salsa (包括它们的eXtended当前版本)都是流密码,而Poly1305是为加密的数据以及未加密的关联数据提供完整性的身份验证机制。

ChaCha/Salsa基于CPU友好的Add旋转Xor置换,类似于推荐的20轮混合后的散列函数,将混合状态与初始状态相加( mod \ 2^{32} )以获得输出状态。这种结构使其不可逆转,目前还没有已知的攻击。

它们以及Poly1305消息认证码都是由著名的密码学家Daniel (也称为DJB)发明的,他还发明了使用Curve25519实现ECDH的著名的X25519密码系统。这两个流密码被提交到eSTREAM竞赛,他们已经经受住了时间的考验。甚至像谷歌这样的公司也将Chacha20-Poly1305纳入TLS的实施中。他们现在甚至在他们的磁盘加密项目中使用它,为什么呢?这是因为Salsa和ChaCha都能抵抗侧通道攻击,并且很容易在软件中实现。此外,使用64位计数器,您可以加密1 Zettabyte的数据安全。但是,如果同时使用Poly1305,则只能对16000个Peta的2^{64}字节进行身份验证。但是,如果使用AES GCM,则使用相同密钥的身份验证只限制在大约64 GB的加密范围内,而标准只提供96位的即时加密!此外,AES非常慢,如果完全在没有硬件加速的软件中实现,并且如果使用查找表实现,也容易发生缓存定时攻击。

  • 建议在Poly1305中使用20轮XChaCha/XSalsa。使用eXtended版本要好得多,因为您可以使用来自高熵源的随机值。
  • 使用ChaCha/Salsa加密是可并行的,与Poly1305相同的情况下,身份验证也是可并行的。
  • Poly1305根据您的秘密密钥为您的消息计算16字节的身份验证标记。该标签由消息的接收者重新计算,该消息的接收者知道秘密密钥并在解密前验证接收的数据。强烈建议在ChaCha/Salsa中使用类似于Poly1305的MAC,因为使用流密码加密的数据会受到恶意的位翻转攻击。
  • ChaCha20比Salsa20提供更多的扩散。
  • 伯恩斯坦自己创作了Xsalsa20,并基于XSalsa20的S设计,S. Arciszewski制作了XChaCha20
  • Poly1305的安全性取决于底层密码。伯恩斯坦最初提出AES - Poly1305是因为当时AES很受欢迎,

如果AES是安全的,AES -Poly1305也是安全的,因此,如果Chacha20 20/ Salsa20是安全的,那么Chacha20 20/Salsa20 20 Poly1305也是安全的!因此,您可以使用任何安全的底层密码与Poly1305!多棒啊!?请参阅:https://www.google.com/url?sa=t&source=web&rct=j&url=https://cr.yp.to/mac/poly1305-20050329.pdf&ved=2ahUKEwj0ye6uqsfoAhUZxTgGHYz0C3MQFjABegQIBBAC&usg=AOvVaw0k5Ix8nCShQGuBM6QbEAoD

请参阅XChaCha20 poly1305 IETF的更多信息(32位计数器):https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha-03

参见Google关于使用Chacha20 Poly1305:https://security.googleblog.com/2014/04/speeding-up-and-strengthening-https.html?m=1的博客文章

谷歌的铁线蕨(用于磁盘加密使用XChaCha20 poly1305):https://security.googleblog.com/2019/02/introducing-adiantum-encryption-for.html?m=1

丹尼尔·伯恩斯坦关于XSalsa20:https://www.google.com/url?sa=t&source=web&rct=j&url=https://cr.yp.to/snuffle/xsalsa-20081128.pdf&ved=2ahUKEwiB2ff7o8foAhVRzDgGHW9BCG0QFjADegQIAxAB&usg=AOvVaw3pfOfep6cl9gtvXr-xP9I4的原始论文

有关原始Chacha20和Salsa20:https://en.m.wikipedia.org/wiki/Salsa20的更多信息,请访问维基百科页面

票数 3
EN

Cryptography用户

发布于 2020-04-02 07:45:04

我的问题是,Poly1305提供身份验证,Salsa20提供加密,两者的结合是否可以被认为是AEAD?

有很多方法可以将两者结合起来,有些是AEAD,有些则不是。例如:

  • RFC 8439 (“IETF协议的ChaCha20和Poly1305”)指定ChaCha20和Poly1305的组合,这是一个AEAD。您可以将Salsa20与Poly1305以完全类似的方式结合在一起,您也可以得到一个AEAD。
  • NaCl库它更受欢迎的衍生产品锂钠实现了XSalsa20 (一个Salsa20变体)的组合,它提供了经过身份验证的加密,但没有关联的数据。所以这是一个AE,而不是一个AEAD。
  • 如果你“自己滚”,那就很容易,例如,在一个有缺陷的组合中,一个对手可以把真实的AD和Salsa20输出和一个假的现在结合起来,而诚实的人不会发现它。( RFC 7539结构通过为每个密码密钥+n对导出一次MAC密钥来避免这种情况;另一种方法是将密码名合并到MAC输入中)。

所以你的问题的答案是肯定的,但前提是组合是正确的。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/79599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档