golang 中密钥长度为 15360 的 RSA 密钥对生成速度太慢。需要做什么来解决这个问题?
RSA key-pair generation in golang with 15360 key length is too slow. What need to be done to resolve this?
我尝试在 go 中创建密钥长度为 15360 的 RSA 密钥对。
在 windows 中,它会在大约 2 分钟内生成密钥对。但是从 VM 中它正在侦听超过 10 分钟并且无法生成密钥对并以套接字挂断结束。
privateKey, err := generatePrivateKey(15360)
if err != nil {
log.Fatal(err.Error())
}
在 java 实现中相同,它在 VM 3 中生成密钥对的时间约为 10 分钟,共 5 次。
在 go 中我可以通过哪些方式改进这一点,以避免此类套接字挂起失败?
我刚刚测试了 Go 1.14.6 中密钥的生成(Windows 10,没有 VM,4 核),在 RSA or (much faster) ECC, using nilsmagnus's gist
我确实看到 15360 位 RSA 密钥(强度相当于 256 位对称密钥)需要 10 多分钟
2020/08/13 07:55:30 2048/224 (rsa-bitsize/ec-bitsize): 1245302200ns 1481396600ns
2020/08/13 07:55:34 3072/256 (rsa-bitsize/ec-bitsize): 2797005900ns 70036800ns
2020/08/13 07:56:41 7680/384 (rsa-bitsize/ec-bitsize): 33954637400ns 11623485000ns
2020/08/13 08:07:56 15360/521 (rsa-bitsize/ec-bitsize): 236410356300ns 17162054200ns
使用 Go 1.15(昨天发布):
2020/08/13 08:11:40 2048/224 (rsa-bitsize/ec-bitsize): 1064054900ns 1486366000ns
2020/08/13 08:11:43 3072/256 (rsa-bitsize/ec-bitsize): 2799028300ns 70949100ns
2020/08/13 08:12:34 7680/384 (rsa-bitsize/ec-bitsize): 35293246300ns 9160064600ns
2020/08/13 08:24:10 15360/521 (rsa-bitsize/ec-bitsize): 236385736600ns 25844676400ns
无明显改善。
因此对于这种密钥长度,使用 ECC 密钥而不是 RSA 会快得多。
我尝试在 go 中创建密钥长度为 15360 的 RSA 密钥对。
在 windows 中,它会在大约 2 分钟内生成密钥对。但是从 VM 中它正在侦听超过 10 分钟并且无法生成密钥对并以套接字挂断结束。
privateKey, err := generatePrivateKey(15360)
if err != nil {
log.Fatal(err.Error())
}
在 java 实现中相同,它在 VM 3 中生成密钥对的时间约为 10 分钟,共 5 次。
在 go 中我可以通过哪些方式改进这一点,以避免此类套接字挂起失败?
我刚刚测试了 Go 1.14.6 中密钥的生成(Windows 10,没有 VM,4 核),在 RSA or (much faster) ECC, using nilsmagnus's gist
我确实看到 15360 位 RSA 密钥(强度相当于 256 位对称密钥)需要 10 多分钟
2020/08/13 07:55:30 2048/224 (rsa-bitsize/ec-bitsize): 1245302200ns 1481396600ns
2020/08/13 07:55:34 3072/256 (rsa-bitsize/ec-bitsize): 2797005900ns 70036800ns
2020/08/13 07:56:41 7680/384 (rsa-bitsize/ec-bitsize): 33954637400ns 11623485000ns
2020/08/13 08:07:56 15360/521 (rsa-bitsize/ec-bitsize): 236410356300ns 17162054200ns
使用 Go 1.15(昨天发布):
2020/08/13 08:11:40 2048/224 (rsa-bitsize/ec-bitsize): 1064054900ns 1486366000ns
2020/08/13 08:11:43 3072/256 (rsa-bitsize/ec-bitsize): 2799028300ns 70949100ns
2020/08/13 08:12:34 7680/384 (rsa-bitsize/ec-bitsize): 35293246300ns 9160064600ns
2020/08/13 08:24:10 15360/521 (rsa-bitsize/ec-bitsize): 236385736600ns 25844676400ns
无明显改善。
因此对于这种密钥长度,使用 ECC 密钥而不是 RSA 会快得多。