静态签名网页的标准方法

时间:2011-01-10 09:02:31

标签: http cryptography http-headers digital-signature

假设我的服务器上有一个有效的(即由一个受信任的权威机构签名)加密证书。我显然可以使用它来建立https会话并提供机密性(只有端点可以读取它们),身份验证(两个端点都知道他们正在与谁交谈)和可靠性(消息不能被篡改)。

现在假设我实际上并不关心前两个,而是我只需要最后一个。例如,假设我有一个静态资源,我想签名(a-la PGP),以便我可以将其提供给其他不受信任的主机:如果我的证书是公开的并且资源已经用它签名,那么任何客户端都应该能够验证资源是否未被篡改(例如,由不受信任的主机)。

现在的问题是:是否有一种静态签名网页的标准方法? (我显然是指在所有浏览器中内置的东西)我知道有人(Unhosted)试图通过Javascript实现大部分逻辑来尝试完成这样的事情,但我仍然想知道是否存在更标准的方法

2 个答案:

答案 0 :(得分:1)

我不知道浏览器中有任何此类标准实现 builtin

即使在长时间(S / MIME)此类行为是“标准”的邮件区域,我们也会每隔一天发现不同客户端,中继和服务器的问题。

要下载,您可以恢复发送PKCS#7容器并关联解压缩和验证的工具。至少插件和助手应用程序随处可用。

答案 1 :(得分:0)

我也不知道浏览器中的任何标准实现。但是,要备份一些......需要考虑的事情:

  1. 对于可执行内容(如下载的EXE文件,ActiveX控件,Windows Installer等),常见/标准解决方案是Microsoft Authenticode。见http://www.tech-pro.net/code-signing-for-developers.html。适用于Java,Adobe等的类似解决方案。您购买证书的CA将验证您的身份。当您使用来自受信任CA的证书对EXE文件进行签名时,Internet Explorer将显示签名者信息/较少可怕的警告消息。 Windows Vista / 7中的UAC提升提示也是如此。你可能对此很熟悉吗?

  2. 但对于静态内容情况,标准解决方案是SSL。请问为什么SSL在您的应用程序中不是可接受的解决方案?

    我看到的问题是除了点击浏览器中的SSL“锁定”图标以查看证书之外,用户无法从Web浏览器验证网页的身份。新的SSL EV证书应该验证您是否控制了相关域名,并且您是您所说的人(即无法获得www.paypal.com.hacker.cz的“PayPal”证书)。

  3. 从您的问题中可以看出,您正在寻找“网页的Authenticode”类型的东西:一个主题与域名无关的证书以及网页可以在任何地方出现的位置。不幸的是,我不知道任何标准HTML文件的东西。我相信你可以签署类似Adobe AIR应用程序的东西,它可以基于HTML / Javascript /等,虽然我不熟悉那个平台。当然,它确实将网页置于用户普通网络浏览器之外。