HTTPS(ver2)

老版总结的不够清晰具体

非对称加密

非对称加密算法的公钥就是通过私钥生成的,所以得到私钥那就能推出公钥

公钥和私钥是成对的,它们互相加解密

常见非对称加密算法有如RSA、ECC等

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为公钥。

SSH,HTTPS都是基于公私钥体制的

于是非对称加密创造的公私钥体制的两大用途:

公钥向所有人开放,私钥仅自己持有

①【数据加密】:公钥加密,私钥解密。(加密信息发送方持有公钥,接收方持有私钥解密)

②【数字签名】(防伪造):私钥加密(称作“数字签名”),公钥解密(称作“验证”)。(发送方持有私钥加密,接收方持有公钥解密)

数字签名的作用如其表面意思,就是发送者签名(私钥加密一下数据),这样任何其它人就不能伪造发送者的信息了(发送者提供的公钥只能解密发送者签名即加密的信息)

公钥CSR,私钥KEY

数字证书

于是就出现了数字证书,证书就是秘钥的载体

ca

数据加密中,发送方用公钥进行加密的证书叫加密证书,国际标准的SSL证书就是加密证书

CA证书

CA:Certification Authority,证书权威机构

CA证书是去申请!CA生成一对公私钥,然后给我私钥!(证书)

引入第三方来统一管理公钥,以防止不可信的公钥(防伪造证书的坏蛋,或者这个公司有鬼OvO),我们只相信权威机构下发的SSL证书(含公钥)才是真正的

所以作为加密信息接收方,我们需要向权威机构申请证书,就是在让CA申请一对公私钥,然后CA将私钥给我(只有我本地有公钥进行解密,保证信息安全性),将SSL证书(含公钥)提供给公众,让公众到获取CA认证的证书来和我通信

但为了防止CA下发证书途中被篡改,权威机构会用自己的私钥对加密证书进行数字签名,签名后存放于签名表项中也给出签名算法(签名即CA私钥加密),然后客户端收到的SSL证书是一个已经被签名(私钥加密)了的,必须要用CA公钥进行解密(CA公钥和CA一样,一起默认存在于操作系统中),由于CA公钥只能解私钥加密的信息,所以可以确保SSL证书本身不被篡改,否则无法解密取出加密证书

我们自己就可以通过openssl来创建SSL证书(将公钥、证书颁发者等信息写入证书),但这个证书由于是我们自己颁发的,所以不被别人信任;所以我要让CA来创建一堆公私钥,私钥给我,公钥保存在CA上,以后其它人想要访问我的网站,就会获取到我服务器上的SSL证书后,去CA验证,有CA背书, 那就可以信任我的网站了

SSL证书解析过程:①先用CA的公钥来解密数字签名,如果能解密表示信息未被篡改;②然后从证书中取出服务提供商的公钥

【注意记住:SSL证书携带公钥,对于加密通信,公钥/证书持有者是信息的发送方;】

HTTPS=HTTP over SSL

HTTPS=HTTP over SSL,它使用默认端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。HTTPS协议使用SSL在发送方把原始数据进行加密,然后在接受方进行解密,加密和解密需要发送方和接受方通过交换公钥来实现。

SSL协议就是一个数据加密传输的完整协议,其描述了一个过程,使用了非对称加密算法

主要过程:(爱丽丝是客户端,鲍勃是服务端;注意区分对称和非对称)

=============【双方交流阶段】:双方传递SSL准备信息=================

  1. 第一步:爱丽丝给出支持SSL协议版本号,一个【客户端随机数】(Client random,请注意这是第一个随机数),客户端支持的加密方法等(对称加密方法)信息;

  2. 第二步:鲍勃收到信息后,确认双方使用的加密方法(对称加密方法),并返回数字证书,一个服务器生成的【服务端随机数】(Server random,注意这是第二个随机数)等信息;

    ======【非对称加密阶段】:传输随机数3号,以准备生成下一阶段的对称秘钥======

  3. 第三步:爱丽丝确认数字证书的有效性,然后生成一个新的【随机数3号】(Premaster secret),然后使用数字证书中的公钥,加密这个随机数,发给鲍勃。

  4. 第四步:鲍勃使用自己的私钥,解密爱丽丝发来的【随机数(预主密钥)】(即Premaster secret);

    ========【对称加密阶段】:生成对称秘钥,开始对称加密的数据传输========

  5. 第五步:爱丽丝和鲍勃通过约定的加密方法(通常是AES算法),使用前面三个随机数,生成对话密钥(对称秘钥),用来加密接下来的通信内容;【对称加密通信阶段,生成对话秘钥】

SSL过程参考:https://zhuanlan.zhihu.com/p/32513816

一些术语:

预主秘钥(pre_master secret):即第三个随机数,它是生成主密钥的关键

主密钥(master secret):由预主秘钥、客户端随机数、服务端随机数、常量字符串,计算获得

③(国密中存在)工作密钥(见下面国密部分)

其中随机数是通过伪随机数函数PRF生成的

TLS

HTTPS、SSL、TLS区别:https://blog.csdn.net/enweitech/article/details/81781405

SSL是基于HTTP之下TCP之上的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以HPPTS是HTTP+SSL/TCP的简称。

TLS是SSL的标准化后的产物,TLS1.0和SSL3.0几乎没有区别(有很多安全性改进),但历史原因我们还是称作SSL