第一章

安全攻击分类

被动攻击:信息内容泄露、流量分析
主动攻击:伪装、重播、消息修改、拒绝服务

安全服务

认证:保证通信的真实性。确保通信双方的身份是可信的。
访问控制:防止资源非授权使用
数据保密性:防止传输消息受到被动攻击
数据完整性:与主动攻击有关,检测而不是阻止。
不可否认性:防止通信方对通信行为的否认,包括源不可否认性和宿不可否认性。
可用性:系统或系统资源能够按照要求根据系统性能规范被授权系统的实体访问和使用。

第二章

理论安全与实际安全

理论安全:攻击者无论截获多少密文,都无法得到足够的信息来唯一地决定明文。香农证明只有一次一密才能达到理论安全,不实用。
实际安全(计算安全):在有限的资源内,攻击者都不能通过系统的分析方法来破解系统。

密码体制

对称密码体制与非对称密码体制

对称密码:加密密钥和解密密钥相同,或者一个密钥可以从另一个导出,能加密就能解密,加密能力和解密能力是结合在一起的,开放性差。
非对称密码:加密密钥和解密密钥不相同,从一个密钥导出另一个密钥是计算上不可行的,加密能力和解密能力是分开的,开放性好。

序列密码体制和分组密码体制

序列密码:密文不仅与最初给定的算法和密钥有关,同时也与明文位置有关(是所处位置的函数)。
分组密码:经过加密所得到的密文仅与给定的密码算法和密钥有关,与被处理的明文数据在整个明文中的位置无关。

确定型密码体制和概率型密码体制

确定型密码:当明文和密钥确定后,密文也就唯一地确定了。
概率密码:当明文和密钥确定后,密文通过客观随机因素从一个密文集合中产生,密文形式不确定。

单向函数型密码体制和双向变换型密码体制

单向函数型密码体制:适用于不需要解密的场合,容易将明文加密成密文,如哈希函数。
双向变换型密码体制:可以进行可逆的加密、解密变换。

现代密码学的基本原则

设计加密系统时,总是假定密码算法是可以公开的,需要保密的是密钥。一个密码系统的安全性不在算法的保密,而在于密钥,即Kerckhoff原则。

对加密系统的要求

系统应该是实际安全的(practical secure),截获密文或已知明文-密文对时,要决定密钥或任意明文在计算上是不可行的。
加密解密算法适用于密钥空间中的所有元素。
系统易于实现,使用方便。
系统的安全性不依赖于对加密体制或加密算法的保密,而依赖于密钥。
系统的使用不应使通信网络的效率过分降低。

对加密信息的攻击类型

攻击类型 攻击者持有的信息
唯密文攻击 加密算法、待解密密文
已知明文攻击 加密算法 、待解密密文、与待解密密文(同一密钥加密)的明密文对
选择明文攻击 加密算法 、待解密密文、攻击者选择的明文及对应的(同一密钥加密)密文
选择密文攻击 加密算法 、待解密密文、攻击者选择的(同一密钥加密)密文及对应的明文
选择文本攻击 加密算法 、待解密密文、攻击者选择的(同一密钥加密)密文及对应的明文、攻击者选择的明文及对应的(同一密钥加密)密文

代换与置换

代换法是将明文字母替换成其他字母、数字或符号的加密方法。如果把明文看成是二进制序列的话,代换就是用密文位串来代换明文位串。代换法改变明文内容的表示形式,保持内容元素之间相对位置不变。由于语言的冗余性(即字母单词使用频率的统计特性),单表代换虽然密钥空间很大,但并不安全。
置换法是改变明文内容元素的相对位置,保持内容的表现形式不变。通过重新安排消息字母的位置来隐藏明文信息,而不是用其他字母来代换明文字母。这种方法是很容易破译的,因为密文拥有与明文一样的字母频率统计特性。

隐写术

隐写术不是加密技术。比如将信息通过改变像素内容隐藏到图片中,不可见的墨水等。

一次一密

两个限制:产生大规模随机密钥有实际困难、密钥的分配和保护无法保证

第三章

流密码与分组密码

流密码:每次加密数据流的一位或一个字节。
分组密码:将一个明文分组作为一个整体进行加密,并且一般得到等长的密文。

扩散和混淆

扩散:明文统计特征消散在密文中。可以通过让多个明文数字影响一个密文数字,或者每个明文数字可以影响多个密文数字。
混淆:使密文和加密密钥之间的统计关系尽量复杂。

Confusion means that each binary digit (bit) of the ciphertext should depend on several parts of the key, obscuring the connections between the two.
Diffusion means that if we change a single bit of the plaintext, then (statistically) half of the bits in the ciphertext should change, and similarly, if we change one bit of the ciphertext, then approximately one half of the plaintext bits should change. Since a bit can have only two states, when they are all re-evaluated and changed from one seemingly random position to another, half of the bits will have changed state.
In Shannon’s original definitions, confusion refers to making the relationship between the ciphertext and the symmetric key as complex and involved as possible; diffusion refers to dissipating the statistical structure of plaintext over the bulk of ciphertext. This complexity is generally implemented through a well-defined and repeatable series of substitutions and permutations. Substitution refers to the replacement of certain components (usually bits) with other components, following certain rules. Permutation refers to manipulation of the order of bits according to some algorithm. To be effective, any non-uniformity of plaintext bits needs to be redistributed across much larger structures in the ciphertext, making that non-uniformity much harder to detect.

第四章

同余

给定整数a,ba, ba,b及n≠0n≠0n̸​=0, 当且仅当a−b=kna-b=kna−b=kn时,aaa与bbb在模nnn时同余,记为a≡bmodna≡b\ mod\ na≡b mod n 或 a≡nba≡nba≡nb。
如果n∣(a−b)n|(a-b)n∣(a−b), 则a≡bmodna≡b\ mod\ na≡b mod n。

模运算

(a1opa2)modn=[(a1modn)]op(a2modn)]modn(a1\ op\ a2)\ mod\ n =[(a1\ mod\ n )]\ op\ (a2\ mod\ n)]\ mod\ n(a1 op a2) mod n=[(a1 mod n)] op (a2 mod n)] mod n

乘法逆元

如果一个整数与nnn互素,那么它在ZnZ_nZn​中存在一个乘法逆元。
对于任何一般的模数nnn,如果aaa与nnn互素,那么用乘数aaa作用到ZnZ_nZn​(即0,1,2,…,n-1)然后模nnn会得到完整的ZnZ_nZn​(元素顺序可能不同,也可以叫做ZnZ_nZn​的一个置换)。

Z8 0 1 2 3 4 5 6 7
乘以5 0 5 10 15 20 25 30 35
剩余类 0 5 2 7 4 1 6 3

欧几里得算法与拓展欧几里得算法

欧几里得算法

又称辗转相除法。欧几里德定理:$ gcd(a, b) = gcd(b , a%b)$

拓展欧几里得算法

对于不完全为000的非负整数 a,b,gcd(a,ba,b,gcd(a,ba,b,gcd(a,b表示a,ba,ba,b的最大公约数,必然存在整数对x,yx,yx,y,使得gcd(a,b)=ax+bygcd(a,b)=ax+bygcd(a,b)=ax+by。

第五章

双重DES

因为对单重DES进行穷举攻击是可行的(密钥长度仅有56位)。
双重DES存在着中间相遇攻击
C=EK2(EK1(P)),P=DK1(DK2(C))C = E_{K2}(E_{K1}(P)), P = D_{K1}(D_{K2}(C))C=EK2​(EK1​(P)),P=DK1​(DK2​(C)),因为X=EK1(P)=DK2(C)X = E_{K1}(P) = D_{K2}(C)X=EK1​(P)=DK2​(C),用所有可能的密钥加密明文P并把结果存储起来,然后用所有可能的密钥解密密文C,寻找匹配的X值,因此复杂度只有O(2562^{56}256)。攻击单重DES复杂度为O(2552^{55}255)。

三重DES

使用两个密钥的三重DES

C=EK1[DK2[EK1[P]]C=E_{K1}[D_{K2}[E_{K1}[P]]C=EK1​[DK2​[EK1​[P]]
如果K1=K2K1=K2K1=K2,那么就变成了单重DES,从而实现对单重DES的兼容。

使用三个密钥的三重DES

C=EK3[DK2[EK1[P]]]C = E_{K3}[D_{K2}[E_{K1}[P]]]C=EK3​[DK2​[EK1​[P]]]
如果K1=K2K1=K2K1=K2或者是K2=K3K2=K3K2=K3,那么就变成了单重DES,从而实现对单重DES的兼容。

分组密码的工作模式

分组密码的安全不仅和秘钥长度有关还和分组长度有关。

电子密码本模式ECB

明文分成64的分组进行加密,必要时填充,每个分组用同一密钥加密,相同明文分组加密得相同密文。
ECB模式特别适合数据较少的情况,如安全传输DES密钥。
一段明文消息中若有几个相同的明文组,则密文也将出现几个相同的片段。
对于很长的消息,ECB是不安全的,如果消息是非常结构化的,密码分析可能利用其结构特征来破解。
ECB的弱点来源于其加密过的密文分组是互相独立的。

优点:操作简单,易于实现;分组独立,可以并行加密;传输错误不会传播。
缺点:掩盖不了明文结构信息,可以进行统计分析攻击。

密文分组链接模式CBC

加密输入是当前明文分组和前一密文分组的异或,形成一条链,使用相同的密钥, 这样每个明文分组的加密函数输入与明文分组之间不再有固定的关系。
每个密文分组依赖于所有明文分组。
发送方和接收方需要共享初始向量Initial Value(IV)。如果IV被明文传送,则攻击者可以预先改变IV中的某些位,则接收者收到的P1也就相应改变了。因此,IV必须是一个固定的值或者使用伪随机数、计数器IV用ECB方式在消息之前加密传送。
在消息的最后,还要处理不够长度的分组进行填充。
明文消息中的任何一点变化都会影响所有的密文分组。

优点:能掩盖明文结构信息,保证相同密文可得不同明文,安全性好于ECB;适合传输长度较长的报文。
缺点:不可并行;传递错误,即一个分组错误导致后续分组均错误;初始向量IV的选取比较复杂。

密文反馈模式CFB

可以视为流密码,不再要求报文被填充成整个分组,可以实时运行,如果要传输一个字符流,每个字符都可以使用面向字符的流密码加密后立即传输。
加密:加密函数的输入是一个64位的移位寄存器,产生初始向量IV。加密函数高端s位与明文P1的第一单元异或,产生s位密文C1进入移位寄存器低端,继续加密,与P2输入异或,如此重复直到所有明文单元都完成加密。
解密:采用相同方案,但是使用加密函数而非解密函数。
设MSBs(X)MSB_s(X)MSBs​(X)表示X的最左边s位。则
C1=P1⨁MSBs[E(K,IV)]C1=P1 \bigoplus MSB_s[E(K,IV)]C1=P1⨁MSBs​[E(K,IV)]
从而有P1=C1⨁MSBs[E(K,IV)]P1=C1 \bigoplus MSB_s[E(K,IV)]P1=C1⨁MSBs​[E(K,IV)]
如果在传输过程中某一个分组的密文发生改变,则会影响到这个分组及其后的分组的明文正确性。

优点:可以实时运行,及时加密小于分组大小的数据;隐藏了明文结构。
缺点:不可并行;传输错误会扩散。

输出反馈模式OFB

结构上类似CFB,但是OFB中加密函数输出被反馈回移位寄存器,CFB中是密文单元被反馈回移位寄存器(对比两个图,可以看到反馈位置是不同的)。优点是传输中的比特差错不会传播,缺点是比CFB更容易受报文流篡改攻击。OFB的IV必须是时变值。
OFB的一个优点是,传输过程中在某位上发生的错误不会影响到其他位。比如,C1中有1位发生了错误,只会影响到P1的恢复,后续的明文单元不受影响。
OFB的缺点是,抗消息流篡改攻击的能力不如CFB。即密文中的某位取反,恢复出的明文相应位也取反。

优点:可以实时运行,及时加密小于分组大小的数据;隐藏了明文结构;传输过程中在某位上发生的错误不会影响到其他位。
缺点:不可以并行;比CFB更容易受报文流篡改攻击。

计数器模式CTR

与OFB很像,但是加密的是计数器的值而不是任何反馈回来的值。每一个明文分组都必须使用一个不同的密钥和计数器值,决不要重复使用。
高效、可以做并行加密
对高速链路的突发数据加密尤其有效
可以对被加密的分组进行随机存取
安全、简洁
不需要填充

第八章

费马定理

若ppp是素数, aaa是正整数且不能被ppp整除, 则ap−1modp=1a^{p-1}\ mod\ p=1ap−1 mod p=1
证明:
对于X={amodp,2amodp,…,(p−1)amodp}对于X=\{ a\ mod\ p,2a\ mod\ p,…, (p-1)a\ mod\ p\}对于X={a mod p,2a mod p,…,(p−1)a mod p}
∵a是正整数且不能被p整除\because a是正整数且不能被p整除∵a是正整数且不能被p整除
∴X内的元素均大于零\therefore X内的元素均大于零∴X内的元素均大于零
假设ja≡ka(modp),其中1⩽j&lt;k⩽p−1假设ja≡ka(modp),其中1\leqslant j&lt;k\leqslant p-1假设ja≡ka(modp),其中1⩽j<k⩽p−1
∵a与p互素\because a与p互素∵a与p互素
∴两边可以把a消去,则推出j≡k(modp),与假设矛盾\therefore 两边可以把a消去,则推出j ≡ k(mod p),与假设矛盾∴两边可以把a消去,则推出j≡k(modp),与假设矛盾
也就是说,X内的元素均为正整数且互不相等也就是说,X内的元素均为正整数且互不相等也就是说,X内的元素均为正整数且互不相等
∵{amodp,2amodp,...,(p−1)amodp}是{1,2,...,(p−1)}的置换形\because \{ a\ mod\ p, 2a\ mod\ p, ..., (p-1)a\ mod\ p\} 是\{ 1, 2, ..., (p-1)\} 的置换形∵{a mod p,2a mod p,...,(p−1)a mod p}是{1,2,...,(p−1)}的置换形
∴(ax2ax...x(p−1)a)≡(1x2x...x(p−1))(modp)≡(p−1)!(modp)\therefore (ax2ax ... x (p-1)a)≡(1x2x ... x(p-1))\ (mod\ p)≡ (p-1)!\ (mod\ p)∴(ax2ax...x(p−1)a)≡(1x2x...x(p−1)) (mod p)≡(p−1)! (mod p)
∵ax2ax...x(p−1)a=(p−1)!ap−1,即(p−1)!ap−1≡(p−1)!(modp)\because ax2ax...x(p-1)a=(p-1)!a^{p-1},即 (p-1)!a^{p-1}≡(p-1)!\ (mod\ p)∵ax2ax...x(p−1)a=(p−1)!ap−1,即(p−1)!ap−1≡(p−1)! (mod p)
两边去掉(p−1)!,即得ap−1mod&ThinSpace;&ThinSpace;p=1两边去掉(p-1)!,即得 a^{p-1}\mod\ p = 1两边去掉(p−1)!,即得ap−1mod p=1

欧拉函数

φ(n)\varphi (n)φ(n)是比n小且与n互素的正整数的个数,定义φ(1)=1\varphi (1)=1φ(1)=1。

欧拉函数定理

p和q是素数,n=p×q,φ(n)=φ(p)φ(q)=(p−1)(q−1)p和q是素数, n=p\times q, \varphi (n)= \varphi (p)\varphi (q)=(p-1)(q-1)p和q是素数,n=p×q,φ(n)=φ(p)φ(q)=(p−1)(q−1)
证明:
$考虑余数集合{ 0, 1, …, (pq-1)} 中不与n互素的余数集合是{ p, 2p, …, (q-1)p} , { q, 2q, …, (p-1)q}, $
所以φ(n)=(pq−1)−[(q−1)+(p−1)]=pq−(p+q)+1=(p−1)(q−1)=φ(p)φ(q)所以\varphi (n)= (pq-1)-[(q-1)+(p-1)]=pq-(p+q)+1= (p-1)(q-1)=\varphi (p)\varphi (q)所以φ(n)=(pq−1)−[(q−1)+(p−1)]=pq−(p+q)+1=(p−1)(q−1)=φ(p)φ(q)

欧拉定理

对任意互素的aaa与nnn,aφ(n)≡1(modn)a^{\varphi (n)} \equiv 1\ (mod\ n)aφ(n)≡1 (mod n)
证明:
若n为素数,则根据φ(n)=n−1和ap−1modp=1可知成立。但这是不完全的证明。若n为素数,则根据\varphi (n)=n-1和a^{p-1}\ mod\ p=1可知成立。但这是不完全的证明。若n为素数,则根据φ(n)=n−1和ap−1 mod p=1可知成立。但这是不完全的证明。
考虑集合R=考虑集合R=考虑集合R={x1,x2,...,xφ(n)x_1,x_2,...,x_{\varphi (n)}x1​,x2​,...,xφ(n)​},每一个元素都有gcd(xi,n)=1。每一个元素都有gcd(x_i,n)=1。每一个元素都有gcd(xi​,n)=1。
令S={(ax1modn),(ax2modn),...,(axφ(n)modn)}令S=\{ (ax_1\ mod\ n),(ax_2\ mod\ n),...,(ax_{\varphi (n)}\ mod\ n)\}令S={(ax1​ mod n),(ax2​ mod n),...,(axφ(n)​ mod n)}
S是R的一个置换,因为S是R的一个置换,因为S是R的一个置换,因为
(1)a与n互素,且xi与n互素,所以axi必与n互素,这样S中所有元素均小于n且与n互素。(1) a与n互素,且x_i与n互素,所以ax_i必与n互素,这样S中所有元素均小于n且与n互素。(1)a与n互素,且xi​与n互素,所以axi​必与n互素,这样S中所有元素均小于n且与n互素。
(2)S中没有重复元素,因为如果axi≡axj(modn),则xi=xj,显然不成立。(2) S中没有重复元素,因为如果ax_i\equiv ax_j(modn),则x_i=x_j,显然不成立。(2)S中没有重复元素,因为如果axi​≡axj​(modn),则xi​=xj​,显然不成立。
∏i=1φ(n)(aximodn)=∏i=1φ(n)xi\prod_{i=1}^{\varphi (n)}(ax_imodn)=\prod_{i=1}^{\varphi (n)}x_i∏i=1φ(n)​(axi​modn)=∏i=1φ(n)​xi​
∏i=1φ(n)axi≡∏i=1φ(n)xi(modn)\prod_{i=1}^{\varphi (n)}ax_i\equiv \prod_{i=1}^{\varphi (n)}x_i(modn)∏i=1φ(n)​axi​≡∏i=1φ(n)​xi​(modn)
aφ(n)×[∏i=1φ(n)xi]≡∏i=1φ(n)xi(modn)a^{\varphi (n)}\times [\prod_{i=1}^{\varphi (n)}x_i]\equiv \prod_{i=1}^{\varphi (n)}x_i(modn)aφ(n)×[∏i=1φ(n)​xi​]≡∏i=1φ(n)​xi​(modn)
两边同时消去,得到aφ(n)≡1(modn)两边同时消去,得到a^{\varphi (n)} \equiv 1(modn)两边同时消去,得到aφ(n)≡1(modn)

中国剩余定理

中国余数定理CRT说明某一范围内的整数可通过它对两两互素的整数取模所得的余数来重构。
例如:Z10(0,1,…,9)Z_{10}(0,1,…,9)Z10​(0,1,…,9)中的10个整数可通过它们对2和5(10的素因子)取模所得的两个余数来重构. 假设数xxx的余数r2=0r_2=0r2​=0 且r5=3r_5=3r5​=3, 即xmod2=0x\ mod\ 2=0x mod 2=0, xmod5=3x\ mod\ 5=3x mod 5=3, 则xxx是Z10Z_{10}Z10​中的偶数且被5除余3, 唯一解x=8x=8x=8。

一种CRT的表示形式

令M=∏i=1kmi,其中mi两两互素,1⩽i,j⩽k,i≠j,gcd(mi,mj)=1。将ZM中的任一整数对应一个k元组,令M=\prod_{i=1}^{k}m_i, 其中m_i两两互素, 1\leqslant i, j\leqslant k, i≠j, gcd(m_i, m_j)=1。将Z_M中的任一整数对应一个k元组,令M=∏i=1k​mi​,其中mi​两两互素,1⩽i,j⩽k,i̸​=j,gcd(mi​,mj​)=1。将ZM​中的任一整数对应一个k元组,
该k元组的元素均在Zmi中,对应关系为A↔(a1,a2,…,ak),其中A∈ZM,对1⩽i⩽k,ai∈Zmi,该k元组的元素均在Z_{m_i}中, 对应关系为A\leftrightarrow (a_1,a_2,…,a_k), 其中A∈Z_M, 对1\leqslant i\leqslant k, a_i∈Z_{m_i},该k元组的元素均在Zmi​​中,对应关系为A↔(a1​,a2​,…,ak​),其中A∈ZM​,对1⩽i⩽k,ai​∈Zmi​​,
且ai=Amodmi。且a_i = A\ mod\ m_i。且ai​=A mod mi​。

计算例子

今有物不知其数, 三三数之剩二, 五五数之剩三, 七七数之剩二, 问物几何。
(1) 计算n=3×5×7n=3\times 5\times 7n=3×5×7,记d1=3,d2=5,d3=7d_1=3,d_2=5,d_3=7d1​=3,d2​=5,d3​=7; r1=2,r2=3,r3=2r_1=2,r_2=3,r_3=2r1​=2,r2​=3,r3​=2
(2) 根据(ndi)yimoddi=1(\frac{n}{d_i})y_i\ mod\ d_i=1(di​n​)yi​ mod di​=1,计算yiy_iyi​
$(\frac{105}{3})y_i\ mod\ 3=1 ,得,得,得y_1=2$
$(\frac{105}{5})y_i\ mod\ 5=1 ,得,得,得y_2=1$
$(\frac{105}{7})y_i\ mod\ 7=1 ,得,得,得y_3=1$
(3) x=[∏(ndi)yiri]modnx=[\prod (\frac{n}{d_i})y_ir_i]\ mod\ nx=[∏(di​n​)yi​ri​] mod n
x=(35×2×2+21×1×3+15×1×2)mod105=23x=(35\times 2\times 2+21\times 1\times 3+15\times 1\times 2)\ mod\ 105=23x=(35×2×2+21×1×3+15×1×2) mod 105=23

第九章

对称密码与非对称密码

对称密码体制的问题

加密能力与解密能力是捆绑在一起的。
密钥更换、传递和交换需要可靠信道,密钥分发困难。
如有N用户,则需要C=N×(N−1)2C=\frac {N\times (N-1)}{2}C=2N×(N−1)​个密钥,n=1000时,C(1000, 2)≈500000, 密钥管理困难。
无法满足不相识的人之间通信的保密要求。
不能实现数字签名。

非对称密码体制的基本特点

加密能力与解密能力是分开的。
密钥分发简单。
需要保存的密钥量大大减少,N个用户只需要N个密钥。
可满足不相识的人之间保密通信。
可以实现数字签名。

公钥密码体制的应用

加密/解密:发送方用接收方的公钥对消息加密。
数字签名:发送方用其私钥对消息签名,可以对整体消息签名或对消息的摘要签名。
密钥交换:通信双方交换会话密钥。

RSA

算法流程

随机选择两个秘密大素数ppp和qqq
计算公开模数n=p×qn=p\times qn=p×q
计算秘密的欧拉指数函数φ(n)=(p−1)(q−1)\varphi (n)=(p-1)(q-1)φ(n)=(p−1)(q−1)
选择一个与φ(n)\varphi (n)φ(n)互素的数,作为eee或ddd
Euclid算法计算模φ(n)\varphi (n)φ(n)的乘法逆元素,即根据edmodφ(n)=1ed\ mod\ φ(n)=1ed mod φ(n)=1, 求ddd或eee
加密:C=MemodnC=M^e\ mod\ nC=Me mod n
解密:M=Cdmodn=(Memodn)dmodn=Medmodn=MM=C^d\ mod\ n = (M^e\ mod\ n)^d\ mod\ n=M^{ed}\ mod\ n=MM=Cd mod n=(Me mod n)d mod n=Med mod n=M
公钥:PU={e,n}PU=\{ e,n\}PU={e,n} 私钥:PR={d,n}PR=\{ d,n\}PR={d,n}

需要满足的条件

有可能找到e, d, n的值, 使得对所有M&lt;nM&lt;nM<n有Medmodn=MM^{ed}\ mod\ n = MMed mod n=M。
对于所有M&lt;nM&lt;nM<n的值, 要计算MeM^eMe和CdC^dCd是相对容易的。
在给定e和n时, 计算d是不可行的。

证明

已知:edmodφ(n)=1,M&lt;n,p和q是素数ed\ mod\ \varphi (n)=1,M&lt;n,p和q是素数ed mod φ(n)=1,M<n,p和q是素数
求证:Medmodn=MM^{ed}\ mod\ n=MMed mod n=M

可能的攻击方式

穷举攻击:尝试所有可能的密钥
数学攻击:对两个素数乘积的因子分解(FAC问题)
计时攻击:依赖于解密算法的运行时间
RSA的安全性问题依赖于大合数的素因子分解。

第十章

几种公钥分配方法

公开发布、公开可访问的目录、公钥授权、公钥证书

公开发布

公开可访问的目录


一个可信实体或组织负责这个公开目录的维护和分配。

  • 目录包含{name, public-key}等项。
  • 每一通信方通过目录管理员以安全的方式注册一个公钥。
  • 通信方在任何时刻可以用新的密钥替代当前的密钥。

目录定期更新。
目录可通过电子方式访问。
安全问题:一旦攻击者获得目录管理员私钥,则可传递伪造的公钥,可以假冒任何通信方以窃取消息,或者修改已有的记录。

公钥授权


(1) A发送带有时间戳的消息给公钥管理员, 请求B的当前公钥。
(2) 管理员给A发送用其私钥KRauthKR_{auth}KRauth​加密的消息, A用管理员的公钥解密,可以确信该消息来自管理员。

B的公钥KUbKU_bKUb​,用来加密;
原始请求RequestRequestRequest,A可以验证其请求未被修改;
原始时间戳Time1Time_1Time1​, A可以确定收到的不是来自管理员的旧消息。

(3) A保存B的公钥, 并用它对包含A的标识IDAID_AIDA​和N1N_1N1​的消息加密, 然后发送给B。
(45) B以同样方式从管理员处得到A的公钥。
(6) B用KUaKUaKUa对A的N1N_1N1​和B的N2N_2N2​加密, 发送给A。
(7) A用B的公钥对N2N_2N2​加密并发送给B, 使B相信其通信伙伴是A。

公钥证书


有了公钥证书使得不通过实时访问公钥授权部门而实现公钥交换成为可能。
公钥证书将一个通信方的身份与他的公开密钥绑定在一起,通常还包括有效期和使用方法等。
证书的所有内容必须经由可信公钥授权方或者证书授权方签名后方可生效。
知道公钥授权当局公开密钥的任何人都可以验证一个用户的公开密钥证书的有效性。

对于申请者A,管理员提供的证书为:
CA=EKRauth[Time1,IDA,KUa]C_A = E_{KR_{auth}} [Time_1, ID_A, KU_a]CA​=EKRauth​​[Time1​,IDA​,KUa​]
其他人读取并验证:
DKUauth[CA]=DKUauth[EKRauth[Time1,IDA,KUa]]=(Time1,IDA,KUa)D_{KU_{auth}}[C_A]=D_{KU_{auth}} [E_{KR_{auth}} [Time_1, ID_A, KU_a]]=(Time_1, ID_A, KU_a)DKUauth​​[CA​]=DKUauth​​[EKRauth​​[Time1​,IDA​,KUa​]]=(Time1​,IDA​,KUa​)

公钥密码分配传统密码体制密码

公钥密码算法速度较慢,因此更适合作为传统密码中实现秘密密钥分配的一种手段。
下图是一个利用公钥密码体制分配(传输)对称式密码(会话密钥KsK_sKs​)的例子:

(1) A用KUbKU_bKUb​加密消息N1N_1N1​和IDAID_AIDA​发送给B。
(2) 只有B拥有B的私钥,即N1N_1N1​只有B可见,B产生随机值N2N_2N2​,和N1N_1N1​一起加密后发送给A,A看到N1N_1N1​后即可确定消息是B发来的。
(3) 同理,N2N_2N2​只有A可见,B可以确定消息是A发来的。
(4) A产生本次会话的密钥,先用自己的私钥加密再用B的公钥加密发送给B。
上述过程中存在的安全问题:消息(4)可以进行重放攻击。在下次会话时上次的会话密钥可能已经泄露,攻击者可以重放上次的消息(4)进行攻击。解决方案是将消息(3)和消息(4)合并发送,即(3)EKUb[N2∣∣EKRa[Ks]]E_{KU_b}[N_2 || E_{KR_a}[K_s]]EKUb​​[N2​∣∣EKRa​​[Ks​]]。

Diffie-Hellman密钥交换

Diffie-Hellman密钥交换算法是一种公钥分发机制。它不是用来加密消息的,所生成的是通信双方共享的会话密钥,必须保密,其值取决于通信双方的私钥和公钥信息。

流程

通信双方约定一个大素数(或多项式)p, 和模p的一个素根α(p与α是公开的)
双方分别选择一个秘密钥(整数值),如xA&lt;p,xB&lt;px_A&lt; p, x_B&lt; pxA​<p,xB​<p
计算公钥, 如yA=αxAmodp,yB=αxBmodpy_A = α^{x_A}\ mod\ p, y_B = α^{x_B}\ mod\ pyA​=αxA​ mod p,yB​=αxB​ mod p, 并相互交换
双方共享的会话密钥KABK_{AB}KAB​可以如下算出
$K_{AB} = α^{x_Ax_B}\ mod\ p= y_A^{x_B}\ mod\ p (which\ B\ can\ compute) = y_B^{x_A}\ mod\ p (which\ A\ can\ compute) $
KABK_{AB}KAB​是双方用对称密码通信时共享的密钥
如果双方继续通信,可以继续使用这个密钥,除非他们要选择新的密钥

安全性

攻击者如果想要获得x, 则必须解决DLP(离散对数)问题。XB=dlogα,pYBX_B=dlog_{α,p}Y_BXB​=dlogα,p​YB​,即求YBY_BYB​的以ααα为底的模ppp的离散对数。

中间人攻击


ELGamal概率密码系统

流程

假设A和B互相通信,共享大素数ppp,本原元素α,1≤m≤p−1α,1≤m≤p-1α,1≤m≤p−1
加密:
A选择k∈[1,p−1]k∈[1, p-1]k∈[1,p−1], kkk的作用其实即为xAx_AxA​, A访问公共区域找到B的公开密钥YB=αxBmodpY_B = α^{x_B}\ mod\ pYB​=αxB​ mod p, 计算:K=(YB)kmodp,即K=αxBkmodpK = (Y_B)^k\ mod\ p, 即K = α^{x_Bk}\ mod\ pK=(YB​)k mod p,即K=αxB​k mod p
c1=αkmodpc1 = α^k\ mod\ pc1=αk mod p
c2=mKmodpc2 = mK\ mod\ pc2=mK mod p
密文即为 (c1,c2)(c1, c2)(c1,c2)
解密:
B首先恢复K:K =c1xBmodp=αkxBmodp= c1^{x_B}\ mod\ p = α^{kx_B}\ mod\ p=c1xB​ mod p=αkxB​ mod p
然后恢复m:m =c2K−1modp=c2K^{-1}\ mod\ p=c2K−1 mod p。这里的K−1K^{-1}K−1指KK−1modp=1KK^{-1}\ mod\ p=1KK−1 mod p=1

效率及安全性

ElGamal密码体制加密效率是50%,因为密文大小是明文的两倍。
ElGamal密码体制是概率密码体制,同样的明文每次加密得到不同的密文, 因为每次随机选择k。
ElGamal密码体制的破译难度同Diffie-Hellman的方法,即基于DLP,离散对数问题,最快的算法需要T=exp((ln§lnln§1/2)次运算。

第十一章

消息认证

消息认证就是验证接受的消息确实来自真正的发送方,且是未经修改过的消息,并且可以认证消息的顺序和及时性。

消息认证函数

消息加密

消息加密本身提供了一种认证手段。
对称加密

  • 保密性:如果除了源和宿没有其他人知道密码,那么就保证了保密性。
  • 认证:宿可以确信消息是由源产生的,因为除了宿以外只有源拥有加密密钥,产生出用此密钥可以解密的密文。因此宿如果可以恢复出明文,则可以认为每一位都没有被修改过,建立在明文具有可读性的基础上。

如果消息可以是任意的位模式,接收方无法确定收到的消息是合法明文的密文(不具有可读性)。因此要求明文具有某种易于识别的结构,如在加密前对每个消息附加一个帧校验序列FCS。

FCS和加密函数E执行的顺序很重要。图中(a)为内部错误控制,攻击者很难产生密文使得控制码仍为正确,所以可以提供认证。图中(b)为外部错误控制,攻击者可以构造出具有正确控制码的消息,虽然不知道解密后的消息是什么,但是可以混淆破坏通信。
公钥加密

(b) 保密性:只有接受方具有私钥可以解密消息,因此具有保密性;但公钥是公开的,任何人都可以假冒发送方给接收方发送消息,不能保证消息的真实性,因此没有认证。
© 认证和签名:接收方接收到密文并可以解密出明文(如果明文是具有某种结构的,即具有可读性以区分真实的明文和随机串)就可以确定发送方是真实的。只有发送方有自己的私钥,加密后就相当于是一个签名。
(d) 保密性、认证和签名:发送方先用自己的私钥加密以作为签名,再用接收方的公钥加密实现保密性,同时明文具有某种结构的情况下实现了认证。缺点是一次通信执行四次公钥算法(两次加密两次解密)。

消息认证码MAC

利用密钥产生一个固定长度的短数据块。假如通信双方共享密钥K,则MAC=C(K,M)。如果接收方通过密钥和消息计算的MAC与收到的一致,那么可以确信(1)消息未被修改过(2)消息来自真正的发送方(3)如果消息中含有序列号,那么可以确定消息顺序是正确的。
因为MAC是定长的,而消息数远大于MAC的取值范围,因此MAC是一个多对一的函数。
因为K是通信双方所共有的,所以MAC不是数字签名。同时MAC不需要解密,因此不需要具有可逆性,使得MAC比加密更加难以破解。

(a) 消息认证:整个消息以明文发送,没有保密性,但有消息认证。
(b) 与明文捆绑的消息认证和保密性:对明文做MAC然后与明文一起加密。
© 与密文捆绑的消息认证和保密性:对明文加密,然后对密文做MAC,与密文一起发送。
MAC函数应具有满足以下需求:

  1. 若攻击者已知MMM和C(K,M)C(K,M)C(K,M),则构造满足C(K,M′)=C(K,M)C(K,M')=C(K,M)C(K,M′)=C(K,M)的消息M′M'M′在计算上是不可行的
  2. C(K,M)C(K,M)C(K,M)应该是均匀分布的,即对任何随机选择的消息MMM和M′M'M′,C(K,M′)=C(K,M)C(K,M')=C(K,M)C(K,M′)=C(K,M)的概率是2−n2^{-n}2−n,其中n是MAC的位数
  3. 设M’是M的某个已知的变换,即M’=f(M),如f可能表示逆转M的一位或多位,那么C(K,M)=C(K,M′)C(K,M)=C(K,M')C(K,M)=C(K,M′)的概率是2−n2^{-n}2−n

散列函数HASH

一个散列函数以变长的报文M作为输入,产生定长的散列码H(M)作为输出,亦称作报文摘要。 散列码是报文所有比特的函数值,具有差错检测能力,报文任意一比特的改变都将引起散列码的改变。
Hash函数的安全性需求

需求 描述
输入长度可变 H可以应用于任意大小的数据块
输出长度固定 H产生固定长度的输出
效率 对任意给定的明文x,计算H(x)容易,可由硬件或软件实现
抗原像攻击(单向性) 对任意给定的散列码h,找到满足H(x)=h的x,在计算上不可行
抗第二原像攻击(抗弱碰撞性) 对任何给定的分组x,找到满足y≠x且H(x)=H(y)的y,在计算上不可行
抗强碰撞性 找到任何满足H(x)=H(y)的偶对(x, y),在计算上不可行
伪随机性 H的输出满足伪随机性测试标准

满足前五条的称为弱哈希函数,如果第六条也满足则称为强哈希函数。
应用在数字签名上的Hash函数必须是强哈希函数。
三个安全特性之间的关系
抗强碰撞那么一定抗弱碰撞,反之不成立。
抗强碰撞不一定抗原像,反之亦然。
抗弱碰撞不一定抗原像,反之亦然。
抗强碰撞可以看作是在人群中寻找两个名字相同的人,抗弱碰撞性可以看作是给定一个名字,然后在人群中找一个和这个名字相同的人。

Hash函数提供的消息认证方式


(a) 使用对称密码加密消息和Hash码。对称式密钥保证了保密性,并且可以确定发送方的真实性;Hash码提供了消息认证的功能。
(b) 使用对称式密码仅加密Hash码。对于无需保密性的应用,减少了加解密的负担。实现了消息认证。
© 不使用加密算法,双方共享秘密值s,并且s不在信道上传输,仅实现了消息认证。
(d) 在©的基础上提供保密性。

Hash函数提供的数字签名方式


(a) 使用发送方的私钥,仅对Hash码进行加密。实现了消息认证和数字签名。
(b) 在(a)的基础上使用对称式密码加密,同时实现保密性。

第十三章

数字签名概述

数字签名实现方法

数字签名是一种认证机制,它使得消息的产生者可以添加一个起签名作用的码字。通过计算消息的散列值并用产生者的私钥加密散列值来生成签名。签名保证了消息的来源和完整性。
数字签名标准(DSS)是NIST标准,它使用安全散列算法(SHA)。

数字签名的要求

在收发双方不能完全信任的情况下,需要除认证之外的其他方法来解决假冒和否认的问题,数字签名则是解决办法;
签名接收者能容易地验证签字者对消息所做的数字签名,包括日期和时间;
任何人,包括签名接收者,都不能伪造签名者的签字;
发生争议时,可由第三方解决。

数字签名与消息认证的区别

消息认证使收方能验证消息发送者及所发消息内容是否被窜改过。当收发者之间没有利害冲突时,这对于防止第三者的破坏来说是足够了。但当收者和发者之间有利害冲突时,就无法解决他们之间的纠纷,此时须借助满足前述要求的数字签名技术。

直接数字签名

用共享的密钥(对称密钥)对明文及签名一起加密。注意先进行签名,然后执行外层的加密,这样在发生争执时,第三方可以查看消息及其签名。若先加密再签名,则第三方必须知道解密密钥才能查看消息。先签名再加密,接收方可以保留消息及其签名留作争执时使用。
直接数字签名的有效性依赖于发送方私钥的安全性。发送方如果想要否认一条消息,他可以声称自己的私钥丢失或被盗用。可以使用加入时间戳的方式减少这种威胁。另一种威胁是,攻击者在T时刻盗用了发送方的私钥,并发送了一条签名的消息加盖T时刻之前的时间戳。解决上述问题的方法是使用数字证书的证书管理中心。

ELGamal数字签名方案

首先,基本元素是素数p和原根α
A用户生成随机整数XA∈(1,p−1)X_A\in (1,p-1)XA​∈(1,p−1),计算YA=αXAmodpY_A=α^{X_A}\ mod\ pYA​=αXA​ mod p
计算消息的Hash码,m=H(M)
产生签名
选择整数K∈[1,p−1]K\in [1,p-1]K∈[1,p−1],并且K与p-1互素
计算S1=αKmodpS_1 = \alpha ^K\ mod\ pS1​=αK mod p
计算K模p-1的逆,即K−1mod(p−1)K^{-1}\ mod\ (p-1)K−1 mod (p−1)
计算S2=K−1(m−XAS1)mod(p−1)S_2=K^{-1}(m-X_AS_1)\ mod\ (p-1)S2​=K−1(m−XA​S1​) mod (p−1)
签名即为(S1,S2)(S_1,S_2)(S1​,S2​)
验证签名
计算V1=αmmodpV_1=\alpha ^m\ mod\ pV1​=αm mod p
计算V2=(YA)S1(S1)S2modpV_2=(Y_A)^{S_1}(S_1)^{S_2}\ mod\ pV2​=(YA​)S1​(S1​)S2​ mod p
如果V1=V2V_1=V_2V1​=V2​,那么签名合法。

网络信息安全复习笔记相关推荐

  1. 计算机软考串行和并行公式,2011年计算机软考网络管理员复习笔记第二章

    2011年计算机软考网络管理员复习笔记第二章 第二章 数据通信 (1) 数据通信:两个实体间的数据传输和交换. 2.1数据通信技术 2.1.1 模拟数据通信和数字数据通信 (2) 模拟数据:在某个区间 ...

  2. 物联网信息安全复习笔记(从头开始,两天速成)

    虽说是专业课,但是呢没有发书,据老师老师说呢是书太贵了就不买了.然后所有参考资料就是PPT了,当然,老师很良心的发了几个可能考到简答题问题,让我们下来准备,那就对着PPT和百度开整!从头开始,两天速成 ...

  3. 物联网信息安全复习笔记

    物联网信息安全 第一章 简述物联网的安全体系结构以及各层的主要安全技术 感知识别层.网络传输层.管理服务层.应用层 ①感知识别层的安全技术主要有密码技术.高速密码芯片.PKI公钥基础设施.信息系统平台 ...

  4. 无线网络技术复习笔记(6)——MANET, WSN, Mesh

    1 MANET 1.1 定义 移动Ad Hoc 网络(Mobile Ad Hoc Network, MANET)由一组 无线移动节点 组成,是一种 不需要 依靠现有固定通信网络基础设施的.能够迅速展开 ...

  5. Linux网络编程复习笔记

    理论知识点 TCP协议的三次握手的触发API connect : 第一次握手信息 第二次,第三次都是被动处理,无需调用接口 accept不参与三次握手,取出三次握手成功的描述符 socket描述符的合 ...

  6. 软考|网络工程师复习资料、附历年真题、详细学习笔记,考试重点,看过的人都能过!

    本人于2018年上半年通过网络工程师,手中有2018年最新视频资料,历年真题,个人笔记,详细内容都会通过CSDN发布 对于那种直接贴邮箱要资料的,只想说可否尊重一下我们,我们有些资料也是付费购买的,然 ...

  7. 《信息安全原理》复习笔记

    整了6k字然而我发现基本概念基本没弄清楚.. 考完试了然而这份复习笔记跟考试并无关系.. 有错..不全..加粗的也不是重点.. 下次复习..一定记得看图.... [0.1] 1. 安全性与花费的tra ...

  8. 哈工大信息安全概论复习笔记(2)

    哈工大信息安全概论复习笔记(2) 文章目录 哈工大信息安全概论复习笔记(2) 考点八 RSA公钥算法 考点九 散列函数的特点和作用 考点十 EMI.EMC.防电磁泄漏主要方法 考点十一 容错与容灾的概 ...

  9. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

最新文章

  1. 每日一皮:当你感觉上升瓶颈的时候,不妨换个环境...
  2. [转]UI设计小技巧
  3. mysql 遍历二叉树_【自考】数据结构之二叉树遍历
  4. Java基础题笔记(数组)4
  5. iOS12系统图片heic如何在电脑上查看
  6. ROS学习笔记3(创建一个ROS Package)
  7. Maven和Eclipse整合
  8. 蓝桥杯 ADV-13 算法提高 最小乘积(提高型)
  9. 黑苹果系统是服务器系统,黑苹果各种版本的说明 _ 黑苹果乐园
  10. 将voc2007数据集转换成yolo格式的数据集
  11. NLP在网络文学领域的应用
  12. STM32F1读取MLX90614ESF非接触式温度传感器
  13. Java 截取字符串
  14. 软件工程-第三章 软件需求分析1
  15. 看不见的竞争 带宽优化
  16. Element-ui组ICON图标
  17. 解决win10 图标 显示 小白纸
  18. 自动驾驶系统2.0:安全展望
  19. 单反相机tf卡用sd卡套稳定吗_单反相机tf卡用sd卡套稳定吗
  20. 美丽乡村——大堰镇南溪村

热门文章

  1. Android开发工程师个人简历
  2. CMOS密码破解全攻略
  3. 卡巴斯基泄密?遭美国封杀!微软也扯上关系
  4. 开关电源纹波的产生原因及抑制方法
  5. 泛微oa流程表单之意见栏字数限制
  6. 招标系统html模板信息,招投标信息管理系统.docx
  7. 皮带秤 算法_改进型卡尔曼滤波算法在电子皮带秤动态称重中的应用.PDF
  8. 实验报告五201521460014 综合渗透
  9. 【LeetCode 3-中等】无重复字符的最长子串(高清截图)
  10. egg.js 使用笔记