轻松理解HTTPS原理

众所周知,http协议是以明文进行传输的,http在明文的传输过程中很容易出现数据被拦截篡改监控的危险,这种情况无益于一人一丝不挂的在街上裸奔,如果被人想看你,你的任何细节都将一目了然。如果你是用的是长城宽带、宽带通、铁通等这类小运营商的话,或许深有体会,就像下图我家长城宽带劫持百度首页,拦截百度的http包然后添加一些html代码在网页底部弹出自家广告,此种做法恶心至极。

长城宽带被劫持
长城宽带被劫持

使用HTTP协议的危害

  1. 篡改数据包,致使数据不完整,如上图插入广告
  2. 拦截数据包,对数据进行监控或获取敏感数据,如用户名密码等

鉴于以上原因,HTTP协议现已越来越不被信任,为解决HTTP带来的问题HTTPS协议应运而生。

什么是HTTPS

HTTPS协议 = HTTP协议 + SSL/TLS协议,也就是说HTTPS协议是在HTTP协议基础上加了一层SSL/TLS协议进行数据加解密。也就是说使用HTTPS协议之后在网络上传输的数据是加密的密文,即便进行拦截后没有密钥进行解密的话也就是一串乱码。那HTTPS是如何进行加密的呢?这就涉及到一些简单的密码学基础知识了,不过你只需要简单了解一下秘钥、密文、明文、加密、非对称加密这几个概念即可。

什么是明文、秘钥、公钥、私钥、密文、对称加密、非对称加密、证书?

  1. 明文 - 是指原始干净的数据,比如"I'm a boy."。

  2. 密钥 - 指示用于加密的参数,密钥又分为两种对称密钥非对称密钥

1)对称密钥 - 既能用于加密数据也能用于解密数据,对称的意思就是你这头用什么加密,另外一头只能用什么解密,比如你是用对称秘钥是"12345678"进行加密的数据,那么你要解密这些数据你只能用"12345678"进行解密,否则解密失败,换句话说加解密的双方都需要知道这个密钥,双方既能进行加密也能进行解密。

2)非对称密钥 - 非对称秘钥是一个秘钥组合包含两个密钥,一个是公钥一个是私钥。其中公钥只能用于加密,私钥只能用于解密,因此加解密双方不需要使用同一个密钥,数据加密方只需要公钥进行加密,数据解密方只需要私钥进行解密。

  1. 密文 - 是指通过加密算法加密后的数据,比如明文"I'm a boy."使用对称秘钥"12345678"进行des算法加密后变成密文"cUHMRj7NhhNXIUSFKyWCCqgaX3SRnhJi"。

  2. 对称加密 - 是指用对称加密密钥以及对应的算法进行加密的方法

  3. 非对称加密 - 是指用非对称加密密钥以及对应的算法进行加密的方法,HTTPS在建立连接以及验证的过程即使用的这种加密方法。

  4. 证书 - 是指数字证书,具有权威性,就像企业公司合同上的印章一样,代表这个是企业授权的合同。

HTTPS通讯步骤

  1. 客户端和服务端建立连接
  2. 服务端将自己的公钥发送给客户端
  3. 客户端校验服务单发过来的公钥是否合法能够信任,如果不信任则抛出异常或者弹出警告
  4. 客户端验证通过,随机生成一个堆成密钥
  5. 客户端将随机生成的堆成密钥使用服务器发送过来的公钥进行加密
  6. 客户端将加密后的公钥密文发送给服务端
  7. 服务端收到客户端发过来的密文
  8. 服务端使用自己是私钥将发过来的密文进行解密,获得对称密钥
  9. 服务端使用对称密钥加密要发送的数据成密文并发送给客户端
  10. 客户端使用对称密钥解密服务端发送过来的密文获得明文
  11. 客户端使用对称密钥加密要发送的数据成密文并发送给服务端
  12. 服务端使用对称密钥解密客户端发送过来的密文获得明文
  13. 重复步骤9-12进行各种通讯

下图为https通讯步骤(图片来自于limboy的博客)


HTTPS通讯步骤
HTTPS通讯步骤

至此,你如果已经理解上述内容,表示你已经差不多掌握https的通讯流程以及为什么https比http安全的原因。但是你如果细心一点会发现上面介绍的概念里面还有一个 证书 没有用到,那么证书到底有什么用呢?你如果仔细推敲上面的HTTPS通讯步骤,你会发现在第2步服务端将自己的公钥发送给客户端时候会产生问题,我们假设客户端和服务器通讯的过程中出现以下场景:

  1. 客户端和服务端建立连接,但是被一个黑客进行了拦截,黑客有自己的公钥和私钥
  2. 客户端和黑客进行了连接并且交换了密钥,黑客和服务端进行了连接并且交换了密钥
  3. 客户端向黑客发送了自己用户名和密码
  4. 黑客解密后获得了用户名密码,然后再向服务端发送用户密码
  5. 服务端校验了用户密码是对的,然后向黑客发送了客户的所有敏感数据
  6. 黑客获得了用户的敏感数据,然后再向客户端发送了所有数据

以上场景中,客户端以为连接的是服务端,服务端以为连接的是客户端,两个人数据发来发去玩的的不亦乐乎,而黑客作为一个中间人已经获得了所有的数据,这就是所谓的** 中间人攻击 。那该怎么办?怎么防止这种中间人攻击呢?证书**就用来防止这种事情发生的。

我们在HTTPS通讯步骤的第3步中,对公钥进行了校验,这个校验过程就用到了证书。如果校验不通过则会出现异常或者弹出警告,我们著名的12306火车票网站就是因为公钥不被信任导致浏览器弹出警告,如下图:

证书不信任
证书不信任

刚刚上面说到,服务端需要有公钥和私钥来进行加解密,那么这个公钥和私钥是哪里来的呢?当然你可以创建自己的公钥和私钥,这样一来就完了,大家都可以创建,那浏览器该信任谁的公钥?这样也不行。

这个时候我们需要共同推举几个大家都认可且相信的认证机构,这个机构叫证书认证中心,也叫CA(Certificate Authority)
全球知名的CA也就100多个,这些CA都是全球都认可的,比如VeriSign、GlobalSign等,国内知名的CA有WoSign。

那么CA又是怎么对公钥进行认证的呢?

CA自己也有一套公钥和私钥,CA会用自己的私钥对你的公钥进行非对称加密,再加上证书的过期时间、颁发给、颁发者等信息,就组成了数字证书,然后将加密后的公钥发给你,你配置到自己的服务器上。

不论什么平台,设备的操作系统中都会内置100多个全球公认的这些CA的公钥。所以HTTPS通讯步骤现在变成了如下:

HTTPS通讯步骤(重点)

  1. 客户端和服务端建立连接
  2. 服务端将自己的公钥发送给客户端
  3. 客户端尝试用自己系统内置的所有CA的公钥对服务端发过来的公钥进行解密,如果所有CA的公钥都无法解密的话,说明服务端发过来的证书是不被信任的,弹出警告
  4. 客户端尝如果用自己内置的某个CA公钥对服务端发过来的公钥进行解密成功,说明服务端发过来的证书是正常的,然后对服务端的证书进行有效期、机构信息等进行验证,如果验证不通过(如:过期),则弹出警告
  5. 客户端验证通过,随机生成一个堆成密钥
  6. 客户端将随机生成的堆成密钥使用服务器发送过来的公钥进行加密
  7. 客户端将加密后的公钥密文发送给服务端
  8. 服务端收到客户端发过来的密文
  9. 服务端使用自己是私钥将发过来的密文进行解密,获得对称密钥
  10. 服务端使用对称密钥加密要发送的数据成密文并发送给客户端
  11. 客户端使用对称密钥解密服务端发送过来的密文获得明文
  12. 客户端使用对称密钥加密要发送的数据成密文并发送给服务端
  13. 服务端使用对称密钥解密客户端发送过来的密文获得明文
  14. 重复步骤10-13进行各种通讯

经过上述证书验证步骤,则能够避免黑客进行中间人攻击,所以你要做的就是向CA购买一个证书,然后根据自己所使用的技术类型在服务端进行配置好证书即可使用https进行访问。

-----end-----
转载请保留我博客地址 http://blog.itbiu.com/2017/03/09/201703091

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

推荐阅读更多精彩内容