HTTPS 通信原理

Http 协议明文通信是不安全的

Http 协议是明文通信,数据在通信链路上可能会被劫持或者篡改

在这里插入图片描述
既然数据存在被暴露的风险,我们想到的第一个方案可能就是对数据进行加密

对称加密

我们使用对称加密的方式来加密登录信息此时如果被劫持了的话,劫持者没有对称密匙,那么他就无法解密和篡改你的信息。但是由于对称密匙也是明文发布的,这个密匙如果也被劫持者劫持的话,那么劫持者还是可以窃取和篡改你传输的数据

在这里插入图片描述

出现这个问题的根源在于密匙暴露在了互联网中,当然这里可能有小伙伴想到就是将和服务端约定好固定的对称密匙,分别藏于客户端和服务端中这样就不必在互联网中传输,这样的形式存在几个问题就是,首先对称密匙藏于服务端这肯定是安全的,除非你服务器信息泄露,那么将对称密匙藏于藏于网页中代码中,别人可以很容易的查看到。如果藏于安卓或者 IOS 中,会存在一定的反编译成本但是密匙也是有可能也会泄露的,所以说这种方式并不靠谱

对称加密它的优点是它的加密解密速度快

非对称加密

考虑到对称加密用单个密匙加解密会存在暴露的风险,我们将密匙分为 2 个,保存在服务端私有的叫做私有密匙,发送给客户端的叫做公有密匙。

私有密匙只保存服务端是安全的,公有密匙明文暴露给所有客户端或者劫持者都能拿到

我们使用公钥进行加密,私钥进行解密,此时因为劫持者没有私钥,他就无法修改客户端传来的数据,也无法解密这个数据

在这里插入图片描述

这样确实是保证了客户端发送对服务端的数据的安全,但是服务端如果要返回给客户端数据呢?客户端可是没有私钥进行解密的,根据对称加密中的讲解我们知道把秘钥放在客户端是不安全的,所以这种方式也不可行

非对称加密比较安全,但是他的加解密复杂度相对较高比对称加密慢多了

混合加密

对称加密加解密效率高,非对称加密安全性强,我们综合二者来进行加密的方式就叫做混合加密

在这里插入图片描述

这样复杂的非对称加密只会在最开始解析一次,后面就使用效率高的对称加密。但是这还有一个问题就是,服务器下发的公钥是明文可能被任何人获取到的,比如这样

在这里插入图片描述

到这一步我们就会发现只需要保证客户端接收到的公钥确实是服务器下发的就能解决安全问题,由此我们引出了 HTTPS,HTTPS 就可以看做是一种混合加密但是他保证了公钥的安全

HTTPS

HTTPS 是一种加密的 HTTP 协议,它在 HTTP 传输协议 tcp 基础上增加了一层 SSL 层也叫作 TLS 层用于构建加密的传输信道

HTTPS 的认证方式有 2 中分别为单向认证和双向认证,我们这里来聊聊单向认证,双向认证其实就是反过来验证而已,比如单向认证是客户端需要去认证服务端是否真实,双向认证就是服务端也需要去认证客户端是否真实

在这里插入图片描述

操作系统和浏览器会内置一些权威机构颁发的证书和其公钥信息

如果服务端返回的证书被篡改

在客户端内置 CA 机构证书以及公钥,通过证书 hash 算法去 hash 公钥解密数据得到后的数据就会和从服务器得到证书的 hash 值不一致,也就是检查出了证书被篡改

不要随便安装根证书

服务器下发的证书是用于证明自己的身份的,比如我们的请求被中间人截胡了它返回的证书等信息给客户端,在客户端在内置的 CA 机构中无法找到,此时它的身份识别错误,但是如果我们不小心误安装了中间人颁发的根证书,那么它就可以识别和篡改我们发送的信息。

比如我们知道 Charles 可以通过安装其根证书来抓包 HTTPS 数据

作者:在江湖中coding
链接:https://juejin.im/post/5f110e5d5188252e4a27f87f

服务推荐

Binder通信原理是Android中一种跨进程通信机制。它通过Binder驱动和Binder服务来实现进程间的通信。具体实现方式可以参考。 在Binder通信原理中,有三个关键的组件:Binder驱动、Binder服务和Binder客户端。Binder驱动是操作系统提供的内核模块,它负责在进程间传递消息。而Binder服务是一个独立的进程,用于管理和提供跨进程通信的能力。Binder客户端则是调用Binder服务的进程。 在通信过程中,首先需要调用binder_open函数打开Binder设备,然后使用mmap函数进行内存映射,将用户空间的内存映射到内核空间。接下来,通过ioctl函数进行实际的通信操作。 Android中的四大组件(Activity、Service、BroadcastReceiver和ContentProvider)的启动原理也与Binder IPC机制有关。其中,ActivityManagerService、PackageManagerService、WindowManagerService、PowerManagerService等服务的调用也与Binder IPC机制有关。 综上所述,Binder通信原理是Android中一种跨进程通信机制,通过Binder驱动和Binder服务来实现进程间的通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Binder通信机制原理解析](https://blog.csdn.net/Awenyini/article/details/78806893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Binder通信原理](https://blog.csdn.net/z1804362542/article/details/127959348)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值