%20
今天我们继续深入http,本篇将介绍Https的内容,相信你看过之后对https有一定的了解。
%20
HTTPS
%20HTTPS(正式名称:基于SecureSocket%20%20Layer的超文本传输协议)是一种基于HTTP的安全协议,通过通信加密和个人身份验证的HTTP通道来保证通信过程的安全。%20[1]。%20HTTPS%20%20在HTTP%20%20的基础上添加了SSL。%20HTTPS的安全基础是SSL,因此加密细节需要SSL。%20HTTPS%20%20具有与HTTP%20%20不同的默认端口和加密/身份验证层(HTTP%20%20和TCP%20%20之间)。该系统提供身份验证和加密的通信方式。广泛用于万维网上的安全敏感通信,例如交易支付(来源:百度百科)
%20
为什么出现https呢?
%20所有HTTP请求均以明文形式发出,使得犯罪分子很容易通过数据包捕获工具获取通过网络发送的信息。想象一下,当我们付款时,我们的银行卡密码以明文形式通过网络发送。这不是非常危险吗?为了解决这个问题,Netscape开发了HTTPS协议,该协议允许数据加密传输,这意味着即使黑客在数据传输过程中截获数据,也无法解密。沟通。
要理解为什么HTTPS是安全的,你必须继续理解明文、密文、密钥、加密算法、摘要算法、数字签名和数字证书的概念。
明文:明文是指原始的、未加密的数据。
密文:明文经过特定的加密算法加密后,变成密文,保证了原始数据的安全。您还可以解密密文并得到原始明文。
密钥:密钥是输入到将明文转换为密文或将密文转换为明文的算法的参数。密钥分为对称密钥和非对称密钥,分别用于对称加密和非对称加密。
%20
加密算法
%20
对称密钥密码体制
%20对称密钥加密方法。即加密密钥和解密密钥采用相同的加密方式。对称密钥加密技术的一个缺点是它们不太安全,因为发送者和接收者必须拥有共享密钥才能进行通话。双方必须协商私钥。
加密过程为:明文+加密算法+私钥=密文
解密过程为:密文+解密算法+私钥=明文
对称加密中使用的密钥称为私钥,它代表一个人的私钥,即不能泄露的密钥。
加密被称为“对称”,因为加密过程中使用的私钥和解密过程中使用的私钥是相同的密钥。由于对称加密算法是公开的,如果私钥泄露,密文很容易被解密,导致密钥的安全管理变得困难。加密和解密算法需要双方都知道的密钥,但该密钥无法通过网络发送。还有一个问题。
%20%20
公钥密码体制(非对称加密)%20RSA
%20公钥加密(非对称加密)使用不同的加密和解密密钥。公钥密码学出现的主要原因有两个。一是对称密钥密码学的密钥分发问题,二是数字签名的需求。%20(RSA算法请自行百度,这里不再详细解释)
公钥密码系统(非对称密码系统)不需要各方协商私钥,但它们确实需要一对公钥,一个称为私钥,另一个称为公钥。
在公钥密码学(非对称密码学)中,加密密钥是公开的,解密密钥(私钥)必须保密,加解密算法也是公开的。
公钥密码学(非对称密码学)加密和解密具有以下特点:
使用私钥加密的数据只能使用对应的公钥解密,使用公钥加密的数据也只能使用对应的私钥解密。
%20%20密钥对生成器为接收者B生成密钥对:加密密钥PK和解密密钥SK。发送者A使用B的公钥PK作为加密密钥对消息进行加密,B收到消息后使用解密密钥SK对消息进行解密。
使用对称密钥时,双方使用相同的密钥,因此可以在通信路径上进行一对一的双向秘密通信,并且双方可以使用相同的密钥进行加密和解密。
当使用公钥时,通信通道可以是多对一、单向的保密通道。即多个人可以持有B的公钥,但只有B可以解密。
%20%20算法概要
摘要算法的主要特点是加密过程不需要密钥,并且加密后的数据无法解密。现在,相同的摘要算法可以解密为哈希算法。信息摘要。只要输入相同的明文数据,运行相同的消息摘要算法,就可以得到相同的密文。
%20cuFCI.png
电子签名
它使用加密系统对消息进行签名,指示消息的作者并证明消息未被篡改。这项技术称为数字签名。
数字签名是附加在消息上的特殊加密验证码。使用数字签名的好处是:
签名证明该消息是作者所写。只有创建者才能计算这些校验和,因为只有创建者拥有最敏感的私钥。签名确保如果消息在传输过程中被修改,校验和将不再匹配。数字签名通常使用非对称公钥技术生成。
图片来源于网络
看上图,任何人都可以使用A的公钥PK对密文进行E操作,取出A发送的明文。我们可以看到,这个通信并不是为了保密的目的,而是为了签名和签名验证,即确认这个信息是由A发送的(使用A的密钥)加密的消息只能使用A的公钥才能成功解密。但上述过程只是对消息进行签名,并不保留消息
图片来源于网络
数字证书
如果你要访问一个网站,你怎么知道他们给你的公钥就是你要访问的网站的公钥并且没有被中介篡改过?
数字证书就是这个问题的解决方案。数字证书由数字证书颁发机构(CA)颁发,用于证明公钥所有者的身份。换句话说,数字证书就像个人身份证。身份证证明张三就是张三,不是别人。
数字证书通常包括:
对象的名称(人、服务器、组织等)、证书颁发者(为证书提供担保的人)以及有关对象的描述信息。使用的签名算法。任何人都可以创建数字证书,但由谁来担保很重要。数字证书建立了身份和该身份所有者拥有的公私钥对之间的关系,由认证中心(CA)或其下属认证中心颁发。根证书是认证中心和用户之间建立信任的基础。用户必须先下载并安装数字证书才能使用它们
数字证书数字签名计算过程:
使用摘要算法计算数字证书内容的摘要,并使用数字证书的私钥对摘要进行加密,并获得数字签名。
图片来源于网络
当浏览器收到证书时,它会验证签名机构。如果颁发机构是享有很高声誉的公共签名机构,则浏览器可能知道其公钥(浏览器预安装了许多签名机构证书)。如果对签名机构一无所知,浏览器通常会显示一个对话框,询问用户是否信任签名颁发者。
由于数字证书的公钥是公开的,任何人都可以用它来解密数字证书的数字签名的摘要,并使用相同的摘要算法对证书的内容进行摘要计算,就可以运行并组合获得的数据。比较摘要和解密摘要。如果内容相符,则说明证书未被篡改,可以信任。
此过程是一种安全的方法,因为它基于从公认的证书颁发机构获得的公钥。
请确认签名
Https 请求的整个流程
HTTPS 请求实际上包含两个HTTP 提交,可以分为八个步骤。
1. 客户端向服务器发起HTTPS请求,连接服务器的443端口。
2、服务器端有一个密钥对,称为公钥和私钥,用于非对称加密。服务器端存储私钥,并且不能将公钥发送给其他任何人。
3. 服务器将其公钥发送给客户端。
4. 客户端收到服务器发送的证书后,检查证书以验证其有效性。如果您的证书存在问题,您将无法继续进行HTTPS 传输。严格来说,这应该是关于验证服务器发送的数字证书的合法性,以及客户端如何验证数字证书的合法性。如果公钥合格,客户端会生成一个随机值。该随机值是用于对称加密的密钥,在概念上与服务器端密钥相同。容易区分。然后使用服务器的公钥对客户端密钥进行非对称加密,将客户端密钥转换为密文。至此,您通过HTTPS 的第一个HTTP 请求已完成。
5. 客户端通过HTTPS 发起第二个HTTP 请求,并将加密的客户端密钥发送到服务器。
6. 服务器收到客户端发来的密文后,使用自己的私钥进行非对称解密。解密后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
7. 服务器将加密后的密文发送给客户端。
8. 客户端接收服务器发送的密文,使用客户端密钥对称解密,并检索服务器发送的数据。这样,第二次通过HTTPS的HTTP请求就完成了,整个HTTPS传输就完成了。
这就是我今天与大家分享的HTTPS。如果喜欢请关注我。未来我们还会继续输出。
参考号:《码农翻身》
参考号:《菜鸟教程》
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。