security - 计算机是否部署了预先计算的素数列表

标签 security http ssl server primes

根据我对公钥加密的理解,服务器根据两个大质数的乘积生成公钥, p q ,产生 n .

n 然后发送到希望安全连接到服务器的客户端。

客户端选择一个随机数 x 并计算 x^3 modulo n 并将其传回服务器。

然后服务器计算 x 使用 p q 然后是 x 用作加密所有流量的私钥,客户端和服务器都知道这一点,而不会暴露它。


问题

对于每个想要连接到服务器的客户端,服务器需要为每个连接创建一个公钥。在繁忙的服务器上,这将需要生成许多 p q 的。

虽然计算机速度很快,但 p q 2^1024 范围内的大数确定这些数字是否为质数需要很多努力,如果与服务器建立大量连接(想想 Google、Facebook 等),则需要反复努力。

另外如果 的随机选择 p q 结果是非质数,那么服务器将需要选择另一个随机数并确定该数是否为质数。这看起来可能有相当多的计算时间被浪费了。

因此服务器不必为每个连接计算两个随机素数,服务器是否可以/是否从安装在服务器上的预先计算的素数列表中选择?如果是这样,我们可以相信这些素数实际上是素数,并且是随机选择的吗?

最佳答案

你误解了PKI,服务器不会为每个客户端和连接创建一个新的公钥。

此外,WRT 创建 RSA 素数请参阅 Rob Napier 对问题的评论:

"generating large primes is not nearly as expensive as you likely think."
and his link generating large prime numbers for RSA.

关于security - 计算机是否部署了预先计算的素数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34656015/

相关文章:

WCF HTTP 504 错误

perl - Postgres 和 Movable Type 的数据库连接错误

google-chrome - 在 HTTPS 上使用 Windows 身份验证首次调用 ASP.NET Core 2.0 Web API 在 Chrome 中总是失败

database-design - 电子商务网站是否应该使用混淆的订单 ID

javascript - 保护原始 JSON 数据不被复制

java - 保护用于分发的 Java jar 文件

ssl - 为 Elastic Beanstalk 配置 SSL

javascript - IFRAME 中的 Java 脚本安全问题

php - 从另一台机器连接到 react 服务器

http - 使用 Deno 在本地网络上提供文件服务