Https 加密原理分析

众所周知,HTTP 协议通过明文传输,是不安全的。于是,就在 HTTP 协议的基础上,进行了数据加密,也就诞生了 HTTPS 协议。注意,HTTPS 并不是一个新的协议,它只不过是在 HTTP 的基础上加了一层 TLS ( Transport Layer Security )

TLS是传输层加密协议,前身是SSL ( Secure Sockets Layer 翻译为安全套接层)。由网景公司于1995年发布。后改名为TLS

随着公众对数据安全性越来越重视,HTTPS 逐渐成为主流,现在还在使用 HTTP 的网站,在谷歌浏览器地址栏前会有 “不安全” 字样的提示。作为开发者,我们理应对 HTTPS 加密的原理有所了解。

HTTPS 的加密流程

概括来说,HTTPS 中的数据是通过对称加密的方式来加密的,而对称加密的密钥是由客户端生成的随机字符串来充当,再通过非对称加密的方式加密后传递到服务端。接下来是详细的流程。这里,我们参考建立 tcp 连接中的三次握手的概念,在 https 加密过程中,服务端与客户端也有三次握手

第一次握手(服务端发送公钥到客户端)

服务端将公钥以证书的形式发送给客户端,证书内包含服务器端的公钥,证书颁发机构,证书有效期,服务端域名等信息。

第二次握手(客户端对证书进行校验并且向服务端发送对称密钥)

客户端收到证书后,会选择是否信任证书,这里是否信任可以根据域名,颁发机构,有效期等信息来判断,如果证书校验不通过,就给予风险提示并断开连接;如果校验通过,就生成一个随机数,用作对称加密的密钥,并取出证书中的公钥,用该公钥对随机数进行加密,将加密后的结果发送到服务端。

第三次握手(服务端用收到的对称密钥加密一段握手信息,发送到客户端)

服务端收到客户端发来的密钥,先用自己的私钥解密,解密成功后,用该对称密钥发送一段握手信息到客户端。客户端收到后,解密成功,至此,HTTPS 连接成功,后续的数据传输就会使用该对称密钥来进行加密。

以上就是 HTTPS 加密的大概的流程,接下来是一些细节上的问题。

HTTPS 是怎样防止中间人攻击的

我们知道,在第一次握手的过程中,中间人完全可以截获服务端发送给客户端的公钥,并且将自己的公钥发送给客户端。客户端用中间人的公钥加密对称密钥,再将结果发送给服务端,中间人再次截获,用自己的私钥解密,获取密钥,再用服务端的公钥加密后发送给服务端。这样,中间人分别冒出服务端和客户端跟彼此交互,就可以窃取信息了。

解决方案

以上中间人攻击成功的主要原因,是客户端无法识别公钥的来源是否来自真正的服务端。这里的解决方案就是数字证书。

  • 服务端通过向 CA 等被信任的机构申请获取 CA 私钥,并对服务端公钥等信息通过 hash 算法生成消息摘要,用 CA 私钥对该消息摘要加密,生成签名,将该签名封装到证书中一起发送到客户端;
  • 客户端收到证书后,用 CA 公钥对签名进行解密,再对服务端公钥等信息生成消息摘要,并将其与解密的结果进行比对,如果一致,就证明服务端的公钥来源正确

这里用到的 CA 私钥是服务端向 CA 机构申请来的,而 CA 公钥是客户端系统内置的。所以,从这里可以看出,如果使用 CA 认证的证书,系统会自动信任服务端公钥来源;如果使用自签名的证书,就需要客户端提前内置该自签名的证书,当收到服务端发来的证书时,需要与自己内置的证书进行比对,无误后才可以信任,否则会有被中间人攻击的风险。

在 Android 端,校验证书的方式可以参考鸿洋-Android Https相关完全解析

如果考虑到一种极端情况,中间人所用的证书也是向 CA 机构申请的,那么处理方式就和自签名证书一样,将服务端的证书提前放在本地,建立 HTTPS 连接的时候,将服务器发送来的证书与本地的证书进行严格比对。

总结

以上就是 HTTPS 加密的大致流程,它在一定程度上解决了 HTTP 协议明文传输的痛点,但是我们得清楚,世界上并不存在完全安全的系统,尽管 HTTPS 的加密机制的设计已经足够精妙了,但它也并不是无懈可击的。在 Android 端,我们可以使用 Xposed 或者其他 hook 框架对校验证书的方法进行 hook,使其在任何情况下都校验通过,这样就绕过了证书校验的过程。

加密与破解的过程本来就是魔高一尺,道高一丈的过程,再精妙绝伦的加密算法也不是无懈可击的,但这并不能否定加密的意义。就像再安全坚固的防盗门也会被撬开,但这并不能说防盗门的存在就没有意义。安全机制的演进就是不断提高破解成本的过程,当破解成本大于破解后的收益的时候,那就是安全的。

参考文章

HTTPS 如何保证数据传输的安全性

扯一扯HTTPS单向认证、双向认证、抓包原理、反抓包策略

Android Https相关完全解析 当OkHttp遇到Https

转载于:https://juejin.im/post/5cb130685188251ae23254ec

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS框架_(JQuery.js)纯css3进度条动画

百度云盘  传送门  密码&#xff1a;wirc 进度条动画效果&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1">…

如何在Android主屏幕上添加热点快捷方式

Portable Wi-Fi hotspots on your Android phone are great, because hotel Wi-Fi usually isn’t, but toggling that hotspot on and off is a pain. Here are several easy ways to add a hotspot widget to your home screen. 您的Android手机上的便携式Wi-Fi热点很棒&…

提高关键词排名的28个SEO技巧

28个让关键词排名明显改观的SEO技巧&#xff1a; 关键词位置、密度、处理 URL中出现关键词&#xff08;英文&#xff09; 网页标题中出现关键词&#xff08;1-3个&#xff09; 关键词标签中出现关键词&#xff08;1-3个&#xff09; 描述标签中出现关键词&#xff08;主关键…

SQLI DUMB SERIES-16

&#xff08;1&#xff09;无论怎么输入&#xff0c;都没有回显&#xff0c;但当输入 admin")#时&#xff0c;显示登录成功。若通过其他方法获取数据库的用户名&#xff0c;可通过这个方法登录成功。 &#xff08;2&#xff09;获取其他信息可用考虑时间延迟注入。方法同1…

如何在YouTube视频上禁用注释

YouTube has that betcha-can’t-watch-just-one appeal to it, which is why YouTube’s annoyances become so pronounced the more you use it. Many of these features, such as annotations can be permanently disabled, making for a more enjoyable viewing experience…

Linux目录配置及应放置的内容

Linux目录配置及应放置的内容 /bin&#xff1a;系统有很多放置执行文件的目录&#xff0c;但/bin比较特殊。因为/bin放置的是在用户维护模式下还能够被操作的命令。在/bin下面的命令可以被root与一般账号所使用&#xff0c;主要有cat,chmod,chown,date,mv,mkdir,cp,bash等常用命…

快速实现一个Http回调组件

2019独角兽企业重金招聘Python工程师标准>>> 快速实现一个Http回调组件 一、前情回顾 ​ 我们平时在使用一些库的时候&#xff0c;会遇到一些看起来很舒服的写法&#xff0c;用起来感觉很简单&#xff0c;而且写法也很优雅&#xff0c;比如OkHttp&#xff0c;或者是…

MyBatis缓存通俗易懂

1.1 mybatis缓存介绍 如下图&#xff0c;是mybatis一级缓存和二级缓存的区别图解&#xff1a; Mybatis一级缓存的作用域是同一个SqlSession&#xff0c;在同一个sqlSession中两次执行相同的sql语句&#xff0c;第一次执行完毕会将数据库中查询的数据写到缓存&#xff08;内…

DVbbs8.2入侵思路与总结

dvbbs8.2后比较变态&#xff0c;目前还没有特别好的方法&#xff0c;外面有人提到一种方法就是直接上传php文件或者其它服务器支持文件&#xff0c;这个也是一个思路&#xff0c;不过很多时候&#xff0c;单独的服务器不会支持这么多。dvbbs禁用了asp和asp.net的上传&#xff0…

Python基础教程:Python pass语句详解

2019独角兽企业重金招聘Python工程师标准>>> Python pass 语句 Python pass是空语句&#xff0c;是为了保持程序结构的完整性。 pass 不做任何事情&#xff0c;一般用做占位语句。 Python 语言 pass 语句语法格式如下&#xff1a; 实例&#xff1a; 学习从来不是一个…

Oracle数据库在Nokia

Nokia固然今非昔比&#xff0c;但在手机市场仍是未瘦死的骆驼&#xff0c;有关报道显示Nokia现役的数据库(包括Oracle、MySQL、MSSQL)达到2300套之多&#xff0c; DBA团队共有20多人&#xff0c;平均每人100多套库。 Grid Control在过去5年中是最主要的、也几乎是唯一的DBA管理…

css animation动画

css 动画&#xff1a; 动画是CSS3中具有颠覆性的特征之一&#xff0c;可通过设置多个节点来精确控制一个或一组动画&#xff0c;常用来实现复杂的动画效果. 必要元素&#xff1a;a、通过keyframes指定动画序列&#xff1b;自动补间动画&#xff0c;确定两个点&#xff0c;系统会…

甘特图看起来很生硬?教你使用智能颜色装饰你的甘特图!(二)

在上一篇文章中我们了解到颜色在甘特图中也有不同的作用。其中颜色在甘特图中扮演着三个角色&#xff0c;才能使甘特图对用户有意义。 颜色决定甘特图的外观。颜色还可以用来定义甘特图的语义。因此&#xff0c;它们帮助用户更快地理解甘特图所呈现的完整且常常复杂的现实。颜色…

网络串流_串流NFL足球的最便宜方式(无需电缆)

网络串流Football season is almost upon us. That means one thing: expensive cable or satellite TV packages. Okay, it also means beer commercials and overpriced stadium tickets and quarterbacks trying to sell you car insurance. But in terms of immediate cost…

【高清】网络安全思维导图

本文转自 是阿杰啊 51CTO博客&#xff0c;原文链接:http://blog.51cto.com/jschinamobile/1969018

生成函数初探

对给定序列\(\{a_{0,1,2,\cdots}\}\) 构造一个函数\(F(x)\sum_{i0,1,2,\cdots}a_if_i(x)\)&#xff0c;称\(F(x)\)为序列\(\{a_{0,1,2,\cdots}\}\)的生成函数。其中&#xff0c;序列\(\{f_{0,1,2,\cdots}(x)\}​\)只作为标志用&#xff0c;称为标志函数。 普通型生成函数(OGF) …

Pixel相机是怎么做到自动补抓最不错的自拍照

网络大厂 AI研究团队近日在最新的Pixel相机中&#xff0c;于无快门模式Photobooth新增亲吻侦测功能&#xff0c;当用户亲吻自己的爱人时&#xff0c;相机会自动捕捉这一瞬间。网络大厂过去是藉由Photobooth模式&#xff0c;让用户更简单地成功自拍&#xff0c;不管是一个人、情…

os x 启动引导_什么是OS X的启动板以及它如何工作?

os x 启动引导If you’re new to OS X, or even if you’re not and you’re simply used to pinning everything to the Dock, you might have wondered what Launchpad is, what it does, and how to use it. 如果您不熟悉OS X&#xff0c;或者即使您不熟悉OS X&#xff0c;而…

freeradius的proxy功能

要配置freeRADIUS的proxy功能&#xff0c;就需要熟悉它的两个配置文件&#xff1a;proxy.conf 和client.conf。 1. proxy.conf主要是用来配置被代理的radius server&#xff08;也叫home server&#xff09; 和 realm&#xff0c; 以及他们之间的映射关系&#xff0c;也就是req…

小程序 iphone和安卓_如何阻止iPhone和iPad应用程序要求评级

小程序 iphone和安卓Lots of iPhone and iPad apps ask for ratings, and they often don’t stop. Even if you do leave a review just to stop seeing the review requests, new apps you install will pester you for reviews, too. iOS 11 fixes this problem, limiting h…