gpt4 book ai didi

security - 使用密码和种子进行加密时哪种过程更安全

转载 作者:行者123 更新时间:2023-12-01 18:03:28 24 4
gpt4 key购买 nike

我正在为加密应用程序设计一个程序和文件格式。当我需要就加密的方法/工作流程做出决定时,我遇到了这样的情况。我无法决定使用一种方法相对于另一种方法的利弊。

以下是格式结构的概述:

------------------------------------------| File signature || fixed    | plain     ||----------------||----------|-----------|| Algorithm info || fixed    | plain     ||----------------||----------|-----------|| Seed           || fixed    | encrypted ||----------------||----------|-----------|| Data           || variable | encrypted ||----------------||----------|-----------|| CRC            || fixed    | encrypted |------------------------------------------

最初,我将使用 SHA-256 作为哈希函数,使用 AES-256 作为加密算法,但稍后它将是可配置的,因为格式建议。

创建加密容器的建议程序:

  1. 哈希(密码)=> key 密码
  2. 生成随机种子
  3. key 传递异或种子 => key 种子
  4. 使用 key 密码加密种子并存储加密的种子
  5. 使用 key 种子加密数据并存储加密数据
  6. 使用 key 种子加密 CRC 并存储加密的 CRC

问题

A. 存储加密的种子和 CRC 能带来什么好处吗?如果我不加密存储它们,安全性会降低吗?

B. 使用 [ Hash(Password + Seed) ] 进行 key 生成与使用 [ Hash(Password) XOR Seed ] 作为最终 key 相比,在安全性上或多或少或没有区别?

C. 以上两个问题的结论性问题。使用替代过程创建加密容器是好是坏:

  1. 哈希(密码 + 种子)=> key
  2. 存储未加密的种子
  3. 使用 key 加密数据并存储加密数据
  4. 存储未加密的 CRC(或加密的)

我想我必须存储未加密的种子,以便在读回加密内容时重新生成 key 。 CRC 可以是加密的,也可以是未加密的。

最佳答案

构建您自己的加密文件格式总是很困难(并且有风险)。

key 生成请使用PBKDF2,而不是滚动您自己的 key 生成例程。 (PKCS #5 v2.0, RFC 2898 ) 生成 key 。这将要求您以未加密的格式存储盐(您称之为种子)。

CRC 存储如果您已经达到使用加密的水平,请不要使用 CRC 进行完整性检查。您已经计划在其他地方使用 SHA256,也可以将其用于完整性检查。 (我建议对未加密的数据进行哈希处理并以未加密的方式存储哈希值,尽管您可以根据需要对其进行加密。)

关于security - 使用密码和种子进行加密时哪种过程更安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com