目录
3.1密码学基本概念
安全目标:
机密性:仅被合法用户访问,不允许泄露给非授权用户
完整性:资源只有授权方或以授权的方式修改,保证数据完整性,不能被偶然或蓄意的编辑或攻击
可用性:资源只有在适当的时候被授权访问,并按需使用。保证手段(身份确认识别,访问控制等)
Kerckhoffs准则:密钥算法不保密,密钥保密。
评估密码系统安全性方法:
无条件安全:拥有无限的资源和时间,仍然无法破解。(极限安全)
计算安全:破解需要的资源是现阶段不具备的(强力破解安全)
可证明安全:安全性归结于深入深入的数学难题。
3.1.1密码体制
M:明文
C:密文
E:加密算法
D:解密算法
k:密钥
3.1.2古典密码及破译方法
1.攻击密码的方法与攻击密码的类型
攻击密码方法
穷举攻击:对截获的密文遍历所有可能的密钥。
统计分析攻击:利用已知的明文和密文统计规律进行破译。
数学分析攻击:通过数学求解的方法来破译。
攻击密码类型
选择密文攻击:攻击者可以选择一定的密文获得相应的明文。
仅知密文攻击:攻击者仅通过截获的密文进行破解。
已知明文攻击:攻击者知道一些明文-密文对,进行破解
选择明文攻击:攻击者不仅一些明文-密文对,还能选择一定的明文获得相应的密文,进行破解
密文验证攻击:密码分析者能判断任何选定的密文是否合法
2.古典密码
置换密码:明文字母不变,位置打乱。
代替密码:建立个替换表,加密时通过表进行替换。
3.古典密码破解方法
穷举攻击、统计分析
3.1.3量子算法
Shor算法、Grover算法
3.1.4常用加密算法汇总分析
1.常用对称加密算法
DES:明文分组64位,密钥长度为56位、子密钥长度为48位、被加密分组长度为64位,8位奇偶校验
3DES:执行三次DES,一三次加密使用同一密钥或三次使用不同密钥。密钥长度分别为DES长度的两倍或三倍数。
RC5:分组大小,密钥长度,加密轮数都可变。
IDEA:明文、密文均为64位,密钥长度128位
RC4:常用流密码,密钥长度可变,用于SSL协议,美国政府限制出口超过40位密钥的RC4算法。
AES:明文长度可以位128位,192位,256位;密钥长度可以为128位,192位,256位。
SM1:分组和密钥长度都是128位
SM4:分组和密钥长度都是128位,采用32轮非线性迭代结构,用于无线局域网。
2.常用非对称加密算法
RSA:基于大素数分解。适合进行数字签名和密钥交换运算。需1024位以上才安全。
椭圆曲线密码:建立公开密钥加密的算法。160位相当于1024位RSA密码的安全度。我国第二代居民身份证使用的是256位椭圆曲线密码。
SM2:椭圆曲线公钥密码算法。
3.常用哈希算法
MD5:消息分组长度位512比特,生成128比特摘要。
SHA-1:输入长度小于2^64比特消息,输出160比特摘要。
SM3:安全密码杂凑算法,把长度小于1(1<2^64)比特的消息,经过填充和迭代压缩为长度256比特的消息摘要。
3.2分组密码
3.2.1分组密码的概念
又称密钥密码或对称密码,对明文进行等份分组并加密。
3.2.2 DES
分组长度64比特,使用56比特密钥对64比特的明文串进行16轮加密,得到64比特的密文串(8比特用作奇偶校验)
使用了对合运算,加密解密同一算法,工作量减半。
1.DES安全性
如果密钥太短经不起穷尽攻击
存在弱密码和半弱密码。
2. 3DES
见3.1.4。
3.2.3 IDEA
算法密钥为128位,明文,密文分组长度为64位。
3.2.4 AES
明文分组长度可以是128、192、256位;密钥长度也可以是128位,192位,256位。
3.2.5 SM1\SM4
SM1对称加密算法,分组长度和密钥长度都是128位。
SM4可以抵御差分攻击、线性攻击等(应用于无限局域网产品);
分组长度和密钥长度都是128位,
数据处理单位:字节(8位),字(32位)。
加密算法和密钥扩展算法采用32位非线性迭代结构。
解密加密算法相同,只有轮密钥的使用顺序相反,且解密轮密钥是加密轮密钥的逆序。
3.3 Hash函数
用于构建数据“指纹”,“指纹用户标识数据”Hash函数主要用户数字完整性、数字签名、消息认证等。
特性:单向性、弱抗碰撞性、强抗碰撞性。
3.3.1 Hash函数的安全性
攻击:寻找一对碰撞消息的过程
方法:穷举攻击(生日攻击)、攻击函数的弱性质,中间相遇攻击,修正分组攻击,差分分析攻击。
有雪崩效应
3.3.2 MD5与SHA-1算法
MD5算法消息分组长度为512比特,生成128比特的摘要。伪造X.509证书,实现攻击。
SHA-1算法输入小于2^64比特的任意消息,输出160比特的摘要。DSS数字签名标准核心是数字签名算法DSA,其中的杂凑算法采用了SHA-1;
3.3.3 SM3
安全密码杂凑算法
把长度位(1<2^64)比特的消息,经过填充和迭代压缩,生成256比特的摘要。用于数字签名和验证、消息认证码的生成与验证以及随机数的生成。