你需要知道的SSL

1. HTTP缺点

  • 通信使用明文,可能被窃听
  • 无法证明报文的完整性,有可能遭遇篡改
  • 不验证通信方的身份,可能遭遇伪装。

所以,信息传输的安全包括三个方面

  • 客户端和服务器直接的通信只有自己能看懂,即使第三方拿到数据也看不懂这些信息的真实含义。
  • 第三方虽然看不懂数据,但可以 XJB 改,因此客户端和服务器必须有能力判断数据是否被修改过。
  • 客户端必须避免中间人攻击,即除了真正的服务器,任何第三方都无法冒充服务器

2. 如何不被窃听:加密

image

2.1 使用对称加密技术

2

image

HTTP引入对称加密后,HTTPS 的握手流程就会多了两步,用来传递对称加密的秘钥:

客户端: 你好,我需要发起一个 HTTPS 请求
服务器: 好的,你的秘钥是 1。
服务器直接返回明文的对称加密密钥是不是不安全。如果有监听者拿到这个密钥,不就知道客户端和服务器后续的通信内容了么?

2.2 如何交换密钥:非对称加密

这里我们引入非对称加密的方式,非对称加密的特性决定了服务器用私钥加密的内容并不是真正的加密,因为公钥所有人都有,所以服务器的密文能被所有人解析。但私钥只掌握在服务器手上,这就带来了两个巨大的优势:

服务器下发的内容不可能被伪造,因为别人都没有私钥,所以无法加密。强行加密的后果是客户端用公钥无法解开。
任何人用公钥加密的内容都是绝对安全的,因为私钥只有服务器有,也就是只有真正的服务器可以看到被加密的原文。

所以传输对称秘钥的问题就迎刃而解了:
密钥不是由服务器下发,而是由客户端生成并且主动告诉服务器。
所以当引入非对称加密后,HTTPS 的握手流程依然是两步,不过细节略有变化:
客户端: 你好,我需要发起一个 HTTPS 请求,这是我的 (用公钥加密后的) 秘钥。
服务器: 好的,我知道你的秘钥了,后续就用它传输。

2.3 那公钥怎么传输: 数字证书

2.3.1 服务器直接只下发公钥的的安全问题

RSA算法无法确保服务器身份的合法性,因为公钥并不包含服务器的信息,存在安全隐患:

image

2.3.2 数字证书:公钥的身份证

每一个服务器自己生成或到权威机构申请一个数字证书(公钥的身份证),
CA权威机构:能保证自身不受攻击(或者别人不敢攻击),就像现实生活中的公安局。
证书 = 公钥 + 申请者与颁发者信息 + 签名 + 有效期+ .....

image

CA证书的申请

每一个使用 HTTPS 的服务器都必须去专门的证书机构(CA)注册一个证书,证书中存储了用权威机构私钥加密的公钥。这样客户端用权威机构的公钥解密就可以了。

image

自签名证书的生成

此处略去1万字。。。。。

3.如何校验身份:证书校验

  • 首先需要校验证书可信任的合法证书??
  • 其次需要校验证书有没有被篡改?
  • 最后校验证书是不是自己服务器?

3.1 CA证书

1. 系统默认校验:

客户端没有预埋锚点证书,就和浏览器一样,只校验在系统的信任机构列表的根证书,去验证服务端返回的证书。
此刻应该意识到:根证书是整个证书体系安全的根本。所以,如果某个证书体系中,根证书出了问题(不再可信了),那么所有被根证书所信任的其它证书,也就不再可信了。这个后果是相当相当滴严重(简直可以说是灾难性的)。
这也是中间人攻击的一个入口。所以如果不小心安装过非权威机构的根证书,比如客户端链接恶意的 Wi-Fi等情况下装上恶意证书,这时候设备上就多了一个预设的公钥,那么用恶意私钥加密的证书就能被正常解析出来。所以千万不要随便装根证书,这等于是为那些恶意证书留了一扇门。

2. 证书校验:客服端需要有预埋证书的拷贝。

公钥校验:不校验域名和有效期等,只要公钥是正确的,就能保证通信不会被窃听,因为中间人没有私钥,无法解开通过公钥加密的数据。
锚点证书校验:设置本地为锚点证书,假如验证的数字证书是这个锚点证书的子节点,即验证的数字证书是由锚点证书对应CA或子CA签发的,或是该证书本身,则信任该证书。从服务器端证书链的根节点往下遍历,看看是否有与客户端的绑定证书一致的,有的话,就说明服务器端是可信的。

image

3.2 自定义CA证书

确认证书就是由自己服务器下发的呢?
必须预埋证书
签名校验
domain Validation、有效期校验
公钥校验或锚点证书校验

3.3 怎么知道证书有没有被篡改??

A: 将信息 hash 值随着信息一起传递
为了确保原始证书没有被篡改,我们可以在传递证书的同时传递证书的哈希值。 由于第三者无法解析数据,只能修改 数据,修改后的数据就不可能通过哈希。
虽然公钥已知,每个人都可以解密,解密完也可以篡改,但是因为没有私钥, 所以无法正确的加密。所以它再返回给客户端的数据是无效数据,用公钥解析后会得到乱码。即使攻击者通过多次尝试碰巧能够解析,也无法通过哈希校验。

4. 如何防止数据篡改

4.1 HMAC

为了防止黑客通过彩虹表根据哈希值反推原始数据,在计算哈希的时候,不能仅针对原始输入计算,需要增加一个key来使得相同的输入也能得到不同的哈希,这样,大大增加了黑客破解的难度。

image

4.2 数字签名
MAC 虽好,但是遇到和对称密码同样的问题:密钥如何交换。
其中一个解决方式就是数字签名,这个“签名”你基本可以想象成现实生活中的手写签名,具有类似的作用。
原理上和非对称加密有点像,但有个很大的区别,发送方是用私钥进行签名,而接收方用公钥进行验签

image

当然,正如前面所讲,也可以进行身份校验。

5. HTTPS

TLS/SSL的基本工作方式是:

客户端使用非对称加密与服务器进行通信,实现身份验证并协商对称加密使用的密钥, 然后对称加密算法采用协商密钥对信息以及信息摘要进行加密通信,不同的节点之间采用的对称密钥不同,从而可以保证信息只能通信双方获取。

image

5.1 SSL握手

  1. 握手阶段分成五步。
  2. 第一步,Client给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
  3. 第二步,Server确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。
  4. 第三步,Client确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给Server。
  5. 第四步,Server使用自己的私钥,获取Client发来的随机数(即Premaster secret)。
  6. 第五步,Client和Server根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。

SSL/TSL包括四次握手,主要交换三个信息:

  1. 数字证书;
  2. 三个随机数;
  3. 加密通讯协议。
10

11

5.2对称密钥:三个随机数

这三个随机数构成了后续通信过程中用来对数据进行对称加密解密的“对话密钥”。

首先客户端先发第一个随机数n1,然后服务器返回第二个随机数n2(这个过程同时把数字证书发给客户端),这两个随机数都是明文的;

而第三个随机数n3,客户端用数字证书的公钥进行非对称加密,发给服务器;

而服务器用只有自己知道的私钥来解密,获取第三个随机数。服

务端和客户端都有了三个随机数n1+n2+n3后,两端就使用这三个随机数来生成“对话密钥”,在此之后的通信就使用这个“对话密钥”来进行对称加解密。

6 参考

1. 图解SSL/TLS协议

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

推荐阅读更多精彩内容