我知道如何使用gpg签名消息或验证来自其他人的签名消息。但我最近注意到,您可以“解密”已签名的邮件而无需访问其公钥[尽管您无法验证签名]。
例如,这是一条小签名消息。
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1
owEBrAJT/ZANAwACAULhWJW/fwKRAax8YgdtZXNzYWdlWFVuX0hlbGxvIFN0YWNr
T3ZlcmZsb3cuCgpZb3UgY2FuIHJlYWQgdGhpcyBtZXNzYWdlLCBldmVuIHRob3Vn
aCB5b3UgZG9uJ3QgaGF2ZSBteSBwdWJsaWMga2V5LiBIb3cgZG9lcyB0aGF0IHdv
cms/CokCHAQAAQIABgUCWFVuXwAKCRBC4ViVv38CkXl6D/oCvgOGKFx7c0IDAI9q
2wsj35bapllGlxCRK5/Z8sYqM2RpcV+//wArozMTndFj60ZevMIrPYyWEUyKYS6l
kgq6euD2hbcoy/bcP/3z51K3zCtXby4/CKgx6E1ecC94iO89hVoYQkLWtgRWiL8Z
wfGWgr8X0MaGzsU5q/SchJfZj5ox32JN0S8Iqfqk+xJe2CdQ4KRpbS3M5I3u8/yX
E5ETUeO3aFPwmrBysJysGozWatoiDlMvuiLfnW+Qs4DkEpSRxOw2Sx+ufE2wmWlJ
+5Q4OJiEL6TmJ+Di201CHDGFPWVkrGDioMt6x07vyyiW6X2k4vmIjbFL9vtypUfF
4VzzCWRX9BTCVZZo4ULUmkNznF1IkYJ03TlEFqfTrQ6Jq3SeqlzjGY3I4LJ1a9cL
eobIECLFLqTmOmXM5oC/38V2kNA+/NoSNkw+H78sIlfQ8919JktVG+oa6mEP2OQ8
7k3W7nSpcKugGYDXBB5HQa8lPq1lgI9H+j05pCAhoNnff6Ynl223ycva0xq5wOs/
mjViRWDn+RUebp3KcN/PW7Bkf9RsKt/sPJl2IPdDwdaBibUkhIEKfWVpaOd9rlK6
06/bD+momYpXSlmE/eYh+pf8aIj2R+7Ciz8fAqrTU2hPSWoi2Ne/ISwLBJS4wmRZ
OnHYDOXulQBor1K+VgKyYclC2Q==
=5/kF
-----END PGP MESSAGE-----
与许多签名邮件不同,此邮件不是普通签名的。我原以为没有访问此消息的公钥,就无法读取它,更不用说验证它了。
但如果在此消息上使用gpg --decrypt
,则可以生成纯文本版本。或者,如果您使用像Keybase这样的服务用于gpg,那么Keybase也可以生成明文。到底是怎么回事?
首先想到的是公钥以某种方式包含在消息中,但似乎并非如此。包含公钥的指纹,虽然这不足以解密消息,对吗?
答案 0 :(得分:2)
--sign --armor
的GPG生成base64编码(更精确Radix-64-encoded)输出,其中消息体仍可通过简单的base64解码输出来读取。
所以我想另一种说法是消息是编码但未加密。
要查看,请通过任何base64解码器(例如some online one)运行问题中的PGP消息。
由于邮件未加密但只是签名,因此无需密钥即可对其进行解密。它只是一个签名和一些文字包裹在一起。因此,GPG无需钥匙即可解开它。
这里的“包裹”一词只是简写。这是一个更详细的解释:
--sign
输出,GPG对包含(1)保存邮件正文的Literal Data Packet和(2)Signature Packet --decrypt
--sign
输出时,GPG只对其进行解码;它解码文字数据包部分以获取(未加密的)消息体和签名包部分以获得签名因此,如果收件人想要根据签名检查邮件文本,则只需要密钥。他们不需要密钥来阅读邮件。他们只需要GPG或其他一些了解如何解码消息格式的OpenPGP Message Format standard实现。
就加密而言,--sign
ed消息与使用--clearsign
签名的消息之间没有区别。两者都没有加密。唯一的区别是,对于使用--sign
签名的邮件,收件人需要使用GPG从签名中解包文本,而对于使用--clearsign
签名的邮件,收件人可以看到邮件文本无需GPG。
答案 1 :(得分:1)
在接受的答案之外,即使消息是加密的,也可以使用您的公共密钥来完成,并且由于您拥有私有密钥,因此可以对其进行解密。签名和验证的唯一目的是“证明”谁向您发送了邮件。如果您不在乎它来自谁,您仍然可以通过忽略签名来解密发送给您的任何PGP消息-您无法确定它来自您认为是谁。