计算机网络





为什么必须进行三次握手?





TCP首部结构:







4.3 拥塞控制











TLS协议原理以及加密算法
加密算法

https加密演变过程:


(2)同时非对称加密加密性能比较低,能加密的数据长度有限。
https使用非对称加密和对称加密结合的方式:
(1)第 ③ 步时,客户端说:(咱们后续回话采用对称加密吧,这是对称加密的算法和对称密钥)这段话用公钥进行加密,然后传给服务器
(2)服务器收到信息后,用私钥解密,提取出对称加密算法和对称密钥后,服务器说:(好的)对称密钥加密
(3)后续两者之间信息的传输就可以使用对称加密的方式了
遇到的问题:
(1)客户端如何获得公钥 (通过SSL证书)
(2)如何确认服务器是真实的而不是黑客(验证证书是否合法)

SSL证书包括的具体内容有:
(1)证书的发布机构CA(Certificate Authority,即证书颁发机构)
(2)证书的有效期
(3)公钥
(4)证书所有者
(5)签名

数字签名的作用:
如何放防止数字证书被篡改?
我们把证书原本的内容生成一份“签名”,比对证书内容和签名是否一致就能判别是否被篡改。这就是数字证书的“防伪技术”,这里的“签名”就叫数字签名:
数字签名的制作过程:
- CA机构拥有非对称加密的私钥和公钥。
- CA机构对证书明文数据T进行hash。
- 对hash后的值用私钥加密,得到数字签名S。
浏览器验证过程:
- 拿到证书,得到明文T,签名S。
- 用CA机构的公钥对S解密(由于是浏览器信任的机构,所以浏览器保有它的公钥。详情见下文),得到S’。
- 用证书里指明的hash算法对明文T进行hash得到T’。
- 显然通过以上步骤,T’应当等于S‘,除非明文或签名被篡改。所以此时比较S’是否等于T’,等于则表明证书可信。
HTTPS一定安全吗
不一定,没有绝对的安全。
中间人攻击是黑客们在用户和真正服务器中间伪造一个服务器,从中转发数据,就可以顺利获取数据和篡改数据。
dns与ssl证书
无法理解,dns到现在还是明文传输的!明文传输!明文!(这样做可能是为了性能的考虑)也就是无论你访问的是http还是https,dns服务器返回的都是明文的ip地址,经常听到的dns污染,就是网络窃取到dns的明文ip,再篡改为有恶意的ip,例如你想访问baidu.com,dns本应该告诉你baidu.com的服务器在39.156.69.**,但黑客们却篡改为66.66.66.**,然后你就顺利地访问了黑客的服务器。虽然DNSSec有意识地对dns加签名防篡改,但依然无法解决最后一站的DNS攻击,即递归DNS服务器到用户电脑依然是无签名明文ip。

dns明文,跟https攻击有什么关系? 没有关系!就算dns污染了,在验证ssl证书这一步就被中断了,因为黑客服务器上根本没有ssl证书,无法取得用户浏览器的信任。 那么,然而,但是,如果黑客们拥有了ssl证书呢?!情况就完全改变了,拥有ssl就能局部小规模中间人攻击。拥有ssl再加上dns污染,就能够大规模实施中间人攻击。 黑客们怎么才能拥有ssl证书? 目前绝大部分国内用户(根据多零程序员的观察,甚至还包括一些国内大型金融机构、国有银行),都在使用国外的ca机构颂发的ssl证书!
那么ssl证书在国外,会有什么问题吗?相当于你们家里的开门钥匙寄存在邻居,虽然邻居口头承诺不开你的门,但是你会放心吗?
如果国外的ca机构人品不好,或者他们的数据安全防御做得不好,那么dns+ssl大规模中间人攻击条件就成立了。

整理自https://javaguide.cn/home/
浙公网安备 33010602011771号