0

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

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

128 位 - 86 毫秒,
256 位 - 528 毫秒,512 位 - 2240
毫秒的平均值。

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

(不需要推荐SSH,谢谢)

4

2 回答 2

1

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

在 SSH 中,您拥有服务器主机密钥,并且仅在安装 SSH 服务器时生成一次。然后,您拥有(可选)客户端用于登录的密钥,并且它们也不会每次都重新生成 - 仅一次,仅此而已。

于 2013-06-16T02:30:34.873 回答
0

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

仅使用 rsa 并不常见,因此通常会创建一个对称芯片(例如 AES)并使用 rsa 验证和传输随机密钥,然后再在该芯片中执行其余操作。原因是在使用 rsa 时,消息的长度(以位为单位)不能长于密钥的长度,而且速度很慢。

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

SSL有什么问题?

于 2013-06-16T00:11:20.357 回答