关注我的头条号的同学可能已经从我的历史文章中了解到大概的概念,什么是SSH(Security Shell,安全的壳协议),怎么样通过SSH来远程连接远程服务器。
今天我们稍微花点时间来讨论一下SSH的基本原理和基本流程。
首先SSH是一种通讯协议,具体实现了SSH协议的通讯软件有很多种,有开源的实现openSSH,也有其他的商业实现。通过这些软件我们就可以通过SSH协议安全的连接远程的服务器做一些工作。SSH区别于FTP, telnet的最显著的区别就是安全。
那么SSH是如何实现数据的安全的呢?其实很简单,就是对数据进行非对称加密。在了解了非对称加密之后,我想各位对SSH,甚至对HTTPS都会有一个更深的认识。
首先对两个概念做一下简单的澄清,什么是对称加密,什么是非对称加密,一张图说清楚我就不多说话。
简单总结出来的一句话就是: 对称加密就是客户端加密数据的秘钥和服务端解密数据使用的秘钥是同一套秘钥,这就叫对称加密。
这就类似锁门+开门都使用同一把钥匙,看起来很美好。但是,大家不要忽视一个问题,互联网中的应用,可不像你家的大门,客户就那几个(你家里几口人就几把钥匙),互联网应用它的客户端可是有成千上万。
一旦一个客户端的秘钥丢失,那么整个系统的安全性就无法保证了。正如你丢了一把钥匙,那么你家里人的安全就都得不到保证了即使他们的钥匙没有丢失。那么就必须要换锁,换秘钥,而这个代价是巨大的。
所以,为了解决这个问题,我们这里引申出非对称加密这种方式。
非对称加密有两个秘钥,分别叫做"公钥"和"私钥"。公钥加密过的数据,必须要通过私钥才能进行解密。废话不多说,继续用一张图来表达整个非对称加密的流程:
私钥是Server端独有,这就保证了Client的登录信息即使在网络传输过程中被窃据,也没有私钥进行解密,保证了数据的安全性,这充分利用了非对称加密的特性。
但是,亲爱的们,你们觉得现在就安全了吗?
有点太天真了,当然了,我们觉得非对称加密肯定比对称加密要安全多了,至少我不要担心秘钥被泄露了。
但是想想,这中间会有一个什么样的漏洞呢?
那就是,在非对称加密的第二步,我客户端是怎么知道这个公钥是来自于请求的服务端呢? 有没有可能一个攻击者(Hacker)在拦截了第一步客户端发送到服务端的请求,然后发送自己的公钥给客户端,而客户端怎么知道该公钥是来自于服务端还是来自于攻击者呢? 如果客户端错将攻击者提供的公钥误认为是服务端的公钥,这样数据就会完全被攻击者获取,使得用户面临着巨大的业务风险。这也就是我们经常所说的中间人攻击。
那么SSH是如何规避这一点的呢? 由于篇幅关系,我们下次再叙。
每天学习一点点,每天进步一点点,欢迎各位关注本公众号共同进步。
版权声明:本文转载于今日头条,版权归作者所有,如果侵权,请联系本站编辑删除