对安全性的攻击
中断: 可用性
截取:机密性
篡改:完整性、真实性、有序性
伪造、重放:认证性
分类:
被动攻击:截取。通常难以检测
主动攻击:中断、篡改、伪造、重放。是指攻击者对连接中通过的协议数据单元进行各种处理
密码学分类
密码学的技术分两部分,一个是密码编码学、一个是密码分析学。
密码编码学研究如何对信息编码以实现信息和通信安全
密码分析学研究如何破解或攻击受保护的信息
密码编码学:
从安全目标来看,分为保密体制和认证体制
根据使用密钥策略,分为对称密码体制和非对称密码体制
对称密码体制
密钥完全保密,加密密钥和解密密钥相同,或根据一个可以很容易推出另一个
优点:
运算速度比较快、密钥相对较短、密文长度往往与明文长度相同
缺点:
密钥分发需要安全通道、密钥量大,难以管理(不同人给的密钥要不同)、难以解决不可否认问题
非对称密码体制:
使用两个密钥:一个公钥对外公开,一个私钥只有拥有者知道 理论上不能从公钥推出私钥
例如电子邮件机制:任何人可以用接收者的公钥进行加密(找到接受者的邮箱地址发送),接收者用私钥解密(登录账号密码,来查看邮件)
加解密算法和数字签名算法
优点:
密钥分发容易、密钥管理简单、可以有效实现数字签名
缺点:
运算速度较慢、密钥位数相对多些、密文长度往往大于明文长度。(??学到时再回来看)
保密体制模型:
明文空间P:所有可能的明文
密文空间C:所有可能的密文
密钥空间K:所有可能的密钥 K1 加密密钥空间 K2 解密密钥空间
加密算法 c=§
解密算法
密码分析学:
现代密码学的密码系统设计必须遵循柯克霍夫原则,秘密必须完全寓于密钥中,加密和解密的安全性取决于密钥的安全性,加密解密算法是公开的。只要密钥安全,攻击者就无法得到明文。
安全性分为无条件安全性(理论安全性)和有条件安全性(实际安全性)
密码体制的攻击类型:
在不知道密钥的情况下,不同条件下的攻击
唯密文攻击:只知道一定数量密文
已知明文攻击:除了一部分密文,还有一些明密文对
选择明文攻击:对任意明文可得到其密文,比如掌握加密机时
选择密文攻击:对任意密文可得到其明文,比如掌握解密机时
选择文本攻击: 选择明文和选择密文的结合,同时掌握加密机和解密机时
不同时期的密码学
按照1949年香农发表的那篇论文《保密系统的通信理论》为分界
古典密码学:主要分为代换式密码和置换式密码两大类
现代密码学:计算机的出现提供了新的加密技术,也提供了破译密码的新武器
主要有 对称密码体制下的分组密码,序列密码
二、古典密码学
主要通过置换和代换的简单方式实现
1.置换密码
置换:根据一定的规律重新排列明文,一遍打破明文的结构特性。
本质是X域上的双射函数
常见的有列置换和周期置换两种
置换
表示方式:
密钥空间大小为 |x|!
逆置换:函数的逆函数
由得到
1.双行表示法的上下颠倒,重新排序
2.循环表示法每个括号第一个不变,其余颠倒
置换的组合 类比函数关系的组合
周期置换
密钥:
对
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 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.仿射密码
是一个线性变换
称e(x)为仿射加密函数
要求a与26互素,不然会有两个数被加密为同一个密文
凯撒密码 : a=1,b=3 (是移位密码,仿射密码的特例)
密钥空间:12*26=312
逆变换:
注意!:az被映射为数字025 a对应0
多表代换密码
明文消息中出现的同一个字母,不是完全被同一固定的字符代换,而是根据其出现的位置次序用不同的字母代换。
代换既取决于具体字母,也取决于字符的相对位置(不同的地方用不同的代换表)
多表代换中有理论上的非周期多表代换密码,实际使用的都是周期多表代换
周期为1时就成了单表代换(不同地方使用同一代换表)
密钥空间
K={
一个分组内所有字母组合间的所有置换
}
|
K|=
(
)!
如果代换表序列是非周期的无限序列,则相应的密码称为非周期多表代换密码,称为一次一密密码。(序列密码的一种)
优点:能更好抵抗统计密码分析
1.Playfair密码
2.维吉尼亚密码
每一分组密钥空间为 (置换是固定的)
查表法
或者用模运算实现
- 希尔密码
明文按n分组
密钥矩阵: n*n的非奇异矩阵 且gcd(det(k),26)=1
矩阵的行列式满足和26互质,则存在模26下的乘法逆元(逆矩阵存在)。
加强版的希尔密码 补充常数项,c=mk+b
4.轮转密码机
目的:通过转轮的转动来实现复杂的多表代换,从而打破明文与密文之间的固定替代关系
三个转速不一的转轮构成:慢轮子、中轮子、快轮子。每个轮子是一个代换表
一个周期内,不同位置的相同明文代换成不同的密文
快轮子转一圈,中轮子转一个
中轮子转一圈,慢轮子转一个
密钥周期为26*26*26
解密时密文倒着解密,密码机倒着转(一步一步恢复状态)
3.古典密码的分析
单表密码和部分多表代换密码可以用统计分析法进行唯密文攻击,Hill密码等需要用已知明文攻击
三、分组密码
明文、密文和密钥都采用二进制编码
,也就是字符集是简单的
0
和
1
。
1.分组密码(块密码)概述
将明文消息编码的表示后二进制序列,划分成固定大小的块,每块分别在密钥的控制下变换成等长的二进制序列
注:传统密码也分组,但不是分组密码
分组密码属于对称密码体制
分组密码的设计要求
明文密文分组长度相同即可。
分组长度
n
要足够长,即
明文空间大小
2
n
足够大(防止明文穷举攻击)。
密钥长度
t
要足够长,即
密钥空间大小
2
t
足够大(防止密钥穷举攻击)。但亦不能过长,否则影响
加解密速度
和
密钥管理
。
由密钥
k
确定的明文空间到密文空间的映射
足够复杂(注:
可认为是
个元素上的一个置换)。
已知密钥时
的加解密运算简单,便于软硬件的快速实现。
密文空间与明文空间都是
理想分组密码是每种输入都会被代换成唯一的输出,因此密钥空间是,对应的密钥长度是
实际的密钥长度和分组长度差不多,密钥空间为,就是说对任意的密钥,一种明文不会加密成所有的密文
分组密码的设计原则
扩散(Diffusion
):
明文和密文间的
统计特性尽可能复杂
,使得使得一比特明文的变化尽可能多的影响到输出密文的比特,以
隐藏明文的统计特性
。
理想状态下,明文改变一比特,密文里改变大约一半比特位。同样,密文改变一比特,相应的明文改变大约一半比特位。
混乱(Confusion
):
使明文、密文和密钥之间的关系尽可能复杂。
设计分组密码时一般我们通过
乘积密码体制
来实现扩散和混乱。
(类似于函数的复合,函数复合不一定满足交换律,满足结合律,乘积密码体制同样)
迭代密码体制:
大部分分组密码用的都是迭代结构
主要是两种迭代网络:
Feistel
网络
(如
DES
)
SP
网络
(如
AES
)
均能引起雪崩效应,即少量的明文变化引起密文巨大变化
Feistel网络
答:由于异或的特性 a xor a =0 a xor 0 =a
SP网络
2.DES
分组长度为64bit,密钥长度为64bit,有效位为56bit(8位奇偶校验码)
已经可以被密钥穷举法破解,也不再作为正式的加密标准
DES过程:
1)64位的明文经初始置换(IP)重新排序,分为左右两组(Lo,Ro)
2)在密钥参与下,对左右两组进行16轮迭代,最后一轮输出64位,左右不交换
3)最后通过逆初始置换() 产生密文
轮函数:
拓展置换(E盒)、密钥加非线性代换(S盒)、线性置换(P盒)
E盒:改变了位的次序,重复了某些位
作用: 1.产生与子密钥相同的数据,能够进行异或运算
2. 拓展后的数据能够经过S盒压缩,实现非线性
3.1位输入可能影响两位输出,快速实现雪崩效应
S盒:唯一的非线性部分,48位数据分成6*8 每组b1,b6作为行号,b2~b4作为列号,查表得到的数变成二进制4位
密钥编排:
1.置换选择PC-1 得到56位有效密钥,分成两组28位的
每次迭代,左右分别循环左移一位或者两位,每一轮子密钥是48位
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
😝朋友们如果有需要的话,可以联系领取~
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
2️⃣视频配套工具&国内外网安书籍、文档
① 工具
② 视频
③ 书籍
资源较为敏感,未展示全面,需要的最下面获取
② 简历模板
因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!