本文分析了不同密钥封装方法(KEM)的性能,包括密钥生成、封装和解封装的速度。实验结果显示,ML-KEM 在各个方面表现良好,是现有 KEM 方法的优秀替代品。RSA 在密钥生成和解封装方面较慢,而 P256 曲线在密钥生成方面最快。
使用 KEM,我们用 Alice 的公钥封装一个密钥,然后用 Alice 的私钥解封它:
因此,要衡量哪个最快,这完全取决于我们关注的是什么:每秒生成的密钥数、每秒的封装数或每秒的解封数。为此,让我们使用 OpenSSL:
$ openssl speed -kem-algorithms
Doing rsa512 keygen ops for 10s: 3662 rsa512 KEM keygen ops in 9.94s # 在 10 秒内完成 rsa512 密钥生成操作:在 9.94 秒内完成 3662 个 rsa512 KEM 密钥生成操作
Doing rsa512 encaps ops for 10s: 2454771 rsa512 KEM encaps ops in 9.91s # 在 10 秒内完成 rsa512 封装操作:在 9.91 秒内完成 2454771 个 rsa512 KEM 封装操作
Doing rsa512 decaps ops for 10s: 288275 rsa512 KEM decaps ops in 9.89s # 在 10 秒内完成 rsa512 解封操作:在 9.89 秒内完成 288275 个 rsa512 KEM 解封操作
Doing rsa1024 keygen ops for 10s: 1017 rsa1024 KEM keygen ops in 9.91s # 在 10 秒内完成 rsa1024 密钥生成操作:在 9.91 秒内完成 1017 个 rsa1024 KEM 密钥生成操作
Doing rsa1024 encaps ops for 10s: 1189576 rsa1024 KEM encaps ops in 9.94s # 在 10 秒内完成 rsa1024 封装操作:在 9.94 秒内完成 1189576 个 rsa1024 KEM 封装操作
Doing rsa1024 decaps ops for 10s: 94147 rsa1024 KEM decaps ops in 9.97s # 在 10 秒内完成 rsa1024 解封操作:在 9.97 秒内完成 94147 个 rsa1024 KEM 解封操作
Doing rsa2048 keygen ops for 10s: 183 rsa2048 KEM keygen ops in 9.98s # 在 10 秒内完成 rsa2048 密钥生成操作:在 9.98 秒内完成 183 个 rsa2048 KEM 密钥生成操作
Doing rsa2048 encaps ops for 10s: 399880 rsa2048 KEM encaps ops in 9.94s # 在 10 秒内完成 rsa2048 封装操作:在 9.94 秒内完成 399880 个 rsa2048 KEM 封装操作
Doing rsa2048 decaps ops for 10s: 12854 rsa2048 KEM decaps ops in 9.95s # 在 10 秒内完成 rsa2048 解封操作:在 9.95 秒内完成 12854 个 rsa2048 KEM 解封操作
Doing rsa3072 keygen ops for 10s: 54 rsa3072 KEM keygen ops in 10.22s # 在 10 秒内完成 rsa3072 密钥生成操作:在 10.22 秒内完成 54 个 rsa3072 KEM 密钥生成操作
Doing rsa3072 encaps ops for 10s: 192320 rsa3072 KEM encaps ops in 9.97s # 在 10 秒内完成 rsa3072 封装操作:在 9.97 秒内完成 192320 个 rsa3072 KEM 封装操作
...
...
keygen encaps decaps keygens/s encaps/s decaps/s
rsa512 0.002714s 0.000004s 0.000034s 368.5 247800.2 29146.3
rsa1024 0.009741s 0.000008s 0.000106s 102.7 119705.8 9444.2
rsa2048 0.054559s 0.000025s 0.000774s 18.3 40239.5 1291.5
rsa3072 0.189236s 0.000052s 0.002441s 5.3 19292.3 409.7
rsa4096 0.537007s 0.000089s 0.005576s 1.9 11218.8 179.3
rsa7680 11.546875s 0.000302s 0.047693s 0.1 3313.7 21.0
rsa15360 139.218750s 0.001188s 0.274071s 0.0 841.4 3.6
ECP-256 0.000013s 0.000066s 0.000050s 79752.8 15241.5 19970.8
ECP-384 0.000895s 0.001814s 0.000913s 1117.5 551.2 1095.4
ECP-521 0.001949s 0.003903s 0.001959s 513.1 256.2 510.4
X25519 0.000039s 0.000080s 0.000036s 25881.0 12537.8 27553.8
X448 0.000366s 0.000998s 0.000629s 2733.3 1001.8 1590.3
ML-KEM-512 0.000049s 0.000040s 0.000062s 20365.2 24903.6 16133.0
ML-KEM-768 0.000075s 0.000058s 0.000088s 13272.6 17204.8 11365.0
ML-KEM-1024 0.000111s 0.000079s 0.000118s 8988.5 12686.0 8497.8
X25519MLKEM768 0.000118s 0.000137s 0.000130s 8460.4 7287.1 7694.5
X448MLKEM1024 0.000485s 0.0001.074s 0.000743s 2060.2 931.3 1345.2
SecP256r1MLKEM768 0.000106s 0.000141s 0.000155s 9474.3 7069.4 6470.9
SecP384r1MLKEM1024 0.001053s 0.001916s 0.001162s 950.1 521.9 860.9
对于每秒的密钥生成数,P256 曲线是最快的,X25519 和 ML-KEM-512 慢三到四倍。我们可以看到,RSA 是一种相当慢的密钥生成方法,RSA-2K 比 P256 慢 4,300 多倍:
P256/ML-KEM768 和 X25519/ML-KEM768 的混合方法运行良好,但显然比现有的椭圆曲线方法慢。
当涉及到每秒加密数时,RSA 表现最好,其次是 ML-KEM。总的来说,P256 在这方面表现不佳:
当涉及到解封时,X25519、P256 和 ML-KEM 都表现良好,而 RSA 则慢得多(注意:现在不再使用 RSA512):
因此,一般来说,ML-KEM(KEM 的量子鲁棒方法)在所有领域都表现良好,并表明它是我们现有 KEM 方法的绝佳替代品。RSA 通常在生成密钥和解封方面速度较慢。还应该记住,操作速度越快,可能消耗的能量就越少。
- 原文链接: medium.com/asecuritysite...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!