关于国密HTTPS 的那些事(一)
关于国密HTTPS 的那些事(一)
随着《密码法》密码法的颁布与实施,国密的应用及推广终于有法可依。而对于应用国密其中的一个重要组成部分----国密HTTPS通信也应运而生。为了大家更好的了解国密HTTPS相关的知识,接下来打算和大家一起分享关于国密HTTPS 的那些事。聊一聊关于HTTPS通信协议本身;聊一聊为什么要有这些协议;以及国密SSL协议到底又是如何对一个网站进行数据加密的;国密SSL协议中又使用了哪些国密算法;国密的双证书和传统的RSA证书单证书在握手协商中又有什么区别等等,由于篇幅较长,时间有限,所以只能选择逐步和大家分享。
为了让更多的朋友看懂和了解这个行业和领域,明白其中的内容,本文用通俗易通、轻松愉快的方式来表达解析这些枯燥的词汇。
1.关于HTTPS
讲到https通信,那就避免不了要讲到枯燥乏味的通信协议,相信大家在上网的时候肯定会有意无意的都会见到HTTP、 HTTPS、SSL、TLS 等 这些关键字或标签。那么我们先简单的了解一下他们代表的含义 ,然后梳理一下它们之间的关系。
HTTP: (HyperText Transfer Protocol)超文本传输协议,相信大家都不陌生,打开浏览器就能看到。
SSL:( Secure Sockets Layer )安全套件字层。可分为两层: SSL记录协议(SSL Record Protocol)和 SSL握手协议(SSL Handshake Protocol)。
TLS :( Transport Layer Security )传输层安全协议。也分为两层 TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。
之所以这么表达,就是让聪明的你看出其中的端倪。细心的朋友肯定会发现,SSL 和TLS怎么这么相似啊,难道?对!你的直觉就体现了他们之间的关系。TLS就是建立在SSL3.0协议规范之上的协议。所以很多时候你会发现他们俩是被绑定在一起呈现的SSL/TLS。要硬说他们的关系,用时下的网络语言描述那就是:有点像CP,又好似前浪和后浪。至于这些协议怎么用后面会介绍到。
HTTPS: 就是HTTP + SSL/TLS。
理清楚了他们的关系,我们就算是入门了。至于为什么要把http协议变成https。相信大家都很清楚,因为少了s,就像光着身子在人潮涌动的人流中奔跑。只要别人想看,你的脚步,永远比不过人家看的你速度,甚至还有人会驻足,对你注目。 好像还有点押韵,skr...。
所以对一个http的站点来说,毫无隐私可言,更谈不上安全了。所以赶紧给你的站点穿上“衣服”吧。
- 关于协议
前面说了https,说到这里,问题又来了。既然说部署了https,就像给网站穿了“衣服”,保护住了自己的隐私,那么这个“衣服”又是怎么来保护自己的隐私的呢?没错,就是通过SSL/TLS协议,我们先来看看国密协议的整个流程,大家在看整个流程的时候思考一下 SSL/TLS到底解决了哪些问题,他是如果保护你数据安全的?
国密SSL通信依据的协议是中国人民共和国密码行业标准《SSL VPN技术规范GM/T 0024--2014》协议。其协议流程和 传统的使用RSA证书的TLS协议流程基本一致,但是又有区别,因为传统的TLS协议中服务端使用的是单证书,而国密SSL VPN协议在双方的握手的过程中服务端使用的是双证书(签名证书和加密证书)。
下面我们来看国密SSL的主要握手流程:

根据《SSL VPN技术规范GM/T 0024--2014》协议,我们对整个握手的流程整理如下:
下面我们来分析整个过程。
- 客户端首先会发送ClientHello消息与服务端进行握手,在ClinentHello消息中包括了加密套件和随机数。
- 在服务端接收到客户端的握手请求后,会结合自己的证书选择合适的加密套件返回给客户端,并且会产生随机数一起发送。
- 服务端会继续发送Certificate消息给客户端,在Certificate消息中会包含双证书,即签名证书和加密证书,加密证书放在签名证书前面。
- 服务端根据选定的握手协议,接着发送ServerKeyExchange消息。如果选用的是ECC_SM4_SM3套件,则在消息中包含着服务端对双方随机数和服务端加密证书的签名。
- 如果服务端开启了双向认证,则会继续发送CertificateRequest消息给客户端。
- 在客户端接收到服务端的回复后,如果收到了5中发送的消息,则会先回复ClientCertificate消息给服务端,如果没有收到,则跳过此步骤。
- 如果客户端收到了5的请求, 则在发送完6的消息后紧接着发送ClientKeyExchange给服务端,否则ClientKeyExchange是客户端在收到服务端消息后回复给服务端的第一条信息。如果选用的是ECC_SM4_SM3套件,则这条消息的主要内容是用服务端加密证书公钥加密的预主秘钥。
- 如果客户端发送了6的消息,则需要发送CertificateVerify消息给服务端,这条消息用来鉴别客户端是否为证书的合法持有者。
- 最后在服务端和客户端各自在密码规格变革消息后都会发送Finished消息给对方。用于验证秘钥交换过程是否成功,并校验握手过程的完整性。
- 到此整个国密SSL握手的流程就结束了,协议双方会使用协商出来的对称秘钥对通信的数据进行加解密。
以上就是国密SSL通信的整个握手流程。
不知道大家看完之后的感受是什么?是意犹未尽,是五味杂陈,还是有些萌萌达?没关系,这些都不重要!重要的是!!! SSL/TLS协议到底解决了哪些问题?它又是如果通过这个流程来保障数据安全的呢?我们下回接着聊!
原创:探花郎
申请支持国密算法SM2 256位加密证书,来沃通选购吧:
https://wosign.com/price_sm2.htm
关于国密HTTPS 的那些事(一)的更多相关文章
- 关于国密HTTPS 的那些事(二)
关于国密HTTPS 的那些事(二) 三. 需要解决的问题 前文我们了解了https,并梳理了国密https的流程.那么完成这些流程的目的是什么呢?又是怎么来保护数据的安全性呢?我们继续... 上文我们 ...
- C#.NET 国密SM3withSM2签名与验签 和JAVA互通
C# 基于.NET FRAMEWORK 4.5 JAVA 基于 JDK1.8 一.要点 1.签名算法:SM3withSM2. 2.签名值byte[] 转字符串时,双方要统一,这里是BASE64. 二. ...
- bouncycastle 国密SM2 API的使用
摘要:本文不对SM2做过多的介绍,主要介绍java bouncycastle库关于SM2的相关API的使用及注意事项 1. SM2 签名: 注意: 1)签名格式ASN1(描述了一种对数据进行表示.编码 ...
- 谈谈PBOC3.0中使用的国密SM2算法
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/39780825 作者:小马 一 知识准备 SM2是国密局推出的一种他们自己说具有自主 ...
- Bytom国密网说明和指南
比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 国密算法 ...
- 国密算法--Openssl 实现国密算法(基础介绍和产生秘钥对)
国密非对称加密算法 又称sm2,它是采取了ECC(曲线加密算法)中的一条固定的曲线,实际上就是ECC算法. 因为openssl里面不包含sm2算法,所以就要重新进行封装-. - 对于ECC算法我就不介 ...
- 国密SSL证书免费试用申请指南
沃通提供国密SSL证书免费申请试用服务,一次申请可同时签发SM2/RSA双算法证书,试用周期1个月,用于测试国密SM2 SSL证书的运行效果和SM2/RSA双证书部署效果. 试用产品:SM2/RSA双 ...
- 国密SSL证书申请免费试用
沃通提供国密SSL证书免费申请试用服务,一次申请可同时签发SM2/RSA双算法证书,试用周期1个月,用于测试国密SM2 SSL证书的运行效果和SM2/RSA双证书部署效果. 试用产品:SM2/RSA双 ...
- 部署国密SSL证书,如何兼容国际主流浏览器?
国密算法在主流操作系统.浏览器等客户端中,还没有实现广泛兼容.因此,在面向开放互联网的产品应用中,国密算法无法得到广泛应用.比如,在SSL证书应用领域,由于国际主流浏览器不信任国密算法,如果服务器部署 ...
随机推荐
- C#根据输入的字符串来创建类的实例
abstract class Vehicle { public abstract void Drive(); } class Car : Vehicle { public override void ...
- 二、vue组件化开发(轻松入门vue)
轻松入门vue系列 Vue组件化开发 五.组件化开发 1. 组件注册 组件命名规范 组件注册注意事项 全局组件注册 局部组件注册 2. Vue调试工具下载 3. 组件间数据交互 父组件向子组件传值 p ...
- 如果服务器数据更新了,CDN的数据是怎么及时更新的
A:cdn一般用来存静态资源.拿网站来说,当用户访问网站时静态资源从cdn加载.cdn向后段源服务器请求资源并缓存,这个请求过程是周期性的,自动的,称为回源. 当你更新了一个文件,现在正巧还没到cdn ...
- Docker与数据:三种挂载方式
操作系统与存储 操作系统中将存储定义为 Volume(卷) ,这是对物理存储的逻辑抽象,以达到对物理存储提供有弹性的分割方式.另外,将外部存储关联到操作系统的动作定义为 Mount(挂载). Dock ...
- 1TB是多大?
TB是计算机的存储单位,用来描述计算机的存储容量.另外还有GB.MB.KB.B.就像长度单位米.分米.厘米.毫米一样,它们之间有换算关系: 1KB = 1024B 1M = 1024KB 1GB = ...
- Go并发控制--Channel篇
目录 1. 前言 2. 使用channel控制子协程 2.1 使用场景 2.2 总结 1. 前言 我们考虑这么一种场景,协程A执行过程中需要创建子协程A1.A2.A3-An,协程A创建完子协程后就等待 ...
- mycat《对应关系》
- C# - 习题07_计算1分2分5分硬币各有多少枚
时间:2017-09-08 整理:byzqy 题目:现在有1分.2分.5分硬币共100个,总金额为2.46元,请用程序计算出1分.2分.5分各有多少枚,有多少种算法? 这是最近面试遇到的一个题目,刚开 ...
- [编译] 10、kconfig 入门指导教程
目录 前言 1. 安装 kconfig 2. 克隆一个 demo 3. 运行 kconfig 4. 源码解析 4.1 选择题目设计模板 4.2 填空题目设计模板 4.3 判断题目设计模板 5. 产物解 ...
- C# Equals方法和==有什么区别
开发工具:VS2019 一.关于这两个比较,需要从值类型和引用类型两方面来说 (A)先说值类型 上图: 因为在对值类型进行比较时候,不管 .Equals() 方法还是 == 方法,都是对值类型变量(图 ...