现代密码学期末重点(备考ing)

现代密码学期末重点,个人备考笔记哦

    • 密码学概念
      • 四种密码学攻击方法
      • 什么是公钥密码?
      • 什么是对称密码?
      • 什么是无条件密码?
    • 中国剩余定理(必考)
      • 什么是原根
        • 什么是阶
    • 经典密码学
      • 密码体制
      • 什么是列置换?
    • 分组密码
    • 分组密码运行模式
      • ECB电码本模式
      • CBC密码分组链接模式
      • CFB密码反馈模式
      • OFB输出反馈模式
      • DES
        • DES弱密钥半弱密钥?
      • AES(了解)
        • 列混合?
        • 字节代换的作用:是扩散?是混淆?至少20字 (必考)
      • AES与DES扩散的区别?至少五条(必考)
    • 序列密码
      • 多级反馈移位寄存器(序列密码产生密钥流核心部件)
        • 课后作业(师兄说,老登出题的习惯就是偏重课后作业)
      • 线性反馈移位寄存器
        • 线性反馈移位寄存器的破译机制?(应该是做大题)
        • 课后题
      • 伪随机序列发生器怎么产生的?(老登提问)
    • 公钥密码学-RSA
      • RSA算法
        • 解密举例(熟悉公式)
      • RSA加密原理-给个值怎么做?
      • RSA安全机制(了解)未完善。。
    • 公钥密码学--椭圆曲线
      • 椭圆曲线群加法运算
      • ECC椭圆曲线密码体制

密码学概念

在这里插入图片描述
密码技术:把可理解的消息变换成不可理解的消息,同时又可恢复原消息的方法和原理的一门科学或艺术,密码学技术可以使消息的内容对(除发送者和接受者外的)所有人保密

四种密码学攻击方法

唯密文攻击
条件:拥有密文、密码体制和密文信息的一般了解
目的:1.尽可能恢复明文 2.推算密钥破译其他加密消息
在这里插入图片描述

已知明文攻击
条件:许多密文,一些明文-密文对
目的:推算密钥->解密使用同一密钥的密文
在这里插入图片描述

选择明文攻击
条件:一定的明文-密文对,可使用特定明文加密->产生更多密钥信息
目的:推算密钥或算法(使用同一密钥的密文有通用性)
在这里插入图片描述
选择密文攻击
条件:密文和对应解密的明文
目的:密钥和其他密文
在这里插入图片描述

什么是公钥密码?

公钥密码学(也叫非对称加密)是一种使用**一对密钥(公钥和私钥)**进行加密和解密的加密方法。
公钥是公开的,任何人都可以使用它加密信息;而私钥是保密的,只有密钥的拥有者才能使用它解密信息。公钥和私钥是数学上配对的,公钥加密的信息只能用对应的私钥解密

什么是对称密码?

加解密都使用同一密钥

什么是无条件密码?

基于信息论的安全性加密方法,即其安全性不依赖于计算的复杂性或破解的难度,而是通过理论证明确保其无法被破解(计算资源再大也无法破解)
例如:

一次性密码本(One-TimePad,OTP):这是一种典型的无条件加密方法,使用一个与消息等长的随机密钥来加密消息。只要密钥是随机的、一次性使用,并且与消息长度相等,消息就无法被破解,具有无条件安全性

中国剩余定理(必考)

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

什么是原根

定义: 对于一个给定的数 n,如果存在一个数 g,使得通过不断地将 g 进行幂运算(即 g 的不同次方)后取模 n,可以生成所有与 n 互质的数(也就是与 n 没有共同因数的数)的集合,那么这个数 g 就被称为 n 的一个原根
应用于: Diffie-Hellman密钥交换 和 ElGamal加密
理解:求模n的原根?
找出一个数g,使得g的幂次方对n取模后的余数覆盖所有与n互素的数(与n互素只需要找齐比n小的那些即可)

例子:找出模 5 的原根

首先,我们需要找出所有与5互质的数。由于5是质数,除了15本身,所有小于5的数都与5互质。因此,1234是与5互质的数。

接下来,找一个数 g,使得通过不断计算 g 的幂并取模5,能够生成1234这四个数。

尝试 g = 22¹ mod 5 = 2
2² mod 5 = 4
2³ mod 5 = 8 mod 5 = 3
2⁴ mod 5 = 16 mod 5 = 1
通过这个过程,我们得到的结果是2, 4, 3, 1。这覆盖了所有与5互质的数(1, 2, 3, 4),所以 25 的一个原根。

再尝试 g = 33¹ mod 5 = 3
3² mod 5 = 9 mod 5 = 4
3³ mod 5 = 27 mod 5 = 2
3⁴ mod 5 = 81 mod 5 = 1
结果是3, 4, 2, 1,这也覆盖了所有与5互质的数。所以 3 也是 5 的一个原根
什么是阶

定义:对于一个给定的数 g 和模 n,g 的阶是最小的正整数 k,使得 gᵏ ≡ 1 mod n
解释:g 的阶是 g 被不断地乘以自己,直到结果在模 n 下等于 1 所需要的最小幂次 k
判断原根应用:如果一个数的阶等于 φ(n),那么这个数就是 n 的一个原根
在我们的例子中:
φ(5) = 4
2 的阶是 4,所以 2 是 5 的一个原根。
3 的阶是 4,所以 3 也是 5 的一个原根。
4 的阶是 2,不等于 φ(5),所以 4 不是 5 的原根

经典密码学

密码体制

密码体制是六元组
变换即置换
在这里插入图片描述

什么是列置换?

**列置换密码:**明文遵照密钥的规程按列换位并且按列读出序列得到密文
举例:列置换加密------变换即置换
将明文按行写入矩阵,按列读出矩阵
在这里插入图片描述
列置换解密:
在这里插入图片描述

分组密码

什么是分组密码
一种对称加密算法 分为多个固定大小块->同一密钥按块加密->分块组成密文
明文分成固定长度的块(通常为128位、64位等),分别对每个块进行加密处理。
每个分组(块)通过相同的密钥进行加密
最终得到的密文是这些分组加密后的结果

分组密码运行模式

分组密码只能处理固定长度的明文分组,而实际的明文长度通常无法整除分组长度,所以需要采用 分组密码工作模式 来处理更复杂的加密需求

ECB电码本模式

ECB(electronic codebook)最简单的运行模式,发送少量分组数据
1.一次对一个64比特长的明文分组加密,
2.每次的加密密钥都相同(因此明文分组相同则密文分组相同),如图4.10所示。
当密钥取定时,对明文的每一个分组,都有一个惟一的密文与之对应。
因此形象地说,可以认为有一个非常大的电码本,对任意一个可能的明文分组,电码本中都有一项对应于它的密文。

CBC密码分组链接模式

让重复明文分组产生不同的密文分组
原理:输入是当前明文分组和前一次密文分组的异或
解密也因此不同:每一个密文分组被解密后,再与前一个密文分组异或得出真正的明文分组
前后关联的链接式加密缺陷:错误传播–某处加密错误后续解密皆错,但解密时仍只有该处出错
适用:
长度大于64比特的消息、用户鉴别

CFB密码反馈模式

原理:加密过程转化为一种流加密模式->前一个密文块的一部分与当前的明文进行异或来加密数据。反馈机制逐步加密数据流而非一次性加密
加解密对称(即加密解密过程相同)
特点:
1.流加密:按字节进行加密(非块),适合比特或字节形式的数据
2.误差传播

OFB输出反馈模式

消息作为比特流
分组加密的输出与被加密的消息相加
比特差错不容易传播

DES

 明文和密文分组长度为64比特
 算法包含两部分:迭代加解密密钥编排
 Feistel结构(加解密相似):加密和解密除密钥编排(即密钥自己顺序不同)不同外, 完全相同
(思考:1 为什么解密函数不是逆函数?(因为密钥子集是反向的)2 为什么不用逆函数来解密(解密操作可以使用加密的相同结构,只是需要倒序应用密钥子集))
 密钥长度:56比特(DES的密钥空间:2^{56}),每7比特后为一个奇偶校验位(第8位),共64比特
 轮函数采用混乱和扩散的组合,共16轮(轮次写16,包考的)

在这里插入图片描述

DES弱密钥半弱密钥?

必考:弱密钥4个,半弱密钥12个
弱密钥:
EK(m)=Dk(m), 有4个
半弱密钥:
K1不等于K2, 但Ek1(m)=Ek2(m).
至少有12个半弱密钥。
弱密钥:
若密钥 k 使得 加密函数与解密函数一致:Dk§=Ek§对所有明文P成立,即为弱密钥。
解释:明文P+弱密钥k加密=密文Q,则Q+弱密钥k加密=明文P
半弱密钥(成对出现):
存在一对密钥 𝐾1和 𝐾2 ,使得当一个密钥用于加密时,另一个密钥用于解密,会导致加密和解密结果相同。

重点例子,课堂要求:弄清楚16轮中每一轮的明文与明文是什么(鄙人觉得大概率不会考这么复杂)

在这里插入图片描述
IP置换表,初始置换对照下表进行输出。即按照明文第58bit、50bit、42bit的顺序进行输出,该序输出即为置换后的明文
在这里插入图片描述

AES(了解)

老登暗示:AES处理单元为字节,DES处理基本单元为bit

前n-1轮的四个变换组:
字节代换->行移位->列混合->行密钥加

Rijindael(该算法确定为AES标准)特点(作为补充)

  1. 不属于Feistel结构
  2. 加密、解密相似但不对称
  3. 分组长度灵活:支持128/32=Nb数据块大小
  4. 密钥长度灵活:支持128/192/256(/32=Nk)密钥长度
  5. 有较好的数学理论作为基础
  6. 结构简单、速度快
  7. Rijndael的操作简单,并可抵御时间和能量攻击,
  8. 它还有许多未被特别强调的防御性能;
  9. Rijndael内在迭代结构显示良好潜能来防御入侵行为。

概念要熟知

在这里插入图片描述

列混合?

老登布置过作业 ,解答过程太长,暂时赌他不考
学习这个B站视频

字节代换的作用:是扩散?是混淆?至少20字 (必考)

该题由老登上课暗示
答案(GPT给出):是混淆作用,字节代换通过使用S盒进行非线性替换,打乱了明文的比特位模式,增强了密码的安全性。
解释:字节代换是通过非线性替换操作(使用S盒)将每个字节替换为另一个字节,从而改变了明文的每个比特位。这种替换操作使得密文与明文之间的关系变得更加复杂,无法直接从密文推断出明文。通过这一过程,原始数据中的模式被打乱,增加了密码系统的复杂性和安全性

AES与DES扩散的区别?至少五条(必考)

该问题由老师上课暗示,极大概率考
AES与DES扩散的区别:(答案暂由GPT生成)
扩散机制:
DES:通过Feistel结构,采用置换和异或操作进行扩散。
AES:通过替代-置换网络(SPN)结构,采用字节替代和列混淆操作进行扩散。
扩散速度:
DES:扩散较慢,需要16轮才能充分扩散。
AES:每轮加密就产生较强的扩散。
扩散范围:
DES:每轮扩散仅影响数据块的一部分。
AES:每轮扩散整个数据块,扩散更广泛。
轮数与扩散强度:
DES:16轮加密才达到较好的扩散效果。
AES:更少的轮数(10、12、14轮)即可实现强扩散。
数学操作:
DES:依赖于S盒和P置换,扩散效果较为简单。
AES:通过字节替代和列混淆的复杂操作实现强扩散。

序列密码

概念:对称加密算法,它通过生成一个伪随机密钥流(Keystream),将该密钥流逐位或逐字节地与明文进行加密(通常使用异或操作 XOR),生成密文

在这里插入图片描述
主要特点:

  1. 逐位/逐字节加密:
    序列密码按位或按字节处理数据,因此适合实时加密(如音频、视频流)。
  2. 伪随机密钥流:通过初始密钥和随机初始化向量(IV)生成一个伪随机的密钥流,该密钥流长度与明文相同
  3. 对称加密:
    加密和解密使用相同的密钥流:密文=明文⊕密钥流
    解密时:明文=密文⊕密钥流
  4. 高效性:
    由于只涉及异或操作,计算复杂度较低,适合高速数据加密

多级反馈移位寄存器(序列密码产生密钥流核心部件)

在这里插入图片描述

课后作业(师兄说,老登出题的习惯就是偏重课后作业)

在这里插入图片描述

线性反馈移位寄存器

当移位寄存器反馈函数为a1、a2、、、an的线性函数时,称之为线性反馈移位寄存器
如:f(a1,a2,…,an)= cna1 + cn-1a2 + … +c1an(其中常数ci=0或1,+是模2加法)
在这里插入图片描述
m序列的概念:
只要选择合适的反馈函数便可使序列的周期达到最大值2n-1,周期达到最大值的序列称为m序列
注意:线性反馈移位寄存器与特征多项式是一一对应的。即线性反馈移位寄存器与特征多项式可互推

线性反馈移位寄存器的破译机制?(应该是做大题)
  1. 已知序列分析法
    获取一段足够长的LFSR输出序列(称为已知序列),可以利用LFSR的线性特性恢复其反馈多项式和初始状态
    只需要已知序列的长度 ≥2n,即可完全恢复LFSR
  2. 贝鲁克姆普-马西算法(Berlekamp-Massey Algorithm)
  3. 穷举法
    如果LFSR的寄存器长度 𝑛较小,攻击者可以通过穷举所有可能的初始状态反馈多项式进行暴力破解
课后题

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

在这里插入图片描述
该类题目求解见B站视频

伪随机序列发生器怎么产生的?(老登提问)

什么是伪随机序列?
**概念:**如上所提,m序列的周期很长,但是仍然具有周期性。所以不可能是完全随机的(只能要求比周期短的一段泄露时不会泄露更多信息),因此称此序列为伪随机序列。
伪随机序列应满足的条件:
① {ai}的周期相当大。
② {ai}的确定在计算上是容易的。
③ 由密文及相应的明文的部分信息,不能确定整个{ai}。

伪随机序列发生器包括以下结构或算法:

  1. 线性反馈移位寄存器(LFSR)
  2. 非线性反馈移位寄存器NLFSR(非线性函数或者多个LFSR组合)
  3. 基于密码学安全的生成器: 如基于分组密码的AES、DES
  4. 以及上述各方法的组合

伪随机序列发生器的破译

  1. 已知明文攻击
    已知一部分明文和对应的密文,密钥流=密文⊕明文
  2. 相关密钥攻击
    若生成器对类似密钥生成的密钥流有明显的模式或相关性,可分析类似密钥流破译密钥
  3. 状态恢复攻击
    恢复伪随机序列发生器的内部状态(如LFSR的内容)

公钥密码学-RSA

RSA算法安全性依赖于一个事实:将两个大素数相乘十分容易,但对其进行整数分解却极为困难

RSA算法

学习这个视频
在这里插入图片描述

解密举例(熟悉公式)

在这里插入图片描述

RSA加密原理-给个值怎么做?


在这里插入图片描述

RSA安全机制(了解)未完善。。

1) 分解模数n:若模数n = pq被分解,则RSA被攻破
因为若p, q已知,则即可计算
φ(n) = (p – 1)(q – 1)。
再根据关系: ed ≡ 1mod φ(n),即d是e的逆元。
从公开的公钥e求出私钥d,即可解密。
因此,理论上,RSA安全性依赖于整数分解的困难性
2)若从**求φ(n)**入手对RSA进行攻击,它的难度和分解n相当。
已知φ(n)可求秘密素数p、q
在这里插入图片描述

公钥密码学–椭圆曲线

椭圆曲线定义
一般考虑椭圆曲线方程可以简化为
y^2 = x ^3 + ax + b,
小白先看这个视频,了解什么是椭圆曲线
在这里插入图片描述

椭圆曲线群加法运算

部分特殊运算规则,自行补充(我赌不考,就不赘述了)。

在这里插入图片描述
例5.3为老登提示重点例子
在这里插入图片描述

ECC椭圆曲线密码体制

安全性依赖:椭圆曲线上的离散对数问题(ECDLP)
在这里插入图片描述
例5.7为重点例子(老登留的作业)
在这里插入图片描述
明朝著名画家阿邑真迹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949446.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

xinput1_3.dll丢失的解决之道:简单易懂的几种xinput1_3.dll操作方法

在计算机系统和游戏领域中,xinput1_3.dll是一个备受关注的动态链接库文件。它在游戏输入设备的支持和交互方面发挥着至关重要的作用。接下来,我们将详细探讨xinput1_3.dll的各种属性。 一、xinput1_3.dll文件的常规属性介绍 xinput1_3.dll文件名 xinpu…

2025-01-06 Unity 使用 Tip2 —— Windows、Android、WebGL 打包记录

文章目录 1 Windows2 Android2.1 横版 / 竖版游戏2.2 API 最低版本2.3 目标帧率2.3.1 targetFrameRate2.3.2 vSyncCount2.3.3 Unity 默认设置以及推荐设置2.3.4 Unity 帧率托管 3 WebGL3.1 平台限制3.2 打包报错记录 13.3 打包报错记录 2 ​ 最近尝试将写的小游戏打包&#xff…

Deep blind super-resolution for hyperspectral images_译文

关键词: 高光谱图像 盲超分辨率 退化模型 深度学习 摘要 目前单张高光谱图像超分辨率的深度学习方法都是非盲方法,采用简单的双三次退化模型。这些模型泛化性能较差,无法处理未知的退化。此外,RGB图像的盲超分辨率方法忽略了高光…

Visual studio code编写简单记事本exe笔记

安装扩展cmake tools c/c c/c Extension pack CMakeLists.txt cmake_minimum_required(VERSION 3.20) project(NotepadApp)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)# Windows specific settings if(WIN32)set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)s…

Java100道面试题

1.JVM内存结构 1. 方法区(Method Area) 方法区是JVM内存结构的一部分,用于存放类的相关信息,包括: 类的结构(字段、方法、常量池等)。字段和方法的描述,如名称、类型、访问修饰符…

【数电尾灯设计】2022-8-16

缘由数电尾灯设计问题,求解答--CSDN问答 从题目可以列出 000 100 010 111-----------4进制 000 100 010 110 001 101 011 111-----------8进制 由列出可知用16进制芯片的3个引脚可以获得8进制推导出4进制从而可用逻辑处理为4进制实现尾灯功能。之上第一步实现了尾灯…

安卓14无法安装应用解决历程

客户手机基本情况: 安卓14,对应的 targetSdkVersion 34 前天遇到了安卓14适配问题,客户发来的截图是这样的 描述:无法安装我们公司的B应用。 型号:三星google美版 解决步骤: 1、寻找其他安卓14手机测试…

【WRF数据准备】ECMWF 49r1: Soil Variables的变化及WRF模型修正

目录 ECMWF 49r1: Change in soil variablesECMWF 49r1更新的背景土壤变量的主要变化对WRF使用者的影响Github中描述ERA5 Vtable 下载另:原始 IFS 数据-ECMWF 服务器参考2024年12月12日,ECMWF 发布了 49r1 版本的业务 IFS。ECMWF在其49r1循环版本中对土壤变量进行了重要更新。…

一机多实例:如何在一台机器上高效运行多个 MySQL 服务

前言 在实际开发和测试环境中,我们经常需要运行多个 MySQL 实例来模拟不同的数据库环境。例如,在一台服务器上运行多个数据库服务以节约硬件资源,或者同时运行不同版本的 MySQL 进行功能兼容性测试。MySQL 本身支持通过配置多实例运行&#…

源代码编译安装X11及相关库、vim,配置vim(1)

一、目录结构 如下。 所有X11及相关库装到mybuild,源代码下载到src下,解压,进入,编译安装。编译时指定--prefix到相同的目录,即上图中mybuild。 ./configure --prefixpwd/../../mybuild [CFLAGS"-I/path/to/X11…

5. CSS引入方式

5.1 CSS的三种样式 按照 CSS 样式书写的位置(或者引入的方式),CSS样式表可以分为三大类: 1.行内样式表(行内式) 2.内部样式表(嵌入式) 3. 外部样式表(链接式) 5.2 内部样式表 …

【C++】构造函数与析构函数

写在前面 构造函数与析构函数都是属于类的默认成员函数! 默认成员函数是程序猿不显示声明定义,编译器会中生成。 构造函数和析构函数的知识需要建立在有初步类与对象的基础之上的,关于类与对象不才在前面笔记中有详细的介绍:点我…

WPF区域导航+导航参数使用+路由守卫+导航日志

背景:使用ContentControl控件实现区域导航是有Mvvm框架的WPF都能使用的,不限于Prism 主要是将ContenControl控件的Content内容在ViewModel中切换成不同的用户控件 下面是MainViewModel: private object body;public object Body {get { retu…

Unity中 Xlua使用整理(一)

1.安装: 从GitHub上下载Xlua源码 Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. (github.com) 下载Xlua压缩包,并解压将Aseet文件夹中的Xlua和Plugins文件夹复制到Unit…

Matlab仿真径向受压圆盘光弹图像

Matlab仿真径向受压圆盘光弹图像-十步相移法 主要参数 % 定义圆盘参数 R 15; % 圆盘半径,单位:mm h 5; % 圆盘厚度,单位:mm P 300; % 径向受压载荷大小,单位&#xff…

基于Django的学校智能图书馆借书归还订阅管理系统

完整源码项目包获取→点击文章末尾名片!

【设计模式-2】23 种设计模式的分类和功能

在软件工程领域,设计模式是解决常见设计问题的经典方案。1994 年,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(四人帮,GoF)在《设计模式:可复用面向对象软件的基础》一书中系统性地总结了…

阿里云代理商热销产品推荐

在数字化浪潮的推动下,企业对于云计算的依赖日益加深。阿里云,作为中国领先的云计算服务提供商,为企业提供了丰富多样的云产品和服务。本文将聚焦于阿里云代理商热销产品推荐,探讨其如何帮助企业高效利用云资源,加速数…

[redux] 异步逻辑的两种写法

createAsyncThunk | Redux Toolkit 第一种, extraReducers 普通的reducers只能写同步代码 异步必须得用中间件的形式,就是异步代码调用完有结果了, 再调用同步的reducer, 大概这么理解, 第一种怎么用呢? 先用一个异步函数 const fetchUserById createAsyncThunk(users/fet…

在Java中使用有符号类型模拟无符号整数的技巧

有符号整数和无符号整数 有符号整数:可以表示正数、负数和零。例如,Java中的 byte 类型是有符号的,其范围是 -128 到 127.无符号整数:只能表示非负数(即零和正数)。例如,无符号 byte 应该表示的…