网络世界中的数据并不安全
- 网络中无时无刻有大量的数据传输,传输过程中需要经过各种网络设备和物理媒介
- 你的数据可能会在传输的某一个环节被一个“中间人”拦截,造成泄密,甚至会篡改你的数据,让你发出错误的信息
SSH 为 Secure Shell 的缩写,SSH 协议即为安全外壳协议,使用 SSH 就是为了保证远程操作服务器的安全性
- 使用SSH能够对传输数据进行加密,防止“中间人”篡改数据
- 使用SSH能够对传输数据进行压缩,可以加快传输速度
SSH 有口令、密钥两种验证方式
- 口令方式的安全性较弱,你不能保证远程的服务器就是你想要操作的服务器,同时弱口令也存在被破解的风险
- 密钥方式的安全性较高,可以在最大程度上保证数据的安全性
密钥算法
- 密钥算法分为对称加密和非对称加密两种方式,对称加密方式的加密与解密使用同一个密钥,非对称加密则使用公钥和私钥
- RSA 密钥算法是目前最广泛使用的非对称密钥生成算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积的结果进行因式分解却极其困难,因此可以将两个素数作为私钥,相乘的结果作为公钥
公钥与私钥
- 公钥加密后的数据只能用私钥解开,私钥加密后的数据只能用公钥解开
- 你的公钥可以公开给任何需要的服务器,因此叫公钥,你通过私钥加密后发出去的数据,服务器通过你的公钥都能正确解开
- 只要你的私钥不泄露,你从服务器接收到的数据就是安全的,即使数据泄露,别人也无法查看数据内容,因为该数据只能通过你的私钥解密
- 在一些场合,会在发送的数据时,将原文和通过私钥加密后的原文(使用数字签名)一起发送给对方,保证数据不会被“中间人”篡改,因为要篡改你的数据必须伪造数字签名,这需要同时拿到你的公钥(用于解密数据)和私钥(用于伪造签名)才有可能实现
- 为了进一步提高公钥的安全性,后来出现了证书中心(certificate authority,CA)对公钥进行认证,防止你交给服务器的公钥被“中间人”替换,然后“中间人”冒充你与服务器进行通信,而通过证书中心认证后,就可以确保你发送给服务器的公钥一定是你自己的
SSH 密钥操作服务器流程
- 你通过一种密钥算法创建一对密钥(公钥、私钥),并提前把公钥交给远程服务器(服务器能看到你的公钥)
- 服务器通过同样的密钥算法创建一对密钥(公钥、私钥),并提前把公钥交给你(你能看到服务器的公钥)
- 你向远程服务器发送公钥,服务器在自身目录下找到与你发送的公钥保持一致的公钥(你主动发起操作请求)
- 服务器通过你的公钥加密数据,向你发送身份质询数据(服务器确认你的身份,该数据只有你能正确解出原文,别人即使收到也无法解密)
- 你收到质询信息后,通过自己的私钥解密,身份验证成功(你确认服务器的身份)
- 你通过服务器的公钥加密数据,并发送数据到远程服务器(你发送数据,该数据只有服务器能正确解出原文,别人即使收到也无法解密)
- 服务器收到数据后,通过服务器的私钥解密数据(服务器接收数据)
- 服务器通过你的公钥加密数据,并发送给你(服务器发送数据,该数据只有你能正确解出原文,别人即使收到也无法解密)
- 你通过自己的私钥解密从服务器接收到的数据(你接收数据)
总结:公钥大家都知道,私钥只有自己有,使用对方的公钥加密,使用自己的私钥解密