当前位置:首页 » 密码管理 » https加密套件

https加密套件

发布时间: 2023-05-10 13:36:40

㈠ HTTPS的前世今生和原理详解

HTTPS百指宽科:

HTTP是明文传输的协议,数据很容易被窃听和笑衫篡改,并且攻击者很容易冒充客户端和服务端,HTTPS可以解决这两个的安全问题。HTTS仍是HTTP协议,只是在HTTP与TCP之间添加了用于加密数据的TSL/SSL协议。很多其它应用层的协议也采用在传输层之上添加TSL/SSL协议来保证安全,如FTPS、IMAPS。

加密和解密使用的是同一个密钥。加密和解密的双发都需要持有同一个密钥。常见对称加密算法:AES、DES、3DES。

加密和解密使用的是不同的密钥,加密时使用的密钥称为公钥匙,解密是使用的密钥称为私钥。使用公钥加密的密文只能用私钥解开。公钥可以发布出去使用,但私钥一定不能泄漏。常见的非对称加密算法:RSA、背包算法、ECC。

数字签名用于校验数据是否被篡改,即数据是否和原数据是否一致。
数字签名包含签名和验证两个运算。数字签名具有不可抵赖性,签名验证正确后就不能否认。
数字签名一般包含一个自己知道的私钥和一个公开的公钥,与传统的加密不同的是签名时使用私钥,验证签名是使用公钥。

1994年Netscape提出了SSL协议并制订了SSL协议的原始规范,即SSL1.0。但由于SSL1.0使用的是弱加密算法而受到密码学界的质疑,所以SSL1.0并没有公共发布。

SSL1.0之后Netscape对SLL协议规范进行了重大改近,并在1995年发布 SSL2.0协议 。虽然SSL2.0版本被认为是一个相当强大且健壮的协议,但仍存在一些易受攻击的漏洞,所以并没有得到广泛的使用。

由于SSL2.0的安全问题,Netscape联合哈佛的Paul Kocher等人重新设计了SSL协议,并在1996年发布,即SSL3.0版本,该版本较2.0版本有较大的差别。 SSL 3.0协议 获得了互联网广泛认可和支持。

随着互联网的飞速发展,网络安全越来越重要,业界非常迫切的需要一个标准的安全协议,于是IETE接手了SSL协议,并将其更名为 TSL(Transport Layer Security Protocol,安全传输层协议 ,并在1999年发布了TSL1.0版本。
不过TSL1.0于SSL3.0差别并不大(TLS 1.0 内部的协议版本号其实是3.1)。
虽然TSL是SSL的升级,但一些称呼上还存在混淆,所以大家通常将二者统称为SSL/TLS协议。

TSL1.1 于2006年发布,主要是修复了一些漏洞。

TSL1.2于2008年发布,1.2版本主要移除了一些老旧的加密套件,并引入了 AEAD 加密模式。1.2版本是目前应用最广泛的版本。

TSL1.3 于2018年发布。1.3版本在2014年提出,经4年的反复修改直到第28个草案才于2018年正式纳入标准。
1.3版本相较1.2版本有很大的改动,即增强了安全性也也大大提升了访问速度。主要有以下改动:

在公网通讯时想要保证通信信道的安全,目前来看只有将通信的数据进行加密后可防止窃听、冒充和篡改。

防止窃听:
数据加密后传输的就是加密后的密文,这些密文即使被窃听了但在没有解密的密钥的情况下是得不到真正的内容的。

防冒充和篡改:
通讯的数据加密后传输,在没有加密用的秘钥的情况下时无法构造出合法的数据包的,也就无法冒充或篡改数据。

将通信数据加密后碰逗腔传输可以解决很多的安全问题,但要实现通信的加密最为关键的点在于通信的双发用于加密的密钥怎么协商才能保证密钥不被泄漏和篡改那?密钥协商是HTTPS中最大的难点。

通信时使用对称加密,并且在客户端请求时直接将对称加密的密钥返回给客户端。
但在安全的信道建立起来之前任何传输仍是明文的,使用明文风发密钥毫无安全性可言,并且由对称加密使用同一个密钥,所以第三方在窃听到密钥后即可以窃听和篡改数据也可以冒充客户端和服务端。 所以直接分发对称加密的密钥显然行不通。

为方便说明这里只看客户端单向向服务端发送数据的情况,服务端向客户端发送数据与其类似。
通信时使用非对称加密,在客户端请求时将公钥放回给客户端。
但返回公钥时仍然是明文传输的,所以公钥还是很容易就会被泄漏,泄漏了公钥后,虽然第三方无在没有密钥的情况下是没法窃听数据或直接冒充服务端,但由于泄漏了公钥第三方还是可以冒充客户端或者进行‘中间人’攻击。
所以单纯使用非对称加密也是行不通的。

'中间人’攻击:

只要通信时使用的密钥不泄漏,那么在通信时完全没必要使用非对称加密,毕竟对称加密的效率更高。所以可以在通信正式开始前使用非对称加密来协商出通信时使用的对称加密的密钥,步骤如下:

虽然对称加密与非对称加密结合可以使我们或得两种的优点,但这样还是无法避免‘中间人’攻击。

DH密钥协商算法不会直接交互密钥,而是交互用于生产密钥的参数,DH算法基于当前‘无法’对大数进行质数分解来保证即使参数泄漏了,第三方也无法通过参数推导出密钥。
DH算法密钥协商步骤:

通过以上步骤客户端和服务端就协商出了密钥s,并且整个过程中没有传输过s。为了防止被破解a和b通常非常大,p 是一个至少 300 位的质数,g一般很小通常是3或者5.
但DH算法的缺点也很明显,DH无法防止冒充,还是会受到中间人攻击。

数字证书(digital certificate),又称公开密钥认证(Public key certificate)或身份证书(identity certificate),用来下发公钥匙和证明公钥拥有者的身份。

证书由第三机构颁发用来验证服务提供方的合法性,使用时服务提供方将证书给到客户端,客户端通过特定的机制验证书的合法性,从而信任提供证书的服务端和证书中的公钥。

数字证书以文件的形式存在,证书文件中包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对数字证书自身的数字签名,证书的数字签名用来保证证书没有被篡改。

一般我们向CA申请证书时不用我们我们提供公钥和私钥,CA会给我们分配一个密钥对,并将公钥写到证书中,然后将证书和私钥给我们。

证书有统一的标准,其合法性(证书是否过期、数字签名是否有效、颁发的机构是否可信)通过一定的程序按标准来进行验证,如浏览器会保证HTTPS证书是否是合法的,linux下openSSL库提供了证书验证功能。

核对证书后若证书可信,就可以使用证书中的公钥对数据进行加密与证书的拥有者进行通信。

HTTPS的证书在扩展字段中包含了域名相关的信息,所以HTTPS的证书在申请的时候CA会严格的校验申请的机构或个人是否真的拥有这个域名。

数字证书认证机构(英语:Certificate Authority,缩写为CA)。证书标准是公开的任何人都可以去制作证书,但自己制作的证书是不受信任的,只有权威的CA机构颁发的证书才被信任。

权威的CA证书审核和部署流程严苛而繁杂,所以权威的根证书的有效期一般在几十年内。
也只有权威的CA的根证书会被各大操作系统支持,将其预制与操作系统内。

证书一般遵循X.509规范,主要包含以下内容:

CA生成的证书包含以上内容和一些扩展字段外,还包含CA使用自己的私钥对这些内容进行加密后的密文。在验证证书时使用CA的根证书对秘文进行验证,从而判断证书是否是合法的。

权威结构使用根证书来签发二级CA证书,二级CA证书可以给其它服务签发证书。但不是所有证书都可以继续签发新的证书,证书使用基础约束扩展来限制证书的签发,我们普通申请到证书基础约束扩展都是False的。查看根证书的基本约束可以看到证书颁发机构为‘是’。

根证书并不直接签发服务的证书,只要基于以下两点:

上一级证书对下一级证书进行签名,签名值包含在证书中,可以使用上一级证书中的公钥来验证下一级证书的签名值。根证书的签名是自己签的,并且验证签名的公钥包含在根证书中。

完整的证书连的关系应该有服务器放回,但有的并没有返回,对于没有放回完整证书连的证书,证书中的扩展字段CA 密钥标识符( Authority Key Identifier)记录了证书的上一个证书,通过该字段获取到上一级中间证书,再从中间证书的该字段中继续向上查找,直到根证书。
服务端最好可以返回证书连,这样可以避免浏览器自己去查找,提示握手速度。服务器返回的证书链并不包含根证书,根证书预至与操作系统内部。

在linux中openssl库会集成根证书。openssl的根证书的存放路径通过‘openssl version -a’查看。

校验证书时先根据证书链逐级校验证书的签名,签名校验的最关键的在根证书。根证书预至于操作系统中,CA要将自己的证书预至与各个系统中是非常困难的,所以预支与系统中的根证书是可信的。

回顾一下对于HTTPS的证书来说申请的时候CA会严苛的验证,保证这个域名是属于申请这个证书的机构的。这样攻击者或许可以伪造一个改域名的证书,但伪造的证书的根证书在系统中并不会存在,所以伪造的证书是不会被信任的。这样通过证书链的校验就可以有效的防止服务端被‘冒充’。

经过上面证书数字签名验证只是验证了证书确实是合法的证书,后还要验证证书的有效性,有效性验证主要包括以下字段:

验证合法的证书也可能由于种种原因被吊销,如证书的私钥泄漏了、证书错发了等,为了验证证书是否有效引入了证书吊销机制。

OSCP是证书提供方提供的证书验证接口,用户通过调用OSCP接口验证证书是否被吊销了。
但OCSP服务可能因为策略或服务故障导致无法访问,这时一般浏览器会选择信任证书,毕竟证书被吊销的情况只是极少数。也有部分CA将OCSP失败后的策略写到证书的扩展字段中,用用户根据扩展字段去做处理。
OSCP方式有自己明显的缺陷,为了验证证书而请求OSCP的同时也将自己在什么时候访问了什么服务也告诉了CA,CA利用我们的访问数据作恶咋办,还有OCSP的接口很慢的话不就拖慢了我们服务的相应数独。为了解决这两个问题各大CA厂商联手推出了CRL方案。

CRL方案是将被吊销的证书列表定期拉去到本机,一般是几天拉取一次。在校验证书时去本机列表中查找。
CA会在证书的扩展字段中写入CRL更新的地址:

CRL也有自己明显的确定,首先CRL是定期拉取的不能保证实时生效,然后CRL的列表一般很大可能达到数M。

CRLSet是chrome自建自用的解决方案。google觉得CRL更新太慢了,每个CA都有自己的CRL并且CRL内容也太多了。于是自己搞了一个CRLSet,将各大CA被吊销的高风险证书添加到CRLSet中,chrome在校验证书时可以去自己CRLSet中校验。
CRLSet只有各个CA吊销的证书的部分,大概包含所有吊销证书的2%。
CRLSet的更新相对快一些,最慢几个小时就会从各个CA中更新一次,CRLSet可以用在需要紧急吊销证书的情况下让吊销快速生效。

CRLSet提供了 https://github.com/agl/crlset-tools 工具来拉取和校验证书是否在CRLSet中。

可以在 chrome://components/ 中更新chrome的CRLSet

客户端向服务端发送hello请求,里面包含了客户端SSL/TSL的版本、支持的加密套件和一个随机数Random1

服务端收到客户端的hello后,根据客服端支持的加密套件和自己支持的加密套件选择出后面使用的加密和散列套件并返回给客户端,同时返回的还有服务端生产的一个随机数 Random2

服务端向客户端返回自己的证书,客户端收到证书后通过校验证书来信任服务端,并从证书中获取到证书中的公钥。

服务端在返回证书后会立即向客户端发送该请求。不过该请求不是必须的,只有选择的加密套件需要额外的参数是才会发送该请求交互参数。
如果密钥协议商算法是DH算法,那么DH的参数就在该请求中返回给客户端,DH算法有以下几种:DHE_DSS、DHE_RSA、ECDHE_ECDSAECDHE_RSA
dh算法会返回dh的参数p、g、dh的公钥和公钥的签名,公钥即g^b mod p,b为服务端的随机数

这里g就是0X03,p就是0X0017。

服务端在发送完上述信息后,就会立马发送Server Hello Done,来告知客户端服务端的相关信息已经发送完毕,就等客户端开始做密钥协商了。
客户端在收到该消息后就开始验证证书,协商密钥等工作。

在接受到服务器的Server Hello Done信息之后,客户端会计数出预备主密钥,并将其返回给服务端。

如果使用的是RSA/ECDSA算法,那么发送的就是预备主密钥。
如果使用的是DH算法,那么发送的就是通过之前的参数计数出来的公钥匙,即B( g^b mod p)服务端在收到B后通过 B ^ a mod p得到第三个随机数。而客户端已经通过s = A b mod 得到了s。

到了这里服务端和客户端已经得到了三个随机数,通过之前协商好的加密算法使用这个三个随机数就得到一个对称加密的密钥,后面通信时就使用该密钥。

该请求用于通知对方已经计数出通信用的密钥,接下来的通信都使用该密钥进行。服务端和客户端都会发出该请求,一般是服务端先发出。

在完成上述步骤以后,双发都会发送一个Finished请求给对方,Finished的数据是通过协商好的密钥加密的,以此来验证之前协商好的密钥、协议版本是否是有效的。

参考资料:

㈡ ssl密码套件更新会影响https吗

会。根据查询相关饥禅公开信息显示:电脑更换SSL密码套件可森吵能会对电脑的网络连接造成一定的影响。如果您的电脑更换了SSL密码套件,可能会导致电脑与其他设备之间的网络连接发生变化。这是因为新的SSL密码套件可能不兼容原来的设备,烂春尘导致连接出现问题。SSL(SecureSocketsLayer)是一种常用的网络安全协议,用于在两个通信实体之间建立安全的连接。SSL密码套件是SSL协议使用的加密算法的集合,用于保护通信过程中的数据传输安全。

㈢ https网页真能实现加密么

是的,HTTS是加密协议。

SSL加密是在传输层对网络连接进行加密,安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。就是我们看到地址栏https://,TLS加密套件、SSL属于数字证书,相互相成。

起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于HTTP之下TCP之上的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以HTTPS是HTTP+SSL/TCP的简称。

㈣ 网络(四):应用层HTTPS

网络(一):基础知识
网络(二):传输层TCP、UDP
网络(三):应用层HTTP
网络(四):应用层HTTPS


HTTPS(Hyper Text Transfer Protocol Secure),超文本传输安全协议,设计HTTPS的目的就是为了安全传输数据。HTTPS的默认端口号是443,HTTP的默认端口号是80。

HTTPS是安全的,但并非所有公司都使用了HTTPS,又或者公司某些涉及敏感数据的请求才使用了HTTPS、其它还是使用HTTP,这是因为使用HTTPS是有成本的:


HTTPS也常被称为HTTP over SSL或HTTP over TLS,即使用了SSL的HTTP或使用了TLS的HTTP。

TLS(Transport Layer Security),传输层安全协议,它的前身就是SSL(Secure Socket Layer),安全套接层协议。历史版本信息:

SSL/TLS工作在应用层和传输层之间,应用层的数据会使用SSL/TLS生成的密钥加密后再传递给传输层,从而保证了数据在传输过程中的安全性。


HTTPS的通信过程可以分为四大阶段:

接下来我们就看一下TLS是怎么生成和传输对称加密密钥的,这个过程会有十次关键的握手,我们省略了一些不关心的ACK:

客户端会给服务器发送一个 Client Hello 消息,该消息内部包含TLS的版本——用来告诉服务器客户端想使用哪个版本的TLS,包含支持的加密套件——用来告诉服务器客户端支持哪些密钥交换算法以及支持哪些加密算法、消息摘要算法,包含一个随机数Client Random——将来用来生成对称加密的密钥。

服务器会给客户端发送一个 Server Hello 消息,该消息内部包含TLS的版本——用来告诉客户端服务器想使用哪个版本的TLS,包含选择的加密套件——用来告诉客户端服务器选择了哪一套密钥交换算法以及哪一套加密算法、消息摘要算法(假设选择了TLS_ECDHE_ECDSA_...),包含一个随机数Server Random——将来用来生成对称加密的密钥。

服务器会给客户端发送一个 Certificate 消息—— 服务器会把在CA认证过的证书(包含公钥、公钥的数字签名等信息)发给客户端,客户端会用CA公钥来验证并获取到公钥,这个公钥就是将来非对称加密要用到的公钥。

服务器会给客户端发送一个 Server Key Exchange 消息—— 对称加密的密钥交换算法ECDHE_ECDSA需要一些参数,服务器需要提供一部分、并发给客户端,我们把服务器提供的这部分参数称之为Server Params。

服务器会给客户端发送一个 Server Hello Done 消息—— 服务器告诉客户端服务器已经没什么协商数据需要发给客户端了。

客户端会给服务器发送一个 Client Key Exchange 消息——对称加密的密钥交换算法ECDHE_ECDSA需要一些参数,客户端需要提供一部分、并发给服务器,我们把客户端提供的这部分参数称之为Client Params。

客户端会给服务器发送一个 Change Cipher Spec 消息——客户端告诉服务器以后客户端发给服务器的数据都会用对称加密的密钥进行加密。

客户端会给服务器发送一个 Finished 消息——客户端会把第一次TLS握手 ~ 第七次TLS握手全部的数据生成一个摘要,然后再把这个摘要用对称加密密钥1加密之后发送给服务器,目的就是为了让服务器去解密,进而判定对称加密密钥1能有效加解密。

服务器也会给客户端发送一个 Change Cipher Spec 消息——服务器告诉客户端以后服务器发给客户端的数据也都会用对称加密密钥2进行加密。

服务器会给客户端发送一个 Finished 消息——服务器会把第一次TLS握手 ~ 第九次TLS握手全部的数据生成一个摘要,然后再把这个摘要用对称加密密钥2加密之后发送给客户端,目的就是为了让客户端去解密,进而判定对称加密密钥2能有效加解密。

㈤ 详解https是如何确保安全的

(多文字预警)

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL

下面就是https的整个架构,现在的https基本都使用TLS了,因为更加安全,所以下图中的SSL应该换为SSL/TLS。

下面就上图中的知识点进行一个大概的介绍。

对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。
常见的对称加密有:DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、RC4、IDEA

与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey);并且加密密钥和解密密钥是成对出现的。非对称加密算法在加密和解密过程使用了不同的密钥,非对称加密也称为公钥加密,在密钥对中,其中一个密钥是对外公开的,所有人都可以获取到,称为公钥,其中一个密钥是不公开的称为私钥。

数字摘要是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。“数字摘要“是https能确保数据完整性和防篡改的根本原因。

数字签名技术就是对“非对称密钥加解密”和“数字摘要“两项技术的应用,它将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
数字签名的过程如下:
明文 --> hash运算 --> 摘要 --> 私钥加密 --> 数字签名

数字签名有两种功效:
一、能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
二、数字签名能确定消息的完整性。

对于请求方来说,它怎么能确定它所得到的公钥一定是从目标主机那里发布的,而且没有被篡改过呢?亦或者请求的目标主机本本身就从事窃取用户信息的不正当行为呢?这时候,我们需要有一个权威的值得信赖的第三方机构(一般是由政府审核并授权的机构)来统一对外发放主机机构的公钥,只要请求方这种机构获取公钥,就避免了上述问题的发生。

用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息(根证书私钥签名)。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布,数字证书各不相同,每种证书可提供不同级别的可信度。

浏览器默认都会内置CA根证书,其中根证书包含磨唯了CA的公钥

1、2点是对伪造证书进行的。3是对于篡改后的证书验证,4是对于过期失效的验证瞎尺培。

SSL为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取,当前为3。0版本。

SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩困银、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

用于两个应用程序之间提供保密性和数据完整性。
TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC 的。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。

SSL与TLS握手整个过程如下图所示,下面会详细介绍每一步的具体内容:

由于客户端(如浏览器)对一些加解密算法的支持程度不一样,但是在TLS协议传输过程中必须使用同一套加解密算法才能保证数据能够正常的加解密。在TLS握手阶段,客户端首先要告知服务端,自己支持哪些加密算法,所以客户端需要将本地支持的加密套件(Cipher Suite)的列表传送给服务端。除此之外,客户端还要产生一个随机数,这个随机数一方面需要在客户端保存,另一方面需要传送给服务端,客户端的随机数需要跟服务端产生的随机数结合起来产生后面要讲到的 Master Secret 。

客户端需要提供如下信息:

服务端在接收到客户端的Client Hello之后,服务端需要确定加密协议的版本,以及加密的算法,然后也生成一个随机数,以及将自己的证书发送给客户端一并发送给客户端。这里的随机数是整个过程的第二个随机数

服务端需要提供的信息:

客户端首先会对服务器下发的证书进行验证,验证通过之后,则会继续下面的操作,客户端再次产生一个随机数(第三个随机数),然后使用服务器证书中的公钥进行加密,以及放一个ChangeCipherSpec消息即编码改变的消息,还有整个前面所有消息的hash值,进行服务器验证,然后用新秘钥加密一段数据一并发送到服务器,确保正式通信前无误。
客户端使用前面的两个随机数以及刚刚新生成的新随机数,使用与服务器确定的加密算法,生成一个Session Secret。

服务端在接收到客户端传过来的第三个随机数的 加密数据之后,使用私钥对这段加密数据进行解密,并对数据进行验证,也会使用跟客户端同样的方式生成秘钥,一切准备好之后,也会给客户端发送一个 ChangeCipherSpec,告知客户端已经切换到协商过的加密套件状态,准备使用加密套件和 Session Secret加密数据了。之后,服务端也会使用 Session Secret 加密一段 Finish 消息发送给客户端,以验证之前通过握手建立起来的加解密通道是否成功。

后续客户端与服务器间通信
确定秘钥之后,服务器与客户端之间就会通过商定的秘钥加密消息了,进行通讯了。整个握手过程也就基本完成了。

对于非常重要的保密数据,服务端还需要对客户端进行验证,以保证数据传送给了安全的合法的客户端。服务端可以向客户端发出 Cerficate Request 消息,要求客户端发送证书对客户端的合法性进行验证。比如,金融机构往往只允许认证客户连入自己的网络,就会向正式客户提供USB密钥,里面就包含了一张客户端证书。

PreMaster secret前两个字节是TLS的版本号,这是一个比较重要的用来核对握手数据的版本号,因为在Client Hello阶段,客户端会发送一份加密套件列表和当前支持的SSL/TLS的版本号给服务端,而且是使用明文传送的,如果握手的数据包被破解之后,攻击者很有可能串改数据包,选择一个安全性较低的加密套件和版本给服务端,从而对数据进行破解。所以,服务端需要对密文中解密出来对的PreMaster版本号跟之前Client Hello阶段的版本号进行对比,如果版本号变低,则说明被串改,则立即停止发送任何消息。

有两种方法可以恢复原来的session:一种叫做session ID,另一种叫做session ticket。

session ID
session ID的思想很简单,就是每一次对话都有一个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的”对话密钥”,而不必重新生成一把。

session ticket
客户端发送一个服务器在上一次对话中发送过来的session ticket。这个session ticket是加密的,只有服务器才能解密,其中包括本次对话的主要信息,比如对话密钥和加密方法。当服务器收到session ticket以后,解密后就不必重新生成对话密钥了。

总结
https实际就是在TCP层与http层之间加入了SSL/TLS来为上层的安全保驾护航,主要用到对称加密、非对称加密、证书,等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的安全性。

收录自| 原文地址

㈥ https详解

TCP三次握手;
TLS/SSL的连接;
HTTP的请求和响应;

前提介绍(证书校验)
服务端传递一个证书,客户端是怎么来验证其中是没有问题的
1.证书大致包含了哪些数据?
证书的申请者,证书的谈戚颁发者,证书的有效期,证书的公钥,证书的指纹,证书的指纹算法,证书的数字签名

2.如何验证证书是否是完整的?
1.首先根据该证书的颁发者找到对应的颁发者的公钥对该证书的数字签名进行解密,然后得到一个证书的指纹和证书的指纹算法;
2根据证书的指纹算法对整个证书进行加密得到指纹;
3对比两个指纹,如果一致说明证书是完整的;

3如何验证证书是否是被全部替换?
在请求网络的时候,可以对比下请求的Url和证书的Url,如果不一致的话,说明证书被全部替含李陵换,一致的话说明是正确的证书;

Tcp的三次握手之前的文档已经介绍了,现在来介绍下TLS/SSL的连接过程;

1.客户端->服务端 (安全协议和版本(SSL和TSL), 客户端支持的扰首所有的加密套件列表,client Random);
2服务端->客户端 (安全协议和版本(SSL和TSL),服务端选中的加密套件, server Random, 证书, 秘钥交换服务端的参数)
客户端会去验证该证书的有效性
3.客户端->服务端 (秘钥交换客户端的参数)
这个时候双方都含有了四个数据(client Random, server Random , 秘钥交换客户端参数和服务端参数);
根据后面两个参数等到预主秘钥(Pre-master secret);
最后三个参数生成用以加密会话的会话秘钥;
4.客户端->服务端 (告诉后台去采用会话秘钥去加密);
5.客户端->服务端(使用会话秘钥对之前的的全部报文进行加密,然后传递到服务端)
6.服务端->客户端(使用会话秘钥加密解密,然后结束这段握手,进行之后的htpp请求和响应)

㈦ HTTPS加密(握手)过程

第一步散弊纯:客户端会发起一个hello client请求,请求中会携带TLS版本信息、加密套件候选列表、压缩算法候选列表以及一个随机数。
第二步:服务端收到请求以后也会给客户端发一个server hello请求,请求中会告诉客户端它选择的协议版本、加密套件、压缩算法以及一个随机数。
第三步:服务端会给客户端发一个server certificate请求,里面包含服务端的数字证书,用于客户端进行校验。
第四步:服务端会给客户端发一个server hello done告诉客户端信息已发送完毕。
第五步:客户端收到证书以后进行校验获取到服务端的公钥。
第六步:客户端会将自己的数字证书发给服务端用于校验。
第七步:客户端计算出一个随机数pre-master,然后用公钥进行加密发送给服务器端。
第八步:服务端和客卜模户端都根据自己的随机数+对端的随机数+pre-master算出对称密冲咐钥,然后再根据对称密钥进行通信。

㈧ edge浏览器https协商算法修改

在浏览器中修改。
1、打核兄开Edge浏览器,在地址栏中输入“edge://flags/”并按下回车键。
2、在Edge浏览器的实验室页面中,找到“TLS1.”选项,然后点击下拉框中的“启用薯者”按钮。
3、找到“TLS1.3必须使用特定的加密套件”选项,然后点击下拉框中的“启用”按钮。
4、在“TLS1.3必须使用特定的加密套件”选项下方的“TLS1.3必须使用以下加密套件”中添加您想要使用的加密套件。改手袭点击页面底部的“重启”按钮,让更改生效。

㈨ https交互过程

https的交互过程如下:
1、客户端将它所支持的老并算法列表和一个用作产生密钥的随机数发送给服务器。
2、服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数。
3、客户端对服务器的证书进行验证,并抽取服务器的公用密钥;然后,再产生一个称作pre_master_secret的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加/解密),并将加密后的信息发送给服务器;
4、客户端与服务器端根据pre_master_secret以及客户端与服务器的随机数值独立计算出加密和MAC密钥知含晌搭锋;
5、客户端将所有握手消息的MAC值发送给服务器;
6、服务器将所有握手消息的MAC值发送给客户端。

㈩ 如何查看本机能够支持的https加密算法套件

HTTPS加密算法,来自于签发机构的SSL证书CSR文件,也就是说签发完毕的证书加密算法,就一定定向了,您可以打开这个网站,就说明就是支持,算法:sha256 加密位数:2048,是证书常见的标准,你可以打开网络知道,就说明支持的。

热点内容
百度云ftp服务器 发布:2025-04-22 15:17:50 浏览:656
平板哪个配置最高 发布:2025-04-22 15:16:20 浏览:830
天工编程 发布:2025-04-22 15:08:36 浏览:381
java感想 发布:2025-04-22 15:02:57 浏览:895
破解互联网密码多少钱 发布:2025-04-22 14:49:32 浏览:747
非框架梁箍筋加密 发布:2025-04-22 14:47:58 浏览:493
解除休息限制的密码是多少 发布:2025-04-22 14:45:13 浏览:459
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:642
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:369
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:89