第一章 概述
一、两种被动攻击和三种主动攻击
被动攻击:
1、信息内容的获取
2、进行业务流分析
主动攻击:
1、拒绝服务/中断:攻击信息可用性
2、篡改:攻击信息完整性
3、伪造:攻击信息真实性
二、5种安全业务(安全防护措施)
CIA三元组:完整性、可用性、保密性。
1、数据保密
保护数据防止遭到被动攻击,实际上是防止对信息进行无授权的reading。
2、数据认证
保证通信的真实性。
3、数据完整性
保证收到的消息与发出消息一致,实际上是防止或者至少检测出未授权的writing。
4、不可否认性
防止信道双方中的某一方对所传输信息的否认。包括能够证明信息是另一方发出的以及证明信息已被另一方接收。
5、访问控制
限制和控制通过通信链接对主机和应用进行访问的能力。
三、安全的网络通信必须考虑4个方面
加密算法
用于加密算法的秘密信息
秘密信息的分布和共享
使用加密算法和秘密信息以获得安全服务所需的协议
四、理解“保密通信系统模型”
保密通信系统的组成部分:
明文消息空间M;
密文消息空间C;
密钥空间K,在单钥体制下==K,此时密钥K需经安全的密钥信道由发送方传给接收方;
加密变换:M->C;
解密变换:C->M。
(M,C,K,,)成为保密通信系统,简写一个五元组(M,C,K,E,D)。
密文c = (m)
明文m = (c)
密码分析者,则勇气选定的变换函数h,对截获的密文c进行变换,得到的明文是明文空间的某个元素,计算m' = h(c),如果相等,则分析成功。
Kerckhoff原则:系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥。
五、密钥体制从原理上可分为单钥体制和双钥体制两大类
1、对称密钥体制(单钥体制)
加密密钥与解密密钥相同,或者从一个密钥很容易推出另一个密钥。
系统的保密性取决于密钥的安全性,与算法保密性无关。
对明文的两种加密方式:流密码、分组密码。
单钥体制不仅可以用于数据加密,也可用于消息认证。
2、非对称密码体制(双钥体制或公钥密码体制)
1976年,由W.Diffie和M.Hellman提出。
采用公钥体制的每个用户有一堆密钥(一个公开的,另一个是秘密的)。
加密密钥和解密密钥不同,从一个密钥推出另一个密钥在计算上是不可行的。
公钥可以有效实现数字签名,但运算量大,运算速度慢,密钥数位多,密文长度往往大于明文长度。
五种攻击类型(强度依次递增):
对密码攻击的方式:穷举攻击、统计分析攻击、数学分析攻击、旁路攻击、社会工程攻击。
第二章 密码学相关数学知识
一、运算及等价类的概念和应用(掌握)
素数:如果整数p(p>1)的因子只有1和p,则称p是素数。
任一正整数a(a ≥ 2)可以唯一分解成素数幂的乘积
a = * * ···
其中p1 < p2 < · · · < pt是素数,ei是正整数(i=1,…,t)
上式叫做a的素数幂分解式
a和b的任一公因子也是c的因子,定义c是a和b的最大公因子,表示为c=gcd(a,b)。
如果gcd(a,b)=1,称a,b是互素的。
a和b的任一公倍数,也是d的倍数,定义d是a和b的最小公倍数,表示为d=lcm(a,b)。
若gcd(a,b)=1,则lcm(a,b)=a*b。
a mod n 称为a模n, 整数n称为模 。
如果 a mod n=b mod n,则称整数 a 和 b 模n同余, 记为a ≡ b mod n。
与a模n同余的全体称为a的同余类,记为[a]n或者, a为这个同余类的表示元素 。
每个类包含与模n同余的所有整数,称为一个模n剩余类或者同余类或者等价类。
例如,模3的等价类有3个
[0]3 = {. . . , 12, 9, 6, 3, 0, 3, 6, 9, . . .}
[1]3 = {. . . , 11, 8, 5, 2, 1, 4, 7, 10, . . .}[2]3 = {. . . , 10, 7, 4, 1, 2, 5, 8, 11, . . .}
在做 mod n 的加法和乘法时,等价类元素可以替换,结果不变 !
练习, 利用模运算简化计算3713 mod 1737 ≡ 3 mod 17
≡ ≡ 9 mod 17
≡ 81 ≡ −4 mod 17
≡ 16 ≡ −1 mod 17
mod 17 ≡ ≡ 3 ∗ ( 4) ∗ ( 1) ≡ 12 mod 17
二、费马定理、欧拉定理、欧拉函数(掌握)
费马定理:p是素数,a是正整数,且gcd(a,p)=1,则 ≡ 1 mod p。
费马定理等价形式为:a ≡ 1 mod p 或者 ≡ mod p。后一种形式给出了一种计算乘法逆元的方法,效率比扩展欧几里德算法低。
应用费马定理计算 mod 13
≡ = ∗ (mod 13) ≡ 1 ∗ 16 (mod 13) ≡ 3 (mod 13)
欧拉函数:设n是一正整数,小于n且与n互素的正整数个数称为n的欧拉函数,记为φ(n)。
n=12,φ(12) =?
满足gcd(a,12)=1的a为1,5,7,11, 因此φ(12) = 4
定理:
1 、若n是素数,显然有φ(n)=n-1
2 、若n是两个素数p,q的乘积φ=(p*q),则 φ(n) = φ(p) ∗ φ(q) = (p-1)(q-1)
3、 若n有素数幂分解式为n = * * · · · ,则φ(n) = n(1 - )(1 - ) · · · (1 - )
计算φ(35) =?
φ(35) = φ(5) ∗ φ(7) = 4 ∗ 6 = 24
计算φ(72)
φ(72) = φ( ∗ ) = 72(1 - )(1 - ) = 24
欧拉定理: 如果gcd(a,n)=1, 则 ≡ 1 (mod n)
推论:(a) | φ(n)
如果n为素数,记为p,则aφ(p) = ap 1 ≡ 1 (mod p),这正是费马定理, 费马定理是欧拉定理的一个特例。这也是RSA加密算法的基础。
a=5, n=12, gcd(5,12)=1
则 ≡ ≡ 1 mod 12
三、素数检测
素性检测就是对给定的数检验是否为素数, 素性检测对于很多公钥密码体制和协议中密钥的生成很有用。
对于gcd(a,n)=1的每一个 a,即使 ≡ 1 mod n成立,n仍然可能是合数, 这些数称为卡米歇尔数(Carmichael number)。
四、欧几里得算法和扩展欧几里得算法(掌握)
欧几里得算法是用来求两个正整数的最大公因子,推广的欧几里德算法还可以求出一个数关于另一个数的乘法逆元。
欧几里德算法是基于一个基本结论:设a,b是任意两个正整数,当 a > b, gcd(a, b) = gcd(b, a mod b)。
gcd(55, 22) = gcd(22, 55 mod 22)
= gcd(22, 11) = gcd(11, 22 mod 11)
= gcd(11, 0) = 11
扩展欧几里德算法:先求出gcd(a,b),当gcd(a,b)=1时返回b的逆元 。
用扩展欧几里德算法,求67 mod 119的逆元
119=67*1+52 1=67*7-52*9=67*7-(119-67)*9=-119*9+67*16
↓ ↑
67=52*1+15 1=-52*2+(67-52)*7=67*7-52*9
↓ ↑
52=15*3+7 1=15-(52-15*3)*2=-52*2+15*7
↓ ↑
15=7*2+1 → 1=15-7*21=119×(-9)+67×16
1= 67×16 mod 119
所以,67 mod 119的逆元是16
中国剩余定理
五、群,环,域的概念
1、半群
设*是非空集合S上的运算
如果对∀a, b ∈ S,有a ∗ b ∈ S, 则称S对运算*是封闭的。
如果对∀a, b, c ∈ S,有(a ∗ b) ∗ c = a ∗ (b ∗ c), 则称运算*满足结合律。
设< G, ∗ > 是一个代数系统,*满足:封闭性、结合律,则称< G, ∗ > 是半群。
2、群
设< G, ∗ > 是一个代数系统,*满足:
(1)封闭性。
(2)结合律。
(3)单位元:对∀a ∈ G,存在元素e,有 a ∗ e = e ∗ a = a , 则称e为< G, ∗ >的单位元。
(4)逆元:对∀a ∈ G, 存在元素a 1 ∈ G, 有 a ∗ = ∗ a = e ,则称为元素a的逆元
则称 < G, ∗ > 是群。
六、特殊群和域(掌握)
运算* 表示加法时,称为加法群;
运算* 表示乘法时,称为乘法群;
若群< G, ∗ >还满足交换律, 对∀a, b ∈ G, 有a*b=b*a, 则称< G, ∗ >为Abel群或交换群
设< G, ∗ > 是一个群,I是整数集合。对∀a ∈ G,存在元素g ∈ G,都有一个相应的i ∈ I,能把a表示成, 则称< G, ∗ > 是循环群, g称为循环群的生成元或本原元。
若代数系统< F, +, ∗ > 的二元运算+和*满足:
< F, + > 是Abel群, 其中0是+的单位元
< F - 0, ∗ > 是Albel群
乘法*在加法+上可分配,即对∀a, b, c ∈ F,有 a ∗ (b + c) = a ∗ b + a ∗ c,(b + c) ∗ a = b ∗ a + c ∗ a
则称< F, +, ∗ > 是域
域中每一个非零元素都有一个乘法逆元
七、离散对数和平方剩余
对任意b ∈ {1, . . . , p 1},都存在唯一的i(0 < i < p), 使得b ≡ mod p, 称i为模p下以a为底b的指标,记为i = (b)。
第三章 古典密码
一、代换密码(代替密码/替换密码)
1、凯撒密码
加密代换:y ≡ x + k mod 26
解密代换:x ≡ y - k mod 26
2、仿射加密 /仿射变换
加密代换的数学描述为:c = (m) = am + b (mod 26)
解密代换的数学描述为:m = (c) = (c - b) (mod 26)
3、维吉尼亚密码(第一个多表代换密码)
实质是多重凯撒密码。
4、Playfair密码
首先生成5×5的密钥矩阵(字母不重复),在剩余位置顺序填入其它字母。将I和J视作同一字,或者将P和Q视作同一字。明文两个一组,若字母相同,将X加到第一个字母后,重新
分组。 若最后剩下一个字母,也加入X。如果两字母同行,则各自用它右侧字母代换(字母在最右
方取最左方字母代换)。如果两字母同列,则各自用下侧字母代换。若两字母不同行也不同列,在矩阵中找出另外两字母,使四个字母成为一个长方形四个角。
解密过程:加密过程的逆。
5、Hill密码
二、置换密码(换位密码)
明文字母保持不变,只是利用置换打乱字母位置和次序。
三、代换和置换的交替使用
单纯代换,无论单表还是多表,或者置换密码都是不安全的。交替使用代换和置换,可以大大提高安全性。
四、补充
“隐写术”与密码的区别:
隐写术设法不让别人看到所写的东西,隐写信息通常藏在图片,购物清单,诗文等事物中,密码让别人看到所写的东西却不知道它的真实含义。
第四章 流密码
1、流密码(序列密码)的概念
特征:按位处理信息
2、LFSR
线性+反馈+移位寄存器–LFSR
LFSR基于一个短密钥来产生长的随机密钥流
LFSR的反馈函数f可写成如下形式:f = ⊕ ⊕ . . . ⊕
第五章 分组密码
1、分组密码和扩散、混淆(理解)
分组密码就是将明文消息分组,逐组加密。
扩散:就是将明文统计特性散布到密文中,目的是使得明文和密文间统计关系复杂,使敌手无法得到密钥。 实现方式:使得密文中每一位由明文中多位产生。
在二元分组密码中,可对数据重复执行某个置换再对这一置换作用以一个函数,便可获得扩散。
混淆:是使密文和密钥间统计关系变复杂,敌手无法得到密钥。
实现方式:使用复杂的代换算法可得到预期的混淆效果。
简单的线性代换函数得到的混淆效果不理想。
扩散和混淆目的是抗击敌手对密码系统的统计分析,是设计现代分组密码的基础
2、Feistel结构(掌握)
3、DES,3DES,AES,IDEA设计原理(掌握)
DES:
3DES:抵抗中途相遇攻击使用3个不同的密钥做3次加密,从而可使已知明文攻击的代价增加到。
IDEA:提供3种运算(异或,模加,模乘)结合起来使用。
AES:使用非线性结构的S-boxes,数学基础是有限域GF(28),加法,乘法和x乘三种基本运算。
4、分组密码运行模式(掌握)
5、国产分组密码算法SM4和祖冲之密码的设计原理(理解)
SM4采用8bits的S盒,非平衡Feistel结构。
第六章 公钥密码(全部掌握)
1、公钥密码体制的基本概念
最难解决的两个问题:密钥分发和数字签名。
公钥密码算法的基本工具不是替换和置换,而是数学函数。
公钥密码算法的重要特性:已知密码算法和加密密钥,求解密密钥在计算上是不可行的。
2、RSA的加密和解密算法
产生密钥对:
1. A随机选两个保密的大素数p和q
2. 计算 n=p × q, φ(n) = (p 1)(q 1),其中φ(n)是n的欧拉函数
3. 随机选一整数e(加密指数), 满足1 < e < φ(n),且gcd(e, φ(n)) = 1,即e模φ(n)的乘法逆元一定存在 4. 计算d(解密指数), 满足e · d ≡ 1 mod φ(n), 即d是e在模φ(n)下的乘法逆元, d ≡ mod φ(n) 5. (n, e)为A的公钥公开,d为A的私钥保密
加密:c ≡ mod n
解密:m ≡ mod n
3、Elgamal密码算法
生成自己的密钥对:
1、选择大素数p, p ≥ , G = 是模p乘法群
2、选择G上的本原元g, 即G = {1, g, , , ..., }
3、选择随机数a,1 ≤ a ≤ p - 2, 计算β ≡ mod p
4、公开他的公钥: (p, g, β), 保密他的私钥:(a)
加密:
1、将明文分组, 使每个分组满足m < p
2、对每个分组选择不同随机数k来加密信息, 0 < k < p - 1
3、计算 C1 ≡ mod p, C2 ≡ m ∗ mod p, 丢弃k
4、Aice将密文C = (C1, C2)发送给bob
解密:m = ( mod p
4、Diffie-Hellman密钥交换原理
1、任选大素数p,p的长度≥1024位
2、整数g是循环群的生成元,p和g公开
3、x,y分别是Alice和Bob随机选择的保密的秘密钥, x, y ∈
4、双方交换R= mod p
5、K = (R mod p(K = mod p)
5、背包密码
背包算法中公钥只用于加密, 私钥只用于解密, 因此背包密码算法不能用在签名中。
背包问题是NPC问题。NP问题是指可在多项式时间内验证它的一个解的问题,NPC问题是NP类中“最难”的问题。
补充:
如果一个问题可以找到一个多项式级复杂度的解法,那么该问题就是P问题。
给定一个问题,如果可以在多项式级的时间里去验证该问题的任意给定解是否有效,则该问题是NP问题。
存在这样一个问题,所有的NP问题都可以约化成它,则该问题就是NPC问题。
背包问题就是从A中找出一个子集, 使得子集中元素的和等于s。其中A称为背包向量, s是背包容积 。
6、SM2国产密码算法
SM2是一组椭圆曲线密码算法, 包括数字签名算法和加密解密算法。
第七章 消息认证和哈希函数
1、消息认证的概念,功能,方法(掌握)
身份认证是验证通信对象是原定者而不是冒名顶替者,用于鉴别用户或实体的身份。
消息认证是确认收到的消息不是伪造的或被篡改过的,用于保证通信双方收到的信息的真实性和完整性。
认证和加密的区别在于:
1. 加密用以确保数据的保密性,阻止对手的被动攻击,如截取、窃听等
2. 认证用以确保报文发送者和接收者的真实性以及报文的完整性,阻止对手的主动攻击,如冒充、篡改、重播等
3. 认证往往是许多应用系统中安全保护的第一道设防,因而很重要
作用:(1) 验证消息来源的 真实性,称为消息源认证
(2) 验证消息内容的 完整性(未被篡改)
(3) 验证消息的顺序性和时效性(消息未重排、重放、延迟)
四类手段:对称密码,公钥密码,消息认证码,哈希函数
不能利用对称密码提供数字签名功能。接收方可以伪造消息,发送方可以抵赖发送了消息。
2、消息认证码的设计原理,使用方式,消息认证算法(掌握)
消息认证码是指消息被一密钥控制的公开函数作用后产生的、用作认证符的、固定长度的数值,也称为密码校验和。消息认证算法的输入是任意长度的消息M和一个发送者与接收者之间的共享密钥k,输出是固定长度的消息认证码。
消息认证:
1. 发送方A和接收方B之间共享保密的密钥k 2. 设A要发送给B的消息是M, A先计算消息认证码MAC = (M), 其中 (·)是密钥控制的公开函数
3. A向B发送M’=M||MAC, ||是连接符,表示MAC附在消息之后 4. B收到后进行与A相同的计算,得到新的MAC’, 并与接收到的MAC比较
5. 如果相等,消息认证成功; 如果不等,消息认证失败
数据认证算法Data Authentication Algorithm (DAA)是消息认证码中广泛使用的一个 。
算法基于CBC(密文分组链接模式)的DES算法,又称为CBC-MAC,把被认证的数据分为64比比比特特特长的分组D1, D2, ..., DN,位数不足加填充位, MAC=DAC。
3、哈希函数的概念,满足条件,使用方式(掌握)
Hash函数是将可变长消息M变换为较短定长值H(M),作为认证符, 记为: h=H(M) , 哈希函数是一个压缩函数。
哈希值是消息中所有比特的函数,因此提供了一种错误检测能力,即改变消息中任何一位都会导致哈希值的改变。
哈希函数是公开的, 无密钥的, 但是MAC是有密钥的。
应用:1. 消息认证 生成程序或文档的“数字指纹”;
2.存储口令的散列值;
3.数字签名;
4.快速查询——哈希表。
哈希函数应当满足的条件:
(1) 函数的输入是任意长度;
(2) 函数的输出是定长;
(3) 任意给定消息x,容易计算H(x);
(4) 抗原像攻击(单向性)或抗第一一一原像性:
任意给定h,求使得H(x)=h的x在计算上不可行。这一性质称为函数的单向性,称H(x)为单向哈希函数; (5) 抗弱碰撞性(或抗第二原像攻击):
给定消息x,找y(y ≠ x),使得H(y)=H(x)在计算上不可行。如果单向哈希函数满足这一性质,则称其为弱单向哈希函数; (6) 抗强碰撞性(或抗碰撞攻击性):找任何两个不同输入x,y,使H(x)=H(y)计算上不可行。如果单向哈希函数满足这一性质,则称H(x)为强单向哈希函数。
4、哈希函数算法,如MD5,SHA-1(了解)
如果采用合适的填充方案,并且压缩函数是抗碰撞的,那么哈希函数就也将是抗碰撞的。这种结构称为MD结构,大多数哈希函数如MD5、SHA-1,都采用了这种迭代结构。
MD结构包含一个压缩函数h,有两个输入: 一个是前一次迭代的n位输出,称为链接变量Hi;另一个是消息的n位分组。
5、HMAC的构造方法(了解)
HMAC将消息与密钥进行混合后,通过哈希函数生成认证码,接收方使用相同密钥和哈希函数验证认证码。
6、国产消息认证算法SM3(掌握)
① 消息填充:填充方式同SHA-1, 每个分组512位, 32位1个字, 共16个字
②附加消息长度:以big-endian方式表示填充前消息的长度
③ 对缓冲区初始化:缓冲区为8个32比特的寄存器(A,B,C,D,E,F,G,H),每个寄存器都以big-endian方式存储数据
④以分组为单位对消息进行迭代压缩处理
⑤ 输出: 最后一个分组的输出即为256比特的消息摘要
7、哈希函数的安全性(了解)
压缩函数是哈希函数安全的关键,SM3的压缩函数CF 中的布尔函数FFi 和 GGi 是非线性函数,经过循环迭代后提供混淆作用。
置换函数 P1(x) 是线性函数,经过循环迭代后提供扩散作用, 再加上CF中的其他运算的共同作用,压缩函数CF具有很高的安全性,从而确保SM3具有很高的安全性。
第八章 数字签名和认证协议
数字签名提供消息完整性、认证性和不可否认性(不可抵赖)
消息认证是一方产生认证码,另一方验证完整性和认证性
数字签名是一方产生签名,多方可验证签名(私钥生成签名,公钥验证签名)
加密和签名的顺序问题:
先加密后签名称为内部保密方式:
▶ 内部保密方式只保护消息内容,签名者未必知道签的什么
▶ 骗取签名,非法解密,密文的签名可能被替换
一般采用外部保密方式,即 先签名后加密
▶ 外部保密方式便于解决争议,因为第3方在处理争议时,需得到明文消息及其签名
▶ 先签名后加密,可防止签名替换攻击,不解密就不能验证签名
时间戳还可以保证签名的有效性, 抗抵赖, 阻止签名重用
第九章 密钥分发与密钥管理
密钥管理的基本概念
主密钥用来交换会话密钥,会话密钥短期使用然后丢弃
单钥密码体制的密钥分发方法
保密密钥通过KDC分发或者通过公钥系统分发
公钥密码体制的密钥分发方法 公钥的分发主要通过基于PKI的X.509
第十章 密码协议
1、基本概念
协议的基本要求是有效性、公平性和完整性。
网络上的合作双方之间在身份认证、信任建立上存在着先天性的不足。
2、零知识证明
在交互证明系统中,设P知道某一秘密,并向V证明自己掌握这一秘密,但又不向V泄露这一秘密,这就是最小泄露证明。在最小泄露证明的基础上,如果V除了知道P能够证明某一事实外, 不能够得到其他任何知识, 则称P实现了零知识证明 , 相应的协议称作零知识协议。