SSL协议之基础篇
程序员文章站
2022-07-04 09:48:27
...
一、密码学的相关概念
密码学(cryptography):目的是通过将信息编码使其不可读,从而达到安全性。
明文(plain text):发送人、接受人和任何访问消息的人都能理解的消息。
密文(cipher text):明文消息经过某种编码后,得到密文消息。
加密(encryption):将明文消息变成密文消息。
解密(decryption):将密文消息变成明文消息。
算法:取一个输入文本,产生一个输出文本。
加密算法:发送方进行加密的算法。
解密算法:接收方进行解密的算法。
密钥(key):只有发送方和接收方理解的消息
对称密钥加密(Symmetric Key Cryptography):加密与解密使用相同密钥。
非对称密钥加密(Asymmetric Key Cryptography):加密与解密使用不同密钥。
二 DES加密算法介绍
DES算法即数据加密标准,也称为数据加密算法。
在SSL中会用到分组DES、三重DES算法等加密算法对数据进行加密。当然可以选用其他非DES加密算法,视情况而定。
三、密钥交换算法之Diffie-Hellman
(1)Alice与Bob确定两个大素数p和g,这两个数不用保密 (2)Alice选择另一个大随机数a,并计算A如下:A=ga mod p (3)Alice将A发给Bob (4)Bob 选择另一个大随机数b,并计算B如下:B=gb mod p (5)Bob将B发给Alice (6)计算秘密密钥K1如下:K1=Ba mod p (7)计算秘密密钥K2如下:K2=Ab mod p K1=K2,因此Alice和Bob可以用其进行加解密 1、通信方Alice和通信方Bob约定g=5,p=23,g和p是公开的 2、Alice生成一个随机数a,a是保密的,如a=6 3、Alice计算g^a%p发送给Bob,g^a%p=5^6%23=8 4、Bob生成一个随机数b,b是保密的,如b=15 5、Bob计算g^b%p发送给Alice,g^b%p=5^15%23=19 6、Alice接收到g^b%p后,再使用保密的a,计算(g^b%p)^a%p=19^6%23=2 7、Bob接收到g^a%p后,再使用保密的b,计算(g^a%p)^b%p=8^15%23=2 8、这样通信方Alice和Bob得到一个相同的密钥:2
四、密钥交换算法之RSA
(1)选择两个大素数P、Q (2)计算N=P*Q (3)选择一个公钥(加密密钥)E,使其不是(P-1)与(Q-1)的因子 (4)选择私钥(解密密钥)D,满足如下条件: (D*E) mod (P-1)(Q-1)=1 (5)加密时,明文PT计算密文CT如下: CT=PTE mod N (6)解密时,从密文CT计算明文PT如下: PT=CTD mod N 这也是SSL中会用一种密钥交换算法。 RSA算法中,素数P=7,Q=11,加密密钥E=7,计算解密密钥D N=PQ=7*11=77 (P-1)(Q-1)=6*10=60 根据公式D*E ≡ 1 (mod (P-1)(Q-1)) 又E=7,所以7*D ≡ 1 (mod 60),即 7D mod 60 = 1。 因为7x43=301,并且301除以6刚好余1. 所以D=43 下面是公式依据: 假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个私钥 1.随意选择两个大的质数P和Q,P不等于Q,计算N=PQ。 2.根据欧拉函数,不大于N且与N互质的整数个数为(P-1)(Q-1) 3.选择一个整数E与(P-1)(Q-1)互质,并且E小于(P-1)(Q-1) 4.用以下这个公式计算D:D*E ≡ 1 (mod (P-1)(Q-1)) 5.将P和Q的记录销毁。 E是公钥,D是私钥。D是秘密的,而N是公众都知道的。Alice将她的公钥E传给Bob,而将她的私钥D藏起来。
五、散列算法
主要用于验证数据的完整性,即保证消息在发送之后和接收之前没有被篡改过,对于SSL中使用到的散列算法主要有MD5、SHA-1。
六、数字证书
数字证书其实就是一个小的计算机文件,其作用类似于我们的身份证、护照,用于证明身份,在SSL中,使用数字证书来证明自己的身份,而不是伪造的。
七、简单的小结
1、使用密钥交换算法交换密钥。
2、使用密钥对数据进行加密。
3、使用散列算法对数据的完整性进行验证。
4、使用数字证书证明自己的身份。
八、SSL介绍
安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。
SSL是Netscape于1994年开发的,后来成为了世界上最著名的web安全机制,所有主要的浏览器都支持SSL协议。
目前有三个版本:2、3、3.1,最常用的是第3版,是1995年发布的。
九、SSL协议的三个特性
保密:在握手协议中定义了会话密钥后,所有的消息都被加密。
鉴别:可选的客户端认证,和强制的服务器端认证。
完整性:传送的消息包括消息完整性检查(使用MAC)。
十、 SSL的位置
SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。