你如何通过密钥服务器交换密钥?
工作示例非常适合发送和查找+检索。
我知道gpg --send-keys是命令,但是您如何找到 keyid(尝试了 - 的所有输出--list-keys)。--keyserver keys.gpugp.net使用--send-keys但不使用--search-keys(说坏 uri)。我应该发布哪些密钥?要发布到哪个密钥服务器。尽管是一个非常简单的程序,但 gnugp 文档很糟糕(链接断开,信息丢失)。
当使用 GnuPG 清除签名文本时,签名消息中有一个哈希部分。举个例子:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
abc
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEEZZvqE5j3koIxs9Xim0+E4a5Vo2cFAlkRdvQACgkQm0+E4a5V
o2ew2QgAzHuvZ7Hlb6+3qRLjc9Yhdi+6tBmNWXbWpKoAQxpzx6jKQp/FSpQeGWuj
RxcYnqU3pk4ycMLtaCFcfnHEW5N0B95eXGcurgMGz7A6xhy0hy25x8WBdeKVAQ+2
PLA2ytJLUn2L1S3ueqJWcdVUBRaiczOOsYvvO
...
...
-----END PGP SIGNATURE-----
Run Code Online (Sandbox Code Playgroud)
但是对于不同的密钥(或服务器),哈希算法是不同的,有时是 SHA1,有时是 SHA256、SHA512。
是什么决定了这一点,关键还是 GnuPG 客户端?我找不到这方面的信息,当您使用gpgcreate new keys 时,没有指定哈希算法的选项。
更新:为了澄清我的问题,我在下面添加了更多信息。用于生成上面示例输出的命令是:
gpg --clearsign
Run Code Online (Sandbox Code Playgroud)
(gpg 版本在我的系统上是 gpg2。)
然后,我输入了一些随机文本,结果出现在上面。我想知道,如何生成具有特定“哈希:”值的输出?说,SHA1?
我想弄清楚如何在一个命令中执行以下操作。
我有一个 ISO 映像及其签名文件 *.sig。我试图通过 GnuPG 2 验证它,但它报告了一个丢失的公钥给我它的指纹。我已使用以下方法成功检索到密钥
gpg2 --keyserver hkp://keys.gnupg.net --recv-key <fingerprint>
Run Code Online (Sandbox Code Playgroud)
但是当我检查钥匙时
gpg2 --edit-key <KEY ID>
Run Code Online (Sandbox Code Playgroud)
其次是
gpg> check
Run Code Online (Sandbox Code Playgroud)
我收到了这条消息:
27 signatures not checked due to missing keys
Run Code Online (Sandbox Code Playgroud)
如何检索所有这些密钥以检查我获得的密钥是否可信?
我想使用 YubiKey 的 OpenPGP 接口在 Windows 10 上对我的 OpenSSH 服务器进行身份验证:
gpg --card-status
Reader ...........: Yubico Yubikey 4 OTP U2F CCID 0
Application ID ...: BEEFBEEFBEEFBEEFBEEFBEEF99990000
Version ..........: 2.1
Manufacturer .....: Yubico
Serial number ....: 99999999
Name of cardholder: John Doe
Language prefs ...: en
Sex ..............: male
URL of public key : https://example.com/pgp.asc
Login data .......: johndoe
Signature PIN ....: required
Key attributes ...: rsa4096 rsa4096 rsa4096
Max. PIN lengths .: 127 127 127
PIN …Run Code Online (Sandbox Code Playgroud)我正在安装 vagrant,并尝试按照他们的说明进行操作。我的下一步是安装他们的 PGP 公钥。我在 Windows 上,所以它不像 --recv-keys 那么简单,我需要将此代码放在某个地方:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQENBFMORM0BCADBRyKO1MhCirazOSVwcfTr1xUxjPvfxD3hjUwHtjsOy/bT6p9f
W2mRPfwnq2JB5As+paL3UGDsSRDnK9KAxQb0NNF4+eVhr/EJ18s3wwXXDMjpIifq
fIm2WyH3G+aRLTLPIpscUNKDyxFOUbsmgXAmJ46Re1fn8uKxKRHbfa39aeuEYWFA
3drdL1WoUngvED7f+RnKBK2G6ZEpO+LDovQk19xGjiMTtPJrjMjZJ3QXqPvx5wca
KSZLr4lMTuoTI/ZXyZy5bD4tShiZz6KcyX27cD70q2iRcEZ0poLKHyEIDAi3TM5k
SwbbWBFd5RNPOR0qzrb/0p9ksKK48IIfH2FvABEBAAG0K0hhc2hpQ29ycCBTZWN1
cml0eSA8c2VjdXJpdHlAaGFzaGljb3JwLmNvbT6JATgEEwECACIFAlMORM0CGwMG
CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEFGFLYc0j/xMyWIIAIPhcVqiQ59n
Jc07gjUX0SWBJAxEG1lKxfzS4Xp+57h2xxTpdotGQ1fZwsihaIqow337YHQI3q0i
SqV534Ms+j/tU7X8sq11xFJIeEVG8PASRCwmryUwghFKPlHETQ8jJ+Y8+1asRydi
psP3B/5Mjhqv/uOK+Vy3zAyIpyDOMtIpOVfjSpCplVRdtSTFWBu9Em7j5I2HMn1w
sJZnJgXKpybpibGiiTtmnFLOwibmprSu04rsnP4ncdC2XRD4wIjoyA+4PKgX3sCO
klEzKryWYBmLkJOMDdo52LttP3279s7XrkLEE7ia0fXa2c12EQ0f0DQ1tGUvyVEW
WmJVccm5bq25AQ0EUw5EzQEIANaPUY04/g7AmYkOMjaCZ6iTp9hB5Rsj/4ee/ln9
wArzRO9+3eejLWh53FoN1rO+su7tiXJA5YAzVy6tuolrqjM8DBztPxdLBbEi4V+j
2tK0dATdBQBHEh3OJApO2UBtcjaZBT31zrG9K55D+CrcgIVEHAKY8Cb4kLBkb5wM
skn+DrASKU0BNIV1qRsxfiUdQHZfSqtp004nrql1lbFMLFEuiY8FZrkkQ9qduixo
mTT6f34/oiY+Jam3zCK7RDN/OjuWheIPGj/Qbx9JuNiwgX6yRj7OE1tjUx6d8g9y
0H1fmLJbb3WZZbuuGFnK6qrE3bGeY8+AWaJAZ37wpWh1p0cAEQEAAYkBHwQYAQIA
CQUCUw5EzQIbDAAKCRBRhS2HNI/8TJntCAClU7TOO/X053eKF1jqNW4A1qpxctVc
z8eTcY8Om5O4f6a/rfxfNFKn9Qyja/OG1xWNobETy7MiMXYjaa8uUx5iFy6kMVaP
0BXJ59NLZjMARGw6lVTYDTIvzqqqwLxgliSDfSnqUhubGwvykANPO+93BBx89MRG
unNoYGXtPlhNFrAsB1VR8+EyKLv2HQtGCPSFBhrjuzH3gxGibNDDdFQLxxuJWepJ
EK1UbTS4ms0NgZ2Uknqn1WRU1Ki7rE4sTy68iZtWpKQXZEJa0IGnuI2sSINGcXCJ
oEIgXTMyCILo34Fa/C6VCm2WBgz9zZO8/rHIiQm1J5zqz0DrDwKBUM9C
=LYpS
-----END PGP PUBLIC KEY BLOCK-----
Run Code Online (Sandbox Code Playgroud)
有谁知道我应该去哪里?我正在使用 GnuPG - 不是 Gpg4win 中的任何过时软件。
我正在尝试使用 YubiKey 设置 OpenPGP 智能卡。
这是一个 YubiKey 4,所以理论上应该接受 4096 位的密钥,但我使用的是 2048 位的子密钥。
我有一个主密钥(仅设置为证书)和三个子密钥(签名、加密、身份验证),我已将其复制到 YubiKey。
我已将公钥上传到我的网站,并在智能卡中设置了公钥的 URL。
当我尝试使用 fetch 时,我收到一个错误,因为卡寻找错误的公钥。示例(使用 Windows 和 GPGWin):
Keys:
11111111 - Master Key
22222222 - Signing sub
33333333 - Encrypt sub
44444444 - Auth sub
C:\gpg> gpg2 --card-status
...
URL of public key: https://my.server/pgp.key
...
General key info: pub 2048/22222222 2016-01-09 Me <me@my.server>
sec# 4096R/11111111 created: 2016-01-09
ssb> 2048R/22222222 created: 2016-01-09
card-no: 0006 12345678
ssb> 2048R/33333333 created: 2016-01-09
card-no 0006 12345678
ssb> 2048R/44444444 created: 2016-01-09
card-no …Run Code Online (Sandbox Code Playgroud) 我需要对文件进行加密,将其发送给外部合作伙伴,然后该合作伙伴将使用密钥解密该文件。
我的“基本”理解是我可以生成公钥和私钥,使用公钥对文件进行编码,我们的合作伙伴可以使用我们提供的私钥解密。但这对我来说听起来有点奇怪,我们将共享私钥。只有一个值得信赖的合作伙伴。
我错过了什么吗?
在新系统上将我的密钥导入 GnuPG 时,我考虑了以下几点:
我找到了“GnuPG 1 和 GnuPG 2 彼此兼容吗?”的答案。,它说明了以下内容:
GnuPG 2.1 带来了一个重要的变化,它将以前分离的公共和私有密钥环(pubring.gpg 与 secring.gpg)结合到公共密钥环中。这已以保持兼容的方式实现,因此当 GnuPG 2.1 集成私钥环时,您仍然可以使用 GnuPG 1,但对私钥的更改不会显示为相应的其他实现。来自变更日志:
[...] 允许旧版 GnuPG 与 GnuPG 2.1 共存。但是,使用新 gpg 对私钥的任何更改在使用 2.1 之前的 GnuPG 版本时都不会显示,反之亦然。
文件级别的同步是没有选择的,似乎也没有内置的机制来同步链。
我是否可以安全地从 gpg 导出所有 pub 和 sec 密钥并通过 gpg2(cronjob 等)导入它们,反之亦然,或者这是否会给我带来未考虑的后果?
我没有自动进行密钥同步,而是将所有密钥从我的 gpg 钥匙串转移到 gpg2 钥匙串并将 gpg2 符号链接到 gpg 以确保我始终使用 gpg2。这似乎是比将所有钥匙保存在不同钥匙圈中更好的解决方案。
gpg --export | gpg2 --import
gpg --export-secret-keys | gpg2 --import
sudo mv /usr/bin/gpg /usr/bin/gpg1
sudo ln …Run Code Online (Sandbox Code Playgroud) 我是新的 GnuPG,因此,这可能是一个愚蠢的问题。然而:
我想加密我的电子邮件,因此使用 gpg4win。此外,我还使用 Kleopatra,这是一种用于创建自己的证书和管理朋友公钥的工具。我浏览了Gpg4win - Compendium的手册,并且还阅读了一些其他手册和常见问题解答。
人们总是提到,导出您自己的证书/私钥并最好将其保存在某些外部介质(USB 记忆棒、DVD)上并妥善保管您的秘密密钥非常重要。无论如何,证书仍然在 Kleopatra-tool 中,可以一次又一次地导出(以及导入)。因此,我的证书的安全性不只是由访问我的 PC 的安全性定义的吗?我的意思是,作为一名黑客,我宁愿尝试访问某人的计算机,也不愿闯入公寓,在枕头下寻找那个 U 盘。我建议,这里的PC是最薄弱的地方。如果PC不是最薄弱的地方,则无需导出和隐藏证书。
另外,我正在使用 Thunderbird 和 Enigmail。在解密发送给我的邮件时,我被要求输入密码。与上面类似的点。只要不知道密码,秘钥不是完全没用吗?那么,当必须输入密码以使用我的证书时,导出和物理隐藏我的证书的重点在哪里?
我已经使用 GnuPG 来加密一些长期备份,但我担心随着时间的推移数据损坏是否会导致无法恢复档案。
你能解密部分损坏的 OpenPGP 文件吗?
我之前已经成功分发了公钥(用于签署开源),但几个月后返回开源项目后,构建一直无法找到公钥。
当尝试重新分发密钥时我得到
gpg --keyserver keys.openpgp.org --send-key XXX
gpg: sending key XXX to hkp://keys.openpgp.org
gpg: keyserver send failed: Certificate expired
gpg: keyserver send failed: Certificate expired
Run Code Online (Sandbox Code Playgroud)
但是,证书设置为永不过期。
> gpg --edit-key XXX
sec rsa3072/XXX
created: ... expires: never usage: SC
trust: ultimate validity: ultimate
ssb rsa3072/YYY
created: ... expires: never usage: E
Run Code Online (Sandbox Code Playgroud)
当证书设置为永不过期时,为什么它声称证书已过期,以及如何更新公钥以便可以再次使用?
谢谢。
我可以创建包含自定义创建(开始有效期)日期的 OpenPGP 证书吗?
我今天需要创建一个 OpenPGP 证书,但让它从下周开始生效(例如)。
使用像“Kleopatra”这样的工具,我只能设置“到期日期”。