背景介绍
最近在看 《密码学与网络安全》 相关的书籍, 这篇文章主要详细介绍一下著名的网络安全协 议 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)的因子
(4)选择私钥(解密密钥) D,满足如下条件:
(D*E) mod (P-1)(Q-1)=1
(5)加密时,明文 PT 计算密文 CT 如下:
CT=PTE mod N
(6)解密时,从密文 CT 计算明文 PT 如下:
PT=CTDmodN 这也是 SSL 中会用一种密钥交换算法。
3、散列算法:
主要用于验证数据的完整性,即保证时消息在发送之后和接收之前没有被篡改对于 SSL 中 使用到的散列算法有 MD5、SHA-1。
4、数字证书:
数字证书其实就是一个小的计算机文件, 其作用类似于我们的身份证、护照, 用于证明身份, 在 SSL 中,使用数字证书来证明自己的身份,而不是伪造的。
5、简单的总结:
在 SSL 中会使用密钥交换算法交换密钥;使用密钥对数据进行加密;使用散列算法对数据 的完整性进行验证,使用数字证书证明自己的身份。好了,下面开始介绍 SSL 协议。
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 头。
SSL 的工作原理
握手协议(Handshake protocol)
记录协议(Record protocol)
警报协议(Alert protocol)
1、握手协议
握手协ssl协议全称议是客户机和服务器用 SSL 连接通信时使用的第一个子协议,握手协议包括客户机
与服务器之间的一系列消息。 SSL 中最复杂的协议就是握手协议。该协议允许服务器和客户机 相互验证,商议加密和 MAC 算法以及保密密钥,用来保护在 SSL 记录中发送的数据。握手协 议是在应用程序的数据传输之前使用的。
每一个握手协议包含以下 3 个字段
(1) Type:表示 10 种消息类型之一
(2) Length:表示消息长度字节数
(3) Content:与消息相关的参数
握手协议的 4 个阶段
1.1 建立安全能力
SSL 握手的第一阶段启动逻辑连接,建立这个连接的安全能力。首先客户机向服务器发出 cli
ent hello 消息并等待服务器响应,随后服务器向客户机返回 server hello 消息,对 client hello 消息中的信息进行确认。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论