加密和解密的秘钥使用的是同一个. 如上图所示,客户端与服务器端公用一个k进行加密与解密,这样安全吗,显而易见,这样并不安全,如果黑客在中间截获了你的数据,黑客也可以很轻易地拿到k去进行解密。
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey),而且只能一方加密另一方去解密 如上图所示,客户端与服务器的通信第一步就是索要公钥,任何人都可以拿到公钥,但是私钥只有服务器端才有。 客户端通过拿到的公钥对数据进行加密,服务器端拿到之后,用自己的私钥进行解密,再之后往客户端传送数据的时候利用自己的私钥进行加密,客户端用公钥进行解密。 但是这样也并不是安全的,黑客也可以作为一个客户端,请求到公钥,然后中间进行拦截,解密服务器发过来的信息。
首先进行非对称加密,进行协商后来对称加密的 k 值,大概流程如下图 这样看似安全,实则也不安全,其中牵扯到一个中间人的问题。如下图所示。 中间人很“善良”的给客户端收发信息,对客户端来说,它充当一个服务器,对服务器来说,它又是一个普通的客户端。在普通信息的传输中,它尽职尽责,在涉及到敏感信息的时候,它就会将这些信息记录下来,然后可能会修改你的转账金额之类的信息,所以也是非常恐怖的。