zoukankan      html  css  js  c++  java
  • SSL协议

    体系结构

    SSL是一个中间层协议,在开放式互联参考模型中,SSL介于传输层和应用层之间,属于Socket层的实现,与应用层协议无关,可以透明的建立在应用层协议之上

    SSL是一个分层协议,由记录层和握手层组成。其中,握手层包含SSL握手协议,SSL修改密码规范协议,SSL告警协议,记录层包括SSL记录协议

    SSL握手协议

    SSL握手协议建立在SSL记录协议之上,用于在实际的数据传输开始前通信双方进行身份认证,加密算法协商,加密密钥交换等

    握手协议由一系列在客户和服务器间交换的报文组成。每个报文由类型,长度,内容三部分组成

    1.类型(1字节),指SSL握手协议报文类型
    2.字节(3字节),以字节为单位的报文长度
    3.内容。使用报文有关的内容参数

    SSL修改密码规范协议

    为了保障SSL传输过程的安全性,客户端和服务器双方应该每隔一段时间改变密码规范。

    该协议的报文由单个字节消息组成,是最为简单的协议

    SSL告警协议

    如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息。

    该协议的报文由两个字节组成,第一个字节指明告警的类别,第二个字节指明告警的类型

    警示消息又两种:

    1. 告警消息。通信双方仅记录日志
    2. 致命错误。通信双方立即终断会话,并消除本方缓存中的会话记录

    SSL记录协议

    记录协议建立在可靠的传输协议之上,包括了记录头和记录数据格式的规定,为高层协议提供基本的安全服务,具体实施数据的封装,压缩/解压缩,加密/解密,计算和校验MAC等与安全有关的操作。

    1.内容类型(8位)。用以说明封装的高层协议。已经定义的内容类型有:握手协议,修改密码协议,告警协议和应用数据协议
    2.主要版本(8位)。SSL的主要版本
    3.次要版本(8位)。SSL的次要版本
    4.压缩长度(16位)。明文数据以字节为单位的长度,如果压缩则是压缩后的长度。


    SSL协议的安全实现

    1.保密性。SSL协议利用对称密钥算法对传输的数据进行加密
    2.身份认证性。SSL协议基于证书对服务器和客户端进行认证,确保数据发送到正确的客户端和服务器,其中客户端认证是可选的
    3.完整性。SSL协议使用MAC算法来校验数据的完整性

    SSL协议的握手过程

    1.客户端向服务器发送问候消息,该消息包含SSL版本号,随机数,会话ID,密码套件,压缩方法等信息

    • 随机数。一个用于生成主密钥的32字节随机数
    • 会话ID。客户端在此次连接中想使用的会话标识符
    • 密码套件。每个密码套件以SSL开头,用WITH分割密钥交换算法,加密算法,散列算法

    2.服务器向客户端返回问候消息
    3.服务器将自己的证书附在问候消息之后,使客户端能用服务器证书中的公钥认证服务器
    4.密钥交换方法有6种:无,RSA,匿名Diffle-hellman,固定Diffle-hellman和Fortezza。如果阶段一协商的交换算法为Fortezza,则服务器需要向客户端发送一条服务器密钥交换消息。
    5.如果服务器要求验证客户端,则向客户端发送一个客户证书请求
    6.服务器发送问候结束消息,并等待客户端响应

    7.客户端利用服务器响应消息认证服务器的真实身份,若果服务器要求认证客户端,客户端就对双方都已知且在握手过程中的唯一一段数据进行签名,然后把签名后的数据连同自己的证书发送给服务器。
    8.客户端密钥交换阶段,客户端根据交互得到的所有信息生成会话预备主密钥pre_master_sercet,并用服务器的公钥加密后发送给服务器

    9.客户端利用pre_master_sercet生成主密钥master_sercet,然后利用主密钥生成会话密钥session_sercet,客户端向服务器发送一条修改密码规范消息,通知服务器以后从客户端来的消息将用session_sercet加密
    10.客户端向服务器发送握手结束消息,表明握手过程中客户端部分已经完成
    11.服务端利用私钥解密pre_master_sercet,利用相同的方式生成主密钥master_sercet,再生成会话密钥session_sercet,通知客户端以后从服务端来的消息将用session_sercet加密
    12.服务端向客户端发送握手结束消息,表明握手过程中服务端部分已经完成

  • 相关阅读:
    [Spark][Python][DataFrame][RDD]DataFrame中抽取RDD例子
    [Spark][Python][DataFrame][RDD]从DataFrame得到RDD的例子
    [Spark][Python][DataFrame][Write]DataFrame写入的例子
    机器视觉:SSD Single Shot MultiBox Detector
    python中类的创建和实例化
    Gram格拉姆矩阵在风格迁移中的应用
    【证明】【一题多解】【等价转换】—— 排列组合的计算
    【证明】【一题多解】—— 负梯度方向的证明
    keras中VGG19预训练模型的使用
    软件开发 —— 过程资产与交付件
  • 原文地址:https://www.cnblogs.com/goOtter/p/10255676.html
Copyright © 2011-2022 走看看