电子签名:可视化与安全性如何双赢

电子签名:可视化与安全性如何双赢

四种MS Word/Excel 可视化电子签章系统的安全隐患分析
 
一种安全的文档数字签名方案

 

 
 

1.1 测试对象与测试基本情况

1.2 软件1测试中发现的安全漏洞

随着电子签名法的通过,电子签名技术在中国正加速推广。目前,不论在Internet上查询还是在市场中都可以见到多种计算机文档电子签名软件,其中很多产品特点非常类似,即:模仿盖章和手写签字对MS Word/Excel 文档进行可视化签章,签章过程在MS Word /Excel 中是可见的,签章后的文档仍然可以被Word/Excel正常打开。为考察这类签名软件的安全性控制问题,本文测试、分析了四种MS Word/Excel电子签章软件的安全性,并提出一种更为安全的文档数字签名模式。

1 对四个Word/Excel可视签章软件的安全性测试

1.1 测试对象与测试基本情况

为测试非常流行的MS Word/Excel电子签章软件的安全性,我们下载了四个公司的免费单机试用版软件(由于条件的限制,我们不能购买所有这类软件进行测试)。

软件1

软件2

软件3

软件4

试用版,对WordExcel文件可签章、手写电子签字

试用版,提供分别用于WordExcel的控件,提供签章文档实例

试用版,可对Word进行签章

试用版,须先申请并安装数字证书才可使用,可对Word文件签章

测试环境:Windows XP Professional

MS Word 2000 MS Excel 2000 MS Word 2003MS Excel 2003

其它工具:Hex Workshop 4.1 共享版    

四个软件产品在功能、操作方式上有很多相似之处,可视化做的都很好,和实际纸制文件的盖章、签名在视觉上较接近。四个软件在Word/Excel 2000Word/Excel 2003中的表现一致。

通过测试,我们并没有看到足够安全的软件产品,它们有相同的、十分明显的安全缺陷,这些缺陷足可以给用户带来严重问题。

1.2 软件1测试中发现的安全漏洞

1.2.1 不控制格式,只控制文件的实际数据内容

软件1签章后,文件内的字符不能再更改,一旦更改,签章不能通过验证。但对字符格式不加控制,如字号、字体颜色等。举一个例子,可以在文件中把某些字符设置成白色,因为文档的背景是白色的,这些字符实际不可见,签章(或签字)后任何人都可以再将白色字符改为黑色。

下面是一个关于经费申请的Word文件,申请上写的看起来是1000,其实是10000,因为最后一个0是白色的,总经理王峰批准后,申请人又将最后一个0改为黑色。

1:表面上看是申请了1000圆,但后面还有一个白色的0

 

2:签章后,将白色的0改成黑色,变成了10000圆,盖章、签字并未失效

 

3:在批准的文件上再添加一些字符,可以看到签字和盖章失效的样子

Excel中,该漏洞依然存在,所不同的是在Excel中不能将把格中的单个字符改为白色,但可以把单个格子的所有字符改为白色。

4该文件中,预算者把许多内容设置成了白色后,文件得到批准

5: 文件签章批准后,预算者又修改了文件中一些内容的颜色,签章仍有效

 

1.2.2 不实用且脆弱的文档保护

软件1的设计者无疑也意识到了对文档格式不加控制可能带来的安全隐患,于是在产品中增加了文档锁定功能,文档锁定后,在Word/Excel中无法编辑文档,所有和编辑文档有关的按钮、菜单都不能使用。这一功能的目的很明显,要求盖章、签字后锁定文档,从而保证文档视图的不可变。但通过Word/Excel文档保护根本不能解决问题。

首先,对于多级签名,文档保护并不是好办法。前一个签名者如果锁定文档,后一个签名者就无法签名,除非他知道解锁密码,才可以在解除文档保护后实施签名,而且签名后还要再用新密码锁定文档。但是,在网络环境下,如何才能让文档保护密码安全、方便地在不同的签名者之间传递呢?很明显,靠Word/Excel文档保护(锁定)来弥补1.1所述的安全漏洞是不实用的。

其次,Word/Excel文档保护是相当脆弱的,很容易被击破。先来看Word文档保护,我们很容易地在Internet查到一种破解Word文档保护的方法,但用这种方法解除软件1的文档锁的努力失败了,这说明软件1的设计者在文档锁定上下了不少功夫,但我们使用了另一种更为彻底的方法很快就成功绕过了软件1的文档锁。

我们首先构造Word文件,文件上有“10000”字样,该文件保存为1.doc,将“10000”最后一个0改为白色,文件保存为2.doc,用Hex Workshop比较两个文件,很快找到了控制字符颜色的区域都是以B*开头,将2.doc中控制字符颜色的一段中的FF FFFF改为00 0000(熟悉html的人都知道,FFFFFF代表白色,000000代表黑色),改完后,用Word打开2.doc,最后一个0变成了黑色。

现在开始测试软件1对Word文档的保护。首先构造签名Word文件并锁定文件。

6: 申请上写的实际是10000,最后一个0是白色,该文档已由软件1锁定

 

7:用Hex Workshop更改文件,B*后面,一段FF FFFF改为00 0000

 

8:打开文件,10000最后一个0已改为黑色,文档仍处于锁定状态,签章仍有效

 

软件1对Excel文档的保护同样脆弱,我们用Hex Workshop比较文档,很快发现Excel单元格字符的颜色控制数据在[SO1段,09代表白色,08代表黑色,直接用Hex Workshop更改数据,就可以更改单元格字符颜色,这一点对Excel 2000版和2003版都适用。为缩减篇幅,本文不再举例,感兴趣的读者可以自己动手试一试。

9:Excel 文档单元格颜色控制

 

软件1的文档锁定功能和MS Word、Excel自带的文档保护功能同出一源,都是通过在文档中加专门标志,编辑器见到标志后,所有的编辑功能不能起作用,这种保护无疑是脆弱的,可以用16位编辑器直接编辑文件。

1.2.3 浏览文件过程中,文件可能被意外更改或被病毒更改

如果一个已签章的文件未加文档保护,在用户阅读文档过程中,可能因意外的操作改变文档,例如在Word中不留意增加空格,在这种情况下,文档签章失效,用户有时不能将文件数据恢复到原样。由于签名时文档必须处于可编辑状态,所以,无法依靠文档保护(锁定)来防止文件内容的意外更改。

另一个造成文档被意外更改的原因是病毒。虽然我们并没有测试用病毒感染签章文件,但根据常识,希望用户能完全防止病毒感染文件是不现实的。如果病毒造成文件实际数据内容改变,签章随即失效,如果病毒感染实际数据内容以外的部分,即使文档签章不会失效,但签章后的染毒可能造成不可预计的问题。

1.3 其它软件的测试结果

其它3个软件都存在和软件1相同的问题。其中软件2、软件4都没有自己的文档保护功能,不知正式版是否具备该功能。如果软件不使用专有的文档保护功能,而使用Word自有的文档保护功能,这种保护无疑形同虚设。软件3是Word签章产品,签章后文档自动处于保护状态,无法编辑,但只要在Word菜单上选择“工具”-“解除文档保护”,文档就又处于可编辑状态了。相比之下,软件1是四个软件中文档保护作的最好的一个。

1.4 测试结论

四个软件都存在着严重安全隐患。当文件内容的格式更改后,签名和签章都仍有效,说明四个软件只能通过签章保证文件部分数据的完整性。因为格式控制会直接影响到人们对可视内容的理解,在这种情况下进行电子签章、签名可能带来严重后果。虽然对Word/Excel可以使用文档保护功能来防止文档在签名后的改变,但对于多级签名,文档保护是不实用的,同时,Word/Excel文档保护也是非常脆弱的。由于签章过程需要文档处于可编辑状态,因此很难避免文件被意外更改,从而造成已有的签章失效。数字签名软件是对安全性要求很高的产品,以上这些安全性问题的是不能容忍的。

2 对四个产品的安全漏洞的分析

2.1数字签名、数字签章、手写电子签名

    在分析上述四个产品的安全漏洞之前,先简单回顾数字签名的基本原理。

从数字签名原理图中可以看出,只有计算整个文件的数字摘要而不是部分内容的数字摘要,才能保证整个文档的完整性可鉴别。

10:数字签名原理图

数字签名技术本身并不可视,那么数字签章(手写电子签名)和数字签名有什么关系呢?电子签章、手写电子签名不像数字签名一样有着标准的、公认安全的实现方式,不同的软件商使用不同的方法实现。数字签章一般是在密钥对和电子图章之间建立对应关系,使用一个密钥对进行数字签名,图章会被加入文档并可视化地出现在文档界面中,图章数据被加密后放入签章文件中(嵌入式签章),或者图章数据存放在签章中心,签名通过验证后再调用显示。当源文件变化或其它原因使签名不能通过验证时,图章会出现失效标识。手写电子签名和签章类似,只是用手写的签名图形替代图章。另外,嵌入式签章可能存在安全漏洞,其他人验证签名文件时,签章被解密,其他人可以盗用签章。

电子签章和手写电子签名不是数字签名或数字签名的替代,更不是数字签名的增强,只是解决解决签章的可视化。

2.2 为什么四个软件产品会有安全漏洞

由于需要在Word和Excel编辑界面中实施签章、验证过程,签章后得到的文件仍然是有效的Word或Excel文件,在这中情况下,不可能对整个文档的数字摘要进行加密。数字签章、手写签名数据要加入到文档中,成为Word/Excel文件的组成部分,这使Word/Excel文件整体改变,所以每进行一次签名或,文档的数字摘要也必然会改变,图10中的“数字摘要1”和“数字摘要2”就不可能相同,已有的签名就不能通过验证。也许我们可以把整个文档的数字签名添加到文档的尾部,在计算“数字签名2”时,只计算原来那部分文档,这样可以保证“数字摘要1”和“数字摘要2”相同(图12所示的追加式签名结构就是采用这种策略)。但直接将数据加到文件尾部可能破坏Word/Excel文档的基本数据结构,使文件成为失效的Word/Excel文件,无法解析,即使文件可以打开,这部分内容也不会被MS Office读取和显示,可视化的签章和验证也就无法实施(MS Office XP/2003 自带数字签名功能就是这种情况)。

11:嵌入式签名结构

因此,为了满足签章、验证过程在Word/Excel文件编辑界面可见的要求,只好只对文件中部分关键内容(文档实际的数据对象)计算数字摘要,而不计算文档框架,包括格式控制部分的数字摘要,数字摘要加密得到的数字签名及其它信息和实际数据对象分开存储,存储遵守文件的结构框架。这就形成了如图11所示的“嵌入签名式结构”。这种结构可以保证文档实际数据对象的完整性可鉴别,同时也保证签章过程在Word/Excel中可见。但嵌入签名式结构存在严重安全隐患,签名者认为整个文档的完整性在签名后不能改变,实际上,文档框架和格式控制部分可以任意改变,特别是控制数据显示的部分,这就带来了前面所例举的“白色的0”问题。实际上,如果格式不受控制还能带来很多其它类似“白色字符”的问题。

另外,由于嵌入式签名文件能使用Word/Excel编辑器直接打开,并且签章时要求文件可编辑,这就无法避免浏览文件过程中文件可能被意外更改或被病毒更改。

嵌入式签名结构是对签章过程可视性要求的适应,因为中国人习惯在文档中见到签章和签字,签章还要加盖到文件的文字上,所以嵌入式结构是无奈的选择。遗憾的是,这种选择已完全破坏了文档数字签名的基础,没有人希望自己签署的文档会在签署后变成另外一个样子。

不仅对Word/Excel文档的数字签名可能使用嵌入式签名结构,其它种类的计算机文档签名软件也可能采用嵌入式签名结构。

 

3 一种更为安全的文档数字签名结构

12:追加式签名结构

12是另一种“追加签名结构”。这种签名文档结构能保证整个文档完整性可鉴别,符合文档数字签名的安全要求。但使用这种签名方式签名后,文档整体结构改变,不能直接用原编辑器打开,为保证签名的可视性,签名软件将签名单独进行可视化处理,用源文件编辑器打开源文档的备份, 这样能保护签名的源文档被更改不,从而从另外一个层面上进一步提高了数字签名安全性。

和追加式签名结构类似的是MS Office 2003中自带的数字签名。虽然MS office 2003自带的数字签名功能相当简单,但通过对签名文件结构的分析,基本可以确定是属于追加签名结构,所有签名信息加到文件的尾部,所以签名后任何文件实际内容或任何格式的更改都会使签名失效,因此MS office 2003自带的数字签名的安全性比测试的4个软件要高,不过,由于签名文档是在编辑器中直接打开,所以无法防止在观看过程中意外更改文件。也就是说,它采用了追加式签名文件结构确没有采用图12所示的打开签名文件的方法,仍存在一定的安全隐患。另外,MS Office 2003自带的数字签名是非可视的(在文档中没有图章、签字或其它可视的唯一标识),这正体现了追加式签名很难在原编辑器中显示的特点。

虽然图12所示追加式签名结构是非常安全的,能实现数字签名的基本目标:保证签名文档完整性可鉴别。但这种方式和中国人习惯的签章、签名方式有差别,签名或签章在不同的软件的界面中显示。人们必须做出选择,要么放弃基本的安全性,要求电子文档数字签名必须完全符合纸制的签章、签字的习惯;要么顺应数字签名的基本要求,稍微改变习惯,得到真正安全的数字签名。

追加式签名除了安全以外,还具有适用范围广的特点,实际上,这种结构对任何格式电子文件的签名都适用。如果我们要数字签名的不是Word/Excel这类文档,而是照片、多媒体文件、数据、程序,在这类文件中,嵌入式结构根本不适用,追加式签名结构无疑是合理的选择。

 

声明:本文涉及的四个产品是从Internet上下载得到,本文内容只针对这四件产品,本文未提及或以任何方式暗示产品名称和厂商。

2005年3月 北京

 

本文可以任意转载,但不能作任何改动

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页