客户端和服务端公用一套密钥,客户端使用的加密算法是公开的,客户端向服务端发送请求后,服务端返回对应密钥,服务端解密和客户端加密都是用的同一密钥。
无法确认公钥是安全的。
解决方法:CA、SSH CA没有解决本质问题,引入了第三方,增加了通信成本,安全问题本质是人与人之间不信任导致的,所以才需要引入第三方。这样没有根本解决问题,安全本质是由通信双方相互不信任或者说信息不对称引起的,引入第三方存在通信成本,比如去银行借贷、存款,如果双方直接进行交易的话,利率会更低,在计算机网络中,引入了第三方是会增加性能消耗的。解决安全问题可以从人性考虑,比如安全领域的社会工程就是利用人性弱点完成不法操作;做产品也是,比如头体系的产品。
区块链:去中心化。
SSH
ssh -p 22 user@119.19.37.60
ssh——参考链接:https://www.jianshu.com/p/33461b619d53
比如token、用户签名,具体时间根据业务场景确认。从两方面理解: 一方面, 安全本质是为了数据安全,只要数据库信息泄露或者有误就是安全事故,数据保存到数据库之前需要结果服务端,因此服务端需要有防护措施,对认证信息要有一定的掌控力度。 给客户端的认证权限一旦发放出去了,就不好收回了。当然也有例外,比如支付宝免密支付,认证信息相当于永久,认证信息作为数据库表的某一字段,用户进行支付操作时,客户端需要将该参数作为入参传递给服务端。如果用户不主动取消,支付宝方面不能够取消认证信息,虽然技术上可以,但是侵害用户权益,支付宝之所以敢这么做,一方面是因为业务需求,另一方面是对自己的安全体系足够自信,也并不是有这个业务需求的所有企业敢这么做。
另一方面从生活中找案例,身份证也相当于个人认证信息,身份证是有过期时间的,期限到了,需要重新认证;验证码也是。