HTTPS加密的介绍

        HTTPS(HyperText Transfer Protocol Secure,超文本传输安全协议)是HTTP协议的安全版本。它在HTTP的基础上加入了SSL/TLS协议,用于对数据进行加密,并确保数据传输过程中的机密性、完整性和身份验证。

在HTTPS出现之前,HTTP协议以明文形式传输数据。这意味着:

数据可以被窃听(机密性缺失):

任何在数据传输路径上的人(如你的ISP、咖啡馆的Wi-Fi管理员、网络攻击者)都可以截获并查看你发送和接收的数据,包括登录密码、信用卡信息、聊天内容等。

数据可以被篡改(完整性缺失):

中间人可以修改传输中的数据。例如,将你访问的合法银行网站链接替换成钓鱼网站,或者在网页内容中注入恶意代码。

身份可能被冒充(身份验证缺失):

你无法确定你正在访问的网站是否是真正的目标网站,可能是一个伪造的“钓鱼”网站。
HTTPS就是为了解决这些问题而设计的。

HTTPS加密是如何工作的?(核心机制:SSL/TLS握手)

        HTTPS的核心在于SSL(Secure Sockets Layer,安全套接层)及其继任者TLS(Transport Layer Security,传输层安全)协议。

        一个典型的HTTPS通信过程分为两个阶段:

阶段一:SSL/TLS握手(建立安全连接)

这是最关键的部分,双方协商加密方式并验证身份。过程大致如下:

客户端发起请求(Client Hello):

浏览器(客户端)向服务器发送一个“Client Hello”消息。
消息中包含:客户端支持的TLS版本、客户端支持的密码套件(加密算法组合,如RSA、AES、SHA等)、一个随机数(ClientRandom)。

服务器响应(Server Hello):

服务器收到请求后,选择一个双方都支持的TLS版本和密码套件。
服务器发送“Server Hello”消息,包含:选定的TLS版本、选定的密码套件、服务器生成的随机数(ServerRandom)。

服务器发送证书(Server Certificate):

服务器将其数字证书发送给客户端。这个证书由受信任的**证书颁发机构(CA)**签发,包含了服务器的公钥、域名、有效期等信息,并附有CA的签名。
(可选)服务器密钥交换(Server Key Exchange): 某些加密套件可能需要服务器发送额外的密钥交换参数。

服务器发送结束(Server Hello Done):

服务器通知客户端,服务器部分的初始信息发送完毕。

客户端验证证书并生成预主密钥(Pre-Master Secret):

验证证书: 客户端检查证书是否由受信任的CA签发、是否过期、域名是否匹配当前访问的网站。如果验证失败,浏览器通常会警告用户。
生成预主密钥: 客户端生成一个随机数,称为预主密钥(Pre-Master Secret)。
加密并发送预主密钥: 客户端使用从证书中获取的服务器公钥,将预主密钥加密后发送给服务器。由于只有服务器的私钥才能解密,这就保证了预主密钥的传输是安全的。

客户端发送结束(Client Key Exchange):

客户端发送一个“Client Key Exchange”消息,内容就是刚才加密发送的预主密钥(加密形式)。
客户端还可能发送其他消息,如证书请求(如果需要客户端认证)、扩展消息等。

服务器解密预主密钥:

服务器使用自己的私钥解密收到的预主密钥。

双方计算主密钥(Master Secret):

关键步骤! 客户端和服务器现在都拥有了三个随机数:ClientRandom、ServerRandom和Pre-Master Secret。
双方使用预先商定的密钥派生函数(如伪随机函数PRF),将这些随机数作为输入,计算出相同的主密钥(Master Secret)。这个主密钥是后续加密通信的基础。

客户端发送完成消息(Change Cipher Spec):

客户端通知服务器,后续所有的通信都将使用协商好的加密算法和主密钥进行加密。

客户端发送 Finished 消息:

客户端发送一个加密的“Finished”消息,这个消息是之前所有握手消息的哈希值(用主密钥加密)。服务器可以解密并验证这个哈希值,以确认握手过程没有被篡改,并且客户端确实拥有主密钥。

服务器发送完成消息(Change Cipher Spec):

服务器通知客户端,后续所有的通信都将使用协商好的加密算法和主密钥进行加密。

服务器发送 Finished 消息:

服务器发送一个加密的“Finished”消息,内容是之前所有服务器端握手消息的哈希值(用主密钥加密)。客户端可以解密并验证这个哈希值。
一旦双方都成功验证了对方的Finished消息,握手阶段就结束了。 此时,一个安全的通信通道已经建立。

阶段二:加密数据传输

握手完成后,客户端和服务器使用在握手阶段协商好的对称加密算法和主密钥(或从主密钥派生出的会话密钥)来加密和解密所有传输的数据(如HTML页面、图片、表单提交等)。对称加密因为加解密速度快,适合大量数据的传输。

HTTPS加密的关键技术点:

非对称加密(公钥加密):

用于SSL/TLS握手阶段,安全地交换对称密钥(主密钥)。客户端用服务器的公钥加密数据,只有服务器用私钥才能解密。

对称加密(私钥加密):

用于加密实际传输的大量数据。加解密速度快,但密钥分发是个问题(这就是为什么需要非对称加密来交换对称密钥)。

哈希函数(消息摘要):

用于生成数据的固定长度摘要(指纹)。即使数据有微小变化,摘要也会完全不同。在握手过程中用于验证消息的完整性(Finished消息)。

数字证书:

由可信的第三方(CA)颁发,绑定服务器的公钥和身份信息(域名)。客户端通过验证证书来确认服务器的身份,防止中间人攻击。

证书颁发机构(CA):

操作系统、浏览器等预装了众多CA的根证书。客户端通过信任这些根证书来验证网站证书的合法性。


HTTPS的优势总结:

数据保密性: 加密传输,防止窃听。

数据完整性: 通过哈希校验,防止数据被篡改。

身份认证: 通过证书验证,确认网站的真实身份,防止钓鱼。

提升搜索引擎排名: Google等搜索引擎优先推荐使用HTTPS的网站。

增强用户信任: 浏览器地址栏显示安全锁标志,让用户更放心。


HTTPS的挑战:

性能开销: 加密/解密需要计算资源,相比HTTP稍慢(但现代硬件和优化算法已大大缓解)。

证书成本和管理: 获取、部署、更新和管理证书需要成本和操作(虽然现在有许多免费证书方案如Let’s Encrypt)。

配置复杂性: 服务器需要正确配置SSL/TLS。

总结:

       

         HTTPS通过结合非对称加密、对称加密、哈希函数和数字证书等技术,在HTTP的基础上构建了一个安全的通信层。它通过复杂的SSL/TLS握手过程建立安全的通道,然后使用高效的对称加密传输数据,从而有效保护了用户与网站之间的通信安全,是现代互联网不可或缺的基础设施。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值