应用密码学期末复习(速通版)

第一章 概述

一、两种被动攻击和三种主动攻击

被动攻击:

        1、信息内容的获取

        2、进行业务流分析


主动攻击:

        1、拒绝服务/中断:攻击信息可用性

        2、篡改:攻击信息完整性

        3、伪造:攻击信息真实性

二、5种安全业务(安全防护措施)

CIA三元组:完整性、可用性、保密性。

1、数据保密

        保护数据防止遭到被动攻击,实际上是防止对信息进行无授权的reading。

2、数据认证

        保证通信的真实性。

3、数据完整性

        保证收到的消息与发出消息一致,实际上是防止或者至少检测出未授权的writing。

4、不可否认性

        防止信道双方中的某一方对所传输信息的否认。包括能够证明信息是另一方发出的以及证明信息已被另一方接收。

5、访问控制

        限制和控制通过通信链接对主机和应用进行访问的能力。

三、安全的网络通信必须考虑4个方面

        加密算法

        用于加密算法的秘密信息

        秘密信息的分布和共享

        使用加密算法和秘密信息以获得安全服务所需的协议

四、理解“保密通信系统模型”

        保密通信系统的组成部分:

        明文消息空间M;

        密文消息空间C;

        密钥空间K,在单钥体制下K_{1}=K_{2}=K,此时密钥K需经安全的密钥信道由发送方传给接收方;

        加密变换E_{k1}:M->C;

        解密变换D_{k2}:C->M。

        (M,C,K,E_{k1},D_{k2})成为保密通信系统,简写一个五元组(M,C,K,E,D)。


        密文c = E_{k1}(m)

        明文m = D_{k2}(c)

        密码分析者,则勇气选定的变换函数h,对截获的密文c进行变换,得到的明文是明文空间的某个元素,计算m' = h(c),如果相等,则分析成功。


Kerckhoff原则:系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥。

五、密钥体制从原理上可分为单钥体制和双钥体制两大类

1、对称密钥体制(单钥体制)

        加密密钥与解密密钥相同,或者从一个密钥很容易推出另一个密钥。

        系统的保密性取决于密钥的安全性,与算法保密性无关。

        对明文的两种加密方式:流密码、分组密码。

        单钥体制不仅可以用于数据加密,也可用于消息认证。


2、非对称密码体制(双钥体制或公钥密码体制)

        1976年,由W.Diffie和M.Hellman提出。

        采用公钥体制的每个用户有一堆密钥(一个公开的,另一个是秘密的)。

        加密密钥和解密密钥不同,从一个密钥推出另一个密钥在计算上是不可行的。

        公钥可以有效实现数字签名,但运算量大,运算速度慢,密钥数位多,密文长度往往大于明文长度。

五种攻击类型(强度依次递增):

        对密码攻击的方式:穷举攻击、统计分析攻击、数学分析攻击、旁路攻击、社会工程攻击。

 第二章 密码学相关数学知识

一、运算及等价类的概念和应用(掌握)

         素数:如果整数p(p>1)的因子只有\pm1和\pmp,则称p是素数。

任一正整数a(a ≥ 2)可以唯一分解成素数幂的乘积
a = p_{1}^{e_{1}} * p_{2}^{e_{2}} * ···p_{t}^{e_{t}}
其中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或者\frac{}{a}, 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
37^{2} ≡ 3^{2} ≡ 9 mod 17
37^{4} ≡ 81 ≡ −4 mod 17
37^{8} ≡ 16 ≡ −1 mod 17
37^{13} mod 17 ≡ 37^{1+4+8} ≡ 3 ∗ ( 4) ∗ ( 1) ≡ 12 mod 17

二、费马定理、欧拉定理、欧拉函数(掌握)

        费马定理:p是素数,a是正整数,且gcd(a,p)=1,则a^{p-1} ≡ 1 mod p。

        费马定理等价形式为:aa^{p-2} ≡ 1 mod p 或者a^{-1} ≡ a^{p-2} mod p。后一种形式给出了一种计算乘法逆元的方法,效率比扩展欧几里德算法低。

应用费马定理计算2^{100} mod 13
2^{100} ≡ =2^{12^{8}} ∗ 2^{4}(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 = p_{1}^{e_{1}} * p_{2}^{e_{2}} * · · · p_{t}^{e_{t}},则φ(n) = n(1 - \frac{1}{p_{1}})(1 - \frac{1}{p_{2}}) · · · (1 - \frac{1}{p_{t}})

计算φ(35) =?
φ(35) = φ(5) ∗ φ(7) = 4 ∗ 6 = 24
计算φ(72)
φ(72) = φ(2^{3}3^{2}) = 72(1 - \frac{1}{2})(1 - \frac{1}{3}) = 24


        欧拉定理: 如果gcd(a,n)=1, 则 a^{\varphi n} ≡ 1 (mod n)

        推论:ord_{n}(a) | φ(n)

        如果n为素数,记为p,则aφ(p) = ap 1 ≡ 1 (mod p),这正是费马定理, 费马定理是欧拉定理的一个特例。这也是RSA加密算法的基础。

a=5, n=12, gcd(5,12)=1
5^{\varphi(12) }5^{4} ≡ 1 mod 12

三、素数检测

        素性检测就是对给定的数检验是否为素数, 素性检测对于很多公钥密码体制和协议中密钥的生成很有用。

        对于gcd(a,n)=1的每一个 a,即使a^{n-1} ≡ 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*2

1=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^{-1} = a^{-1} ∗ a = e ,则称a^{-1}为元素a的逆元

则称 < G, ∗ > 是群。

六、特殊群和域(掌握)

        运算* 表示加法时,称为加法群;

        运算* 表示乘法时,称为乘法群;

        若群< G, ∗ >还满足交换律, 对∀a, b ∈ G, 有a*b=b*a, 则称< G, ∗ >为Abel群或交换群

        设< G, ∗ > 是一个群,I是整数集合。对∀a ∈ G,存在元素g ∈ G,都有一个相应的i ∈ I,能把a表示成g^{i}, 则称< 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 ≡ a^{i} mod p, 称i为模p下以a为底b的指标,记为i = ind_{a,p}(b)。


第三章 古典密码

一、代换密码(代替密码/替换密码)

1、凯撒密码

加密代换:y ≡ x + k mod 26

解密代换:x ≡ y - k mod 26

2、仿射加密 /仿射变换

加密代换的数学描述为:c = E_{a,b}(m) = am + b (mod 26)

解密代换的数学描述为:m = D_{a,b}(c) = a^{-1}(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 = c_{1}a_{n}c_{2}a_{n-1} ⊕ . . . ⊕ c_{n}a_{1}

第五章 分组密码

1、分组密码和扩散、混淆(理解) 

        分组密码就是将明文消息分组,逐组加密。

        扩散:就是将明文统计特性散布到密文中,目的是使得明文和密文间统计关系复杂,使敌手无法得到密钥。                                                                                                                                      实现方式:使得密文中每一位由明文中多位产生。
        在二元分组密码中,可对数据重复执行某个置换再对这一置换作用以一个函数,便可获得扩散。

        混淆:是使密文和密钥间统计关系变复杂,敌手无法得到密钥。
        实现方式:使用复杂的代换算法可得到预期的混淆效果。
        简单的线性代换函数得到的混淆效果不理想。

        扩散和混淆目的是抗击敌手对密码系统的统计分析,是设计现代分组密码的基础

2、Feistel结构(掌握)

3、DES,3DES,AES,IDEA设计原理(掌握)

DES:

3DES:抵抗中途相遇攻击使用3个不同的密钥做3次加密,从而可使已知明文攻击的代价增加到2^{112}

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 ≡ e^{-1} mod φ(n)         5. (n, e)为A的公钥公开,d为A的私钥保密

        加密:c ≡ m^{e} mod n

        解密:m ≡ c^{d} mod n

3、Elgamal密码算法

        生成自己的密钥对:
        1、选择大素数p, p ≥ 2^{1024}, G = Z_{p}^{*}是模p乘法群
        2、选择G上的本原元g, 即G = {1, g, g^{2}, g^{2}, ..., g^{n-1}}
        3、选择随机数a,1 ≤ a ≤ p - 2, 计算β ≡ g^{a} mod p
        4、公开他的公钥: (p, g, β), 保密他的私钥:(a)        

       加密:
        1、将明文分组, 使每个分组满足m < p
        2、对每个分组选择不同随机数k来加密信息, 0 < k < p - 1
        3、计算 C1 ≡ g^{k} mod p, C2 ≡ m ∗ \beta ^{k} mod p, 丢弃k
        4、Aice将密文C = (C1, C2)发送给bob

        解密:m = C_{2}(C_{1}^{a})^{-1} mod p

4、Diffie-Hellman密钥交换原理

        1、任选大素数p,p的长度≥1024位

        2、整数g是循环群Z_{p}^{*}的生成元,p和g公开

        3、x,y分别是Alice和Bob随机选择的保密的秘密钥, x, y ∈ Z_{p}^{*}

        4、双方交换R=g^{x} mod p

        5、K = (R)^{y} mod p(K = g^{xy} 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 = C_{K}(M), 其中C_{K} (·)是密钥控制的公开函数
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实现了零知识证明 , 相应的协议称作零知识协议。

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值