公文加密论文

上传人:无*** 文档编号:78446843 上传时间:2022-04-21 格式:DOC 页数:37 大小:303.01KB
收藏 版权申诉 举报 下载
公文加密论文_第1页
第1页 / 共37页
公文加密论文_第2页
第2页 / 共37页
公文加密论文_第3页
第3页 / 共37页
资源描述:

《公文加密论文》由会员分享,可在线阅读,更多相关《公文加密论文(37页珍藏版)》请在装配图网上搜索。

1、 引言自计算机网络产生以来信息安全就一直是一个很重要的研究课题。特别是在当前,信息安全的研究和应用更是达到空前的繁荣。信息社会需要高度可靠的安全技术。虽然我们的信息产业发展很快,但是安全技术过分依赖于国外的技术和产品。学习和研究外国的先进技术, 发展我们自己的安全技术和产品是一个紧迫而又重要的任务。1 背景概述1.1 电子政务以及公文无纸化人们普遍使用计算机来提高个人工作效率,但是在需要许多人一起协同工作的现代工作环境中,我们更需要提高我们的整体工作效率。利用网络通讯基础及先进的网络应用平台,建设一个安全、可靠、开放、高效的信息网络和办公自动化、信息管理电子化系统,为管理部门提供现代化的日常办

2、公条件及丰富的综合信息服务,实现档案管理自动化和办公事务处理自动化,以提高办公效率和管理水平,实现企业各部门日常业务工作的规范化、电子化、标准化,增强档案部门文书档案、人事档案、科技档案、 财务档案等档案的可管理性,实现信息的在线查询、借阅。最终实现“无纸”办公。办公实际就是文件的制作、修改、传递、签订、保存、销毁、存档的过程。那么随着文件的这一流程,产生了各种各样的设备。随着技术的发展,计算机网络技术的进步,办公自动化网络的建设也得到了大力推广。1.1.1传统的办公模式图1.1传统的办公模式示意图如图1.1所示。传统的办公模式主要以纸介质为主,在信息革命的浪潮中,显然已经远远不能满足高效率、

3、快节奏的现代工作和生活的需要。如何实现信息处理的自动化和办公的无纸化逐步得到了人们的重视。1.1.2网络化办公模式Internet/Intranet的迅猛发展,为信息的交流和共享,团队的协同运作提供了技术的保证,同时也预示着网络化办公时代来临。图1.2网络化办公模式示意图如图1.2所示。现有办公自动化系统和大型信息管理系统中,企业业务流程重组或者是文件流转功能都是核心功能。企业办公主要是一个文件流转的过程。公文的处理功能已经成为办公自动化和大型信息管理系统的核心功能。1.2 安全问题在电子政务和办公无纸化的同时,也出现了各种各样的安全问题。例如对公文的截获,修改公文,伪造公文等。公文的保密性和

4、完整性受到了越来越多的威胁。由于公文在现实生活中比商业信息还敏感,因此公文的安全性也获得越来越多的重视。为了安全、可靠、快速的实现对公文的处理,实现了这个内部公文处理系统。这个系统实现了对内部公文的一系列处理,包括对内部公文进行加密和解密,进行数字签名和验证数字签名,密钥对的生成和分发等。2 系统概述2.1 系统开发工具简介Visual Studio.NET 是一套完整的开发工具,用于生成各种应用程序。Visual Basic.NET、Visual C+.NET、Visual C#.NET 和 Visual J#.NET 全都使用相同的集成开发环境 (IDE),该环境允许它们共享工具并有助于创

5、建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,此框架提供对简化应用程序和系统开发的关键技术的访问。此外,除了生成高性能的应用程序外,还可以使用 Visual Studio 基于组件的强大开发工具和其他技术,简化基于团队的企业级解决方案的设计、开发和部署。在Visual Studio中可以使用微软基础类库(MFC,Microsoft Fundamental Classes).通过MFC的使用,可以调用许多已经写好的基础类。通过这种方式,可以大大简化开发过程、提高开发效率、产生更优秀的应用程序。2.2 系统实现功能简介在这个系统中,通过VC实现了内部公文的加密和解

6、密,签名和签名验证,数字认证的发放和管理等内部公文的处理。实现的主要功能有:(1) 对文件的加密和解密。即数据的发送方在发送数据时,先用一种加密算法进行加密以保证数据的保密性。这里可以使用DES算法进行加密和解密,也可以使用混合加密算法进行加密和解密。这里的加密只是对报文的加密,不会涉及到密钥的加密。(2) 对文件进行签名。即数据的发送方在发送数据的同时利用单向的Hash函数或者其它信息文摘算法计算出所传输数据的消息文摘,并将该消息文摘作为数字签名随数据一同发送。接收方在收到数据的同时也收到该数据的数字签名,接收方使用相同的算法计算出接收到的数据的数字签名,并将该数字签名和接收到的数字签名进行

7、比较,若二者相同,则说明数据在传输过程中未被修改,数据完整性得到了保证。(3) 对文件的加密以及签名。在这里可以将上述的两个功能进行合并。在发送方发送文件之前,先用一种加密算法进行加密,然后对加密后的报文进行数字签名。这样一方面可以保证数据的保密性,另一方面也可以保证数据的完整性。(4) 密钥对的管理。对于使用这个系统的每个用户系统都应该为其生成两个密钥对。其中一对密钥用来进行混合加密算法的加密和解密。另外一对密钥用来进行数字签名。当密钥对生成后,应当将其保存起来。由于数据格式比较复杂,包括用户名称、密钥对、生成日期,所以采用Access数据库进行密钥对的保管。2.3 系统中采用的关键技术在这

8、个系统中采用了一种混合加密的关键技术。这个系统中实现了DES算法和混合加密算法。对文件进行加密和解密可以单独采用DES算法,也可以采用混合加密。混合加密就是在发送方发送文件之前,先用接收双方的DES密钥对报文进行加密,然后将用接收方的公钥加密后的DES私钥附在加密后的报文后面。当接收方接收到文件后。先用自己的私钥对报文后的加密块进行解密。然后将解密得到的DES密钥将加密后的报文进行解密。通过这样就可以将DES算法和RSA算法很有效的结合在一起了。通过这种方式,一方面可以结合各自的优点,克服各自的缺点;另一方面,可以加强保密强度,使得即使获得了密文破解这个密文也很困难。美国的保密增强邮件(PEM

9、)就是采用DES和RSA结合的方法,目前已经成为EMAIL保密通信的标准。3 系统实现原理3.1 网络安全及数据加密技术从本质上看,网络安全就是网络上的信息安全。从广义上来说,凡是涉及到网络信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。数据加密技术是一门古老而深奥的学科,它对一般人来说是陌生的,因为长期以来,它只在很少的范围内,如军事、外交、情报等部门使用。数据加密技术是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。在国外,它已成为计算机安全主要的研究方向,也是计算机安全课程教学中的主要内容。数据加密过程就是通过加密

10、系统把原始的数字信息(明文),按照加密算法变换成与明文完全不同的数字信息(密文)的过程,如图3.1所示。图3.13.2 DES算法原理3.2.1DES算法简介美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的(通常称为DES 密码算法要求)主要为以下四点:(1) 提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改。(2) 具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握。(3) DES密码体制的安全性应该不依赖于算法的保密,

11、其安全性仅以加密密钥的保密为基础。(4) 实现经济,运行有效,并且适用于多种完全不同的应用。 1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES Data Encryption Standard)。 DES主要采用替换和移位的方法加密。它用56位密钥对64位二进制数据块进行加密,每次加密可对64位的输入数据进行16轮编码,经一系列替换和移位后,输入的64位原始数据转换成完全不同的64位输出数据。DES算法仅使用最大为64位的标准算术和逻辑运算,运算速度快,密钥生产容易,适合于在当前大多数计算机上用软件方法实现,同时也适合于在专用芯片上实现。DES算法

12、的弱点是不能提供足够的安全性,因为其密钥容量只有56位。由于这个原因,后来又提出了三重DES或3DES系统,使用3个不同的密钥对数据块进行(两次或)三次加密,该方法比进行普通加密的三次快。其强度大约和112比特的密钥强度相当。3.2.2DES算法详述DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。DES算法是这样工作的:如Mode为加密,则用Key 去把

13、数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。3.2.3DES算法图解DES的算法是对称的,既可用于加密又可用于解密。算法粗框图如图3.2所示。

14、其具体运算过程有如下七步:图3.23.2.4 DES算法的应用DES主要的应用范围有以下几个方面:(1) 计算机网络通信。对计算机网络通信中的数据提供保护是DES的一项重要应用。但这些被保护的数据一般只限于民用敏感信息,即不在政府确定的保密范围之内的信息(2) 电子资金传送系统。采用DES的方法加密电子资金传送系统中的信息,可准确、快速的传送数据,并较好的解决了信息安全的问题。(3) 保护用户文件。用户可自选密钥对重要文件进行加密,防治未授权的用户窃密。(4) 用户识别。DES还可以用于用户识别系统中。3.3 RSA算法原理3.3.1RSA 算法的简介该算法于1977年由美国麻省理工学院MIT

15、(Massachusetts Institute of Technology)的Ronal Rivest,Adi Shamir和Len Adleman三位年轻教授提出,并以三人的姓氏Rivest,Shamir和Adlernan命名为RSA算法。该算法利用了数论领域的一个事实,那就是虽然把两个大质数相乘生成一个合数是件十分容易的事情,但要把一个合数分解为两个质数却十分困难。合数分解问题目前仍然是数学领域尚未解决的一大难题,至今没有任何高效的分解方法。与Diffie-Hellman算法相比,RSA算法具有明显的优越性,因为它无须收发双方同时参与加密过程,且非常适合于电子函件系统的加密。它是第一个既

16、能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。RSA简洁幽雅,但计算速度比较慢,通常加密中并不是直接使用RSA 来对所有的信息进行加密,最常见的情况是随机产生一个对称加密的密钥,然后使用对称加密算法对信息加密,之后用RSA对刚才的加密密钥进行加密。需要说明的是,当前小于1024位的N已经被证明是不安全的。自己使用中不要使用小于1024位的RSA,最好使用2048位的。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

17、RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。 RSA的缺点主要有:(1) 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。(2) 分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET( Secure Electronic Transaction )协议中要求CA采用2048比特长

18、的密钥,其他实体使用1024比特的密钥。3.3.2RSA算法的原理详解RSA公共密钥加密算法的核心是欧拉(Euler)函数。对于正整数n,(n)定义为小于n且与n互质的正整数的个数。例如(6) = 2,这是因为小于6且与6互质的数有1和5共两个数;再如(7) = 6,这是因为互质数有1,2,3,5,6共6个。函数的两个性质:性质1:如果p是质数,则(p) = (p1)。性质2:如果p与q均为质数,则(pq) = (p)(q) = (p1)(q1)。RSA算法正是注意到这两条性质来设计公共密钥加密系统的,p与q的乘积n可以作为公共密钥公布出来,而n的因子p和q则包含在专用密钥中,可以用来解密。如

19、果解密需要用到(n),收信方由于知道因子p和q,可以方便地算出(n) = (p1)(q1)。如果窃听者窃得了n,但由于不知道它的因子p与q,则很难求出(n)。这时,窃听者要么强行算出(n),要么对n进行因数分解求得p与q。然而,我们知道,在大数范围内作合数分解是十分困难的,因此窃密者很难成功。有了关于函数的认识,我们再来分析RSA算法的工作原理:(1) 密钥配制。设m是要加密的信息,任选两个大质数p与q,选择正整数e,使得e与(n) = (p1)(q1)互质。利用辗转相除法,计算d,使得ed mod (n) = 1,即ed = k(n) +1,其中k为某一正整数。公共密钥为(e,n),其中没有

20、包含任何有关n的因子p和q的信息。专用密钥为(d,n),其中d隐含有因子p和q的信息。(2) 加密过程。使用公式对明文m进行加密,得密文c。(3) 解密过程。使用(d,n)对密文c进行解密,得明文m. 关于RSA算法,还有几点需要进一步说明:(1) 之所以要求e与(p1)(q1)互质,是为了保证 ed mod (p1)(q1)有解。(2) 实际操作时,通常先选定e,再找出并确定质数p和q,使得计算出d后它们能满足公式(12-3)。常用的e有3和65537,这两个数都是费马序列中的数。费马序列是以17世纪法国数学家费马命名的序列。(3) 破密者主要通过将n分解成pq的办法来解密,不过目前还没有办

21、法证明这是唯一的办法,也可能有更有效的方法,因为因数分解问题毕竟是一个不断发展的领域,自从RSA算法发明以来,人们已经发现了不少有效的因数分解方法,在一定程度上降低了破译RSA算法的难度,但至今还没有出现动摇RSA算法根基的方法。(4) 在RSA算法中,n的长度是控制该算法可靠性的重要因素。目前129位、甚至155位的RSA加密勉强可解,但目前大多数加密程序均采用231、308甚至616位的RSA算法,因此RSA加密还是相当安全的。据专家测算,攻破512位密钥RSA算法大约需要8个月时间;而一个768位密钥RSA算法在2004年之前无法攻破。现在,在技术上还无法预测攻破具有2048位密钥的RS

22、A加密算法需要多少时间。美国Lotus公司悬赏1亿美元,奖励能破译其Domino产品中1024位密钥的RSA算法的人。从这个意义上说,遵照SET协议开发的电子商务系统是绝对安全的。3.3.3RSA算法图解算法粗框图如图3.3所示。其具体运算过程有如下三步:(1) 加密。(2) 密钥传递。(3) 解密。图3.33.3.4素数及其产生在利用RSA算法进行加密或者是进行数字签名时,它的安全性在很大程度上依赖以密钥的生成。而密钥的生成有来源于素数的产生。因而安全快捷的产生大素数对于RSA的应用是很重要的。在现实中用来进行素数产生的算法有以下几种:(1) Solovag-StrassonRobert S

23、olovag和Volker Strasson开发了一种概率的基本测试算法。这个算法使用了雅可比函数来测试p是否为素数:选择一个小于p的随机数a。如果GCD(a,p)1,那么p通不过测试,它是合数。计算j=a(p-1)/2 mod p。计算雅可比符号J(a,p)。如果jJ(a,p),那么p肯定不是素数。如果j=J(a,p),那么p不是素数的可能性值多是50%数a被称为一个证据,如果a不能确定p,p肯定不是素数。如果p是合数。随机数a是证据的概率不小于50%。对a选择t个不同的随机值,重复t次这种测试。p通过所有t次测试后,它是合数的可能性不超过1/2t。(2) Lehmann另一种更简单的测试是

24、由Lehmann独自研究的。下面是它的测试算法: 择一个小于p的随机数a。 计算a(p-1)/2 mod p 如果a(p-1)/21或-1(mod p),那么p肯定不是素数。 如果a(p-1)/2=1或-1(mod p),那么p不是素数的可能性值多是50%同样,重复t次,那么p可能是素数所冒的错误风险不超过1/2t。(3) Rabin-Miller这是个很容易且广泛使用的简单算法,它基于Gary Miller的部分象法,有Michael Rabin发展。事实上,这是在NIST的DSS建议中推荐的算法的一个简化版。首先选择一个待测的随机数p,计算b,b是2整除p-1的次数。然后计算m,使得n=1

25、+(2b)m。选择一个小于p的随机数a。 j=0且z=am mod p 如果z=1或z=p-1,那么p通过测试,可能使素数 如果j0且z=1, 那么p不是素数 设j=j+1。如果jb且zp-1,设z=z2 mod p,然后回到(4)。如果z=p-1,那么p通过测试,可能为素数。 如果j=b 且zp-1,不是素数这个测试较前一个速度快。数a被当成证据的概率为75%。这意味着当迭代次数为t时,它产生一个假的素数所花费的时间不超过1/4t。实际上,对大多数随机数,几乎99.99%肯定a是证据。3.3.5大数库RSA依赖大数运算,目前主流RSA算法都建立在512位到1024位的大数运算之上,所以我们在

26、现阶段首先需要掌握1024位的大数运算原理。 大多数的编译器只能支持到64位的整数运算,即我们在运算中所使用的整数必须小于等于64位,即:0xffffffffffffffff也就是18446744073709551615,这远远达不到RSA的需要,于是需要专门建立大数运算库来解决这一问题。最简单的办法是将大数当作字符串进行处理,也就是将大数用10进制字符数组进行表示,然后模拟人们手工进行“竖式计算”的过程编写其加减乘除函数。但是这样做效率很低,因为1024位的大数其10进制数字个数就有数百个,对于任何一种运算,都需要在两个有数百个元素的数组空间上做多重循环,还需要许多额外的空间存放计算的进位退

27、位标志及中间结果。当然其优点是算法符合人们的日常习惯,易于理解。 另一种办法是将大数当作一个二进制流进行处理,使用各种移位和逻辑操作来进行加减乘除运算,但是这样做代码设计非常复杂,可读性很低,难以理解也难以调试。大数库就是一个大的素数的集合。RSA算法可以自己设置自己的大数库,使破解者不容易分析出您使用的算法是什么。3.3.6RSA 算法的速度和安全性由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 RSA就一定需

28、要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA 的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n 必须选大一些,因具体适用情况而定。3.3.7RSA算法的危险(1) RSA的选择密文攻击RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装,让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息(2) RSA的公共模数攻击若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该

29、信息无需私钥就可得到恢复。3.3.8DES加密算法和RSA加密算法的结合正如上述,DES算法仅使用最大为64位的标准算术和逻辑运算,运算速度快,密钥生产容易,适合于在当前大多数计算机上用软件方法实现,同时也适合于在专用芯片上实现。DES算法的弱点是不能提供足够的安全性,因为其密钥容量只有56位。另一方面,在对称加密系统中无法实现安全快速的DES密钥的分发。RSA算法的优点是密钥空间大。RSA算法的保密强度随着密钥长度的增加而增强。但是,密钥越长,用来进行加密和解密的时间也越长。具体的讲,RSA算法的缺点有:产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。分组长度太大,为保证安全,

30、n至少也要600bits以上,使运算代价太高,尤其是速度太慢,较对称加密算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利用数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特长的密钥RSA的速度由于进行的都是大数计算,使得RSA最快的情况也是比DES慢上100倍,无论是软件还是硬件的实现。速度一直是RSA的缺陷。一般来说,只采用RSA加密算法进行少量数据的加密。RSA加密算法和DES加密算法的优缺点正好互补。RSA的密钥长,加密速度慢,而采用DES加密算法正好弥补了RSA加

31、密算法的缺点。即DES用于明文的加密,RSA用于DES密钥的加密。由于DES加密速度快,因而适合加密较长的报文;而RSA可以解决DES密钥分发的问题。美国的保密增强邮件(PEM)就是采用DES和RSA结合的方法,目前已经成为EMAIL保密通信的标准。3.4 数字签名计算机网络应用特别是电子政务应用的飞速发展,对数据完整性以及身份鉴定技术提出了新的要求。数字签名、身份认证就是为了适应这种需要在密码学中派生出来的新技术和新应用。数据传输的完整性通常通过数字签名的方式来实现,即数据的发送方在发送数据的同时利用单向的Hash函数或者其它信息文摘算法计算出所传输数据的消息文摘,并将该消息文摘作为数字签名

32、随数据一同发送。接收方在收到数据的同时也收到该数据的数字签名,接收方使用相同的算法计算出接收到的数据的数字签名,并将该数字签名和接收到的数字签名进行比较,若二者相同,则说明数据在传输过程中未被修改,数据完整性得到了保证。常用的消息文摘算法包括SHA、MD4和MD5等。基本的签名过程就是对信息形成摘要,附属在信息中一起传给接受方。接受方通过解密该信息串获得信息和摘要(签名),并同时对信息形成摘要,并比较两个摘要,如果相同,则说明信息未被篡改。并同时验证了发送者。3.4.1数字签名过程假设A要发送一个电子文件给B。 (1)系统初始化:选择签名所需的算法、参数。(2)产生签名:A用其私钥加密文件并发

33、送给B。(3)签名验证:B用A的公钥解开A送来的文件。签名体制是由签名算法、验证算法构成,实现过程如图3.4所示:图3.4具体的实现过程是:首先数据的发送方在发送数据的同时利用单向的Hash函数或者其它信息文摘算法计算出所传输数据的消息文摘,并将该消息文摘作为数字签名随数据一同发送。然后当接收方在收到数据的同时也收到该数据的数字签名,接收方使用相同的算法计算出接收到的数据的数字签名,并将该数字签名和接收到的数字签名进行比较,若二者相同,则说明数据在传输过程中未被修改,数据完整性得到了保证。3.4.2数字签名五个特征(1) 签名是可信的。因为B是用A的公钥解开加密文件的,这说明原文件只能被A的私

34、钥加密而只有A才知道自己的私钥。(2) 签名是无法被伪造的,因为只有A知道自己的私钥。因此只有A能用自己的私钥加密一个文件。(3) 签名是无法重复使用的,签名在这里就是一个加密过程,自己无法重复使用。对于不同的文件,单向Hash函数会产生不同的消息摘要,即不同的文件的数字签名也是不同的。(4) 文件被签名以后是无法被篡改的,因为加密后的文件被改动后是无法被A的公钥解开的。(5) 签名具有不可否认性,因为除A以外无人能用A的私钥加密一个文件。3.4.3 数字签名的作用(1) 可验证:签字是可以被确认的。(2) 防抵赖:抵赖就是发送者事后不承认发送报文并签名。数字签名可以防止抵赖的出现。(3) 防

35、假冒:假冒就是攻击者冒充发送者向收方发送文件。数字签名可以防止假冒的出现。(4) 防篡改:篡改就是收方对收到的文件进行修改。数字签名可以防止篡改的出现。(5) 防伪造:伪造就是收方伪造对报文的签名。数字签名可以防止伪造的出现。3.5 数字证书3.5.1数字证书简介数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-CA机构,又称为证书授权(Certificate Authorit y)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包

36、含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一 个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息。3.5.2数字证书实现原理 数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样信息就可以安全无误地到达目的地了。通过数字的手段保证加密过程是一个

37、不可逆过程,即只有用私有密钥才能解密。3.5.3数字证书的目的由于在电子政务系统中处理的都是十分敏感的公文信息,因此电子政务系统必须保证具有十分可靠的安全保密技术,也就是说,必须保证网络安全的四大要素,即信息传输的保密性、发送接收双方身份的确定性、信息的不可否认性、数据交换的完整性。 (1) 信息传输的保密性。传递中的公文具有保密的要求。公文的内容对外界而言是不可访问的。(2) 发送接收双方身份的确定性。在发送公文时,发送方和接收方应该是确定的。(3) 信息的不可否认性。由于公文信息是具有时效性的,这就要求保证接收方的不可抵赖性。(4) 数据交换的完整性(不可修改性)。传送的公文是不可被修改的

38、。公文要能做到不可修改,以保障公文的严肃性和公正性。3.5.4证书授权中心CA机构,又称为证书授证(Certificate Authority)中心,作为电子政务中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。 为保证用户之间在网上传递信息的安全性、真实性、可靠性、完整性和不可抵赖性,不仅需要对用户的身份真实性进行验证,也需要有一个具有

39、权威性、公正性、唯一性的机构,负责向电子政务的各个主体颁发并管理符合国内、国际安全电子政务协议标准的电子政务安全证书。3.5.5数字证书的应用数字证书可以应用于互联网上的电子商务活动和电子政务活动,其应用范围涉及需要身份认证及数据安全的各个行业,包括传统的商业、制造业、流通业的网上交易,以及公共事业、金融服务业、工商税务、海关、政府行政办公、教育科研单位、保险、医疗等网上作业系统。4 系统设计4.1 需求分析随着电子政务实施的不断深入,电子公文的安全问题得到了越来越多的关注。电子公文是在网络上进行传递,但这个网络是不安全的,存在各种各样的安全问题。例如:(1)否认。发送者事后不承认已经发送过的

40、文件。(2)伪造。接收者伪造一份来自发送者的文件。(3)修改。接收者私自修改接收到的文件。(4)冒充。网络中某一用户冒充发送者或接收者。因此电子公文在这样的网络中进行传送是很不安全的。另外信息内容传输要有高度安全性。电子政务系统中的信息比商业信息更为敏感,对信息传输过程的安全性要求特别高。在实际公文的传递过程中,各种公文对安全性的要求是不同的,实现方法也不同。大致可以分成以下几种情况:(1) 保证公文的保密性,对公文进行加密,只要经过加密就可以将公文发送出去。例如某些内部通知,只要保证公文的保密性。这个要求的实现方法是对公文进行加密,加密后的公文然后在网络上进行传送时受到的安全威胁就比较小。(

41、2) 保证公文的完整性、不可否认性的保护。只要进行数字签名就可以实现这个目的。例如某些政府内部的表格,只要保证完整性和不可否认性即可,其内容本身是不保密的。可以通过对要发送的公文进行数字签名来保证公文的完整性和发送方和接收方的不可抵赖性。(3) 由于某些文件不但内容敏感,而且文件的时效性也很强。这样的话,一方面,要保护好公文的保密性,使得公文的内容不会外泄。另一方面,要保证发送方和接受方不会发生抵赖行为。这种要求的解决方法就是首先对文件进行加密操作,然后对文件进行数字签名就可以达到这个目的。 由于在进行加密和数字签名的过程中都会使用到密钥,于是就存在一个密钥管理的问题。密钥的管理不好,密钥可能

42、就被无意识的泄露。并不是有了密钥就可以保证完全的安全,任何保密也只是相对的,是有时效性的。要管理好密钥应该注意以下两个方面:(1) 密钥使用的时效和次数。一般强调仅将一个对话密钥用于一条信息或者是一次对话中,或者建立一种按时更换密钥的机制以减少密钥暴露的可能性。(2) 多密钥的管理。假设在某机构中有100个用户,如果他们任意两人之间可以进行秘密对话,如果任意两个人之间要使用不同的密钥,则总共需要4950个密钥,而且每个用户需要记住99个密钥。如果结构的人数是1000或者是10000人,密钥的管理将是一件很可怕的事情。一个加密系统的全部安全性是基于密钥的,而不是基于算法,所以加密系统的密钥管理是

43、一个非常重要的问题。现代密码学的一个基本原则就是一切秘密存在与密钥之中。加密算法可以公开,加密设备可以丢失,如果密钥丢失则敌人就可以完全破译信息。另外窃取密钥的代价要比破译加密算法的代价小得多。在网络攻击的许多事件中密钥的安全管理是攻击的一个主要环节。因此,为提高系统的安全性必须加强密钥的管理。密钥管理是一件综合性的事情。密钥的安全保护是系统安全的一个方面。密钥管理包括密钥的生成、分发、存储、销毁、使用等一系列的过程。(1) 密钥生成.密钥长度应该足够长.一般来说,密钥的长度越长,对应的密钥空间就越大,攻击者使用穷举猜测密码的难度就越大。(2) 密钥的分发。采用对称加密算法进行保密通信,需要共

44、享同一个密码.通常是系统中的一个用户先选择一个秘密密钥,然后将这个秘密密钥传送给需进行通信另一用户。对于大型网络,每对用户必须交换密钥,n个人的网络总的交换次数就是n(n+1)/2次,这种情况下,通常建造一个密钥管理中心来负责密钥的管理(3) 验证密钥。密钥附着一些检错和纠错位来传输,当密钥在传输过程中发生了错误是,能很容易的检查出来,并且需要的话,密钥可以进行重传。(4) 更新密钥。当密钥需要频繁的更新时,频繁进行新的密钥的分发的确是件困难的事情。一种很容易的解决办法就是从旧的密钥中产生新的密钥,有时称这个过程为密钥的更新。(5) 存储密钥。密钥可以存储在许多地方,例如人脑、磁条卡、智能卡中

45、,或者采用密钥加密密钥的方法进行密钥的保存。(6) 备份密钥。密钥的备份可以采用密钥托管、密钥分割、密钥共享等方式。(7) 密钥的有限期。加密密钥不能无限期的使用,有以下几个原因:密钥使用时间越长,它泄露的机会就越大;如果密钥已经泄露了,那么密钥使用地越久,损失就越大;密钥使用时间越久,人们花费精力破解它的诱惑力就越大甚至采用穷举攻击法;对用同一个密钥加密的多个密文进行分析一般比较容易。(8) 销毁密钥。如果密钥必须替换,旧钥就必须销毁,密钥必须物理的销毁。公开密钥的密钥管理。无论网络上有多少个用户,每个用户只要使用一个公开密钥。使用一个公钥/私钥对是不够的。任何好的公钥密码的实现需要把加密密

46、钥和数字签名密钥分开。4.2 系统设计在一个机构实施内部公文加密系统,该系统的体系结构如图4.1所示:图4.14.2.1系统认证中心 CA CA是Certificate Authority的缩写,是认证中心的意思。在电子政务系统中,所有单位的数字证书都是由CA来发放的。一个完整的电子政务系统中,必须建立一个完整的合理的CA体系。CA为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。为保证公文在网络上进行传递时的安全性、真实性、可靠性、完整性和不可抵赖性,不仅需要对发送和接收双方的真实身份进

47、行验证,也需要一个具有权威性、公正性、唯一性的机构,负责向系统中的所有用户发放数字证书。在这个系统中CA是本单位的权威机构。它主要完成以下几个功能:(1) 密钥对的生成。主要是根据用户提交的素数p和素数q的长度来生成素数p和素数q,然后根据这两个素数来生成密钥对。(2) 密钥对的保存。主要是实现对密钥对的保管。由于要保存的信息较多,有用户信息,密钥信息,还有密钥对的生成时间信息,所以不适合直接保存在文本文件中,采用数据库来保持这些信息是一个很好的选择。由于这是在一个内部网络上用来进行公文处理的系统,所以不考虑和其他单位进行数据通信,不用考虑数字证书上的兼容性,而且进行公文通信的单位很有限,为了

48、使得整个系统的简明高效,在保存密钥对的同时,只将用户名和生成日期保存进去。(3) 密钥对的生存期的管理。由于在现实生活中,长时间使用同样一对密钥来进行加密和解密以及数字签名是很危险的。这是因为一旦某个用户的密钥对被截获,如果不进行规律性的更改的话,那么后果是很可怕的。为了安全起见,在某个密钥对使用了一段时间后应该将其进行更换。在密钥对生成的时候记录下密钥对的生成时间,这样当它使用了一段时间后,系统就会提醒进行密钥对的更换。不同密钥应该有不同的有效期。数据密钥的有效期主要依赖数据的价值和给定时间里加密数据的数量。价值和数据传送率越大的密钥要更换越频繁。密钥加密密钥不需要频繁的更换,它们只是偶尔地

49、用作密钥交换。在某些应用中,密钥加密密钥仅一月或一年一次。用来加密保存数据文件的加密密钥不能 经常地更换。通常是每个文件用唯一的密钥加密,然后再用密钥加密密钥对所有的密钥加密。密钥加密密钥要么保持在一个安全的地点,或者记忆下来。公开密钥密码应用中的私钥的有限期是根据应用的不同而变化的。用作数字签名和身份鉴别的私钥必须持续数年甚至终生。(4)密钥对的分发。通过邮递或者信使护送密钥,起安全性取决于信使,因为信使有被收买的可能性,并且这种方法的传输量和存储量都很大。人们希望设计满足两个条件的协议:传输量和存储量都很小;每一对用户都能独立的计算一个秘密密钥。目前已经设计出了满足上述两个条件的密钥分配协

50、议,如Hellman密钥交换协议,它通过两个或多个成员在一个公开的信道上通信联络来建立秘密密钥。在这个系统中由于是在一个内部网络上来实现密钥对的发放,因此为了整个系统的简明高效,就直接采用物理的方式来进行密钥对的分发。在这个系统中数字认证中心(CA)是通过这种方式来实现的。首先有密钥对生成模块进行密钥对的生成,然后可以将这些生成的密钥对保存在数据库中。当进行混合加密解密,数字签名要用到RSA算法的密钥对时可以到数据库中进行查询。为了体现文件加密的简明高效,这个系统采用Access数据库来保存生成的密钥对。在数字认证中心保存着两张表,其中一张表保存了这个系统的所有用户的密钥对。另外一张表保存了所

51、有用户的公钥。在这个系统的密钥管理模块中,不仅仅是对密钥的一个静态的保存以及查阅,而且还可以实现对密钥对的有效期的管理。对一每个密钥对都设置一个时间值,在这个时间值结束前提醒用户进行密钥的更换。通过这种方式,可以有效的保护好密钥。4.2.2加密解密模块DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些

52、,以此来达到更高的保密程度。DES算法中只用到64位密钥中的其中56位,而第8、16、24、.64位8个位并未参与DES运算,这一点,提出了一个应用上的要求,即DES的安全性是基于除了8,16,24,.64位外的其余56位的组合变化256才得以保证的。因此,在实际应用中,我们应避开使用第8,16,24,.64位作为有效数据位,而使用其它的56位作为有效数据位,才能保证DES算法安全可靠地发挥作用。如果不了解这一点,把密钥Key的8,16,24,. .64位作为有效数据使用,将不能保证DES加密数据的安全性,对运用DES来达到保密作用的系统产生数据被破译的危险,这正是DES算法在应用上的误区,留

53、下了被人攻击、被人破译的极大隐患。RSA算法的优点是密钥空间大。RSA算法的保密强度随着密钥长度的增加而增强。但是,密钥越长,用来进行加密和解密的时间也越长。对于这个内部公文处理系统,加密解密模块是一个核心模块。为了提高加密的安全性,同时保证整个系统的简明高效,这个系统在加密解密模块中采用了DES算法和由DES算法和RSA算法组合而成的混合加密算法。系统的用户可以根据对安全性的不同要求而选择其中的一种算法进行加密。选择DES加密算法进行加密,就是直接使用DES加密算法来加密文件。而DES的密钥通过物理的方式来传递。当对方接收到一个加密后的文件,只需要用通过物理的方式获得的密钥对密文进行解密就可

54、以获得明文。这种方式的主要问题是密钥传递的问题。选择混合加密算法进行加密,就是先用DES加密算法对文件进行加密。而DES的密钥不再通过物理的方式传递,而是用接收方的RSA密钥对的公钥对DES密钥进行加密。最后将对方RSA密钥对的公钥加密后的DES密钥放在用DES加密产生的密文的后面,并在前面加上一个密钥标志。当接收方接收到一个混合加密所产生的密文时,首先在文件的后部检索到密钥标志并将其后面的密文块用自己的私钥进行解密,得到DES的密钥,最后用这个密钥对前面的密文解密就得到明文。4.2.3数字签名模块数据的发送方在发送数据的同时利用单向的Hash函数或者其它信息文摘算法计算出所传输数据的消息文摘

55、,并将该消息文摘作为数字签名随数据一同发送。接收方在收到数据的同时也收到该数据的数字签名,接收方使用相同的算法计算出接收到的数据的数字签名,并将该数字签名和接收到的数字签名进行比较,若二者相同,则说明数据在传输过程中未被修改,数据完整性得到了保证。常用的消息文摘算法包括SHA、MD4和MD5等。在这个系统中,数字签名是通过这种方式来实现的。首先利用DES加密算法或者是混合加密算法对文件进行加密。然后对MD5算法对密文产生一个信息摘要。再然后对这个信息摘要用发送方的公钥进行加密。最后将得到的密文和前面得到的加密块一起发送给对方。在接收方接收到了密文后,先用自己的私钥对后面的密文块进行解密,然后对

56、前面的密文块进行解密,再然后对前面的部分同样用MD5算法进行计算,如二者相同,则说明在传送过程中没有被修改过。这样数据的完整性得到了保证。5 系统实现5.1 加密解密模块的实现本模块的特点是:(1) 提供了三种功能:加密、签名、加密和签名。(2) 本系统的DES可以进行DES加密(标准DES加密)。系统提供了3种加解密接口:文件接口,文件句柄接口(可以供其他加密系统使用,本系统的混合加密模块就是使用这个接口),和内存缓冲区接口。另外它还能检验密钥的正确性,因为加密时,它将加密后的密钥密文也存入文件中,解密时,先用当前密钥解密密钥密文,如果所得的密钥明文与当前密钥相同,则当前密钥应该是正确的。实

57、现的界面如图4.2所示:图4.25.1.1系统实现功能在这个界面上部可以对输入输出文件进行选择。当选择了某一文件夹下的一文件进行加密后,默认的输出文件是在同一个文件夹下的以输入文件的文件名为前缀,以des为后缀的文件。当然还可以手动选择加密文件的保存文件夹或者是使用一个指定的默认的文件夹,例如C:WINDOWS下。当你对所选择的文件的内容不是很清楚是可以先打开文件在决定是否进行加密。当选择的文件是一个明文时,下面的按扭显示为“加密”;当选择的文件是一个本系统产生的密文时,下面的按扭显示为“解密”。接着系统要求用户输入用户名。然后按“确定”这个按扭,若所输入的用户名的确是系统的合法用户名,则可以

58、成功的将该用户的密钥从密钥库中提取出来。若所输入的用户名不是系统的合法用户名,则显示错误并提出警告。再接着可以做一些选项,有“加密后删除原文件”,“解密后删除加密文件”,“删除前提示”。做这些选项的目的是避免攻击者根据明文和密文而获得密钥。最后可以在界面的右下角做几种选择。其中包括:“加密/解密”,“签名”,“加密签名”和“退出”。当用户作了某种选择后,系统会用一个对话框提示用户是否进行该项操作,若选择“确定”,则进行该项操作;若选择“取消”,则不进行该项操作,而是回到主界面。5.1.2系统实现过程(1)混合加密算法的实现混合加密算法是这个系统的关键技术,它的实可以有效的将DES加密算法和RS

59、A加密算法的优缺点结合在一起,为公文提供更安全的保护。在这个系统中,混合加密算法的实现示意图如图4.3、图4.4所示: 图4.3图4.4混合加密的发送过程,如图4.3所示:首先,用一个DES密钥对明文进行加密得到一个密文块;然后将DES密钥用接收方的公钥进行加密得到加密后的DES密钥;再然后将它放在密文块的后面并加上一个密钥的标志;最后将加密后的DES密钥和密文块一起发送出去。这就完成了整个的发送过程。混合加密的接收过程如图4.4所示:当一个机构接收到一个密文时,先到密文的后面寻找一个密钥的标志并用自己的私钥对密钥标志后面的加密后的DES密钥进行解密,得到DES密钥;最后用DES密钥解密前面的

60、密文块,就得到了明文。这就完成了整个的接收过程。混合加密算法就是将DES加密算法和RSA算法的结合,实现代码如下:void CMixedCSDlg:EnableMcsCtls(bool show)if(show)GetDlgItem(IDC_MCSSTATIC)-EnableWindow(true);GetDlgItem(IDC_RSASTATICKEY)-EnableWindow(true);GetDlgItem(IDC_RSASTATICMOD)-EnableWindow(true);GetDlgItem(IDC_RsaKey)-EnableWindow(true);GetDlgItem(

61、IDC_RsaMod)-EnableWindow(true);GetDlgItem(IDC_InputRsaKey)-EnableWindow(true);GetDlgItem(IDC_InputRsaMod)-EnableWindow(true);GetDlgItem(IDC_Use3DESCHECK)-EnableWindow(true);elseGetDlgItem(IDC_MCSSTATIC)-EnableWindow(false);GetDlgItem(IDC_RSASTATICKEY)-EnableWindow(false);GetDlgItem(IDC_RSASTATICMOD)

62、-EnableWindow(false);GetDlgItem(IDC_RsaKey)-EnableWindow(false);GetDlgItem(IDC_RsaMod)-EnableWindow(false);GetDlgItem(IDC_InputRsaKey)-EnableWindow(false);GetDlgItem(IDC_InputRsaMod)-EnableWindow(false);GetDlgItem(IDC_Use3DESCHECK)-EnableWindow(false);(2)DES算法的实现CDES类的定义设计思想:将字节组转换成位组后,再进行处理就非常容易。在D

63、ES算法的实现过程中,系统实现了三种调用接口。使用方法:根据需要选择适当的加解密接口。类定义:class CDes: public CFileInOutpublic: boolEncrypt(const char *OutFile,const char *InFile,const char *KeyStr);/加密bool Decrypt(const char *OutFile,const char *InFile,const char *KeyStr);/解密 bool Encrypt(HFILE &fh_out,HFILE &fh_in,const char *KeyStr);/加密boolDecrypt(HFILE &fh_out,HFILE &fh_in,const char *KeyStr);/解密 boolEncrypt(char *Out,char *In,UINT len,const char *KeyStr=0);/加密 boolDecrypt(char *Out,char *In,UINT le

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!