我们都要坚信,道路越是曲折,前途越是光明。
---------------------------------------------------------------------------------------------------------------------------------
现代密码学 第五版 杨波
第一章 引言
1.1三大主动攻击
1.中断
2.篡改
3.伪造
1.2 五大安全业务
1.保密业务
2.认证业务
3.完整性业务
4.不可否认业务
5.访问控制
1.3 安全的网络通信考虑四个方面
1.加密算法
2.用于加密算法的秘密信息
3.秘密信息的分布和共享
4.使用加密算法和秘密信息以获得安全服务所需的协议
1.4 信息安全包括三个层次
1.系统安全(数据库、操作系统)
2.数据安全(数据的存储、传输)
3.内容安全(病毒的防护、不良内容的过滤)
1.5 保密通信系统构成
明文消息空间M、密文消息空间C、密钥空间K1和K2,在单钥体制下K1=K2=K,此时密钥K需经安全的密钥信道由发送方传给接收方,加密变换E(K1):M---->C,由加密器完成,解密变换D(K2):C----->M由解密器实现。总体(M,C,K1,K2,E,D)为保密通信系统。
1.6 保密通信系统应该满足的要求
1)系统即达不到理论上是不可破的,也就是说,从截获的密文或已知的明文,去决定密钥在计算上是不可行的。
2)系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥。
3)加密算法和解密算法适用于密钥空间中的所有元素。
4)系统便于实现和使用。
1.7 单钥体制对明文加密的两种方式
1)明文消息按字符逐位加密,称为流密码
2)明文消息分组(含多个字符),逐组地进行加密,称为分组密码。
单钥体制不仅可以用于数据加密,也可用于消息认证
1.8 对密码系统的攻击类型
唯密文攻击
已知明文攻击
选择明文攻击
选择密文攻击
1.9 几种古典密码
1.9.1 恺撒密码(填空题)
公式:
加密:c=E3(m)=m+3 ,0<=m<=25
解密:m=D3(c)=c-3 ,0<=c<=25
1.9.2 移位变换(凯撒密码的推广)
公式的写法只不过将密钥写成了K
c=Ek(m)=m+k ,0<=m,k<=25
m=Dk(c)=c-k ,0<=c,k<=25
1.9.3 仿射变换(大题出现,十分左右)
相比前面的公式出现了两个密钥
c=Ea,b(m)=am+b(mod26)
m=Da,b(c)=a的逆运算(c-b)(mod26)
求乘法逆元,简单的我们很快就能出结果,但是稍微数值大的,还是需要掌握欧几里得去计算乘法逆元。这里我私下问豆包进行了练习。乘法结合律小学数学不过关呜呜呜。
但是我找到了一个规律就是余数是几,就消除几。我们可以拼拼凑凑。去有意消除某一个余数。
书上的两道习题可以巩固我们对仿射加密算法的理解,P11
设仿射变换的加密是:
E11,23(m)=11m+23(mod26)
对明文THE NATIONAL SECURITY AGENCY加密,并使用解密变换
解密变换使用公式:
D11,23(c)=11^-1(c-23)(mod26)
首先求出乘法逆元
11^-1mod26
11在模26下的乘法逆元为为19,计算过程不再赘述。
要强调的是c-23为负数时,先正常计算乘法,最后把得到的负数结果通过加上合适的模数倍数,转化为到之间的非负整数,也就是模运算的标准结果。
比如m为12,加密结果应该是k
k为10,10-23=-13
-13*19/26=9....13那么余数是13,即为n
第二章 流密码
2.1 流密码的基本概念
流密码的基本思想是利用密钥k产生一个密钥流z=z0z1...,并使用如下规则对明文串x=x0x1x2...进行加密:y=y0y1y2...=Ez0(x0)Ez1(x1)Ez2(x2).......
这里 Ez0(x0)
代表使用密钥流中的第 0 个元素 z0
对明文的第 0 个元素 x0
执行加密变换。
第三章 分组密码体制
3.1.什么叫分组密码?
分组密码是将明文消息编码表示后的数字序列,x0,x1,xi...划分成长n的组x=(x0,x1......xn-1),各组(长为n的矢量)分别在密钥k=(k0,k1,ki-1)控制下变换成等长的输出数字序列y=(y0,y1...ym-1),其加密函数E:Vn*K---->Vm,Vn和Vm是n维和m维矢量空间,k为密钥空间。
3.2 分组密码设计算法应该满足什么要求? P书本33
1)分组长度n要足够大
2)密钥量要足够大,但密钥又不能过长
3)密钥确定置换的算法要足够复杂
4)加密和解密运算要简单
5)数据扩展尽可能小
6)差错传播尽可能小
3.3 为什么DES不安全?
答:密钥长度短,DES 使用 56 位的密钥长度,在计算能力飞速发展的当下,通过穷举密钥进行暴力破解的难度已经大幅降低。(就是老师说的的穷苦攻击)
(谈二重DES,三重DES)
二重 DES:使用了两个密钥, 但实际上,存在一种中间相遇攻击法。安全性和普通的DES差不多。
三重DES运算速度相对较慢,但是在 AES 正式广泛推行前,三重 DES 是一种被广泛认可且应用的对称加密标准。
3.4 为什么现在还要使用DES(好处谈一谈)
DES 加密算法虽然安全性有所欠缺,但在加解密速度与层级特性上,仍有值得一提的优势:
- 加解密速度快
- 运算逻辑简单:DES 的加密和解密过程基于固定的置换、代换操作,并且按轮次依次开展。每一轮内部的变换都是预先定义好的简单位运算,像是异或、移位、替换等基础操作,现代处理器能够极为高效地执行这类底层指令,无需复杂的浮点运算或高耗时的矩阵操作,使得单次加密或解密的运算速度非常可观。
- 成熟优化:作为问世多年的经典算法,DES 积累了海量的优化经验与代码实现范例。无论是软件层面,程序员们通过汇编语言、C 语言对关键运算步骤精细调优;还是硬件层面,芯片厂商将 DES 运算模块集成进专用电路,都使得 DES 在实际应用场景下,能实现高速的加解密吞吐,快速处理输入数据。
- 层级不高
- 易于集成:相较于一些新兴的高级加密算法,DES 层级架构简单。它没有多层嵌套的复杂加密模式,对于很多小型设备、简易系统而言,这种低层级加密方案更容易嵌入。举例来说,智能家居里的一些基础传感器,只需简单几步就能把 DES 加密模块整合进其有限的固件当中,不涉及复杂的架构适配与多层加密协同难题。
- 便于理解与维护:低层级意味着其加密原理清晰直白,技术人员不需要深厚的密码学专业知识储备,就能明白 DES 的加密、解密流程走向。当出现问题或者需要对加密过程微调时,运维、开发人员能够快速定位故障、做出调整,降低了运维成本与系统的故障风险。
3.5 混淆和扩散 P34
答:扩散和混淆是由Shannon提出的设计密码系统的两个基本方法,目的是抗击敌手对密码系统的统计分析。
扩散的目的是使明文和密文之间的统计关系尽可能复杂,使敌手无法得到密钥。混淆是使密钥和密文关系尽可能复杂,使敌手无法得到密钥。
扩散和混淆成功实现了分组密码的本质特性,因而成为设计现代分组密码的基础。
3.6 S盒的输入输出模式 P42
答:具体原理我没懂。我只能用自己的话说了。
在 DES(数据加密标准)算法中,S 盒是极为关键的组件
输入 6 位二进制数据。将这6位二进制数据放入S盒中处理一次就得到四位二进制数,一共处理8次,经过内部查表后,输出32位的二进制数。
3.7 分组密码的4种模式 p47
电码本模式
密码分组链接模式
密码反馈模式
输出反馈模式
3.8 IDEA 通过哪两种来实现算法
可以非常方便的通过软件和硬件实现
1.软件:采用16比特子段处理,可通过使用容易编程的加法、移位等运算实现算法的三个运算
2.硬件:由于加解密相似,差别仅为使用密钥的方式,因此可以使用同一器件实现。
3.9 AES算法 P59
它的设计策略是宽轨迹策略,是针对差分分析和线性分析提出的,它最大的优点是可以给出算法的最佳差分特征的概率及最佳线性逼近的偏差的界,因此,可以分析算法抵抗差分密码分析及线性密码的分析能力。
多项式的表示 :填空题出现
四位二进制代表一个十六进制数。
比如57就是 5和7
0101 0111
最后应该表示为 x+x^2+x^4+x^6+1
57+83=D4
记住我们是需要把十进制拆成两位数,去表示十六进制的
也就是5和7,8和3
0101 0111 1000 0011
x+x^2+x^4+x^6+1+(x^7+x+1)=x^7+x^6+x^4+x^2
结果我们会发现常数项被约掉了,这是因为在有限域 GF (2) 当中,系数只有 0 和 1,做加法遵循异或规则。
所以结果是:11010100
字节的乘法 大题出现
书上的例题是
57 * 83 =C1
老子真的是学得要疯了,最讨厌算算术了。这个我根本算不出,算不懂。
昨天去问了一班学委,告诉我字节的乘法是,移位相加减。异或。
第四章 公钥密码
4.1 群、环、域概念 P84
群、环、域都是代数结构,代数系统是对要研究的现象或过程建立起的一种数学模型,模型中包括要处理的数学对象的集合以及集合上的关系或运算,运算可以是一元的也可以是多元的,可以是一个也可以有多个。
懂都不懂,我感觉,不重要,因为不懂。哈哈哈哈哈哈哈哈哈哈哈哈哈哈。》
---------------------------------------------------------------------------------------------------------------------------------
群:封闭性、结合性、存在单元、存在逆元 (二元运算) 例如:非零有理数
有理数是:整数和分数的统称。
环:有两个二元运算,通常记为加法 “+” 和乘法 “*” ,构成环的集合 满足:
- 关于加法 “” 构成一个阿贝尔群,也就是加法满足封闭性、结合律、有单位元、每个元素有加法逆元,还满足交换律。
- 关于乘法 “” 满足封闭性和结合律。
- 例如:整数集Z
域:特殊的环,满足环的所有特点。实数R。
4.2 模运算
模逆运算,学会仿射加密的解密就应该会这个才对!
一些简单的我们不必进行欧几里得计算,比如5^-1mod13
遇到简单的我们只需要想简单的定义就好,5乘以多少去mod13=1,五八四十,三*13=39,也就是8,有时候进行欧几里得去算,反而显得我们很呆知道吗?难能可贵的是我可能去算,算的可能是错的。
模运算有以下性质:
[ ( 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)mod n
4.3 欧拉定理
在密码学的 RSA 加密算法里,欧拉定理起到了核心作用。RSA 算法利用大整数分解难题以及欧拉定理来实现加密和解密过程,保障信息传输的安全性。例如,公钥和私钥的生成、加密消息与解密消息的数学变换,背后的理论依据都离不开欧拉定理构建的同余关系体系。
计算逻辑一般是,这个数的因子里如果有平方,那么就 这个数乘以(1-1/p)乘以(1-1/q)
这是一种情况
还有一种情况是这样的
比较简单
有时候我们想要计算4^12=4^4+4^8=(4^2)^2+((4^2)^2)^2
4.4 欧几里得算法
用来求最大公因式的,也叫辗转相除法
(108,386)=(62,108)=(46,62)=(16,46)=(14,16)=(2,14)
所以最大公因数是2
用大的除以小的,余数作为下一个小的.
4.5 陷门单向函数
研究公钥密码算法就是要找出合适的陷们单向函数。
称一个函数是陷门单向函数,是指该函数是易于计算的,但求它的逆是不可行的,除非再已知某些附加信息。当附加信息给定后,求逆可在多项式时间完成。总结为:陷门单向函数是一族可逆函数。
老师给我们举的例子是,已知大素数P,Q 求N=P*Q
在计算上是可行的,反过来已知N,但是求PQ是不可行的。这也反映了陷门单向函数的一种思想。
4.6 公钥密码算法要满足的六点要求
1.产生的公钥和私钥在计算上是容易的。
2.发送方使用公钥加密产生密文在计算上是容易的。
3.收方B用自己的秘密钥解密,在计算上是容易的。
4.敌手使用公钥求密钥是不可行的。
5.敌手由知道密文和公钥,是恢复不出明文的。
6.加解密次序可以互换。(不对所有做要求)
4.7 公钥加密过程四步
书上懂都不懂 还是豆包好
- 密钥生成:
- 接收方利用特定的加密算法生成一对密钥,分别是公钥和私钥。这两个密钥在数学上存在紧密关联,但通过公钥很难推算出私钥。例如在 RSA 算法中,会挑选两个大质数,经过一系列复杂的数论运算得出公钥和私钥。公钥会被公开分享,可随意发布在网络等渠道,供任何想要给接收方发送加密信息的人获取;而私钥则被严格保密,只有接收方自己持有 。
- 明文加密:
- 发送方获取接收方的公钥后,使用公钥对原始的明文消息进行加密。加密算法会依据公钥的参数,将明文中的每一个字符、数据块,通过复杂的函数运算,转化为一串看似毫无规律的密文。这一过程保证了只有对应的私钥才能逆向还原出原始信息,即便其他人截获密文,由于没有私钥,也难以解读内容。
- 密文传输:
- 经过加密生成的密文,会通过不安全的公开通信渠道, 如互联网,从发送方传输至接收方。因为密文已经经过加密处理,所以即使传输过程中被第三方监听、窃取,第三方也无法直接知晓其中的含义。
- 密文解密:
- 接收方拿到传输过来的密文后,使用自己一直秘密保存的私钥对密文进行解密。解密算法利用私钥的特性,逆转加密时的运算过程,将密文重新还原成原始的明文消息,至此,接收方成功获取发送方发来的真实信息。
4.8 掌握RSA加解密
要死啊什么都是重点,挂科算了。
其实不难,也就是是一个计算顺序的问题,首先求出大素数欧拉值,之后选一个整数必须小于欧拉值也必须与欧拉值互为质数,使用公钥加密,使用私秘钥,解密。
不像人类学的东西一样。哈哈。
这里的三个横线(≡)是同余符号,表示两个数在除以某个特定数(模数)时余数相同。
首先密钥生成选两个保密的大素数 p q
计算欧拉值,也就是 =(p-1)(q-1) n=pq
选取整数e,小于欧拉值,必须与刚刚计算的欧拉值互质。作为公钥的一部分。
计算私钥d:找到一个整数d,使得(e*d)mod欧拉值=1
d=e^-1modn
4.9 P114 4-26
计算RSA算法的题目
选p=7,q=17,求n=p*q=119,欧拉值为96,取e=5
d=e^-1mod(欧拉值)
d=19
c=m^5mod119
m=c^19mod119
在书中,明文是自己设置的。m=19,在进行计算时,我们可以将次方拆解后进行计算
算术题一共有三道:1.仿射加密 2.多项式乘法 3.RSA加解密
4.10 RSA的安全性问题和密码分析问题(与分组密码对应着)
答:RSA算法的安全性主要依赖于大数分解的困难性。给定一个非常大的合数(即两个或多个质数的乘积),目前没有已知的高效算法能够在合理的时间内分解出它的质因数。这使得RSA算法在合理选择密钥长度和参数的情况下具有很高的安全性。
RSA是非对称密码,分组密码是对称密码。
分组密码的安全性依赖于密钥,而RSA的安全性不仅依赖于密钥而且依赖于算法。
对称密码适用于需要高速处理大量数据的场景,如文件传输。非对称密码适用于需要高安全性的场景,如网络传输和数字签名。
4.11 简答题出现 :共模攻击和低指数攻击 P118
答: 只有彻底弄懂RSA,才可以理解
4.12 IFP问题和DLP问题分析。
答:
4.13 AES移位相加法
第五章 密钥分配与密钥管理
5.1 密钥交换的问题(如何进行的安全性问题)P143
该算法的唯一目的是使得两个用户能够安全地交换密钥,得到一个共享的会话密钥,算法本身不能用于加解密。
BBS产生器(谈安全性,算法,分析题)P149
安全性:密码强度最强的伪随机数产生器。安全性较高
秘密分割 P150
有三个门限方案,名字真高级,字太多了,我不学
秘密分割门限方案
Shanmir门限方案
基于中国剩余定理的门限方案
第六章 消息认证和哈希函数
P157 消息认证
消息认证码是指消息被一个密钥控制的公开函数作用后产生的,用作认证符的、固定长度的数值,也称密码校验和。
哈希函数(公开函数)
性质:
1.函数的输入可以是任意长
2.函数的输出是固定长
3.已知x,求H(x)较为容易,可用硬件或软件实现。
.................................看书吧其实都不懂。P162
MD5哈希算法
如果不懂的话,其实不如不记
处理过程:
1.对消息的填充
2.附加消息的长度
3.对MD缓冲区的初始化
4.以分组为单位对消息进行处理
第七章 数字签名和认证协议
数字签名的性质:
1.能够验证签名产生者的身份,以及产生签名的日期和时间
2.能用于证实被签消息的内容
3.数字签名可由第三方验证,从而能够解决通信双方的争议。
数字签名的要求:
1.签名的产生必须使用发方独有的一些信息以防伪造和否认
2.签名的产生较为容易
3.签名的识别和验证较为容易
4.构造假冒的数字签名是不可行的,无论是对于新的消息还是已知的消息。
数字签名产生的方式:P183
加密算法和签名算法产生.
时间戳、时间和应答
第一次听到时间戳还是python课上面,下面是豆包的回答。
可以稍微多看两眼,考试知道怎么多写点字就好了。老师,菜菜捞捞。
时间戳:
在数字签名场景下,时间戳常被添加到待签名的消息当中。这样做可以防止重放攻击,因为带有时间戳的消息,接收方能够核查消息生成的时间是否合理,拒绝接收过时的、可能是攻击者重放的消息。在区块链技术里,时间戳更是关键要素,每一个区块都带有生成时的时间戳,用于确定交易的先后顺序,维持区块链账本的时序性与不可篡改性。
时间:
在分布式系统中,多个节点的时间同步至关重要。不同节点如果时间不一致,会引发一系列问题,例如在加密协议里,若双方时间偏差过大,可能导致密钥交换、认证流程出错。网络时间协议(NTP)就是常用的用于同步计算机网络中各个设备时间的协议,它让设备能够与权威时间源(如原子钟服务器)保持精确同步,误差可控制在毫秒级。
应答:
在安全协议中,应答也融入了安全考量。如身份认证环节,服务端收到客户端的认证请求后,返回的应答可能携带验证码、加密挑战等信息,客户端需正确回应才能完成认证;数字签名验证时,接收方验签后的应答会明确告知签名是否有效,发送方借此判断后续操作流程。
RSA与数字签名的安全性问题
写在最后
大家一起备考复习,如果有错,请在评论区或私信指正,互相学习,共同进步。🌹🌹