图解密码技术学习笔记

主题:图解密码技术
简介:密码技术入门学习
参考:译者分享
作者:ybb
时间:2021年12月15日
周自恒直播课学习笔记

4.分组密码的模式
4.1 DES和AES作为对称加密时使用的分组密码只能加密固定长度的明文,如果需要加密任意长度的明文就需要对分组密码进行迭代,而分组密码的迭代方法就称为分组密码的模式。分组密码模式的选择很重要,合适的模式才可以保证消息的机密性。
4.2.1分组密码和流密码
分组密码:每次只能处理特定长度的一块数据的一类密码算法,每一块就是一个待处理的分组,一个分组的bit数称为分组长度。
流密码:对数据流进行连续处理的一类密码算法,流密码一般以1bit、8bit、32bit为单位进行加密和解密。
注:分组密码处理完一个分组就结束了,因此不需要通过内部状态来记录加密的进度;
流密码是对一串数据流进行连续处理,因此需要保持内部状态进而记录加密的进度。
注:
流密码:一次性密码本
分组密码:DES、3DES、AES

4.2.2模式
分组密码的模式:迭代的方法;
4.2.3明文分组与密文分组
4.2.4主动攻击者Mallory
4.3 ECB模式
在主动攻击下,ECB模式可以在不破译密文的情况下操作明文。
消息认证码:防篡改
4.4 CBC模式
在CBC模式下,首先将明文分组与前一个密文分组进行异或运算,然后再进行加密。
注:链式相关,引入了误码传播特性,容易发现篡改。
4.4.2 初始化向量
IV:每次加密时都会随机产生一个不同的bit序列来作为初始化向量。
4.4.5 填充提示攻击
攻击者反复发送一段密文,每次发送时都对填充数据进行改变,接受者在无法正确解密时会返回一个错误消息,攻击者通过错误这一错误消息可以获得一部分与明文相关的信息,
4.4.6对初始化向量进行攻击
4.4.7 CBC模式的应用实例
4.5 CFB模式
密文反馈模式:在CFB模式中,前一个密文分组会被送到密码算法的输入端,所谓反馈,就是返回输入端继续使用。
4.5.3 CFB模式与流密码
一次性密码本:将明文和随机bit序列进行异或运算生成密文;
CFB模式:将明文分组和密码算法的输出进行异或运算生成密文分组;
CFB模式中由密码算法所生成的bit序列称为key stream,在CFB模式中,密码算法就相当于用来生成密钥流的伪随机数生成器,而初始化向量就相当于伪随机数的种子。
注:key stream是通过加密操作产生的,因此CFB模式下的加密与解密时密码算都执行加密操作
4.5.4CFB模式的解密
4.4.5 对CFB模式的攻击
4.6 OFB模式
OFB模式是输出反馈模式,在OFB模式中,密码算法的输出会反馈到密码算法的输入中。

4.7 CTR模式
CTR模式通过将逐次累加的计数器进行加密来生成密钥流的流密码。
流模式:OFB、CTR
OFB模式:加密的输出作为输入
CTR模式:计数器的值作为输入

CTR模式的优点能够以任意顺序处理分组,就意味着可以实现并行计算,在支持并行计算的系统中,处理速度很快。
CTR模式可以以任意顺序对分组进行加密和解密,因此在加密和解密时需要用到的计数器的值可以由nonce和分组序号直接计算出来。

CTR模式不存在误码传播;
4.7.4 错误和机密性
如果CTR模式的密文分组中有一个比特被反转了,则解密后明文分组中仅有与之对应的比特会被反转,这一错误不会在前后传播。
GCM模式:在CTR模式的基础上增加认证功能的模式称为GCM模式,这一模式能够在CTR模式生成密文的同时生成用于认证的消息,从而判断密文是否通过合法的加密生成,防止重放攻击。

7.1
7.2.2单向散列函数
单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值。
7.2.3单向散列函数的性质
根据任意长度的消息计算出固定长度的散列值;
能够快速计算出散列值;
消息不同散列值不同(雪崩函数);
具备单向性;
(单向散列、哈希、消息摘要、杂凑函数)
7.3单向散列函数的应用
检测软件是否被篡改;
基于password的加密;
构造消息认证码;
数字签名;
构造伪随机数生成器;
一次性password;

7.4单向散列函数的实例
暴力破解
原相攻击:给出散列值找对应的消息;
第二原相攻击:散列值相同,消息不同;

7.9
使用单向散列函数:完整性;
数字签名和消息认证码:认证;

8.消息认证码
请求是真正的请求,请求的内容是真实的请求。
8.2消息认证码
定义:
MAC:完整性和认证;
注:消息认证码是一种与密钥相关联的单向散列函数。

消息+哈希=散列值
消息+密钥+MAC=MAC值

存在的问题:
如何保证收发端共享密钥的安全传递。
8.3消息认证码的实例
银行SWIFT;
IPSec;
SSL/TLS;
注:MAC用户完整性校验和认证。
8.4消息认证码的实现方法

  • (补充对称密码和分组密码的知识)

HMAC;
分组密码;
流密码;
8.5认证
加密之后的密文采用MAC方式

8.7对消息认证码的攻击
8.7.1重放攻击
重复利用正确的MAC值。
防重放攻击:序号、时间戳、nonce
8.7.2暴力破解
8.8消息认证码不能解决的问题
防止否认(干了不承认),因此需要有个值得信赖的官方。

9.数字签名
9.3数字签名
引入:消息认证码由于收发端共享密钥,这就造成了收发端都可以算出正确的MAC值,对于第三方而言不能正确找出唯一。
9.3.3签名的生成和验证
公钥密码:公钥加密,私钥解密;
数字签名:私钥签名,公钥验签;

9.3.4公钥密码与数字签名
9.4数字签名的方法
直接对消息签名;
对消息的散列值签名;
注:对称快,分对称慢,对称安全性不如非对称,但是对称快。
9.6数字签名应用实例
利用好明文信息签名的安全信息公告;
软件下载;
9.6.3公钥证书
对公钥施加数字签名所得到的就是公钥证书。
9.7实现数字签名
通过RSA实现数字签名;
DSA、ECDSA、RSA
9.9对数字签名的攻击
中间人两面派攻击;
对单向散列函数的攻击;
潜在伪造;
暴力破解;
因数分解;
9.10数字签名的作用和不足

  • RSA
    缺少对公钥的认证,来自权威机构的数字证书出世。
    注: 公钥的数字签名就是数字证书。

11.密钥
11.2什么是密钥
11.2.1密钥就是一个巨大的数字
DES:56、112、168
AES:128、192、256
11.2.3密钥价值和明文同等重要
11.2.3密码算法和密钥
信息的机密性不应该依赖于密码算法本身,而是依赖于保管密钥。
11.2各种不同的密钥
对称加密密钥
非对称加密密钥
消息认证码密钥
数字签名密钥
用于确保机密性的密钥(确保机密性);
用于认证的密钥(防止数据篡改);

11.3.4会话密钥和主密钥
会话密钥:单词会话有效
主密钥:重复使用的长期密钥

11.3.5加密内容的密钥和加密密钥的密钥
CEK:用于会话密钥
KEK:用于主密钥
11.4密钥的管理
密钥的生成、传递、更新、保存、废除
11.4.1密钥的生成
用完全随机数生成秘钥(不可预测)
用口令加盐生成基于口令的密钥
11.4.2密钥的传递
迪菲赫尔曼密钥交换(Diffie-Hellman)
11.4.3密钥更新
途径:用当前密钥的散列值做下一个密钥。
注:后向安全指的是防止破译过去的通信内容
11.4.4密钥保存
我们记不住有实用价值的密钥,但是如果将密钥保存下来又有可能会被窃取。
密钥也要加密称为KEY。
类似于认证机构的层级,密钥加密密钥保存也有权威机构。
11.4.5密钥废除

11.5DH密钥协商
11.5.1利用交换的公开信息生成共享的秘密数字,并用于对称加密的密钥。
注:应用于IPsec
11.5.2DH密钥协商步骤

  • 自己梳理

11.6基于口令的密码
11.6.1基于口令的密码
11.6.2PBE加密和解密

口令
KEK
CEK
对称加密
11.6.4盐的作用
盐是由伪随机数生成器生成的随机数,配合口令,利用单向散列函数生成KEK。
其中盐的作用用于防字典攻击,增加破解的难度。
11.6.5口令的作用
11.6.6通过拉伸改良PBE
拉伸:将单向散列函数进行多次迭代。

12.随机数
12.3使用随机数的密码技术
随机数的应用场景
生成密钥;
生成密钥对;
生成初始化向量;
生成盐;

12.4随机数的性质
12.4.2随机数的性质分类
完全随机
不可预测
不可复现

随机性:弱伪随机数
不可预测性:攻击者在知道过去生成的伪随机数列的前提下,依然无法预测出下一个生成出来的伪随机数。强伪随机数(不可预测性是通过单向散列函数的单向性和密码技术的机密性来保证伪随机数生成器的不可预测性)
不可复现性:源于自然

12.5伪随机数生成器
科学的方法
12.6.3单向散列函数法
12.6.4密码法
12.7对伪随机数生成器的攻击
攻击种子;
对随机数池的攻击;

c语言假的随机数(不随机)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main() {
	srand((unsigned)time(0));
	int a;
	a = rand()%10;
	printf("%d\n",a);
	return 0;
}

13.PGP
13.2什么是PGP
PGP:Pretty Good Privacy
13.2.4PGP的功能
对称密码:
PGP支持使用对称密码进行加密和解密,对称密码可以单独使用,也可以和公钥密码组合成混合密码系统,可以使用的对称密码算法包括AES、三重DES等。
公钥密码:
PGP支持生成公钥密码的密钥对,以及用公钥密码进行加密和解密,实际上并不是使用公钥密码直接对明文进行加密,而是使用混合密码系统进行加密操作,可以使用的公钥密码算法包括RSA。
数字签名:
PGP支持数字签名的生成和验证,可以将数字签名附加到文件中,或者从文件中分离出数字签名,可以使用的数字签名的算法RSA、DSA、ECDSA。
单向散列函数:
PGP可以使用单向散列函数计算和显示消息的散列值,可以使用的单向散列函数算法包括SHA-1、SHA-256、SHA-384、SHA-512;
证书:
PGP可以生成OpenPGP中规定格式的证书,此外还可以颁发公钥的作废证明,并可以使用CRL对证书进行校验。
压缩:
PGP支持数据的压缩和解压缩,压缩采用ZIP格式。
文本数据:
PGP可以将二进制数据和文本数据相互转换。
大文件的拆分和拼合:
在文件过大无法通过邮件发送的情况下,PGP可以将一个大文件拆分成多个文件,也可以将多个文件拼合成一个文件。
钥匙串管理:
PGP可以管理所生成的密钥对以及从外部获取的公钥,用于管理密钥的文件称为钥匙串。
13.3生成密钥对
13.4加密和解密
13.5生成和验证数字签名
13.6生成数字签名并加密以及解密并验证数字签名
(加解密与数字签名技术结合)
13.7信任网
信任网:确认公钥合法性的方法。
证书:证书由认证机构对公钥施加数字签名,通过验证这个数字签名确认公钥的合法性。

14.SSL和TLS
SSL和TLS是一种在Web服务器中广泛使用的协议,当进行SSL/TLS通信时,Web浏览器上就会显示一个小锁头的图标(看左上方)。

  • HTTP与HTTPS
    HTTP请求的组成:
    方法 URI 协议版本

     	请求首部字段
    
     		内容实体
    

HTTP响应的组成:
协议版本 状态码 状态码的原因短语

			响应首部字段

					主体

14.2.3用SSL/TLS承载HTTP
用SSL/TLS承载HTTP,对请求和响应进行加密。
14.2.4 SSL和TLS的工作
14.2.5 SSL/TLS也可以保护其他协议
SMTP、POP3
14.2.6 密码套件
14.2.7 SSL与TLS的区别
TLS是SSL的升级版

  • 14.3使用SSL/TLS进行通信

14.3.1层次化的协议
TLS协议是由TLS记录协议和TLS握手协议这两层协议叠加而成的。
位于底层的TLS记录协议负责进行加密,位于上层的TLS握手协议负责除加密以外的其他操作(握手、密码规格更换、警告、应用数据协议)。
14.4对SSL/TLS的攻击
14.4.1对各个密码技术的攻击
SSL/TLS是框架,可以随时替换某种不安全的技术。
14.4.2OpenSSL的心脏出血漏洞
由于OpenSSL在TLS心跳扩展功能中对于请求的数据大小没有进行检查,从而导致误将内存中与该请求无关的信息返回给请求者,攻击者通过访问使用了包含该漏洞的OpenSSL的服务器,就可以在一定范围内窃取服务器上的信息。
14.4.3 SSL3.0的漏洞与POODLE攻击
14.4.4 FREAK攻击和密码产品出口管制
14.4.5 对伪随机数生成器的攻击
14.4.6 利用CRL证书的时间差进行攻击

14.5 SSL/TLS用户的注意事项
14.5.1即便对方拥有合法的证书,也不代表我们可以放心地发送信用卡号。
14.5.2 密码通信之前的数据是不受保护的
14.5.3 密码通信之后的数据是不受保护的
注:由于使用了SSL/TLS,因此信用卡号不会在通信过程中被第三方获取。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值