密码学
基本概念
完整性---信息仅能被合法用户访问,不能泄漏给非法用户,实体或过程
保密性---自由只有在授权方或者以授权方式进行修改,所有资源没有授权则不能修改。保证数据完整性,就是保证数据不能被偶然或者蓄意编辑,或者攻击
可用性---资源只有在适当的时候被授权访问,并按需求使用。
密码学
密码学基本概念-密码体制、古典密码及破译方法、量子密码
分组密码-分组密码概念、DES算法、AES算法,SM4算法、分组密码工作模式
序列密码-线性反馈移位寄存器、RC4、ZUC
Hash函数-Hash函数的安全性、MD5算法、SHA算法、SM3算法、HMAC算法
公钥密码体制-Diffe-Hellman与ElGamal体制、椭圆曲线密码
数字签名-数字签名
认证-身份认证、报文认证
密钥管理-对称密钥分配、非对称密钥分配
密码体制
通用秘密体系:
1、明文空间M-全体明文集合
2、密文空间C-全体密文集合
3、加密算法E-一组明文M到密文C的加密变换
4、解密算法D-一组密文C到明文M的加密变换
5、密钥空间K-包含加密密钥和解密密钥的全体密钥集合
密码攻击方法
穷举攻击-对截获到的密文尝试遍历所有可能的密钥,直到获取正确的明文;或者使用固定的密钥对所有的可能的明文加密,直到与截获到的密文一致
统计分析攻击-利用已经获取到的明文与明文已知统计规律进行破译的方法
数学分析攻击-密码分析者针对加解密算法的数学基础和密码学特征,通过数学求解的方法来破译密码。
攻击密码类型
仅知密文-通过截获的密文破解密码
已知明文-已知明文与密文对,来破解密码
选择明文-不仅可以得到一些明文与密文对,还能选择被加密的明文,并获取相应的密文
选择密文-选择一些密文,并得到相应的明文
古典密码
置换密码-明文字母不变,但位置被打乱
代替密码-建立一个替换表,加密时通过查表将明文每个字母替换为相应字符,生成密文。
加法密码-加法密码的映射函数为:f(ai)=bi=aj,j=i+k mod n, k为正整数且 0< k < n。i j 为小字母
乘法密码-需要预先知道消息元素的个数,加密的过程其实就是对明文消息所组成的数组下标进行加密,然后用明文消息中加密后位置所对应的明文字符代替。映射函数为:f(ai)=bi=aj j = i*k mod n k为正整数且 0< k < n。i j 为小字母
仿射密码-加法密码和乘法密码的结合,函数为:f(ai)=bi=aj ,j=(ak1+k0) mod n,其中k1和n是互素的。
古典密码的破译方法
穷举分析
统计分析
量子算法
量子的叠加性和相干性原理具有计算能力。 实用的量子算法包括Shor算法和Grover算法,两种算法均可对RSA,EIGamal,ECC密码及DH密钥协商进行有效攻击。
分组密码
分组密码又称对称密码,使用分组密码加密时,先对明文进行分组,每个分组长度相同,然后对每个组的明文进行加密得到等长的密文。
DES算法
DES算法分组为64比特,使用56比特密钥对64比特明文进行16轮加密,得到64比特密文。
密钥64比特,使用56比特加密,另8比特做奇偶校验。
DES 使用对合运算,即f = f-1,1为上标
DES加密
异或运算:⊕
加密过程:
1、子密钥生成,64位子密钥经过子密钥算法产生16个子密钥k1...k16,分别在1-16次加密迭代中使用
2、初始置换IP,64位明文经过置换IP表,被打乱重新排列
3、初始置换结果分为两组,L0(32位) ,R0(32位)
4、第一次迭代加密:使用加密函数f和子密钥k1,对R0进行加密,然后与L0进行模2运算(异或运算),记为L0⊕f(R0,k1),结果成为第二次运算的R1,R0成为第二次迭代的L1
5、第2-16次迭代,分别使用子密钥K2-K16,加密结果与第一次加密迭代相同
子密钥产生:
64位密钥经过置换选择1,循环左移,置换选择2,产生16个长为48位的子密钥k
1-k16。
加密函数:
加密函数f(Ri-1,ki),是DES算法的核心算法,函数包含选择运算E,异或运算,代替函数组S(S盒变换),置换运算P。
1),选择运算E与异或运算
选择运算E把Ri-1的32位扩展到48位,并与48位Ki子密钥进行异或运算。
2),S盒变换
一种压缩替换,通过S盒将48位输入变成32位输出。共有8个S盒,并行运算。
3),置换运算P
将S盒输出的32位再进行一次置换。
DES安全性:
1,密钥太短,经不起穷举攻击
2,存着弱密钥和半弱密钥
弱密钥:产生的子密钥与其本身相同。
半弱密钥:产生的子密钥有些相同,但不完全相同。
弱密钥的产生原理:C和D中的数据进行循环移位后,得到的结果仍然是重复的数据。
3DES算法
3DES算法是DES的扩展,执行了三次DES。 有两种实现方式: 1,第一,三次使用相同的密钥,密钥长度为128(112位有效) 2,三次使用不同的密钥,密钥长度192位(168位有效) 中国人民银行智能卡技术规范支持3DES
前路实在漫长,也不知道出口是否明亮,只能就这样坚持着,不断的遇到问题,解决问题,还好没有解决不了的问题,只是时间问题,抑或是能力问题,能力会提升起来的,时间也会有所回报。
人的一生确实会遇到许多困难,甚至是绝望的时刻,可是就此放弃,真的不甘心,我不想像一粒尘埃一样消散在历史长河里,卑微如此,我不甘心。
所以,我要像一个孤独的侠客,历经重重困难,砍到每个挡在我面前的敌人,冲破他们,撕裂他们,碾碎他们。
AES算法
AES---advanced encryption standard
Rijndael算法被选为AES算法
AES明文分组长度可以是,128位,192位,256位。
AES数学基础
加法:多项式洗漱按位模加
乘法:两个多项式相乘,然后模m(x)
乘法逆元
乘法的计算机实现(X乘法,xtime()),xtime()运算可以方便在计算机上实现乘法运算
加密过程
1、最初的子密钥加---明文分组与种子密钥按位进行异或运算
2、前9轮加密操作
1、字节代换---查询S盒表。
S盒的设计原理是将字节非线性的变换为另一个字节:
1、求乘法逆
2、仿射变换
2、行移位变换---对矩阵中的每行,规定第一行循环左移0个字节,第二行循环左移1个字节,第三行循环左移2个字节,第四行循环左移3个字节。
3、列混淆变换---把每列都乘以固定的多项式
4、子密钥加---与第一步相同,结果与该轮子密钥异或运算
3、第10轮加密操作---与前9轮相同,唯一缺少混淆变换
AES不是对合运算,因此解密与加密算法不同
解密过程
1、行位移求逆 2、字节代换求逆 3、列混淆求逆
SM4算法
我国密码管理局公布的无线局域网产品使用的SM4算法
可以抵御差分攻击,线性攻击
第一次官方公布的密码算法
特点:
分组长度和密钥长度都是128位,处理8位和32位数据单位
属于对合运算,加密和解密相同,只是轮使用的密钥顺序相反
基本运算
1、模2加
2、循环左移
工作模式
5种工作模式
1,ECB---电码本模式,每个分组使用相同密钥。
2,CBC---分组链接模式
1,密文链接方式---明文分组与前一密文分组异或,不利于并行计算
2,明密文链接方式---前与密文分组与前一明文分组异或,再与当前明文分组异或
3,OFB---输出反馈模式
4,CFB---密码反馈模式
5,CTR---计数器模式,把分组密码转为序列密码。
序列密码
又称流密码,原理是明文流与密钥流按顺序逐比特进行异或运算,从而产生密文流,属于对合运算。
序列密码的关键是保持通信双方的精确同步。
RC4
算法简单,速度快,实现容易,应用广泛。
具体步骤:
1、密钥调度算法
2、伪随机子密码生成算法
ZUC
祖冲之算法,我国自主设计的加密和完整性算法,是一个同步流算法。
对称算法这块并没有记的很详细,一来是图太多,我不会画图,二来是工作接触这块比较多,比较熟悉。
Hash函数
用于构建数据的指纹,标识数据,将任意长度的数据输出为固定长度的消息,通过摘要算法。
计算函数又叫摘要算法,散列算法,哈希算法。
特性:
1,单向性,不可逆向运算,知道摘要计算结果,不能计算出原数据
2,弱抗碰撞性
3,强抗碰撞性
攻击方法:
1,穷举工具:典型的有“生日攻击”,产生若干明文消息,计算出消息摘要,然后进行对比,找到碰撞。
2,利用散列函数的代数结构:攻击函数的弱性质,有中间相遇攻击,修正分组攻击,差分分析攻击
SHA-1算法
输入长度小于2的64次方比特任意消息,输出160比特摘要。
SM3算法
是国家密码管理局发布的安全密码杂凑算法,采用Merkle-Damgard结构,把1-2的64次方比特消息,经过填充和迭代压缩,生成256长度的摘要。 可用于数字签名,验证,消息认证码,伪随机数生成等。
Hmac
一种基于密钥和散列函数进行消息认证的方法,要求通信双方共享密钥,约定算法。
公钥密码
公钥密码,加密和解密才有不同密钥,分别叫做公钥和私钥。
RSA密码
基于大素数分解,核心是模幂运算。
RSA算法可以实现数字签名和数据加密。
注:
加密:公钥加密,私钥解密
签名:私钥签名,公钥验签
RSA密钥长度大于1024位被认为是安全的。
这个地方符号比较难写,可以搜集一些例子。
Diffie-Hellman体制
简称DH密钥交换体制,目的是完成通信双方对称密钥的交互,在不安全环境下也不会造成密钥泄露。 流程:
1、公开(p,g)
2、通信双方A B交换密钥
1、Ai把密钥(随机产生2<=x
2、Bi把密钥(随机产生2<=y
3、通信双方得到公共密钥
1、A结合产生密钥和受到的B的密钥,经过计算得到公共密钥
2、B同样进行计算,得到相同的密钥。
ELGamal体制
对DH的改进,是基于离散对数问题的公开密钥体制。 离散对数问题是指:对于比较大的整数,y,p,g,求出一个整数满足y=g2mod p 是非常困难的。
椭圆曲线密码
基于费马大定理:当n>2时,xn+yn=zn没有正整数解。
椭圆曲线的计算比RSA复杂的多,密钥比RSA短。
一般认为160位长椭圆曲线密码相当于1024位RSA密码的安全性。
我国二代身份证采用256位椭圆曲线密码
数字签名
确保消息接收者是预期目标,并且内容没有被篡改。
包括签名和验签两个方面。
签名:
1、A使用摘要算法,计算消息摘要。
2、A使用私钥对消息摘要进行加密,将加密摘要和原文发送给B
验签:
1、受到原文和加密摘要后,使用相同摘要算法,对原文进行摘要。
2、使用A公钥对加密摘要解密
3、对比两个摘要,如果一致,则没有被篡改。
认证
用于证实某件事情是否真实或有效。
身份认证
1,口令认证
2,生物特征认证
报文认证
保证通信双方严重每个报文的发送方,接收方,内容,时间的真实性和完整性。
密钥管理
原则:
全程安全原则
最小权限原则
责任分离原则
密钥分级原则
密钥更新原则
密钥分级
分为三级:
初级密钥:用于加解密数据,一次一密,必须受到高级密钥的保护。
二级密钥:保护初级密钥,生存周期较长。
主密钥:用于保护二级密钥和初级密钥,生成周期很长。
对称密钥分配
Kerberos协议,密钥分配中心的核心,
1,验证服务器
2,票据授权服务器
非对称密钥分配
1,PKI一组规则,过程,人员,设施,软件,硬件的集合。
有五个组成部分:证书申请者,RA注册中心,CA认证中心,证书库,和证书信任方。
1,数字证书
采用公钥体制进行加密和解密,每个用于有一个私钥用于解密和签名,还有一个公钥用于加密和验证。
密码学部分到此就算是完了,也不是很详细,我接触比较多,所以没太过多深挖,下一部分是网络安全。