每次传输使用相同的RSA密钥?

时间:2013-06-15 10:51:06

标签: php rsa phpseclib

假设我希望使用RSA加密将数据从客户端(浏览器,js + ajax)传输到服务器(PHP)。为服务器定义一个大的RSA密钥对并且每次都使用它是一个好主意吗?

我提出这个问题是因为phpseclib的密钥生成器对于可接受的(1024+)密钥大小非常慢(在Core2Duo 3GHz 3GB RAM上测试):

128bit - 86ms,
256位 - 528ms,
512位 - 平均2240毫秒。

因此,为每次传输生成密钥是不可行的(或者我忽略了什么?)

(无需推荐SSH,谢谢)

2 个答案:

答案 0 :(得分:1)

1024+密钥大小被认为可接受的一半原因是因为需要重新生成。

在SSH中,您拥有服务器主机密钥,并且只生成一次 - 安装SSH服务器时。然后你有(可选)客户端用来登录的密钥,并且每次都不会重新生成它们 - 只需一次就可以重新生成它。

答案 1 :(得分:0)

它的常见做法是为每一方创建一次公钥/私钥对,并使用它们来验证对等方以及使用它们传输秘密。

仅使用rsa并不常见,所以通常会创建一个对称的chipher(例如AES)并使用rsa验证并传输随机密钥,然后再在该chipher中完成其余工作。原因是,当使用rsa时,消息的长度不能超过密钥的长度,而且速度很慢。

SSL,SSH,GPG和PGP都是这样做的。

SSL出了什么问题?