加密方案介绍

使用对称加密算法(AES-CBC)

优点:使用对称秘钥效率高;
缺点:但如果写入客户端,被破解后就可以解密双方数据,因为服务端也是相同的秘钥。

使用非对称加密算法(RSA)

优点:安全性好。
缺点:效率太低。

服务端生成会话密钥,进行明文下发

这个会话密钥是服务端单独生成的,那一定会导致一种结果:只要客户端能最终解密出来,那黑客(不,这里侮辱了黑客的智商,明文发的密钥,水平高点的程序员都能获取到)也一定能解密出来。因为对于服务端而言,客户端和黑客都是密钥的接收方,两者是平等的,无法区别的。

服务端生成会话密钥,进行对称加密下发

首先,你必须要有一套密钥,这个密钥是服务器和客户端都有得,保证了日后可以基本通信的。可以是生成aes密钥得密码和盐值。在把需发送的信息组包、加密、签名、base64转换。发给客户端,客户端收到后用原来的密钥进行解密,形成新的通信密钥。其实目前这种方案复杂度和难度已经可以。如果你感觉这种方案有漏洞,那么继续往下看吧。

服务端生成会话密钥,进行非对称加密下发

实用非对称加密算法不排除rsa等非对称算法被破解的可能(这些算法比较难被破解,但是并不是说不能被破解,看你加密的东西是否有吸引力了),然后一地鸡毛。
这个和上面对称密钥加密下发一样的,只是算法换了。但,,,,服务器生成密钥发给客户端,你可要考虑清除,服务器需要客户端的公钥,客户端需要用自己的私钥去解密,不然可解不开。客户端解开了之后,获取到会话密钥后才能进行下一步操作。对此,后续在可信通道这块会有升级介绍。

可信通道的建立

这套通信是普通客户端和自家服务通信的骨灰级方案了吧。当然,可能因为我的无知,认识有片面性,大佬看到还希望指出。
参考往期文章:在线支付系统可信通道建立 https://blog.csdn.net/u013921164/article/details/113386589

公钥的合法性校验

为了公钥的合法性校验,人们建立了专门颁发证书的机构:“证书中心”(Certificate authority,简称CA),它会利用自己的私钥,将我们的公钥和相关信息进行加密,生成一个数字证书。在客户端内部,会存在一个受信任的根证书颁发机构,所以客户端在每次拿到一个公钥后,就去查询这个公钥是否在这里受信任证书列表中,如果不在,则认为公钥无效,不再进行后续操作。如果存在,再继续进行下一步认证。
当然,这个可能就是网络(网站、网页)与服务器之间的,Android用的也比较多。那我一个搞Linux的是不太关注这个的。与其研究透这个,不如去多看看加密算法的理论书籍,或者openssl,感觉更实用点。

猜你喜欢

转载自blog.csdn.net/u013921164/article/details/113584592
今日推荐