背景介绍
最近在看《密码学与网络安全》相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL。
在开始SSl介绍之前,先给大家介绍几个密码学的概念和相关的知识。
1、密码学的相关概念
- 密码学(cryptography):目的是通过将信息编码使其不可读,从而达到安全性。
- 明文(plain text):发送人、接受人和任何访问消息的人都能理解的消息。
- 密文(cipher text):明文消息经过某种编码后,得到密文消息。
- 加密(encryption):将明文消息变成密文消息。
- 解密(decryption):将密文消息变成明文消息。
- 算法:取一个输入文本,产生一个输出文本。
- 加密算法:发送方进行加密的算法。
- 解密算法:接收方进行解密的算法。
- 密钥(key):只有发送方和接收方理解的消息
- 对称密钥加密(Symmetric Key Cryptography):加密与解密使用相同密钥。
- 非对称密钥加密(Asymmetric Key Cryptography):加密与解密使用不同密钥。
2、相关的加密算法介绍
DES算法即数据加密标准,也称为数据加密算法。加密过程如下:
在SSL中会用到分组DES、三重DES算法等加密算法对数据进行加密。当然可以选用其他非DES加密算法,视情况而定,后面会详细介绍。
3、密钥交换算法
使用对称加密算法时,密钥交换是个大难题,所以Diffie和Hellman提出了著名的Diffie-Hellman密钥交换算法。
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可以用其进行加解密
RSA加密算法是基于这样的数学事实:两个大素数相乘容易,而对得到的乘积求因子则很难。加密过程如下:
(1)选择两个大素数P、Q (2)计算N=P*Q (3)选择一个公钥(加密密钥)E,使其不是(P-1)与(Q-1)的因子