FTP相关协议:ftp、ftps、sftp
- ftp:文件传输协议,主要拿来传输文件数据的,大数据的
-
ftps:这个尾巴尾巴上加S,跟
http
/https
很像,都是用ssl来加密传输文件的,所以s在最后面
ftps需要ftp服务器
+ssl协议
-
sftp:这个跟linux的复制命令
cp
/scp
很像,都是用ssh来加密的,所以s在最前面
sftp需要sftp服务器
类型 | 协议 | 服务器 |
---|---|---|
ftp | ftp ∈ TCP/IP | ftp服务器 |
ftps | ftp + ssl | ftp服务器 + ssl协议 |
sftp | sftp ∈ ssh | sftp服务器 |
pyftpdlib只支持ftp、ftps方式
加密协议:SSL、TLS
类型 | 发展历史 |
---|---|
ssl 1.0 | 没发布 |
ssl 2.0 | 有bug |
ssl 3.0 | 总算正常了 |
TLS 1.0 (ssl 3.1) | 1999年 |
TLS 1.1 (ssl 3.2) | 2006年 |
TLS 1.2 (ssl 3.3) | 2008年、2011年;主流浏览器都支持 |
pyftpdlib对 ssl 3.0 以及 TLS 1.x 都支持
对称加密 与 非对称加密
- 对称加密 和 非对称加密:关键看通信双方用的密钥是不是一样的,加密、解密的密钥都是一样的,那两边就是对称的,那就是对称加密;如果两边的密钥不一样,那就是非对称加密。
居然还有加密、解密的密钥不一样吗?那怎么解密呢?——回答这个问题你需要看一部25分钟的数学科普,但是我建议不要看,因为通常莫法坚持看完:妈咪说MommyTalk-椭圆曲线加密与哈希函数是什么?非对称加密是什么?比特币中的数学原理)
- 安全与效率
加密方式 | 安全性 | 效率 |
---|---|---|
对称加密 | 相对来说破解更快 | 运算速度快 |
非对称加密 | 只要密钥够长+量子计算机还没制造出来,有生之年都等不到 | 时间复杂度非常大 |
-
两全其美的好办法 :又要安全、又要效率
- 服务器上做出来两个密钥:这两个密钥原本没区别,但是用法不同就产生区别了,一个是见不得人的私钥,一个是人尽可夫的公钥
- 公钥发送给客户端随便看,私钥服务器自己留着
- 要发送加密数据时,浏览器先生成一个密钥A,用它对数据加密,然后再用公钥对密钥A加密,这样别人就不晓得私钥A是好多,也就破解不到密码了。然后把两个数据打包发给服务器
- 服务器收到后,先用自己保留的私钥把加密的密钥A给解密出来,然后再用密钥A给数据解密
- 那么服务器又怎么把数据加密发给客户端浏览器呢,当然是用解密出来的密钥A加密数据了,反正这个密钥A是浏览器生成的,他可定知道,所以服务器返回数据时只需要把密文发过去,密钥A就不用发送了,因为浏览器有,浏览器收到密文后解密轻轻松松无压力
- 这样就实现了 这个我想要,那个美人儿我也喜欢 的大圆满结局了
篡改公钥
所谓道高一尺魔高一丈,万一公钥在发送给浏览器的路上被劫持然后偷换了呢?偷换公钥后,浏览器发送的数据服务器肯定是没法解密的,但是可以被偷换公钥的坏人解密,因为他有这个假公钥对应的私钥啊。这就会导致敏感信息——比如最常下手的就是银行账号的密码——被坏人掌握,然后造成不必要的损失。
为了解决这个问题,就搞出来一个SSL证书的认证。就是浏览器收到公钥后先去这些收钱的认证机构确认一下,具体就是把公钥算一个hash值,然后跟收钱机构登记的hash值对比一下,一样那就没被篡改,如果不一样就说明你的电脑需要安杀毒软件或者换一个wifi了。
网友评论