数字水印
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章公文加密算法的比较与选择
为了保证公文及其批注信息的安全性,因此在批示人对公文批示完毕之后,应该对已经批示的文件进行加密处理。这样就保证了批示信息与公文被捆绑成为一个不可分割的整体,在未经授权的情况下,任何人不能修改他人对公文的批示意见。
本章将对加密算法的基础知识以及目前常用的加密算法进行性能和安全性的综合比较,在此基础之上选择一种适合于本系统的加密算法。
3.1对称算法与公开密钥算法简介
密码算法也叫密码,是用于加密和解密的数学函数。(通常情况下,有两个相关的函数:一个用作加密,另一个用作解密)。
如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。受限制的算法具有历史意义,但按现在的标准,它们的保密性已远远不够。大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法。如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。
目前多数密码算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性。这就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听者知道你的算法也没有关系;如果他不知道你使用的具体密钥,他就不可能阅读你的消息。
基于密钥的算法通常有两类:对称算法和公开密钥算法。
3.1 1对称算法
对称算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加/解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加/解密。只要通信需要保密,密钥就必须保密。
对称算法的加密和解密表示为:
E K(M)=C
D K(C)=M
对称算法可分为两类。一类只对明文中的单个比特(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组比特亚行运算,这些比特组称为分组,相应的算法称为分组算法或分组密码。现代计算机密码算法的典型分组长度为64比特——这个长度大到足以防止分析破译,但又小到足以方便使用(在计算机出现前,算法普遍地每次只对明文的一个字符运算,可认为是序列密码对字符序列的运算)。
3.1.2公开密钥算法
公开密钥算法(也叫非对称算法)是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。在这些系统中,加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。私人密钥有时也叫秘密密钥。为了避免与对称算法混淆,此处不用秘密密钥这个名字。
用公开密钥K加密表示为
E K(M)=C.
虽然公开密钥和私人密钥是不同的,但用相应的私人密钥解密可表示为:
D K(C)=M
有时消息用私人密钥加密而用公开密钥解密,这用于数字签名(见2.6节),尽管可能产生混淆,但这些运算可分别表示为:
E K(M)=C
D K(C)=M
3.2公文加密算法的选择
目前最常用的对称密钥与公开密钥加密算法分别为DES算法与RSA算法。下面就基于这两种算法进行安全性与性能等方面的对比和讨论。
3.2.1 RSA算法和DES算法简单描述
DES数据加密标准用于对64比特的数据进行加密和解密。DES算法所用的密钥也是64比特,但由于其中包含了8个比特的奇偶校验位,因而实际的密钥长度是56比特。DES算法多次组合迭代算法和换位算法,利用分散和错乱的相互作用,把明文编制成密码强度很高的密文。DES算法的加密和解密的流程是完全相同的,区别仅仅是加密与解密使用子密钥序列的顺序正好相反。
公钥加密算法中使用最广的是RSA。RSA使用两个密钥,一个公共密钥,一个专用密钥。如用其中一个加密,则可用另一个解密,密钥长度从40到2048bit可变,加密时也把明文分成块,块的大小可变,但不能超过密钥的长度,RSA算法把每一块明文转化为与密钥长度相同的密文块。密钥越长,加密效果越好,但加密解密的开销也大,所以要在安全与性能之间折衷考虑,一般64位是较合适的。RSA的一个比较知名的应用是SSL,在美国和加拿大SSL用128位RSA算法,由于出口限制,在其它地区(包括中国)通用的则是40位版本。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。
3.3.3 RSA算法和DES算法的比较
DES算法和RSA算法各有优缺点,我们可以对DES算法和RSA算法在以下几个方面作一比较。
加密速度比较
在加密、解密的处理效率方面,DES算法优于RSA算法。因为DES密钥的长度只有56比特,可以利用软件和硬件实现高速处理;RSA算法需要进行诸如200比特整数的乘幂和求模等多倍字长的处理,处理速度明显慢于DES算法。
由于进行的都是大素数的计算,使得RSA最快的情况也比DES慢上100倍。无论是软件还是硬件实现,速度一直是RSA的缺陷。一般来说只用于少量数据加密。
密钥管理比较
在密钥的管理方面,RSA算法比DES算法更加优越。因为RSA算法可采用公开形式分配加密密钥,对加密密钥的更新也很容易,并且对不同的通信对象,只需对自己的解密密钥保密即可;DES算法要求通信前对密钥进行秘密分配,密钥的更换困难,对不同的通信对象,DES需产生和保管不同的密钥。
安全性比较
DES 算法具有极高安全性,到目前为止,除了用穷举搜索法对DES 算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES 密钥的长度再增长一些,以此来达到更高的保密程度。
RSA 的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 RSA 就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA 的一些变种算法已被证明等价于大数分解。不管怎样,分解n 是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n 必须选大一些,因具体适用情况而定。
在安全性方面,DES 算法和RSA 算法的安全性都较好,还没有在短时间内破译它们的有效的方法。
基于以上各点的对比分析,可以看出对于普通的商业型应用,使用安全性比较高的对称加密算法比较合适。典型的对称密码算法――DES 算法存在弱密钥问题,另外DES 算法的所以S-盒都是固定的,而又没有明显的理由说明为什么要这样设置S-盒,导致很多研究者怀疑DES 算法存在陷门。NIST (美国国家标准技术研究所)公布了AES 算法,它将成为21世纪的加密标准。
3.4 AES 算法介绍
AES 算法[32-33]是NIST 确定用来代替DES 算法新的高级加密算法,它具有很强的安全性,
并且其加密的信息块长度和加密密钥长度都是可变的,它们都可以是128比特、192比特、256比特。为了方便数据的计算和算法的描述,本文中以192比特的信息块为例,假设信息块是19110...m m m ,写成字节的形式就是353130151110050100............a a a a a a a a a ,或者写成字的形式就是510...ωωω。如图4-1所式。
012345
图4-1 192比信息的字表示
同样也可以对加密密钥做类似的处理。设N b 为信息块经上述处理后得到的字的个数,N k 为加密密钥经过上述处理后所得到的字的个数。那么根据信息块的长度,N b =4,6,8,