ssl握手协议详细解释

https全面讲解——TLS/SSL协议解析 第一部分:什么是https协议? 由于安全方面的考虑目前大部分站点尤其是知名的大站点都是采用https,来代替之前的http。https的广泛使用也被很多人关注和学习。http "调用" SSL/TLS 中的加密算法与协议逻辑实现保密传输。https不能说是一个协议,只能说是一种应用,不过这种应用占绝大部分比例;SSL加密http内容默认使用443端口,SSL还可以加密Email 默认使用995... 阅读详情

本文内容分两部分:

第一部分含有1.2.3.4点,简单总结网页上的一些基本知识

第二部分针对握手协议附上自己的阅读的理解,非常有助于理解知识点和疑问

1. ssl协议体系结构含有两部分:记录协议和握手协议

2. SSL工作过程:

接收方:

(1)接受数据

(2)数据分段

(3)压缩数据(可选)

(4)生成MAC

(5)数据加密

(6)添加SSL记录协议头,发送数据

3.一般我们浏览网页用的是http协议,http协议之间传输数据是明文,这样对于一些敏感信息传送不安全,容易被窃取.网景公司设计了ssl协议,用于对http协议传输的数据进行加密.于是就有了https.最新版本为ssl3.0之后就升级为TLS.

https在传输数据之前要求客户端(浏览器)与服务端之间完成一次握手.在这个过程中确定以后数据传输的密码信息.握手过程中主要用到了非对称加密算法,对称加密算法和HASH算法.

SSL握手协议简要过程:

(1)客户端明文发送自己支持的加密算法集合,SSL最高协议版本号和压缩方法给服务器;

(2)服务器从中挑选一组加密算法和HASH算法,并将自己证书发送给客户端.通常证书包含域名信息,证书颁发机构和加密公钥等.

(3)客户端取得证书后做以下几件事:

(a)验证证书合法性(如:证书颁发机构是否可信,证书中的域名和正在访问的域名是否一致等),如果证书可信,则会在网址旁边出现一把锁,否则给出证书不受信任提示.

(b)浏览器随机生成一个随机数,构成信息内容用(2)中的公钥对其进行加密.

(c)使用约定好的HASH算法对信息内容生成摘要,用自己的私钥对其进行加密,生成签名.同(b)的信息放一起,生成最后的信息一起发给服务器

(4)服务器接受到这些信息如下操作:

使用自己的私钥将信息解密取出秘钥种子(对称算法生成的通信秘钥),用client证书中的给公钥解密签名,取得摘要,使用hash函数对上述信息进行处理得到摘要与刚才的摘要对比,一致则说明没有第三方篡改过.

做了这么多的操作,主要为了确认双方都获得了相同的密码,并且可以成功地加密解密,为后续的数据传输做好一次测试.

简要介绍一下非对称加密算法,对称加密算法和HASH算法.

非对称加密算法用于加密客户端生成的随机密码,因为这个密码是Https数据传输的关键,所以使用了这种加密算法.非对称加密算法会生成公钥和私钥.公钥用于加密数据,因此可以随意传输.公钥用于解密数据,由服务端保管,不可泄露.

对称加密算法用于对真正传输的数据进行加密

HASH算法用于验证数据的完整性.

4.证书

数字证书有很多种:

(1)SSL证书,用于加密HTTP协议,也就是HTTPS.这是一种PKI(公钥基础结构)证书

(2)代码签名证书,用于签名二进制文件,比如内核驱动,Fire'fox插件,java代码签名

(3)客户端证书,用于加密邮件

(4)双因素证书,网银专业版使用的USB  Key里面用的就是这种类型证书

-------------------------------------------------------------

我自己的理解:参考博文

A=Client ;B=server

A给B发送加密请求

B收到请求后给A发送加密用的公钥

如何确保A接受到的公钥就是B的呢,有可能被篡改,这时就用到数字证书,由CA颁发的数字证书中含有B的公钥等信息,同时CA用自己的私钥对B的公钥进行加密,这样在A收到数字证书后,用CA的公钥解密,就可以确定收到的公钥确实是B的.

A收到公钥后对信息进行加密,并发送给B

B收到信息后用私钥解密,得到信息

还有一个问题,如何确保发送的信息没有被改动过呢?这里用到数字签名;

数字签名的原理是:首先通过hash函数对信息进行处理得到,摘要,然后A通过自己的本地私钥对摘要加密,生成数字签名,然后发送给B,B在收到A的信息后,使用公钥对数字签名解密,得到摘要,这里也可以证明是A发送的,即身份验证了,然后B也通过HASH函数对信息处理得到摘要,与前面传过来的摘要进行对比,两者一致则证明信息没有被动过.

注释:

(1)这里已经假设B有A的公钥,实际上B也是通过发送双向验证请求,得到A的数字证书,才拿到A的公钥的,所以说数字证书是好东西.同理B也是可以对自己发送的信息进行数字签名的,以确保自己发送的信息没有被改动过.

(2)以上说的公钥,私钥加密都属于非对称加密算法,对称加密算法方式是用来对后面的传送数据进行加密的;可以这样理解:之所以叫非对称是因为,私钥只有自己才有,对方是没有的.对称加密算法是双方都有的解密方式.

(3)Hash算法是用来保证数据的完整性.

以上说的是SSL协议的握手协议,SSL协议体系结构还有一个记录协议......

记录协议用于交换应用层数据.应用程序消息被分割成可管理的数据块,进行压缩.并附上一个MAC(消息认证代码);然后结果进行加密传输.接受方接受数据后,对它进行解密,之后校验MAC,解压.最后重新组合,还原成信息.最后把数据提交给应用层协议..从这里可以看出SSL协议在TCP/IP网络协议栈的位置..它是夹在应用层协议(Http/Ftp/NNTp)和TCP协议之间的..

-------------------------------------------------------------

下面简要介绍一下各种加密算法:

首先明确使用密码学可以达成以下目的:

数据保密性:防止用户的表示或数据被读取

数据完整性:防止数据被更改

身份验证:确保数据发自特定的一方

(1)对称加密

DES:数据加密标准,速度较快.适用于加密大量数据的场合

3DES:是基于DES,对一块数据用三个不同的秘钥进行三次加密,强度更高(是不是那个三个随机数????)

AES:高级加密标准,是下一代的加密算法标准,速度快,安全级别高’

AES算法原理:

AES算法基于排列和置换运算.排列是对数据进行重新排列,置换是将一个数据单元替换为另一个.其实一种迭代的,对称密码.可以使用128/192/256秘钥..

(2)非对称加密

RSA:是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度是可变的;

DSA:数字签名算法,是一种标准的DSS(数字签名标准);

ECC:椭圆曲线密码编码

1976年,Diffie和Hellman发表一篇文章<<密码学新动向>>,介绍了公钥和私钥概念.后来就提出RSA算法.

后来出现椭圆曲线用于算法.具体的算法内容请查看网址:

http://www.willrey.com/support/ssl_DES.html

ECC和RSA相比,在许多方面都有绝对优势,主要体现在下一方面:

l 抗攻击性强

l 计算量小,处理速度快.ECC总的速度比RSA/DSA要快的多

l 存储空间小

l 宽带要求低.对短消息时,ECC带宽要求却低很多.这使得ECC在无线网络领域具有广泛的应用前景.

下面介绍一下数字签名:

介绍之前.先引入散列的概念

散列是信息的提炼,长度比信息小的多,为固定长度.

散列特性:

(1)不可逆性.指通过散列结果无法推出任何原始信息

(2)雪崩效应.原始信息哪怕变化一位,也会导致散列结果的明显变化.

(3)防冲突.即找不出具有相同散列结果的两条信息.

具备以上特性的散列结果可以用于验证信息是否被修改.

常见散列函数有:

l MD5

l SHA(secure hash algorihtm) 可以对任意长度的数据运算生成一个160位的数值.

可以使用命令行计算文件的MD和SHA值

# MD5 digest

> openssl dgst -md5 filename

 

# SHA1 digest

> openssl dgst -sha1 filename

通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。

MAC(信息认证代码)就是一个散列结果,其中部分输入信息是密码,只有知道这个密码的参与者才能再次计算和验证MAC的合法性.

  加密算法的选择

前面的章节已经介绍了对称解密算法和非对称加密算法,有很多人疑惑:那我们在实际使用的过程中究竟该使用哪一种比较好呢?

我们应该根据自己的使用特点来确定,由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。

对称加密算法不能实现签名,因此签名只能非对称算法。

由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。

在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可..

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

阮一峰老师的讲解


该篇文章介绍了握手协议的理解,下一篇文章重点介绍如何在linux下创建自己的CA证书,以及如何利用根CA证书签署中间CA证书,最后使用中间证书签署其他client证书请求文件

覆冰监测系统服务器,基于分布式光纤振动传感的电缆覆冰舞动监测系统 监测意义我国高压输电网络已经形成了全国联网的格局,总规模世界第一。2018年底,全国发电装机容量已达19.0亿千瓦,全国 220kV及以上输电线路回路长度超过71万公里。我国电力能源集中在西北,而用户则集中在华东华南,所以高压输电网络的特点是长距离,大跨度,途径的自然环境多种多样。在高湿高寒的恶劣环境中,输电线非常容易发生覆冰舞动事故,由于覆冰形成的规则的非圆断面的缆线在风的激励下形成谐振,造成低... 阅读详情

相关推荐

Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战

本文介绍了ClangStaticAnalyzer静态代码分析工具的使用方法。该工具基于Clang/LLVM,可检测C/C++代码中的内存泄漏、空指针等常见错误。主要内容包括:安装指南(Ubuntu/macOS/Windows)、命令行使用方法、CMake项目集成方案、GitHub Actions自动化分析配置,以及HTML报告生成与查看。文章还提供了官方资源链接,帮助开发者系统掌握从本地调试到持续集成的完整静态分析工作流,提升代码质量保障能力。适用于需要在开发过程中实施静态分析的C/C++项目。

u014358031的博客 2156

SSL的组成,其中握手协议和记录协议实现、密钥生成过程及其评价

由两部分组成:SSL记录协议和SSL握手协议 1、握手协议 SSL中最复杂的协议,负责建立当前会话状态的参数,使得服务器和客户能协商一个协议版本、选择密码算法和哈希算法、压缩算法、会话ID等,并使用公钥加密技术通过一系列交换信息在客户和服务器之间生成共享的密钥。在使用会话传输任何一数据之前,必须先用握手建立连接,实现相互验证,协商加密算法和生成密钥等内容。 握手协议由一系列在客户和服务器之间的报文交换组成。每个报文由3个字段组成,报文类型、报文长度、报文内容 基本过程: (1)客户机使用IE浏..

jianqu6506的博客 3613

电机传动机构的转矩与惯量折算

参考《工业运动控制》

庐州牧 1万+

10、SSL协议

SSL协议 SSL(Secure Sockets Layer)为“安全套接层协议 ”,它是网景(Netscape)公司提出的基于 WEB 应用的安全协议。SSL协议指定了一种在应用程序协议(如HTTP、Telnet、NNTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。SSL可以和应用层的http协议配合形成https,也可以保证邮件协议的安全。当前版本为3.0。 SSL协议主要用于提高应用程序之间数据的安全性。

安全学习笔记 3534

ISO2626 --- Item Definition相关项定义

本文并不是针对ISO26262的一个项目,而是针对ISO26262的规范,我们在相关项定义阶段,我们需要做什么,我们的文档需要包含哪些内容的一个描述。

wj博客 909

Claude Code 100个真实案例 - 用AI搭建LangChain多工具Agent(自主搜索+查询)

本案例展示如何使用 Claude Code 搭建一个 LangChain 多工具 Agent 系统。Agent 能够自主决定调用搜索引擎、数据库查询、天气查询、计算器等工具,像人类助手一样拆解问题并逐步解决。

yueyeguzhuo的专栏 558

SSL协议详解

SSL)是一个安全协议,为基于TCPTransmission Control Protocol)的应用层协议提供安全连接,SSL介于TCP/IP协议栈第四层和第七层之间。主要提供私密性、完整性和身份验证;我们常见的就是 SSL为HTTP)协议提供安全连接。SSL协议是一种在两个机器之间提供安全通道的协议,它具有保护数据传输以及识别通信机器的功能。内的愈来愈多的浏览器支持SSL,SSL协议成为应用最广泛的安全协议之一。

m0_67756456的博客 9267

详细分析一下华为自研的MetaERP系统中的合并报表流程与规则

华为MetaERP合并报表系统针对其全球化复杂业务量身定制,采用五层自动化架构:统一数据采集、多币种转换、智能对账协同、规则化抵消处理及多维分析输出。系统核心在于可配置的智能规则引擎,涵盖股权合并范围、内部交易抵消、未实现利润计算等复杂场景,实现多准则并行处理。相比传统软件,该系统深度集成业务数据、支持准实时合并,并通过参数化配置快速适应组织变革,成为华为全球财务管控的"数字神经中枢",在效率、准确性和安全性上具有显著优势。

金牌架构师 673

SSL工作过程

SSL介绍: SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 应用广泛,已经成为互联网上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLS(Transport Layer Security传输层安全协议)。 SSL协议分为两层: SSL记录协议 (SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能。 SS

xnasda的博客 8079

Python爬虫-爬取猫眼演出数据

本文是该专栏的第53篇,后面会持续分享python爬虫干货知识。猫眼平台除了有影院信息之外,它还涵盖了演出信息,比如说“演唱会,音乐节,话剧音乐剧,脱口秀,音乐会,戏曲艺术,相声”等等各种演出相关信息。而本文,笔者将以猫眼平台为例,基于Python爬虫实现获取各种演出信息的数据。废话不多说,具体细节部分以及详细思路逻辑,笔者将在正文结合完整代码进行详细说明。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 568

虚拟电厂功率预测最佳实践白皮书

虚拟电厂(VPP)通过聚合分散的可再生能源资源,为电网提供可观测、可调度和可交易的解决方案。本文提出了一套功率预测方法论,并给出LSTM实现脚本,涵盖资源接入、数据治理、预测模型设计及市场交易闭环。针对风-光-储-负荷混合场景,该方法论强调轻量化部署和滚动优化,可有效提升预测精度和调度收益。未来研究将融合深度气象预报和强化学习,进一步优化VPP的协同调度能力。

专注AI大模型,软件混淆,授权 377

SSL握手协议详细流程

导读 SSL(Secure Socket Layer)安全套接字协议是运行在应用层和TCP层之间的安全机制。保证上层应用数据传输的保密性、完整性以及传输双发身份的合法性。 概述 SSL(Secure Socket Layer)安全套接字协议是运行在应用层和TCP层之间的安全机制。保证上层应用数据传输的保密性、完整性以及传输双发身份的合法性。 1.传输加密性:握手协议定义会话密钥后,...

Listen2You的博客 5052

RK3568平台开发系列讲解(NPU篇)什么是RKNPU

📢本篇章将介绍RKNPU。

内核笔记 4354

深究SSL协议层握手过程

前一篇文章整理了关于https的一些知识点,其中涉及到SSL/TLS层的协议握手细节讲的不是很细致,本文再着重通过抓包分析下这个过程。 环境:100.119.154.14 --客户端;218.18.162.102 --服务端; 动作:客户端请求一个index.html页面,wireshark抓包的正式这个过程。 SSL协议包含两层: ①SSL Record Protocol ②SSL Handshake Protocol SSL协议所在层级(传输层之上,应用层之下) SSL协议..

zpsimon的博客 781

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

https(ssl)协议以及wireshark抓包分析与解密

根据之前一篇安全协议的分析中分析了ssl协议,先回顾下ssl协议的内容然后用wireshark来抓包看具体流量包内容。          SSL协议栈位置介于TCP和应用层之间,分为SSL记录协议层和SSL握手协议层。其中SSL握手协议层又分为SSL握手协议、SSL密钥更改协议和SSL警告协议。SSL握手协议作用是在通信双方之间协商出密钥,SSL记录层的作用是定义如何对上层的协议进行封装。S

Q1n6 11万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IIS安装2个SSL_SSL协议介绍

SSL协议介绍 当下互联网可以用千疮百孔来形容,各种的安全事件被爆出,近几年来SSL证书的横空出世,可谓暂时缓解了这一问题,那么很多人会问SSL的协议是什么呢?最近看到一篇介绍SSL协议很好的文章,分享给大家:在介绍SSL协议之前,我们先来回顾下什么是SSL?SSL是一种安全套接层协议,是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。SSL协议的三个特性①...

weixin_39989215的博客 312

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SSL协议到底工作在OSI模型中的那一层?

一、SSL是啥?  SSL(Secure Socket Layer安全套接层)以及其继承者TSL(Transport Layer Security 传输层安全)是为了网络通信安全 提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。 二、SSL具体有啥内容? SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层

Better2326的专栏 4万+

SSL握手过程

一、SSL握手有三个目的:1. 客户端与服务器需要就一组用于保护数据的算法达成一致;2. 它们需要确立一组由那些算法所使用的加密密钥;3. 握手还可以选择对客户端进行认证。二、SSL握手过程:1. 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器;2. 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证...

weixin_34184158的博客 108

SSL证书基于SSL协议如何工作

SSL(Secure Sockets Layer 安全套间层)是一个不依赖于平台和运行程序的协议,位于TCP/IP协议与各种应用层协议之间,为数据通信提高安全支持。超文本传输协议HTTP协议,被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如银行卡号、密码等支付信息。为了解决HTTP协议的这一缺陷,需要使用另一种协议:

weixin_73236460的博客 958

SSL协议之握手协议

一、握手协议 握手协议是客户机和服务器用SSL连接通信时使用的第一个子协议,握手协议包括客户机与服务器之间的一系列消息。SSL中最复杂的协议就是握手协议。该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。握手协议是在应用程序的数据传输之前使用的。 每个握手协议包含以下3个字段 1、Type:表示10种消息类型之一。 2、Length:表示

实践求真知 1万+

安全套接层SSL协议

SSL(Secure Sockets Layer)协议最先是由著名的Netscape公司开发的,现在被广泛用于Internet上的身份认证与Web服务器和用户端浏览器之间的数据安全通信。制定SSL协议的宗旨是为通信双方提供安全可靠的通信协议服务,在通信双方间建立一个传输层安全通道。SSL使用对称加密来保证通信保密性,使用消息认证码(MAC)来保证数据完整性。SSL主要使用PKI在建立连接时对通

2951

ssl握手协议中的CipherSuite

ssl握手协议中的CipherSuite

gdfhhj的博客 6881

ssl协议握手过程

转自:http://www.cnblogs.com/jifeng/archive/2010/11/30/1891779.html SSL协议的工作流程:       服务器认证阶段:1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的

xinguanyiban07的专栏 443

SSL TLS 协议概要

SSL 协议概要 [RFC-2246] [handshake | alert | change_cipher_spec | application_data] ------------------------------------------------------------------                     Record Protocol chan

yzy9508的博客 583

SSL

SSL VPN HTTP超文本(包含超链接的文本)传输协议,通过HTML(超文本语言)语言组织。无状态(请求完就会释放连接)(cookie解决虽然无状态但是第二次再请求时,cookie有记录)、无连接(服务器对上次请求无记忆,每次都会是新请求;Cookie机制)协议URL统一资源定位符,由协议(HTTP/samtp/ftp)、主机(域名为了解决主机名记不住)和端口(默认80)以及文件名组成:htt...

weixin_43473573的博客 1426

OpenSSL-SSL协议

一、OpenSSL简介 OpenSSL是一个基于密码学的安全开发包,整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。其核心是对SSL协议的实现。 二

北海的博客 1674
下一篇: 如何使用openssl创建根CA和中间CA以及签署其他client证书请求
月明则星稀
博客等级 码龄12年 4粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值