加密是有时效性的,通常楼主说的这种情况不需要考虑防止别人从内存中把密钥读出来,这种密钥一般是一个session(会话,或者客户端和服务端每次建立连接)换一次,也就是所谓的session key,等到别人截获到session key的时候,就已经失效了。
当
然,这不是足够安全的做法。足够安全的做法就是服务器端产生session key以后,是用PKI的方式来加密sessioin
key的,PKI属于非对称加密,非常可靠但效率比较低,session
key则是对称加密,效率比较高但安全性较差。用PKI的方式加密session key进行传输,就结合了这两者的优点,既可以保证session
key的安全传输到通讯的另一端,然后正常的通讯又都是采用session key进行加解密这种对称的方式。
比如Server有一对密
钥:PublicServer(公钥)/PrivateServer(私钥),Client也有一对密钥PublicClient(公钥)
/PrivateClient(私钥),同时假定Server所产生的对称密钥是sessionKey,那么sessionKey的传输到Client的
过程就是这样的:
1. 首先用PrivateServer加密sessionKey
2. 用PublicClient加密步骤1的结果
3. 发送
4. Client接收到后,首先用PrivateClient解密,得到步骤1的结果
5. 再用PublicServer解密步骤4得到的结果,就会得到sessionKey
-------------
6. 然后Client和Server就开始用sessionKey来进行对称方式的加解密了。
在传输的过程中,从理论上而言,几乎没有被破解的可能性。事实上网上银行的数据传输安全机制就是这样的。
当然安全是没有绝对的,一切都是相对的。
阅读(882) | 评论(0) | 转发(0) |