一步一步分析HTTPS加密机制

HTTPS(SSL/TLS)的加密机制虽然是大家都应了解的基本知识, 但是更多的时候我们只是在背诵一些概念, 比如: "对称加密", "非对称加密", "数字证书". 但是我们很少去思考 "为什么". 本文围绕 "为什么" 展开, 一步一步解开 HTTPS 的面纱.

为什么要加密?

因为http的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营商等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是中间人攻击。所以我们才需要对信息进行加密。最容易理解的就是对称加密。

什么是对称加密?

对称加密的要点是: 加密和解密只需要1个秘钥

下面是对称加密的伪代码

密文 = encode(明文, 秘钥)
明文 = decode(密文, 秘钥)

对称加密的步骤是什么?

对称加密的步骤如下:

  • 小明和小红协商一个秘钥
  • 小明使用秘钥加密数据, 发送密文
  • 小红使用秘钥解密密文, 得到明文

对称加密示例-简单替换密码

简单替换密码系统中,我们为26个字母建立映射关系,例如s->a、c->d、h->n、o->x、l->y…… 26个字母被影射为另外的字母,那么一个明文的单词被加密后就无法认出了。例如school,按照上面的映射关系,就变成了adnxxy。

在这个密码系统中也存在密码算法和密钥。

  • 密码算法:26个字母按照固定的映射关系做替换

  • 密钥:26个字母的替换关系

如果想要破解密钥,也就是要找出26个字母的替换关系。a有26种替换可能,b有除a选择替换的字母之外的25种可能。以此类推,存在的替换关系有26x25x24……x1,约为2的88次方。如果计算机可以一秒尝试一亿个密码,运气差的话要尝试1200亿年。因此暴力破解是行不通的。

但是由于密码算法中,替换关系是稳定的,所以可以采用频率分析的方式破解密码。原理是明文中同一个字母出现的频率和密文中被替换的字母出现的频率一致。在英文中,字母出现的频率是相对稳定的。因此可以根据字母出现的频率推算出替换关系,也就是密钥。从而完成破解。

由此可见这种密码系统不安全的根源在于密码算法,该算法很容易让破解者推测出密钥,因此安全性极低。

对称加密示例-AES

AES 示例比较复杂, 是生产环境中常用的加密算法, 可以考虑跳过该部分

AES(advanced encryption standard) 算法是经过公开选拔所产生。这样彻底杜绝了 "隐蔽式安全性"。最终,比利时密码学家 Joan Daemen 和 Vincent Rijme 开发的密码算法 Rijndael成为了 AES 标准。

AES 所支持的 Rijndael 密码算法,分组长度为 128 比特,密钥长度有 128、192、256比特三种选择。

AES 算法也有多个轮次,每轮次有如下四个步骤:

  • SubBytes
  • ShiftRows
  • MixColumns
  • AddRoundKey

SubBytes:

类似于简单替换,将每个字节的值替换为另外的值。

ShiftRows:

首先将明文以4字节为一行,转化为多行,也就是矩阵。每行按照一定规则向左平移

MixColumns:

将矩阵的列,每4个字节为单位进行比特运算,转化为另外的4字节值。

AddRoundKey:

将 MixColumns 后的数据与轮密钥进行 XOR 运算。

以上四步执行完后,一轮 Rijndael 加密就结束了。Rijndael 加密一般要进行 10-14 轮计算。

Rijndael 解密的过程则是相反的顺序:

  • AddRoundKey
  • MixColumns
  • ShiftRows
  • SubBytes

Rijndael 加密的过程有点像玩魔方。假如有种魔方,除了和普通魔方相同之处外,每个格子还写有文字。Rijndael 加密的过程和打乱这个魔方非常像。横着转几下,竖着转几下。除了打乱行、列,还对格子里的值做了替换以及 XOR 加密。

而 Rijndael 解密的过程就是还原魔方,只不过不但颜色要还原一致,魔方格子上的文字也要还原。 你是否担心会玩魔方的人很容易就能复原?由于AES中使用了密钥,所以即使精通AES算法,拿不到密钥也很难还原。

image.png

切记不要试图自己开发加密算法,通过隐藏加密算法的方式来提高安全性。要杜绝隐蔽式安全性。没有特殊情况,我们都应该首选 AES。

对称加密问题是什么?

对称加密的问题在于第一步: 协商秘钥

如果小明将将秘钥发送给小红, 黑客就可以在网络线路上截获秘钥, 这样黑客就可以解密所有的数据了

有如下几种解决密钥配送问题的方案:

  • 事先共享密钥: 比如小明和小红私下交换秘钥
  • 密钥分配中心: 比如小明和小红将秘钥发送给密钥分配中心, 然后密钥分配中心将秘钥发送给小明和小红
  • 非对称加密

下面主要介绍一种解决方案: 非对称加密

什么是非对称加密?

非对称加密的要点是: 加密和解密需要2个秘钥

公钥加密数据, 私钥解密数据

非对称加密的伪代码如下:

密文 = encode(明文, 公钥)
明文 = decode(密文, 私钥)

注意CA机构是相反的: 私钥签名, 公钥验证签名

非对称加密的密码学实现比较复杂, 这里不赘述

非对称加密的步骤是什么?

一共4个秘钥,小红有私钥和公钥, 小明有私钥和公钥

  • 小明将公钥发送给小红, 小红将公钥发送给小明
  • 小红使用小明的公钥加密数据, 发送密文
  • 小明使用自己的私钥解密密文, 得到明文

非对称加密的效率问题?

非对称加密算法非常耗时,而对称加密快很多, 一般的方案是: 使用非对称加密算法交换对称加密的密钥, 然后使用对称加密算法加密数据

非对称加密的安全问题?

黑客无法获取内容, 但是黑客可以拦截伪造

小明和小红的公钥都在网络中传输过, 黑客就可以在网络线路上截获公钥和密文, 但是黑客没有私钥, 黑客无法解密内容

但是黑客可以拦截伪造

比如小明登录网站, 黑客拦截了小明对网站的登录请求, 然后黑客将自己的公钥发给了小明, 小明用黑客的公钥加密了账号和密码发给了黑客, 黑客用自己的私钥解密, 就获得了小明的账号密码

所以 你怎么鉴别别人给你的公钥是对的?

下面介绍一种解决方案: 证书

证书是什么?

证书解决公钥的信任问题, 由权威机构告诉你你手上的公钥是这个网站的, 而不是黑客伪造的

请记住一句话: 公钥加密,私钥解密;私钥签名,公钥验签

证书的步骤是什么?

  • 网站生成网站公钥和网站私钥
  • 网站将自己的公钥(明文数据)交给权威机构认证(一般是域名的管理员才能通过认证)
  • CA机构对证书明文数据T进行hash
  • CA机构对hash后的值用私钥加密(不同之处在于CA机构用私钥加密, 公钥解密),得到数字签名S, 证书=明文数据+数字签名
  • 用户下载的浏览器都默认安装了主流CA机构的公钥, 用户从网站下载证书后通过机构公钥解密证书的签名, 然后对证书明文数据进行hash, 如果hash值和签名一致, 证明证书是CA机构签发的, 证书是可信的.
  • 用户通过网站的公钥(也就是证书中的明文数据), 对明文进行加密, 发送密文
  • 网站通过自己的私钥对密文进行解密, 得到明文

总之就是: 通过加了一层机构来保证公钥的正确性

为什么CA机构对明文加密前要先hash?

如果直接对明文加密, 会很慢, 所以先对明文进行hash, 然后对hash值进行加密, 这样速度会快很多

机构是干嘛的?

机构的工作主要就是认证证书的生成和管理

生成证书

负责认申请人的身份, 一般是域名所有人, 认证通过后生成证书

管理证书

如果网站的私钥被泄露了, 网站需要将改证书作废, 重新生成新的证书

机构是哪个国家的?

权威机构有几个公司, 浏览器默认都安装了他们的公钥, 大部分都是美国的

跟域名, IP地址一样, CA证书也是互联网的资源, 可以用来卡脖子.

有一个知乎问答: 西方机构吊销了俄罗斯的HTTPS证书有什么影响吗?https://www.zhihu.com/question/523817733/answer/2440936723

如果黑客伪造了机构的的证书呢?

我们怎么知道机构一定是可信任的呢, 我们应该信任哪家机构呢, 如果黑客伪造了机构的的证书呢?

核心要点是: 我们最终选择相信根CA

  • 浏览器内置了一些根CA, 一般是国家级的机构, 比如: Verisign, Thawte, GeoTrust, Comodo, DigiCert, Entrust, GlobalSign, GoDaddy, Network Solutions, Symantec, etc.
  • 根CA可以给及其他机构或者网站颁发证书
  • 其他机构可以给其他机构或者网站颁发证书
  • 但是最终一定是能追溯到根CA, 我们默认根CA是可靠的(只要浏览器软件是可靠的, 不要下盗版的软件, 另外我们也可以自己安装CA到设备中)

你仍旧不信任根 CA?抱歉,你也只能信任根CA。

HTTPS是什么?

上面介绍了, 对称加密, 非对称加密, 证书. 把它们结合起来, 解决效率和安全性的问题, 这就是 https

参考资料: https://blog.csdn.net/odyyy/article/details/80256129

reference

密码学: https://icodebook.com/

HTTPS: https://zhuanlan.zhihu.com/p/43789231

CA,证书,公钥,私钥,加密算法常识总结: https://www.cnblogs.com/yb38156/p/14293382.html

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

推荐阅读更多精彩内容

  • 为什么需要加密? 因为http的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营...
    请不要问我是谁阅读 381评论 1 2
  • 转载声明:本文来自微信公众号:火龙果园长,仅供学习交流,禁止用于商业用途,转载需关注公众号取得文章作者同意。 写在...
    火龙果园长阅读 3,919评论 2 6
  • 在讲主题之前,我们先来区分两个概念:签名和加密有什么区别? 我们从字面意思看: 签名就是一个人对文件签署自己的名字...
    kamisamer阅读 212评论 0 2
  • 1,摘要 本文配图介绍HTTPS协议的层级结构,访问原理,交互过程,说明如何解决存在的中间人问题。 2,内容 2....
    笔名辉哥阅读 1,981评论 0 51
  • 分析HTTPS整套加密机制是如何实现的? 概要 HTTPS,带给大家的感觉就是更安全,需要服务器配置证书,但是到底...
    花神子阅读 343评论 0 5