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

What's the purpose of a password in symmetric cryptography?

我找到了 Python 包来加密一些数据,并在 python 密码学中查看 this

It is possible to use passwords with Fernet(symmetric key). To do this, you need to run the password through a key derivation function such as PBKDF2HMAC, bcrypt or scrypt.

但是,事实证明密码的工作方式与密钥相同(使用 password/key 到 en/decrypt)。那么为什么要费心使用密码而不是密钥本身呢?

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

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

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

示例 1:

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

示例 2:

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