1.基本概念
- 密码学(cryptology): 研究如何隐密地传递信息的学科。
- 明文(plaintext):没有加密的文字。
- 密文(ciphertext):加了密的文字。
- 加密(encryption):将明文消息变成密文消息。
- 解密(decryption):将密文消息变成明文消息。
- 算法(algorithm):取一个输入文本,产生一个输出文本。
- 加密算法(encryption algorithm):发送方进行加密的算法。
- 解密算法(decryption algorithm):接收方进行解密的算法。
- 密钥(secret key):秘密的钥匙,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。
2.对称密钥加密与非对称密钥加密
对称密钥加密(Symmetric Key Cryptography):加密与解密使用相同密钥。优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。
非对称密钥加密(Asymmetric Key Cryptography):加密与解密使用不同密钥。一个公开发布,即公钥,另一个由用户自己秘密保存,即私钥。信息发送者用公钥去加密,而信息接收者则用私钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。
所以在实际的应用中,人们通常将两者结合在一起使用,例如,对称密钥加密系统用于存储大量数据信息,而非对称密钥加密系统则用于加密密钥(重点,因此才体现出了密钥交换算法的作用)。
3.密钥交换算法
使用对称加密算法时,密钥交换是个大难题,所以Whitfield Diffie和Martin Hellman提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange Agreement/Algorithm)。
Diffie-Hellman密钥交换算法原理:
(1)Alice与Bob确定两个大素数n和g,这两个数不用保密
(2)Alice选择另一个大随机数x,并计算A如下:A=gx mod n
(3)Alice将A发给Bob
(4)Bob 选择另一个大随机数y,并计算B如下:B=gy mod n
(5)Bob将B发给Alice
(6)计算秘密密钥K1如下:K1=Bx mod n
(7)计算秘密密钥K2如下:K2=Ay mod n
K1=K2,因此Alice和Bob可以用其进行加解密
4.数据摘要算法
数据摘要算法也被称为哈希(Hash)算法、散列算法。主要功能是通过对所有数据提取指纹信息来验证数据的完整性,即保证时消息在发送之后和接收之前没有被篡改。SSL中使用到的散列算法有MD5、SHA。
5.数字证书
证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。其作用类似于我们的身份证,用于证明身份。
6.数字签名
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
7.简单总结
在SSL中会使用密钥交换算法交换密钥;使用密钥对数据进行加密;使用数据摘要算法对数据的完整性进行验证;使用数字证书证明自己的身份。
好了,关于密码学的概念就介绍到这,接下来我们来介绍一下SSL:SSL从理论到实践(二)——SSL
参考
1.SSL协议详解
2.让SSL/TLS协议流行起来:深度解读SSL/TLS实现
3.使用wireshark观察SSL/TLS握手过程–双向认证/单向认证
4.Android 6.0 SSL通信
5.SSL/TLS的原理以及互联网究竟是如何工作的(1-5)
6.JDK 中的证书生成和管理工具 keytool
7.那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)