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
Run Code Online (Sandbox Code Playgroud)
和
gpg --import alice.personal.public.key.txt
gpg --import alice.personal.private.key.txt
Run Code Online (Sandbox Code Playgroud)
因此,为了方便起见,她决定将她加密的个人文件 ( 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 或 …
有时我需要加密文件、加密签名等。GNU PG 和 PGP 是很好的工具,但我怎样才能让它们在 Windows 上工作?当我尝试搜索安装程序时,我得到了很多不同的选项,但不清楚我真正需要哪个软件!此外,在一半的网站上,我什至不清楚我需要下载哪些文件。
我想将我的整个公共钥匙串发送给我的一个朋友(并出于显而易见的原因将其备份)并想将其导出到一个单独的块中,就像 GPA 所做的那样。如果使用我自己的私钥签名,则奖励积分。
我有一个朋友,他有一个 OpenPGP 密钥,我很高兴有人给我写加密邮件。然而,3 年后,他的密钥上个月刚刚过期,现在 Thunderbird(带有 Enigmail 插件)不允许我再加密邮件。
我想知道:技术上,使用过期的密钥来加密消息应该没有问题吗?
我已经通知他他的密钥已过期,但他最近得到了他的第一个儿子,并告诉我他目前没有时间更新他的密钥(你知道,伪造主密钥,启动安全的实时系统等。pp.)。我完全理解这可能需要一些时间,直到他找到时间来做这件事。
但是,现在 Thunderbird 不允许我再加密消息,因为他的密钥已过期。我想知道,更糟糕的是,过期的密钥还是未加密的邮件?
是否可以使用过期的 OpenPGP 密钥向用户发送加密消息?
我来自使用带有 OpenSSL 的普通旧 RSA 来满足我所有的非对称加密需求,我学到了相当多的知识,但是我很难围绕 OpenPGP 协议进行思考。因此,这将是几个问题。
在我的 Debian 盒子中,使用 GnuPG,在当前钥匙串中创建主密钥时,我注意到子密钥的默认创建。在阅读了一些之后,我了解到 GnuPG 以这种方式自动管理密钥;严格用于签名的主密钥和严格用于加密的子密钥。这让我相信他们只是为私钥和公钥使用了不同的名称:主密钥(如私钥)用于签署只有子密钥(公钥)可以解密的数据,但子密钥(公钥)只能加密数据,然后只能通过主密钥(私钥)解密。我在这个假设中是否正确,还是它们完全是 2 个单独的密钥对?
如果它们是两个单独的密钥对,那么什么在数学上将子密钥绑定到主密钥?
是否只是 GnuPG 使用这种方法,其中会自动创建子密钥以进行加密,还是 OpenPGP 协议强制要求这样做?
当我将密钥上传到密钥服务器时,上传的是哪个密钥,我的主密钥还是子密钥?或两者?
当我使用该--export功能时,当我指定我的 UID 时会导出哪个 OpenPGP 密钥?
我不止一次阅读建议,在我的 OpenPGP 证书中使用主密钥对仅用于签署子密钥对而不用于一般日常使用(甚至将私钥存储在未启用网络的 PC 上以供额外使用)安全)。我最近注意到我的证书中的每个密钥对都有一些标志,这些标志定义了它必须专门用于什么目的。据我目前了解(无法找到文档),签署子密钥对的过程将通过A(用于身份验证)描述。
在我新生成的证书中,我的主密钥对具有使用标志SC(签名和认证)。现在使用 GnuPG 命令行工具更改子键的这些标志非常容易,但我找不到任何方法来修改主键对的使用标志。
我希望能够做的是将主密钥对限制为只能在我的证书中签署和撤销其他子密钥对。谁能告诉我这是否可能以及如何做到这一点?
我已经用 PGP 加密了一个文件,但出于“安全原因”,我认为最好损坏标头并添加一些额外的字节,这样即使有人发现它也不会确定它是 PGP 文件作为解密检查会失败。
问题是现在我不记得我添加了哪些额外的字节。有什么方法可以“强制”解密或清理文件/删除额外的字节?
更新:
我已经使用 Jens 提供的脚本来删除字节,直到我收到输入密码的提示。不幸的是,我记得的密码似乎不起作用。此外,如果我在第一个提示后继续删除字节,我仍然会不时收到密码提示,所以我想知道该方法是否真的有效。看下面的日志
./a.bh
Trying bytes: 1
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 2
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 3
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 4
gpg: [don't know]: indeterminate length for invalid packet type 4
Trying bytes: 5
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof …Run Code Online (Sandbox Code Playgroud) 我使用 gpg 创建了一个密钥对。我知道生成了一个仅用于签名的主密钥和一个仅用于加密的子密钥。在Debian Wiki 之后,我创建了一个子密钥来进行签名以提高安全性,并将我的主密钥埋在森林中。
但是,我对宣传什么以及如何告诉人们使用我的子密钥进行验证感到困惑。首先,我已将我的密钥上传到 subkeys.pgp.net。但是我看到有人在他们的网站上公开指纹,但是我应该对我的两个签名密钥都这样做,并将其中一个标记为主密钥,另一个标记为子密钥吗?
gpg 命令“ --enarmor ”或“ --enarmour ”
gpg2 --enarmor /home/none/testing.asc
Run Code Online (Sandbox Code Playgroud)
创建一个具有 .gpg 扩展名的文件,例如:
-----BEGIN PGP ARMORED FILE-----
Comment: Use "gpg --dearmor" for unpacking
LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEE1MTIK
CkhTSU5EIFpVUEROIFFKRUVNIFdEVVhJIEpTV1VYIGV0Yy4KLS0tLS1CRUdJTiBQ
R1AgU0lHTkFUVVJFLS0tLS0KCmlMZ0VBUk1LQUIwV0lRUXRLVW5uSjhxQzlhRDlN
d2wrcjltT05SRDZJd1VDV3lYaWlnQUtDUkIrcjltT05SRDYKSXhZeUFna0JwWDFz
WmY0cG54WVpZa0ExSkhPekkwdzNaZmpZS09PT0h2OWRGM3FVSHcvUXhuQWlYMGJ2
T3ZoeAovZ2Fnb0lEbzdBa3RNd0lRV05HQ1ZIUDlwZUZsQ1lVQ0IyQUpCUlVtdDZQ
a284YWkwSkRoaDNuQWovTDNaU3pBCk5kU1RjQXphTzZCaytQVW90NHYvdTVsd2Vo
N3NxUHFNWTY5YWlRYUtXcHVWbHY2MkZxSU9tRmpMCj1xUjRxCi0tLS0tRU5EIFBH
UCBTSUdOQVRVUkUtLS0tLQo=
=z8/a
-----END PGP ARMORED FILE-----
Run Code Online (Sandbox Code Playgroud)
来自文件,例如:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
HSIND LUPDN QJEEM WDUXI RBAYO etc.
-----BEGIN PGP SIGNATURE-----
iLgEARMKAB0WIQQtKUnnJ8qC9aD9Mwl+r9mONRD6IwUCWyXiigAKCRB+r9mONRD6
IxYyAgkBpX1sZf4pnxYZYkA1JHOzI0w3ZfjYKOOOHv9dF3qUHw/QxnAiX0bvOvhx
/gagoIDo7AktMwIQWNGCVHP9peFlCYUCB2AJBRUmt6Pko8ai0JDhh3nAj/L3ZSzA
NdSTcAzaO6Bk+PUot4v/u5lweh7sqPqMY69aiQaKWpuVlv62FqIOmFjL
=qR4q
-----END PGP SIGNATURE-----
Run Code Online (Sandbox Code Playgroud)
有人可以澄清这个命令的目的以及它的具体作用吗?
是否可以将密钥管理器中的公钥分配给特定电子邮件地址,以便当该电子邮件地址位于“收件人”字段中时,Thunderbird 78.6.0 自动使用该密钥进行加密?
我希望 Thunderbird(后来缩写为 TB)加密发送给我朋友(firstname@domain.com)的电子邮件。我有一个分配给他的名字的证书,但该证书没有电子邮件设置。当我运行 enigma 时,我可以在发送电子邮件时选择要使用的证书,Enigma (IIRC) 会询问我是否想让此分配永久化(“每个收件人”证书分配或类似的内容)。我经常说“不”,然后下次也必须手动选择证书。
在我给名字写了一封电子邮件后,Thunderbird 首先说“无法使用端到端加密发送此邮件,因为以下收件人的密钥存在问题:firstname@domain.com ...可以吗?”
好的!(我点击)然后它说“为了发送......你必须获得并接受......”并且甚至没有提供证书列表(我已经获得并接受)以便我可以选择一个。它列出了收件人(只有firstname@domain.com),我可以选择它并单击“管理所选收件人的密钥”。没有需要管理的密钥,也没有关于如何选择密钥(已经在我的证书列表中)的线索!
也许我是盲目的,或者也许当他们将 Enigma 直接构建到 Thunderbird 中时,他们做了一些错误的假设或忘记包含此功能。如何告诉 Thunderbird firstname@domain.com 应使用我已有的名字证书?
pgp ×10
gnupg ×7
encryption ×4
certificate ×2
thunderbird ×2
expired-key ×1
openpgp ×1
rsa ×1
windows ×1