从https和ssh看网络安全 2022-03-01

2022-03-01  本文已影响0人  9_SooHyun

网络安全三属性:
真实性:通信双方身份要确认——首先要建立信任,信任是一切的基础
机密性:要加密,不要明文
完整性:通信数据没有被第三方篡改过,即被修改、删除、添加

ssh和https对比

https

HTTP is the protocol used by your browser(or some other web clients) and web servers to communicate and exchange information
HTTPS is just the HTTP protocol but with data encryption using SSL/TLS. When that exchange of data is encrypted with SSL/TLS, then we call it HTTPS. The 'S' stands for Secure
Notice: SSL was renamed to TLS: Transport Layer Security, after 1999. Creating confusion and chaos still to this day

https的关键就在SSL/TLS
通过 TCP 握手打开 TCP 连接后,将发生 TLS 握手

SSL/TLS简要交互过程如下,这里只涉及设计思想而非具体细节,具体细节可以查看RFC文档

now that client and server both have random1, random2 and random3, which are used to generate a symmetrical
session key to encrypt data to be transported
SSL/TLS握手协议结束后会产生只有client和server知道的对称加密秘钥,而该秘钥也用后续所有传输数据的加密。至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用"会话密钥"加密内容

问题1:
为什么要用三个随机数来生成"会话密钥"?只用random3不是更好吗?毕竟random3的网络安全是可靠的
原因在于SSL协议不信任每个主机都能产生完全随机的随机数,如果随机数不随机,那么client的pre master key就有可能被猜出来,只用random3计算密钥就不合适了,因此必须引入新的随机因素。客户端和服务器加上pre master secret三个随机数一同生成的密钥就不容易被猜出了,一个伪随机可能完全不随机,可是是三个伪随机就十分接近随机了

问题2:
random1和random2实际上是裸奔的,被改了怎么办?
假设被篡改,那么client和server端的数据不一致,那么算出来的session key也不会一致。那么只要验证一下双方的session key是否一致就可以了
SSL/TLS通信双方把此前所有本地发出的、以及从对方收到的所有字节,按照时间的先后次序,放在一起。比如客户端一共发出5000个字节、服务器发出8000字节,那么双方只要将这13000个字节生成一个Hash,然后用Session Key加密发给对方。
对方用Session Key解密,得到的明文,其实就是对方计算的Hash值。如果与本地计算的Hash值相同,那么说明两件事:

ssh

ssh协议的交互过程和https或者说和SSL/TLS是类似的

The authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?

client自主选择是否信任或者通过比对~/.ssh/known_hosts信任

---这里为止都和SSL/TLS基本一致----

两者相同点

两者不同点

上一篇 下一篇

猜你喜欢

热点阅读