我有一份与团队合作的项目文档,我需要以团队其他成员可以验证的方式对文档进行数字签名。问题是,我们在内部使用 PGP(我认为是商业版本)。看起来,无论出于何种目的,PGP 都与 Microsoft Office 的任何内置数字签名功能完全不兼容。Adobe Acrobat 也是如此。
这令人困惑,因为 PGP 是一个已定义的 RFC 4880,所以我可以想象 MS 可以集成某种对 X.509 或 PGP 的支持。但是,使用外部 PGP 软件签署文档会生成一个独立的 *.sig 文件,该文件必须与原始文档一起标记,以便任何人都可以验证其真实性。由于我有多个需要对此文档进行数字签名的人,所以我不知道这是否意味着我需要为每个签名者管理一个 *.sig,或者单个 *.sig 文件是否可以保存不同签名者的多个签名。
是否有某种解决方案可以让我在团队成员之间使用 PGP 密钥对 Word 或 PDF 文档进行数字认证/验证?如果有某种东西也可以在文档本身中留下视觉标记,那就太好了。
我想,如果有一种方法可以根据公共 PGP 密钥导出 X.509/PKCS-12 证书,然后将该证书存储在 Windows 的内部证书存储区 ( certmgr
) 中,那么也许我可以让 Office 从中提取证书。但这似乎是不可能的。我的意思是,从技术上讲,这两者不是都是标准的 PKI 证书吗?
假设每个签名者都有自己的带有密码的 PGP 密钥对,并且有一个每个人都可以同步的内部 PGP 密钥服务器。
有什么想法吗?
答案1
看起来,无论出于何种目的,PGP 都与 Microsoft Office 的任何内置数字签名功能完全不兼容。Adobe Acrobat 也是如此。
没错。您必须改用 X.509 – 见下文。
这令人困惑,因为 PGP 是一个定义的 RFC,4880
PGP 是 RFC 定义的,但在这里没有任何意义——X.509更多的RFC(1422和5280是主要的),所有这些都基于几个ITU-T 标准(“X.509” 这个名字的由来)。
它在 TLS(SSL)、S/MIME(电子邮件)、代码签名(Authenticode、Java、Android、iOS)、文档签名(AdES)等方面应用非常广泛。甚至许多政府也使用基于 X.509 的 PKI 并颁发具有与手写签名相同法律地位的“合格”证书。在 Office 2010 中,添加了 XAdES 格式的数字签名来帮助实现这一点。
所以我认为 MS 可以集成某种对 X.509 或 PGP 的支持。
Microsoft Office 和 Adobe Acrobat做实际上使用 X.509 证书——Windows 证书库中的任何证书都可以立即在 Office 中使用(当然,前提是它存储了私钥并启用了正确的使用位)。在 Office 2007 中,这是在Office → 准备 → 数字签名。
Adobe Reader 在“编辑 → 保护 → 安全设置”菜单中的“数字身份证 → Windows 数字身份证”下列出了 Windows 证书。
我认为如果有一种方法可以根据公共 PGP 密钥导出 X.509/PKCS-12 证书,[...] 但这似乎是不可能的。我的意思是,从技术上讲,这两者不是都是标准的 PKI 证书吗?
不是。OpenPGP 和 X.509 唯一的共同点是它们都使用了加密算法:RSA、DSA、SHA 等等;除此之外,它们是完全独立的。术语“PKI”通常仅涵盖 X.509。
从技术上来说,重复使用密钥材料是可行的(而且通常非常容易),例如,使用 PGP 密钥对的 RSA 参数来创建 X.509 证书。但这不会使它们可以互换:
PGP 和 X.509 使用非常不同的信任模型 - PGP 基于信任网络,而 X.509 是分层的,并且要求证书由单一权威,因此您通过密钥签名建立起来的密钥信任根本无法延续。
此外,它们还存储不同的用户可见信息,例如从基本的“主题”开始。(
Mantas M. <[email protected]>
/C=LT/O=Example Company/OU=Users/CN=Mantas M.
这可能相关。)
换句话说,将 PGP 证书转换为 X.509 证书只会增加安全风险(因为重复使用加密密钥而不是生成新的密钥)。