参考:https://www.zhihu.com/question/52493697/answer/2032180910
前置知识
- 不加密,数据不安全
- 对称加密:客户端和服务端使用同一个密钥加密解密。管理分发困难,安全性低。
- 非对称加密:自己生成一对密钥:公钥/私钥。公钥是公开的,如果谁想要给自己发消息,就拿公钥加密消息,消息只有用私钥才能解开。自己给别人发消息的时候用私钥加密,对方收到后用公钥解密这样能确认消息是由你发出的。
简单说就是:公钥加密私钥解密是保证不泄露信息。私钥加密公钥解密是保证消息不被冒充。
不过非对称加密的解密速度很慢,所以一般是用对称加密法加密消息,把密钥用非对称加密法加密。 - 数字签名:(就是采用非对称加密法的)用来检验消息是否被篡改过。
过程:把消息内容哈希得到的哈希值用私钥加密得到一个数字签名然后签名和内容一起发出去。收到消息后,比较内容哈希值和用公钥解密签名的值是否一样,如果不同证明消息被篡改过。 - 数字证书:
原因:如果有人伪造了一对公钥和私钥,然后在最初就截取服务端的消息,给客户端发了伪造的公钥,然后用伪造的私钥加密伪造的消息发给客户端。
过程:服务器把自己的公钥注册到数字证书机构(CA ),CA给服务器一个数字证书(该服务器的公钥+CA 私钥加密的服务器公钥)然后服务端把数字证书给客户端。客户端先用CA 公钥解密CA 私钥加密的服务器公钥,对比解密出的公钥是否和服务器的公钥相同,相同则正确并用该公钥加密消息发给服务器。
SSH
参考:https://info.support.huawei.com/info-finder/encyclopedia/zh/SSH.html
是什么
SSH是一个安全协议。一般默认的端口号是22
如何工作
SSH由服务器和客户端组成。以客户端远程登录服务器为例:
客户端先生成一对公钥和私钥,并把公钥保存到服务器上。
- 建立连接,服务器监听客户端的请求,客户端发起请求后建立tcp连接
- 版本协商,协商使用的ssh版本
- 算法协商,协商加密算法
- 密钥交换,生成动态会话id用来标识该ssh连接
- 用户认证:
密码:客户端发用户名和密码,服务器解密和本地保存的数据对比
密钥:服务器用公钥加密一个随机数发给客户端,客户端用私钥解密然后发给服务器,服务器看是否正确认证通过 - 开始会话
SSH SCP SFTP
https://cloud.tencent.com/developer/article/1042350
SSH、SCP和SFTP都是SSH软件包的组成部分。
- SCP:
secure copy 是用来和远程主机进行数据传输的协议,相当于加密的copy命令。
WinSCP:主要功能是在本地和远程主机之间安全复制文件 - SFTP:
经过ssh加密的ftp