最近研究有关SSL协议的物联网安全协议,看了很多资料并且结合TASSL在ubuntu上跑了一个简单的demo,因此有了一些自己的理解,那么就详细讲解一下我所知道的SSL,相信这一篇文章就可以让你全面了解SSL。

SSL安全套接字协议

  • 什么是SSL?
  • SSL的体系结构
  • 国密SSL
  • SSL加密方式
    • 数字证书
  • SSL通信过程
  • SSL通信demo示例
    • 1.Client_Hello
    • 2.Server_Hello
    • 3.Client_Certificate
    • 4.1 Change Cipher Spec
    • 4.2 Encrypted handshake Message
  • 一些额外的小知识

什么是SSL?

SSL:Secure Sockets Layer 安全套接字协议,位于 TCP/IP 协议与各种应用层协议之间,基于HTTP之下,TCP之上的一个可选协议层,为数据通讯提供安全支持。

最开始HTTP在传输数据时使用的是明文,是不安全的。为了解决这个隐患,网景(Netscap)公司推出了SSL。HTTPS之所以安全就是因为加持了SSL这个外挂来对传输的数据进行加密。(HTTP+SSL)。

HTTPS = HTTP(超文本传输协议) + SSL(安全套件字层)/TLS(传输层安全协议)

那么一定会有人有疑惑,SSL和TLS到底是什么关系,为什么他俩总是一起出现,那是因为HTTPS的推出受到了很多人的喜爱,所以SSL就要不断的更新换代,当SSL更新到3.0时, 互联网工程任务组(IETF)对SSL3.0进行了标准化,并添加了少数机制,并将其更名为TLS1.0 安全传输层协议(Transport Layer Security),目前最新的是TLS1.3。

SSL的体系结构

SSL 协议可分为两层:记录协议和握手协议

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

记录协议:它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

国密SSL

中国的最新相关安全标准,就是要把其中的安全实现更换成国密算法。简而言之,国密SSL就是SSL/TLS协议的国密版本
国密SSL通信依据的协议是中华人民共和国密码行业标准《SSL VPN技术规范GM/T 0024–2014》协议。这可是个好东西,有条件的可以自己下载看一下。

国密SSL协议包括:握手协议密码规格变更协议报警协议、网关到网关协议,记录层协议

握手协议:用于身份鉴别和安全参数协商

密码规格变更协议:用于通知安全参数的变更,这个很重要,解释一下,例如当双方协商好加密密钥,接下来要更换密钥或者使用协商好的密钥进行通信时就需要密码变更协议,更通俗来讲就是你说四川话,我说上海话,我们之间交流需要规定一种双方听得懂的语言才行。

报警协议:用于关闭通知和对错误进行报警

网关到网关协议:用于建立网关到网关的传输层隧道

记录层协议:用于传输数据的分段、压缩及解压缩、加密及解密、完整性校验等

SSL加密方式

SSL加密主要使用非对称加密方式

非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。

数字证书

数字证书:互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印。

数字证书包括:签发证书的机构,加密算法,Hash算法,公钥,证书到期的时间等。

SSL通信过程

第一步:客户端提供:
1.支持 SSL 协议版本号
2.一个客户端随机数(这是第一个随机数)
3.客户端支持的加密方法等信息;

第二步:服务端收到信息后,确认双方使用的加密方法,并返回:
1.数字证书
2.一个服务器生成的随机数(这是第二个随机数)等信息;

第三步:客户端确认数字证书的有效性,然后生成一个新的随机数,然后使用数字证书中的公钥,加密这个随机数,发给服务端;

第四步:服务端使用自己的私钥,获取客户端发来的随机数;

第五步:客户端和服务端通过约定的加密方法(通常是AES算法),使用前面三个随机数,生成对话密钥,用来加密接下来的通信内容;

SSL通信demo示例

1.Client_Hello

该消息是客户端Hello消息,作为握手协议的第一条消息。
Handshake type 1个字节
length 3个字节
version 2个字节,客户端在这个会话中使用的协议版本,在本协议中是1.1
random 32个字节,客户端产生的随机信息
session_id_length 1个字节,这是一个可变长字段,其值由服务端决定。如果没有可重用的会话标识或希望协商安全参数,该字段为空,否则表示希望客户端希望重用该会话。
Cipher suit length 2个字节,密码套件的长度
Cipher suit 10个字节,客户端所支持的密码套件列表,每个密码套件包括一个密钥交换算法,一个加密算法,和一个校验算法,服务端会在密码套件列表中选择一个与之匹配的密码套件。
Compression_methods_length 1个字节
Compression_methods 1个字节 客户端所支持的压缩算法列表

2.Server_Hello

Server Hello 该消息为服务端Hello消息,如果能够从client_hello中找到匹配的密码套件,服务端就会发送这个消息。
session_id_length 1个字节
session_id 32个字节,服务端使用的会话标识,如果客户端hello消息中的会话标识不为空,且服务端存在匹配的会话标识,则服务端重用与该标识对应的会话建立连接,并回应一样的会话标识,否则服务端产生一个新的会话标识,建立一个新的会话。

Server Certificate 服务端证书消息

服务端必须发送证书给客户端,紧跟着hello消息之后。本消息的内容为服务端的签名证书和加密证书。
服务器证书:签名证书在前,加密证书在后。
签名: 防伪造,防抵赖
加密:防偷窥

version 版本号 1个字节 ,后面多出2个字节
serialNumber 序列号, 20个字节 ,由发行者给予每一个证书的分配编号
signature 签名算法标识(基于SM3的SM2签名算法)
Algorithm Id : 算法id: 1.2.156.10197.501

3.Client_Certificate

Certificate: 客户端证书消息
有三个证书: 签名证书,CA根证书,加密证书

4.1 Change Cipher Spec

4.2 Encrypted handshake Message

Change Cipher Spec: 在后续的连续发送过程中,服务端都可以采用该报文通知客户端,后续将采用新秘钥进行数据加密通信。
Encrypted handshake Message: 该报文的目的就是,服务端告诉客户端,自己在整个握手过程中收到了什么数据,发送了什么数据。来保证中间没人篡改报文。该数据采用刚才协商好的秘钥进行加密,顺带验证秘钥。

一些额外的小知识

消息摘要

消息摘要也称为散列,是通过单向散列函数对消息的指印或汇总,用于验证数据完整性(即保证消息在发送之后和接收之前没有被篡改)

消息摘要一般有两个基本要求:首先,给定一个消息,应很容易求出消息摘要,而且给定某个消息,消息摘要应该相同。对一个消息(M1)及其消息摘要(MD),不太可能找到另一个消息(M2),使其产生完全相同的消息摘要。散列函数(又称杂凑函数)是对不定长的输入产生定长输出的一种特殊函数。

消息认证码(MAC)

消息认证码 MAC(Message Authentication Code)是一种实现消息认证的方法,也叫数据鉴别码 DAC,它是带有密钥的单向散列函数。MAC 是由消息和密钥的一个函数值 MAC=Ck(M)产生。其中 M 是变长的消息,K 是仅由收发双方共享的密钥,MAC 是定长的认证码。通信双方 A 和 B 共享密钥,当 A 要向 B 发消息时,计算 MAC 并将它附加在消息的后面,发往预定的接收者 B,B 使用共享密钥,对收到的消息计算得出新的 MAC’,判断 MAC 是否与 MAC’相等,若相等说明消息完整。

国密SSL通信协议详细介绍与抓包分析相关推荐

  1. 模块学习4:(2)MQTT协议连接、发布、订阅、心跳、断链等分析和代码实现,并且通过mqtt.fx连接服务器,使用wireshark抓包分析mqtt实现过程

    文章目录 一.MQTT控制报文的结构 (1)固定报头(类型/标志 + 剩余长度) 剩余长度(这个要注意下,要注意它的计算方法,有一点特殊) 可变报头 有效载荷 二.下面直接开整各个具体的报文(MQTT ...

  2. linux 查看握手时间,实战:tcpdump抓包分析三次握手四次挥手

    本文档以实战的形式介绍tcpdump抓包分析三次握手四次挥手的过程. 执行tcpdump命令 tcpdump -n -i ens32 host 192.168.10.10 and 42.186.113 ...

  3. gmssl 国密ssl流程测试

    gmssl 国密ssl流程测试 前言 一 gmssl ssl流程测试 单证书单向认证 二 gmssl ssl 流程 单证书 双向认证 三 gmssl gmtls 流程 双证书 单向认证 四 gmssl ...

  4. 什么是国密SSL证书?和普通SSL证书有什么区别?

    SSL证书能够有效提升网站数据传输的安全性,已成为政府企业网站提升数据安全的标配.而国密SSL证书由于加密算法不同,安全等级更高,逐渐受到越来越多用户的信赖和认可.那么国密SSL证书有哪些特点,它和传 ...

  5. 国密SSL证书正式上线,知道创宇云防御助力金融和重要领域完成国密升级改造...

    ★ 在网络社会化.社会网络化的今天,网络空间正在加速演变为各国国家安全的新战场,密码作为网络空间安全保障和信任机制构建的核心技术与基础支撑,直接关系国家政治安全.经济安全.国防安全和信息安全,也是国家 ...

  6. 国密SSL证书保障网站安全

    国内很多网站为了网站安全都会部署SSL证书,目前市面上申请到的SSL服务器证书基本都是采用RSA国际算法,市场上80%的SSL服务器证书都是由国外CA尤其是美国为主的CA签发的证书. 网络安全就是国家 ...

  7. 国密SSL协议之双证书体系

    1 背景 国密SSL协议使用双证书体系.本文描述了国密双证书体系的组成和差别,并描述了在U盾里面的使用情况. 2 国密SSL双证书 国密SSL协议使用双证书体系,分别称为签名证书和加密证书,服务器和用 ...

  8. linux如何配浏览器证书,部署国密SSL证书,如何兼容国际主流浏览器?

    转自: 国密算法在主流操作系统.浏览器等客户端中,还没有实现广泛兼容.因此,在面向开放互联网的产品应用中,国密算法无法得到广泛应用.比如,在SSL证书应用领域,由于国际主流浏览器不信任国密算法,如果服 ...

  9. 国密浏览器如何完成SM2国密SSL协议协商

    国密浏览器需要遵循国密SSL协议规范GM/T 0024-2014.GM/T 0024-2014没有单独规范 SSL协议的文件,而是在SSL VPN技术规范中定义了国密SSL协议.国密SSL协议(SSL ...

最新文章

  1. 算法炒房三月亏20多亿!房地产巨头大翻车:房价水太深,AI根本把握不住
  2. SAP MM 事务代码MRKO触发的财务凭证不会出现在PO History里
  3. Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs
  4. 《构建之法》阅读笔记2
  5. 复盘-电商产品「分类」功能迭代
  6. 定制kali linux
  7. Centos7中yum安装jdk及配置环境变量
  8. aspose excel中文文档_除了VBA,还有哪些编程语言可以操作Excel文件?
  9. geoserver发布瓦片数据_OpenLayers教程十八:多源数据加载之矢量切片
  10. 同TTX更可爱的层次分析法游戏破解
  11. C#回车切换焦点实现实例解析
  12. sql server 2005管理员手册_执行一条sql语句都经历了什么?
  13. python——extend用新序列扩展其他列表
  14. 华为网络技术大赛-课件整理
  15. laravel-admin使用教程
  16. 为XCode 6 添加新建类模板
  17. N、XR、XD、DR”各代表什么意思
  18. 用C语言编程实现拓扑排序,拓扑排序(一)之 C语言详解
  19. 原谅我一直对B站有误解!
  20. ​雷军辟谣拒投腾讯阿里:想1000万收购网易,丁磊拒了;Gitlab 禁止使用 Windows | EA周报...

热门文章

  1. springboot 分布式 --- 慕课网
  2. 第13章 可视化实战
  3. 习题4-5 换硬币 (20分)
  4. 前端面试精华帖:100个问题如果你回答出80个,那么请把你的简历给我
  5. Java语音SDK接口开发经验及具体开发实现
  6. 【话题】如何看待AI人工智能
  7. 移动硬盘安装kali
  8. 课程linux实验报告,Linux课程综合训练实验报告
  9. 2022级计算机保研历程
  10. 电子科技大学软件工程860考研上岸初试经验分享