1、1第 11章 数据加密与数字签名11.1 数据加密与解密技术11.2 加密解密的具体实现11.3 网络应用中数据的加密与解密 11.4 Hash算法与数字签名2第 11章 数据加密与数字签名(续) 本章教学目的通过学习,使学生能够对数据加密和解密、常用的加密类、如何在网络中传递数据以及数字签名有一个清晰的认识。 本章教学要求( 1)掌握数据加密与解密的基本知识( 2)掌握字符串、一般文件、 XML文件加密和解密的具体实现。( 3)掌握网络应用中数据的加密与解密的流程( 4)掌握数字签名的概念和 Hash算法,了解其他相关知识( 5)掌握怎样进行简单的数字签名 教学难点和重点加密类和加密、解密方
2、法、网络应用中数据的加密与解密311.1 数据加密与解密技术 密码学简介据记载,公元前 400年,古希腊人发明了置换密码。 在第二次世界大战期间,德国军方启用 “恩尼格玛 ”密码机,密码学在战争中起着非常重要的作用。 密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取数据完整性:防止数据被更改。411.1 数据加密与解密技术(续) 1977年,美国国家标准局公布实施了 “美国数据加密标准( DES) ”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有 DES、 SHA等。 RC2:由著名密码学家 Ron Rivest设计的一种传统对称分组加密算法 3DES:基于 DES,
3、对一块数据用三个不同的密钥进行三次加密,强度更高 AES: Rijndael被选中成为将来的 AES511.1 数据加密与解密技术 11.1.1 对称加密及其相关类 11.1.2 不对称加密及其相关类 11.1.3 加密流 11.1.4 密钥容器611.1.1 对称加密及其相关类 对称加密(私钥加密)原理 同一密钥既用于加密又用于解密。 以块为单位加密数据(称为块密码),该方法一次加密一个数据块(数据多于规定的块大小时,将数据分块处理,数据少于规定的块大小时,将其扩充到块大小)。 早期采用 密码本 (ECB) 模式,即有一个密码对照表,将被加密的数据按照对应关系解密即可,安全性较低。最突出的缺
4、点是相同的原始数据加密后的结果也相同。 改进后的算法是 密码块链 (CBC, Cipher Block Chaining) 模式,即使用 私钥 和 初始化向量 (IV, Initialization Vector) 共同加密。实现思路:用 “IV”和 “私钥 ”加密第一个纯文本块,每个后续纯文本块都在加密前先与前一个密码文本块进行按位 “异或 ”运算,从而解决了 ECB模式存在的安全问题,即:虽然原始数据相同,产生的加密后的数据也不会相同。711.1.1 对称加密及其相关类(续) 对称加密(私钥加密) 特点优点 :保密强度高,加、解密速度快,适合加密大量数据。缺点 :由于双方使用相同的密钥进行
5、加密和解密。在网络传输中,如何传递密钥成为问题所在。如果攻击者截获了密钥,也就等于知道了如何解密数据。811.1.1 对称加密及其相关类(续) 实现对称加密( CBC模式,即 “密钥 +IV模式 ”)算法的类有6种: DESCryptoServiceProvider类: DES算法加密类 TripleDESCryptoServiceProvider: TDES算法加密类 RijndaelManaged: AES算法加密类 AesManaged : AES算法加密类 (.NET Framework 3.5) RC2CryptoServiceProvider: RC2算法加密类 HMACSHA1:
6、 SHA1算法(哈希算法)加密类 说明:使用 IV的目的是为了防范穷举搜索而进行的攻击。911.1.1 对称加密及其相关类(续) DESCryptoServiceProvider类:对采用 数据加密标准 (DES, Data Encryption Standard)算法的加密服务提供程序 (CSP)版本进行包装(密钥长度为 64位) , DES是 美国 1977年公布的加密标准,当时在各超市零售业、银行自动取款机、磁卡及 IC卡、加油站、高速公路收费站等领域被广泛应用。 说明:该算法如果不使用 IV,目前已经有多种破解方法(最快的破解速度据媒体报导是仅用了 3天的时间就破解了),但是使用 IV
7、生成随机数配合加密后,破解就变得非常困难。1011.1.1 对称加密及其相关类(续) 对采用 3DES(三层数据加密标准)算法 的加密服务提供程序 (CSP)进行包装(密钥长度为 128位到 192位,以 64位递增)。 3DES对交换的信息进行 3次叠代加密,比 DES安全性高。常用属性和方法 : 名称 解释BlockSize属性 获取或设置加密操作的块大小,以位为单位Key属性 获取或设置 TripleDES算法的机密密钥IV属性 获取或设置 TripleDES算法的初始化向量KeySize属性 获取或设置 TripleDES算法所用密钥的大小,以位为单位CreateEncryptor方法创建 TripleDES加密器对象CreateDecryptor方法创建 TripleDES解密器对象GenerateIV方法 生成用于 TripleDES算法的随机初始化向量 IVGenerateKey方法 生成用于 TripleDES算法的随机密钥