使用密钥 一般用k表示
加密(Encryption) 加密函数一般用 E()表示 c=§
解密 (Decryption) 解密函数一般用 D( )表示
密码学与信息安全:
经典信息安全三要素: 机密性、完整性、可用性 confidentiality、Intergerity availability
(CIA!!)
拓展:机密性,完整性,可用性,隐私性,可认证性与可信赖性,不可抵赖性,可说明性,可审计性。
其中与密码学相关的:机密性,完整性,可用性,认证性、不可抵赖性
攻击:
如图所示
中断 (拒绝服务)阻止或禁止通信设施的正常使用两种实现方式:1.攻击者删除传输过程中某个地方的链接。2.DDos,对特定目标滥发消息使之过载
截取
篡改
伪造
重放 是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的
对安全性的攻击
中断: 可用性
截取:机密性
篡改:完整性、真实性、有序性
伪造、重放:认证性
分类:
被动攻击:截取。通常难以检测
主动攻击:中断、篡改、伪造、重放。是指攻击者对连接中通过的协议数据单元进行各种处理
密码学分类
密码学的技术分两部分,一个是密码编码学、一个是密码分析学。
密码编码学研究如何对信息编码以实现信息和通信安全
密码分析学研究如何破解或攻击受保护的信息
密码编码学:
从安全目标来看,分为保密体制和认证体制
根据使用密钥策略,分为对称密码体制和非对称密码体制
对称密码体制
密钥完全保密,加密密钥和解密密钥相同,或根据一个可以很容易推出另一个
优点:
运算速度比较快、密钥相对较短、密文长度往往与明文长度相同
缺点:
密钥分发需要安全通道、密钥量大,难以管理(不同人给的密钥要不同)、难以解决不可否认问题
非对称密码体制:
使用两个密钥:一个公钥对外公开,一个私钥只有拥有者知道 理论上不能从公钥推出私钥
例如电子邮件机制:任何人可以用接收者的公钥进行加密(找到接受者的邮箱地址发送),接收者用私钥解密(登录账号密码,来查看邮件)
加解密算法和数字签名算法
优点:
密钥分发容易、密钥管理简单、可以有效实现数字签名
缺点:
运算速度较慢、密钥位数相对多些、密文长度往往大于明文长度。(??学到时再回来看)
保密体制模型:
明文空间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
如何自学黑客&网络安全
黑客零基础入门学习路线&规划
初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!
7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。
8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
网络安全工程师企业级学习路线
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的
视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
一些笔者自己买的、其他平台白嫖不到的视频教程。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!