密码学读书笔记系列(二):《图解密码技术》

本书全面介绍了密码学的基础知识,包括对称密码、公钥密码、分组密码模式、单向散列函数、消息认证码、数字签名等核心概念。通过对历史上的著名密码如凯撒密码、Enigma的解析,以及现代密码技术如AES、RSA的探讨,阐述了密码在信息安全中的重要角色。此外,还涉及了PGP、SSL/TLS等实际应用,展示了密码技术如何保障网络通信的安全。

密码学读书笔记系列(二):《图解密码技术》

第1部分 密码

第一章 环游密码世界

1.2 密码

发送者、接受者、窃听者
加密(之前为明文,之后为密文)
解密(将密文恢复为明文)
密码破译/破译/密码分析——破译者

1.3 对称密码与公钥密码

密码算法(加密算法+解密算法)
密钥(密码算法中所需要)
对称密码(加密和解密时使用同一密钥的方式)
公钥密码/非对称密码(加密和解密时使用不同密钥的方式)
混合密码系统(结合对称密码和公钥密码)

1.4 其他密码技术

散列值:又称哈希值、密码校验和、指纹、消息摘要,被单向散列函数计算所得。
单向散列函数:保证完整性(即数据是正牌的而不是伪造的,可以检测出数据是否被篡改过)
消息认证码:确认消息是否来自所期望的通信对象(保证完整性+提供认证机制)
数字签名:防止伪装、篡改、否认等威胁的技术(保证完整性+提供认证+防止否认)	
伪随机数生成器:能够模拟生成随机数列的算法——密钥生成

1.5 密码学家的工具箱

对称密码
公钥密码
单向散列函数
消息认证码
数字签名
伪随机数生成器

1.6 隐写术与数字水印

隐写术——隐藏消息本身,但明白嵌入消息的方法,就可以搞清楚消息内容,不可以代替密码
数字水印技术——将著作权拥有者及购买者的信息嵌入文件中的技术
密码隐藏的是内容,隐写术隐藏的是消息本身。

1.7 密码与信息安全常识

1、不要使用保密的密码算法(隐蔽式安全性)
原因:
	密码算法的秘密早晚会公诸于世
	开发高强度的密码算法是非常困难的

2、使用低强度的密码比不进行任何加密更危险——错误的安全感

3、任何密码总有一天都会被破解(除非是一次性密码本,但现实不可用)

4、密码只是信息安全的一部分

第二章 历史上的密码——写一篇别人看不懂的文章

2.2 凯撒密码

将明文中所使用的字母表按照一定的字数进行“平移”
	平移操作:密码的算法
	平移的字母数量:密钥
	解密:反向平移
	暴力破解/穷举搜索:按顺序尝试

2.3 简单替换密码

将明文中所使用的字母表替换为另一套字母表的密码来生成密文
	加密:依次按照替换表进行替换
	解密:反向替换
	密钥空间:即所有密钥的集合,在简单替换密码中暴力破解较难
	频率分析:统计字母出现的频率
		·密文越长越容易破译
		·高频字母、低频字母、开头和结尾、单词之间的分隔均是线索

2.4 Enigma

20C初发明,能够进行加密、解密的机器,由键盘、齿轮、电池、灯泡组成,通过一台机器完成加密、解密两种操作。
需要使用相同的密钥——国防军密码本,记录每日密码
每日密码——加密通信密码(通信密码为3个字母),叫做:密钥加密密钥
解密步骤:分解、设置Enigma、解密通信密码、重新设置Enigma、解密消息
弱点:
	将通信密码连续输入两次并加密
	通信密码是认为选定的
	必须派发国防军密码本

2.5 密码算法和密钥分开

解决了希望重复使用,但重复使用增加风险的问题

第三章 对称密码(共享密钥密码)——用相同的密钥进行加密和解密

3.3 从文字密码到比特序列密码

1、编码:将现实世界中的东西映射为比特序列的操作称为编码
(计算机的操作对象是0和1排列而成的比特序列)
2、XOR异或操作

3.4 一次性密码本

原理基于:将明文与一串随机的比特序列进行XOR运算
解密:加密的反运算
无条件安全,理论上无法破译
但是现实不可行:
	密钥的配送、保存、重用、同步、生成(流密码,使用伪随机数生成其所产生的比特序列)

3.5 DES

一种将64比特的明文加密成64比特的密文的对称密码算法,
实际密钥长度是56比特(64比特,但每隔7比特会设置一个用于错误检查的比特)
分组密码:以分组为单位进行处理的密码算法
模式:迭代的具体方式
结构:Feistel网络/结构/密码
	在此网络中,加密的步骤称为“轮round”
	轮函数的作用:根据“右侧”和子密钥生成对“左侧”进行加密的比特序列,是密码系统的核心
	性质:
		·轮数可以任意增加
		·加密时无论使用任何函数作为轮函数都可以正确解密
		·加密和解密可以用完全相同的结构来实现

差分分析:“改变一部分明文并分析密文如何随之改变”
线性分析:将明文和密文的一些对应比特进行XOR并计算其结果为零的概率
该两种分析的前提是,假设密码破译者可以选择任意明文并得到其加密的结果——选择明文攻击		

3.6 三重DES(TDEA/3DEA)

三重DES:为了增加DES的强度,将DES重复3次所得到的一种密码算法,具有加密、解密、加密的过程
当三重DES中所有的密钥都相同时,三重DES等同于普通的DES
密钥长度:56*3=168比特
现状:除被银行等机构使用,较少使用

3.7 AES

在DES之后的新标准的一种对称密码算法
竞选条件:被选为AES的密码算法必须无条件地免费供世界使用
通过竞争实现标准化

3.8 Rijndael

分组密码算法,使用了SPN结构

第四章 分组密码的模式——分组密码是如何迭代的

4.2 分组密码的模式

分组密码:每次只能处理特定长度的一块数据的一类密码(分组:一块)
		——处理完一个分组即结束,不需要通过内部状态记录加密的进度
分组长度:一个分组的比特数
流密码:对数据流进行连续处理的密码算法(一般以1比特、8比特、32比特为单位进行加密解密)
		——对数据流进行连续处理,需要保持内部状态
比特和字节的换算:8比特等于1字节

对分组密码算法进行迭代,从而将超过分组长度的密码进行加密——分组密码的模式
分组密码的主要模式(5种):
	ECB模式——电子密码本模式(将明文分割为多个分组,并逐个加密,不可以使用)
	CBC模式——密码分组链接模式		
	CFB模式——密文反馈模式
	OFB模式——输出反馈模式
	CTR模式——计数器模式

明文分组:将分组密码算法中作为加密对象的明文,长度与分组密码算法的分组长度是相等的。
密文分组:使用分组密码算法将明文分组加密之后生成的密文

主动攻击者Mallory:主动介入发送者和接受者之间的通信进程,进行阻碍通信或篡改密文等活动

4.3 ECB模式(electronic codebook):

将明文分组直接加密,即将明文分组加密之后的结果直接成为密文分组(一一对应)
当最后一个明文分组的内容小于分组长度时,需要用一些特定数据进行填充
攻击:攻击者无需破译密码就能操纵明文,只需知道哪个分组记录了什么样的数据即可
弱点:可以在不破译密文的情况下操纵明文

4.4 CBC模式(cipher block chaining):

密文分组如链条般相互连接在一起
首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密
加密第一个明文分组时,准备一个长度为一个分组的比特序列代替前一个密文分组——初始化向量
特点:一旦存在n密文分组损害,则缺失比特的位置之后的密文分组也就无法解密,但
攻击:对初始化向量中的任意比特进行反转,则明文分组中的相应比特也会被反转。	
填充提示攻击:利用分组密码中的填充部分进行攻击的方法。攻击者反复发送一段密文,每次发送时都对其中填充的数据进行少许改变,接受者返回错误信息,其中包含一部分与明文相关的信息。
	——适用于所有需要进行分组填充的模式
应用实例:SSL/TLS(确保互联网安全的通信协议)

*在CBC模式中,假设每次加密都使用同一个初始化向量,当同一密钥对同一明文进行加密时,所得到的密文一定是相同的。

4.5 CFB模式(cipher feedback)

前一个密文分组会被送回密码算法的输入端(XOR实际充当了对分组进行加密的角色)
密码算法的输出相当于一次性密码本中的随机比特序列
密钥流:由密码算法(相当于伪随机数生成器)所生成的比特序列
CFB模式可以被看作是一种使用分组密码来实现流密码的方法
解密:分组密码算法依然执行加密操作
重放攻击:当发送者使用相同的密钥时,主动攻击者可以通过替换之前保存的密文分组达到将以前的电文混入其中的效果

4.6 OFB模式(output-feedback)

算法输出能够反馈到密码算法的输入中,也属于流密码
对比CFB模式:密码算法的输入不同,
	CFB——密码算法的输入是前一个密文分组
	OFB——密码算法的输入是密码算法的前一个输出
			密钥流可以通过密码算法事先生成,与明文分组无关
			(XOR运算和生成密钥流并行——效率)

4.7 CTR模式(CounTeR模式,计数器模式)

一种通过将逐次累加的计数器进行加密来生成密钥流的流密码
每个分组对应一个逐次累加的计数器,并通过计数器进行加密来生成密钥流。
最终的密文分组:通过计数器加密得到的比特序列,与明文分组进行XOR得到

计数器的生成方法:
	加密时会生成一个不同的值作为计数器的初始值(nonce+分组序号). nonce不变,分组序号累加
特点:使用了完全相同的结构,程序上实现较为容易
	能够以仁任意序对分组进行加密、解密
	能够实现并行计算(速度非常快)
错误:OFB的类似弱点
机密性:
-OFB:如果对密钥流的一个分组进行加密后结果恰巧与加密前相同,则分组后的密钥流会变成同一值不断反复
-CTR:不存在上述问题

第五章 公钥密码——用公钥加密,用私钥解密

5.3 密钥配送问题

只有同时将密钥发送给接受者,接受者才能解密。
但密钥和密文不能同时发送,否则窃听者也能解密

(1)通过事先共享密钥解决
如何以安全的方式将密钥交给对方
如何解决人数较多的情况下对应所需要的密钥数量增
(2)通过密钥分配中心解决
密钥分配中心KDC,key distribution center
局限性:员工数量增加,KDC负荷增加;如果密钥分配中心计算机故障,全公司通信瘫痪
(3)通过Diffie-Hellman密钥交换来解决
加密通信的双方交换的信息即使被窃听者窃听到也没问题,双方可以根据交换信息生成相同的密钥
(4)通过公钥密码解决
加密和密钥不同。拥有加密密钥的任何人都可以加密,但没有解密密钥则无法解密

5.4 公钥密码/非对称密码

公钥和私钥一一对应,两者不能分别单独生成
没有办法解决的问题:公钥认证问题——得到的公钥是否正确合法
另一个问题:处理速度只有对称密码的几百分之一

5.5 时钟运算

mod运算(求模运算):除法求余数的运算
乘方的逆运算称为对数,时钟运算中的对数称为离散对数

5.6 RSA(公钥密码算法)

加密:密文 = 明文的E次方 mod N
E和N的组合是公钥,写作{E,N}或者(E,N),E- Encryption,N- Number
解密:明文 = 密文的D次方 mod N
D和N的组合是公钥
E\N\D这三个数是生成密钥对

5.7 对RSA的攻击

(1)通过密文来求得明文:求离散对数——难,没有高效算法
(2)通过暴力破解来找出D:逐一尝试有可能作为D的数字破译
(3)通过E和N求出D:质数p、q不能被密码破译者所知
	对N进行质因数分解攻击:对大整数进行质因数分解较难
	通过推测p、q进行攻击:如果伪随机生成器的算法很差,则有可能推测出来
(4)中间人攻击
(5)选择密文攻击:
	攻击者使用解密提示(发送任意数据,服务器都会将其当作密文来解密并返回解密结果)
	抵御——对密文进行认证——RSA-OAEP最优非对称加密填充

5.8 其他公钥密码

(1)ElGamal 方式:利用mod N下求离散对数的困难度
(2)Rabin方式:利用 mod N下求平方根的困难度
(3)椭圆曲线密码:特点所需密钥长度短,利用乘法运算的逆运算非常困难

第六章 混合密码系统——用对称密码提高速度,用公钥密码保护会话密钥

6.3 混合密码系统

用伪随机数生成器生成对称密码加密中使用的会话密钥(对称密码的密钥&公钥密码的明文)
先用快速的对称密码对消息进行加密——机密性
再用公钥密码对对称密码的密钥进行加密——密钥的机密性,速率提升
案例:密码软件PGP、网络密码通信使用的SSL/TLS

6.4 怎样才是最高强度的混合密码系统

伪随机数生成器——算法较好
对称密码——高强度算法,确保密钥有足够的长度,合适的分组密码模式
公钥密码——高强度算法,确保密钥有足够的长度
密钥长度的平衡——对称密码和公钥密码的密钥长度具备同等的强度

6.5 密码长度的组合

三重DES:将3个DES组合在一起,从而形成的一种密钥比 DES 更长的对称密码。通过加密一解密一加密这样的连接方式,不但可以维持和DES 的兼容性,同时还能够选择性地使用DES-EDE2 这种密钥长度较短的密码。
数字签名,是由单向散列两数和公钥密码组合而成的。
证书,是由公钥和数字签名组合而成的。
消息认证码,是由单向散列两数和密钥组合而成的,也可以通过对称密码来生成。
伪随机数生成器,可以使用对称密码、单向散列两数或者公钥密码来构建。

第2部分 认证

第7章 单向散列函数——获取消息的“指纹”

7.2 单向散列函数

单向散列函数/消息摘要函数/哈希函数/杂凑函数:
	输入即消息(也叫原像),输出即散列值(也叫消息摘要或者指纹)。
	可以根据消息的内容计算出散列值,散列值可以被用来检查消息的完整性/一致性。
	性质:
	1、散列值的长度和消息的长度无关,总会计算出固定长度的散列值
	2、快速计算出散列值
	3、消息不同,散列值也不同(需要具备抗碰撞性,即两个不同消息不应产生同一散列值)
	4、具备单向性——无法通过散列值反算出消息的性质

7.3 单向散列函数的实际应用

(1)检测软件是否被篡改
(2)基于口令的加密
(3)消息认证码
(4)数字签名
(5)伪随机数生成器
(6)一次性口令

7.4 单向散列函数的具体例子

MD4、MD5
SHA-1\SHA-257\SHA-384\SHA-512
RIPEMD-160
SHA-3

7.5 SHA-3

7.6 Keccak

采用海绵结构,被选定为SHA-3标准的单向散列函数算法
输入的数据在进行填充之后要经过吸收阶段、基础解读啊最终生成输出的散列值
每次被吸收的输入分组成都为r个比特(r:比特率)
内部状态中有c个比特是不受输入分组内容的直接影响(c:容量)
双工结构:输出和输入以同速率进行

7.7 应该使用哪种单向散列函数?

MD5——不安全
SHA-2、-3安全可以使用
不应该使用任何自制算法

7.8 对单向散列函数的攻击

(1)暴力破解
(2)生日攻击:主动攻击者寻找散列值相同的两条消息

7.9 单向散列函数无法解决的问题

“伪装问题”——需要认证

第8章 消息认证码——消息被正确传送了吗?

8.2 消息认证码(MAC)

确认完整性并进行认证的技术,是一种与密钥相关联的单向散列函数
输入包括任意长度的消息和一个发送者与接受者之间共享的密钥
输出固定长度的数据——MAC值
需要通过共享密钥来计算MAC值
同样具有密钥配送问题

8.3 消息认证码的应用实例

SWIFT
IPsec——对IP协议增加安全性的方式
SSL/TLS

8.4 消息认证码的实现方法

(1)使用单向散列函数实现
(2)使用分组密码

8.5 认证加密(AE或者AEAD)

是一种将对称密码和消息认证码相结合,同时满足机密性、完整性和认证三大功能的机制
Encrypt-then-MAC:先用对称密码将明文加密,然后计算密文的MAC值

8.6 HMAC的详细介绍

HMAC:使用单向散列函数来构造消息认证码的方式
	任何高强度的单向散列函数都可以被使用
步骤:
(1)密钥填充 
(2)填充后的密钥与称为ipad的比特序列进行XOR运算
(3)ipadkey与消息结合	
(4)计算散列值
(5)填充后的密钥与被称为opad的比特序列进行XOR运算
(6)与散列值结合
(7)计算散列值

8.7 对消息认证码的攻击

(1)重放攻击——将正确的MAC值保存下来重复利用
防御方法:
——序号:约定每次都对发送的消息赋予一个递增的编号,在计算MAC值时将序号包含在消息中
——时间戳:约定消息中包含当前的时间
——nonce:通信钱先发送一个一次性的随机数
(2)密钥推测攻击

8.8 消息认证码无法解决的问题

(1)对第三方的证明
(2)防止否认

第九章 数字签名——消息到底是谁写的

9.3 数字签名

消息认证码无法防止否认——发送者和接受者之间共享同一个密钥
数字签名——发送者和使用者之间各自使用不同的密钥

生成消息签名——发送者
验证数字签名——接收者 / 第三方(验证者)

数字签名对签名密钥和验证密钥进行区分,使用验证密钥无法生成签名。
签名密钥只能由签名的人持有,验证密钥时任何需要验证签名的人都可以持有
数字签名时通过将公钥密码“反过来用”而实现的,私钥加密=生成签名,公钥解密=验证签名

9.4 数字签名的方法

(1)直接对消息签名
(2)对消息的散列值签名

9.5 对数字签名的疑问

(1)密文为什么能作为签名使用?
	密文并非用于保证机密性,而是代表认证符号
(2)数字签名不能保证机密性吗?
	数字签名作用就不是保证机密性
(3)这种签名可以随意复制吗?
	签名即使被复制,也不能改变特定签名者和特定消息绑定在一起的事实
(4)消息内容会不会被任意修改?
	修改后验证签名失败,验证者能够发现修改行为。数字签名实现的是识别修改,而非防止修改
(5)签名会不会被重复使用?
	事实上无法做到将签名提取出来重复使用
(6)删除签名也无法作废合同吗?
	是的
(7)如何防止否认?
	私钥是发送者持有的,只有发送者才能生成签名,因此发送者没办法否认
(8)数字签名真的能够代替签名?
	数字签名有一些优点,但同时也具备风险,因此单纯认为数字签名能够替代签名是危险的。

9.6 数字签名的应用实例

(1)安全信息公告
(2)软件下载
(3)公钥证书
(4)SSL/TLS

9.7 通过RSA实现数字签名

9.8 其他的数字签名

EIGamal方式
DSA
ECDSA
Rabin方式

9.9 对数字签名的攻击

(1)中间人攻击
(2)对单向散列函数的攻击
(3)利用数字签名攻击公钥密码
(4)潜在伪造:攻击者能够生成合法的签名,使之正常通过校验。

9.10 各种密码技术的对比

混合密码系统 V.S. 对散列值签名
	对称密码的密钥——机密性!
	单向散列函数的散列值——完整性!

第十章 证书——为公钥加上数字签名

10.2 证书

公钥证书(PKC,public-key certificate )能够知道认证机构认定公钥确属于此人
认证机构(CA)
认证业务准则(CPS):
	测试服务——可能无需身份确认
	政府部门认证机构——可能需要根据法律规定进行身份确认

10.3 证书标准规范

使用最广泛的 X.509_规范(RFC3820)

10.4 公钥基础设施(PKI)

是为了能够更有效地运用公钥而制定的一系列规范和规格的总称。
组成要素:
	用户——使用者
	认证机构——颁发证书者(生成密钥对、注册证书、作废证书与CRL(证书作废清单))
	仓库/证书目录——保存证书的数据库
证书的层级结构:
	对自己的公钥进行数字签名的行为——自签名——根CA

10.5 对证书的攻击

(1)在公钥注册之前攻击
(2)注册相似人名进行攻击
(3)窃取认证机构的私钥进行攻击
(4)攻击者伪装成认证机构进行攻击
(5)钻CRL的空子(发布时间差/)

第3部分 密钥、随机数与应用技术

第十一章 密钥——秘密的精华

11.2 什么是密钥

密钥是一个巨大的数字,数字本身大小不重要,重要的是密钥空间的大小。 
密钥空间的大小是由密钥长度决定的
密钥和明文是等价的
🌟信息的机密性不应该依赖于密码算法本身,而是应该依赖于妥善保管的密钥。

11.3 各种不同的密钥

(1)对称密码和公钥密码的密钥
对称密码:共享密钥密码
公钥密码:密钥对
(2)消息认证码和数字签名的密钥
消息认证码:只能由持有合法密钥的人计算出来,密钥对发送者和接受者以外的人保密
数字签名:签名的生成和验证需要不同密钥,任何人都可以验证签名
(3)用于确保机密性的密钥与用于认证的密钥
确保机密性——对称密码和公钥密码的密钥
用于认证——消息认证码和数字签名
(4)会话密钥(每次通信只能使用一次)与主密钥(一直重复使用)
(5)用于加密内容的密钥(CEK)与用于加密密钥的密钥(KEK)

11.4 密钥的管理

(1)生成密钥:随机数/口令
(2)配送密钥:实现共享密钥/使用密钥分配中心/使用公钥密码
(3)更新密钥——提高通信机密性:能够用当前密钥的散列值作为下一个密钥
后向安全:防止破译过去的通信内容
(4)保存密钥:对密钥进行加密——减少要保管的密钥数量
(5)作废密钥

11.5 Diffie-Hellman 密钥交换

通信双方交换公开的信息,生成共享密钥
窃听者无法窃听的原因:有限域的离散对数问题的复杂度(暂时没有出现有效算法)
优化:椭圆曲线Diffie-Hellman

11.6 基于口令的密码(PBE)

根据口令生成密钥并用该密钥进行加密的方法,加密和解密使用同一密钥
伪随机数生成器生成一个被称为“盐”的随机数,盐+口令输入进单向散列函数,得到的散列值是KEK
盐:用来防御字典攻击(事先进行计算并准备好候选密钥列表的方法)
在使用基于口令的密码(PBE)时,需要将盐和加密后的CEK通过物理方式进行保护
通过拉伸(将单向散列函数多次迭代)改良PBE

11.7 如何生成安全的口令

(1)使用只有自己才能知道的信息,但:
	不要用对自己重要事物的名字、不要用关于自己的信息、不要用别人见过的信息
(2)将多个口令分开使用
(3)有效利用笔记
(4)理解口令的局限性
(5)使用口令生成和管理工具

第12章 随机数——不可预测性的源泉

12.3 使用随机数的密码技术

12.4 随机数的性质:

随机性——不存在统计学偏差、完全杂乱
不可预测性——不能从过去的数列推测下一个
不可重现性——除非将数列本身保存下来,否则不能重现相同的数列(反复掷骰子生成数列)

12.5 伪随机数生成器(PRNG)

RNG——随机数生成器

12.6 具体的随机数生成器

(1)杂乱的方法——周期短、无法判断生成的随机数是否不可预测
(2)线性同余法——不能用于密码技术,不具备不可预测性
(3)单向散列函数法——单向性是不可预测性的基础
(4)密码法——机密性是不可预测性的基础
(5)ANSI X9.17
(6)其他算法——梅森旋转算法

12.7 对伪随机数生成器的攻击

(1)对种子进行攻击
(2)对随机数池进行攻击

第十三章 PGP——密码技术的完美结合

13.2 PGP

90年的一款密码软件(pretty good privacy)
OpenPGP:对密文和数字签名格式进行定义的标准规格	
GnuPG:基于OpenPGP标准开发的密码学软件
PGP功能:对称密码、公钥密码、数字签名、单向散列、证书、压缩和解压缩、文本数据、大文件拆分拼合、钥匙串管理(钥匙串:管理密钥的文件)

13.3 生成密钥对——加密和数字签名之前的步骤

13.4 加密和解密

加密:混合密码系统加密,但包括消息的压缩,二进制到文本转换
解密:通上

13.5 生成和验证数字签名

生成数字签名:消息与相对应的签名拼合,追中转换成报文数据
验证数字签名:接收者在接受到生成的报文数据后,得到原始消息并验证数字签名的过程

13.6 生成数字签名并加密以及解密并验证数字签名

13.7 信任网

PGP用户能够互相对对方的公钥进行数字签名
信任网——不依赖认证机构,构建每个人之间的信任关系(自己决定要信任哪些公钥)
	•场景1:通过自己的数字签名进行确认
	•场景2:通过自己完全信任的人的数宇签名进行确认
	•场景3:通过自己有限信任的多个人的数字签名进行确认
公钥合法性和所有者信任是不同的
所有者信任级别是因人而异的

第十四章 SSL/TLS——为了更安全的通信

14.2 SSL/TLS

SSL/TLS承载HTTP,两协议叠加可以实现对HTTP通信的加密,此时URL以https://开头(而非http://)
工作:SSL/TLS作为框架,将机密性、完整性、认证等问题所需的工具进行组合
可以保护HTTP、SMTP、POP3等协议
密码套件:提供密码通信的框架,实现搭配好各个技术,从而确保兼容性

14.3 使用SSL/TLS进行通信

TLS协议是由TLS记录协议(底层,消息的压缩、加密、数据认证)和TLS握手协议(上层操作,氛围握手、密码规格变更、警告、应用数据四协议构成)叠加而成
主密码:TLS客户端和服务器之间协商出来的一个秘密的数值

14.4 对SSL/TLS的攻击

(1)对其中密码技术的攻击
(2)OpenSSL的心脏出血漏洞
(3)POODLE攻击——针对SSL3.0漏洞
(4)PREAK攻击
(5)对伪随机数生成器的攻击
(6)利用证书的时间差进行攻击

14.5 SSL/TLS用户的注意事项

密码通信前后的数据不受保护、不要误解证书的含义

第十五章 密码技术与现实社会——我们生活在不完美的安全中

15.3 比特币

比特币:密码学货币,实现基于中本聪发表的一篇论文
1 比特币写作:1 bitcoin或者1 BTC

P2P网络与比特币: 比特币是一种基于P2P网络的支付结算系统

地址——公钥的散列值生成
钱包——需要使用比特币的客户端
区块链——保存比特币全部交易记录的公共账簿

首付款以交易为单位进行,若干条交易会被合并成一个区块,并添加到区块链中。

区块头中保存了“上一个区块的区块头的散列值”+“本区块所有交易的整体散列值”

挖矿:向区块链中添加区块,创造新的比特币余额
由于区块链是单恋,因此某个特定时间点,只能向其中添加一个区块。成功添加的可以获得挖矿奖励和该区块所有交易的手续费
工作量证明(PoW):通过散列值实现

小结:
•比特币是一种基于 P2P 网络的支付结算系统,在通过公钥生成的地址之间进行交易
•转账的合法性通过发送者用私钥进行数字签名来证明
•所有的交易记录都保存在公开账簿(区块链)中,任何人都可以对其中的记录进行验证(透明性)
•通过运用单向散列两数使得对区块链的篡改变得非常刚难
•通过工作量证明防止伪造和区块链产生分支
•为了添加新区块,矿工需要计算出前面若干比特币的符合条件的散列值(挖矿)。如果成功添加新区块,矿工将得到一定数量的比特币作为奖励。

15.4 追寻完美的密码技术

(1)量子密码
(2)量子计算机
若量子计算机出现后依然能够抵抗破译的密码称为耐量子密码或者后量子密码
多变量公钥密码(利用NP完全问题的复杂度)——认为是一种能够对抗量子计算机的密码系统

15.5 只有完美的密码,没有完美的人

思考

《图解密码技术》总的来说是一本非常适合新手阅读的密码学入门的书籍,对于密码学领域内的一些概念厘清的非常到位。

阅读过程中,有过计算机基础(数据结构等课程基础最好)的人能够快速掌握其中的知识点。

结合上一本《密码故事》进行阅读,能够激起人们学习密码学的热情。

当然,笔者因为时间原因没有将该本书的精华(图示)放在博客中,故而是一大遗憾。
另一遗憾是,因为时间问题,笔者只能够快速地进行阅读,所以对于概念还只能停留在理解的层面上,也没有办法进行很好的运用。

希望未来能够对该书进行再一次的复盘!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值