研究者は、JavaScriptSecureRandomに存在する脆弱性を発見しました() ランダムなビットコインアドレスとそれに対応する秘密鍵を生成するために使用される関数.
この欠陥により、ブラウザまたはJSベースのウォレットアプリケーションを介して生成された古いビットコインアドレスがブルートフォース攻撃に対して脆弱になります. 結果として, 攻撃者はユーザーのウォレットにアクセスし、暗号通貨の資金を盗むことができます.
JavaScript SecureRandom() ライブラリが安全にランダムではない
暗号化は非常に寛容なエラーです. あなたはそれを台無しにしないでください. あなたは自分自身を転がすのではありません—あなたはあなたが見つけることができる最も技術的に冷酷な暗号学者によって拷問テストされた戦いで強化されたアルゴリズムを必要とします, 言った 問題を報告した研究者.
その上に, 彼らは付け加えた, 「「人気のJavaScriptSecureRandom() ライブラリは安全にランダムではありません」.
この問題は、関数が想定どおりにランダムデータを生成しないことに起因しています。.
この関数は、暗号化キーを生成します。, それらの長さにもかかわらず, 未満 48 エントロピーのビット, これは、キーの出力に含まれるのは 48 シードにそれ以上のものがある場合でも、エントロピーのビット, 研究者は付け加えた.
SecureRandom() 次に、廃止されたRC4アルゴリズムを介して取得した数を実行します, 本来よりも予測可能であることが知られています, すなわち. エントロピーのビットが少ない. したがって, あなたの鍵はより予測可能です.
上記のすべては、SecureRandomを介して生成されたビットコインアドレスを意味します() 関数は、ユーザーの秘密鍵を明らかにする可能性のあるブルートフォース攻撃を受けやすい. 後者が発生した場合, ユーザーの資金が盗まれる可能性があります.
影響を受けるのは誰か?
どうやら, ビットコインの開始からまで、ブラウザ内のjsツールによって生成されたすべてのウォレット 2011 関連する実装に適用できる場合は、Math.randomの弱点の影響を受けます, Math.randomまたはRC4 (クロム) 間の弱点 2011 と 2013, と最後までChromeユーザーのためのRC4の弱点 2015, 研究者は明確にした.
言い換えると, これらのキーは、コンピューティングパワーのブルートフォース攻撃によって簡単に解読されます.
ユーザーがブラウザー内でJavaScriptを介して生成された古い暗号アドレスを使用する場合、この欠陥はユーザーに影響します. このような場合は, ユーザーはすぐに資金をこれらのウォレットから移動する必要があります.
以下が影響を受ける可能性があります:
– 2013年以前のBitAddress;
– 以前のbitcoinjs 2014;
– Githubで見つけた古いリポジトリを使用する現在のソフトウェア.
最近のJavaScriptで生成されたアドレスはおそらく影響を受けません, 研究者は言う. でも, JavaScriptはキーを生成するための最良の方法ではありません, したがって、ユーザーが資金を移行するのが最善です.