P10 网络信息加密传输程序设计解读
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络编程技术
第10章 网络信息加密传输程序设计
2/27/2019
1
网络攻击类型
网络信息安全:
信息存储安全 信息传输安全
目的站 源站 目的站 源站 目的站 源站 目的站
源站
截获 被动攻击
中断
篡改 主动攻击
伪造
2/27/2019
2
本章的主要内容
数据加密模型 对称加密程序设计 非对称加密程序设计 网络信息加密传输程序设计
2/27/2019
3
10.1 数据加密模型
(1) 数据加密模型描述
明文
加密过程 信息源结点
密文
密文
解密过程 信息目的结点
明文
2/27/2019
4
(2) 对称加密模型
密钥
加密过程 明文 密文
解密过程 明文
对称加密算法使用起来简单快捷,密钥较短,且破译困难。
2/27/2019
5
常见的对称加密算法
密码算法 DES IDEA RC4 RC5 Rijndael Serpent 三重DES IBM Massey和Xuejia Ronald Rivest Ronald Rivest Daemen和Rijmen 作 者 56 128 1~2048 128~256 128~256 128~256 168 密钥长度 说 明 对于现在使用,太弱了 好,但是属于专利算法 小心,有一些弱密钥 好,但是属于专利算法 最佳的选择 很强 第二最佳选择
Anderson,Biham, Knuds
IBM
Twofish
Bruce Schneier
128~256
很强,被广泛使用
2/27/2019
6
(3) 非对称加密模型
发送方 明文X E 加密算法 密文Y=EPK(X) 接收方 D 解密算法 明文X=DSK(EPK(X))
公钥PK
密钥对 产生源
私钥SK
2/27/2019
9
SymmetricAlgorithm类的主要属性和方法
名 BlockSize IV Key KeySize Mode Clear() Create() CreateDecryptor() CreateEncryptor() GenerateIV() GenerateKey()
2/27/2019
可以使用从Stream类派生的任何类(包括FileStream、 MemorySteam和NetworkStream)初始化 CryptoStream类。使用这些类,可以对各种流对象执行 对称加密。
2/27/2019
12
(1) 加密过程实例:
① 创建对称加密算法实例: cryptoService=new RijndaelManaged(); cryptoService.Mode=CipherMode.CBC; //设置为链接模式 ② 设置初始化参数,包括密钥和初始化向量等。 cryptoService.Key=GetLegalKey(); //设置密钥 cryptoService.IV=GetLegalIV(); //设置初始向量 ③ 创建加密实例: ICryptoTransform cryptoTransform=cryptoService.CreateEncryptor(); ④ 创建加密流: MemoryStream ms=new MemoryStream(); //创建内存流 CryptoStream cs=new CryptoStream(ms, crytoTransform,CryptoStreamMode.Write); ⑤ 通过流的写操作实现数据加密: cs.Write(plainByte,0,plainByte.Length); cs.FlushFinalBlock(); byte[] cryptoByte=ms.ToArray(); return Convert.ToBase64String(cryptoByte,0,cryptoByte.GetLength(0));
10.2 对称加密程序设计
10.2.1 对称加密算法
SymmetricAlgorithm类表示所有对称算法的实现都 必须从中继承的抽象基类; 派生了DES、Triple-DES、RC2和Rijndael等对称加 密算法; 来自于System.Security.Cryptography命名空间。
非对称加密算法研制的最初理念与目标是旨在解决对称加密算 法中密钥的分发问题. 实际上它不但很好地解决了这个问题,还可利用非对称加密算 法来完成对电子信息的数字签名以防止对信息的否认与抵赖; 同时,还可以利用数字签名较容易地发现攻击者对信息的非法 篡改,以保护数据信息的完整性。
7
2/27/2019
(4) 数字签名模型
数字签名一般采用非对称加密技术(如RSA)。
发送方 明文 接收方 明文 明文 信息 摘要 生成摘要 比较 信息 摘要 生成摘要 明文 发送方私钥 密钥对 产生源 发送方公钥 加密过程 信息 摘要 信息 摘要 信息 摘要 解密过程 信息 摘要 单向散列函数
单向散列函数
身 份 认 证
2/27/2019
8
2/27/2019 13
(2) 解密过程实例
① 创建对称加密算法实例: cryptoService=new RijndaelManaged(); cryptoService.Mode=CipherMode.CBC; //设置为链接模式 ② 设置初始化参数,包括密钥和初始化向量等。用户设置方法如下: cryptoService.Key=GetLegalKey(); //设置密钥 cryptoService.IV=GetLegalIV(); //设置初始向量 ③ 创建解密实例,如: ICryptoTransform cryptoTransform=cryptoService.CreateEncryptor(); ④ 创建解密流,如: MemoryStream ms=new MemoryStream(cryptoByte,0,cryptoByte.Length);//创建内存流 CryptoStream cs=new CryptoStream(ms, crytoTransform, CryptoStreamMode.Read); ⑤ 通过解密流进行数据解密: StreamReader sr=new StreamReader(cs); return sr.ReadToEnd();
10
对称算法的实现:
RijndaelManaged DESCryptoServiceProvider RC2CryptoServiceProvider TripleDESCryptoService Provider
2/27/2019
11
10.2.2 基于流的加密解密方法
由于对称加密往往用于加密大量数据信息,隐藏采用了流 式加密方法,以便支持对内存流和文件流等数据的加密和 解密。托管对称加密类与称为CryptoStream的特殊流类 一起使用。
称
描 获取或设置加密操作的块大小 获取或设置对称算法的初始化向量 获取或设置对称算法的密钥 获取或设置对称算法所用密钥的大小 获取或设置对称算法的运算模式 释放资源 创建用于执行对称算法的加对称解密器对象 用指定的密钥和初始化向量创建一个对称加密器对象 为对称加密算法生成一个随机的初始化向量(IV),并重写IV属性中所存 储的值 为对称加密算法生成一个随机密钥(Key),并重写Key属性的值
第10章 网络信息加密传输程序设计
2/27/2019
1
网络攻击类型
网络信息安全:
信息存储安全 信息传输安全
目的站 源站 目的站 源站 目的站 源站 目的站
源站
截获 被动攻击
中断
篡改 主动攻击
伪造
2/27/2019
2
本章的主要内容
数据加密模型 对称加密程序设计 非对称加密程序设计 网络信息加密传输程序设计
2/27/2019
3
10.1 数据加密模型
(1) 数据加密模型描述
明文
加密过程 信息源结点
密文
密文
解密过程 信息目的结点
明文
2/27/2019
4
(2) 对称加密模型
密钥
加密过程 明文 密文
解密过程 明文
对称加密算法使用起来简单快捷,密钥较短,且破译困难。
2/27/2019
5
常见的对称加密算法
密码算法 DES IDEA RC4 RC5 Rijndael Serpent 三重DES IBM Massey和Xuejia Ronald Rivest Ronald Rivest Daemen和Rijmen 作 者 56 128 1~2048 128~256 128~256 128~256 168 密钥长度 说 明 对于现在使用,太弱了 好,但是属于专利算法 小心,有一些弱密钥 好,但是属于专利算法 最佳的选择 很强 第二最佳选择
Anderson,Biham, Knuds
IBM
Twofish
Bruce Schneier
128~256
很强,被广泛使用
2/27/2019
6
(3) 非对称加密模型
发送方 明文X E 加密算法 密文Y=EPK(X) 接收方 D 解密算法 明文X=DSK(EPK(X))
公钥PK
密钥对 产生源
私钥SK
2/27/2019
9
SymmetricAlgorithm类的主要属性和方法
名 BlockSize IV Key KeySize Mode Clear() Create() CreateDecryptor() CreateEncryptor() GenerateIV() GenerateKey()
2/27/2019
可以使用从Stream类派生的任何类(包括FileStream、 MemorySteam和NetworkStream)初始化 CryptoStream类。使用这些类,可以对各种流对象执行 对称加密。
2/27/2019
12
(1) 加密过程实例:
① 创建对称加密算法实例: cryptoService=new RijndaelManaged(); cryptoService.Mode=CipherMode.CBC; //设置为链接模式 ② 设置初始化参数,包括密钥和初始化向量等。 cryptoService.Key=GetLegalKey(); //设置密钥 cryptoService.IV=GetLegalIV(); //设置初始向量 ③ 创建加密实例: ICryptoTransform cryptoTransform=cryptoService.CreateEncryptor(); ④ 创建加密流: MemoryStream ms=new MemoryStream(); //创建内存流 CryptoStream cs=new CryptoStream(ms, crytoTransform,CryptoStreamMode.Write); ⑤ 通过流的写操作实现数据加密: cs.Write(plainByte,0,plainByte.Length); cs.FlushFinalBlock(); byte[] cryptoByte=ms.ToArray(); return Convert.ToBase64String(cryptoByte,0,cryptoByte.GetLength(0));
10.2 对称加密程序设计
10.2.1 对称加密算法
SymmetricAlgorithm类表示所有对称算法的实现都 必须从中继承的抽象基类; 派生了DES、Triple-DES、RC2和Rijndael等对称加 密算法; 来自于System.Security.Cryptography命名空间。
非对称加密算法研制的最初理念与目标是旨在解决对称加密算 法中密钥的分发问题. 实际上它不但很好地解决了这个问题,还可利用非对称加密算 法来完成对电子信息的数字签名以防止对信息的否认与抵赖; 同时,还可以利用数字签名较容易地发现攻击者对信息的非法 篡改,以保护数据信息的完整性。
7
2/27/2019
(4) 数字签名模型
数字签名一般采用非对称加密技术(如RSA)。
发送方 明文 接收方 明文 明文 信息 摘要 生成摘要 比较 信息 摘要 生成摘要 明文 发送方私钥 密钥对 产生源 发送方公钥 加密过程 信息 摘要 信息 摘要 信息 摘要 解密过程 信息 摘要 单向散列函数
单向散列函数
身 份 认 证
2/27/2019
8
2/27/2019 13
(2) 解密过程实例
① 创建对称加密算法实例: cryptoService=new RijndaelManaged(); cryptoService.Mode=CipherMode.CBC; //设置为链接模式 ② 设置初始化参数,包括密钥和初始化向量等。用户设置方法如下: cryptoService.Key=GetLegalKey(); //设置密钥 cryptoService.IV=GetLegalIV(); //设置初始向量 ③ 创建解密实例,如: ICryptoTransform cryptoTransform=cryptoService.CreateEncryptor(); ④ 创建解密流,如: MemoryStream ms=new MemoryStream(cryptoByte,0,cryptoByte.Length);//创建内存流 CryptoStream cs=new CryptoStream(ms, crytoTransform, CryptoStreamMode.Read); ⑤ 通过解密流进行数据解密: StreamReader sr=new StreamReader(cs); return sr.ReadToEnd();
10
对称算法的实现:
RijndaelManaged DESCryptoServiceProvider RC2CryptoServiceProvider TripleDESCryptoService Provider
2/27/2019
11
10.2.2 基于流的加密解密方法
由于对称加密往往用于加密大量数据信息,隐藏采用了流 式加密方法,以便支持对内存流和文件流等数据的加密和 解密。托管对称加密类与称为CryptoStream的特殊流类 一起使用。
称
描 获取或设置加密操作的块大小 获取或设置对称算法的初始化向量 获取或设置对称算法的密钥 获取或设置对称算法所用密钥的大小 获取或设置对称算法的运算模式 释放资源 创建用于执行对称算法的加对称解密器对象 用指定的密钥和初始化向量创建一个对称加密器对象 为对称加密算法生成一个随机的初始化向量(IV),并重写IV属性中所存 储的值 为对称加密算法生成一个随机密钥(Key),并重写Key属性的值