Pebble Coding

プログラマーの作業メモ

ビットコインでは楕円曲線暗号secp256k1が使われている

どうやらビットコインでは署名に楕円曲線暗号が使われているらしいです。
ビットコイン楕円曲線暗号の勉強を始める何年も前から所有していますが、知らなかった。

ビットコインとは何か? 第3回:ビットコインの仕組み(アドレスの作成から送金まで) - ビットコインの解説 | Bitcoin日本語情報サイト

使われているのはsecp256k1という形式で、
曲線は {y}^{2} = {x}^{3} + 7だそうです。
法とする素数 {2}^{256} - {2}^{32} - {2}^{9} - {2}^{8} - {2}^{7} - {2}^{6} - {2}^{4} - 1 ( = {2}^{256} - {2}^{32} - 977 )
ベースポイント、ベースポイントの位数Lも定義されています。
cofactorは1ですね。

Secp256k1 - Bitcoin Wiki

その他のコインはどうなっているのか調べてみると、
イーサリウムはビットコインと同じsecp256k1のようです。
その他もこれを使っているものが多いようですね。

この調査の過程で、OpenSSHにEd25519が追加された経緯を知りました。

chris blogs: The road to OpenSSH bliss: ED25519 and the IdentityPersist patch

NISTというアメリカのNSA
(暗号学者が多数所属する国家機関、マットデイモンのグッドウィルハンティングにも出てきましたね。)
に関連のある団体が決めた楕円曲線は何か重大なバックドアがあるかもしれない。
心配だからEd25519も追加しようぜってことらしい。どんだけパラノイアなんだって話ですが。