Re: コインの窃盗

Quote from: knightmb on July 25, 2010, 07:44:02 PM

Quote from: Red on July 25, 2010, 07:22:14 PM

サトシは私のシナリオでもハッシュ関数が破られることが前提だと指摘した。それは正しいが、それに成功した事例があることを知って驚いた。MD4やMD5は明らかな例だ。しかし、SHA-1やSHA-256のような同系統のアルゴリズムの衝突攻撃の研究も進んでいる。

Bitcoinのこの部分ではどのハッシュが使われているのか?

彼はまた、生成された鍵ペア以外のものを使えるかについて懐疑的だ。

この点については、単純な数学の問題だとかなり確信している。文書の「ブラインド署名」について学ぶまで、十分に注意を払っていなかった。

実は、文書を乱数で掛け算し、その混ぜ合わされたファイルに誰かに署名してもらい、最後にその署名から乱数を割って取り除くと、結果は元の文書に対する有効な署名のままだ。まさかそれがうまくいくとは!

とにかく、鍵ペアが素数のペアに基づいている場合にのみ安全だとすれば、数が素数でなくても数学自体は何も変わらない。ただ因数分解がはるかに容易になるだけだ。

暗号の専門家に私が馬鹿だと証明してもらえたら本望だ。同じ関連に依拠した以前のプロジェクトのいくつかの機能にも影響する。その時もこれには気づかなかった。

彼らがあまり言及しないのは、衝突生成にはまだ大量のCPU時間がかかるということだ。

公開鍵123456がハッシュABCDを生成し、 公開鍵654321もハッシュABCDを生成すると分かっても、 秘密鍵はまだ持っていない。

しかしあなたの言うことからすると、公開鍵654321さえあれば、公開鍵123456のふりをしてコインを使えるということか。

かつ 公開鍵654321もハッシュABCDを生成するとわかったとしても、 秘密鍵は依然としてわからない。

しかしあなたの言うことでは、公開鍵654321さえあれば、公開鍵123456のふりをしてコインを使えるということだ。 それでも公開鍵654321で署名する必要がある。秘密鍵を知っている公開鍵を使って衝突を見つける必要がある。

ビットコインアドレスのトランザクションを要求する際、ハッシュに一致する公開鍵を提示し、その鍵で署名する必要がある。

Redのポイントは、安全でない公開鍵を素早く大量に生成することは簡単で、衝突を見つけた後にそれを破って秘密鍵を見つけることができるということだ。

彼は、公開鍵が安全なものである必要がある場合、つまり素数を見つけるために相当な作業が必要なものである場合、ハッシュ関数単独よりも強度が増すと指摘している。ブルートフォースを試みる人は、各試行ごとに鍵を生成するのに時間をかける必要がある。