Https的加密过程 / 对称加密和非对称加密

HTTPS加密过程详解 文章目录HTTPS协议加密的相关概念HTTPS工作过程对称加密非对称加密中间人攻击引入证书机制 HTTPS协议 HTTPS协议也是应用层的一种网络协议,与HTPP协议报文格式都一样,仅在HTTP协议的基础上,引入了加密层。由于HTTP协议内容的明文传输,导致其传输过程十分不安全,所以加密HTTPS可以简单理解为HTTP的安全版。 明文传输时非常不安全的操作,可能会面临运营商劫持篡改信息以及黑客劫持窃取用户隐私等隐患。HTTPS就是在HTTP的基础上进行了加密操作,进一步保障用户信息的安全性。 加密的相 阅读详情

先说具体过程

  • client请求服务端(指定SSL版本和加密组件)
  • server返回CA证书+公钥
  • client用机构公钥认证server返回的CA证书上的签名是否正确
  • client生成一个密钥R,用公钥对密钥R加密发送给server server用服务器的私钥解密获取密钥R
  • 后续通信都是采用密钥R进行加密

 

Https和Http区别

WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于传输的数据进行加密传输

目前主流的网站基本上开始默认采用HTTPS作为通信方式,一切的考虑都基于对安全的要求,那么如何对自己的网站配置HTTPS通信,是本文着重介绍的

本文的主要内容包括:https加密传输的原理、如何申请https所用的CA证书,如何配置WEB服务支持https

https=http+ssl,顾名思义,https是在http的基础上加上了SSL保护壳,信息的加密过程就是在SSL中完成的

首先我们先不谈https,先从一个简单的通讯原理图讲起:

图片.png

http通信原理

客户端发送一句client hello给服务器端,服务器端返回一句serverhello给客户端,鉴于本文讨论是https的加密主题,我们只讨论信息传输的加密问题, 欲实现客户端和服务端发送的信息client hello 和server hello,即使中间的包被窃取了,也无法解密传输的内容

http:client hello和server hello在通讯的过程中,以明文的形式进行传输,采用wireshark抓包的效果如下图:图片.png

 有没有感觉这个的信息传输是完全暴露在互联网上面,你请求的所有信息都可以被窥测到,不过不用担心,我们的安全信息现在都是采用https的传输,后面讲到https的时候大家心里会顿时轻松。但这不是最关键的,http的传输最大的隐患是信息劫持和篡改,如下图:

http×××1.png

可以看到,http的信息传输中,信息很容易被×××给劫持,更有甚者,×××可以伪装服务器将篡改后的信息返回给用户,试想一下,如果×××劫持的是你的银行信息,是不是很可怕。所以对于http传出存在的问题可以总结如下:

(1)信息篡改:修改通信的内容

(2)信息劫持:拦截到信息通信的内容

这些是http不安全的体现,说完http,我们回到本文的主题https,看下人家是怎么保护信息的,所有的请求信息都采用了TLS加密,如果没有秘钥是无法解析传输的是什么信息

图片.png

对于加密传输存在对称加密和非对称加密

对称加密传输

当客户端发送Hello字符串的时候,在进行信息传输前,采用加密算法(上图中的秘钥S)将hello加密程JDuEW8&*21!@#进行传输,即使中间被×××劫持了,如果没有对应的秘钥S也无法知道传出的信息为何物,在上图中信息的加密和解密都是通过同一个秘钥进行的,对于这种加密我们称之为对称加密,只要A和B之间知道加解密的秘钥,任何第三方都无法获取秘钥S,则在一定条件下,基本上解决了信息通信的安全问题。但在现实的情况下(www),实际的通讯模型远比上图复杂,下图为实际的通信模型

图片.png

server和所有的client都采用同一个秘钥S进行加解密,但大家思考下,如果这样的话,无异于没有加密,请做下思考

由于server和所有的client都采用同一个秘钥S,则×××们作为一个client也可以获取到秘钥S,此地无银三百两。所以在实际的通讯中,一般不会采用同一个秘钥,而是采用不同的秘钥加解密,如下图

图片.png

通过协商的方式获取不同的秘钥

如上图,A和server通信采用对称加密A算法,B和server通信采用对称秘钥B算法,因此可以很好的解决了不同的客户端采用相同的秘钥进行通讯的问题

那现在又存在问题了,A通过明文传输和server协商采用了加密算法A,但这条信息本身是没有加密的,因此×××们还是可以窃取到秘钥的,整个的通讯仍然存在风险。那该如何处理呢?有人说,把这条信息(协调秘钥的过程)再次加密,那是不是还要协商加密秘钥,如此反复,永无止境。从根本上无法解决信息通讯的安全问题

 如何对协商过程进行加密

图片.png

非对称加密

在密码学跟对称加密一起出现的,应用最广的加密机制“非对称加密”,如上图,特点是私钥加密后的密文,只要是公钥,都可以解密,但是反过来公钥加密后的密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有的人。

基于上述的特点,我们可以得出如下结论:

(1)公钥是开放给所有人的,但私钥是需要保密的,存在于服务端

(2)服务器端server向client端(A、B.....)的信息传输是不安全的:因为所有人都可以获取公钥

(3)但client端(A、B.....)向server端的信息传输确实安全的:因为私钥只有server端存在

因此,如何协商加密算法的问题,我们解决了,非对称加密算法进行对称加密算法协商过程。

对与非结合.png

在这里我们做个小结:
信息通信采用http是不安全的,存在信息劫持、篡改的风险,https是加密传输,是安全的通信,对于https加密的过程,我们首先介绍的对称加密,采用对称加密进行通信存在秘钥协商过程的不安全性,因此我们采用了非对称加密算法解决了对协商过程的加密,因此https是集对称加密和非对称加密为一体的加密过程

安全的获取公钥

细心的人可能已经注意到了如果使用非对称加密算法,我们的客户端A,B需要一开始就持有公钥,要不没法开展加密行为啊。

这下,我们又遇到新问题了,如何让A、B客户端安全地得到公钥

图片.png

client获取公钥最最直接的方法是服务器端server将公钥发送给每一个client用户,但这个时候就出现了公钥被劫持的问题,如上图,client请求公钥,在请求返回的过程中被×××劫持,那么我们将采用劫持后的假秘钥进行通信,则后续的通讯过程都是采用假秘钥进行,数据库的风险仍然存在。在获取公钥的过程中,我们又引出了一个新的话题:如何安全的获取公钥,并确保公钥的获取是安全的, 那就需要用到终极武器了:SSL 证书(需要购买)和CA机构

SSL证书.png

如上图所示,在第 ② 步时服务器发送了一个SSL证书给客户端,SSL 证书中包含的具体内容有证书的颁发机构、有效期、公钥、证书持有者、签名,通过第三方的校验保证了身份的合法,解决了公钥获取的安全性

以浏览器为例说明如下整个的校验过程:

  • 浏览器读取证书中的证书所有者、有效期等信息进行一一校验
  • 浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者CA比对,用于校验证书是否为合法机构颁发 
  • 如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的。
  • 如果找到,那么浏览器就会从操作系统中取出  颁发者CA  的公钥,然后对服务器发来的证书里面的签名进行解密
  • 浏览器使用相同的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中签名做对比 (防止信息被修改)
  • 对比结果一致,则证明服务器发来的证书合法,没有被冒充, 此时浏览器就可以读取证书中的公钥,用于后续加密了

TLS/SSL

至此第一部分关于HTTPS的原理介绍已经结束了,总结一下

HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。

证书的签发过程:

  • 服务方 S 向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;
  • CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
  • .如信息审核通过,CA 会向申请者签发认证文件-证书。
  • 证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;
  • 签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA 的私钥对信息摘要进行加密,密文即签名;
  • 客户端 C 向服务器 S 发出请求时,S 返回证书文件;
  • 客户端 C 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA 的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法;
  • 客户端然后验证证书相关的域名信息、有效时间等信息;
  • 客户端会内置信任 CA 的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA 的证书,证书也会被判定非法。

在这个过程注意几点:

1.申请证书不需要提供私钥,确保私钥永远只能服务器掌握;

2.证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名;

3.内置 CA 对应的证书称为根证书,颁发者和使用者相同,自己为自己签名,即自签名证书;

4.证书=公钥+申请者与颁发者信息+签名;

HTTPS的优点

  尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

  (1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

  (2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

  (3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

  (4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

HTTPS的缺点

  虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

  (1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

  (2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

  (3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

    (4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

  (5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

 

对称算法和非对称算法举例:

算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA

对称加密算法(加解密密钥相同)

名称

密钥长度

运算速度

安全性

资源消耗

DES

56位

较快

3DES

112位或168位

AES

128、192、256位

非对称算法(加密密钥和解密密钥不同)

名称

成熟度

安全性(取决于密钥长度)

运算速度

资源消耗

RSA

DSA

只能用于数字签名

ECC

低(计算量小,存储空间占用小,带宽要求低)

散列算法比较

名称

安全性

速度

SHA-1

MD5

对称与非对称算法比较

名称

密钥管理

安全性

速度

对称算法

比较难,不适合互联网,一般用于内部系统

快好几个数量级(软件加解密速度至少快100倍,每秒可以加解密数M比特数据),适合大数据量的加解密处理

非对称算法

密钥容易管理

慢,适合小数据量加解密或数据签名

算法选择(从性能和安全性综合)

对称加密: AES(128位),

非对称加密: ECC(160位)或RSA(1024),

消息摘要: MD5

数字签名:DSA

轻量级:TEA、RC系列(RC4),Blowfish (不常换密钥)
速度排名(个人估测,未验证):IDEA <DES <GASTI28<GOST<AES<RC4<TEA<Blowfish  

简单的加密设计: 用密钥对原文做  异或,置换,代换,移位

 

参考博客 : 

https://blog.csdn.net/qq_34337272/article/details/78334155

https://blog.csdn.net/weixin_42504145/article/details/85207103

https://www.cnblogs.com/wqhwe/p/5407468.html

https://www.cnblogs.com/yunlongaimeng/p/9417276.html

https原理:证书传递、验证数据加密、解密过程解析 目录 1 什么是HTTPS? 2 密码学基础 对称密钥加密 非对称密钥加密 HTTPS使用两种加密方式的混合加密 3 https通信流程 1. 客户端发起HTTPS请求 2. 服务端的配置 3. 传送证书 4. 客户端解析证书 5. 传送加密信息 6. 服务段解密信息 7. 传输加密后的信息 8. 客户端解密信息 4 HTTPS 的实现原理 5 TLS/SSL协议 6 HTTP与HTTPS的区别 1 什么是HTTPS? 大家都知道要使用https,需要在网站的服务器上配 阅读详情

相关推荐

RAGFlow源码解析-2、从源码构架ragflow v0.25.0镜像

本文详细记录了从零开始构建自定义RAGFlow镜像lt/ragflow:0.25.0的全过程。首先介绍了环境准备,包括检查Node.js、Docker版本项目结构。然后详细说明了构建步骤:编译前端、创建自定义Dockerfile、构建镜像验证。接着讲解了docker-compose配置修改要点,包括网络定义、MySQL依赖处理等。最后总结了部署过程中遇到的五个关键问题及解决方案,包括networks未定义、MySQL服务依赖、tiktoken文件缺失、数据库配置错误端口映射问题。通过完整的操作流程

liutao841204的专栏 342

详解HTTPS加密过程

众所周知,HTTPS要比HTTP要安全,但是为什么HTTPS要比HTTP安全呢?这篇文章主要研究HTTPS加密机制。HTTPS 工作过程中涉及到的密钥有三组第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书的签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过。

qq_63525426的博客 6326

从零开始构建高精度称重系统:ADS1232硬件设计与软件调优实战

本文详细介绍了如何基于TI的ADS1232 24位ADC芯片构建高精度称重系统,涵盖硬件设计、软件调优及校准算法。通过优化电源设计、PCB布局卡尔曼滤波算法,实现毫克级测量精度,适用于工业自动化实验室等高要求场景。

weixin_28285943的博客 352

计算机网络——HTTPS加密流程

HTTPS加密流程

xh1605004242的博客 5371

详解HTTPS加密过程

加密就是把明文经过一系列变换,生成密文。解密就是把密文经过一系列变换,还原成明文。

weixin_62848751的博客 1395

在PKI体系下,SSL/TLS实现HTTPS应用的过程中,浏览器服务器之间用于加密HTTP消息采用的是**非对称加密**

具体来说,当浏览器向服务器发起请求时,双方会协商使用一种非对称加密算法,服务器将自己的公钥发送给浏览器,浏览器利用这个公钥将对称密钥加密后传回服务器,之后双方的通信就基于这个共同的对称密钥进行加解密操作。这种混合使用非对称加密对称加密的方式,既利用了非对称加密在密钥交换方面的安全性,也利用了对称加密在数据处理方面的高效率。总结而言,虽然非对称加密在SSL/TLS协议的握手过程中起到了关键作用,但实际上在HTTPS应用中,非对称加密对称加密都有使用。这一系列操作确保了接下来通信的安全。

[Blog][Domain] programb.blog.csdn.net 1956

https协议 的工作过程

https协议 的工作过程 文章目录https协议 的工作过程一、用代码构造http请求二、https ☆(这篇帖子的重点)2.1 加密的概念2.2 加密的工作流程2.2.1 对称加密 ☆2.2.2 非对称加密 ☆ 前言: 前面是对http协议的补充,后面的https工作流程才是这篇帖子的重点! 一、用代码构造http请求 1、通过HTML中的form标签,构造出GET/POST请求 ​ > 通过input标签搭配form来使用,实现给服务器提交数据这样的功能。 <form action="ht

qq_54219272的博客 2万+

通过对称加密非对称加密解析https协议原理

发送者Alice准备发送信息给接受者Bob。Alice生成一个原始信息的Hash(信息摘要),然后使用她的私钥对这个Hash进行签名,形成数字签名。AliceBob之间共享一个对称密钥,这个对称密钥用于加密解密他们之间的通信数据。Alice使用Bob的公钥加密这个对称密钥,创建一个密钥信封,然后发送给Bob。Bob使用他的私钥解密密钥信封,得到对称密钥。一旦Bob有了对称密钥,他就可以解密Alice发送的加密信息。

LittleBlackC的博客 1216

随笔录--HTTPS加密过程

HTTPS加密过程介绍

Bigbin666的博客 889

HTTPS加密流程

公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;传输的信息由公钥进行加密,再由服务器持有的私钥进行解密。简单的说,HTTPS的传输过程使用的是对称加密(随机Key),因为对称加密不够安全,所以使用非对称加密的公钥对随机Key进行加密,由服务端持有的私钥进行解密,这样就不会在传输过程中暴露对称加密的公钥(随机Key)了。优点:算法公开,加密解密使用不同的钥匙,私钥不需要通过网络进行传输,安全性很高。只要你看懂了上面的对称加密非对称加密流程,HTTPS的流程其实也很简单。

weixin_44866921的博客 634

HTTPS加密过程

1)适合在不可信的环境中安全通信,数据传输。2)算法复杂,安全性相对于对称加密更高。3)由于加密速度较慢,不适合大数据量加密解密,因此后文的 HTTPS 一次非对称加密多次对称加密的原因由此而来。

bxy0806的博客 1205

TCP,SSL以及HTTPS的连接建立过程详解

—以上就是历史背景。合法但不受信任的证书:一个证书可能是完全合法的(比如它是有效的、未过期的、并且正确地签名的),但如果它不是由客户端已知的受信任的CA签发的,客户端还是不会信任它。服务端收到客户端的报文后,会使用私钥进行解密,这样就得到了预主密钥,而且只有客户端服务端知道这个预主密钥,没有其他人知道(因为预主密钥一旦被公钥加密,只能由私钥加密,反之同理,所以除非私钥泄露了,否则没有人会知道预主密钥)。这个校验确保与客户端交互的服务器是它声称的服务器,并且其证书是受信任的证书颁发机构(CA)签发的。

qq_64162562的博客 3945

HTTPS、对称/非对称加密、SSL/TLS

HTTPS并不是一个单独的协议,是在 TCP HTTP 之间加入了 SSL/TLS 安全协议,使得报文能够加密传输,SSL是TLS的前身,现在使用的大多都是TLS。

风中的默默 8998

(非)对称加密算法在https中的应用(加密过程以及CA颁发、验证)

文章目录一、(非)对称加密对称加密非对称加密二、http与https1. HTTP1.1 HTTP与TCP1.2 短/长连接(HTTP如何使用TCP)2. HTTPS = HTTP+SSL/TLS2.1 SSL/TLS:解决http问题* 2.2 https 加密过程2.3 CA证书3. http/https区别 一、(非)对称加密加密”:明文 ==> 密文 “解密”:密文 ==> 明文 对称加密 加密解密使用相同的密钥。对称加密只有一个秘钥,作为私钥. 例: 用 7zip 或 Win

Erya Programming learning 1795

SSH HTTPS 公钥、秘钥、对称加密非对称加密、 总结理解

目录[-] DES: DSA: RSA: 公钥、私钥 的解释 签名: 指纹: 公钥登陆 error SSH基本原理免密码登录 公钥认证的原理 非对称加密 SSL/TLS协议 https 非对称+对称 作者:shede333  主页:http://my.oschina.net/shede333 && http://blog.sina.com.cn/u

我不会编程,但不是完全不会,我会一点点 3389

https传输的过程加密

在HTTP传输过程中,数据的安全性隐私保护是非常重要的问题。HTTPS是在HTTP基础上加入SSL/TLS加密层的协议,通过在HTTPTCP之间加入加密层,保护了数据的传输过程。通过SSL/TLS,可以实现客户端服务器之间的加密通信,确保数据在传输过程中的机密性。在HTTP传输过程中,数据加密技术可以确保数据的保密性完整性,防止数据被第三方恶意窃取、篡改或拦截。数字证书是基于非对称加密技术的一种证明通信安全性的方式,用于验证数据的发送者接收者身份,防止恶意伪装中间人攻击。

qq_61726284的博客 570

HTTPS加密(图文详解)

不同的数据,生成的签名差距是非常大的,这样的签名,就可以区分不同的数据常见的生成签名的算法: MD5 SHA系列设计过算法的证书只要被改了一点点,签名就会有非常大的区别综合而言,对称密钥适用于大量数据的加密解密,但在密钥分发管理方面存在挑战;非对称密钥提供了更高的安全性,但速度较慢,适用于密钥交换数字签名等场景。在实际应用中,通常使用混合加密方案,结合对称密钥非对称密钥的优点,非对称密钥辅助堆成密钥,以达到安全性效率的平衡。

Lzm的博客 501

应用层协议——HTTPS协议

HTTPS详解内容,包含HTTPS与HTTP的区别,对称加密非对称加密,以及HTTPS工作原理等。

weixin_74310945的博客 983

HTTPS协议

当我们需要下载某个应用时我们也许会从浏览器里搜索,但是我们点击下载的链接它跳出来的下载链接并不是我们想要的,而是一个某某应用市场或者某某浏览器,这就说明我们的下载数据被运营商“劫持”了(我们通过网络传输的任何的数据包都会经过运营商的网络设备,那么运营商的网络设备就可以解析出你传输的数据内容, 并进行篡改)先让双方互相交换公钥SC,客户端给服务端发信息需要用服务端的公钥S来加密、服务端给客户端用公钥C来加密,这样双方都能用自己的私钥S‘C’来解密获取数据。

2301_80655639的博客 648
上一篇: Java语言是" 解释执行" 的语言吗
下一篇: Java中 ( Iterator ) 迭代器 详解 ( JDK8源码 )
NO0b
博客等级 码龄8年 244粉丝 160原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值