Dsa
ECDSA 中的 DSA 漏洞
我已經實現了一個 ruby 程式碼,我在其中生成私鑰和公鑰,如下所示。
但是,我讀了幾篇文章$$ 1 $$關於 DSA 以及為什麼不應該使用它。我不擅長密碼學。但仍然想知道我的實現是否容易恢復公鑰/私鑰?
$group = ECDSA::Group::Secp256k1 $private_key = 1 + SecureRandom.random_number($group.order - 1) $public_key = $group.generator.multiply_by_scalar($private_key)
您的困惑似乎在 DSA、離散簽名算法和橢圓曲線變體 ECDSA 之間。您指出的問題的答案似乎已經在兩者之間做出了區分,這個答案不會重複。
對於 Koblitz 曲線,例如 SECP256K1,256 位的密鑰大小被認為是安全的。因此**,如果使用正確**,所顯示的程式碼在所使用的算法和密鑰大小方面是安全的。眾所周知,為 ECDSA 簽名使用錯誤的隨機數生成器會導緻密鑰材料的災難性失去。
筆記:
- 不建議使用 ECC 的單人實現:存在更大的實現錯誤或側通道攻擊的可能性(例如在乘法計算公鑰或簽名生成期間);
- SECP256K1 提供的安全性略低於 128 位,目前無法破解(儘管位大小略偏低)。但是 EC(DSA) 很容易受到來自未來量子電腦的攻擊(DSA 也是如此)。