大家好,可信计算安全团队向各位介绍 Office 2010 中数字签名的一些新增功能。首先,我将简要说明什么是数字签名以及如何使用数字签名,然后将详细介绍数字签名在 Office 2010 中的工作原理。

什么是数字签名?

现在,越来越多的商业交易以电子方式开展。因此,为了从法律上保证信赖方履行交易义务,数字签名的使用越来越广泛。数字签名用于验证签署文档的用户的身份,并确认将数字签名应用于文档后内容未经修改。数字签名提供基于加密技术的安全性,并帮助缓解与电子业务交易相关的风险。通过对数字签名的改进,Office 可以满足全球企业和公共部门实体的信息安全需要。
要创建数字签名,必须具有数字证书,数字证书用于向信赖方证明您的身份,您应该从可信的证书颁发机构 (CA) 获得该证书。如果您还没有数字证书,可在 Office 市场中获得 Microsoft 合作伙伴提供的数字证书以及集成到 Office 中的其他高级签名服务。

插入数字签名

在 Word、Excel 和 PowerPoint 2010 中,可以通过转到 Office Backstage 视图添加数字签名:
在 Word、Excel 和 InfoPath 中,可以通过转到“插入”(Insert) 选项卡添加签名行或签名图章:
签名行的外观如下:
签名图章(通常在东亚地区使用)的外观如下:

签名在 Office 中的工作原理

Office 2007 及其更高版本使用称为 XML-DSig 的开放式签名标准,它取代了 Office 2003 以及更早版本中不太完善的二进制签名。符合 XML-DSig 标准的签名采用用户通常可读的 XML 格式。有关 XML-DSig 的详细信息,请参阅 http://www.w3.org/Signature。
Office 2010 数字签名可以使用 Windows Vista 以及更高版本中支持的高级算法(如椭圆曲线公钥算法)。所有受支持的操作系统还允许使用更可靠的哈希算法,如 SHA-512。
数字签名的最紧迫问题是您使用的证书将过期(通常在一年之内)。证书过期后,任何人都不会信任该签名。如果希望能在更长的时间段内信任签名,必须保存验证证书所需的信息的副本。可能还需要考虑加密过时的问题。
幸运的是,对 XML-DSig 标准的扩展 ( XAdES) 中提供了这些问题的解决方案。

什么是 XAdES?

XAdES(XML 高级电子签名)是 XML-DSig 的一组分层扩展,它分为多个级别,每个级别都在上一级别的基础上构建以提供越来越可靠的数字签名。
通过实施 XAdES,Office 将符合 1999/93/EC 指令中的欧盟高级电子签名标准,以及将 XAdES 定义为巴西公认数字签名标准的一项巴西政府新指令。
Office 2010 可在 XML-DSig 签名基础上创建不同级别的 XAdES 签名:
Office 2010 Beta 只能创建 XAdES-T 签名以及更低级别的签名,但是 Office 2010 RTM 能够创建上表中的所有签名。
时间戳数字签名(XAdES-T 签名)是 Office 2010 中着重考虑的重要方案。为了创建时间戳签名,您将需要:
  • 设置符合 RFC 3161 的时间戳服务器。
  • 配置签名策略以使客户端系统了解时间戳服务器的位置。您还需要将时间戳服务器的根证书添加到根证书存储中。
配置完成后,即可按照通常使用的方式创建签名。受信任时间戳服务器中的时间戳可以延长签名的有效期,这是因为即使证书过期,时间戳仍可以证明在签署时证书未过期。因此,时间戳有效解决了证书过期问题,即使应用签名后证书被吊销,签名仍然有效。

在 Office 2010 RTM 中创建 XAdES 签名

默认情况下,Office 2010 创建 XAdES-EPES 签名,并使用注册表设置指定要创建的签名的级别。有两个用于控制 Office 创建的签名类型的注册表设置:XAdESLevel 和 MinXAdESLevel。
通过 MinXAdESLevel 设置,您可以确保创建的签名符合所需的 XAdES 级别。如果时间戳服务器不可用,XAdES-T 或更高级别的签名将失败;如果吊销信息不可用,XAdES-C 或更高级别的签名将失败。如果具有最低设置,您就可以尝试创建 XAdES-X-L 签名,但如果时间戳服务器停机,则将回退到 XAdES-EPES。
要创建 XAdES-T 签名以及更高级别的签名,需要为 Office 提供时间戳服务器以便查询时间戳:

有关 XAdES 签名的建议

如果要创建 XAdES 签名,建议使用下列三种级别之一:
  • XAdES-EPES — 此设置为默认设置,因为创建这种签名的要求与创建普通 XML-DSig 签名的要求相同,没有其他要求。
  • XAdES-T — 此设置要求提供符合 RFC 3161 的时间戳服务器,并且将 Office 配置为使用该服务器。如果具有时间戳服务器,应该将 XAdES-T 配置为默认设置。
  • XAdES-X-L — 如果具有时间戳服务器并且需要包含完整的吊销和证书链信息的签名,请使用此设置。
示例:
Sam 要创建 XAdES-X-L 签名。如果无法实现,他可以接受的签名级别最低为 XAdES-T。他进行了如下设置:
  • XAdESLevel = 5(他请求建立 XAdES-X-L)
  • MinXAdESLevel = 2(他可以接受的签名类型最低为 XAdES-T 签名)
在本示例中,Office 会尝试创建 –X-L 级别的签名。如果 Office 无法创建 XAdES-X-L 签名,Office 会回退到上次成功创建的 XAdES 级别,条件是该级别不低于 MinXAdESLevel。在本示例中,如果 Office 无法创建 XAdES-X-L 签名,XAdES-T、XAdES-C 和 XAdES-X 签名也是可以接受的。否则,Office 不能添加签名。

在 Office 2010 Beta 中创建 XAdES 签名

如前所述,Office 2010 Beta 只能创建 XAdES-T 及更低级别的签名,这是因为我们在 Beta 之后的版本中才添加了其余的 XAdES 签名。上面介绍的 XAdESLevel 注册表设置仍然适用,但是最高级别为 2 (XAdES-T)。MinXAdESLevel 设置不存在,但是只能创建两种类型的 XAdES 签名 — 包含时间戳的签名和不包含时间戳的签名,具体由 TimestampRequired 设置(该设置在 RTM 版本中不存在)控制。
要创建 XAdES-T 签名,您还需要设置 TimestampRequired(请参阅下面的说明)和 TSALocation(请参阅上面的说明):
XAdES 功能是 Office 2010 中的众多安全增强功能之一。感谢您阅读这篇文章,我们期待着您的反馈!