通常的建议适用:使用 HTTPS,不要试图发明安全的消息传递协议。你很可能会失败。如果您绝对需要这样做,通常的方法是使用 RSA 密钥来加密对称会话密钥并用这些密钥加密您的数据。另请注意,您可以使用 RSA 密钥加密的数据大小受密钥大小(1024、2048 等位)的限制。对于双向通信,每一方都需要拥有对方的公钥。所以它是这样的:
- Alice 将她的公钥 (RSA)安全地交给 Bob(见下文)
- Bob 将他的公钥 (RSA)安全地交给 Alice
- 当 Bob 想要与 Alice 通信时,他会生成一个会话密钥(例如,一个 256 位 AES 密钥),然后使用她的公钥对其进行加密。
- Bob 将加密的会话密钥发送给 Alice。
- Bob 使用会话密钥 (AES) 对消息进行加密,并将其发送给 Alice。
- Alice 使用她的私钥 (RSA) 来解密会话密钥 (AES)。
- Alice 使用会话密钥 (AES) 解密来自 Bob 的消息。
在步骤 3 到 7 中颠倒 Bob 在 Bob 中的角色,以另一种方式进行通信。
但是,当然,如果您将公钥发送给某人,他们如何确定这实际上是您的密钥,而不是我的?如果您不亲自递交并出示带照片的身份证件,这绝非易事。
然后,您需要某种方法来验证来自 Bob 的(加密的)消息没有被修改(您可以将其切成两半,它仍然是有效的和可解密的;当然还有其他更复杂的攻击)。
所以只要说服你需要说服的人使用 HTTPS 或其他一些已建立的协议,不要试图重新发明轮子。