Alice 和 Bob 各自使用 gpg 只是为了保护自己的个人文件,而不是将其用作向他人发送加密文本的方式。Alice 已生成一个密钥 ( gpg --gen-key
),用于加密/解密她的个人文件 (gpg --encrypt --recipient="Alice Personal" alice.secrets.txt
和gpg --decrypt alice.secrets.txt.gpg
)。她知道,为了alice.secrets.txt.gpg
在另一台计算机上读取和写入,她需要将她的密钥(公钥和私钥)导出到她的第二台计算机,使用以下命令:
gpg --armor --export "Alice Personal" > alice.personal.public.key.txt
gpg --armor --export-secret-key "Alice Personal" > alice.personal.private.key.txt
和
gpg --import alice.personal.public.key.txt
gpg --import alice.personal.private.key.txt
因此,她决定将加密的个人文件(alice.secrets.txt.gpg
)和密钥(alice.personal.public.key.txt
和alice.personal.private.key.txt
)放在云同步服务上以方便使用。由于alice.personal.private.key.txt
位于云上,因此有权访问她在云上的文件的第三方可以访问以下两个文件中的第一个,但不能访问第二个。
她有的东西:alice.personal.private.key.txt
她知道的东西:解锁密钥的密码
为了方便起见,她放弃了保护第一的权利。
另一方面,Bob 使用对称加密来保护他的秘密(gpg --symmetric bob.secrets.txt
和gpg --decrypt bob.secrets.txt.gpg
)。他还将加密的个人文件放在云服务上。要在另一台计算机上读取和写入bob.secrets.txt.gpg
,他只需成功回忆起密码即可。
也许 Alice 和 Bob 应该使用 Truecrypt 或 Boxcryptor。无论如何,问题是,如果 Alice 和 Bob 的密码同样好,那么 Alice 的秘密是否和 Bob 的秘密一样安全?
答案1
Alice 的方法比 Bob 的方法稍微安全一些。每个加密文件都会获得一个新的对称密钥,这意味着:
- 您必须为每个文件单独破解对称密钥,而不是一次破解,而且这些密钥通常比正确的 RSA 密钥更容易破解(较低的密钥空间可实现更高的性能,因为我们不能在每条新消息(无论是文档还是连接)上浪费时间,并且 RSA 不必在生成密钥后就高效,因为我们通常使用它来加密用于文档其余部分的对称密钥)。
- 当加密文件和未加密文件都已知时,您可能会避免攻击。如果 Eve 知道文件的原件和为 Alice 加密的版本,那么可能更容易找到密钥并将其用于所有其他文件。
- 你可以通过了解许多加密消息来避免可能存在的攻击,这些加密消息可能类似于我们已经知道 RSA 和低指数。
答案2
根据 GPG 文档:
- 要加密文档,
--encrypt
请使用此选项。您必须拥有预期收件人的公钥。- 要解密消息,
--decrypt
请使用该选项。您需要加密该消息的私钥。
在您描述的场景中,Alice 的秘密没有受到保护,不会被 Mallory 覆盖,因为加密文件只需要她的公钥,而公钥不受密码保护。解密文件时才需要她的私钥。
因此,马洛里可以创建恶意加密文件,而爱丽丝可以在意识到文件被篡改之前成功解密。
如果 Alice 选择不共享她的公钥,那么她的秘密的安全性就只能与用于保护她的私钥的对称加密算法和密码一样安全。(请记住,Alice 会自动使用对称加密和密码来保护她的私钥)