密码学_加密
目录
密码学
01 密码基础进制与计量
02 加解密基操 替换 移位 编码
编码
置换
移位
加解密强度
03 对称加密算法(私钥)
工作过程
缺陷
对称加密算法列举?
DES
DES算法架构
DES分组加密公式
DES中ECB-CBC两种加密方式
3DES
由于DES密钥太短,后来就有了3DES
缺点:3des很安全,加密效率不高,语言视频加密不适用
AES
非常大特点:扩展性
优点:替代3des ,加密效率高,合适语音视频
RC系列
用的比较广的RC4 流加密算法
轻量级算法
IDEA
软件实现的效率快des2倍
Blowfish
也是一个轻量级算法
国密算法
04 非对称加密算法(公钥)
公钥私钥一起用才能实现加解密功能
工作过程
公钥密码系统应用
RSA全能,DH交换,DSA只能签名。
DH
DH会话:解决前面这么把密钥给你问题
工作过程
RSA
慢(加密一般不用RSA)
其它公钥算法
05 数字签名(私钥签名)
06 数字证书与CA
作用:证明公钥是你的
07 哈希Hash与HMAC
哈希核对文件有没有被修改
HMAC(加盐)
在原文基础是加一个key
08 对称与非对称加密算法的完美融合
项目案例
09 密码学原理总结
密码学
01 密码基础进制与计量
ipv4 点分十进制
ipv6 十六进制
最小单位 0101比特流
存储最小单位 字节
02 加解密基操 替换 移位 编码
加密 = 加密算法+密钥
置换=替换
移位=移位
编码
编码规则
128个字符 2^7 = 我们可以把7个二进制数编码成一个ASCII码的这样一个编码
64个字符 2^5 = 我们可以把7个二进制数编码成一个BASE64的这样一个编码
base64编码问题:歧义 太相近混淆去掉6个字符
base58编码
------------------------------------------------加解密基本思想------------------------------------
置换
置换=双方先约定(对照规则) 具有规律性容易破解
移位
移位=不改变内容改变顺序 具有规律性容易破解
现代密码学设计基本原理:算法公开 + 关注密钥解决安全性保密性。
加解密强度
常识上:密钥越短加解密越快
03 对称加密算法(私钥)
工作过程
缺陷
对称加密非常大的一个缺陷:怎么去把你的密钥告诉给对方? 防止窃听 10W个人呢?
对称加密算法列举?
DES
des=块加密算法 ——>1G 拆分成几块加密
密钥56位太短很容易被当今电脑破解
DES算法架构
置换=替换(A改成G)
交换=移位(打乱顺序ABC CBA)
我们只需要知道
输入64位明文信息 块加密
中间运用到了置换和移位的操作 重复16轮
DES分组加密公式
左边32位
48位 (经过一个Expand函数扩展到)
密钥 +(经过一个S-Box函数移位)
32密文 (经过一个P-Box函数压缩32)
DES中ECB-CBC两种加密方式
EBC方式容易被攻击
统计学攻击(猜): 英文出现最多字母是E 汉语出现最多字母是的。我发送一堆信息统计密文出现最多的字母是x,就能知道x是E或者是的。 根据频率第二多的是什么统计就能分析出明文密文对应关系
尝试攻击(猜):我发送一堆东西,123 用此算法 得到M
456 用此算法 得到N
以后我看到M就知道密码是123
部分解密:解密其中某一个块。相同的块都知道了。
EBC方式安全一点
首先:加了个生成初始随机向量 IV ,我们的块+由这个生成随机的IV= 一个密文
安全?:由于这个随机值每次都不一样。
123(即使你是)(由于随机值是1)
M (输出)
下次再加密
123 (随机值是2)
N (输出)
此时 统计学攻击 尝试攻击都没有用了
由于明文+随机向量IV=密文,又作为下次的随机向量。链式结构。
下次:上次密文+下一个明文=密文 #保障了加密的安全 现在用的是CBC ECB几乎不用
DES是56位密钥,密钥太短不安全,要用的话得经常去修改密码,防止被暴力破解
DES的算法底层是比较安全的现在已经用了几十年了 只能够被暴力破解,if你要破解这个算法的话最少要进行2^55次方暴力破解次数(因为一共有2^56次方种密钥按照暴力破解运气有50%(相当于除以2)——>2^56 / 2 = 2^55
这个DES(CBC)算法本身是比较安全的,有比DES密钥更长的比如不对称加密算法中WEP108但这个算法本身有漏洞所以破解起来比DES56还要快。
所以DES算法肯定是安全的。
但是DES有一个问题。DES算法因为有一个密钥。我们要提供一个安全的信道给别人密钥。
困难:我有密钥,我加完密之后,怎么把密钥给你。
3DES
由于DES密钥太短,后来就有了3DES
密钥长度放大3倍
56x3=168位
缺点:3des很安全,加密效率不高,语言视频加密不适用
AES
1997发布用来替代DES的算法,DES56太短,随着计算机发展早期56不安全。开始寻找新的算法
为了解决3des的效率问题。
AES(高级加密算法),合适用户高速的网络并且适合在硬件上去实现加密。
非常大特点:扩展性
aes密钥是可以变的既可以是128(4倍)也可以是192(6倍)256位(8倍)(并且还能以32位区间去扩展:32的倍数)。我们的des56 3des168。
即使将来量子力学出现了,我的密码可以给你扩展成2^10 2^20....这样子计算机破解太困难了
作为替代3des加密技术,软硬件运行效率比较高。
优点:替代3des ,加密效率高,合适语音视频
aes用的非常多。要了解。特别是aes加密算法的应用。无线和语音视频加密。
RC系列
后来又有了RC系列
用的比较广的RC4 流加密算法
它不是基于块的,是基于比特流的。
des 1G分块 64 64 64 64
rc 1G基于流 010101整个加密
无线里面WEP WPA认证都是用的RC4 WPA2-AES
轻量级算法
RC算法对硬件的要求特别低,相当于是一个轻量级加密算法,出现时间晚,运行速度快des
#速度快,对硬件要求低(物联网:芯片内存CPU耗电比较低合适这种轻量级加密算法)
IDEA
用的比较少,听的比较少。
分组长度也是64 64 64 64
密钥长度128
软件实现的效率快des2倍
Blowfish
也是一个轻量级算法
合适小芯片这类空间小的
特别是在以后互联网普及之后,前端一些传感器一些很小的嵌入式芯片空间内存电量比较少更合适
这种轻量级加密算法。
需要的空间不到5kb
des aes加密算法比较耗内存。更合适在电脑手机上去跑。不合适在轻量级终端去跑。
国密算法
国内加密算法
SM1 SM2(这些加密的产品不允许被出口)
04 非对称加密算法(公钥)
私钥加密公钥解,公钥加密私钥解
公钥私钥一起用才能实现加解密功能
工作过程
我:用你的公钥加密 你:私钥解密
应用:用户私钥“数字签名”,我确定是不是他签的“用他的公钥去解一下”能解开就是他签的。
单向过程
私钥可以推出公钥,公钥不能推回私钥
公钥密码系统应用
RSA全能,DH交换,DSA只能签名。
DH
DH会话:解决前面这么把密钥给你问题
不会被中间人截获,或者截获了也看不懂。
工作过程
分成两步
第一步(上):算法生成一对密钥 4个密钥。把公钥发给对方 私钥自己保存
第二步(下):自己私钥 对方发过来的公钥 生成一个key
底层数学保证两边key相同
这样Bob发送密文,Alice这边通过DH算法就能知道使用什么key。这样就实现了密钥交换
也就是通过交互公钥就实现了密钥的交换
底层数学:作用保证key相等
可行之处:在两端产生相同的密钥, 外人是抓不到的
RSA
使用非常多
慢(加密一般不用RSA)
主要用于:数字签名和密钥交换 (加密散列、密钥)
私钥都存在本地的话 没有通过网络传送 过程安全
公钥加密密文
私钥加密数字签名(可以理解为 证明私人签名 私钥)
密码学的最底层都是数学问题
其它公钥算法
ECC比特币加密算法就是这个
05 数字签名(私钥签名)
底层还是基于公钥密码学算法
认证:对方私钥加密 对方公钥解密成功 则证明是对方发的
抗抵赖:用你公钥解开,肯定用你私钥加密的。你发过这个消息不能否认。
数字签名类比RSA这个原理
数字签名
哈希算法是无论明文多大都能生成定长的摘要 对这个摘要进行签名(密文加本人签名一并发送)
核心:你私钥签名,你公钥解开签名 证明就是你发的。
为什么用哈希对摘要签名? 不对明文签名? 明文太大非常慢
这个图其实有点问题,明文加密用的不是对方公钥(用的不是非对称加密算法)(用的是对称加密算法key),真实项目是对称非对称一起来用。
06 数字证书与CA
问题:确定是对方的公钥?假如发过来公钥是冒充的客户。
作用:证明公钥是你的
怎么证明你是你
权威机构颁发一个证书 CA #私钥签名
公安局颁发一个证书 身份证 #公安局印章
数字证书格式
07 哈希Hash与HMAC
什么是哈希? 就是将一段数据转化成一段定长的数据
不可逆性(单向): 1比特 ----> 128 但不可能128 ——>1比特
无碰撞性 :哈希值几乎唯一
雪崩效应:123明文改一个 哈希后全部变没有规律可言
应用:下载软件。验证哈希值 软件完整性
密码保存。哈希后保存在系统中(MD5)
单向,不能通过哈希值推出密码。
彩虹表 既MD5数据库也就是MD5破解网站(其实就是123哈希后记住生成一堆常见密码对照表形成数据库 猜出来的) 而不是通过逆向算法找出来的
存哈希密码也有一定风险,密码强度不够高还是彩虹得到。
怎么复杂一点: 创建时间 密码 一起哈希存
哈希核对文件有没有被修改
HMAC(加盐)
hmac=盐+哈希 类比
在原文基础是加一个key
也就是不是纯粹的哈希 而是在哈希前面加一个key
123+X 生成一个HMAC
为什么两边不用123哈希验证? 假如我在中间截获哈希码(拿去彩虹表攻击)#也就是网站破解
#碰撞破解
密码+加一个随机数哈希的话 没有这个随机数算不出来。
哈希hash和hmac一定要理解非常非常重要
08 对称与非对称加密算法的完美融合
对称加密算法有几个问题 密钥怎么安全传递对端(分发),10W人怎么做密钥存储管理,对称加密算法不支持数字签名。
对称加密算法缺点 加密速度太慢
项目案例
发送方 3步操作
1 明文哈希摘要签名
2 明文/签名/公钥key(或者数字签名)/ 大数据打包后随机数密钥KEY加密
3 KEY加密传输 #过程安全私钥是存人家本地的
数字证书存的就是公钥,私钥是签名。
接收方 3步操作
1
2
3
09 密码学原理总结
私钥不需要在网络上传输。传输的是公钥。
验证对方发的 数字签名
验证篡改 比对哈希
可以理解为,签名就是一个加密的过程 。也密钥问题
验证签名就是解密
数字签名引发一个非常重要的概念 证书 CA
怎么证明公钥是你的 数字证书
PKI公钥管理体现 生成 颁发等等