现代密码学|密码学基本概念|流密码|分组密码|公钥体制|密码分配与管理|消息认证|数字签名|密码协议

现代密码学

前记:

  • 本笔记由同班的 lfc 同学 和 本人共同总结
  • 虽然密码学很难,但抛去其中数学证明,学习相关概念是很有意思的。尤其对web开发人员,具有相关知识是非常重要的

第一章
1、密码学的基本概念、分类

基本概念

  1. 明文:发送方将要发送的消息称为明文
  2. 密文:明文被变换成看似无意义的随机消息
  3. 加密:上述变换过程称为加密
  4. 解密:将密文恢复出原明文的过程称为解密
  5. 密码员对明文进行加密时所采用的一级规则称为加密算法
  6. 接收者对密文进行解密时所采用的一级规则称为解密算法
  7. 密钥:加密算法和解密算法的操作通常都是在一组有密钥控制下进行的,分别称为加密密钥和解密密钥
  8. 密码分析:通过分析可能从截获的官方推断出原来的明文或密钥,这一过程称为密码分析
  9. 密钥管理:密钥产生、分配、存储、销毁等问题称为密钥管理

分类

  1. 密码体制从原理上可分为两类

    • 单钥(对称)体制:加密密钥和解密密钥相同
    • 双钥(非对称)(公钥 )体制:公钥公开用于加密,私钥私有用于解密。(将加密能力与解密能力分开,可一对多和多对一)
  2. 单钥体制对明文消息的加密有两种方式

    • 流密码:明文消息按字符逐位加密
    • 分组密码:将明文消息分组(含有多个字符),逐组地进行加密
2、安全目标与攻击类型

三大安全目标:

(对比信息安全的五个基本要求)

安全目标包括保护数据安全的不同措施,例如保密性,完整性,身份验证等。但是,保持数据安全的主要目标是防止数据受到各种类型的安全攻击。

  1. 保密性
  2. 完整性
  3. 可用性:在适当的时候可以由授权方访问所有资源,即信息可以被授权实体访问并且按照需求使用的特性,这个就是可用性。(就是信息安全要求中的访问控制)

攻击类型

  1. 攻击类型可分为自然威胁和人为攻击
  2. 人为攻击可分为被动攻击和主动攻击
    • 被动攻击:不对消息做任何修改,难以检测。抗击此攻击的重点在预防而非检测
    • 主动攻击:对数据流进行中断、篡改、伪造等。抗击此攻击在检测,以及被破坏后的恢复
3、信息安全的基本要求

五大基本要求

  1. 保密性:信息不泄露给非授权用户、实体或过程,或供其利用的特性
  2. 完整性:数据未经授权不能进行改变的特性。即信息在存储或传输过程中保持不被修改、不被破坏和丢失的特性。
  3. 访问控制(可用):可以对网络资源的访问进行授权控制,方式是认证
  4. 不可抵赖:防止通信双方中的某一方对所传输的信息的否认
  5. 认证业务:用于保证通信的真实性,使接收者确信消息是由自己所声称的信源发出的
4、凯撒、弗吉尼亚密码
  • 看第6点的单表代换和多表代换的例子
5、Kerckhoffs原则
  • 系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥。这就是著名的Kerckhoffs原则
6、单多表代换与置换密码
单表代换

​ 对每个字母逐个进行代换

  1. 凯撒密码:移位变换,取 3

  2. 移位变换

在这里插入图片描述

  1. 仿射变换

在这里插入图片描述

多表代换

对多个字母同时进行代换。

多表代换密码是以两个以上代换表依次对明文消息的字母进行代换的加密方法。所以对于同一个明文因为位置的不同他所对应的密文也是不一样的。

举个例子:弗吉尼亚密码

  1. 假设明文为:ATTACKATDAWN

  2. 关键词为LEMON (相当于每次用LEMON长度进行代换 )

  3. 则密钥:LEMONLEMONLE(与明文等长)

  4. 加密解密如下:

在这里插入图片描述

置换密码

置换与代换的概念

  • 代换:通过某种规则,将明文的字符替换,生成无任何意义的字符串,即密文
  • 置换:对明文字符按某种规则,只进行位置的置换,不改变原有的字符

例子

(看第一个例子就够了)

http://blog.chinaunix.net/uid-25979788-id-3895844.html

https://blog.csdn.net/lee371042/article/details/79821788

7、频率分析攻击
  • 26个英文字母的出现频率在大量的单词中具有统计规律,如果用简单的代换方式进行加密,那么加密后的官密文仍然保留着字母的频率统计特点。用查频率表的方式,即可知道字母的对应关系
8、我国商用密码举例
  1. SM4(SM系列)
    • 对称
    • 分组
  2. 祖冲之密码

第二章
1、完善保密性

https://www.knowpia.cn/pages/%E5%AE%8C%E5%96%84%E4%BF%9D%E5%AF%86%E6%80%A7

  1. perfect secrecy由香农shannon提出
  2. 具有该性质的密文不应该透露任何明文的信息
  3. 达成该性质的方法:使用大于等于明文空间的密钥空间(密钥空间 >= 明文空间)
  4. 具有完善保密性的密钥长度不可短于被加密的密文
  5. 第4点会造成不便,因此会用流加密或者分组加密,但会缩小密钥空间从而失去完善保密性
2、熵

https://blog.csdn.net/hanshanbuleng/article/details/88778935

基本概念

  1. 热力学中的热熵是表示分子状态混乱程度的物理量,而香农用信息熵的概念来描述信源的不确定度。在信源中,考虑的不是某一单个符号发生的不确定性,而是要考虑这个信源所有可能发生情况的平均不确定性。

在这里插入图片描述

  1. 在信息论中的表示:

    • 当式中的对数的底为2时,信息熵的单位为比特。它底数为其它时,它对应的单位也不一样
    • 信息熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。

基本性质

在这里插入图片描述

重点记这个公式(上面那个通用公式,可以不记,但要知道概念):

在这里插入图片描述

3、一次一密本

One-time Pad;OTP

  • 一次一密是非周期多表代换密码
  • 使用与明文一样长且无重复的随机密钥来加密明文,并且该密钥使用一次后就不再使用。比如用一个剧本作为密码本。
  • 一次一密的安全性是取决于密钥的随机性
  • 但产生大规模随机密钥是一件很困难的事情,目前还没有很好的办法来解决这个问题
  • 密钥分配也是一个难点,由于密钥不允许重复使用,因此存在大量的密钥分配问题。
  • 一次一密在实际中很少使用,主要是用于高度机密的低带宽信道
4、流密码
  1. 长周期
  2. 统计随机
  3. 不可预测
    1. 低相关度
    2. 高线性复杂度
  4. 由足够长密钥产生

在这里插入图片描述

书上的简介:

在这里插入图片描述

基本概念

流密码把信息看成二进制数据流,基本工作原理是把信息中的每一位跟密钥流的每一位进行运算来获得密文。

下面来详细解释一下这句话。

首先,流密码也有一个密钥,常见的是128位,但是加密和解密的时候却不是直接使用密钥,而是使用密钥流,术语叫 keystream 。从密钥获得密钥流的过程,就是一个伪随机数生成过程。把真随机数的密钥做种子,去生成伪随机数作为密钥流。加密时候需要用到的密钥流长度要和信息流的长度相等,密钥流中的每一位和相同位置的信息流的一位,进行异或运算,就得到的密文。

与分组密码的区别

  • 分组密码以块作为每次处理的基本单元,而序列密码则是以一个元素(一个字母或一个比特)作为基本的处理单元。
  • 流密码有记忆性,分组密码没有
  • 流密码对加密的明文没有长度限制,而分组密码如果长度不够,要补充大量无用字符

常见的流算法

  1. RC4 算法
  2. A5 / 1算法

第三章
1、分组密码概念、方法

概念

分组密码(block cipher)的数学模型是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。

设计方法(原则)

  1. 扩散:扩散的是使明文和密文之间的统计关系变得复杂
  2. 混淆:混淆是使密钥和密文之间的统计关系变得复杂
2、Feistel密码结构的特点

https://blog.csdn.net/qq_41683305/article/details/104985468

  • tips:这个结构很重要,回答DES加密也要用到,一定要好好看。其实也 就是第一个图那个公式的理解,即理解每一轮的输入是从哪里来的。
  • 结构名:代换-置换网络结构
  • 非常重点~~

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

影响因素

  • 分组大小: 分组越大则安全性越高,但加密速度就越慢。
  • 密钥大小:密钥越长则安全性越高,但加密速度就越慢。
  • 轮数:单轮结构远不足以保证安全性,但多轮结构可提供足够的安全性。典型地,轮数取为16。
  • 子密钥产生算法:该算法的复杂性越大,则密码分析的困难性就越大。
  • 轮函数:轮函数的复杂性越大,密码分析的困难性也越大。
3、常见分组密码算法

**DES:**Data Encryption Standard

理解Feistel步骤后,再看des就很简单。

唯一的不同是图中框出来的内容。

步骤:

  1. 对原密钥进行置换和移位,生成16轮的的子密钥
  2. 对明文进行初始置换
  3. 轮函数变换与置换:利用生成的子密钥和Feistel结构,进行代换-置换。其中轮函数F利用了S盒进行代换
  4. 将最后输出的结果进行逆初始置换,得到最后密文

在这里插入图片描述

**AES:**Advanced Encryption Standard 是Des的升级版

  • 标准为:Rijndael
  • 中间过程称为状态,也要分组
  • 对称加密算法
  • 轮函数不是Feistel结构:字节代换、行换位、列混合、密钥加,四个计算部件
  • 密钥编排:密钥编排是指从种子密钥得到轮密钥的过程,它由密钥扩展和轮密钥选取两部分组成
  • 分组加密时的分组大小可以变化(填充技术),密钥长度也可以变化
4、运行模式及特点

总述

  1. ECB:Electronic CodeBook
  2. CBC:Cipher Block Chaining
  3. CFB:Cipher FeedBack:实际上可看成流密码
  4. OFB:Output FeedBack:实际上可看成流密码

在这里插入图片描述

分点

0.CTR

  1. CTR - CounTeR, 计数器模式(重点,推荐使用)

特点: 密文没有规律, 明文分组是和一个数据流进行的按位异或操作, 最终生成了密文
不需要初始化向量

在这里插入图片描述

每一个分组都用独立的计数器送入到加密算法,产生的结果与明文异或。

通过对比发现CTR加密即解密,解密即加密,且各分组之间是独立的,可以并发完成,效率高。

1.电码本模式(ECB)

描述:一次对一个64bit长的明文分组加密,而且每次的加密密钥都相同。
用途:传送端数据
特性:若同一明文分组在消息中重复出现,则产生的密文分组也相同
安全性: 长消息时可能不够安全,如果消息有固定结构,密码分析者有可能找出这种关系。

优点 :
 (1)实现简单;
 (2)不同明文分组的加密可并行实施,尤其是硬件实现时速度很快
缺点 :
 (1)相同明文分组对应相同密文分组
 (2)不能隐蔽明文分组的统计规律和结构规律, 不能抵抗替换攻击
应用:
 (1)用于随机数的加密保护
 (2)用于单分组明文的加密

2.密码分组链接模式(CBC) 重点

为了解决ECB的安全缺陷,可以让重复的明文分组产生不同的密文分组,CBC (Cipher Block Chaining)模式就可满足这一要求。

描述:加密算法的输入是当前明文组与前一密文组的异或
用途:传送数据分组;认证;
特性:
1. 明文块的统计特性得到了隐蔽,由于在CBC模式中,各密文块不仅与当前明文块有关,而且还与以前的明文块	及初始化向量有关,从而使明文的统计规律在密文中得到了较好的隐藏。
2. 具有有限的(两步) 错误传播特性
   一个密文块的错误将导致两个密文块不能正确解密。
3. 具有自同步功能
   密文出现丢块和错块不影响后续密文块的解密. 若从第t块起密块正确,则第t+1个明文块就能正确求出。

在这里插入图片描述

3.密码反馈模式(CFB)

	DES是分组长为64比特的分组密码,但利用CFB(Cipher Feed Back)模式或OFB模式可将DES转换为流密码。流密码不需要对消息填充,而且运行是实时的。因此如果传送字母流,可使用流密码对每个字母直接加密并传送。
	流密码具有密文和明文一样长这一性质,因此,如果需要发送的每个字符长为8比特,就应使用8比特密钥来加密每个字符。如果密钥长超过8比特,则造成浪费。

在这里插入图片描述

4.输出反馈模式(OFB)

OFB(Output Feed Back)模式的结构类似于CFB,见图不同之处如下:OFB模式是将加密算法的输出反馈到移位寄存器,而CFB模式中是将密文单元反馈到移位寄存器。

OFB的缺点是它比CFB模式更易受到对消息流的篡改攻击,比如在密文中取1比特的补,那么在恢复的明文中相应位置的比特也为原比特的补。因此使得敌手有可能通过对消息校验部分的篡改和对数据部分的篡改,而以纠错码不能检测的方式篡改密文。

在这里插入图片描述

5.比较

在这里插入图片描述


第四章
1、对称与公钥密码对比

对称密码

  1. 基本工具是代换和置换
  2. 优点:
    • 加解密效率高
  3. 缺点:
    • 密钥数量多
    • 不能抗抵赖
    • 密钥周期短(指更换算法周期)
    • 密钥管理不便

公钥密码

  1. 基本工具是数学函数
  2. 优点:
    • 密钥数量少
    • 可以抗抵赖
    • 密钥周期长
    • 密钥管理更方便
  3. 缺点:
    • 加解密效率低
2、公钥密码体制
  • **Whitefield Diffie **和 Martin Hellman 提出 (这两个人总要记住吧~)
  • 加密密钥和解密密钥是不同的,加密密钥是公开的且从加密密钥推出解密密钥是不可行的。基于这种思想建立的密码体制,被称为公钥密码体制,也叫非对称密码体制,也叫双钥体制。
  • 公钥加密的信息能用私钥解,私钥加密的信息能用公钥解。(不是所有算法都满足,但大部分都满足)
3、RSA算法

算法原理

gcd表示取最大公约数。

记住下面步骤:

(不用管具体的数学关系,知道怎么做就行。如求一个 e , e 和 f(n) 的最大公约数是 1,不用管怎么求最大公约数,直接知道有这个步骤就行,面向对象学习法

  1. 选两个保密大素数 p 和 q
  2. 计算n = p * q , f(n) = (p - 1)(q - 1)
  3. 求一个 e , e 和 f(n) 的最大公约数是 1
  4. 求 e 的逆元 d
  5. 那么 {e,n} 是公钥,{d, n}是私钥
  6. 加密解密就是次方求模而已。看图。

在这里插入图片描述

安全性分析

  1. 大数求模问题:(a x b) modn = [(a mod n) x (b mod n)] mod n (计算机很难表示大数)
  2. 密钥的产生问题。由于p,q是大素数,因此寻找大素数的时间很关键
  3. RSA的安全性是基于分解大整数的困难性的假定
  4. 对RSA的攻击有 共模攻击 和 低指数攻击。(不是因为算法本身缺陷,而是参数选择不当)
4、椭圆曲线密码

优点

  1. 安全性高。对椭圆曲线上的离散对数问题不是有效的
  2. 密钥量小。在实现相同的安全性能的条件下,所需密钥量远比基于有限域上的离散对数问题的公钥体制小
  3. 灵活性好。通过变换曲线参数,可以形成不同的循环群
5、El Ganmal 算法

可以与椭圆密码体制相结合。

在这里插入图片描述


第五章
  • 不论是应付考试,还是学习开发,这些知识都非常重要
1、对称密码密钥分配

KDC:Key Distribute Center 密钥分配中心

密钥分配的基本方法

  1. 密钥由A选取,并通过物理手段发送给B(如面对面)
  2. 密钥由第三方选取,并通过物理手段发送给A和B
  3. 如果A、B事先已有一密钥,则其中一方选取新密钥后,用已有的密钥加密新密钥并发送给另一方
  4. 如果A和B与第三方C分别有一个保密信道,则C为A、B选取密钥后,分别在两个保密信道上发送给A、B

分配的特点

在这里插入图片描述

第四种方法分配的例子

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

密钥分层控制

在这里插入图片描述

会话密钥有效期问题

在这里插入图片描述

无中心的密钥控制

在这里插入图片描述
在这里插入图片描述

2、公钥密码密钥分配

公钥分配方法

1、公开发布

​ 公开发布指用户将自己的公钥发给每一其他用户,或向某一团体广播。例如PGP(pretty good privacy)中采用了RSA算法,它的很多用户都是将自己的公钥附加到消息上,然后发送到公开(公共)区域,如因特网邮件列表。
缺点任何人都可伪造这种公开发布。如果某个用户假装是用户A并以A的名义向另一用户发送或广播自己的公开钥,则在A发现假冒者以前,这一假冒者可解读所有意欲发向A的加密消息,而且假冒者还能用伪造的密钥获得认证。

2、公用目录表

公用目录表指一个公用的公钥动态目录表,其建立、维护以及公钥的分布由某个可信的实体或组织承担,称这个实体或组织为公用目录的管理员。与第1种分配方法相比,这种方法的安全性更高。

该方案有以下一些组成部分:

  • 管理员为每个用户都在目录表中建立一个目录,目录中有两个数据项: 一是用户名,二是用户的公钥。
  • 每一用户都亲自或以某种安全的认证通信在管理者那里为自己的公钥注册。
  • 用户如果由于自己的公钥用过的次数太多或由于与公钥相关的秘密钥已被泄露,则可随时用新密钥替换现有的密钥。
  • 管理员定期公布或定期更新目录表。例如,像电话号码本一样公布目录表或在发行量很大的报纸上公布目录表的更新。
  • 用户可通过电子手段访问目录表,但从管理员到用户必须有安全的认证通信。

本方案的安全性虽然高于公开发布的安全性但仍易受攻击。如果敌手成功地获取管理员的秘密钥,就可伪造一个公钥目录表,以后既可假冒任一用户又能监听发往任一用户的消息。而且公用目录表还易受到敌手的窜扰

3、公钥管理机构

​ 如果在公钥目录表中对公钥的分配施加更严密的控制,安全性将会更强。与公用目录表类似,这里假定有一个公钥管理机构来为各用户建立、维护动态的公钥目录,但同时对系统提出以下要求,即:每个用户都可靠地知道管理机构的公钥,而只有管理机构自己知道相应的秘钥。公钥的分配步骤如下

第 三个步骤:不把A的公钥放在消息中一起传过去的原因是:任何人都可以拿到B的public key,所以3步骤如果放入A的公钥,B没理由相信就是A的公钥,所以需要向kdc申请A的公钥。

在单钥的分配中,因为只有B和kdc有密钥,所以B有理由相信是kdc主导的。

在这里插入图片描述
在这里插入图片描述

1.用户A向公钥管理机构发送一个带时戳的消息,消息中有获取用户B的当前公钥的请求。
2.管理机构对A的请求作出应答,应答由一个消息表示,该消息由管理机构用自己的秘密钥SKAU签名,因此A能用管理机构的公钥验证,并使A相信这个消息的确是来源于管理机构。
4、公钥证书

​ 上述公钥管理机构分配公开钥时也有缺点,由于每一用户要想和他人联系都需求助于管理机构,所以管理机构有可能成为系统的瓶颈,而且由管理机构维护的公钥目录表也易被敌手窜扰。

​ 分配公钥的另一方法是公钥证书,用户通过公钥证书来互相交换自己的公钥而无须与公钥管理机构联系。

​ 公钥证书由证书管理机构CA(Certificate Authority)为用户建立,其中的数据项有与该用户的秘密钥相匹配的公开钥及用户的身份和时戳等,所有的数据项经CA用自己的秘密钥签字后就形成证书

用公钥分配单钥

  1. 简单分配:直接用公钥加密单钥,然后发送给有私钥的一方。

    • 缺少认证,容易被主动攻击
  2. 具有保密性和认证性的密钥分配

    • 前提是双方都拿到了对方的公钥

    • 用双方的公钥进行操作,达到保密和认证两重保证**(妙啊)**。用A的私钥加密M,得到M’,再用B的公钥加密M’,得到M’’ 。这样,对于A的私钥,产生认证的效果;对于B的公钥,产生保密效果。

    • B收到后,先用A的公钥解一次,确认是A发送的,然后用自己的私钥解密,这次达到保密的效果。

    • (保密为主,所以加密时保密在外层)

3、Diffie-Hellman协议

基本概念

  • 密钥交换算法
  • 安全性:求离散对数的困难

原理图

在这里插入图片描述
在这里插入图片描述

步骤

  1. 选取一个大素数p,和它的一个本源根a(不用保密
  2. 用户A、B分别生成两个随机保密整数
  3. A计算YA发送给B,B计算YB发送给A(计算公式在图中)
  4. 两边同时计算K,K即是密钥(计算公式在图中)
4、数字证书

非常通俗,建议认真看看:https://www.zhihu.com/question/24294477?sort=created

数字证书基本概念

数字证书 = 证书内容 + 证书内容Hash值的签名

签名概念:明文,我们称为内容P。然后使用hash算法,对内容P进行hash计算,得到一个hash值H。
然后使用签发机构的私钥对H进行RSA加密,得到签名信息S。这个步骤称为签名。

用hash的作用有两个,一个是缩短加密内容,另一个是防篡改

证书内容如下:

  1. 公钥内容。(网站自定义的公钥,用来与网站作交互)
  2. 签发者ID----谁签发的证书(CA的ID)
  3. Subject----也就是这个证书签发给谁。这里subject和签发者ID相同。(网站的ID)
  4. 有效期
  5. 网站的URL
  6. 其他信息(不同的数字证书会有不同的情况)

流程

前期工作:

提供内容,并申请证书
用Hash生成值,并用私钥签名
公钥内嵌
网站
CA
用户

开始交互:

  1. 用户访问网站
  2. 网站发送CA颁发的证书给用户
  3. 用户验证证书
    • 用户取出证书的内容 和 加密过的hash值
    • 对证书内容进行hash,得到H1
    • 用CA的公钥解密加密过的hash值,得到H2
    • 如果H1 == H2 ,则验证成功,证书内容可信
  4. 而后,取出证书中的网站公钥,进行各种操作

第六章
1、消息认证码

基本定义

​ 消息认证码(MAC:Message Authentication Code)(带密钥的Hash函数:HMAC):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。构造方法由M.Bellare提出,安全性依赖于Hash函数,故也称带密钥的Hash函数。消息认证码是基于密钥和消息摘要所获得的一个值,可用于数据源发认证完整性校验。

能够认证是因为使用了密钥。

能检证完整性校验是因为使用了散列函数。

消息认证码不提供保密性,因为是使用明文传输

使用方式

由于MAC不提供保密,故衍生出三种基本使用方式。(rsa签名体制可对比)

在这里插入图片描述

2、消息认证码构造方法
  • 无资料~~,不是重点
3、散列函数

定义

  • 哈希函数H是一公开函数,用于将任意长的消息M映射为较短的、固定长度的一个值H(M),作为认证符,称函数值H(M)为哈希值或哈希码或消息摘要。、
  • 哈希码是消息中所有比特的函数,因此提供了一种错误检测能力,即改变消息中任何一个比特都会使哈希码发生改变
  • 压缩函数是核心算法

使用方式

有6种基本使用方式:

在这里插入图片描述
在这里插入图片描述

4、散列函数安全性要求

要求

  1. 输入任意长
  2. 输出固定长
  3. x求H(x)容易
  4. H(x)求x不行
  5. 已知H(x)、x, 找出y , H(y) = H(x)不行
  6. 找出任意H(x) = H(y) 不行

在这里插入图片描述

要求作用

  • 在记住每个性质的条件下,知道每个性质的作用

在这里插入图片描述
在这里插入图片描述

5、生日攻击
  1. 第I类生日攻击:利用性质(5)抵抗

    已知一个哈希函数H有n个可能的输出,H(x)是一个特定的输出,如果对H随机取k个输入,则至少有一个输入y使得H(y) = H(x)的概率为0.5时,k有多大?

    • n个输出下:k = n / 2
    • 特别的:m比特输出下,即 n = 2 ^m :k = 2^(m - 1) (n = 2^m)
  2. 第II类生日攻击:利用性质(6)抵抗

    设哈希函数H有2^m个可能的输出(即输出长m比特),如果H的k个随机输入中至少有两个产生相同输出的概率大于0.5,则 k 约等于 2^(m/2)

6、常见散列函数

一般散列函数结构

目前使用的大多数哈希函数如MD5、SHA,其结构都是迭代型的

md5

  • 是迭代型结构
  • 512比特的分组,输出为128比特

5个步骤

  1. 对消息填充
  2. 附加消息的长度
  3. 对MD缓冲区初始化
  4. 分组为单位进行Hmd5(压缩函数) 的处理
  5. 输出,最后一个Hmd5的输出,即产生最终的128比特的消息摘要

sha

和md5一样,都是从md4发展而来,故在结构上很相似。

sha与md5不同之处在于:md5直接用一个消息分组的16个字作为每步迭代的输入,而sha则将输入分组的16个字扩展成80个字以供压缩函数使用。从而使得寻找具有相同压缩值的不同消息分组更加困难

sm3


第七章
1、数字签名

基本概念

  • 数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术数字摘要技术的应用。

产生方式

两种方式:

  1. 由加密算法产生数字签名:利用加密算法产生数字签名是指将消息或消息的摘要加密后的密文作为对该消息的数字签名。

    • 单钥加密
    • 公钥加密(主要)
  2. 由签名算法产生数字签名
    在这里插入图片描述

主要用途

(知道几个,问到说说就行。和第一章安全性要求很像)

  • 防冒充
  • 可鉴别身份
  • 防篡改
  • 防重放
  • 防抵赖
  • 保密性
  • 身份认证,数据完整性,不可否认性及匿名性
2、RSA签名体制

理解了RSA加密,RSA签名很好理解。

  • RSA加密:对明文加密
  • RSA签名:对消息摘要加密,这个过程称为签名

在这里插入图片描述
在这里插入图片描述

3、DSA数字签名标准

在这里插入图片描述


第八章
1、掷币协议
  • 模拟一个公平掷硬币的过程,每个人猜对数的概率都是1/2

在这里插入图片描述

2、承诺协议

在这里插入图片描述

3、不经意传输协议

不经意传输协议,是一种可保护隐私的双方通信协议、接受者的隐私不被发送者所知道,使通信双方以一种选择模糊化的方式传送消息。不经意传输协议是密码学的一个基本协议,他使得服务的接收方以不经意的方式得到服务发送方输入的某些消息,这样就可以保护接受者的隐私不被发送者所知道。

在这里插入图片描述

4、零知识证明协议

https://baike.baidu.com/item/%E9%9B%B6%E7%9F%A5%E8%AF%86%E8%AF%81%E6%98%8E/8804311

  • 证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息,即向外泄露的消息为0。称为零知识证明。
  • 看百科里面几个例子很快明白了~
5、安全多方计算

简单理解:有一个函数f(x1,x2,x3), 有三个人要分别提供三个参数x1,x2,x3 , 共同得出函数 f 的结果。但过程中,x1,x2,x3是不能让别人知道的。
在这里插入图片描述



实验总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


  • 10
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Meow_Sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值