原文地址:http://www.cnblogs.com/1-2-3/archive/2007/09/19/colloquialism-digital-certificate-part2.html
然而它太慢了
非对称加密算法有一个重大缺点——加密速度慢,或者说得更拽一些,编码率比较低。例如在上一篇里我给Clark传的那个1GB的小电影,进行非对称加密足足用了66小时。那个借条小一些吧,也用了将近2分钟。所以在实际使用非对称加密的时候,往往不直接对文件进行加密,而是使用摘要算法与非对称算法相结合(适用于数字签名)或对称加密和非对称加密相结合(适用于加密传输文件)的办法来解决或者说绕过非对称加密算法速度慢的问题。
摘要算法
摘要算法,又叫作Hash算法或散列算法,是一种将任意长度的输入浓缩成固定长度的字符串的算法,注意是“浓缩”而不是“压缩”,因为这个过程是不可逆的。它的特点是:
实际对文件作数字签名的方法
由于非对称加密的速度实在太慢了,所以在实际对文件作数字签名的时候,例如对上一篇中我用Word写给Clark的借条进行签名,总是先生成这个借条的散列值,然后用我的私钥对这个散列值进行非对称加密,然后把加密后的散列值(我们就叫它“散列值密文”吧)和借条一同发送到Clark那里。Clark在收到借条和散列值密文后,用从 上下载的我的公钥将散列值解密,然后Clark自己再生成一次借条的散列值,比对这两个散列值是否相同,如果相同,就叫作验证签名成功。由于散列值只有几十个字节,所以签名的速度还可以忍受。看下图会更直观一些。
是不是即直观又简单诸如“散列值”、“公钥证书”这些东东都跑到哪里去了呢都被电子签章程序插入到Word文档中的某个特定的地方了,如果你熟悉Word文档的结构,是不难找到它们的。
电子签章程序的Bug
电子签章程序本来可以支持两种用法:
1. 在上面的第3步不勾选“签章后锁定文件”复选框,这样在进行了数字签名之后,仍然可以更改Word文档的内容。当然如果在进行了数字签名之后又更改了Word文档的内容,验证签名操作就会失败。这时需要再次进行签名操作。
2. 在上面的第3步勾选“签章后锁定文件”复选框,这样在进行了签名操作后,Word文档的内容就再也无法更改了。
但是,电子签章程序有一个大Bug——在进行了签名操作后,如果只是更改了文字的颜色,验证签名操作仍然会成功。这就意味着,如果我在Word中写到“向公司借款2000元”,然后把“2000”的最后一个0的颜色改为白色,在领导看来就是“向公司借款200 元”。领导欣然签章,然后我再把那最后一个0的颜色改为黑色,就又变成了“向公司借款2000元”,而且验证签名居然会成功。这也是为什么我在上面的第3步要强调一定要勾选“签章后锁定文件”复选框了。我猜测造成这个Bug的原因很可能是因为电子签章程序仅仅对文档中的纯文本生成散列值,而不是对文本+全部格式信息一同生成散列值。大家在购买电子签章程序前一定要作这方面的测试。
数字信封
我们可以通过使用信息摘要技术解决数字签名的速度问题,那么数字加密的速度问题怎么解决呢除了我和Clark以外,很少有人愿意为传送一个小电影而等待66个小时。其实这个问题也简单,我们可以用对称加密与非对称加密相结合的方式来解决这个问题。对称加密速度快,但是必须在传送密文的同时传送解密密钥;非对称加密速度慢,但是不需要传送解密密钥。把两个技术一起使用,各取优点,就OK了。方法是,先把小电影用对称加密算法加密,然后把解密密钥用非对称加密算法加密。再将小电影的密文与解密密钥的密文同时传送给Clark。Clark收到这两样东西后,先用自己的私钥将解密密钥的密文解密,得到解密密钥,再用解密密钥将小电影的密文解密,就得到了小电影的明文。Clark收到的这两样东西——小电影的密文和解密密钥的密文——加在一起就叫作数字信封。看下图会更直观一些。
您可以使用IE的菜单“工具 | Internet 选项… -> 内
USB Key的缺点
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!