网络安全基础知识总结
- 前言
- 一、网络安全概述
-
- 1.1 引言
- 1.2 密码学的发展
- 1.3 密码学基础
- 1.4 对称密码
-
- 二、数论知识
-
- 2.1 数论基础
- 2.2 有限域
-
- 2.3 数论入门
-
- 2.3.1 素数
- 2.3.2 费马定理
- 2.3.3 欧拉定理
- 2.3.4 中国剩余定理
- 三、网络安全进阶
-
- 3.1 多重加密
-
- 3.1.1 双重DES
- 3.1.2 三重DES
- 3.1.3 AES
- 3.2 分组密码的工作模式
-
- 3.2.1 电子密码本模式(ECB)
- 3.2.2 密文分组链接模式(CBC)
- 3.2.3 密文反馈模式(CFB)
- 3.2.4 输出反馈模式(OFB)
- 3.2.5 计数器模式(CRT)
- 3.3 非对称密码
-
- 3.4 密钥管理
-
- 3.4.1 Diffie-Hellman密钥交换
- 3.4.2 ElGamal密码体系
- 3.5 消息认证
-
- 3.6 数字签名
- 3.7 认证协议
- 3.8 密钥管理和分发
-
- 3.8.1 公钥的公开发布
- 3.8.2 公开可访问的目录
- 3.8.3 公钥授权
- 3.8.4 公钥证书
- 3.9 身份鉴别
-
- 四、学习总结
- 参考资料
前言
最近看了许多有关联邦学习、网络安全、数据加密相关的论文,其中涉及了大量数论、密码学知识,虽然两年前学习过,但是时间久远又模糊不清了,这让我在阅读过程中困惑不已,临时查阅知识又过于离散难以整合,故下定决心重新系统化学习一遍,并在博客中总结,以备日后复习方便查阅,也用于感兴趣的朋友了解相关知识,那么就让我们开始吧~
一、网络安全概述
1.1 引言
安全攻击分为主动攻击和被动攻击。
- 被动攻击包括非授权阅读消息、文件以及流量分析;
- 主动攻击包括对消息和文件的修改以及拒绝服务。
常见的被动攻击:
- 消息内容的泄露
- 流量分析
常见的主动攻击:
-
伪装
-
重放
-
拒绝服务
网络安全的实现离不开安全机制,安全机制是指用来用来检测、阻止攻击或者从攻击状态里恢复的过程,最重要的安全机制之一就是密码编码机制。
安全服务包括认证、访问控制、数据保密性、数据完整性、不可否认性以及可用性。
1.2 密码学的发展
发展:古代加密方法->古典密码->近代密码。
古典密码基于算法的保密(万变不离其宗),近代密码基于密钥的保密(密钥无穷无尽)。
编码的原则: 加密算法应建立在算法的公开不影响明文和密钥的安全性。
简单加密系统模型:
理论安全: 攻击者无论截获多少密文信息,都无法得到足够信息唯一决定明文。加密秘钥长度必须大于等于明文长度,并且一次一密,但是不实用。
实际安全: 在有限的资源范围内,攻击者都不能通过系统的分析破解系统。
密码体制作为加密系统的基本工作方式,基本要素是加密算法和密钥,并不是密文明文。
加密系统可以用数学符号描述:
S = P , C , K , E , D S={P,C,K,E,D} S=P,C,K,E,D
- P:明文空间, P = D k ( C ) = D k ( E k ( P ) ) P=D_{k}(C)=D_{k}(E_{k}(P)) P=Dk(C)=Dk(Ek(P))
- C:密文空间, C = E k ( P ) C=E_{k}(P) C=Ek(P)
- K:密钥空间
- E:加密变换, E k = D k − 1 E_{k}=D_{k}^{-1} Ek=Dk−1
- D:解密变换, D k = E k − 1 D_{k}=E_{k}^{-1} Dk=Ek−1
对称密码体制和非对称密码体制: 前者加密密钥和解密密钥相同,开放性差,后者加密密钥和解密密钥不同,开放性好。
序列密码(流密码): 加密密文不仅与给定密码算法和密钥有关,同时也与明文位置有关。加密以明文比特为单位。
分组密码: 加密密文只与给定密码算法和密钥有关。
其他加密体制有确定型密码体制和概率密码体制。
- 确定型:明文密钥确定,密文唯一确定。
- 明文密钥确定,密文通过客观随机因素从一个密文集合中产生,密文形式不确定。
以及单向函数型密码体制和双向变换型密码体制。
- 单向函数型密码体制:适用于不需要解密的场合,如哈希函数(可以用作判断是否被篡改)。
- 双向变换型密码体制:可以进行可逆加密、解密变换。
Kerckhoff原则: 设计加密系统时,总是假定密码算法是可以公开的,需要保密的是密钥。
1.3 密码学基础
包括密码编码学和密码分析学,一个是寻找加密的方法,另一个是用作破解加密的方法。
密码编码系统分类三点依据:
- 明文转换为密文的操作类型:代换和置换。
- 使用密钥数量和方式:对称密码体制(单钥系统、秘密密钥系统)和非对称密码体制(双钥系统、公开密钥系统)。
- 明文处理方式:分组加密、流加密。
密码分析学:
- 密码分析:试图破译密文得到明文或者获取密钥的过程。
- 穷举攻击:对密文尝试所有可能的密钥,直到转换为可读的有意义的明文。至少尝试1/2可能的密钥。
对加密信息的攻击类型:
- 唯密文攻击:只知道密文进行攻击,该方法最为困难。
- 已知明文攻击:既知道明文又知道密文,该方法用于破解密钥。
- 选择明文攻击:选择明文获取密文,比已知明文攻击更强,用于攻击系统。
- 选择密文攻击:选择密文,获取对应的明文。
- 选择文本攻击:即可以选择明文也可以选择密文,获取对应的密文和明文。
Caesar密码(凯撒密码): 一种单表代换密码,过程如下图所示
对凯撒密码的攻击用穷举法的原因:
- 已知加密和解密算法。
- 密钥只有25个。
- 明文所用语言是已知的,且意义易于识别。
单表代换密码: 每个明文字母可以随机映射任意一个密文字母,有26!或大于4×1026种可能的密钥。但是! 仍然会受到穷举攻击,因为语言的规律性(由单词字母的频率判断)。
1.4 对称密码
对称算法的安全性依赖于密钥。
对称算法可分为流密码和分组密码。
许多分组密码采用Feistel结构。
Feistel 结构: 由许多相同的轮函数组成。每一轮里,对输入数据的一半进行代换,接着用一个置换来交换数据的两个部分,扩展初始的密钥使得每一轮使用不同的子密钥。
为了对付基于统计分析的密码破译,必须对明文作confusion(混淆) 和diffusion(扩散) 处理,以减少密文的统计特性,为统计分析制造障碍。
- diffusion:明文统计结构扩散消失到大批密文统计特性中,使明文和密文之间统计关系尽量复杂。
- confusion:使密文和加密密钥之间关系尽量复杂。
Feistel密码结构如下图所示,将输入分组成左右两个部分,左半部分实施多回合替换,右半部分和子密钥应用轮函数F,输出与左半做异或,并将左右两部分互换。
每一轮的加密: L i = R i − 1 ; R i = L i − 1 ⨁ F ( K i , R i − 1 ) L_{i}=R_{i -1};R_{i}=L_{i-1} \bigoplus F(K_{i},R_{i-1}) Li=Ri−1;Ri=Li−1⨁F(Ki,Ri−1)
Feistel加密器设计原则:
- 分组长度越长越安全,但同时加解密速度越低,64位是很好的折中。
- 密钥长度越长越好,但是加解密速度会降低,128位常用。
- 迭代次数越多越好,通常16次。
- 解密算法以密文为输入,以相反的次序使用密钥。
1.4.1 数据加密标准DES
DES的基本结构。
DES加密过程:
DES的一轮迭代过程:
对每个过程的详解如下:
-
IP置换:目的是将输入的64位数据按位重新组合,并把输出分为L0、R0两部分,每部分各长32位。
-
扩充置换:将32位的 R i − 1 R_{i-1} Ri−1扩充成48位,扩充置换E盒如下:
-
密钥置换:不考虑每个字节的第8位,DES的密钥由64位减至56位,每个字节的第8位作为奇偶校验位。在DES每一轮中,从56位密钥产生不同的48位子密钥(密钥等分的两部分左移得到)。
-
32位的右半扩展后与48位子密钥异或,输送到S盒中,得到32位结果。S盒有8个将6位数据映射成4位的盒子。注意每个盒子内部排列是不同的。
-
P盒置换:该置换把输入的每位映射到输出位。
-
最后, L i − 1 L_{i-1} Li−1与 R i − 1 R_{i-1} Ri−1变换后的结果进行异或,得到 R i R_{i} Ri。
DES看似破译很困难,密钥多大256之多,但在计算能力飞速发展的今天,不到10小时就可以破译。
二、数论知识
2.1 数论基础
欧几里得算法,又称辗转相除法,记为gcd(a,b),表示整数a,b的最大公因数,gcd(a,b)=gcd(b,a%b)
,最大公因数必须是正数。
模运算: 给定任意整数a和q,以q除a,余数是r,则可以表示为 a = s q + r , 0 ≤ r < q a=sq+r,0\leq ra=sq+r,0≤r<q
,其中 s = [ a / q ] s=[a/q] s=[a/q],表示小于 a / q a/q a/q的最大整数。定义r为a mod q的剩余,记为 r ≡ a m o d q r\equiv a \, mod\, q r≡amodq。若整数a和b有 ( a m o d q ) = ( b m o d q ) (a \, mod\, q) =(b \, mod\, q) (amodq)=(bmodq),则称a与b在mod q下同余。
若 a ≡ b ( m o d n ) a\equiv b \, (mod\, n) a≡b(modn)看做a与b的二元关系,则它是一个等价关系,即满足:
- 自反性: a ≡ a ( m o d n ) a\equiv a \, (mod\, n) a≡a(modn)
- 对等性:如果a mod n = b mod n,则 b ≡ a ( m o d n ) b\equiv a \, (mod\, n) b≡a(modn)
- 对称性:若 a ≡ b ( m o d n ) a\equiv b \, (mod\, n) a≡b(modn),则 b ≡ a ( m o d n ) b\equiv a \, (mod\, n) b≡a(modn)
- 传递性:若 a ≡ b ( m o d n ) a\equiv b \, (mod\, n) a≡b(modn), b ≡ c ( m o d n ) b\equiv c \, (mod\, n) b≡c(modn),则 a ≡ c ( m o d n ) a\equiv c \, (mod\, n) a≡c(modn)
定理(消去律): 对于 a b ≡ a c ( m o d m ) ab\equiv ac \, (mod\, m) ab≡ac(modm),若gcd(a,m)=1,则 b ≡ c ( m o d n ) b\equiv c \, (mod\, n) b≡c(modn)。
原因: 模m的乘法运算返回的结果是0到m-1之间的数,如果乘数a和模数m有除1以外的共同因子时将不会产生完整的余数集合。
2.2 有限域
结构代数: 从公理系统出发研究特定的代数系统,群、环、域等。
2.2.1 群
群
群的概念简而言之就是一个集合及定义在该集合上的二元运算,满足四条要求:
- 封闭性:对于所有集合中的a,b,运算结果a·b也在该集合中。
- 结合性:对于集合中a,b,c,等式
(a•b)•c=a•(b•c)
成立。
- 单位元:存在集合中的元素e,是的对于所有集合中的元素a,等式
e•a=a•e
成立。
- 逆元:对于每个集合中的a,存在元素b使得
a•b=b•e=e
,e是单位元。
交换群
又称阿贝尔群,在群的基础上,满足:
- 交换律:对于G中任意的元素a, b,都有
a•b=b•a
成立。
循环群
若由群G的一个生成元素g的幂次构成G群,即G={e,g,g2 ,…, gn}则称G为循环群。元素g称为G的生成元素。 e=g0。
至于有限群和无限群,取决于群中的元素是否有限,此处不提。
2.2.2 环
环R, 由{R, +, x}表示, 是具有加法和乘法两个二元运算的元素的集合,对于环中的所有a, b, c, 都服从以下公理:
- 单位元是0,a的逆元是-a。
- 乘法封闭性:a和b属于R,则ab属于R。
- 乘法结合律:对于R中任意a, b, c有a(bc)=(ab)c。
- 乘法结合律: a(b+c)=ab+ac or (a+b)c=ac+bc
- 乘法交换律:ab=ba,交换环。
- 乘法单位元:R中存在元素1使得所有a1=1a。
- 无零因子:R中有a,b且ab=0,则a=0或者b=0。
满足交换律的是交换环,满足最后两条的是整环。
2.2.3 域
域F, 可以记为{F, +, x}, 是有加法和乘法的两个二元运算的元素的集合,对于F中的任意元素a, b, c, 满足以下公理:
- F是一个整环。
- 乘法逆元,对于F中任意元素a(除0之外),F中都存在一个元素a-1,使得aa-1=a-1a=1。
有理数集合、实数集合和复数集合都是域,整数集合不是域,因为除了1和-1有乘法逆元,其他元素都没有。
2.3 数论入门
入门部分的关键知识点包括:素数,费马定理和欧拉定理,离散对数。
2.3.1 素数
素数的因子是1和其自身。
算数基本定理: 任意整数a>1
都可以唯一地因子分解为
a = p 1 a 1 p 2 a 2 . . . p t a t a=p_{1}^{a_{1}}p_{2}^{a_{2}}...p_{t}^{a_{t}} a=p1a1p2a2...ptat
其中, p i p_{i} pi均是素数,且 p 1 < p 2 < . . . < p t p_{1}p1<p2<...<pt,每个 a i > 0 a_{i}>0 ai>0。确定一个大数的素因子分解并不容易,这也是许多公钥加密的基础。
2.3.2 费马定理
费马定理: 若p是素数,a是正整数且不能被p整除(互素),则 a p − 1 m o d p = 1 a^{p-1} \, mod \,p=1 ap−1modp=1。
证明:
- 定义一个集合 X 为{1×a mod p,2×a mod p,…,(p-1)×a mod p},考虑另一个集合 A={1,2,3,…,p-1},我们说 X 是 A 的一个置换型(X中各个元素不相等,可以通过反证法证明)。
- 将X中元素相乘的结果与A中元素相乘的结果相同。即(a×2a×3a×…×(n-1)a) mod p=(1×2×3×…×p-1) mod p=((p-1)!) mod p。
- 化简上式得 a p − 1 ( p − 1 ) ! m o d p = ( p − 1 ) ! m o d p a^{p-1}(p-1)! \,mod \,p =(p-1)!\,mod \,p ap−1(p−1)!modp=(p−1)!modp,由于}(p-1)!与p互质,所以可以约去。
- 得到最后的 a p − 1 m o d p = 1 m o d p a^{p-1} \,mod \,p =1\,mod \,p ap−1modp=1modp。
费马定理的等价形式:
a p ≡ a m o d p , p 是 素 数 。 a^{p} \equiv a \,mod \,p,p是素数。 ap≡amodp,p是素数。
2.3.3 欧拉定理
欧拉函数证明
欧拉函数 Φ ( n ) \Phi(n) Φ(n)指的是小于n且与n互素的正整数的个数。如果p是素数,则 Φ ( n ) = p − 1 \Phi(n)=p-1 Φ(n)=p−1。
命题: 设p和q是两个素数,且p与q不相等,则对于n=p*q来说,
Φ ( n ) = Φ ( p ) ∗ Φ ( q ) = ( p − 1 ) ∗ ( q − 1 ) \Phi(n)=\Phi(p)*\Phi(q)=(p-1)*(q-1) Φ(n)=Φ(p)∗Φ(q)=(p−1)∗(q−1)
证明:
- 考察{1,2,3,…,p×q-1}这个集合,集合中与 n 互素元素的个数即为Φ(n)。
- 显然与n不互素的集合为{p,2×p,3×p,…,(q-1)×p}和和{q,2×q,3×q,…,(p-1)×q}。
- 显然上面两个集合的元素数量分别为q-1和p-1。
- 故 Φ ( n ) = ( p ∗ q − 1 ) − ( q − 1 ) − ( p − 1 ) = p ∗ q − q − p + 1 = ( p − 1 ) ∗ ( q − 1 ) = Φ ( p ) ∗ Φ ( q ) \Phi(n)=(p*q-1) - (q-1) - (p-1)=p*q-q-p+1=(p-1)*(q-1)=\Phi(p)*\Phi(q) Φ(n)=(p∗q−1)−(q−1)−(p−1)=p∗q−q−p+1=(p−1)∗(q−1)=Φ(p)∗Φ(q)。
欧拉定理证明
命题: 对于任意互素的a和n,有
a Φ ( n ) ≡ 1 ( m o d n ) a^{\Phi(n)}\equiv1 (\, mod \, n) aΦ(n)≡1(modn)
证明: 由费马定理可以直接得出。
2.3.4 中国剩余定理
该定理说明某一范围内的整数可通过它对两两互素的整数取模所得的余数来重构。
定理: 令 d 1 , . . . , d t d_{1},...,d_{t} d1,...,dt两两互素, n = d 1 . . . d t n=d_{1}...d_{t} n=d1...dt,则 x m o d d i = x i , i = 1 , . . . , t x \, mod \, d_{i}=x_{i},i=1,...,t xmoddi=xi,i=1,...,t,在[0, n-1]中有一个公共解x。
证明:
- 令 M = m 1 × m 2 × m 3 × … × m n M=m_{1}×m_{2}×m_{3}×…×m_{n} M=m1×m2×m3×…×mn,其中 m i m_{i} mi两两互素。
- M i = M / m i M_{i}=M/m_{i} Mi=M/mi,这样 M i M_{i} Mi与 m i m_{i} mi两两互素了。
- 再令 c i = M i × ( M i − 1 m o d ( m i ) ) c_{i}=M_{i}×(M_{i}^{-1}\, mod \,(m_{i})) ci=Mi×(Mi−1mod(mi)),即 c i c_{i} ci是 M i M_{i} Mi和其模 m i m_{i} mi逆元的乘积。
- 则最后的x可以表示为 x = ( a 1 c 1 + a 2 c 2 + . . . a n c n ) ( m o d M ) x=(a_{1}c_{1}+a_{2}c_{2}+...a_{n}c_{n})(\, mod \, M) x=(a1c1+a2c2+...ancn)(modM)。
三、网络安全进阶
3.1 多重加密
多重加密是将一个加密算法多次使用的技术。
3.1.1 双重DES
多次加密的最简单方式,
- C = E k 2 ( E k 1 ( P ) ) C=E_{k2}(E_{k1}(P)) C=Ek2(Ek1(P))
- P = D k 1 ( D k 2 ( C ) ) P=D_{k1}(D_{k2}(C)) P=Dk1(Dk2(C))
这种方法密钥长度是112位。但是会遭受中途相遇攻击。
- 只要连续使用密码两次,这种攻击总是有效。
- x = E k 1 ( P ) = D k 2 ( C ) x=E_{k1}(P)=D_{k2}(C) x=Ek1(P)=Dk2(C),所以储存所有密钥加密P的结果,并与所有密钥解密C的结果匹配,得出X。
- 复杂度只有O(256)。
3.1.2 三重DES
使用两个密钥进行三次加密:E-D-E。
当前还没有对三重DES可行的攻击方式。
此外三重DES已被广泛使用, C = E K 3 [ D K 2 [ E K 1 [ P ] ] ] C=E_{K3}[D_{K2}[E_{K1}[P]]] C=EK3[DK2[EK1[P]]]。
3.1.3 AES
高级加密标准,特点如下:
- 加密、解密相似但不对称。
- AES算法中没有Feistel结构。
- 支持128/192/256三种分组长度。
- 支持128/192/256密钥长度。
- 有较好的数学理论作为基础。
- 结构简单、速度快。
AES与3DES的比较:
3.2 分组密码的工作模式
3.2.1 电子密码本模式(ECB)
明文分成64位的分组进行加密,必要时填充,每个分组用同一密钥加密,同样明文分组加密得相同密文。
适合数据较少的情况,弱点来源于其加密过的密文分组是互相独立的。
3.2.2 密文分组链接模式(CBC)
加密输入是当前明文分组和前一密文分组的异或,形成一条链,使用相同的密钥, 这样每个明文分组的加密函数输入与明文分组之间不再有固定的关系。
优点在于每个密文分组依赖于所有明文分组,明文消息一点变化都会影响所有的密文分组。
缺点在于发送方和接收方都需要共享IV,如果被攻击者篡改,将会导致接受者接收被改变。
计算IV的方法:
- 加密函数加密一个时变值,密钥相同,时变值对每次加密运算必须唯一,可以是计数器。
- 随机数发生器生成随机分组。
3.2.3 密文反馈模式(CFB)
将DES转化成流密码的技术。
加密: 加密函数的输入是一个64位的移位寄存器,产生初始向量IV。加密函数高位j位与明文P1的第一单元异或,产生j位密文C1进入移位寄存器低位,继续加密,与P2输入异或,如此重复直到所有明文单元都完成加密。
解密: 采用相同方案,使用加密函数。
3.2.4 输出反馈模式(OFB)
结构类似CFB,但OFB中加密函数输出被反馈回移位寄存器,而CFB是密文单元被反馈。优点是传输中的比特差错不会传播,缺点是比CFB容易受到报文流篡改攻击。
3.2.5 计数器模式(CRT)
优点与局限:
- 高效,可以并行加密,对高速链路突发数据加密尤其有效。
- 可以对被加密分组进行随机存取。
- 相当安全。
- 简洁。
- 必须绝不重复使用密钥和计数器值。
3.3 非对称密码
对称密码体制的问题:
- 加密能力与解密能力捆绑。
- 密钥分发需要可靠信道,分发困难。
- 密钥管理困难(如果有N个用户,需要N(N-1)/2个密钥)。
- 无法满足不相识人之间的通信保密要求。
- 不能实现数字签名。
非对称密码体制的特点:
- 加解密能力分开。
- 密钥分发简单。
- 需要保存密钥量少,N个用户N个密钥。
- 可满足不相识人之间保密通信。
- 可以实现数字签名。
公钥算法特点:
- 仅根据密码算法和加密密钥来确定解密密钥在计算上是不可行的。
- 两个密钥任意一个都可以加密,另一个解密。
公钥密码体制组成:明文,密文,加密算法,公钥和私钥,解密算法。
公钥保密和认证过程:
为什么要先签名再加密?
用发送方的私钥签名,证明是发送方发送的,再用接收方的公钥加密,如果反过来,先加密后签名,签名再传播途中被人为篡改,这样就会导致接收方不知道谁发的信息了。
3.3.1 RSA算法
算法流程:
- 随机选择两个大素数p和q;
- 计算公开模数n=p*q;
- 计算秘密的欧拉指数函数φ(n)=(p-1)(q-1);
- 选择一个与φ(n)互素的数,作为e或d;
- 用Euclid算法计算模φ(n)的乘法逆元素,即根据ed mod φ(n)=1, 求d或e;
- 加密:C=Me mod n;
- 解密:M = Cd mod n = (Me mod n)d mod n = M。
解密过程证明(m与n互素):
- 因为 ed mod φ(n)=1,所以 ed 可表示为 kφ(n)+1;
- 故 med mod n=mkφ(n)+1 mod n = m×mkφ(n) mod n;
- 由欧拉定理知,aφ(n) ≡1 (mod n),易知原始等于m。
解密过程证明(m与n不互素):
- 要证 med mod n = m,即可分别证 med mod p = m mod p、med mod q = m mod q;
- 若m与p不互素,所以m mod p = 0,所以med mod p = 0;
- 若m与p互素,med mod p = mk(p-1)(q-1)+1 mod p = (m×(m(p-1) mod p)k(q-1) mod p = m mod p;
- 同理可证明med mod q = m mod q;
- 命题即证。
RSA的速度:
- 大数计算,最快也比DES慢100倍,无论软件还是硬件;
- 一般用于少量数据加密。
REA的缺点:
- 产生密钥麻烦,很难做到一次一密;
- 分组长度太大;
- n至少600b,运算代价高,速度特别慢。
3.4 密钥管理
几种公钥分配方法:
公钥公开发布:广播给各方或单独发送给一方,最大问题是容易被人伪造公钥的发布。
公开可访问目录:维护一个动态可访问的公钥目录可获得更大程度安全性。一旦攻击者获得目录管理员私钥,可传递伪造的公钥。
公钥授权:
- A发送带时间戳的信息给公钥管理员,请求B当前公钥;
- 管理员给A发送其私钥加密的消息,A用管理员的公钥解密,确认信息准确;
- A保存B的公钥,加密信息发送给B;
- B同样方式从管理员处得到A的公钥;
- B用A的公钥对A的N1和B的N2加密,发送给A;
- A用B的公钥对N2加密发送给B,使B相信其通信伙伴是A。
公钥密码算法速度较慢,更适合作为传统密码中实现秘密密钥分配的一种手段。因此需要产生会话密码来加密。
密钥分配方式:
- 一种简单的秘密密钥分配方法:不安全,容易受到中间人攻击。
3.4.1 Diffie-Hellman密钥交换
一种公钥分发机制,不是加密消息的,所生成的是通信双方共享的会话密钥。安全性依赖于离散对数问题。
DH密钥交换流程:
- 通信双方约定一个大素数p,和模p的一个素根a;
- 各方产生公开密钥,选择一个秘密数值 x A < p x_A
xA<p
, x B < p x_BxB<p
;
- 计算公钥,如 y A = a x A m o d p y_{A}=a^{x_{A}} \, mod \, p yA=axAmodp, y B = a x B m o d p y_{B}=a^{x_{B}} \, mod \, p yB=axBmodp,并相互交换;
- 双方共享的会话密钥 K A B K_{AB} KAB可以如下算出:
K A B = a x A x B m o d p = y A x B m o d p = y B x A m o d p K_{AB}=a^{x_Ax_B} \, mod \, p=y_{A}^{x_B}\, mod \, p=y_{B}^{x_A}\, mod \, p KAB=axAxBmodp=yAxBmodp=yBxAmodp
- K A B K_{AB} KAB是双方用对称密码通信时共享的密钥。
- 攻击者如果想获得x,必须解决DLP问题(离散对数问题)。
DH协议的缺点:不能抵抗中间人攻击。
3.4.2 ElGamal密码体系
ElGamal公钥密码体制是一种基于离散对数问题困难性的公钥体制。
注意k不能重复使用,ElGamal密码体制是概率密码体制,同样的明文每次加密得到不同的密文,因为每次的k都是随机选择的。
ElGamal数字签名方法
3.5 消息认证
消息认证用来验证消息完整性的一种机制或服务。消息认证确保收到的数据确实和发送时一样。
消息认证关心的问题:
- 保护消息的完整性
- 验证发送方身份
- 消息源的不可否认性
常见的消息认证方法:
可能的攻击方式:
加密安全性的方式:
3.5.1 Mac
消息认证码,使用密钥产生短小的定长数据分组,将它附加在报文中。
- 通信双方共享密钥K,A加密后附在报文后发送给B;
- B接收重新计算与接收的Mac比较;
- 如果只有收发双方知道密钥且Mac匹配,则报文未修改且是发送方发送的,可确保报文序号正确。
注意:
- 报文认证不提供保密性。
- 不提供数字签名,因为双方共享密钥;
- 将Mac直接与明文并置,然后加密传输比较常用。
3.5.2 散列函数
输入任意长度的消息M,输出固定长度的散列值,称为消息摘要,消息中任何一位或者多位变化都会导致散列值发生变化。
SHA: FIPS认证的五种安全散列算法,分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。
Hash函数的分类:
3.6 数字签名
数字签名是以数字形式存储的明文信息经过特定密码变换生成密文,作为相应明文的签名,使明文信息的接受者能够验证信息确实来自合法用户,以及确认信息发送者身份。
基本要求:
数字签名与消息认证区别:消息认证使消息接收方验证消息发送者发送的内容有无被修改过,防止第三方破坏足够,但是双方有利害冲突时,需要更严格的手段——数字签名。
消息签名的两种方法:
两类数字签名:
- 确定性数字签名,明文签名一一对应;
- 概率性数字签名,一个明文有多个合法签名。
3.7 认证协议
认证是证实信息交换过程有效性和合法性的一种手段,包括对通信对象的认证(身份认证)和报文内容的认证(报文认证),起到数据完整性的保护,有:
- 信息的真实性
- 存储数据的真实性
- 接收方提供回执
- 发送方不可否认
- 时效性和公证可能性
认证的目的:防窃听、防假冒或拦截、防窃取等。
基本认证方法:单向认证,双向认证,可信中继。
单向认证:
- 使用对称加密方法,即一次一密方法的变形
- 使用公钥方法,A向B声称是A,B向A发送随机数R,A用其私钥加密送B,B用A的公钥验证
双向认证:
- 对称密钥(三次握手)
- 公钥方式,A、B双向使用不同的R值
- 时标方式
可信中继:
- 使用KDC密钥分发中心
- 通过DASS(分布式认证安全服务)
群认证
重放攻击: 合法的签名消息被拷贝后重新送出。
重放攻击的解决方法:
3.8 密钥管理和分发
分配方法:
- 密钥一方选择,交给另一方
- 第三方选择密钥分发给双方
- 一方用双方已有的密钥加密新密钥发给另一方
- 第三方通过秘密通道发送给双方
一种透明的密钥控制方案:
上述方案容易遭受重放攻击。
非对称加密的对称密钥分发:
3.8.1 公钥的公开发布
用户分发自己公钥给接收者或者广播给通信双方。
缺点是伪造,任何人都可以产生一个冒充真实发信者的公钥来欺骗。
Merkle协议
- A产生一个新的临时公钥对
- A发送自己标识和公钥给B
- B产生会话密钥,并用A的公钥加密后发送给A
- A解密会话密钥
问题是容易受到主动攻击,而通信双方却毫无察觉。
Merkle协议的中间人攻击
3.8.2 公开可访问的目录
通过使用一个公共的公钥目录可以获得更大程度的安全性。
目录特点:
- 包含{姓名,公钥}目录项
- 通信方只能安全注册到目录中
- 通信方可在任何时刻进行密钥更替
- 目录定期发布或更新
- 目录可被电子化访问
缺点:仍存在被篡改伪造的风险。
3.8.3 公钥授权
3.8.4 公钥证书
用证书进行密钥交换,可以避免对公钥目录的实时授权访问。证书包含标识和公钥等信息。含有可信公钥或证书授权方(CA)的签名。例如:X.509证书。
认证的过程:
- One-Way Authentication:消息包含时间戳,nonce(随机数),B的标识符,并由A签名。
- Two-Way Authentication:应答消息包括从A得到的临时交互号nonce,时间戳和B生成的临时交互号,消息中可以包含签名的其他信息和用A的公钥加密的会话密钥。
- Three-Way Authentication:使用三条消息(A->B,B->A,A->B)建立认证过程而不需要同步时钟。
3.9 身份鉴别
证实客户的真实身份与其所声称的身份是否相符的过程。
依据:密码、口令、身份证、护照、密钥盘、指纹、笔记、声音、虹膜、DNA等。
实体鉴别与消息鉴别的差别:
- 前者一般实时的,后者一般不提供时间性。
- 前者只证实实体的身份,后者除了消息的合法和完整外,还需要知道消息的含义。
Kerberos
通过提供一个集中的授权服务器负责用户对服务器的认证和服务器对用户的认证,分布的客户/服务器结构,并拥有一个或多个Kerberos服务器提供认证服务。仅依赖对称加密体制而未使用公钥体制。
四、学习总结
经过近一周时间的复习与总结,总算又恢复了网络安全相关的基础知识,剩下的就希望能够将这些知识牢记于心,并在实际中应用。网络安全虽然触不可及,却发生在所有人生活的方方面面,从个人到国家层面,只要身处于地球村,就离不开网络安全的支持,一旦个人信息甚至国家信息遭受泄露,那将造成不可估量的损失,只能说,吾辈任重道远,既然选择了这条道路,那么就砥砺前行,不忘初心,方得始终。
参考资料
https://www.cnblogs.com/songwenlong/p/5944139.html
Cryptography and Network Security-Principles and Practices,sixth Edition
密码编码学与网络安全—原理与实践(第6版)William Stallings 著
https://blog.csdn.net/u013281331/article/details/28233961