细说HTTPS

1. https涉及了多种加密方式

1)对称加密:加密和解密共用一把密钥,多用AES,DES算法;

2)非对称加密:一个公钥和一个私钥,密钥要对,本质上公钥和私钥指定的是一对反函数的,常用就是RSA公钥加密算法;y = f(x) , x = g(y) x = g(f(x)) 相当于你用私钥(f(x)函数)加密了x之后,用公钥(g(y)函数)再解密,就可以把x还原。

3)散列/hash算法加密:这种是不可逆算法,为什么?简单来说,hash本质上是利用因式分解。

RSA加密利用了单向函数正向求解很简单,反向求解很复杂的特性。

具体是利用了了一个数论事实:将两个大的质数相乘很容易得到乘积,但要把乘积进行因式分解却非常困难

不过现在很多人用数据字典(彩虹表)进行爆破,所以我们会给密码加点盐,常用哈希算法:md5,sha1;

2 . ssl/tls 安全协议

client ====> server

http 没有加密,只是传输协议

https = http + ssl/tls

“Secure Sockets Layer”的缩写,中文叫做“安全套接层”

TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”

两者是并列关系

3. 两个重要部分

  1. 身份验证

  2. 对称加密的密钥的生成过程

3.1 身份验证:

数字证书有三个作用

1、身份授权。确保浏览器访问的网站是经过CA验证的可信任的网站。

2、分发公钥。每个数字证书都包含了注册者生成的公钥(验证确保是合法的,非伪造的公钥)。在SSL握手时会通过certificate消息传输给客户端。

3、验证证书合法性。客户端接收到数字证书后,会对证书合法性进行验证。只有验证通过后的证书,才能够进行后续通信过程。

数字签名是证书的防伪标签,目前使用最广泛的SHA-RSA(SHA用于哈希算法,RSA用于非对称加密算法)

SSL利用基于MD5或SHA的MAC算法来保证消息的完整性

证书包括的内容:签发者,证书用途,公钥,加密算法,用的HASH算法,证书的到期时间等

把以上内容做一次HASH,得到一个固定长度(比如128位的HASH),然后再用CA的私钥加密,就得到了数字签名,附在以上证书的末尾,一起传输给sever。

设想一下,如果不加密那个HASH,任何人都可以先篡改证书,然后再计算HASH,附在证书的后面,传给server时,server无法发现是否有人篡改过。

而用CA私钥加密后,就生成了类似人体指纹的签名,任何篡改证书的尝试,都会被数字签名发现。

3.2 对称加密的密钥的生成过程

1. https 数据的加密用的对称加密,但是对称加密的预密钥(pre-master secret)用的非对称加密;

为什么呢????1.因为对称计算量小,加密解密速度快,而非对称加密计算量大,90%,2. RSA对加密数据长度有限制

TLS握手 tls和ssl都是加密协议

  1. client hello

client ===> server 客户端支持的加密协议和加密算法的版本,还有一个随机数,这个随机用于后面生成对称密钥

  1. server hello

server ==> client 一个证书,一个随机数

3)client 验证身份通过,生成一个pre-master secret,用公钥加密后传给服务器

4)client和sever按约定的算法计算对称密钥(AES)

image

(图片网上找的,侵删)

4. 完整流程

第一步:三次握手成功后,浏览器与sever建立TCP连接,

第二步:ssl握手的client hello 阶段,客户端发送一个随机数和告知server客户端支持的ssl协议版本号,支持的加密方法;

第三步:服务器会弹出一个页面提醒安装数字证书,确定安装之后服务器发来了自己的数字证书,除此之外还有一个server random;

第四步:浏览器接到数字证书,从系统获取CA公钥值(网上说ca机构的公钥是维护在系统内部的),可以解密数字证书末尾的数字签名(CA私钥加密,可以用CA公钥解密,此为非对称加密),得到原始的HASHs

然后自己也按照证书的HASH算法,自己也计算一个HASHc,如果HASHc== HASHs,则认证通过,否则认证失败。假设认证成功,否则故事无法编下去了…

第五步:双方会运行 Diffie Hellman 算法,简称 DH算法。通俗地说:双方会协商一个master-key,这个master-key 不会在网络上传输、交换,它们独立计算出来的,其值是相同的,只有它们自己双方知道,任何第三方不会知道,俗称的天不知,地不知,你知,我知。

然后以master-key推导出 session-key,用于双方SSL数据流的加密/解密,采用对称加密,保证数据不被偷窥,加密算法一般用AES。

以master-key推导出 hash-key,用于数据完整性检查(Integrity Check Verification)的加密密钥,HASH算法一般有:MD5、SHA,通俗滴说,保证数据不被篡改。

第六步:然后就可以正常发数据了,用HASH key 生成一个MAC( Message Authentication Code),附在HTTP报文的后面,然后用session key 加密所有数据(HTTP + MAC),然后发送出去

第七步:服务器先用session key 解密数据,得到HTTP + MAC,然后自己用相同的算法计算自己的MAC,如果两个MAC相等,则数据没有被篡改。

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

推荐阅读更多精彩内容