1.网络传输的安全性
- http 协议:不安全,未加密
- https 协议:安全,对请求报文和响应报文做加密
2.对称加密与非对称加密
2.1 对称加密
-
特点:
加解密使用 相同 秘钥 高效,适用于大量数据的加密场景 算法公开,安全性取决于秘钥大小,但秘钥越大效率越低,需要权衡在安全和效率中做权衡
-
缺点:
算法本身安全,但使用场景不够安全,因为解密和加密都是同一个秘钥
2.2 非对称加密
使用 匹配的一对密钥 来分别
进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)
注意:公钥加密的数据 只能 用 对应的私钥解密,同理,私钥加密的数据 只能用 对应的公钥解密
算法:RSA、ECC、Elgamal、背包算法、Rabin、D-H 等
特点:安全性高
缺点:加解密复杂,效率低,耗时较长
用法概要:
- 加密:对数据做加密
- 签名:证明数据是谁发的
2.3 非对称加密用法
-
准备工作:
1.生成一对匹配的 私钥 和 公钥 (ps:公钥其实是根据私钥生成的)
2.将公钥公布给外界
2.3.1 公钥加密
-
场景: 用来针对互联网上加密数据传递
Linda 用
James的公钥
对数据进行加密,然后发给 James,James用自己的私钥解密
因为一个公钥加密的数据 只有 对应的 私钥才能解密,所以密文很安全
补充:如果要在网络上相互发送密文,可以让对方也发对方的公钥过来,用对方的公钥来加密
2.3.2 私钥签名
-
场景: 目的是为了将明文公布给别人,同时证明是自己发的;可以防止明文被篡改。
第一步: James 用
James的私钥
对明文的hash值进行加密,把密文(签名)和明文一起发给 Linda第二步: Linda 用
James的公钥
进行解密,解密后的明文hash值 和 接收到的明文的hash值进行对比,如果一样则是 James 发的
3. https协议
- 端口 443
3.1 基本流程
1 http明文方式传输
数据在传输过程中未加密,有被窃取的可能,不安全。
2 采用对称加密
对称加密——加解密使用 相同 秘钥
如果采用对称加密的话,通信双方使用同一把秘钥进行加密解密,即在传输的时候,需要把 加密后的密文 连同 秘钥 一起在网络上进行传输,这样才能使对方在拿到密文后能够使用该密钥顺利进行解密。
问题:如果在传输过程了截取了密文和秘钥,则信息不安全。
3 采用非对称加密
非对称加密 使用 匹配的一对密钥 来
分别
进行加密和解密公钥加密的数据 只能 用 对应的私钥解密,同理,私钥加密的数据 只能用 对应的公钥解密
服务器生成一对公钥和私钥,并把 公钥 发送给浏览器,浏览器将要发送的数据用 服务器公钥 加密后形成密文发送给服务器。服务器拿到密文后用 自己的私钥 对密文进行解密。
问题:如果在给浏览器发送公钥的过程中被黑客截取并篡改成黑客的公钥,浏览器接收到黑客公钥后用其对数据进行加密形成密文。在将密文送给服务器的过程中黑客截取该密文,由于该密文是使用篡改过的黑客公钥进行加密的,则可以用与之对应的黑客私钥进行解密,则信息不安全。
4 如何保证浏览器拿到的服务器公钥是真实有效的
证书认证机构CA(Certificate Authority)也有自己的公钥和私钥,并把自己的公钥内置在各大计算机操作系统中。
服务器生成一对公钥和私钥,并把 公钥 发送给CA,CA通过该服务器的公钥、该服务器的域名、证书有效期等生成 SSL/TLS 证书 ,然后该服务器存储好自己的证书。
进行通信时,浏览器拿到服务器的证书(包含服务器的公钥和域名等),之后用浏览器所在计算机系统中保存的CA公钥对此证书进行解密,得到服务器的公钥。(解密成功:获取公钥——只要解密成功,就说明 是 机构认证的;解密失败:认证失败)
此番操作的目的是为了保证服务器的 公钥 在传输过程中不会被篡改。
之后延续2的流程,浏览器将要发送的数据用 服务器公钥 加密后形成密文发送给服务器。服务器拿到密文后用 自己的私钥 对密文进行解密。
问题:在数据量大的情况下使用非对称加密时,加解密复杂,效率低,耗时较长
5 非对称加密 + 对称加密
在4的基础上,浏览器不要将发送的数据用 服务器公钥 进行加密。
浏览器生成一个 对称加密 的秘钥(会话密钥)。浏览器用 服务器公钥 对 会话密钥 进行加密,之后将加密过后的会话密钥发送给服务器。服务器拿到加密的会话密钥之后,用自己的 私钥 进行解密,得到解密过后的会话密钥。经过上述流程,浏览器和服务器均获得相同的一把对称加密的秘钥(会话密钥)
从此以后:
浏览器通过 会话密钥 对 请求报文 做加密,服务器通过 会话密钥 对 请求报文 做解密;
服务器通过 会话密钥 对 响应报文 做加密,浏览器通过 会话密钥 对 响应报文 做解密;
非对称算法只用在对会话密钥进行加解密上,而数据量大的请求报文则是采用了高效的对称算法
6 https流程总结
-
服务器生成一对私钥和公钥(非对称加密)
-
通过 CA私钥 加密 生成 服务器证书(服务器公钥、域名…),计算机中已内置 CA公钥
-
浏览器 拿证书,并用内置的 CA公钥 解密得到 服务器公钥
-
浏览器生成 会话密钥(对称加密),浏览器用 服务器公钥 对自己的 会话密钥 进行加密后发送给服务器。服务器用自己的私钥对 会话密钥 进行解密。
-
浏览器和服务器 使用 会话秘钥 来对 请求报文 和 响应报文 做加密
3.2 证书认证机构
- 如果证书颁发机构过多的话,不容易识别,防伪和管理,于是形成了少数几家国际权威的证书颁发机构,这些机构非常权威,默认是所有人都可信的,它们成为根证书。
- 但是除了这些机构外,其他的机构也需要被信任,因而,需要这些权威的机构去授信颁发证书,于是就形成了一级证书机构,一级证书机构又可以继续授信下级机构,于是成为树状结构,对于任何一个组织到根证书就是链状结构。
3.3 CA证书的保存
- 保存在系统中
控制面板上Internet选项里