イーサリアムの秘密鍵は十分にランダムではなく、ハッカーは秘密鍵を解読してコインを盗みます
オーデイリーがプロデュース
著者 | 秦暁峰
編集者 | 陸暁明

(写真はcryptonomist)
によるとsecurity evaluatorsオーデイリーがプロデュース
編集者 | 陸暁明
画像の説明
(写真は
によると
ニュースとして、独立セキュリティ評価機関 (ISE) は最近、イーサリアム ウォレットの秘密キーのセキュリティに焦点を当てた、イーサコーミングと呼ばれる新しい研究を発表しました。
ISE は、イーサリアム ブロックチェーン上に現在 732 個の秘密鍵があり、ランダム性が低いために盗まれる危険があることを発見しました。さらに、昨年以来、「Blockchainbandit」と呼ばれるハッカーグループが、セキュリティの低い秘密鍵を使った窃盗活動を行っており、その額は37,926ETH(当時の価値で5,400万ドル相当)に達しました。今日に至るまで、この組織は停止していません。
副題
0x47579DA2BEA463533DBFAD6FCF8E90876C2FE9760DC1162ACC4059EE37BDDB5C
秘密鍵のランダム性は高くありません
0x0000000000000000000000000000000000000000000000000000000037BDDB5C
イーサリアムの公開鍵とアドレスの生成は秘密鍵に依存し、秘密鍵を利用して公開鍵とアドレスを生成し、対応するアドレス上のイーサリアム(ETH)を消費することができます。
秘密キーは基本的に乱数、32 バイトの配列で、1 バイトは 8 ビット バイナリに相当し、バイナリには 0 または 1 の 2 つの値しかありません。したがって、秘密鍵の総数はほぼ 2^(8*32)=2^256 となり、秘密鍵を解読する確率は 1/2^256 となります。
ISEの研究者Adrian Bednarek氏は、理論上はまだ可能性はあるものの、秘密鍵を強制的に解読するのは実際には不可能だと述べた。 1秒間に100兆個の鍵を生成できるコンピューティングリソースを使ったとしても、数年程度かかりますし、実際にはそのようなコンピューティングリソースはまったくありません。
しかし、ISEは実験で、秘密鍵を生成する一部のウォレットソフトウェアコードのエラーにより、生成される秘密鍵はそれほどランダムではなく、コンピュータ暴力によって簡単に解読されてしまうことを発見しました(あらゆる可能性を列挙してください)。
コードの問題により、秘密キーの整合性は出力で 32 ビットに切り捨てられ、次のような結果になります。
コンピューターの場合、32 ビットの秘密キーを解読することは、256 ビットの秘密キーよりもはるかに簡単です。
ウォレットのエンコーディング エラーに加えて、メモリ参照の問題、メモリ破損、ランダム デバイス エラー、ランダム シードの再利用、オブジェクト難読化、スタック破損、入力難読化、エントロピー エラー、ヒープ破損、またはチェックされていないプリコンパイルされたエンコード エラーはすべて、秘密鍵が暗号化されない原因となる可能性があります。ランダムな場合、セキュリティが低下します。
ISEの研究者らは実験で、イーサリアムブロックチェーン上には現在732個の秘密鍵があり、そのランダム性が強くなく、漏洩のリスクがあることを発見したが、これらの秘密鍵は依然としてアクティブであり、チェーン上の49,060件のトランザクションに関連付けられている。
発見されたセキュリティの低い秘密キーをテストするために、ISE の研究者は 1 ドル相当の ETH をアドレスの 1 つに転送し、トークンは数秒後に転送されました。
ISEの追跡により、トークンは最終的に「Blockchainbandit」と呼ばれるハッカー組織のウォレットに流れたことが判明した。この組織は、2018 年 1 月以来、弱いセキュリティで秘密鍵を盗んでいます。ピーク時には、アドレスの残高は 37,926 ETH に達し、当時の価値は 5,400 万ドルに達しました。今日に至るまで、この組織は停止していません。
副題
イーサリアム自体は問題ない
秘密鍵に問題があるということは、イーサリアムブロックチェーン自体の技術に抜け穴があるということでしょうか?イーサリアム研究者のHu Jingyu氏は、現在出現している安全性の低い秘密鍵は主にウォレットの問題であり、イーサリアム自体とは何の関係もないとOdailyに語った。イーサリアムの中心開発者であるチェン・チャンウー氏も、イーサリアムのアルゴリズム自体には問題はないと考えている。
Chen Changwu 氏は、乱数に加えて、署名プロセスで使用される K 値も秘密キーのセキュリティに影響を与えると付け加えました。 「秘密の K 値は署名生成のプロセスで使用されます。現在、BTC と ETH はどちらも RFC6979 を使用してこの値を生成します。この K 値はランダムで一意である必要があります。ただし、暗号アルゴリズム プログラミングに慣れていないプログラマーもいます。 「これらの詳細は秘密鍵の漏洩につながります。」
レポートの最後で、ISE は開発者とユーザーに次のような提案も行いました。
開発者向け:
よく知られているライブラリまたはプラットフォーム固有のモジュールを使用して乱数を生成します。
暗号的に安全な擬似乱数生成器を使用します。
ソース コードと生成されたコンパイル済みコードを監査して、ランダムに生成されたキーが切り捨てられていないことを確認します。
複数のエントロピー ソースを使用します。
AMD/Intel* が提供する NIST 準拠のハードウェア乱数生成命令 (RDRAND/RDSEED) を利用します。
暗号化乱数生成に関する NIST/FIPS ガイダンスを確認してください。
NIST 統計テスト スイート (NIST SP 800-22) を確認して使用するArvind Krishna ウォレットを使用しているユーザーの場合:


