数据的加密保护课稿.ppt

上传人:小飞机 文档编号:6296732 上传时间:2023-10-14 格式:PPT 页数:52 大小:560KB
返回 下载 相关 举报
数据的加密保护课稿.ppt_第1页
第1页 / 共52页
数据的加密保护课稿.ppt_第2页
第2页 / 共52页
数据的加密保护课稿.ppt_第3页
第3页 / 共52页
数据的加密保护课稿.ppt_第4页
第4页 / 共52页
数据的加密保护课稿.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《数据的加密保护课稿.ppt》由会员分享,可在线阅读,更多相关《数据的加密保护课稿.ppt(52页珍藏版)》请在三一办公上搜索。

1、第十二章,数据的加密保护,在信息时代,数据的安全越来越受到了关注。对于保存在计算机上的某些数据,我们希望其信息不被人所知;对于在网络上传输的重要数据,我们希望即使被敌方窃听之后也不会泄密。此时,将信息进行加密,就成了保障数据安全的首要方法。加密算法一般可分为对称加密、非对称加密和单向加密三类,由于其特点不同,在不同的系统中具有不同的应用范围,各类算法中都具有一些代表性算法。如对称加密体系中的DES、3DES、AES算法;非对称加密体系中的RSA、DSA算法;单向加密中的MD5、SHA算法等。,一般而言,加密体系中,其最核心的内容是加密算法和密钥;加密算法通常公开,加密系统的安全性决定于密钥的隐

2、蔽性,因此,密钥管理是加密系统中的重要工作。不同的语言对于加密算法的实现原理基本相同,本章以Java语言为例,实现了一些常见的加密解密算法。对于其他语言实现加密解密,读者可以参考其他文献。另外,本章还对密钥的安全进行了讲解。,12.1 加密概述,12.1.1 加密的应用,数据加密技术已经广泛应用于因特网电子商务、手机网络和银行自动取款机等领域信息被敌方获取并得知,可能被敌方用于非法的操作以获取利益加密是以某种特殊的算法将原有的信息数据进行改变未授权的用户即使获得了已加密的信息,但是因为无法知道解密的方法,仍然无法了解信息的内容加密系统中有如下重要概念:1:明文(plaintext):需要被保护

3、的消息;2:密文(ciphertext):将明文利用一定算法进行改变后的消息;3加密(encryption):将明文利用一定算法转换成密文的过程;4:解密(decryption):由密文恢复出明文的过程;,5:敌方:也称攻击者,通过各种办法,窃取机密信息,来达到非法的目的;6:被动攻击(passive attack);通过获取密文,其目的是经过分析得到明文,这是一类攻击的总称;7:主动攻击(active attack):非法入侵者采用篡改、伪造等手段向系统注入假消息等,这也是一类攻击的总称;8:加密算法:对明文进行加密时采用的算法;9:解密算法:对密文进行解密时采用算法;,密钥(key)包括加

4、密密钥(encryption key)和解密密钥(decryption key)加密算法和解密算法的操作通常是在一组输入数据的控制下进行的,这组输入数据就叫做密钥在加密时使用的密钥为加密密钥,解密时使用的密钥为解密密钥。在密码系统中,有两大主要要素:密码算法(加密算法和解密算法);密钥。“恺撒加密法”高卢战记描述,恺撒大帝曾经使用密码来传递信息,即所谓的“恺撒密码”。它是一种替代密码,通过将字母按顺序推后3位起到加密作用。如将字母A换作字母D,将字母B换作字母E,X、Y、Z字母分别又变为A、B、C字母。如“China”可以变为“Fklqd”;解密过程相反。,密钥是一种参数,它是在明文转换为密文

5、或将密文转换为明文的算法中输入的数据恺撒加密法的安全性来源于两个方面对密码算法本身的保密;对密钥的保密。加密之所以安全,是因为其密钥的保密,并非加密算法本身的保密密码算法一般公开将密钥进行保密如果攻击者要通过密文得到明文,除非对每一个可能的密钥进行穷举性测试,12.1.2 常见的加密算法,加密技术从本质上说是对信息进行编码和解码的技术加密是将可读信息(明文)变为代码形式(密文)解密是加密的逆过程,将密文变为明文加密算法一般可分为三类:对称加密;非对称加密;单向加密。,对称加密算法过程如下:1:发送方将明文用加密密钥和加密算法进行加密处理,变成密文,连同密钥一起,发送给接收方;2:接收方收到密文

6、后,使用发送方的加密密钥及相同算法的逆算法对密文解密,恢复为明文。,在对称加密算法中,双方使用的密钥相同解密方事先必须知道对方使用的加密密钥其算法一般公开优势是计算量较小、加密速度较快、效率较高不足之处是,通信双方都使用同样的密钥,密钥在传送的过程中,可能被敌方获取,安全性得不到保证密钥可以更换,但是使得双方所拥有的密钥数量很大,密钥管理较为困难。对称加密算法中,目前流行的算法有:DES;3DES;IDEA;AES;其中,AES由美国国家标准局倡导,作为新标准取代DES,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)公开密钥对外公开(可以通过网上发

7、布,也可以传输给通信的对方)私有密钥不公开利用非对称加密算法具有如下性质:如果用公开密钥对数据对其进行加密,那么只有用对应的私有密钥才能对其解密;如果用私有密钥对数据对其进行加密,那么只有用对应的公开密钥才能对其解密。,非对称加密算法的基本过程是:1:通信前,接收方随机生成一对公开密钥和私有密钥,将公开密钥公开给发送方,自己保留私有密钥;2:发送方利用接收方的公开密钥加密明文,使其变为密文;3:接收方收到密文后,使用自己的私有密钥解密密文,获得明文。使用得比较广泛的非对称加密算法RSA;美国国家标准局提出的DSA;等等。,非对称加密算法的保密性比较好只存在公开密钥在网络上的传输,而公开密钥被敌

8、方获取,也没有用基本不用担心密钥在网上被截获而引起的安全的问题加密和解密花费时间比较长、速度比较慢不适合于对大量数据的文件进行加密,而只适用于对少量数据进行加密。,另一类算法是单向加密算法。该算法在加密过程中,输入明文后由系统直接经过加密算法处理,得到密文,不需要使用密钥。既然没有密钥,那么就无法通过密文恢复为明文。那么这种方法有什么应用呢?主要是可以用于进行某些信息的鉴别。在鉴别时,重新输入明文,并经过同样的加密算法进行加密处理,得到密文,然后看这个密文是否和以前得到的密文相同,来判断输入的明文是否和以前的明文相同。这在某种程度上讲,也是一种解密。,单向加密该方法计算复杂通常只在数据量不大的

9、情形下使用,如计算机系统口令保护措施中应用较多单向加密算法的有:RSA公司发明的MD5算法;美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的SHA;等等。大多数语言体系(如.net、Java)都具有相关的API支持各种加密算法,提示,本书中对加密算法的实现,实际上利用了高级语言中包装的API。也就是说,我们并不对算法本身进行讲述,只对算法的实现进行介绍。实际上,在真实应用的场合,我们可以使用系统提供的加密解密函数进行加密解密,因为这些函数的发布,经过了严密的测试,理论上讲是安全的。,12.2 实现对称加密,对称加密算法发送方将明文和加密密钥一起经过加密算法处理,变成密文

10、,发送出去接收方收到密文后,使用加密密钥及相同算法的逆算法对密文解密,恢复为明文双方使用的密钥相同,要求解密方事先必须知道加密密钥从这里可以得出几个结论:1:加密时使用什么密钥,解密时必须使用相同的密钥,否则将无法对密文进行解密。2:对同样的信息,从理论上讲,不同的密钥,加密结果不相同;同样的密文,用不同的密钥解密,结果也应该不同。本节介绍三种流行的对称加密算法:DES、3DES和AES。在编程的过程中,力求用不同的构架来向读者展示加密和解密的过程。,12.2.1 用Java实现DES,DES数据加密标准(Data Encryption Standard)的简称来源于 IBM 的研究工作,并在

11、 1977 年被美国政府正式采纳最初开发DES是嵌入硬件中,后来在其他领域得到了发展DES算法的基本思想首先确定一个64位的初始密钥K(也称为主密钥)在这64位中,实际的密钥只有56位,另有8位是奇偶校验位分布于64位密钥中,每8位中有1 位奇偶检验位加密过程比较复杂,具体可以参考相关文献,DES进行攻击一般只能使用穷举的密钥搜索方法,即重复尝试各种密钥,直到找到符合的为止如果 DES使用56位的密钥,则可能的密钥数量是256个。在对称加密中,解密和加密的密钥一定要相同例:P12_01.java,提示,值得一提的是,在读者的机器上运行,密文的内容会不一样。因为KeyGenerator每次生成的

12、密钥是随机的,加密的结果肯定也不一样。这很容易理解,否则DES算法就没有安全性可言了。另外,本例中,加密和解密一定要是同一个密钥。,12.2.2 用Java实现3DES,3DES即三重DES是DES的加强版,也是DES的一个更安全的变形使用3个56位(共168位)的密钥对数据进行三次加密1999年,NIST将3-DES指定为DES向AES过渡的加密标准。3DES以DES为基本模块,通过组合分组方法设计出分组加密算法若三个密钥互不相同,本质上就相当于用一个长为168位的密钥进行加密,大大加强了数据的安全性若数据对安全性要求不高,可以让其中的两个密钥相等,这样,密钥的有效长度也有112位。在Jav

13、a的加密体系中,使用3DES非常简单,程序结构和使用DES时相同,只不过在初始化时将算法名称由“DES”改为“DESede”即可。P12_02.java,12.2.3 用Java实现AES,AES高级加密标准(Advanced Encryption Standard)的缩写NIST推出旨在取代DES的21世纪的加密标准提示AES算法又称Rijndael密码算法,该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael命名。,AES设计的密钥长度有:128,192,256位三种比DES的56密钥安全性能好得多P12_03.java是

14、用Java语言实现AES算法将一个字符串“郭克华_安全编程技术”先加密,然后用同样的密钥解密运行,效果如下:,12.3 实现非对称加密,非对称加密算法体系接收方产生一个公开密钥和一个私有密钥,公开密钥可以通过各种手段公开发送方将明文用接收方的公开密钥进行处理,变成密文,发送出去接收方收到密文后,使用自己的私有密钥对密文解密,恢复为明文在这种通信过程中,密钥由接收方产生,公开密钥公开,私有密钥保密该通信过程中,有如下几个特点:1:加密时使用的公开密钥,解密时必须使用对应的私有密钥,否则无法将密文解密。2:对同样的信息,可以用公开密钥加密,用私有密钥解密;也可以用私有密钥加密,用公开密钥解密。在应

15、付窃听上,前者用得较多,但是在对付信息篡改和抵赖上,后者用得较多。本节介绍2种流行的非对称加密算法:RSA和DSA。,12.3.1 用Java实现RSA,RSA算法出现于上个世纪70年代既能用于数据加密,也能用于数字签名由于其易于理解和容易操作,流行程度较广。该算法由Ron Rivest、AdiShamir和Leonard Adleman发明,也就以三人的名字命名被普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解虽然目前并没有从理论上证明破译RSA的难度与大数分解难度等价,不过这并不影响RSA的流行性。,RSA 可用于数字签名具体操作时考虑到安全性和信息量较大等因素,一般

16、可先作HASH运算。RSA最大的问题是运行时间较长无论是软件还是硬件实现,RSA的运行速度一直不能和DES相比一般来说只用于少量数据加密情况。P12_04.java是用Java语言实现RSA算法将一个字符串“郭克华_安全编程技术”先加密,然后用同样的密钥解密运行,效果如下:,12.3.2 DSA算法,数字签名算法(Digital Signature Algorithm,DSA)也是一种非对称加密算法被美国NIST作为数字签名标准(DigitalSignature Standard,DSS)DSA一般应用于数字签名中,在后面的章节将会讲解,12.4 实现单向加密,单向加密算法又称为不可逆加密算法

17、在加密过程中不需要使用密钥明文由系统加密处理成密文,密文无法解密一般适合于数据的验证。在验证过程中,重新输入明文,并经过同样的加密算法处理,看能否得到相同的密文,由此判断明文的正确性算法有如下特点1:加密算法对同一消息反复执行该函数总得到相同的密文;2:加密算法生成的密文是不可预见的,密文看起来和明文没有任何关系;3:明文的任何微小变化都会对生成的密文产生很大的影响;4:具有不可逆性。即通过密文要得到明文,理论上是不可行的。本节介绍2种流行的单向加密算法:MD5和SHA。,12.4.1 用Java实现MD5,MD5全称是Message-digest Algorithm 5(信息-摘要算法)最初

18、的目标是用于确保信息传输过程中的完整一致性由MD2和MD4发展而来基本思想是:将大容量信息变换成一个定长的大整数,这个大整数对这个信息来说是单向的。一般来说,这个大整数称为消息摘要。MD5能够获得一个随机长度信息的一个128位的信息摘要。MD5广泛用于密码认证、软件序列号等领域中P12_05.java是用Java语言实现MD5算法将一个字符串“郭克华_安全编程技术”加密,运行,效果如下:反复运行,效果一样。,12.4.2 用Java实现SHA,安全散列算法(Secure Hash Algorithm,SHA)NIST发布的国家标准,一般称为SHA-1也是一种单向加密算法输入长度不超过264二进

19、制位消息,产生160位的消息摘要输出。P12_06.java是用Java语言实现SHA算法将一个字符串“郭克华_安全编程技术”进行加密。运行,效果如下:反复运行,效果一样,12.4.3 用Java实现消息验证码,单向加密的结果也叫做消息摘要不同的数据加密得到的结果不同,因此可以较好地验证数据的完整性利用MD5算法生成消息摘要,可以验证数据是否被修改根据收到的数据,重新利用MD5算法生成摘要,和原来的摘要相比较,如果相同,说明数据没有被修改,反之,说明数据被修改了。无法完全阻止数据的修改在数据传递过程中,窃取者将数据窃取出来,并且修改数据,再重新生成一次摘要,将改后的数据和重新计算的摘要发送给接

20、收者接收者利用算法对修改过的数据进行验证时,生成的消息摘要和收到的消息摘要仍然相同,消息被判断为“没有被修改”。这是一个安全隐患。为了确保安全性,除了需要知道消息和消息摘要之外,还需要知道发送者身份消息验证码,在一定程度上可以实现这个功能,以保证安全性。,消息验证码和MD5/SHA1算法的不同在生成摘要时,发送者和接收者都拥有一个共同的密钥这个密钥可以是通过对称密码体系生成的,事先被双方共有在生成消息验证码时,还必须要有密钥的参与只有同样的密钥才能生成同样的消息验证码。Java里面可以较好地完成这个功能P12_07.java是用Java语言实现HMAC/MD5算法,将一个字符串“郭克华_安全编

21、程技术”进行加密。,运行,效果如下:注意,该程序反复运行,效果不一样因为每次生成的DES密钥不一样。在实际操作的过程中,为了保证双方得到的是相同的密钥,DES密钥是保存在文件中或者数据库中,然后从其中取出,这样可以保证得到的消息摘要是一样的。敌方即使得知了消息本身,但是由于得不到密钥,也无法生成正确的消息验证码。敌方篡改过的数据在验证是将无法通过。,12.5 密钥安全,对称和非对称加密系统的安全工作,依赖于两个方面加密算法和密钥一般情况下,加密算法都是公开的加密系统的安全性依赖于密钥的安全好的密钥应该满足的特性 1:不同情况下生成的密钥应是独立的、互不相关的,即每次生成的密钥和其他密钥无关。2

22、:密钥值应是不可预测的。3:密钥值在某个范围内实现均匀分布。本节主要针对密钥安全进行阐述。,12.5.1 随机数安全,随机数生成是许多加密操作不可分割的组成部分,常常被用作密钥的生成随机数也应有三个特性:均匀分布;数值不可预测;互不相关。如果达不到这几个特性,随机数就认为是不良的,对系统的安全性会产生巨大的影响。产生随机数,有多种不同的方法。这些方法被称为随机数发生器,基本上所有的高级语言都封装了随机数发生器。,P12_08.java运行,打印 再次运行会发现,打印的结果一样在相同的平台环境下,每次运行它,显示的随机数都是相同的在相同的编译平台环境下,由随机种子生成随机数的计算方法都是一样的随

23、机种子一样,所以产生的随机数就是一样的,解决这个问题的方法可以设定一个随机的种子来产生随机数以下内容可以帮你设置种子1:系统时钟;2:底层系统信息,如空闲进程时间、IO读写计数等;3:环境信息,如CPU的温度;等等。Windows中的CryGenRandom()函数比rand()函数更加健壮它可以从系统的众多资源中获取种子的随机性,例P12_09.java利用系统时间作为种子,运行产生的随机数为:重新运行,结果不一样这里产生的随机数是伪随机数,在Java中,默认情况下随机种子来自系统时钟如下代码:每次运行产生的随机数也会不一样。VB中,需要用Randomize()函数来首先设置一下随机种子,R

24、andom rnd=new Random();System.out.println(rnd.nextInt();System.out.println(rnd.nextInt();System.out.println(rnd.nextInt();,12.5.2 密钥管理安全,密钥管理从密钥的产生到密钥的销毁的各个方面都需要考虑主要表现:密钥的管理体制;密钥的管理协议;密钥产生产生、分配、销毁;等等。不同的加密体系,密钥产生之后的使用方法各不相同对称加密体系中,双方密钥必须相同非对称加密体系中,公钥私钥要成对出现本节从各种加密方法进行讲解。,对称加密体系中的密钥管理对称加密技术的通信双方必须要保证

25、采用的是相同的密钥由于密钥双方都需要知道,因此只能通过秘密的方法传送必须保证彼此密钥的交换是安全可靠的,防止密钥泄露或者被敌方更改对称密钥的管理和分发工作是一件很有风险的事情。解决方法通过非对称密码体系来对对称密钥进行管理非对称密码体系适合对少量数据进行加密解密,对称加密体系中的密钥管理具体过程发送方生成对称密钥,将其用接收方的公开密钥加密,发出;接收方用自己的私钥将加密后的对称密钥解密,得到对称密钥。每次信息发送和接收都对应惟一一个对称密钥,双方不需要对密钥进行维护即使泄露了密钥,敌方也无法知道密钥的内容这种方式使得管理相对简单和安全,同时,该方法还解决了对称密钥中存在的密钥篡改问题。,非对

26、称加密体系中的密钥管理主要涉及公开密钥管理一般情况下,通信双方间可以使用数字证书(公开密钥证书)来交换公开密钥国际电信联盟(ITU)制定的标准X.509,对数字证书进行了定义,利用数字证书,可以确定如下内容:证书所有者名称;证书发布者的名称;证书所有者的公开密钥;证书发布者的数字签名;证书的有效期及证书的序列号;等等。证书发布者一般都是证书管理机构(CA)它是通信各方都信赖的机构,密钥管理芯片专门为嵌入式程序的防攻击,以及密钥管理而设计的新一代加密芯片可用于消费类电子产品的如视频处理板卡的数据流加密解密、游戏机板、路由器、机顶盒等由于其加密解密速度较快,也得到了较为广泛的应用,小结,本章首先讲

27、解了加密的意义,然后介绍了常见的三种加密体系中的一些算法:对称加密体系中的DES、3DES、AES算法;非对称加密体系中的RSA、DSA算法;单向加密中的MD5、SHA算法。每一种算法,基于Java语言进行了实现,并分析了它们的特点。由于加密算法通常是公开的,加密系统的安全性决定于密钥的隐蔽性,因此,密钥安全是加密系统中的重要工作。本文在后面的篇幅中,讲解了密钥安全中的两个问题:随机数和密钥管理。,练习,1:消息验证码和普通的单向加密,都可以生成消息摘要进行消息认证,请比较两者有何不同?2:对称密码中,密钥的安全性表现在哪些方面?3:为什么说计算机生成的随机数是伪随机数?4:非对称密码体系中,怎样进行密钥管理?,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号