SSL/TLS
1. 概念
SSL是由Netscape发明,V3版本是结合了公众和厂商的意见而设计的,它开始被作为一种互联网草案而发布,现在已经成了互联网上的标准。IETF在Openssl3.0的基础上做了一些细微的修改,编写了TLS1.0版本,也即SSL3.1。
SSL用来提供端到端的可信TCP链接,SSL涉及到2层协议,如下图
HTTP | ||
SSL握手协议 | SSL密码修改协议 | SSL告警协议 |
SSL记录协议 | ||
TCP | ||
IP |
SSL记录协议为各种高层协议提供了基础的安全服务,SSL包含3个高层协议:握手协议、密码修改协议、告警协议
SSL包含2个重要概念:
SSL连接:连接是端到端的,连接是短暂的,每个连接都与一个会话相关
SSL会话:SSL会话是一个C和S之间的联合,SSL会话是由握手协议创建的,会话定义了一系列的安全参数,这些参数能在多个连接间共享,SSL会话避免了为每个连接再重新耗费资源协商一次安全参数。
SSL思维MM图
证书颁发与验证
权威CA给服务器颁发证书,用自己的私钥签名,这样浏览器就能用权威CA的公钥验证服务器证书。
服务器用自签名根证书的私钥给客户端颁发证书,用自己的私钥签名,这样服务器就能用自己的公钥验证客户端证书。
所以我们可以得出:
证书颁发用私钥,证书验证用公钥
SSL握手
SSL通信(双向证书认证)有以下流程:
a. 双方sayhello,确定密钥交换/加密/压缩/MAC算法,和随机数
b. 服务器端发送自己的证书给客户端(含公钥),客户端用权威CA的公钥验证服务器证书。
c. 客户端发送自己的证书和密钥交换信息(用自己的私钥签名,用服务器的公钥加密)发给服务器,服务器用自己的私钥解密,用自签名证书的公钥验证客户端证书,用客户端证书的公钥验证客户端身份。
d. 双方确定通信密钥(包括加密算法和压缩算法的密钥)
所以我们可以得出:
SSL通信双方都需要私钥
2. SSL可能遭受的攻击
SSL最可能遭受中间人攻击,导致身份盗取。
3. SSL库
目前最流行的SSL库是openssl,历史上爆发过很多漏洞,比如注明的HeartBleed漏洞,SSLCCS注入漏洞。Openssl官方网站上公布了自己的很多漏洞,
https://www.openssl.org/news/vulnerabilities.html
比如MSF上针对Openssl的exploit
4. Referers:
1. 《密码编码学与网络安全》
3. H3C的SSL技术白皮书: