电子签名:可视化与安全性如何双赢 四种MS Word/Excel 可视化电子签章系统的安全隐患分析
|
|||||||||
2 对四个产品的安全漏洞的分析 2.1数字签名、数字签章、手写电子签名 2.2 为什么四个软件产品会有安全漏洞 3 一种更为安全的文档数字签名结构
随着电子签名法的通过,电子签名技术在中国正加速推广。目前,不论在Internet上查询还是在市场中都可以见到多种计算机文档电子签名软件,其中很多产品特点非常类似,即:模仿盖章和手写签字对MS Word/Excel 文档进行可视化签章,签章过程在MS Word /Excel 中是可见的,签章后的文档仍然可以被Word/Excel正常打开。为考察这类签名软件的安全性控制问题,本文测试、分析了四种MS Word/Excel电子签章软件的安全性,并提出一种更为安全的文档数字签名模式。
1 对四个Word/Excel可视签章软件的安全性测试1.1 测试对象与测试基本情况为测试非常流行的MS Word/Excel电子签章软件的安全性,我们下载了四个公司的免费单机试用版软件(由于条件的限制,我们不能购买所有这类软件进行测试)。
四个软件产品在功能、操作方式上有很多相似之处,可视化做的都很好,和实际纸制文件的盖章、签名在视觉上较接近。四个软件在Word/Excel 2000、Word/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月 北京
本文可以任意转载,但不能作任何改动 |