著者: リサ & アロ
編集者: リズ
今日のインターネット環境では、マルウェア、ウイルス、フィッシング攻撃などの脅威が絶え間なく発生しています。ウイルス対策ソフトウェア (AVG、Bitdefender、Kaspersky、Malwarebytes などの国際的に有名な製品) をインストールすると、悪意のあるプログラムを防ぎ、システムのセキュリティを向上させることができます。ただし、ウイルス対策ソフトウェアの役割は、基本的なセキュリティ保護を提供することです。リスクを軽減することはできますが、絶対的なセキュリティを保証することはできません。対決は動的なプロセスであり、ウイルス対策ソフトウェアをインストールすることはセキュリティを向上させるための最初のステップにすぎません。同時に、ウイルス対策ソフトウェア自体も誤検知を起こし、さらなるリスクをもたらす可能性があります。
最近、一部のユーザーから、ウイルス対策ソフトウェアを使用した後、一部のブラウザ拡張機能(特に暗号通貨ウォレット拡張機能)が誤ってマルウェアとして報告され、拡張機能のJavaScriptファイルが隔離または削除され、最終的に拡張機能ウォレットが破損して正常に使用できなくなったという報告がありました。
この状況は、Web3 ユーザーにとって特に深刻です。なぜなら、暗号ウォレット拡張機能は通常、秘密鍵を保存するため、適切に処理されない場合、ウォレット データが失われたり、資産を回復できなくなる可能性があるからです。したがって、誤検知によって隔離された拡張データを適切に回復する方法を理解することが重要です。
どのように処理しますか?
ウイルス対策ソフトウェアの誤検知によりブラウザ拡張機能が破損していることがわかった場合は、以下の手順に従って復元することをお勧めします。
1. ファイルを隔離から復元し、拡張機能をアンインストールしないでください
ソフトウェアまたは拡張機能が実行できない場合は、すぐにウイルス対策ソフトウェアの「隔離」または「履歴」をチェックして、誤検知ファイルを見つけてください。隔離されたファイルは削除しないでください。
- ファイルがまだ隔離されている場合は、「復元」を選択し、ファイルまたは拡張子を信頼できるリストに追加して、将来の誤検知を防止します。
- ファイルが削除されている場合は、自動バックアップがあるかどうかを確認するか、データ回復ツールを使用してファイルを取得してください。
- 重要: 拡張機能をアンインストールしないでください。拡張機能が破損した場合でも、暗号化された秘密鍵関連のファイルはローカルに保存されている可能性があり、回復は可能です。
2. ローカル拡張データをバックアップして検索する
拡張機能のデータは通常、ローカル ディスクに保存されます。拡張機能を開くことができない場合でも、関連するデータは復元のために見つけることができます (拡張機能 ID は MetaMask を例とします: nkbihfbeogaeaoehlefnkodbefgpgknn):
- Windows パス参照: C:\Users\USER_NAME\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\nkbihfbeogaeaoehlefnkodbefgpgknn
- Mac パス参照:
~/ライブラリ/アプリケーションサポート/Google/Chrome/デフォルト/ローカル拡張機能設定/nkbihfbeogaeaoehlefnkodbefgpgknn
Chrome が複数のアカウントで構成されている場合、パスのデフォルトがプロファイル 1/プロファイル 2 になる可能性があることに注意してください。特定のプロファイル ディレクトリを確認し、実際の状況に応じてパスを調整する必要があります。問題が発生した場合に回復を容易にするために、対象拡張機能の完全なディレクトリをできるだけ早くバックアップすることをお勧めします。
3. 大まかな回復方法:ローカルの拡張ディレクトリを上書きする
誤報によって拡張機能が破損した場合、最も直接的な方法は、バックアップした拡張機能データを、新しいコンピューターまたは新しいブラウザー環境のローカル パスに対応する拡張機能ディレクトリに直接上書きしてから、拡張機能を再度開くことです。
4. 高度な回復方法: 秘密鍵データを手動で復号化する
それでも拡張機能を開けない場合やデータが失われている場合は、秘密鍵データを手動で復号化して回復するという、より高度な回復方法を試すことができます。 MetaMask を例に挙げてみましょう。
- コンピュータ上でローカルに MetaMask 拡張機能 ID を検索し、次のディレクトリを見つけます: C:\Users\[User]\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\nkbihfbeogaeaoehlefnkodbefgpgknn
- このディレクトリには、暗号化された秘密鍵データを保存する ldb/log ファイルが含まれる場合があります。復号化には、MetaMask の公式 Vault 復号化ツール (https://metamask.github.io/vault-decryptor/) を使用できます。
- 復号化の手順: MetaMask Vault 復号化ツールを開く -> ldb/log ファイル内の暗号化されたコンテンツをコピーする -> 拡張された元のパスワードを使用して復号化する -> 秘密鍵を取得した後、ウォレットを再インポートします。
MetaMask 拡張機能で特定のページ (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/home.html など) をまだ開くことができる場合は、次のコードを実行して暗号化された秘密鍵データを取得してみてください。
chrome.storage.local.get('data', result => { var vault = result.data.KeyringController.vault; console.log(vault);});
次に、Vault データを MetaMask Vault 復号化ツールにコピーして復号化します。
5. カスタムリカバリツールの作成
上記の方法でウォレット データを回復できない場合は、ユーザーは独自のスクリプトを作成して、ローカル データベース ファイルから拡張ストレージ データを抽出し、復号化することができます。ここでは、PhantomKeyRetriever をテンプレートとして使用し、次のようにさまざまなウォレット回復ツールの基本原理と実装を記述します。
ウォレット プラグインは、多くの場合、機密データをローカル システム上のデータベースまたはファイルに保存します。ブラウザ拡張ウォレット (Phantom、MetaMask など) は、ブラウザが提供するストレージ API を使用して、暗号化されたデータをブラウザのローカル ストレージ領域 (通常は LevelDB や IndexedDB などのデータベース システム) に保存します。ウォレットの種類に関係なく、データは常に暗号化された形式で保存され、データがコピーされた場合でも正しいパスワードがなければアクセスできないという重要な原則があります。
ほとんどの暗号通貨ウォレットは、セキュリティを強化するために多層暗号化アーキテクチャを使用しています。まず、ユーザーのマスター パスワードを使用して中間キー (「暗号化キー」または「復号化キー」と呼ばれることが多い) を暗号化します。この中間キーは、実際の秘密キーまたはニーモニックを暗号化するために使用されます。この設計により、ウォレット アプリケーション コードが改ざんされた場合でも、攻撃者はユーザー パスワードさえ知っていれば秘密鍵を取得できるようになります。この多層設計により、ウォレット アプリケーションは、ユーザーがログインした後に中間キーのみを復号化することができ、操作ごとにマスター パスワードを再入力する必要がなくなります。
ウォレット回復ツールを作成するプロセスには通常、次のものが含まれます。
- 暗号化されたデータを検索して抽出します (LevelDB/IndexedDB からデータを読み取ります)。
- データ構造を分析し、暗号化された秘密鍵/ニーモニックを識別します。
- ユーザーはウォレットのパスワードを入力する必要があり、復号化キーは KDF (PBKDF2 や Scrypt など) を通じて計算されます。
- 中間キーを復号化し、次に秘密キー/ニーモニックを復号化します。
このプロセスには、ウォレットの暗号化方式とデータ保存形式に関する正確な知識が必要です。これは通常、ウォレットのオープンソース コードのリバース エンジニアリングまたは分析によって取得されます。
たとえば、PhantomKeyRetriever ツールを見てみましょう。これは、Chrome ブラウザ データから Phantom ウォレットのニーモニックまたは秘密鍵を抽出するために特別に設計されたスクリプトです。SlowMist は現在、このツールを GitHub (https://github.com/slowmist/PhantomKeyRetriever) でオープンソース化しています。その基本原理は次のとおりです。
- Chrome LevelDB データベースを読み取り、関連データを一時ディレクトリにコピーします。
- データベースを走査して、Phantom ウォレットに保存されている暗号化キーとウォレット シード情報を検索します。
- ユーザーが Phantom パスワードを入力すると、スクリプトは PBKDF2/Scrypt を使用して復号化キーを計算します。
- ウォレットの金庫データを復号化し、BIP39 ニーモニックまたは Base58 秘密鍵を抽出します。
この 2 層の復号化プロセスでは、スクリプトは PBKDF2 と Scrypt という 2 つのキー導出関数をサポートし、安全な復号化のために NaCl ライブラリの SecretBox を使用します。最後に、復号化されたデータの種類に応じて、スクリプトは BIP39 準拠のニーモニックを生成するか、Base58 でエンコードされた秘密鍵を抽出します。
拡張ウォレットをサポートする他のブラウザ (Edge や Firefox など) も同様の原則に従うため、ここでは詳しく説明しません。
どうすれば防げますか?
誤検知のリスクを減らすために、ユーザーは次のアクションを実行できます。
- 誤検知が発生した場合にすぐに復元できるように、重要なファイルとブラウザ拡張機能データを定期的にバックアップしてください。
- ウイルス対策ソフトウェアに信頼ルールを手動で追加します。重要なソフトウェアや拡張機能 (MetaMask など) については、誤検知を防ぐために信頼リストに手動で追加できます。
- ウイルス対策ソフトウェアによって潜在的なリスクとしてフラグが付けられる可能性を減らすために、ソフトウェアをダウンロードするときは公式チャネルを使用し、非公式バージョンや改変されたバージョンのアプリケーションをインストールしないようにしてください。
要約する
対立は常に動的に変化しており、セキュリティ戦略も常に調整する必要があります。ウイルス対策ソフトウェアをインストールすることは重要ですが、最終的にはユーザーが資産の最後の防衛線となります。誤検知に遭遇した場合、ユーザーは冷静に対処し、重要なファイルを直接削除することは避け、適切な回復方法を使用する必要があります。正しいセキュリティ知識を習得することによってのみ、データのセキュリティを真に確保することができます。