密码在对称加密中的用途是什么?



我找到了用于加密某些数据的Python包,并在Python Cryptography:中看到了这一点

可以将密码与Fernet(对称密钥)一起使用。要做到这一点,您需要通过密钥派生函数运行密码,如PBKDF2HMAC、bcrypt或scrypt。

但是,事实证明,密码的工作方式与密钥相同(使用password/key来打开/解密)。那个么,为什么要麻烦使用密码而不是密钥本身呢?

我的意思是为什么不直接使用密钥本身:

from cryptography.fernet import Fernet
key = Fernet.generate_key()
token = Fernet(key).encrypt(b"my deep dark secret")
Fernet(key).decrypt(token)

密码是一个人可以记住的东西,而密钥通常不会被记住,因为它很长(至少128位或十六进制编码为32个字符),并且应该是真正随机的(与随机噪声无法区分)。如果你想用密钥加密东西,但这个密钥不能通过非对称加密传输,而是应该通过电话提供,或者永远不应该写在任何地方,那么你不能简单地生成一个随机密钥并使用它。您需要有一个密码/密码短语来从中派生密钥。

示例1:

像KeePass这样的个人密码保险箱需要一个加密/解密密钥。用户将无法简单地记住该密钥,因此我们有一个更短的密码,可以记住。现在,安全性在于使用slow密钥派生函数从密码派生密钥,因此即使密钥依赖于更短的密码,攻击者仍然很难强行使用密钥。

示例2:

您压缩文档并使用压缩软件的加密。现在你可以通过电子邮件发送容器,但不能同时发送密码。所以,你可以打电话给你发送电子邮件的人,告诉他们密码。通过这种方式,密码比长而随机的密钥更容易传输。

相关内容

  • 没有找到相关文章

最新更新