一年前的学科笔记,直接转载本人印象笔记上的内容,如若侵权请联系我
密码与密码学
密码:密码是指采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务。
密码学:密码学是研究编制密码和破译密码的技术科学。
-
密码编译学: 研究密码变化的客观规律,应用于编制密码以保护通信秘密
-
密码分析学\密码破译学: 应用于破译密码以获取通信情报
信息安全的五个基本属性:
机密性:保证信息为授权者享用而不泄漏给未经授权者 → 加密算法
完整性:数据完整性,未被未授权篡改或者损坏 → 杂凑函数、消息摘要函数
认证: → 数字签名
-
消息认证,保证消息来源的真实性
-
身份认证,确保通信实体的真实性
信息的不可否认性:要求无论发送方还是接收方都不能抵赖所进行的传输 → 数字签名
可用性:
保证信息和信息系统随时为授权者提供服务,而不要出现非授权者滥用却对授权者拒绝服务的情况。
密码算法的模型
![](https://i-blog.csdnimg.cn/direct/0cf8de44cf98457993ebc1a5e37f6686.png)
明文M密文C
秘密参数\密钥k1k2
加密函数:
![](https://i-blog.csdnimg.cn/direct/98855b26b4414ede844e464dd32d870c.png)
解密函数:
![](https://i-blog.csdnimg.cn/direct/d6a4a96addb340dd89cf35fe1d363f9e.png)
密码算法需求:
-
可逆: 算法的使用者可以将密文恢复成明文
-
不可逆: 敌手无法将密文恢复成明文
即已知密钥时加密解密容易,不知时不易
密码算法分类
按照密钥的使用分类
![](https://i-blog.csdnimg.cn/direct/dbd57b9f858f4a8ca25fd2af65f6c2a2.png)
![](https://i-blog.csdnimg.cn/direct/e20e9f6a4e4648ad8761c02b799e4c50.png)
按照功能分类
-
加密算法:用于机密性解决方案
-
杂凑函数、消息摘要函数:用于完整性解决方案
-
数字签名:用于认证和不可否认性
保密系统
一个
保密系统由:明文空间、密文空间、密钥空间、加密算法、解密算法构成
![](https://i-blog.csdnimg.cn/direct/773b2e2458b34a43980a3a21b951775d.png)
保密系统应当满足下述要求:
-
系统 即使达不到理论上是不可破的,也应当为实际上不可破的。即从截获的密文与某些明文对无法推算出明文与密钥
-
系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥。( Kerckhoff原则 )
-
加密和解密算法适用于密钥空间中的所有元素。
-
系统便于实现和使用。
Kerckhoffs假设:假定密码分析者和敌手知道所使用的密码系统。即密码体制的安全性仅依赖于对密钥的保密,而不应依赖于算法的保密
密码分析学
密码分析学的目标:
-
恢复密钥:针对加密和签名体制
-
恢复明文:针对加密体制
-
伪造签名:针对签名体制
-
找到碰撞:针对杂凑函数和消息认证码
密码分析者攻击密码体制的方法
-
穷举攻击:通过试遍所有的密钥来进行破译。
-
对抗:可增大密钥的数量。
-
统计分析攻击:通过分析密文和明文的统计规律来破译。
-
对抗:设法使明文和密文的统计规律不一样。
-
解密变换攻击:针对加密变换的数学基础,通过数学求解设法找到解密变换。
-
对抗:选用具有坚实的数学基础和足够复杂的加密算法。
密码破译
-
唯密文攻击
-
已知明文攻击
-
选择明文攻击
-
选择密文攻击
攻击强度由上到下增强
无条件安全的(不可破译的):
无论截获多少密文,都没有足够信息来唯一确定明文,则该密码是 无条件安全的,即对算法的破译不比猜测有优势。
计算上安全的:
使用有效资源对一个密码系统进行分析而未能破译,则该密码是强的或计算上安 全的
-
破译密文的代价超过被加密信息的价值。
-
破译密文所花的时间超过信息的有用期。
满足以上两点即为计算上安全的
三种加密算法
对称密钥加密算法
![](https://i-blog.csdnimg.cn/direct/53604c9a06e14232924e02b7346cd82e.png)
特点
-
加解密密钥相同
-
加解密速度快
应用
-
大量数据加密
-
消息认证码
常见算法:
ZUC,DES,AES,SM4……
公开密钥密码体制
![](https://i-blog.csdnimg.cn/direct/da02b0cf712d4290ab561f44c3de7e13.png)
特点
-
加解密密钥不同
-
加解密速度慢
应用
-
短消息加密
-
数字签名
-
身份认证
常见算法:
RSA,ECC,SM2,ElGamal……
杂凑函数(Hash算法)
![](https://i-blog.csdnimg.cn/direct/3b75f17119c14c2e86ed0891b2cd42d5.png)
特点
-
任意长输入映射为定长输出
-
输入变化,输出发生不可预测的变化
-
输出无法推导出输入
应用
-
完整性校验
常见算法:
SHA-1,MD5,SM3……
流密码
-
明文消息按字符或比特逐位加密
-
流密码也称为序列密码
-
密钥流可以用移位寄存器电路来产生,也促进了线性和非线性移位寄存器发展
-
流密码主要是基于硬件实现
-
常用流密码算法: ZUC(国产商用密码)、A5、SNOW、RC4
密码流生成器的基本原则
-
长周期
-
高线性复杂度
-
统计性能良好
-
足够的“混乱”
-
足够的“扩散”
-
抵抗不同形式的攻击
线性反馈移位寄存器:实现简单、速度快、有较为成熟的理论,成为构造密钥流生成器的最重要的部件之一。
安全性设计原则
1.混淆原则
-
明文不能由已知的明文,密文及少许密钥比特代数地或统计地表示出来。
-
密钥不能由已知的明文,密文及少许密钥比特代数地或统计地表示出来。
2.扩散原则
-
将明文的统计规律和结构规律散射到相当长的一段统计中去
-
让明文中的每一位影响密文中的尽可能多的位,或者说让密文中的每一位都受到明文中的尽可能多位的影响。
-
如果当明文变化一个比特时,密文有某些比特不可能发生变化,则这个明文就与那些密文无关,因而在攻击这个明文比比特时就可不利用那些密文比特.
分组密码算法应满足的要求
-
分组长度n要足够大
-
防止明文穷举攻击法奏效。
-
密钥量要足够大
-
尽可能消除弱密钥并使所有密钥同等地好,以防止密钥穷举攻击奏效。
-
由密钥确定置换的算法要足够复杂
-
充分实现明文与密钥的扩散和混淆,没有简单的关系可循,要能抗击各种已知的攻击。
-
加密和解密运算简单
-
易于软件和硬件高速实现。
-
数据扩展
-
一般无数据扩展,在采用同态置换和随机化加密技术时可引入数据扩展。
-
差错传播尽可能地小
-
一个密文分组的错误尽可能少的影响其他密文分组的解密
分组密码的实现原则
-
软件实现的原则:使用子块和简单的运算。
-
硬件实现的原则: 加密解密可用同样的器件来实现
对称密码算法的缺陷
-
密钥分配问题: 通信双方加密通信前要通过秘密的安全信道协商加密密钥,这种安全信道可能很难实现;对这个信道安全性的要求比正常传送消息信道的安全性要高
-
密钥管理问题: 在多用户网络中,任何两个用户之间都需要有共享的秘密钥,n个用户需要Cn2=n(n-1)/2个密钥,n=5000时,Cn2=12,497,500,系统开销非常大
-
没有签名功能: 当主体A收到主体B的电子文挡时,无法向第三方证明此电子文档确实来源于B, 传统单钥加密算法无法实现抗抵赖的需求
消息认证码
指消息被一密钥控制的公开函数作用后产生的用作认证符的固定长度的数值, 或称为密码校验和。