安全套接字层SSL协议概述使用SSL解决的问题(功能)协议栈的位置SSL协议栈的分层模型SSL体系结构SL的两个重要概念主要工作流SSL握手的握手过程SSL握手过程
SSL协议概述
securesocketslayersecuresockets协议
由于考虑到SSL协议的漏洞,Wrieshark无法捕获SSL之前的数据包,因此升级了父亲的TSL
传输安全(TLS )是更安全的升级版SSL。
SSL协议可用于保护在TCP上正常运行的任何APP应用协议,包括HTTP、FTP、SMTP或Telnet通信。 最常见的是使用SSL保护HTTP通信。
SSL协议的优点是不依赖于APP应用层协议。 高层APP应用程序协议(如HTTP、FTP和Telnet )可以透明地构建在SSL协议之上。
SSL协议在APP应用层协议之前完成了加密算法、通信密钥协商和服务器认证。 然后,APP应用层协议传输的数据将被加密,以保证通信的安全。
SSL已解决的问题(功能)客户对服务器的身份认证
SSL服务器允许客户浏览器使用标准公钥加密技术和几个受信任的认证中心(CA )证书来验证服务器的有效性。
服务器对客户的身份认证
可以通过公钥技术和证书进行认证,也可以通过用户名、password进行认证。
建立服务器与客户之间安全的数据通道
SSL要求客户端和服务器之间发送的所有数据在发送端加密,在接收端解密,同时检查数据的完整性
的使用https://
SSL在协议栈中的位置
SSL协议的分层模型SSL协议是一种分层协议,由两个层次组成。 位于SSL协议下面的是sslrecordprotocol (sslrecordprotocol ),它位于受信任的传输层协议(如TCP )之上,用于封装上层协议中的数据。 其中,SSL握手协议(SSL Handshake Protocol )允许服务端和客户端相互验证,并在APP应用层协议传输数据之前协商加密算法和会话密钥。
SSL体系结构
SSL的两个重要概念SSL连接(connection)
一个连接是提供适当类型的服务的传输(OSI层定义)。
SSL的连接是点对点的关系。
连接是临时的,每个连接都与会话相关联。
SSL会话(session)
SSL会话是客户和服务器之间的关联。 会话由handshake协议创建。 会话定义了可由多个连接共享的一组密码安全参数。
会话用于避免为每个连接提供新的安全参数的昂贵协商成本。
主要工作流程1 .建立网络连接,SSL客户端发送消息,该消息包括SSL客户端使用SSL协议进行通信所需的SSL版本号、密码设置、可实现算法列表、随机数和其他信息;
2.SSL服务器端响应于该消息确定SSL版本号、加密算法和压缩算法;
3.SSL服务器颁发服务器数字证书
4 .验证SSL客户端是可选的。
5 .客户端生成预主密钥pre_master_secret,用服务器公钥加密返回服务器,服务器用自己的私钥解密获得会话密钥
5 .如果服务器要求客户认证,则客户向服务器发送与加密的pre_master_secret一起签名的数据和客户的证书。
7 .如果服务器成功验证了客户端,则使用私钥加密pre_master_secret,并执行一系列步骤生成master secret。 否则会话将结束。
8 .客户端和服务器使用master secret生成会话密钥。 此密钥是对称密钥,用于加密和解密在SSL会话期间交换的信息,并验证信息的完整性。
9. CS :发送消息通知后,客户端的消息用会话密钥加密。 客户端发送独立的“加密”消息,指示握手的客户端部分已完成。
应用数据的传输过程为 :
1 ) APP应用程序将APP应用程序数据提交到本地SSL
2 )发送方的SSL根据需要:
a )使用指定的压缩算法压缩APP应用程序数据;
b )使用哈希算法为压缩的数据计算哈希值;
c )用加密算法将哈希值与压缩数据一起加密;
3 )密文通过网络传递给对方
4 )接收端的SSL
用相同的加密算法解密密文,得到明文;
用相同的散列算法散列明文中的APP应用数据;
所计算的哈希值与明文中的哈希值进行比较;
5 )如果匹配,则明文有效,接收方的SSL将对明文进行解压缩后得到的APP应用数据传递给APP应用层。 否则放弃数据,向发送方发送警告消息。 严重错误可能会导致重新协商或连接中断。
SSL握手协议握手流程无客户端认证的全握手过程
有客户端认证的全握手过程
会话恢复过程
报文格式
客户端假冒
因为SSL协议设计初衷是对Web站点及网上交易进行安全性保护,使消费者明白正在和谁进行交易要比使商家知道谁正在付费更为重要,为了不致于由于安全协议的使用而导致网络性能大幅下降, SSL协议并不是默认地要求进行客户鉴别,这样做虽然有悖于安全策略,但却促进了SSL的广泛应用。
针对这个问题,可在必要的时候配置SSL协议,使其选择对客户端进行认证鉴别。
无法保护UDP应用
SSL协议需要在握手之前建立TCP连接,因此不能对UDP应用进行保护。如果要兼顾UDP协议层之上的安全保护,可以采用IP层的安全解决方案。SSL协议不能对抗流量分析
由于SSL只对应用数据进行保护,数据包的IP头和TCP头仍然暴露在外,通过检查没有加密的IP源和目的地址以及TCP端口号或者检查通信数据量,一个通信分析者依然可以揭示哪一方在使用什么服务,有时甚至揭露商业或私人关系的秘密。进程中主密钥泄漏
除非SSL的工程实现大部分驻留在硬件中,否则主密钥将会存留在主机的主存储器中,这就意味着任何可以读取SSL进程存储空间的攻击者都能读取主密钥,因此,不可能面对掌握机器管理特权的攻击者而保护SSL连接,这个问题要依靠用户管理策略来解决。