当我们在谈论 HTTPS 的时候,我们在谈论什么?

当我们在谈论 HTTPS 的时候,我们在谈论什么?
我觉得,这些方面必不可少——

  1. https 是什么?
  2. https 与 http 的区别
  3. https 设计原理
  4. https 密钥互换过程

https 是什么?

(此处已假设你熟悉并理解 http 协议,如不懂可以参考我另一篇文章

https 是我们日常编程常用到的与安全有关的网络协议, https 俗称是基于 SSL/TLS 的 http 协议

SSL/TLS 是什么呢?
可以理解为是一种安全协议,相当于网络协议的安全套接层。

那 https 协议其实就相当于是在 http 协议外面套了一层安全协议,这就是 https 协议。

为什么要套这层SSL/TLS安全协议呢?因为 http 是不安全的

了解过web安全应该知道 http 协议是明文通信的,那么就会带来3个安全问题:

  1. 窃听风险:第三方可以获知通信内容
  2. 篡改风险:第三方可以修改通信内容
  3. 冒充风险:第三方可以冒充他人身份参与通信

而 https 的诞生就恰好是为了解决这3个问题的。在 tcp 层与 http 层之间加入了 SSL/TLS ,来为通信提供网络安全信道。

https 与 http 的区别

  • http 是由“http://”起始与默认使用80端口,而https的URL则是由“https://”起始与默认使用443端口
  • http 是明文传输信息的,https 是加密(对称加密+非对称加密)传输信息的。
  • http不是安全的,而且攻击者可以通过监听和中间人攻击等手段,获取网站帐户和敏感信息等。https 的设计可以防止前述攻击,在正确配置时是安全的
  • https 需要到 CA 申请证书,http 不需要证书

暂时我能想到的区别就这么多,欢迎补充:)

https 设计原理

我在网上看到过一篇文章,采用信鸽传信的例子来形象生动的说明了 https 的设计原理。

主人公爱丽丝、鲍勃是一对情侣,马洛里是第三者,现在处在爱丽丝和鲍勃需要用信鸽传密信。

最初,爱丽丝和鲍勃是采用最简陋的通信传输方式,就是信件内容不加密也不做任何处理。这时候他们发现,他们的信件内容经常被人窃听、篡改甚至被冒充的人发信件。原来,他们的信鸽中途被马洛里偷偷抓住了,因此他们的通信其实是不可靠的。

类比过来,这大概就是 http 协议实现的过程。

后来,聪明的鲍勃将信的内容进行加密,即他们事前约定好怎么解密(如将每个字母如 a 均向后移动3位,此时变成 d)。 于是马洛里截获的就是加密过的内容,马洛里就不知道他们的通信内容了。

但是马洛里也非常聪明,他慢慢发现了信件被加密了,不知道从哪里就弄到了解密的方法,于是他们的通信方式再一次变得不可靠。

于是爱丽丝他俩又发明了新的通信方法:爱丽丝先用信鸽寄一个空的带锁的匣子给鲍勃,而且这个匣子也没有锁上,这个锁有且只有一把钥匙,这时候是在爱丽丝手上。鲍勃拿到空匣子之后将加密过的内容放入匣子中,然后锁上一并寄给爱丽丝。

这时候马洛里再截获信鸽也没有用了,因为就算他知道信件里面内容的解密方法,但是他打不开这个盒子,因为只有爱丽丝有钥匙能够打开这个装信件的匣子。这便是 https 通信中非对称加密的精髓了。

但是怎么保障这个匣子就一定是最初爱丽丝寄给鲍勃的那个匣子呢?爱丽丝决定签名标记一下盒子,这样鲍勃收到盒子的时候就可以检查签名来确定是爱丽丝送出的盒子了。

村里比较有名望的泰德给人签名,且他签过的名他一定是可以认出来的,所有人可以信任他。这就是 https 原理设计中的向 CA 申请证书,泰德就相当于是 CA 机构。

这时候爱丽丝寄的匣子可以先找泰德签名,然后鲍勃收到匣子也跟泰德确认是不是爱丽丝的匣子,最后匣子回到爱丽丝手中的时候她再跟泰德确认一遍该签名。这样就完全保证了爱丽丝、鲍勃的信鸽通信是完全可靠的。

这边是 https 协议设计的大致过程。

其中,爱丽丝-鲍勃就是我们开发中的服务端和客户端模型, 马洛里可以想象成网络黑客,匣子是公钥,匣子的钥匙是私钥,然后泰德就是证书认证机构 CA。

信件加密采用的是对称加密,寄匣子然后自己留唯一钥匙的方式采用的是非对称加密。这样他们的通信方式就兼具非对称加密的可靠性和对称加密的高效性了。

“非对称加密算法”:从数学上确保了——即使你知道某个公钥,也很难(不是不可能,是很难)根据此公钥推导出对应的私钥。
“对称加密”:只要知道了加密算法,人人都可以用这个加密算法解开经过对称加密的内容。

https 密钥互换过程

了解了https协议的设计原理,https 的通信过程就比较好理解了。唯一需要重点注意的,就是 https 密钥交换 的过程(这个很多大厂前端面试会考到哦)。

https 密钥交换过程大致如下图所示:

https.png
  1. 客户端发起HTTPS请求
    这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。

  2. 服务端的配置
    采用HTTPS协议的服务器一般会向 CA 申请一套数字证书。这套证书其实就是一对公钥和私钥,即公钥加密过的内容,只有私钥才能解密。如果觉得这不太好理解,公钥和私钥可以想象成上面例子中的那个匣子和开匣子的钥匙。

  3. 传送证书
    这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

  4. 客户端解析证书
    这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值(如上图的 k)。然后用证书的公钥 k2 对该随机值k进行加密 得到 k‘。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

  5. 传送加密信息
    这部分传送的是用证书加密后的随机值k’,目的就是让服务端也得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  6. 服务端解密信息
    服务端用私钥k1解密k‘后,得到了客户端传过来的随机值k(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

  7. 传输加密后的信息
    这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

  8. 客户端解密信息
    客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

需要注意的是,客户端和服务器端双方最终采用 "对话密钥"(上图中的 k,通过双方协商生成) 进行加密通信的,而非最开始从从 CA 那里申请得到的公钥或私钥。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容