第一章 引言
1.3 安全攻击
安全攻击包括了主动攻击和被动攻击两种。
主动攻击:在攻击中对数据流进行篡改或产生一个虚假的数据流
(1)伪装:是指某实体假装别的实体(对真实性的攻击)
(2)重放:是指将获得的信息再次发送以产生非授权的效果。对真实性的攻击
(3)消息修改:指修改合法信息的一部分或延迟消息的传输或改变消息的顺序以非授权的效果。
(4)拒绝服务:阻止或禁止对通信设施正常的使用
被动攻击:监视 重点在于预防
1.4安全服务
安全服务内容包括:认证、数据保密性、数据完整性、不可否认性、访问控制、可用性服务认证
(1)同等实体认证
(2)数据源认证
第二章 传统加密技术
2.1 对称密码的模型
明文——》算法——》密文——》算法——》明文 其中算法中加入密钥K
信道、信宿、明文、密文、信道、密钥
1、密码编码学具备的三个独立特征
(1)转换明文为密文的运算类型
(2)所用的密钥数
(3)处理明文的方法
2、密码分析学
3、攻击传统的密码体制有两种一般方法 穷举法、密码分析
4、密码分析攻击
2.2 代换技术——替换成其他
1、凯撒密码
2、单表代换密码
3、夺表代换加密 维吉尼亚密码
4、一次一密
2.3 置换技术
第三章 分组密码和数据加密标准
3.1 分组密码原理
1. 流密码和分组密码的概念
流密码
分组密码
2. feistel结构的设计动机
从现实角度来看,使用大规模分组的任意可逆变换,不太现实。因为当分组长度为n,密钥长度为n*2n,一个64位的分组密码,密钥长度将达到10 21。考虑到这些困难,Feistel指出我们只需要对这种理想分组体系采取一种近似体制,用一些其他手段来达到加密强度,但又不需要这么大的空间。
3. festel密码
基本思想:用乘积密码来代表大尺寸的代换变换。交替同时使用置换和代换。本质是开发一个分组密码,密钥长为K比特,分组长为N比特,采用2K个变换,而不是理想分组密码的2N!个可用变换。
乘积密码是依次使用两个或两个以上基本密码,所得到的密码强度将强于所有单个密码的强度。
扩散 混淆
Feistel加密算法的结构 明文分为两组 每一组前一轮得到的为输入
轮函数 解密过程
3.2 数据加密标准
DES加密算法 思想:明文分组长度有64,密钥长度56
过程有3个阶段,首先是一个初始置换IP,用于重排明文分组的64bit数据。然后是具有相同功能的16轮变换,每轮中都有置换和代换运算,第16轮变换的输出分为左右两半,并被交换次序。最后再经过一个逆初始置换IP-1从而产生64bit的密文
除了初始置换与16轮结束时交换左右输出并作逆初始置换,过程与feistel相同。
F轮函数:首先对上一轮输出的右半部分R进行扩充、置换,每行用其相邻的两个元素向左右扩展。
接着这48位和密钥异或,接着是压缩,精简方法是,最左最右两位抽出来合一起,看做一个二进制数叫做A,中间4位也看做一个二进制数叫做B,每一轮都有自己的S盒子,共4行16列
雪崩效应:明文或密钥的微小改变对密文都会产生很大的影响。
3.3 DES的强度
DES密钥空间只有56-bit keys 不足以地域穷举式攻击。
第六章 对称密码的其他内容
6.1 多重加密
6.2 分组密码的工作模式
(1)电子密码本模式
(2)密码块链接
(3)密码反馈方式
(4)输出反馈方式
6.3 流密码
将明文M看成是连续的比特流或字节流,并用密钥序列中的第i个元素ki对明文中的mi进行逐位加密。加密的强度在于密钥序列的随机性和不确定性。
密钥流量是伪随机流,流密钥要做到安全的一个前提,就是尽可能不重复使用密钥,否则就失去了随机性的意义。流密码的核心在于密钥流生成器的设计,生成的密钥流要有很强的随机性;保持收发端密钥流的精确同步是实现可靠加解密的关键。
设计流密码需要考虑的主要因素
加密序列的周期要长。
密钥流应该尽可能地接近于一个真正的随机数流的特征。
密钥流生成器的输出取决于输入密钥的值,为了防止穷举攻击,密钥长度要足够长。
流密码与分组密码的异同
相对于分组密码来说,往往速度更快而且需要编写的代码更少;分组密码的有点是可以重复使用密钥,然而如果用流密码对两个明文加密中使用相同的密钥,则密码分析就会相对容易。因为对两个密文流进行异或,得出的结果就是两个原始明文的异或。
对于从不结束的通信传输流来说,流密码特别合适。而对于处理成块的数据,比如文件传输,电子邮件和数据库,分组密码则更为适用。
RC4
是一个可变密钥长度、面向字节操作的流密码。该算法以随机置换作为基础。分析显示该密码的周期大于10/100. 每输出一个字节的结果仅需要8条到16条机器操作指令。
RC4初始化时根据初始密钥,建立置换用的临时矢量,置换通过循环随机子密钥不断和下一明文字节异或。如果解密的时候,和密文字节异或即可。
第八章 数论
8.1 素数
模算术法则:
(a+b)mod n=[(a mod n) + (b mod n)] mod n
(a - b) mod n = [(a mod n) - (b mod n)] mod n
(a * b) mod n = [(a mod n)*(b mod n)] mod n
最大公约数
如果a|b, a|c, 则称a是b,c的一个公因子,如果a是b,c公因子中最大者,则称
扩展欧几里德定理
。。。今天到此为止。。。。