我目前正在开发一个在客户端和服务器之间传输数据的系统,并且想知道我计划使用的加密强度是多少。
我的想法是拥有一个私钥/公钥 RSA key 对并将公钥分发给每个客户端(将私钥单独留在服务器上)。然后,每个客户端将生成自己的 AES key 并 RSA 对其进行加密。然后,他们将对他们的数据进行 AES 加密,并将加密的数据和加密的 AES key 发送到服务器。然后,服务器将使用私钥解密 AES key ,然后使用 AES key 解密数据。
我是否缺少任何安全漏洞和/或有更好的方法来做到这一点?
最佳答案
这几乎就是 SSL/TLS有效(查看握手部分)。唯一让它更强大的是为每个连接生成 AES key ,而不是每次都使用相同的 key 。您可能还希望对来回发送的消息进行数字签名,以避免中间人攻击和其他欺骗攻击。
一般来说,创建一个好的密码系统是非常困难的。如果可能,您应该始终支持现有的(受信任的)应用程序来提供帮助。在这种情况下,您可能会考虑使用 HTTPS 发送消息,而不是创建自己的系统。
关于security - RSA 加密 AES key 的强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1664255/