繁体   English   中英

加密:当我甚至根本不存储密钥时,是否需要加密密钥?

[英]Encryption: do I need to salt the key when not even storing it at all?

我在网上搜索过,包括SO:在散列和存储它们之前需要对密码进行密码讨论。

如果密码用于计算用于加密的密钥(“基于密码的加密”):如果您不将密码存储在al?

假设:

用于加密

  1. 用户输入主密码
  2. 这是SHA256哈希,输出用于AES256加密文件
  3. 哈希存储(显然也不是主密码)

用于解密

  1. 用户输入主密码
  2. 这是SHA256哈希,输出用于解密文件
  3. 如果解密成功,密码显然是正确的

我的问题:

如果没有存储除加密文件本身以外的任何内容,那么在对主密码进行哈希处理之前,有什么好处吗?

注意事项:

  • 它可能会降低哈希冲突的可能性
  • 它需要储存盐。
  • 如果盐丢失/损坏,用户将无法再解密该文件

  • 如何在步骤3中检查成功解密:这是否需要知道部分文件内容?

  • 如果是这样,有多少虚假的人在加密文件中存储已知值(这不能总是被阻止 - 攻击者可能会猜测例如用户的姓氏在文件中的某处被加密 - 这是正确的)。

如果您没有存储主密码,则无需加密。 如果您重复使用主密码生成大量一次性密码,则需要根据需要对其进行加密和解密存储。

Salting用于长期存储必须匹配多次的用户密码,以便具有相同密码的人不具有相同的散列,这将有助于窃取该文件的攻击者。

Salt用于长期存储中的散列,IV用于使用CBC模式进行加密(或CTR模式,其也可以称为nonce)。

至于检查您的文件是否已正确解密,只需确保使用像PKCS7这样的填充。 当最后一个块被解密时,将检查填充以确保其格式正确。 如果解密失败,则填充将无法正确格式化,您应该收到“填充失败”错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM