HTTPS 到底加密了什么?

多了 SSL 层的 HTTP 协议

简而言之,HTTPS 就是在 HTTP 下加入了 SSL
层,从而保护了交换数据隐私和完整性,提供对网站服务器身份认证的功能,简单来说它就是安全版的
HTTP。

现在随着技术的发展,TLS 得到了广泛的应用,关于 SSL 与 TLS
的差别,我们不用在意,只要知道 TLS 是 SSL 的升级版本就好。
永利网址 1
一般来说,HTTPS
主要用途有三个:一是通过证书等信息确认网站的真实性;二是建立加密的信息通道;三是数据内容的完整性。
永利网址 2

上文为又拍云官网,我们可以通过点击浏览器地址栏锁标志来查看网站认证之后的真实信息,SSL证书保证了网站的唯一性与真实性。

那么加密的信息通道又加密了哪些信息呢?

签发证书的 CA
中心会发布一种权威性的电子文档——数字证书,它可以通过加密技术(对称加密与非对称加密)对我们在网上传输的信息进行加密,比如我在
Pornhub 上输入:

账号:cbssfaw

密码:123djaosid

可是这个数据被黑客拦截盗窃了,那么加密后,黑客得到的数据可能就是这样的:

账号:çµø…≤¥ƒ∂ø†®∂˙∆¬

密码:∆ø¥§®†ƒ©®†©˚¬

永利网址 3

最后一个就是验证数据的完整性,当数据包经过无数次路由器转发后会发生数据劫持,黑客将数据劫持后进行篡改,比如植入羞羞的小广告。开启HTTPS后黑客就无法对数据进行篡改,就算真的被篡改了,我们也可以检测出问题。

STEP 3: 传送证书

服务器端返回以下:

  • 服务器端选出的一套加密算法和 Hash 算法
  • 服务器生成的随机数 server_random
  • SSL 数字证书(服务器使用带有 SSLX.509 V3
    数字证书),这个证书包含网站地址,公钥 public_key
    ,证书的颁发机构,过期时间等等。

Transmission Control Protocol, Src Port: 443 (443), Dst Port: 28258 (28258), Seq: 1, Ack: 518, Len: 137
    Source Port: 443
    Destination Port: 28258
    [Stream index: 13]
    [TCP Segment Len: 137]
    Sequence number: 1    (relative sequence number)
    [Next sequence number: 138    (relative sequence number)]
    Acknowledgment number: 518    (relative ack number)
    Header Length: 20 bytes
    Flags: 0x018 (PSH, ACK)
    ......
Secure Sockets Layer
    TLSv1 Record Layer: Handshake Protocol: Server Hello
        Content Type: Handshake (22)
        Version: TLS 1.0 (0x0301)
        Length: 81
        Handshake Protocol: Server Hello
            Handshake Type: Server Hello (2)
            Length: 77
            Version: TLS 1.0 (0x0301)
            Random
                GMT Unix Time: Mar  1, 2090 17:07:25.000000000 �й���׼ʱ��
                // 28 字节的随机数 server_random
                Random Bytes: 903945ed14db8e4151d651814ed7067c0e9c115d94ff6af7...    
            Session ID Length: 32
            Session ID: c958100d8b678c0b071b54e977b456c06a233c08b9e2dd42...
            // 加密族中,服务器最终选择了这个。意味着服务器之后会使用 RSA 公钥加密算法来区分证书签名和交换密钥,通过 3DES 加密算法来加密数据,通过 SHA 算法来校验信息
            Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)    
            Compression Method: null (0)
            Extensions Length: 5
            Extension: renegotiation_info
                Type: renegotiation_info (0xff01)
                Length: 1
                Renegotiation Info extension
                    Renegotiation info extension length: 0
    TLSv1 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
        Content Type: Change Cipher Spec (20)
        Version: TLS 1.0 (0x0301)
        Length: 1
        Change Cipher Spec Message
            [Expert Info (Note/Sequence): This session reuses previously negotiated keys (Session resumption)]
                [This session reuses previously negotiated keys (Session resumption)]
                [Severity level: Note]
                [Group: Sequence]
    TLSv1 Record Layer: Handshake Protocol: Encrypted Handshake Message
        Content Type: Handshake (22)
        Version: TLS 1.0 (0x0301)
        Length: 40
        Handshake Protocol: Encrypted Handshake Message

HTTPS=数据加密+网站认证+完整性验证+HTTP

通过上文,我们已经知道,HTTPS 就是在 HTTP
传输协议的基础上对网站进行认证,给予它独一无二的身份证明,再对网站数据进行加密,并对传输的数据进行完整性验证。

HTTPS 作为一种加密手段不仅加密了数据,还给了网站一张身份证。

如果让我回到十年前,那么我一定会这样跟我的女朋友传纸条:

先准备一张独一无二的纸条,并在上面签上我的大名,然后用只有我女朋友可以解密的方式进行数据加密,最后写完后,用胶水封起来,防止隔壁桌的小王偷看修改小纸条内容。

 

1 赞 收藏
评论

永利网址 4

关于证书

证书需要申请,并由专门的数字证书认证机构 CA
通过非常严格的审核之后颁发的电子证书,证书是对服务器端的一种认证。颁发的证书同时会产生一个私钥和公钥。私钥有服务器自己保存,不可泄露,公钥则附带在证书的信息中,可以公开。证书本身也附带一个证书的电子签名,这个签名用来验证证书的完整性和真实性,防止证书被篡改。此外证书还有个有效期。
证书包含以下信息:

  • 使用者的公钥值。
  • 使用者标识信息(如名称和电子邮件地址)。
  • 有效期(证书的有效时间)。
  • 颁发者标识信息。
  • 颁发者的数字签名,用来证明使用者的公钥和使用者的标识符信息之间的绑定的有效性。

HTTPS 到底加密了什么?

2018/07/03 · 基础技术 ·
HTTPS

原文出处:
云叔_又拍云   

关于 HTTP 和 HTTPS
这个老生常谈的话题,我们之前已经写过很多文章了,比如这篇《从HTTP到HTTPS再到HSTS》,详细讲解了
HTTP 和 HTTPS 的进化之路,对的没错,就是 HTTP 兽进化 HTTPS 兽。

永利网址 5

那么今天我们主要聊一聊 HTTPS 到底加密了些什么内容。

先跟大家讲个故事,我初恋是在初中时谈的,我的后桌。那个时候没有手机这类的沟通工具,上课交流有三宝,脚踢屁股、笔戳后背以及传纸条,当然我只能是那个屁股和后背。

说实话传纸条真的很危险,尤其是这种早恋的纸条,被抓到就是一首《凉凉》。

于是我和我的小女朋友就商量一下加密这个小纸条上面的数据,这样就算被班主任抓到她也奈何不了我们!

我们用将英文字母和数字一一对应,组成一个密码本,然后在小纸条上写上数字,要将他翻译成对应的字母,在拼成拼音才能知道这串数字意思。

上面就是最初我坎坷的感情史。

后来等我长大了,才知道这是回不去的美好。如果给我一个机会,我愿意……啊呸,跑偏了,等长大了才知道,这个就是现在网站数据传输中的
HTTPS。

网络通信(握手过程)

此图非常详尽的描述了 HTTPS 在通讯过程中的原理,总共分为 8 步。

永利网址 6

Https 原理

对称加密与非对称加密

对称加密

对称加密是指加密与解密的使用同一个密钥的加密算法。小编初中的时候传纸条使用了同一套加密密码,所以我用的加密算法就是对称加密算法。

目前常见的加密算法有:DES、AES、IDEA 等

非对称加密

非对称加密使用的是两个密钥,公钥与私钥,我们会使用公钥对网站账号密码等数据进行加密,再用私钥对数据进行解密。这个公钥会发给查看网站的所有人,而私钥是只有网站服务器自己拥有的。

目前常见非对称加密算法:RSA,DSA,DH等。

STEP 5: 传送加密信息

客户端发送以下:

  • 客户端发送公钥 public_key 加密的 premaster secret
    。目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

HTTPS 工作原理

STEP 4: 客户端解析证书

这部分工作是由客户端的TLS 来完成的。

  1. 首先会验证证书是否有效,这是对服务端的一种认证,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。
  2. 如果证书没有问题,那么浏览器根据步骤 3 的 server_random
    生成一个随机值 premaster_secret (前 2 个字节是协议版本号,后 46
    字节是用在对称加密密钥的随机数字)和
    master_secret 。 master_secret 的生成需要 premaster_key ,并需要
    client_random永利网址, 和 server_random 作为种子

    master_secret = PRF(pre_master_secret, "master secret", client_random + server_random)
    

    现在,各方面已经有了主密钥 master_secret
    ,根据协议约定,我们需要利用PRF
    生成这个会话中所需要的各种密钥,称之为“密钥块”(Key Block ):

    key_block = PRF(SecurityParameters.master_secret, "key expansion", SecurityParameters.server_random + SecurityParameters.client_random);
    密钥块用于构成以下密钥:
    client_write_MAC_secret[SecurityParameters.hash_size]
    server_write_MAC_secret[SecurityParameters.hash_size]
    client_write_key[SecurityParameters.key_material_length]
    server_write_key[SecurityParameters.key_material_length]
    client_write_IV[SecurityParameters.IV_size]
    server_write_IV[SecurityParameters.IV_size]
    

    这是由系列 Hash 值组成,它将作为数据加解密相关的Key Material
    ,包含六部分内容,分别是用于校验一致性的密钥,用于对称内容加解密的密钥,以及初始化向量,客户端和服务器端各一份。其中,write MAC key
    ,就是session secret 或者说是session key
    Client write MAC key 是客户端发数据的session secret
    Server write MAC secret 是服务端发送数据的session key
    MAC(Message Authentication Code)
    ,是一个数字签名,用来验证数据的完整性,可以检测到数据是否被串改。然后用证书公钥
    public_key
    对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

  3. Hash 握手信息,用第3步返回约定好的 Hash 算法对握手信息取 Hash
    值,然后用随机数加密“握手消息+握手消息 Hash 值(签名)”

参考资料

[1] Wiki 关于 Transport Layer Security
的介绍,https://en.wikipedia.org/wiki/Transport\_Layer\_Security
[2] 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理
http://op.baidu.com/2015/04/https-s01a01/
[3] SSL工作原理
https://www.wosign.cn/Basic/howsslwork.htm
[4] SSL/TLS协议运行机制的概述
http://www.ruanyifeng.com/blog/2014/02/ssl\_tls.html
[5]
HTTPS工作原理,猫尾博客,https://cattail.me/tech/2015/11/30/how-https-works.html
[6]
HTTPS那些事(一)HTTPS原理,晓风残月,http://www.guokr.com/post/114121/
[7]
HTTPS证书生成原理和部署细节,小胡子哥,http://www.barretlee.com/blog/2015/10/05/how-to-build-a-https-server/

加密方式

加密算法一般分为对称加密与非对称加密。

STEP 6: 服务端解密信息

服务端用私钥 private_key 解密后,得到了客户端传过来的随机值
premaster_secret(私钥),又由于服务器在步骤 1 中收到的 client_random
,所以服务器根据相同的生成算法,在相同输入参数的情况下,得到相同的
master_secret 。然后把内容通过该值进行对称加密。
所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。