一个故事讲完HTTPS

FreeModbus从入门到实战:手把手教你用STM32实现工业级Modbus RTU通信 本文详细介绍了如何使用STM32FreeModbus实现工业级Modbus RTU通信,涵盖硬件搭建、协议栈移植及优化技巧。重点解析了FreeModbus的移植过程,包括串口驱动适配、定时器配置工业级稳定性优化,为开发者提供了一套完整的工业通信解决方案。 阅读详情

欢迎Follow我的GitHub, 关注我的CSDN. 其余参考Android目录.微信公众号:程序员小乐

推荐文章:

如果你喜欢上了一个程序员小伙,献给所有的程序员女友
学习资料(干货汇集)不断更新【更新于2017-2-25】
阿里、腾讯、百度、华为、京东、搜狗和滴滴最新面试题汇集(更新篇)

每日英文

Don’t go after what you want, you’ll never have it. Don’t ask, the answer is always No. Don’t go forward, you will stay forever.

不去追逐你所渴求,你将永远不会拥有。不开口问,回答永远是No。不往前走,就将永远停留。

小乐有话说

我们都像小孩,胡闹是因为依赖;礼貌,是因为是陌生。 主动,是因为在乎。 不联系,是因为觉得自己多余!

来自公众号:码农翻身
https://mp.weixin.qq.com/s/StqqafHePlBkWAPQZg3NrA
image

责编:乐乐 | 封面来自网络

** 00 序言 **

今天来聊一聊https 安全传输的原理。

在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖(怎么又是你?!), 还有一个是位于米国的Bill (怎么还是你?!)。

这俩哥们隔着千山万水,通过网络联系上了, 两个人臭味相投,聊得火热。

此时正值米国大选, 张大胖亲切地“致电”Bill, 对米国总统大选的情况表示强烈地关注。 Bill则回电说谢谢关心米国人的事情我们米国人自己做主,不用你们歪果仁瞎操心…

张大胖继续“致电”说其实我们支持特朗普, 因为希拉里太情绪化,太难打交道了, 我们挺希望看到特朗普上台这样米国就会变成 The Divided State of America …

Bill 回电: 拉倒你吧你, 我们米国的政体有着强大的纠错性, 虽然有时候发展得慢, 有时候会走上岔路, 但很快就会回到正途,几百年来稳定得很,不像你们像坐了过山车一样…

两个人越聊越投机,天南地北,海阔天空,还夹杂着不少隐私的话题。

**01 总是有一种被偷看的感觉 **

有一天, Bill 突然意识到: 坏了, 我们的通信是明文的, 这简直就是网络上裸奔啊, 任何一个不怀好意的家伙都可以监听我们通信,打开我们发送的数据包,窥探我们的隐私啊。

张大胖说: “你不早点说,我刚才是不是把我的微信号给你发过去了? 我是不是告诉你我上周去哪儿旅游了? 估计已经被人截取了吧!”

Bill 提议: “要不我们做个数据的加密? 每次传输之前, 你把消息用一个加密算法加密, 然后发到我这里以后我再解密, 这样别人就无法偷窥了,像这样: ”

image

张大胖冰雪聪明,一看就明白了, 这加密和解密算法是公开的,那个密钥是保密的, 只有两人才知道, 这样生成的加密消息(密文) 别人就无法得知了。 他说: “Bill 老兄,你生成一个密钥, 然后把密钥发给我, 咱们这就开启加密消息, 让那些偷窥狂人们哭去吧!”

(注:这叫对称加密算法, 因为加密和解密用的是同一个密钥)

一炷香功夫过去了, Bill 还是没有回音, 张大胖忍不住地催促: “快发啊?!!!”

Bill 终于回复了: “ 我感觉有一双眼睛正在虎视眈眈地盯着我们的通话, 如果我把密钥发给你, 也被他截取了, 那加密岂不白费工夫?”

张大胖沉默了, 是啊, 网络是不安全的, 这密钥怎么安全地发过来啊 ?

“奥,对了,我下周要去米国旅游,到时候我们见一面,把密码确定下来,写到纸上,谁也偷不走, 这不就结了?”

“哈哈, 这倒是终极解决之道 ” Bill 笑了, “不过,我不仅仅和你聊天, 我还要和易卜拉欣,阿卜杜拉, 弗拉基米尔,克里斯托夫,玛格丽特, 桥本龙太郎, 李贤俊, 许木木,郭芙蓉,吕秀才等人通信, 我总不能打着飞的,满世界的和人交换密码吧? ”

张大胖心里暗自佩服Bill同学的好友竟然遍布全球,看来他对加密通信的要求更加强烈啊!

可是这个加密解密算法需要的密钥双方必须得知道啊, 但是密钥又无法通过网络发送, 这该死的偷窥者!

**02 RSA : 非对称加密 **

Bill 和 张大胖的通信无法加密,说话谨慎了不少, 直到有一天, 他们听说了一个叫做RSA的非对称加密算法,一下子来了灵感。

这个RSA算法非常有意思,它不是像之前的算法, 双方必须协商一个保密的密钥, 而是有一对儿钥匙, 一个是保密的,称为私钥,另外一个是公开的,称为公钥。

更有意思的是,用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据, 只有对应的私钥才能解密

image

有了这两个漂亮的特性, 当张大胖给Bill发消息的时候, 就可以先用Bill的公钥去加密(反正Bill的公钥是公开的,地球人都知道), 等到消息被Bill 收到后, 他就可以用自己的私钥去解密(只有Bill才能解开,私钥是保密的 )

image

反过来也是如此, 当Bill 想给张大胖发消息的时候,就用张大胖的公钥加密, 张大胖收到后,就用自己的私钥解密。

这样以来,通信安全固若金汤, 没有任何人能窥探他们的小秘密了。

**03 非对称加密+对称加密 **

两人实验了几次, 张大胖说: “Bill , 你有没有感觉这个RSA的加密和解密有点慢啊?”

Bill叹了口气 :“是啊, 我也注意到了, 刚才搜了一下,这个RSA算法比之前的对称密钥算法要慢上百倍。我们就是加个密而已,现在搞得都没法用了”

“回到咱们最初的问题,我们想用一个密钥来加密通信,那个对称加密算法是非常快的,但是苦于密钥无法安全传输, 现在有了RSA ,我想可以结合一下, 分两步走 (1) 我生成一个对称加密算法的密钥, 用RSA的方式安全发给你, (2) 我们随后就不用RSA了, 只用这个密钥,利用对称加密算法来通信, 如何? ”

Bill 说: “你小子可以啊, 这样以来既解决了密钥的传递问题, 又解决了RSA速度慢的问题,不错。”

于是两人就安全地传递了对称加密的密钥, 用它来加密解密,果然快多了!

**04 中间人攻击 **

张大胖把和Bill 聊天的情况给老婆汇报了一次。

老婆告诫他说: “你要小心啊, 你确定网络那边坐着的确实是Bill ?”

张大胖着急地辩解说:“肯定是他啊,我都有他的公钥,我们俩的通信都是加密的。”

老婆提醒道:"假如啊,Bill给你发公钥的时候, 有个中间人,截取了Bill的公钥, 然后把自己的公钥发给了你,冒充Bill ,你发的消息就用中间人的公钥加了密, 那中间人不就可以解密看到消息了?"

张大胖背后出汗了,是啊,这个中间人解密以后,还可以用Bill的公钥加密,发给Bill , Bill和我根本都意识不到, 还以为我们在安全传输呢!

image

看来问题出现在公钥的分发上! 虽然这个东西是公开的, 但是在别有用心的人看来,截取以后还可以干坏事 !

**05 你到底是谁? **

但是怎么安全地分发公钥呢? 似乎又回到了最初的问题: 怎么安全的保护密钥?

可是似乎和最初的问题还不一样,这一次的公钥不用保密,但是一定得有个办法声明这个公钥确实是Bill的, 而不是别人的。

怎么声明呢?

张大胖突然想到: 现实中有公证处,它提供的公证材料大家都信任,那在网络世界也可以建立一个这样的具备公信力的认证中心, 这个中心给大家颁发一个证书, 用于证明一个人的身份。

这个证书里除了包含一个人的基本信息之外,还有包括最关键的一环:这个人的公钥!

这样以来我拿到证书就可以安全地取到公钥了 ! 完美!

可是Bill 马上泼了一盆冷水:证书怎么安全传输? 要是证书传递的过程中被篡改了怎么办?

张大胖心里不由地咒骂起来: 我操, 这简直就是鸡生蛋,蛋生鸡的问题啊。

天无绝人之路, 张大胖很快就找到了突破口: 数字签名

简单来讲是这样的, Bill可以把他的公钥和个人信息用一个Hash算法生成一个消息摘要, 这个Hash算法有个极好的特性,只要输入数据有一点点变化,那生成的消息摘要就会有巨变,这样就可以防止别人修改原始内容。

image

可是作为攻击者的中间人笑了: “虽然我没办法改公钥,但是我可以把整个原始信息都替换了, 生成一个新的消息摘要, 你不还是辨别不出来?”

张大胖说你别得意的太早 , 我们会让有公信力的认证中心(简称CA)用它的私钥对消息摘要加密,形成签名:

image.gif

image

这还不算, 还把原始信息和数据签名合并, 形成一个全新的东西,叫做“数字证书”

image

image.gif

张大胖接着说:当Bill把他的证书发给我的时候, 我就用同样的Hash 算法, 再次生成消息摘要,然后用CA的公钥对数字签名解密, 得到CA创建的消息摘要, 两者一比,就知道有没有人篡改了!

如果没人篡改, 我就可以安全的拿到Bill的公钥喽,有了公钥, 后序的加密工作就可以开始了。

虽然很费劲, 但是为了防范你们这些偷窥者,实在是没办法啊。

image

image

中间人恶狠狠地说: “算你小子狠! 等着吧,我还有别的招。 对了,我且问你, 你这个CA的公钥怎么拿到? 难道不怕我在你传输CA公钥的时候发起中间人攻击吗? 如果我成功的伪装成了CA,你这一套体系彻底玩完。”

张大胖语塞了,折腾了半天,又回到了公钥安全传输的问题!

不过转念一想,想解决鸡生蛋,蛋生鸡的问题必须得打破这个怪圈才行,我必须得信任CA,并且通过安全的的方式获取他们的公钥,这样才能把游戏玩下去。

(注:这些CA本身也有证书来证明自己的身份,并且CA的信用是像树一样分级的,高层的CA给底层的CA做信用背书,而操作系统/浏览器中会内置一些顶层的CA的证书,相当于你自动信任了他们。 这些顶层的CA证书一定得安全地放入操作系统/浏览器当中,否则世界大乱。)

**06 https **

终于可以介绍https了,前面已经介绍了https的原理, 你把张大胖替换成浏览器, 把Bill 替换成某个网站就行了。

一个**简化的(例如下图没有包含Pre-Master Secret)**https流程图是这样的, 如果你理解了前面的原理,这张图就变得非常简单:

image

推荐阅读

阿里、腾讯、百度、华为、京东最新面试题汇集

5月语言排行榜:R跌出前二十,Python紧咬C++

可怜的Java EE,这次会不会劫数难逃?

面试一线大厂的点点滴滴

image

这里有你需要的编程****技术、心得、经验(数据结构与算法、源码分析等),这里不止限于技术!还有**职场心得、生活感悟、以及面经等。**关注公众号,第一时间送达!

PS:如何您想进技术群交流,关注公众号在后台回复 “加群”,或者 “学习” 即可

基于图像分割的LIDC-IDRI 数据集预处理之数据下载篇 近期接触到了一个关于图像分割实验项目,关于数据预处理部分在此予以记录,大家分享。 阅读详情

相关推荐

Qt 5.12.8在Linux下编译qtvirtualkeyboard模块,我踩过的那些坑(附完整解决方案)

本文详细介绍了在Linux系统下为Qt 5.12.8单独编译qtvirtualkeyboard模块的完整解决方案。通过分析模块缺失原因、提供精准的编译步骤常见问题处理,帮助开发者高效解决虚拟键盘模块缺失问题,避免重新编译整个Qt源码的繁琐过程。

weixin_29248611的博客 432

https的安全传输原理

今天来聊一聊https的安全传输原理。(本文转载自微信公众号:Web开发,楼主是该公众号的关注者)在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖(怎么又是你?!), 还有一个是位于米国的Bill (怎么还是你?!)。这俩哥们隔着千山万水,通过网络联系上了, 两个人臭味相投,聊得火热。此时正值米国大选, 张大胖亲切地“致电”Bill, 对米国总统大选的情况表示强烈地关注。 Bill则回电说谢

Williams山石的博客 1170

零基础搭建本地AI绘画环境:Stable Diffusion 3.5保姆级安装教程(含中文优化方案)

本文提供零基础搭建本地AI绘画环境的详细教程,重点介绍Stable Diffusion 3.5的安装与中文优化方案。从硬件配置检查到软件依赖安装,再到核心组件配置与中文语义增强,教程涵盖全流程操作指南,帮助用户快速掌握AI文生图模型的本地部署技巧,提升创作效率。

weixin_30752699的博客 287

https协议安全传输的过程理解

文章目录https协议安全传输的过程理解从故事理解https1 故事开始之前2 总是有一种被偷看的感觉3 RSA : 非对称加密4 非对称加密+对称加密5 中间人攻击6 你到底是谁?7 https额外的参考个人总结 https协议安全传输的过程理解 从故事理解https from wechat 《码农翻身》 1 故事开始之前 在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖...

UnknownPlayer的博客 1170

读书笔记(二)《码农翻身》

2020年的第二篇读书笔记,陶醉在读书笔记博客之间,作为一种正反馈,不断吸引我去记录学到的知识,学生时代一样,边学边记录,时间在这里似乎变得珍贵了不少。 浪潮之巅的Web 浏览器,超文本,标记语言,网络服务器,共享内存来通信,自定义socket通信,Web服务通信,HTTP GET/POST+JSON Web通信过程 :HTTP发送请求,HTTP报文打包在TCP报文段中,又被放在IP层数据...

摩尔的博客 936

https传输过程及原理

加密

m0_67373568的博客 3138

一个故事讲完https

1 序言今天来聊一聊https 安全传输的原理。在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖(怎么又是你?!), 还有一个是位于米国的Bill (怎么还是你...

码农翻身 2862

VC程序员之无法选择的命运

许多人选择做程序员,因为觉得程序员做的是创造性的工作。许多人选择做VC程序员,因为想感受掌握一切,君临天下的感觉。后来,程序员们都明白了:自己所做的,只是最机械、最重复的劳动。我们并未创造着世界,而是让世界死死地牵着鼻子走。我们一步也不敢停留,害怕着会因此与世界失去联系。再后来,程序员知道了除了写程序之外,还要吃饭。许多程序员找到了工作,唯唯诺诺地写公司规定的代码,过上了任人鱼肉的生活。VC程序

1327

为什么程序员找不到工作了?

近年来程序员就业难问题凸显,主要受多重因素影响:互联网业增长放缓导致岗位减少,而供给端培训机构者持续涌入;云原生、低代码AI等技术演进重构岗位需求,降低人力依赖;企业用人标准转向实战能力全栈技能,年龄门槛隐现。突围建议包括深耕云原生/AI等高价值领域、提升业务理解、构建多维竞争力。未来业将呈现二八分化,需持续学习适应技术快速迭代。虽然短期面临挑战,但对真正热爱技术的开发者仍存在机遇,关键在于主动适应变革趋势。

m0_66884848的博客 1103

VC程序员为啥无法选择命运

wukejia@msn.com在我的早期职业生涯中,也曾是个VC程序员,也曾以为驾驭了VC就是驾驭了自己的技术生涯。但渐渐地,我 发现无论我潜心研究多深,付出多少精力,在大多数问题上,我无法给自己满意的答案。似乎自己在金字塔大大小小、宽宽窄窄的隧道里踯躅前,但每走了一大段 路后,你总能碰到一扇门,一扇单靠自己很难逾越的门。后来发现,很多VC程序员也有同感:在做过若干年后,总会感觉面前立起一个槛,

火烧云 2893

码农翻身讲网络5:Web安全攻防战与HTTPS

浏览器:一个家族的奋斗 原创: 刘欣码农翻身2017-12-12 我是你们每天都要使用的浏览器,自从90年代诞生以来,我们这个大家族变得非常的繁荣,在过去的几十年中,我们一直兢兢业业地帮助你们人类去探索外部的互联网世界。随着互联网移动互联网的发展,我们家族终于登上了成功的巅峰:几乎占据了全球每一台电脑手机。 大家只看到表面的光鲜,可是谁知道我们家族在背后充满血泪的不懈努力呢...

Java技术江湖 2925

一个故事让你彻底搞懂Https

文章出处: 微信号 JANiubility 1   序言 今天来聊一聊https 安全传输的原理。 在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖(怎么又是你?!), 还有一个是位于米国的Bill (怎么还是你?!)。 这俩哥们隔着千山万水,通过网络联系上了, 两个人臭味相投,聊得火热。 此时正值米国大选, 张大胖亲切地“致电

网鱼的栈 861

【码农翻身】

码农翻身相关知识点记录

m0_46612024的博客 459

一文看懂https如何保证数据传输的安全性的

如图:为了防止摘要被人调换,小服还会用。

dzqxwzoe的博客 1371

码农翻身 各章节链接

大话编程 我是一个线程 我是一个Java class Javascript: 一个屌丝的逆袭 Java:一个帝国的诞生 JSP:一个装配工的没落 TCP/IP 之 大明王朝的邮差 TCP/IP 之 大明内阁 TCP/IP 之 蓟辽督师 CPU 阿甘 CPU 阿甘之烦恼 CPU 阿甘:函数调用的秘密 我是一个网卡 我是一个路由器 我是一个进程 我是一块硬盘(上) 我是...

wudinaniya的博客 4万+

《码农翻身》原文分章节阅读链接

最近发现了别人整理好的码农翻身里面的一些文章链接,这本书非常棒,公众号相信很多人也知道(coderising),不过由于这本书目前只有纸质版,因此在上下班这块时间段里没法方便的去阅读,所以这份整理好的带链接的目录就十分方便的解决了这个问题。 附上原文链接:https://blog.csdn.net/wudinaniya/article/details/81130079 补充一篇负载均衡文章:h...

静待花开 8009

HTTPS:如何确保您的网站数据传输安全?

以下是一个关于HTTPS协议的博客前言示例: 欢迎来到我的博客,今天我们将深入探讨HTTPS协议。随着互联网的快速发展,网络安全问题越来越受到人们的关注。其中,HTTPS协议作为保障数据传输安全的重要手段,已经在众多领域得到广泛应用。 在这个博客中,我们将详细介绍HTTPS协议的工作原理、优势、用途以及如何实施。通过了解HTTPS协议,您将能够更好地保护您的在线隐私数据安全,避免遭受网络威胁攻击。 让我们开始探索HTTPS协议的世界,共同守护网络安全!

lz17267861157的博客 2216

【计算机网络】HTTPS 协议原理

理解 https 概念,认识加密是什么,认识数据摘要(数据指纹),深度探究 https 的工作原理!

YoungMLet的博客 4390

码农翻身精华文章

让你豁然开朗的干货文章合集,通俗易懂

perry_Fan 3万+

斜齿轮10自由度模型计算.zip_ode45 齿轮_自由度齿轮_轴承 动力学_齿轮 刚度_齿轮 自由度

一个10自由度齿轮传动系统动力学模型,通过调用ode45进求解,考虑了轴承刚度阻尼。

海康SDK delphi demo

海康sdk二次开发delphi例程,包括回调函数

上一篇: 面试一线大厂的点点滴滴
下一篇: SSH 免密登录是怎么玩儿的?
吧主
博客等级 码龄12年 1242粉丝 116原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值