密码学导论复习笔记(北京理工大学)

百度网盘提取链接:https://pan.baidu.com/s/1ZeoX3Eoq_ITeFZq8FL0-TQ?pwd=5d7g 
提取码:5d7g

网站上传图片太麻烦了(o;TωT)o

密码学导论复习笔记

第一章课件

  1. 移位密码(将字母整体向前向后移动):

凯撒密码就是一种移位密码

  1. 代换密码(把一个字母代换成另一个字母):

移位密码是代换密码的一种特殊情况

  1. 科尔霍夫原则(Kerckhoff)

密码系统的安全性并不依赖于加密算法的保密,而是依赖于密钥的安全性

  1. 典型密码攻击:

唯密文攻击:敌手只拥有几个密文串

已知明文攻击:敌手拥有几个明文串以及与之对应的密文串

选择明文攻击:敌手可以自由选择几个明文串并获得与之对应的密文串

选择密文攻击:敌手可以自由选择几个密文串并获得与之对应的明文串

  1. 代换密码的解密:

词频分析法

  1. 仿射密码:

移位密码就是仿射密码中a=1的特殊情况

仿射密码是代换密码的一种特殊情况

那么就会有多个明文对应于同一密文的情况出现。并且a没有逆元了。

  1. 维吉尼亚密码:

维吉尼亚密码就是移位密码的m阶形式

  1. 维吉尼亚密码的唯密文攻击:

两个方法:Kasiski测试法、重合指数分析法

  1. 希尔密码:

  1. 置换密码:      明文之间互换位置

第二章课件

  1. 无条件安全:

即使攻击者有无限的资源,也无法攻破密码体制,那这个密码体制就是无条件安全的。

无条件安全又被称为完善保密

  1. 加密方案:

任何加密方案都包含三步:

  1. 生成密钥
  2. 加密
  3. 解密
  1. 无条件安全的定义:

即知不知道密文对猜测明文没有帮助,即无法从密文获得明文的任何信息

  1. 代换密码是无条件安全的吗?

单表代换一定不是无条件安全的

多表代换有可能是无条件安全的

当不知道密钥长度时,多表代换是无条件安全的

知道密钥长度时,多表代换不是无条件安全的

  1. 无条件安全的等价定义:

并且

换言之,就是无法从密文获得明文的任何信息

或者说,敌手无法区分一个密文是由两个明文中的哪一个加密而来的

  1. 香农定理:

香农定理的通俗理解:要实现完善保密(无条件安全),那么密钥的长度一定要大于等于明文的长度

  1. 计算安全:

攻击者具有有限的资源,很难攻破密码体制,那我们就称这个为计算安全的

有限的计算资源指敌手是概率多项式时间(PPT)的算法

很难攻破密码体制指敌手成功的概率是一个可忽略函数

与完善保密(无条件安全)的区别:

  1. 攻击者能力有限
  2. 攻破密码体制很难,但也不是完全没有可能

第三章课件

  1. 根据科尔霍夫原则(Kerckhoff) ,加密体制安全性依赖于对密钥k的保密性
  2. 伪随机数发生器的性质:

(1)扩展性:扩展随机数长度使之与明文长度相同。

(2)伪随机性:无法区分一段伪随机数发生器生成的随机数和一段真正的随机数

  1. 定理:如果是由伪随机数发生器生成的随机数进行加密,那么加密算法就是计算安全的。

如何证明这个定理?用规约的方法。

假设这个加密算法不是计算安全的,然后进行倒推,最后推出来发现伪随机数发生器生成的随机数不满足伪随机性。产生矛盾,所以这个加密算法计算安全。

但是这个加密算法并不能抵抗选择明文攻击

4.任何确定性的加密算法都不是在选择明文攻击下安全的

确定性算法指的是:同一个明文经过多次加密,得到的密文是相同的

所以,要实现选择明文攻击安全,就必须要引入随机数,使得一次一密。

5.流密码加密算法例子:

祖冲之(ZUC)加密算法是一个同步序列加密算法。

  1. 序列密码就是流密码
  2. 一次一密算法是完善保密的。

第四章课件

  1. 流密码:

利用伪随机数发生器,生成一段与明文等长的密钥,与明文异或得到密文

流密码算法的安全性依赖于伪随机数发生器的伪随机性

  1. 分组密码:

先对明文进行分割,然后利用伪随机数函数对每一段明文进行加密

伪随机数函数:

算法一般使用混乱与扩散技术,以实现伪随机数函数

伪随机数函数类似于伪随机数发生器,但不需要扩展长度

分组密码的安全性依赖于伪随机函数的伪随机性

  1. 伪随机数函数与真正的随机数函数:

伪随机数函数共有2n种映射

真正的随机数函数有

种映射

定义伪随机数函数:如果一个PPT的算法无法区分伪随机数函数与一个真正的随机数函数,那么这个就是伪随机数函数。

  1. 分组加密算法的构造:

构造方法有两种,分别是代换-置换网络(SPN)和菲斯特尔网络(Feistel)

雪崩效应:

明文或者密钥的某一比特发生变化,会导致密文的很多比特发生变化

加密算法要引起雪崩效应,才能说明算法构造完成

  1. 分组加密算法例子:

DES、AES、SM4

其中AES是SPN结构的

DES、SM4是Feistel结构的

  1. 常见的分组加密算法:

ECB:

但要注意,ECB不是唯密文攻击安全的,也不是选择明文攻击安全的

CBC、CFB、OFB、CTR、

  1. 本章需掌握方法:

用扩展的欧几里得算法求逆

例子:

第五章课件

  1. 安全有三方面:
  1. 保密性:敌手无法从密文中获取明文的任何信息
  2. 完整性:接收方在收到消息后可以验证消息是否被篡改
  3. 不可抵赖性:发送方无法抵赖说消息不是自己发送的

保密性的实现是通过加密

完整性的实现是通过消息认证码(MAC)

不可抵赖性的实现是通过身份认证和数字签名,身份认证和数字签名也可以实现完整性。

  1. 消息认证码算法包括三步:
  1. 生成密钥
  2. 对消息生成MAC标签
  3. 验证标签
  1. 消息认证码的攻击实验:

先获取一大堆消息和与之对应的MAC标签,然后试试看能不能自己生成一个没出现过的消息和与之对应的MAC标签,若成功生成了,那么攻击成功

  1. 构造消息认证码的算法

(1)采用分组加密算法

一般采用CBC加密模式

先看CBC加密算法:

再看CBC-MAC算法:

(2)也可以采用hash(哈希)函数生成消息认证码

5.  hash(哈希)函数

三个性质

强碰撞更容易找到,因为只要找到一个弱碰撞,即找到另一个M使得他的哈希值与另一个M的哈希值相同的话,我们也就找到了一个强碰撞

所以强碰撞更难抵抗,对消息hash函数的安全性要求更高

三者关系如下:

  1. 生日攻击

生日攻击本质上是为了找到一对强碰撞

  1. 如何构造hash函数
  1. M-D(Merkle-Damgard)结构

  1. 海绵结构(Sponge)
  1. 安全hash算法
  1. SHA-1:采用的是MD结构
  2. SM3(我国研发的算法):采用的也是MD结构
  1. 利用杂凑函数构造MAC方案
  1. 直接用hash函数生成

,但这种方案不安全

  1. NMAC
  2. HMAC
  1. MAC算法的另一个伟大用途——抵抗选择密文攻击(CCA)

通俗原理讲解:先找一个能抵抗选择明文攻击(CPA)的加密方案,然后对这个方案进行略微修改,即在原先的密文后面加一个密文的MAC值,这样攻击者就无法创造密文(为什么攻击者无法创造密文了?因为创造密文的MAC值需要用到私钥,攻击者没有私钥),直接把攻击者发送密文的能力废掉,使攻击者的能力降低为选择明文攻击

  1. 若方案是CCA安全的,且攻击者无法制造密文,则称此方案为认证加密方案。
  2. 认证加密模式
  1. OCB
  2. GCM

第六章课件

  1. 对称加密与非对称加密:

对称加密指加密密钥与解密密钥相同

非对称加密指加密密钥与解密密钥不同,加密密钥是公钥,是公开的,解密密钥是私钥,是保密的

  1. 公钥密码体制是一种陷门单向函数

  1. 重要数学知识

扩展的欧几里得算法(必须要掌握,后面要一直用到)

如何判断一个数是否为生成元?

  1. RSA

为什么要求e和欧拉函数φ(n)互素?

因为不互素的话,e就没有逆元d了。

RSA的安全性是基于大正整数分解这一数学难题的,因此n=pq一定要足够大

如何提高RSA的效率?

  1. 平方-乘算法

  1. 蒙特卡洛算法和拉斯维加斯算法

蒙特卡洛算法:一定能得到解,但解不一定正确

拉斯维加斯算法:不一定能得到解,但得到的解一定正确

偏是的蒙特卡洛算法:

当回答是的时候:解一定正确

当回答否的时候:解不一定正确

特殊的:Miller-Rabin算法对于合数是一种偏是的蒙特卡洛算法

因为当Miller-Rabin回答一个数是合数的时候,那说明它就找到了那个数的一个因子,所以这个数就一定是合数

但是Miller-Rabin对于素数来说是一种偏否的蒙特卡洛算法

因为当Miller-Rabin回答一个数是素数的时候,它可能只是没有找到那个数的因子,因此这个数有可能还是合数

  1. 二次剩余

若a是二次剩余,则a=y2有解

比如说4就是二次剩余,因为4=(+-2)2

  1. 欧拉(Euler)准则

  1. 在公钥密码学中EAV和CPA的强度是一样的,因为公钥是公开的
  2. 对RSA的攻击

  1. 中国剩余定理

例子:

  1. Rabin

n=pq

为什么p和q是私钥,要保密?

因为解密的时候要用到p和q

怎么解密?用中国剩余定理,下面给出一个例子

假设n=21,p=3,q=7

接收方收到密文为16

最终解密出来四个答案:4、10、11、17

所以明文中要有冗余信息,来告诉我们到底是四个中的哪一个

  1. RSA和Rabin都是基于大整数分解难题的
  2. 为什么非对称加密算法比对称加密算法慢?

这是因为对称加密主要的运算是位运算,速度非常快,如果使用硬件计算,速度会更快。但是非对称加密计算一般都比较复杂,比如 RSA,它里面涉及到大数乘法、大数模等等运算。

第七章课件

  1. ElGamal是基于离散对数问题的

椭圆曲线上的ElGamal是基于椭圆曲线上的离散对数问题的

  1. ElGamal

  1. Diffie-Hellman问题
  1. 计算Diffie-Hellman(CDH)

  1. 判断Diffie-Hellman(DDH)

  1. ElGamal安全性

  1. ElGamal的解密

  1. 群、环、域

  1. 椭圆曲线

解的情况:

椭圆曲线上点的性质,每一个点都是生成元

  1. 椭圆曲线上的ElGamal

第八章课件

  1. 数字签名算法包括三个子算法
  1. 生成密钥
  2. 签名
  3. 验证
  1. 攻击类型
  1. 唯密钥攻击
  2. 已知消息攻击:

攻击者拥有一些消息的签名

  1. 选择消息攻击:

攻击者可以自由选择一些消息的签名

  1. 攻击目标
  1. 选择性伪造:

可以创造出任何消息的签名

  1. 存在性伪造:

可以伪造出一个消息的签名,但是这个伪造出来的签名可能没什么用

  1. 能够抵抗选择消息攻击的定义:

攻击者可以自由选择一些消息的签名,但是无法伪造出没有查询过的消息的签名

  1. 数字签名是为了保证不可抵赖性,所以数字签名算法都是用发送者的私钥进行签名,由接收方用公钥进行验证,这点和加密刚好反了
  2. RSA签名算法

但是这个方案明显是错误的,因为公钥是大家都知道的,所以很容易伪造签名

因此我们就可以借用hash函数的单向性,对hash(x)进行签名

RSA签名方案是用消息的哈希值去签名,而不再是直接用消息去签名了。

  1. ElGamal签名方案
  1. 由于ElGamal签名中有随机数,所以ElGamal签名方案是非确定性的

  1. 数字签名算法(DSA)
  2. Schnorr签名算法
  3. 椭圆曲线数字签名算法(ECDSA)

注:这些签名算法都不用记具体算法步骤哈,考试会给出,只要知道怎么按照步骤算就行了

第九章课件

  1. 数字证书有什么用?

举个例子,当我向你发送一个公钥的时候,你怎么确定这个公钥到底是我的,还是其他人的

数字证书就是起到了这个作用,它将一个人的公钥与一个人的身份信息绑定在了一起

由一个权威机构用机构的私钥对你的公钥进行签名,形成一个证书。然后其他人想要验证这个公钥到底是不是你的时候,他就可以用那个权威机构的公钥对那个签名进行验证,验证成功,说明这个公钥就是你的

换句话说,数字证书就是起到了身份认证的作用,类似于我们生活中的指纹和身份证

  1. 数字证书的安全性
  1. 任何拥有权威机构(CA)公钥的人都可以验证数字证书的有效性
  2. 除了权威机构(CA)外,任何人都不能够伪造数字证书
  3. 因此,数字证书的安全性依赖于权威机构(CA)私钥的保密性
  1. 数字证书的应用

第十章课件

  1. 协议的定义

  1. 实体认证协议和消息认证码、数字签名的区别

目标不同:实体认证协议是为了确认实体身份

  而消息认证码、数字签名是为了确认消息源

  1. 协议攻击的判定方式

因此,下图所示就不是一种协议攻击

C只对消息进行了存储和转发,类似于路由器,并不满足以上两条的任意一条

  1. 对称密钥—基于MAC

此种方案显然不安全,因为中间的敌手可以冒充A或者B

如图所示

若对此方案进行改进

此方案就是安全的

  1. 如何定义协议的安全性

如果一个敌手可以攻破此协议,那么这个敌手就可以攻破此协议中的算法。

但是因为之前已经证明过算法安全,故敌手不可以攻破此协议,协议安全。

  1. 双向实体认证协议

一个直觉上的方案

但是此方案是不安全的,如下图所示

对此方案进行改进

  1. 公钥环境下的挑战-响应方案

此协议是安全的

  1. 身份认证方案具体例子

Schnorr、Qkamoto、Guillou-Quisquater、GQ

第十一章课件

  1. 长期密钥

长期密钥指预先计算并安全存储的密钥,长期使用,可以是对称密钥,也可以是私钥。

  1. 会话密钥

会话密钥指每次会话中使用的密钥,会话结束就会把该密钥丢弃。

  1. 由于公钥体制相对于对称密钥加密慢很多,所以一般使用对称密钥加密。
  2. 密钥预分配

内容:TA 以一种安全的方式为网络中的每个用户“提前”分发密钥信息,注意密钥分发时需要一个安全信道。

本质:

4.1Diffie-Hellman KPS方案

本质是离散对数问题,基于CDH难解

4.2 Needham-Schroeder 会话密钥方案

注意:因为有第四第五步,所以此方案是显式密钥确认。

4.3已知会话密钥攻击的概念

敌手可以得到一些会话中的密钥,并借此推断出其他会话中的密钥。

所以如果要抵抗会话密钥攻击,就需要各个会话密钥彼此独立。

4.4Kerberos 密钥分配方案

相对于之前的NS(Needham-Schroeder)加入了密钥的有效期。

该方案也是显式密钥确认。

由于加入了L(密钥的有效期),所以此方案能抵抗会话密钥攻击。

4.5Bellare-Rogaway 方案

该方案是隐式密钥确认。

引入随机数是为了抵抗密钥会话攻击。

  1. 密钥协商

本质:不需要TA的参与,而是大家一起通过一个协议协商出密钥。

5.1Diffie-Hellman 密钥协商方案

该方案存在一个明显的中间人攻击

5.2简化的端 - 端密钥协商协议

通过加入签名抵抗中间人攻击

为什么能抵抗中间人攻击?

因为中间人没有U和V的私钥,无法伪造签名。

5.3MTI/A0 密钥协商方案

该方案引入了长期密钥

对该方案存在着一个三角攻击

6.群组密钥分配和群组密钥协商

特点:1.群组需要有共同的会话密钥

2.当某个用户加入/撤销时,TA 逐个对所有群组内的用户进行密钥更新

目标:一个新用户加入后看不到加入之前的消息;一个用户退出后看不到退出后的消息

6.1逻辑密钥树(LKH)

特点:每个叶子结点都知道它到根节点路径上的所有结点密钥

用户加入:

只需要更新新节点到根节点路径上所有节点的密钥

用户撤销:

逻辑密钥树(LKH)是无状态的

6.2无状态和有状态的定义

显然逻辑密钥树(LKH)不需要因为撤销一个用户而更新其他用户的密钥,所以是无状态的

6.3 Steiner 树

此方案也是无状态的,因为随着用户的撤销,并不是每个节点的密钥都要变化,可以是其路径上的祖先节点的密钥发生变化即可。

13.1

  1. 双线性配对具有如下性质:

双线性、非退化、可计算

13.2

  1. 代理重加密

14.1

  1. 比特承诺包括两个阶段

承诺阶段:发送方A选择一个比特b(0或1),并把能表示该比特的消息c发送给B

打开阶段:发送方A把能打开承诺的d和比特b发送给B,B用d打开承诺c,并与比特b进行比较,验证是否为比特b

  1. 隐藏性和绑定性

隐藏性:接收方B不能从消息c中获取关于比特b的任何信息

绑定性:发送方不能在打开阶段改变自己之前承诺的比特

因此,承诺阶段要满足隐藏性,打开阶段要满足绑定性。

注:1和2,老师说很有可能会考

  1. 散列函数方案

隐藏性在哪里得到保证?绑定性在哪里得到保证?如果不发送随机数会怎么样?如果只发送一个随机数会怎么样(并且第三步中不把r1发给B)?

  1. 因为哈希函数具有单向性,无法从H(r1||r2||b)中获取关于b的任何消息,所以保证了隐藏性。
  2. 因为第三步中发送了r1,如果A想要在打开阶段修改b的值的话,那他就要找到r2’||b’使得H(r1||r2||b)=H(r1||r2’||b’),而由于哈希函数是抗第二原象碰撞的,所以无法修改b的值,保证了绑定性。
  3. 由于b的值只有几种情况,那么B就可以将每个b的哈希值都计算出来,最终就能确定b,不满足隐藏性。
  4. 此时若A想要修改b的值,只需找到H(r1’||b’)=H(r1||b)即可,所以现在A只需要找到一组强碰撞即可,而找强碰撞是比找弱碰撞是要更加简单的,所以安全度会降低。
  1. 伪随机数发生器方案

隐藏性的实现:对B来说,c就是一串随机数,当然无法从c中获取m的任何信息

绑定性的实现:如图中分析

5.Pedersen承诺

隐藏性的实现:因为r是随机数,所以c对于B来说也是随机数,B无法从c中获取关于b的任何信息。

绑定性的实现:若A在打开阶段要改b的值,设gt=y,那他就是找到g(r+bt)=g(r+b’t)而该问题是基于CDL问题难解的

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值