秘密鍵から Bitcoin を復元

mac
秘密鍵から公開鍵が生成できる

Bitcoin は、公開鍵と秘密鍵のペアを用いで送受信します。

公開鍵というのは、住所のようなもので、

例えば、AさんがBさんに Bitcoin を送るときは、

Aさんは、Bさんの公開鍵に Bitcoin を送ればよいです。

Bさんは送られた Bitcoin をBさんの秘密鍵を用いて使うことができます。

Bさんの秘密鍵はBさんしか知らないので、問題ないですね。

この公開鍵と秘密鍵の関係はおもしろくて、

秘密鍵がわかれば、そこから対応する公開鍵を簡単に得ることができます。

ただし、逆に、公開鍵から対応する秘密鍵を得ることは非常に難しい(というか現実的にほぼ不可能)とされています。

このように、公開鍵と秘密鍵は、1対1に対応しています。

秘密鍵の空間の大きさの話

Bitcoin の秘密鍵って 256ビットの長さなんですよ。

32ビットが 2 の 32 乗で、約43億通りの状態を表現できるわけですから、

256ビットは、32ビット8つ分なので、
256ビットの状態数は、

43億 x 43億 x 43億 x 43億 x 43億 x 43億 x 43億 x 43億

通りになりますね、とんでもない数です。

bitcon をハックしようとすると?

ただ、冷静に考えると、秘密鍵があれば公開鍵が一意に決まるので、

適当な256bitの秘密鍵を生成して、それが誰かの秘密鍵と一緒だったら、その人の bitcoin を盗めることになりますよね?

生成された公開鍵が使われているかどうかは、ブロックチェーンの全データをスキャンすればわかります。

では、現実に衝突する可能性はどのくらいか?

これを直感的に理解するのはなかなか難しいと思いますが、考えてみました。

4GHzのCPUをぶん回して1秒間に43億の秘密鍵を生成できるとしましょう。

地球にいる人口43億人のそれぞれが43億の秘密鍵を持っているとします。

100年の秒数を多めに見積もって43億秒だとします(厳密には31億秒くらい)

つまり、43億 x 43億の既にある秘密鍵を1秒に43億回生成できるマシンで100年計算したら

43億 x 43億の既にある秘密鍵に1回で当たる確率は

43億 x 43億 x 43億 x 43億 x 43億 x 43億 分の1となります。

これを100年で分回せるのは 43億 x 43億 回なので、

どれかにヒットする確率は以下のように表されます。

1 – 全部外す確率

ということは

1 – (1回はずす確率) の 43億 x 43億乗

つまり

1 – (1 – どれかにヒットする確率) の 43億 x 43億乗

となります。。

自分で書いててわけわからんくなってきた。

すいません。今度ちゃんと書き直します。

256bitの暗号化はどの程度強固なのか
https://pebble8888.hatenablog.com/entry/2018/05/26/111601

秘密鍵から Bitcoin を復元

やっと本題です。

まず以下のエントリを参考にして Bitcoin-cli をインストールしてください。

Bitcoin Core をビルドして Bitcoin-cli を使う
https://nomad.office-aship.info/bitcoin-build

bitcoind もインストールされるので、頑張ってフルブロックチェーンをダウンロードしてください(200Gくらいあります涙)

秘密鍵を
a837635fc9cbb055c00b64ef29ced5021d9b76900fce53538a99f1b3c05ce1d2
とすると

以下で秘密鍵をインポートできます

% bitcoin-cli importprivkey a837635fc9cbb055c00b64ef29ced5021d9b76900fce53538a99f1b3c05ce1d2

そうすると、該当アドレスの残高をチェックするため、フルチェーンのスキャンが始まります。

スキャンが終わると、以下のコマンドで残高が確認できると思います

% bitcoin-cli getwalletinfo
{
  "walletname": "wallet_name",
  "walletversion": 169900,
  "format": "bdb",
  "balance": 0.00000000,
}

この balance のところに金額が表示されれば成功です。

コメント

タイトルとURLをコピーしました