首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了AES之外,哪种算法是用于大规模文件加密的最佳算法?

除了AES之外,哪种算法是用于大规模文件加密的最佳算法?
EN

Cryptography用户
提问于 2020-03-26 14:07:29
回答 1查看 602关注 0票数 2

我一直在寻找一种快速、强大和健壮的算法来加密大文件的身份验证。我想在不使用第三方软件的情况下自己实现算法。我使用了不同的AES模式,但是软件实现很容易受到侧通道攻击。此外,最常用的AES 256 GCM有一个加密,认证大小限制为64 GB。我尝试过其他著名的密码,如XChaCha20 20/ XSalsa20和poly1305,但我无法绕过它们各自的大小限制(我只能用XChaCha20- Poly1305 - IETF版本加密256 GB )!

  • 是否有一个足够强大的密码,除了上述,我可以使用大规模加密与身份验证?
  • 我应该对现有的算法(如Xchacha20 / XSalsa20和Poly1305 )进行哪些修改,以便对身份验证进行无限加密?
EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-03-26 17:27:38

您不应该像对大文件只是一条消息一样对它们进行加密;您应该将它们分割成小块,用一个AEAD分别对每个块进行加密,使用如下构造:

  • 防止修改、重新排序、插入和删除块;
  • 保护文件不被截断;
  • 一旦单个键处理了太多的数据,就会旋转键。

原因之一是加密库通常是实现的,因此您需要内存中的整个消息来加密它。另一个原因是,工具的用户通常期望输出将以增量方式产生(这样他们就可以将其输送到其他工具),但是典型的AEAD密码要求您永远不要输出伪造密文的解密,因此,将整个文件加密为一条消息需要在生成任何输出之前对整个文件进行身份验证。(并不是说输出伪造的真确前缀总是安全的。)

请参见:

一旦您采用了这个范例,您所关心的密码中的消息长度和密文大小限制就不再重要了,因为每一个您只对短消息进行加密,如果您超过了单个密钥的密文限制,您就可以按密钥旋转构建。例如,指向上面的i链接提供了以下特性:

  • 棘轮:在流中的任何一点上,都有可能“忘记”用于加密先前消息的密钥,并切换到新密钥。

因此,如果您只需要统计处理了多少数据,并在库接近极限时指示它rekey,那么正如文档所指出的,“流的总长度没有实际限制”。

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

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

复制
相关文章

相似问题

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