数据加密与数字签名

上传人:大米 文档编号:586296056 上传时间:2024-09-04 格式:PPT 页数:55 大小:849.50KB
返回 下载 相关 举报
数据加密与数字签名_第1页
第1页 / 共55页
数据加密与数字签名_第2页
第2页 / 共55页
数据加密与数字签名_第3页
第3页 / 共55页
数据加密与数字签名_第4页
第4页 / 共55页
数据加密与数字签名_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《数据加密与数字签名》由会员分享,可在线阅读,更多相关《数据加密与数字签名(55页珍藏版)》请在金锄头文库上搜索。

1、1 1第第11章章 数据加密与数字签名数据加密与数字签名11.1 数据加密与解密技数据加密与解密技术11.2 加密解密的具体加密解密的具体实现11.3 网网络应用中数据的加密与解密用中数据的加密与解密 11.4 Hash算法与数字算法与数字签名名2 2第第11章章 数据加密与数字签名(续)数据加密与数字签名(续)本章教学目的本章教学目的 通通过学学习,使学生能,使学生能够对数据加密和解密、常用的加密数据加密和解密、常用的加密类、如何在网、如何在网络中中传递数据以及数字数据以及数字签名有一个清晰的名有一个清晰的认识。本章教学要求本章教学要求 (1)掌握数据加密与解密的基本知)掌握数据加密与解密的

2、基本知识 (2)掌握字符串、一般文件、)掌握字符串、一般文件、XML文件加密和解密的具体文件加密和解密的具体实现。 (3)掌握网)掌握网络应用中数据的加密与解密的流程用中数据的加密与解密的流程 (4)掌握数字)掌握数字签名的概念和名的概念和Hash算法,了解其他相关知算法,了解其他相关知识 (5)掌握怎)掌握怎样进行行简单的数字的数字签名名 教学教学难点和重点点和重点 加密加密类和加密、解密方法、网和加密、解密方法、网络应用中数据的加密与解密用中数据的加密与解密教学用教学用时 4学学时3 311.1 数据加密与解密技术数据加密与解密技术密密码学学简介据介据记载,公元前,公元前400年,古希腊人

3、年,古希腊人发明了置明了置换密密码。在第二次世界大在第二次世界大战期期间,德国,德国军方启用方启用“恩尼格恩尼格玛”密密码机,密机,密码学在学在战争中起着非常重要的作用。争中起着非常重要的作用。密密码学可以达到以下目的:学可以达到以下目的: 保密性:防止用保密性:防止用户的的标识或数据被或数据被读取取数据完整性:防止数据被更改数据完整性:防止数据被更改 。4 411.1 数据加密与解密技术(续)数据加密与解密技术(续)1977年,美国国家年,美国国家标准局公布准局公布实施了施了“美国数据加密美国数据加密标准准(DES)”,民,民间力量开始全面介入密力量开始全面介入密码学的研究和学的研究和应用用

4、中,采用的加密算法有中,采用的加密算法有DES、SHA等。等。RC2:由著名密:由著名密码学家学家Ron Rivest设计的一种的一种传统对称分称分组加密算法加密算法3DES:基于:基于DES,对一一块数据用三个不同的密数据用三个不同的密钥进行三行三次加密,次加密,强度更高度更高 AES:Rijndael被被选中成中成为将来的将来的AES5 511.1 数据加密与解密技术数据加密与解密技术11.1.1 对称加密及其相关称加密及其相关类11.1.2 不不对称加密及其相关称加密及其相关类11.1.3 加密流加密流11.1.4 密密钥容器容器6 611.1.1 对称加密及其相关类对称加密及其相关类对

5、称加密(私称加密(私钥加密)原理加密)原理同一密同一密钥既用于加密又用于解密。既用于加密又用于解密。以以块为单位加密数据(称位加密数据(称为块密密码),),该方法一次加密一个数方法一次加密一个数据据块(数据多于(数据多于规定的定的块大小大小时,将数据分,将数据分块处理,数据少于理,数据少于规定的定的块大小大小时,将其,将其扩充到充到块大小)。大小)。早期采用早期采用密密码本本(ECB) 模式,即有一个密模式,即有一个密码对照表,将被加密的数据按照照表,将被加密的数据按照对应关系解关系解密即可,安全性密即可,安全性较低。最突出的缺点是相同的原始数据加密后低。最突出的缺点是相同的原始数据加密后的的

6、结果也相同。果也相同。改改进后的算法是后的算法是密密码块链 (CBC,Cipher Block Chaining) 模式,即使用模式,即使用私私钥和和初始化向量初始化向量 (IV,Initialization Vector) 共同加密。共同加密。实现思路:用思路:用“IV”和和“私私钥”加密第一个加密第一个纯文本文本块,每个后,每个后续纯文本文本块都在加密前先与前一个密都在加密前先与前一个密码文本文本块进行行按位按位“异或异或”运算,从而解决了运算,从而解决了ECB模式存在的安全模式存在的安全问题,即,即:虽然原始数据相同,然原始数据相同,产生的加密后的数据也不会相同。生的加密后的数据也不会相

7、同。7 711.1.1 对称加密及其相关类(续)对称加密及其相关类(续)对称加密(私称加密(私钥加密)加密) 特点特点优点点:保密:保密强度高,加、解密速度快,适合加密大量数据。度高,加、解密速度快,适合加密大量数据。缺点缺点:由于双方使用相同的密:由于双方使用相同的密钥进行加密和解密。在网行加密和解密。在网络传输中,如何中,如何传递密密钥成成为问题所在。如果攻所在。如果攻击者截者截获了了密密钥,也就等于知道了如何解密数据。,也就等于知道了如何解密数据。8 811.1.1 对称加密及其相关类(续)对称加密及其相关类(续)实现对称加密(称加密(CBC模式,即模式,即“密密钥+IV模式模式”)算法

8、的)算法的类有有6种:种:DESCryptoServiceProvider类:DES算法加密算法加密类TripleDESCryptoServiceProvider:TDES算法加密算法加密类RijndaelManaged:AES算法加密算法加密类AesManaged : AES算法加密算法加密类(.NET Framework 3.5)RC2CryptoServiceProvider:RC2算法加密算法加密类HMACSHA1:SHA1算法(哈希算法)加密算法(哈希算法)加密类说明:使用明:使用IV的目的是的目的是为了防范了防范穷举搜索而搜索而进行的攻行的攻击。9 911.1.1 对称加密及其相关

9、类(续)对称加密及其相关类(续)DESCryptoServiceProvider类:对采用采用数据加密数据加密标准准(DES,Data Encryption Standard)算法的加密服算法的加密服务提供程序提供程序(CSP)版本版本进行包装(密行包装(密钥长度度为64位)位), DES是是美国美国1977年公布的加密年公布的加密标准,当准,当时在各超市零售在各超市零售业、银行自行自动取款机、磁卡及取款机、磁卡及IC卡、加油站、高速公路收卡、加油站、高速公路收费站等站等领域被广泛域被广泛应用。用。说明:明:该算法如果不使用算法如果不使用IV,目前已,目前已经有多种破解方法(最有多种破解方法(

10、最快的破解速度据媒体快的破解速度据媒体报导是是仅用了用了3天的天的时间就破解了),就破解了),但是使用但是使用IV生成随机数配合加密后,破解就生成随机数配合加密后,破解就变得非常困得非常困难。101011.1.1 对称加密及其相关类(续)对称加密及其相关类(续)对采用对采用3DES(三层数据加密标准)算法(三层数据加密标准)算法的加密服务提供程序的加密服务提供程序(CSP)进行包装进行包装(密钥长度为(密钥长度为128位到位到192位,以位,以64位递增)。位递增)。3DES对交换的信息进行对交换的信息进行3次次叠代加密,比叠代加密,比DES安全性高。常用属性和方法安全性高。常用属性和方法:

11、名称名称解释解释BlockSize属性属性获取或设置加密操作的块大小,以位为单位获取或设置加密操作的块大小,以位为单位Key属性属性获取或设置获取或设置TripleDES算法的机密密钥算法的机密密钥IV属性属性获取或设置获取或设置TripleDES算法的初始化向量算法的初始化向量KeySize属性属性获取或设置获取或设置TripleDES算法所用密钥的大小,以位为算法所用密钥的大小,以位为单位单位CreateEncryptor方法方法创建创建TripleDES加密器对象加密器对象CreateDecryptor方法方法创建创建TripleDES解密器对象解密器对象GenerateIV方法方法生成

12、用于生成用于TripleDES算法的随机初始化向量算法的随机初始化向量IVGenerateKey方法方法生成用于生成用于TripleDES算法的随机密钥算法的随机密钥111111.1.1 对称加密及其相关类(续)对称加密及其相关类(续)说明:明:(1)如果)如果对数字或其他数字或其他值类型数据加密,可以利用型数据加密,可以利用 BinaryWriter先得到字先得到字节流,然后流,然后对其加密即可。其加密即可。(2)如果)如果对数据数据库数据加密,只需要将加密后的内容保数据加密,只需要将加密后的内容保存到存到库中即可,中即可,读出后再解密。出后再解密。(3)对于其他不同的加密解密于其他不同的加

13、密解密类,调用方法都差不多。用方法都差不多。121211.1.1 对称加密及其相关类(续)对称加密及其相关类(续)RijndaelManaged类:对采用采用Rijndael的加密服的加密服务提供程序提供程序(CSP)进行包行包装(密装(密钥长度度为128、192或或256位)。位)。 Rijndael是是Vincent Rijmen和和Joan Daemen两人提出的加密算法,是最新的高两人提出的加密算法,是最新的高级加密加密标准之一,比准之一,比3DES算算法更法更强、更高效。、更高效。AesManaged类(在(在.NET Framework 3.5版中引入版中引入):):对AES算法算

14、法进行包装。此行包装。此类的功能与的功能与RijndaelManaged类相同,但它将相同,但它将块限制限制为 128 位。位。AES 算法算法实质上是具有固定上是具有固定块大小和迭代大小和迭代计数的数的Rijndael对称算法。称算法。 说明明:加密服加密服务提供程序提供程序(CSP,Cryptographic Service Provider)是微)是微软在在Windows操作系操作系统中内置的加密中内置的加密处理模理模块。131311.1.1 对称加密及其相关类(续)对称加密及其相关类(续)RC2CryptoServiceProvider类:对采用采用RC2算法算法的加密服的加密服务提供

15、程序提供程序(CSP)进行包装(密行包装(密钥长度度为从从 40 位到位到 128 位,以位,以 8 位位递增)。增)。RC2是是Ron Rivest在在1987年年设计设计的一个的一个块块密密码码算法。算法。HMACSHA1类:从:从 SHA1构造的一种构造的一种键控哈希算法,被用作控哈希算法,被用作HMAC(基于哈希(基于哈希的消息的消息验证代代码)。)。SHA-1(安全哈希算法,也称(安全哈希算法,也称为安全哈希安全哈希标准)是由美国政府准)是由美国政府发布的一种加密哈希算法。它将从任意布的一种加密哈希算法。它将从任意长度的字符串生成度的字符串生成 160 位的哈希位的哈希值。HMACS

16、HA1 接受任何大小的密接受任何大小的密钥,并,并产生生长度度为 160 位的哈希序列。位的哈希序列。141411.1.1 对称加密相关类对称加密相关类对称加密(称加密(CBC模式,即模式,即“密密钥+IV模式模式”)相关的)相关的类有有151511.1.1 对称加密相关类对称加密相关类Hash算法相关算法相关类Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用信息完整性校验。 161611.1.1 对称加密及其相关类(续)对称加密及其相关类(续)类可用密钥长度(bit

17、)加密算法DESCryptoServiceProvider64DES加密算法TripleDESCryptoServiceProvider128、192(默认)3次DES叠代加密算法RijndaelManaged128、192、256(默认)AES加密算法AesManaged128、192、256(默认)AES加密算法RC2CryptoServiceProvider40-128(以8位递增),默认128RC2加密算法HMACSHA1任何长度SHA-1加密哈希算法六种对称加密类的主要特点六种对称加密类的主要特点:171711.1.2 不对称加密及其相关类不对称加密及其相关类不不对称加密(公称加密(

18、公钥加密)原理加密)原理使用不同的加密密使用不同的加密密钥与解密密与解密密钥,是一种,是一种“由已知加密密由已知加密密钥推推导出解密密出解密密钥在在计算上是不可行的算上是不可行的”密密码体制。体制。私私钥是保密的,公是保密的,公钥是公开的。用公是公开的。用公钥加密的数据只能用私加密的数据只能用私钥解密,反之,用私解密,反之,用私钥加密的数据只能用公加密的数据只能用公钥解密。解密。实现方法:方法:接收方先生成一个公接收方先生成一个公钥/私私钥对,在接收被加密的数据前,先将,在接收被加密的数据前,先将该公公钥传递给发送方;注意,从公送方;注意,从公钥推推导出私出私钥是不可能的,是不可能的,所以不怕

19、通所以不怕通过网网络传递时被攻被攻击者截者截获公公钥。发送方得到此公送方得到此公钥后,使用此公后,使用此公钥加密数据,再将加密后的数据通加密数据,再将加密后的数据通过网网络传递给接收方;接收方收到加密后的数据后,再用私接收方;接收方收到加密后的数据后,再用私钥进行解密。行解密。由于没有由于没有传递私私钥,从而提高了数据的安全性。,从而提高了数据的安全性。 181811.1.2 不对称加密及其相关类(续)不对称加密及其相关类(续)不不对称加密(也叫公称加密(也叫公钥加密)加密)特点特点优点点:密:密钥位数多,而且无法根据加密密位数多,而且无法根据加密密钥推推导出解密密出解密密钥。从而使保密。从而

20、使保密强度更高。度更高。缺点缺点:加、解密速度慢,不适合加密大量数据。:加、解密速度慢,不适合加密大量数据。191911.1.2 不对称加密及其相关类(续)不对称加密及其相关类(续).NET Framework 提供了以下提供了以下类来来实现不不对称加密算法:称加密算法:DSACryptoServiceProvider:DSA算法的加密算法的加密实现。RSACryptoServiceProvider:RSA算法的加密算法的加密实现。ECDiffieHellmanCng椭圆曲曲线 Diffie-Hellman (ECDH) 算法的下一代加密技算法的下一代加密技术 (CNG)加密加密实现,.NET

21、 Framework 3.5版开始提供。版开始提供。 ECDsaCng 椭圆曲曲线数字数字签名算法名算法 (ECDSA) 的下一代加密技的下一代加密技术 (CNG) 实现 , .NET Framework 3.5版开始提供。版开始提供。 202011.1.2 不对称加密及其相关类(续)不对称加密及其相关类(续)RSACryptoServiceProvider类:使用加密服使用加密服务提供程序提供程序 (CSP) 提供的提供的 RSA 算法的算法的实现执行不行不对称加密和解密。称加密和解密。如果安装了如果安装了 Microsoft Enhanced Cryptographic Provider,

22、则 RSACryptoServiceProvider 支持支持长度从度从 384 位至位至 16384 位(增量位(增量为 8 位)的密位)的密钥。如果安装了。如果安装了 Microsoft Base Cryptographic Provider,则支持支持长度从度从 384 位至位至 512 位(增量位(增量为 8 位)的密位)的密钥。 212111.1.2 不对称加密及其相关类(续)不对称加密及其相关类(续)RSACryptoServiceProvider类的常用属性和方法类的常用属性和方法名称名称解解释CspKeyContainerInfo CspKeyContainerInfo 属性属

23、性检索关于加密密钥对的相关信息,如密钥容器名称以及提供程检索关于加密密钥对的相关信息,如密钥容器名称以及提供程序的信息等序的信息等PersistKeyInCspPersistKeyInCsp属性属性密密钥是否是否应该永久永久驻留在加密服留在加密服务提供程序提供程序(CSP)(CSP)中中PublicOnlyPublicOnly属性属性RSACryptoServiceProviderRSACryptoServiceProvider对象是否象是否仅包含一个公包含一个公钥EncryptEncrypt方法方法使用使用RSARSA算法算法对数据数据进行加密行加密DecryptDecrypt方法方法使用使

24、用RSARSA算法算法对数据数据进行解密行解密ImportParametersImportParameters方法方法导入指定的入指定的RSAParametersRSAParameters。RSAParametersRSAParameters表示表示RSARSA算法涉及的算法涉及的相关参数相关参数ExportParametersExportParameters方法方法导出指定的出指定的RSAParametersRSAParametersFromXmlStringFromXmlString方法方法通通过XMLXML字符串中的密字符串中的密钥信息初始化信息初始化RSARSA对象象ToXmlStri

25、ngToXmlString方法方法创建并返回包含当前建并返回包含当前RSARSA对象的密象的密钥的的XMLXML字符串字符串222211.1.2 不对称加密相关类不对称加密相关类-RSAToXmlString :以以XML文档形式保存文档形式保存 RSA 密密钥信息信息时。true 时将将创建一个包含公建一个包含公钥及私及私钥XML字符串字符串false 时将将创建的建的XML字符串字符串仅包含公包含公钥 。FromXmlString:用用 ToXmlString 方法生成的一个方法生成的一个XML 字符串中的密字符串中的密钥信息来初始化信息来初始化 RSA 对象,象,例如:例如:加密方:加密

26、方: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();String strKeyXml = rsa.ToXmlString(true);解密方:解密方: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();rsa. FromXmlString(strKeyXml);232311.1.2 不对称加密相关类不对称加密相关类-RSAEncrypt方法:使用方法:使用RSA算法算法对数据数据进行加密行加密 byte dataToEncrypt = Enco

27、ding.UTF8.GetBytes(textBoxInput.Text); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte dataToDecrypt = rsa.Encrypt(dataToEncrypt,false); String rsaKeyInfo = rsa.ToXmlString(false);Decrypt方法:使用方法:使用RSA算法算法对数据数据进行解密行解密 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

28、rsa.FromXmlString(rsaKeyInfo); return rsa.Decrypt(dataToDecrypt, false);242411.1.3 加密流(加密流(CryptoStream)加密流(加密流(CryptoStream类):继承承Stream类,专用于用于处理理被加密或者被解密的数据,而且只能用于被加密或者被解密的数据,而且只能用于对称加密。称加密。 CryptoStream类 public CryptoStream(Stream stream,ICryptoTransform transform,CryptoStreamMode mode)stream:对其其执

29、行加密行加密转换的流。的流。Transform:要:要对流流执行的加密行的加密转换。 Mode:转换方式方式 ,加密,加密时模式模式为对写写访问模式解密模式解密时则为读访问模式。模式。252511.1.3 对称加密相关类对称加密相关类加密加密加密加密时:1、创建建CryptoStrem实例。三个例。三个参数的含参数的含义。2、将待加密数据、将待加密数据数据写入数据写入crpytoStrem中。中。3、获取加密后的取加密后的数据数据4、关、关闭流流262611.1.3 加密流(加密流(CryptoStream)例如(例如(P254):):FileStream fStream = File.Ope

30、n(FileName, FileMode.OpenOrCreate); AesManaged aes = new AesManaged(); CryptoStream cStream = new CryptoStream(fStream, aes.CreateEncryptor(), CryptoStreamMode.Write); sw = new StreamWriter(cryptoStream); sw.WriteLine(被加密的字符串被加密的字符串); 注意:注意:写入完成后,关写入完成后,关闭创建的建的对象,在象,在fStream指向的文件指向的文件中保存的就是加密后的数据。中保

31、存的就是加密后的数据。272711.1.4 密钥容器密钥容器密密钥容器用于保存不容器用于保存不对称加密的密称加密的密钥。为了区分是哪一个密了区分是哪一个密钥容器,容器,还需要需要给每个密每个密钥容器起容器起一个名称。在一个名称。在System.Security.Cryptography命名空命名空间中,有一个中,有一个CspParameters类,可以通,可以通过该类提供提供的属性的属性设置或置或获取密取密钥容器的名称。容器的名称。 示例(示例(P185):如何保存如何保存RSA不对称加密的密不对称加密的密钥到密钥容器中,以及如何从钥到密钥容器中,以及如何从密钥容器中获取密钥信息密钥容器中获取

32、密钥信息 282811.1.4 不对称加密相关类不对称加密相关类-密钥容器密钥容器创建或者建或者获取非取非对称密称密钥并将其保存在密并将其保存在密钥容器中容器中1.创建建 CspParameters 类的一个新的一个新实例,并将您要密例,并将您要密钥容器使用的名称容器使用的名称传递给 CspParameters.KeyContainerName 字段。字段。2.为从从 AsymmetricAlgorithm 类派生的一个派生的一个类(通常是(通常是 RSACryptoServiceProvider 或或 DSACryptoServiceProvider)创建一个新建一个新实例,并将先前例,并将

33、先前创建的建的 CspParameters 对象象传递给其构造函数。其构造函数。292911.1.4 不对称加密相关类不对称加密相关类-密钥容器密钥容器从密从密钥容器中容器中删除密除密钥1.创建建 CspParameters 类的一个新的一个新实例,并将您要密例,并将您要密钥容器使用的名称容器使用的名称传递给 CspParameters.KeyContainerName 字段。字段。2.为从从 AsymmetricAlgorithm 类派生的一个派生的一个类(通常是(通常是 RSACryptoServiceProvider 或或 DSACryptoServiceProvider)创建一个新建一

34、个新实例,并将先前例,并将先前创建的建的 CspParameters 对象象传递给其构造函数。其构造函数。3.将从将从 AsymmetricAlgorithm 中派生的中派生的类的的 PersistKeyInCSP 属性属性设置置为 false。 4.调用从用从 AsymmetricAlgorithm 派生的派生的类的的 Clear 方法。方法。该方法方法释放放该类所有的所有的资源并清除密源并清除密钥容器。容器。303011.1.4 密钥容器(续)密钥容器(续)导出密出密钥方法:方法:ToXMLString方法:返回密方法:返回密钥信息的信息的XML表示形式。表示形式。ExportParame

35、ters方法:返回保存密方法:返回保存密钥信息的信息的RSAParameters结构。构。ExportCspBlob方法:返回密方法:返回密钥信息的字信息的字节数数组。 这3个方法都有一个布个方法都有一个布尔类型的参数,表示型的参数,表示导出出时是否包是否包含私含私钥信息。信息。导入密入密钥方法:方法:FromXMLString方法方法ImportParameters方法初始化不方法初始化不对称加密称加密类的的实例。例。 313111.2 加密解密的具体实现加密解密的具体实现11.2.1 字符串的加密和解密字符串的加密和解密11.2.2 一般文件的加密和解密一般文件的加密和解密11.2.3 X

36、ML文件的加密和解密文件的加密和解密323212.2.1 字符串的加密和解密字符串的加密和解密加密字符串的关加密字符串的关键问题是如何安全地保存解密密是如何安全地保存解密密钥、导出出密密钥以及以及导入密入密钥。 【例例12-1】利用利用RSA不不对称加密算法加密字符串,用密称加密算法加密字符串,用密钥容器保容器保存密存密钥信息,并能信息,并能导出和出和导出密出密钥,分,分别输出加密和解密出加密和解密后的后的结果。果。 图12-1 例12-1的运行效果333311.2.2 一般文件的加密和解密一般文件的加密和解密对于普通的文件来于普通的文件来说,常用有,常用有两种两种加密方式:加密方式:一种是直

37、接使用一种是直接使用File类提供的静提供的静态的的Encrypt方法加密,方法加密,用用对应的的Decrypt方法解密。方法解密。这种方式适用于种方式适用于执行加密和行加密和解密操作的用解密操作的用户属于同一个操作系属于同一个操作系统用用户,而且当前文件,而且当前文件系系统必必须格式化格式化为NTFS的情况。的情况。另一种加密方法是先利用另一种加密方法是先利用对称加密加密文本文件,再利用称加密加密文本文件,再利用不不对称加密加密称加密加密对称加密的称加密的KEY和和IV,并将加密后的,并将加密后的对称称加密的加密的KEY和和IV与加密后的文本文件一起保存。与加密后的文本文件一起保存。这种方式

38、种方式比比较灵活,既适用于同一个用灵活,既适用于同一个用户,也适用于不同的用,也适用于不同的用户,而且可以而且可以单独保存解密密独保存解密密钥。343411.2.2 一般文件的加密和解密(续)一般文件的加密和解密(续)【例例12-2】利用不利用不对称加密算法加密称加密算法加密对称加密的密称加密的密钥KEY和和IV,再利用,再利用对称加密加密文件,称加密加密文件,输出加密和解密后的出加密和解密后的结果。果。图12-2 例12-2的运行效果353511.2.3 不对称加密相关类不对称加密相关类-XML加密解密加密解密利用利用RSA算法加密解密算法加密解密XML文档文档可以使用可以使用 System

39、.Security.Cryptography.Xml 命名空命名空间中的中的类对 XML 文档中的元素文档中的元素进行加密。行加密。 XML 加密是交加密是交换或存或存储加密的加密的 XML 数据的数据的标准方法,无需担心数据被准方法,无需担心数据被轻易易读取。取。可以用包含加密的可以用包含加密的 XML 数据的数据的 元素替元素替换任何任何 XML 元素或文档。元素或文档。 元素可以包含一些子元素来收入关于加密期元素可以包含一些子元素来收入关于加密期间使用的密使用的密钥和和进程的信息。程的信息。363611.2.3 不对称加密相关类(续不对称加密相关类(续)-XML加密解密加密解密37371

40、1.2.3不对称加密相关类(续)不对称加密相关类(续)-XML加密解密加密解密EncryptedData元素元素:原原资源源经过XML Encryption作用后的作用后的结果,将替代原果,将替代原资源,有下列常源,有下列常见子元子元素和属性:素和属性: Type(可可选): element, content. 它它们用于区用于区别是否加密是否加密tag(标签)。如果。如果Type设为element将将加密整个元素包括加密整个元素包括tag在内在内, 而而设为content时只只对元素中的内容加密。元素中的内容加密。EncryptionMethod (可可选) :指定加密将使用的算法。:指定加

41、密将使用的算法。CipherData (可可选) :原原资源加密后的源加密后的结果果 xmlns(可可选):指定用来加密指定用来加密XML数据的数据的XML加密名称空加密名称空间EncryptionProperties(可(可选):):元素用于元素用于为加密的数据加密的数据添加一些添加一些额外的信息,比如加密外的信息,比如加密发生的生的时间。38388.3 不对称加密相关类(续)不对称加密相关类(续)-XML加密解密加密解密KeyInfo(可(可选):描述加密所使用的密:描述加密所使用的密钥,如果采用,如果采用对称加密算法,那么私称加密算法,那么私钥直接存放在直接存放在KeyInfo里面是不安

42、全里面是不安全的。此的。此时有以下几种方法:有以下几种方法: 1. 不使用不使用KeyInfo元素元素:假定双方已假定双方已经约定好了加密使用的定好了加密使用的密密钥。2. 在在KeyInfo中的中的KeyName属性指定一个属性指定一个标识:假定消息接假定消息接收方已收方已经拥有了解密所需的密有了解密所需的密钥,通,通过这个个标识,消息接,消息接收方接可以定位到此次解密所需要的密收方接可以定位到此次解密所需要的密钥。3. 存存储加密后的加密后的对称密称密钥。为了使用第三种方法,了使用第三种方法,KeyInfo加入的加入的扩展元素展元素EncryptedKey。EncryptedKey和和En

43、cryptedData具有具有类似的似的结构,如构,如图4所示所示393911.2.3 XML文件的加密和解密文件的加密和解密利用利用XML加密技加密技术,既可以,既可以对一个文档中的多个元素一个文档中的多个元素进行行加密,也可以加密,也可以对同一个元素同一个元素进行多次加密。行多次加密。 【例例12-3】用用AES和和RSA算法加密解密算法加密解密XML文件。文件。加密加密时,首先生成,首先生成RSA公公钥/私私钥对,并将其保存到密,并将其保存到密钥容器中,然后使用容器中,然后使用AES算法算法对XML文档文档进行加密,再用行加密,再用RSA公公钥对AES密密钥进行加密,最后将加密后的行加密

44、,最后将加密后的AES密密钥和加密后的和加密后的XML数据保存到数据保存到XML文档中的文档中的元素中。元素中。解密解密XML元素元素时,先从密,先从密钥容器中容器中检索出先前生成的索出先前生成的RSA私私钥,然后用,然后用该RSA密密钥对存存储在在元元素的素的元素中的元素中的AES密密钥进行解密,最后行解密,最后用用该密密钥解密解密XML元素。元素。 404011.2.3 XML文件的加密和解密(续)文件的加密和解密(续)图12-3 例12-3的运行效果414111.2.3 XML文件的加密和解密(续)文件的加密和解密(续)注意:注意:不要以不要以纯文本格式存文本格式存储对称加密密称加密密钥

45、,也不要用,也不要用纯文本在文本在计算机之算机之间传输对称密称密钥。另外,不要用。另外,不要用纯文本存文本存储或或传输非非对称密称密钥对的私的私钥。不要将密不要将密钥直接嵌入到源代直接嵌入到源代码中。可以通中。可以通过使用使用 MSIL 反反汇编程序程序 (Ildasm.exe),或通,或通过在在诸如如“记事本事本”的文本的文本编辑器中打器中打开程序集,从程序集开程序集,从程序集轻松松读取嵌入的密取嵌入的密钥。密密钥容器保存密容器保存密钥424211.3 网络应用中数据的加密解密网络应用中数据的加密解密目目标:A希望将大量加密后的数据希望将大量加密后的数据传递给B。由于数据量大,。由于数据量大

46、,A需要使用需要使用对称加密算法称加密算法对数据加密。数据加密。引出引出问题:B如何得到如何得到A采用的采用的对称加密的密称加密的密钥和和IV,以便用此密,以便用此密钥和和IV解密解密加密后的数据,而且截加密后的数据,而且截获者又无法破者又无法破译对称加密的密称加密的密钥和和IV解决解决办法:法:对于不于不对称加密,用公称加密,用公钥加密的数据只能用私加密的数据只能用私钥解密。解密。根据根据这个原理,个原理,B可以先生成一个公可以先生成一个公钥/私私钥对,然后将公,然后将公钥传递给A,A用此公用此公钥加密加密对称加密用的密称加密用的密钥和和IV,并将加密后的,并将加密后的对称称加密用的密加密用

47、的密钥和和IV传递给B,然后,然后传递加密的数据。加密的数据。A接收后,先接收后,先用原来自己生成的私用原来自己生成的私钥解密解密对称加密用的密称加密用的密钥和和IV,再用此密,再用此密钥和和IV解密随后接收的数据。(注意:关解密随后接收的数据。(注意:关键是没有是没有传递私私钥)434311.3 网络传输中的加密解密策略(续)网络传输中的加密解密策略(续)444411.3 网络应用中数据的加密解密(续)网络应用中数据的加密解密(续)一般一般实现方案方案为:(1)传输双方均各自生成一个公双方均各自生成一个公钥/私私钥对。(2)通)通过TCP交交换公公钥。(3)双方各自生成一个)双方各自生成一个

48、对称加密用的密称加密用的密钥,并使用,并使用对方的公方的公钥加密新加密新创建的密建的密钥。(4)双方将加密后的)双方将加密后的对称加密用的密称加密用的密钥发送送给对方,以便方,以便对方利用此密方利用此密钥解密。解密。(5)双方使用)双方使用对称加密称加密进行会行会话。454511.3 网络应用中数据的加密解密(续)网络应用中数据的加密解密(续)数据加密与解密的网数据加密与解密的网络传输过程程 字节序列网络流发送加密的数据计算发送数据量内存流加密读取加密的数据网络流读取数据量大小小解密内存流字节序列发送方 接收方数据数据图12-4 数据加密与解密的网络传输过程464611.3 网络应用中数据的加

49、密解密(续)网络应用中数据的加密解密(续)简化后的化后的设计思路思路为:(1)客)客户端生成一个使用端生成一个使用RSA算法的不算法的不对称加密的公称加密的公钥/私私钥对,然后通,然后通过TCP将公将公钥发送到服送到服务器端。器端。(2)服)服务器端用客器端用客户端端发送的公送的公钥初始化初始化RSA对象。然后象。然后利用此利用此对象加密使用象加密使用TripleDES算法的算法的对称加密的密称加密的密钥。(3)服)服务器端将加密后的器端将加密后的对称加密的密称加密的密钥发送到客送到客户端,客端,客户端利用端利用RSA的私的私钥解密解密TripleDES密密钥,并用此密,并用此密钥初初始化始化

50、TripleDES对象。象。(4)双方使用)双方使用对称加密算法加密称加密算法加密对话内容,并将加密后的内容,并将加密后的对话内容内容发送送给对方。方。(5)接收方接收到加密后的)接收方接收到加密后的对话内容后,利用内容后,利用对称加密算法称加密算法解密解密对话内容,并内容,并显示解密前和解密后的示解密前和解密后的结果。果。 474711.3 网络应用中数据的加密解密(续)网络应用中数据的加密解密(续)【例例12-412-4】利用同步利用同步TCPTCP传递会话数据。要求使用不对称加密传递会话数据。要求使用不对称加密算法加密对称加密算法的密钥,使用对称加密算法加密会话信算法加密对称加密算法的密

51、钥,使用对称加密算法加密会话信息。息。 图12-7 例12-4的运行效果484811.4 Hash算法与数字签名算法与数字签名问题引出:引出:通通过Internet下下载文件后,怎文件后,怎样知道下知道下载的文件是否和原的文件是否和原始文件完全相同呢?或者始文件完全相同呢?或者说,发送方通送方通过Internet发送数送数据后,接收方如何判断接收的数据在网据后,接收方如何判断接收的数据在网络传输过程中是否程中是否被修改被修改过?解决解决办法:法:利用数字利用数字签名技名技术。与与Hash算法的关系:算法的关系:数字数字签名是利用不名是利用不对称加密和称加密和Hash算法共同算法共同实现的。的。

52、 494911.4 Hash算法与数字签名(续)算法与数字签名(续)什么是什么是Hash算法算法Hash算法也叫散列算法算法也叫散列算法功能功能把任意把任意长度的二度的二进制制值映射映射为较小的固定小的固定长度的二度的二进制制值实现原理原理就是提供一种数据内容和数据存放地址之就是提供一种数据内容和数据存放地址之间的映射关系。利用的映射关系。利用Hash算法得到的算法得到的这个固定个固定长度的度的较小的二小的二进制制值叫叫Hash值。505011.4 Hash算法与数字签名(续)算法与数字签名(续)Hash算法的特点:算法的特点:(1)散列效果好。即使原始数据只)散列效果好。即使原始数据只发生一

53、个小小的改生一个小小的改动,数据的散列也,数据的散列也会会发生非常大的生非常大的变化。化。(2)散列函数不可逆。即不可能从散列)散列函数不可逆。即不可能从散列结果推果推导出原始数据。出原始数据。(3)对不同的数据不同的数据进行行Hash运算不可能生成相同的运算不可能生成相同的Hash值。(4)在)在应用程序中,可以利用数字用程序中,可以利用数字签名名实现数据身份数据身份验证和数据完整性和数据完整性验证。数据身份。数据身份验证是是为了了验证数据是不是持有私数据是不是持有私钥的人的人发送的;数送的;数据完整性据完整性验证则用于用于验证数据在数据在传输过程中是否被修改程中是否被修改过。515111.

54、4 Hash算法与数字签名(续)算法与数字签名(续)验证数据完整性的数据完整性的实现原理原理发送方先使用送方先使用Hash算法算法对数据数据进行行Hash运算得到数据运算得到数据的的Hash值,然后将数据和,然后将数据和Hash值一一块发送送给接收方;接收方;接收方接收到数据和接收方接收到数据和Hash值后,后,对接收的数据接收的数据进行和行和发送方相同的送方相同的Hash运算,然后将运算,然后将计算得到的算得到的Hash值和和接收的哈希接收的哈希值进行比行比较,如果二者一致,如果二者一致,说明收到的数明收到的数据肯定与据肯定与发送方送方发送的原始数据相同,从而送的原始数据相同,从而说明数据是

55、明数据是完整的。完整的。525211.4 Hash算法与数字签名(续)算法与数字签名(续)实现数字数字签名的名的类:.NET Framework提供的不提供的不对称加密称加密类除了用于提供加密功能外除了用于提供加密功能外,也可用于提供数字,也可用于提供数字签名功能。名功能。DSACryptoServiceProvider RSACryptoServiceProviderECDsaCng 535311.4 Hash算法与数字签名(续)算法与数字签名(续)数字数字签名名实现原理原理利用私利用私钥加密必加密必须用公用公钥解密解密这个原理个原理实现。实现思路思路发送方先向送方先向该消息消息应用哈希函数

56、以用哈希函数以创建消息摘要。然后,建消息摘要。然后,发送方用自己的私送方用自己的私钥对消息摘要消息摘要进行加密,以行加密,以创建建发送方送方的个人的个人签名。在收到消息和名。在收到消息和签名后,接收方使用名后,接收方使用发送方的送方的公公钥解密解密该签名,以恢复消息摘要,并使用名,以恢复消息摘要,并使用发送方所用的送方所用的同一哈希算法同一哈希算法对该消息消息进行哈希运算。如果接收方行哈希运算。如果接收方计算的算的消息摘要与从消息摘要与从发送方收到的消息摘要完全匹配,送方收到的消息摘要完全匹配,则接收方接收方可以确保消息可以确保消息传输过程中没有修改。注意,因程中没有修改。注意,因为发送方的送方的公公钥不是保密的,所以任何人都可以不是保密的,所以任何人都可以验证签名。名。545411.4 Hash算法与数字签名(续)算法与数字签名(续)【例例12-5】利用利用DSACryptoServiceProvider类创建哈希建哈希值的数的数字字签名,然后名,然后验证签名。程序运行效果如名。程序运行效果如图12-8所示。所示。图12-8 例12-5的运行效果5555本章作业及实验本章作业及实验作作业 1、2、3、4、5实验 本章学本章学习结束后,做束后,做实验五五 文件数据加密与解密文件数据加密与解密

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号