Elliptic-Curves

一台筆記型電腦能在一小時內生成十億個橢圓曲線密鑰嗎?

  • June 14, 2017

我希望我的應用程序生成一個 EC 密鑰對。

公鑰的 sha256 散列的前四個字節應該包含一個已知的 IP 地址。

由於雜湊是單向函式,我需要通過生成 40 億個鍵來強制執行此操作。

在筆記型電腦上,這可能在一小時內實現嗎?

Openssl 不是執行此操作的方法 - 僅生成一千個密鑰需要幾秒鐘。按 4s/千計算,40 億需要 6 個月。

#!/bin/bash
time for a in {0..999} ; do
 openssl ecparam -genkey -name secp256k1 -noout -out key.priv.pem
done

openssl 是否在做一些不必要的事情來製作密鑰來檢查雜湊?

在現代 CPU 上,最快的橢圓曲線算法可以在大約 40k 週期內生成一個密鑰對。一台高端筆記型電腦有四個執行頻率約為 3 GHz 的核心,因此它每秒可以生成大約 30 萬個密鑰對,即每小時十億個。(相比之下,SHA-256 的成本可以忽略不計。)

然而,secp256k1 遠不是最快的曲線。根據上面的連結,使用許多算法生成密鑰對需要 10 倍的時間,因此迭代搜尋空間可能至少需要數十個小時。更主流的筆記型電腦,你可能會看幾天。

因此,如果您只是蠻力生成密鑰對以尋找匹配的密鑰對,即使有更好的實現,您也無法在一小時內完成(除非您很幸運)。

引用自:https://crypto.stackexchange.com/questions/29885