私はビットコインに関するプレゼンテーションを行っており、秘密鍵の暗号化について人々が安心できるようにするための計算を探していました。最初に、秘密鍵のバイト数、それに含まれる数字の組み合わせの数、スーパーコンピューターの最速のコンピューターまたはネットワーク、およびそのコンピューターを使用して秘密鍵を解読するのにかかる時間を答えてください。私自身の計算によると、結果は非常に教育的なものになると思います。ありがとうございます。
コメント
- Security Stack Exchangeに関するこの回答は関連性があります: security.stackexchange .com / a / 25392/4647
- それでは説明してください。 directory.io これらの人々はすべての秘密鍵を持っていると主張しています… ‘は言っていないようです真実
- 彼らは真実を語っています。円周率の数字を生成できる人なら誰でも、これまでに書かれるすべての文学作品を持っているのと同じ方法です。
- coindesk.com/bitcoin-protocol-ハックジョーク
回答
秘密鍵のバイト数
32バイトまたは256ビット
次に、含まれる数字の組み合わせの数
2 ^ 256の異なる秘密鍵があります。これは、「1の後に77個のゼロが続くより少し大きいです。
スーパーコンピューターの最速のコンピューターまたはネットワークは何ですか
2011年8月頃のピーク時に、ビットコインネットワークは毎秒15兆のsha256ハッシュをチェックしていました( )
そのコンピューターを使用して秘密鍵を解読するのにかかる時間
ECDSA操作の実行にsha256ハッシュのチェックと同じ時間がかかると想定した場合(はるかに時間がかかります)、必要なものだけを許可する最適化を使用します2 ^ 128 ECDSA操作の場合、必要な時間は次のように計算できます。
>>> pow(2,128) / (15 * pow(2,40)) / 3600 / 24 / 365.25 / 1e9 / 1e9 0.6537992112229596
6億5000万年です。
それ」単一のビットコインアドレスを解読するのにかかる時間の非常に控えめな見積もり。
編集:コンピュータは時間の経過とともに指数関数的に速くなる傾向があることが指摘されました。ムーアの法則。計算速度が毎年2倍になると仮定すると(ムーアの法則では2年と言われていますが、注意が必要です)、59年で1。13年しかかかりません。したがって、コインは次の60年間安全です。ブロックチェーンを保護するために使用されるアルゴリズムへの変更。ただし、アルゴリズムが提供する保護を破ることが可能になるずっと前に、アルゴリズムが変更されることを期待しています。
コメント
- Moore ‘の法則(または同様のもの)は、おそらくその数を少し減らすでしょうが、問題になるほどではありません。答えが”そのアドレスに保管されているコインをマイニングするのにかかる時間よりも長い何らかの形式である限り、”安全であるはずです。 🙂
- 重要なのは、人々は自分のお金がどれほど安全かを知るに値するからです。
- ムーアを想定した’ ‘の法律はさらに60年間続く可能性があります。一方で、それまではQCが主流になっているかもしれません。
- すばらしい答えです。この回答が書かれて以来、ビットコイン’のネットワーク累積電力が値のほぼ10倍になったことは注目に値します。つまり、’の”のみ”約6億5300万年分の計算です。
回答
ビットコインの秘密鍵はランダムな256ビットの数値です。ただし、公開鍵は秘密鍵に関するいくつかの情報を明らかにします。 ECDSAを破るための最もよく知られているアルゴリズムには、O(sqrt(n))演算が必要です。つまり、ビットコインアカウントを破るには2 ^ 128回の操作が必要になります。
ビットコインが使用するタイプのこれまでに破られた最大のECDSAキーは、112ビット長でした。ビットコインのアカウントを破るのは4兆倍以上困難です。
現実的なリスクは量子コンピューティングだけです。
コメント
- 量子コンピューティングでさえ、pow(2、N)からpow(2、N / 2)までの時間を短縮することだけが期待されていることにも注意してください。これは、重要ではありますが、大きく開いているわけではありません。 en.wikipedia.org/wiki/Key_size
- @GaryRoweを参照してください’間違っています。キーの長さの半分は、対称キーに適用されます。ほとんどの非対称暗号(ビットコインに使用されるECDSAを含む)は、Shor ‘のアルゴリズムのおかげで、量子コンピューターを使用して多項式時間で解読できます。そのウィキペディアの記事”を引用すると、一般的なコンセンサスは、Shor ‘のアルゴリズムが利用可能になります。”。量子証明署名スキームはありますが、’おそらくブロックチェーンをたくさん膨らませます。
- @CodeInChaosすべての良い点-申し訳ありません混乱を招きました。
- O(sqrt(n))攻撃は誕生日攻撃であり、すべての暗号化スキームで可能です。公開鍵が明らかにする秘密鍵”に関する”情報は何を参照していますか?
- @dionyziz I ‘誕生日攻撃について話しているのではなく、’ ECDSA公開鍵を逆にして対応する秘密鍵を取得することについて話している。公開鍵が明らかにする”秘密鍵に関する情報”は、その秘密鍵にジェネレーターを掛けたものに対応するポイントです。これにより、大きなステップ、小さなステップなどの離散対数アルゴリズムを使用できるようになります。
回答
ビットコイン秘密鍵(ECC鍵)は、1から約10 ^ 77までの整数です。これはあまり選択されていないように思われるかもしれませんが、実用的な目的では本質的に無限です。1秒あたり1兆個の秘密鍵を処理できるとしたら、それらすべてを数えるのに宇宙の年齢の100万倍以上かかるでしょう。さらに悪いことに、これらのキーを列挙するだけで、32年間の太陽の総エネルギー出力よりも多くを消費します。この広大なキースペースは、ビットコインネットワークを保護する上で基本的な役割を果たします。
コメント
- チャックノリスは2回無限に数えました。
- チャックノリスは中本聡に何をすべきかを話しました。
回答
2 ^ 256 = 1.1×10 ^ 77 =キーの組み合わせの数
2 ^ 128 = 3.4×10 ^ 38 =必要な推測の平均数
このウェブサイトによると: http://en.wikipedia.org/wiki/TOP500 、最速のスーパーコンピューターは10.51ペタフロップスのKコンピューターです。
ペタフロップスは10 ^ 15 FLOPS、浮動小数点命令です。 1秒あたりのオークション数。
これまでのところ良好ですが、推測ごとに必要なFLOPSの数を知る必要がありますか?
[推測を試みます:]
推測ごとに1,000〜10,000 FLOPS(または同等の整数)。
10.51×10 ^ 15 ops / second / 1000〜10000 ops / guess)= 10.51×10 ^ 12〜10.51×10 ^ 11推測/秒。
3.4×10 ^ 38推測/クラック/10.51×10 ^ 12推測/秒= 3.2×10 ^ 25秒。
3.2×10 ^ 25秒/ 60秒/分/ 60分/時間/ 24時間/日/365。25日/年= 1.01×10 ^ 18年
1.01×10 ^ 18年/ 1×10 ^ 9 / 1×10 ^ 9 = 1.014〜100.140億年
したがって、ビットコインネットワーク上のコンピューターは、単一の最大の実験用コンピューターの2倍の速度です。
コメント
- 必要なFLOPは正確に0です。 FLOPは浮動小数点演算であり、EC演算には整数演算しか必要ないため、組み合わせてみてください。
- これまでに使用したコンピューターでこれができなかった’ t do integer ma th。したがって、韓国の京コンピュータでも実行できると思います。
- はい。ただし、整数演算の速度と浮動小数点演算の速度の比率は、ハードウェアによって大きく異なります。ビットコイン’のマイニングパワーを構成するハードウェアタイプの特定の分布を考えると、見積もりを出すことができますが、質問”への回答推測ごとに必要なFLOPSの数”、答えは確かに0です。
- キーの組み合わせの数= 2 ^ 256;必要な推測の平均数= 2 ^ 256/2 = 2 ^ 256 * 2 ^ -1 = 2 ^ 255、誰も気づいていませんか?まあ、それは必要な(10億の)10億年を変えることはありません。
答え
あります vanitygen
ユーティリティ( exploitagencyのバージョンを確認してくださいは、 samr7 “sバージョンの改良されたフォークです。これにより、特定のパターンの秘密鍵を見つけるのにかかる時間を見積もることができます(参照: vg_output_timing_console()
)。一部の特殊なケース(繰り返し文字など)は、他のケースよりも困難です。
バニティアドレスを見つけるのが難しいのは、その正確な構造(先頭の文字と数値)およびそのような出力に関連するアルゴリズムが与えられる可能性。これは、難易度が突然変化するいくつかのピボットで構成されます。 bitcoin wiki
これができる表です bitcoin wikiページにあります。このページには、特定のアドレスパターンの秘密鍵を解読するための推定時間が記載されています。
以下の表の例は、ますます複雑になるバニティが、そのバニティのみに一致するものを見つけるのに必要な難易度と平均時間にどのように影響するかを示しています。アドレス、毎秒100万キーを検索できるマシンの場合。
vanitygenを使用すると、特定のアドレスの秘密キーを見つけることができると思うかもしれません。実際には、これは不可能と見なされます。
実際の例
次の unspendable
ビットコインアドレス:
$ unspendable.py 23456789A123456789A12345678 mainnet: 123456789A123456789A12345678Yr8Dxi
次に、vanitygen
を使用して、マシンのパフォーマンスを計算できます(> 240 Kkey / s):
$ vanitygen -q -k -o/dev/null 1 [241.29 Kkey/s][total 2880199][Found 11618]
注:上記は MacBook Pro (2.3GHz Intel Core i7、16GB 1600MHz DDR3)でテストされています。
さらに、特定のパターンを探すときに推定時間を計算できます。たとえば、
-
26〜35から最初の5文字を見つける(数秒):
$ vanitygen -q -k -o/dev/null 12345 [698.17 Kkey/s][total 8192][Prob 0.2%][50% in 4.5s]
-
26〜35のうち最初の6文字(数分):
$ vanitygen -q -k -o/dev/null 123456 [701.39 Kkey/s][total 51712][Prob 0.0%][50% in 4.3min]
-
26〜35文字のうち7文字(数時間):
$ vanitygen -q -k -o/dev/null 1234567 [471.87 Kkey/s][total 8192][Prob 0.0%][50% in 6.3h]
-
8文字26〜35(数週間):
$ vanitygen -q -k -o/dev/null 12345678 [658.82 Kkey/s][total 2548480][Prob 0.0%][50% in 10.8d]
-
9文字ou 26-35のt(数年):
$ vanitygen -q -k -o/dev/null 123456789 [572.50 Kkey/s][total 1631744][Prob 0.0%][50% in 2.0y]
-
26-35(1世紀)のうち10文字:
$ vanitygen -q -k -o/dev/null 123456789A [630.48 Kkey/s][total 118528][Prob 0.0%][50% in 104.2y]
-
26〜35文字のうち11文字(数千年)
$ vanitygen -q -k -o/dev/null 123456789A1 [579.78 Kkey/s][total 17348352][Prob 0.0%][50% in 6571.6y]
-
26〜35文字のうち12文字(数百年):
vanitygen -q -k -o/dev/null 123456789A12 [751.61 Kkey/s][total 6720512][Prob 0.0%][50% in 294013.9y]
-
26〜35文字のうち13文字(数千年、数百万年):
$ vanitygen -q -k -o/dev/null 123456789A123 [666.93 Kkey/s][total 3886080][Prob 0.0%][50% in 1.921802e+07y]
-
26〜14文字35(10億年):
$ vanitygen -q -k -o/dev/null 123456789A1234 [817.44 Kkey/s][total 3994880][Prob 0.0%][50% in 9.094109e+08y]
-
26〜35文字のうち15文字(500億年):
$ vanitygen -q -k -o/dev/null 123456789A12345 [784.31 Kkey/s][total 4633856][Prob 0.0%][50% in 5.497420e+10y]
-
… 28文字(数十億年「ラッキー」
$ vanitygen -q -k -o/dev/null 123456789A123456789A12345678 [910.34 Kkey/s][total 2723072][Prob 0.0%][50% in 3.981113e+33y]
上記で生成されたアドレスは34バイトですが、最初の文字は単なるネットワーク識別子(ビットコインの場合は通常1
または3
)であり、最後の4バイトは単なるチェックサムです。アドレスの詳細については、この bitcoinwikiページを参照してください。
キー検索レート
確かにより優れたGPUまたは複数のCPUを使用することでキー検索率を上げることができますが(-t
を参照)、それでも推定値は膨大になる可能性があります。
たとえば、 bitcoin wikiページでのキー検索率の表は次のとおりです:
さまざまなGPUのユーザーからのレポートは次のとおりです:
- i7 8700K-〜3Mkey / c
- GTX 980TI(v1.42)-〜73Mh
- GTX 1050ti-〜23 Mkey / c
- GTX 1070-〜50Mhkey / s
- GTX 1080ti-〜108 Mkey / c
回答
唯一の現実的なリスクは量子コンピューティングです。
または、BTCソフトウェアアルゴリズムのバグまたは欠陥の発見。欠陥の種類によっては、クラックが数秒で発生する可能性があります。
コメント
- こんにちは、StackExchangeへようこそ。 ‘これを、自己完結型の回答ではなく、他の回答にコメントしたくないですか?
- @ThePiachu、ありがとう。ご存知かもしれませんが、新しいユーザーはコメントを投稿することはできず、回答するだけです。モデレーターはこれを修正することを歓迎します。 (私は自分の答えにのみコメントできます)
- ああ、あなたはモデレーターです。さっき気付いた。 🙂
回答
最速のコンピューターは1秒あたり150ペトラフロップスFPCで10ではありません…試してみてください時代に遅れないように(IBM PowerProcessorのNVLinkおよびVoltaHCPカード)…チームグリーンのWebサイトまたはUチューブの2015 Conferencevidsで詳細を読んだり見たりできます。一般的な回答はに基づいているようです。世界最速のコンピューターとしての10ペトラフロップ…1秒あたりのFPCがどれだけ速く変化するかをはっきりと確認できるはずです。エネルギー省は、すでに同じテクノロジーに基づいた300Pシステムを計画しています。
要点は、10Pに基づいてどれだけ安全であるかを教えてくれるビットコインの人々は、明らかに彼らが思っているほど多くを知らないため、基本的な計算が15〜30倍間違っているということです。ムーアの法則にも依存せず、最近の進歩と現在の制限は、NV Linkが可能な限り解決し、計算時間を大幅に改善したまったく異なる法則と関係があります。これは、今日の例です。 10億年の理論は、すでに15〜30倍間違っており、毎年、想定よりもはるかに高い割合で間違っています。30年以内に、現在のレベルのビットコインは簡単に解読されます。 40〜50,000ドルを費やすことができる人(今日のお金で)、または大学や企業のスーパーコンピューターをいくつでも使用できる人。
50年前のテクノロジーでデジタル的に安全なものを50年維持できると実際に信じている人後で率直に言ってあなたがpであるべきような人ではありませんまったく注意を払っていない…それはビットコインが今日危険であることを意味しますか?実際にはそうではありませんが、同じ人々が30年間でセキュリティを担当しているとしたら、今ここにいるのと同じ無知な人々です。
コメント
- NVLinkは、スーパーコンピューターのノード間でより高速でエネルギー効率の高い通信を可能にするテクノロジーです。’を構築する場合、どちらも実際には問題になりません。分散型キークラッカー。