概况
密码学的主要目的是保持铭文的秘密以防止攻击者获知,而密码分析学则是在不知道密钥的情况下,识别出铭文的科学。
根据密码分析者在破译时已具备的前提条件,人们通常将密码分析攻击类型分为五种,分别叙述如下:
-
维密文攻击(ciphertext-only attack)。密码分析者只拥有一个或多个用同一个密钥加密的密文,没有其他可利用的信息
-
已知明文攻击(known-plaintext attack)仅知道当前密钥下的一些明文及对应的密文
-
选择明文攻击(chosen-plaintext attack)能够得到当前密钥下自己选定的明文所对应的密文
-
密文验证攻击(ciphertext verification attack)对于任何选定的密文,能够得到该密文是否合法的判断
-
选择密文攻击(chosen-ciphertext attack)除了挑战密文外,能够得到任何选定的密文所对应的明文
分类
单向加密
不可逆加密,根据密文无法解析出原文,适用于数据校验的场景,例如登录密码。
- MD5(Message Algorithm)
可将原文加密为固定长度的密文,压缩性高,使用方便,但安全系数不高。通常会将MD5码再进行一次BASE64编码,以提高复杂性
- SHA(Secure Hash Algorithm)
数字签名等密码学应用中的重要工具,被广泛地用于电子商务等信息安全领域。虽然在当前的大算力下会被暴力破解,但安全性仍然较高
- HMAC(Hash Message Authentication Code)
基于密钥的Hash算法的认证协议。用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。安全系数很高。
双向加密
可逆加密,根据密文可解析出原文,适用于数据传输的场景。
分对称加密和非对称加密。
对称加密即单密钥加密,通过单个密钥进行加解密;
非对称加密则是有私钥和公钥两个密钥,私钥可以用来解密公钥加密的密文,而公钥无法解密私钥加密的密文
-
双向对称加密
-
DES
-
IDEA
-
3DES
-
-
非对称加密
-
RSA
-
ECC
-
Diffie-Hellman
-
El Gamal
-
DSA
-
混合密码体制
利用公钥密码的体制,分配私钥体制的密钥,消息收发的双方共用这个密钥。原理如下:
-
发送者A用对称密钥K加密消息M
-
A再使用B的公钥P1将密钥K加密
-
然后把M和K一起发送给B
-
B收到消息后,用自己的私钥P2解密获得密钥K
-
B再使用密钥K对密文M进行解密
数字签名
数字签名是指签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果,该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。
它的目的是通过网络信息安全技术手段实现传统的纸面签字或盖章功能,保证信息的安全性、真实性和不可抵赖性。
至少应满足以下三个条件:
-
非否认。签名者事后不能否认自己的签名
-
真实性。接收者能验证签名,而其他人不能伪造签名
-
可鉴别性。
签名和加密的不同之处在于,加密的目的是保护信息不被非授权的用户访问,而签名是使消息接收者确信信息的发送者是谁,信息是否被他人篡改。
步骤
假设A需要发送一份电子合同文件 x x x给B,那么流程大体如下:
A方:
-
使用Hash函数将电子合同文件 x x x生成消息摘要 d 1 d_1 d1
-
使用自己的私钥,将 d 1 d_1 d1加密为 D D D,形成数字签名
-
将 x x x和 D D D发送给B
B方:
-
使用和A相同的Hash算法,将 x x x生成消息摘要 d 2 d2 d2
-
用A的公钥解密 D D D得到 d 1 d_1 d1
-
比较 d 1 d1 d1和 d 2 d2 d2。若不一致则表示 x x x已被篡改
数字证书
数字证书是由证书认证机构(CA, certificate authority)签名的包含公钥拥有者信息、公钥、签发者信息、有效期以及扩展信息的一种数据结构,简而言之就是包含有公钥和签发者的相关信息。
通常用于更好的保证信息的真实性,抗抵赖性等安全性。