密码学复习(上)_密码反馈模式

一、密码学概述

密码学定义

密码学与信息安全:

攻击:

密码学分类

密码编码学:

对称密码体制

非对称密码体制:

保密体制模型:

密码分析学:

密码体制的攻击类型:

不同时期的密码学

二、古典密码学

1.置换密码

置换

周期置换

列置换

2.代换密码

补充数论、模运算知识

单表代换密码

多表代换密码

3.古典密码的分析

三、分组密码

1.分组密码(块密码)概述

分组密码的设计要求

分组密码的设计原则

Feistel网络

SP网络

2.DES

DES的安全性

3.AES

4.分组密码的工作模式

电子密码本模式(Electronic Code Book, ECB)

密码分组链接模式(Cipher Block Chaining,CBC)

密码反馈模式(Cipher Feedback Block,CFB)

输出反馈模式(Output Feedback Block,OFB)

计数器模式(Counter,CTR)

错误影响


一、密码学概述

密码学定义

密码学一种狭义定义:

是一种保密通信技术,通过对信息进行加密和解密,在第三方监听的情况下,实现信息的安全传输。

广义上讲,密码学不只是保密通信技术,已经延伸至信息安全诸多领域(是信息安全的基础和核心)

如:

数据完整性检测

消息认证

数字签名

更多地 :

保密通信、存储加密、用户身份验证、区块链、隐私计算、零知识证明、安全多方计算

听起来很高大上,但其实大部分核心技术就是用之后讲的哈希函数。。。

在狭义密码学中,根据定义,自然离不开明文–加密–》密文-- 解密–》明文的过程。

与国际接轨,常用英文来表示(之后会经常用到)

消息:

明文 (Plaintext) 常用p表示

密文   (Ciphertext) 常用c表示

算法  :

使用密钥  一般用k表示

加密(Encryption) 加密函数一般用 E()表示  c=E_{k}§

解密  (Decryption)  解密函数一般用 D( )表示   p=D_{k}(c)

密码学与信息安全:

经典信息安全三要素:  机密性、完整性、可用性 confidentiality、Intergerity availability

(CIA!!)

拓展:机密性,完整性,可用性,隐私性,可认证性与可信赖性,不可抵赖性,可说明性,可审计性。

其中与密码学相关的:机密性,完整性,可用性,认证性、不可抵赖性

攻击:

如图所示

中断 (拒绝服务)阻止或禁止通信设施的正常使用两种实现方式:1.攻击者删除传输过程中某个地方的链接。2.DDos,对特定目标滥发消息使之过载

截取

篡改

伪造

重放    是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的

对安全性的攻击

中断:  可用性

截取:机密性

篡改:完整性、真实性、有序性

伪造、重放:认证性

分类:

被动攻击:截取。通常难以检测

主动攻击:中断、篡改、伪造、重放。是指攻击者对连接中通过的协议数据单元进行各种处理

密码学分类

密码学的技术分两部分,一个是密码编码学、一个是密码分析学。

密码编码学研究如何对信息编码以实现信息和通信安全

密码分析学研究如何破解或攻击受保护的信息

密码编码学:

从安全目标来看,分为保密体制和认证体制

根据使用密钥策略,分为对称密码体制和非对称密码体制

对称密码体制

密钥完全保密,加密密钥和解密密钥相同,或根据一个可以很容易推出另一个

优点:

运算速度比较快、密钥相对较短、密文长度往往与明文长度相同

缺点:

密钥分发需要安全通道、密钥量大,难以管理(不同人给的密钥要不同)、难以解决不可否认问题

非对称密码体制

使用两个密钥:一个公钥对外公开,一个私钥只有拥有者知道 理论上不能从公钥推出私钥

例如电子邮件机制:任何人可以用接收者的公钥进行加密(找到接受者的邮箱地址发送),接收者用私钥解密(登录账号密码,来查看邮件)

加解密算法和数字签名算法

优点:

密钥分发容易、密钥管理简单、可以有效实现数字签名

缺点:

运算速度较慢、密钥位数相对多些、密文长度往往大于明文长度。(??学到时再回来看)

保密体制模型:

明文空间P:所有可能的明文

密文空间C:所有可能的密文

密钥空间K:所有可能的密钥    K1 加密密钥空间 K2 解密密钥空间

加密算法   c=E_{k}§

解密算法   p=D_{k}(c)

密码分析学:

现代密码学的密码系统设计必须遵循柯克霍夫原则,秘密必须完全寓于密钥中,加密和解密的安全性取决于密钥的安全性,加密解密算法是公开的。只要密钥安全,攻击者就无法得到明文。

安全性分为无条件安全性(理论安全性)和有条件安全性(实际安全性)

密码体制的攻击类型

在不知道密钥的情况下,不同条件下的攻击

唯密文攻击:只知道一定数量密文

已知明文攻击:除了一部分密文,还有一些明密文对

选择明文攻击:对任意明文可得到其密文,比如掌握加密机时

选择密文攻击:对任意密文可得到其明文,比如掌握解密机时

选择文本攻击:  选择明文和选择密文的结合,同时掌握加密机和解密机时

不同时期的密码学

按照1949年香农发表的那篇论文《保密系统的通信理论》为分界

古典密码学:主要分为代换式密码和置换式密码两大类

现代密码学:计算机的出现提供了新的加密技术,也提供了破译密码的新武器
主要有 对称密码体制下的分组密码,序列密码

二、古典密码学

主要通过置换和代换的简单方式实现

1.置换密码

置换:根据一定的规律重新排列明文,一遍打破明文的结构特性。

本质是X域上的双射函数 \sigma:X\rightarrow X

常见的有列置换和周期置换两种

置换

表示方式:

密钥空间大小为 |x|!

逆置换:\sigma函数的逆函数\sigma^{-1}

\sigma得到\sigma^{-1}

1.双行表示法的上下颠倒,重新排序

2.循环表示法每个括号第一个不变,其余颠倒

置换的组合  \tau o \sigma 类比函数关系的组合

周期置换

密钥:

m
个元素
集合的一个
置换
σ

加密:

明文
p
按固定长度
m
分组,对每个分组用
σ
进行置换,将各分组重新组合得到密文
c

解密:
将密文
c
按固定长度
m
分组,对每个分组用
σ
的逆置换
σ
-1
进行置换,将各个分组重新组合得到明文
p

使用
矩阵形式
表达更易于操作

列置换

明文按照密钥的规则按列换位并且按列读出明文序列得到密文

2.代换密码

将明文中的字符替换为其他字符的密码体制

所采取的代换机制本身就构成了密钥,通常是一个代换表

按一个明文字母是否总是被一个特定的字母代替进行划分,分为:

单表代换

多表代换

补充数论、模运算知识

对任意正整数m,整数n,存在唯一的q,r 使 n = qm + r 成立

q称为商(quotient),r称为m除n的余数(remainder)

r=0时

m整除n,写作 m | n

m称为n的因数或约数(divisor),n是m的倍数(multiple)

若r!=0 则m \nmid n

素数或质数:因数只有1和自身的大于等于2的正整数

合数:不是素数的大于等于2的正整数

0,1 既不是素数也不是合数

最大公约数  m,n约数中最大的 记作gcd(m,n)

互质 :gcd(m,n)=1 (素数之间一定互质,互质的不一定是素数)

最小公倍数  m,n共同的倍数最小的  lcm(m,n) =m*n/gcd(m,n)

任意一个大于1的正整数都可以分解为一串素数的乘积,分解是唯一的

线性同余

m,n互质,存在整数x,y 使 mx+ny=1

同余定理

a≡b(mod m)

如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余

完全剩余系   完全剩余系内的加乘运算

乘法逆元

对于模运算的除法,都用乘法逆元转化为乘法(小数无法取模啊)

简化剩余系

欧拉函数

ax+by=gcd(a,b),求x,y

裴蜀定理

利用拓展欧几里得算法

费马定理求逆元 前提p是质数

费马小定理 a^(p-1) 模p 与1同余

a mod p的逆元 就是 a^(p-2)mod p

p不是质数是用拓展欧几里得ax+by=1 算

b*i mod p x b*i*xmod p

(r了,写到这垃圾csdn出了bug没自动保存还退回去了?,就写个简化版的算了)

单表代换密码

1.基于密钥的单表代换密码

给出一串无重复字母的字符串,明文a,b,c,d…依次对应于该字符串,明文中后面的其他字母顺序对应于剔除了该字符串的字母表

密文空间=明文空间=26

密钥空间=26!

2.仿射密码

是一个线性变换

y\equiv(x)\equiv ax+b \mod(26),gcd(a,26)=1

称e(x)为仿射加密函数

要求a与26互素,不然会有两个数被加密为同一个密文

凯撒密码 : a=1,b=3 (是移位密码,仿射密码的特例)

密钥空间:12*26=312

逆变换:

x\equiv d(e(x))\equiv a^{-1}(e(x)-b)(mod\26)

注意!:az被映射为数字025 a对应0

多表代换密码

明文消息中出现的同一个字母,不是完全被同一固定的字符代换,而是根据其出现的位置次序用不同的字母代换。

代换既取决于具体字母,也取决于字符的相对位置(不同的地方用不同的代换表)

多表代换中有理论上的非周期多表代换密码,实际使用的都是周期多表代换

周期为1时就成了单表代换(不同地方使用同一代换表)

密钥空间
K={
一个分组内所有字母组合间的所有置换
}

|
K|=
(
26^{n}
)!

如果代换表序列是非周期的无限序列,则相应的密码称为非周期多表代换密码,称为一次一密密码。(序列密码的一种)

优点:能更好抵抗统计密码分析

1.Playfair密码

2.维吉尼亚密码

每一分组密钥空间为   26^{n}  (置换是固定的)

查表法

或者用模运算实现

  1. 希尔密码

明文按n分组

密钥矩阵: n*n的非奇异矩阵 且gcd(det(k),26)=1

矩阵的行列式满足和26互质,则存在模26下的乘法逆元(逆矩阵存在)。

加强版的希尔密码  补充常数项,c=mk+b

4.轮转密码机

目的:通过转轮的转动来实现复杂的多表代换,从而打破明文与密文之间的固定替代关系

三个转速不一的转轮构成:慢轮子、中轮子、快轮子。每个轮子是一个代换表

一个周期内,不同位置的相同明文代换成不同的密文

快轮子转一圈,中轮子转一个

中轮子转一圈,慢轮子转一个

密钥周期为26*26*26log_{2}((2^{n})!)

解密时密文倒着解密,密码机倒着转(一步一步恢复状态)

3.古典密码的分析

单表密码和部分多表代换密码可以用统计分析法进行唯密文攻击,Hill密码等需要用已知明文攻击

三、分组密码

明文、密文和密钥都采用二进制编码
,也就是字符集是简单的
0

1

1.分组密码(块密码)概述

将明文消息编码的表示后二进制序列,划分成固定大小的块,每块分别在密钥的控制下变换成等长的二进制序列

注:传统密码也分组,但不是分组密码

分组密码属于对称密码体制

分组密码的设计要求

明文密文分组长度相同即可。

分组长度
n
要足够长,即
明文空间大小
2
n
足够大(防止明文穷举攻击)。

密钥长度
t
要足够长,即
密钥空间大小
2
t
足够大(防止密钥穷举攻击)。但亦不能过长,否则影响
加解密速度

密钥管理

由密钥
k
确定的明文空间到密文空间的映射
e_{k}:P->C
足够复杂(注:
e_{k}
可认为是
2^{n}
个元素上的一个置换)。

已知密钥时
的加解密运算简单,便于软硬件的快速实现。

密文空间与明文空间都是2^{n}

理想分组密码是每种输入都会被代换成唯一的输出,因此密钥空间是2^{n}!,对应的密钥长度是

log_{2}((2^{n})!)

实际的密钥长度和分组长度差不多,密钥空间为2^{k},就是说对任意的密钥,一种明文不会加密成所有的密文

分组密码的设计原则

扩散(Diffusion
):

明文和密文间的
统计特性尽可能复杂
,使得使得一比特明文的变化尽可能多的影响到输出密文的比特,以
隐藏明文的统计特性

理想状态下,明文改变一比特,密文里改变大约一半比特位。同样,密文改变一比特,相应的明文改变大约一半比特位。

混乱(Confusion
):

使明文、密文和密钥之间的关系尽可能复杂。

设计分组密码时一般我们通过

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

1712902184676)]
[外链图片转存中…(img-EV8dbADw-1712902184676)]
[外链图片转存中…(img-XyVNoIgi-1712902184677)]
[外链图片转存中…(img-JLF478z6-1712902184677)]
[外链图片转存中…(img-TgHzJSR2-1712902184677)]
[外链图片转存中…(img-58M120fY-1712902184677)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
[外链图片转存中…(img-K7Cf20kR-1712902184678)]

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-m2LbI5D4-1712902184678)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值