ソフトウェアウォレットのセキュリティモデルについて | 元帳

ソフトウェアウォレットのセキュリティモデルについて | 元帳

ソースノード: 2671485

一般的なウォレットには、ソフトウェア ウォレットとハードウェア ウォレットの XNUMX 種類があります。 これらは同じ機能を果たしますが、方法が異なります。 ソフトウェアウォレットは使用が簡単であると考えられており、トランザクションの作成、検証、署名には単一のプログラムで十分です。 ソフトウェアウォレットを使用すると、ソフトウェア上でトランザクションを作成し、ハードウェアデバイス上でそれを確認する必要がありません。

2週間前に、 禁じられた物語 世界中の数千人に対する標的型攻撃を明らかにした。 この攻撃は、Android および iOS の脆弱性を悪用し、NSO グループが開発したスパイウェアである Pegasus をインストールしました。 このマルウェアは、デバイスのアクティビティ全体を監視し、SMS、WhatsApp、Signal での会話、電話などの個人情報を抜き出すことができます。この記事では、このような条件下で、このようなマルウェアがどのようにしてすべての情報を抜き出すことができるのかについて説明します。ソフトウェア ウォレットの秘密、およびセキュリティの観点から見た携帯電話とデスクトップ コンピュータのソフトウェア ウォレットの違いについて説明します。

この記事はあまり技術的な内容ではないことを目的としています。 比較的簡単にするために、基本的な機能のみについて説明します。

秘密を守る

暗号ウォレットには何が保存されていますか?

ウォレットには実際にはユーザーの暗号通貨は保存されません。ウォレットには、暗号通貨へのアクセスと暗号通貨の使用を可能にする秘密鍵、特に秘密鍵のみが保存されます。 これらの秘密キーのほとんどは、ブロックチェーンに応じて異なる曲線上の ECC (楕円曲線暗号) 秘密キーです。 最も一般的な曲線は、secp256k1 (ビットコイン、イーサリアムなど)、Ed25519 (モネロ)、または BLS12-381 (イーサリアム 2) です。

これらのキーはトランザクションに署名するために使用され、より一般的にはブロックチェーン資産と対話するために使用されます。

これらのキーの保管場所は、ウォレットのタイプ (確定的かどうか) によって異なります。 階層的決定論的 (HD) ウォレットを使用すると、シードと呼ばれる単一のマスター シークレットからキーのツリーを作成できます (cf BIP44)。 このシードは、多くの場合、ユーザーがランダムに生成または選択した 12、18、または 24 単語のニーモニック シーケンスから派生します (cf.BIP39)。 これらのニーモニックを使用すると、保存するキーの数を制限できます。キーはいつでもシードから再計算できます。 HD ウォレットには、このニーモニックまたはシードのみが保存されます。

非決定的ウォレットは使用するたびに新しいキーを生成し、すべてのキーを保存する必要があります。 非決定性ウォレットは、バックアップに互換性がないため、別のウォレットに簡単に移行できません。

ウォレットの主なセキュリティ機能は、これらのシークレットを適切に生成、保存、使用することで構成されます。 さまざまな種類の脅威に対して、さまざまなレベルのセキュリティがあります。

  • 「邪悪なメイド」攻撃に対する保護: ウォレットに一時的にアクセスできる攻撃者は、ウォレット内にバックドアを追加して、PIN や秘密を保護するパスワードを盗むことができてはなりません。
  • 安全な暗号素材: ウォレットによって生成されるキーとノンスは決して予測可能であってはなりません。 さらに、ある時点で生成された秘密 (シードを除く) の知識によって、将来生成される秘密を予測することはできません。
  • 静止時の保護: 攻撃者がソフトウェア ウォレットの永続データを取得した場合、キーを抽出できてはなりません。
  • 秘密使用時の保護: ウォレットのロックが解除されている場合、攻撃者やマルウェアがキーにアクセスできないようにする必要があります。
ハードウェア財布

ハードウェア ウォレットのセキュリティ モデルは、これらのセキュリティ脅威を回避することを目的としています。 ハードウェア ウォレットは設計上マルウェアから保護します。 これらは、独自にトランザクションに署名する独立したデバイスです。 暗号化マテリアルは常にデバイス内に留まり、通信先のソフトウェア アプリケーションに送信されることはありません。 通信インターフェイスは常にシンプルなので、攻撃対象領域が大幅に減少します。 USB、Micro SD、カメラ + 画面 (QR コード経由)、または Bluetooth Low Energy を使用できます。

さらに、ハードウェア ウォレットはデバイスに画面を直接埋め込み、ユーザーが秘密鍵を操作するときに実行しようとしているアクションを確認できるようにします。 デバイス上のこれらの手動チェックは、コンピューター/モバイル上のマルウェアに対する非常に効果的な対策となります。 コンピューター/モバイルデバイス上のマルウェアがシークレット(シードまたは秘密キー)にアクセスしたり、ユーザーが取引を実行しているときにアドレスや金額を交換/変更したりする可能性がありますが、ハードウェアウォレットではこれは不可能です。

ハードウェア ウォレットは、「邪悪なメイド」攻撃や物理的アクセスを持つ攻撃者から保護するように設計されています。 ハードウェア ウォレットに応じて、セキュリティのレベルは異なりますが、いずれの場合も、これらの脅威から保護するように設計されています。 Ledger Nano 脅威モデルの詳細な説明は、こちらをご覧ください。 こちら.

ソフトウェア財布

通常のソフトウェア ウォレットは、通常の手段 (ソフトウェア ウォレットを実行するオペレーティング システムのセキュリティ メカニズム、場合によっては PIN やパスワードに基づくアクセス制御) で秘密を保護します。

以下では、デスクトップ (Windows、macOS、Linux) ウォレットとモバイル ウォレットを考慮します。 これらの主な違いは、主にオペレーティング システムが提供するセキュリティ メカニズムに依存します。

コンピュータ上のソフトウェアウォレット

Electrum、Exodus、Atomic、または Bitcoin コアなどのいくつかの人気のあるウォレットは、コンピューター上で実行されます。

コンピュータでは、ウォレット プロセスを他のプロセスから分離するためにオペレーティング システムが提供するセキュリティ メカニズムが制限されています。 ほとんどのアプリは同じユーザーによって実行され、アプリは他のアプリケーションのデータを読み取ることができます。

これらのソフトウェア ウォレットのセキュリティは主に、それらを保護するパスワードのセキュリティと、OS 上でマルウェアが実行されないという事実に依存しています (これを保証するのは非常に困難です。Pegasus に関する最近のニュースを参照してください)。

ほとんどの場合、シードはパスワードで保護された暗号化されたコンテナに保存されます。マルウェアまたはリモート管理ツールの場合、単純な攻撃は、この暗号化されたコンテナを取得して攻撃者に送信することで構成されます。 その後、パスワードは総当たり攻撃によって取得されるか、 キーロガー.

攻撃者が暗号化されたコンテナにアクセスすることしかできないシナリオ (攻撃者はウォレットを含む USB キーを見つけるか、コンピュータにマルウェアをインストールしますが、被害者はウォレット アプリケーションを開かない) では、攻撃者はパスワードを総当たり攻撃する必要があります。

ほとんどのパスワードは、 悪い。 Web 上には何十億ものパスワードが漏洩しており、多くの人が複数のサービスでパスワードを再利用する傾向があります。 既製のツールを使用すると、次のような暗号通貨ウォレットのパスワードを取得できます。 btcrecover or ハッシュキャット。 パスワードは複雑になる場合がありますが、各ウォレットの背後には実際のお金が存在するため、攻撃者はそのようなパスワードを破るためにリソースを投資することを躊躇しません。

パスワードを安全に保つ XNUMX つの基本的なセキュリティ原則は、パスワード マネージャーを使用することと、パスワードを別の目的で再利用しないことです。

ソフトウェアウォレットにとって最も懸念される脅威は、資金を流出させるために特別に開発された専用のマルウェアとスティーラーです。 KPOT や エレクトロラット、パスワードをブルートフォースする必要さえありません。パスワードを入力すると直接パスワードをキャプチャし、ウォレット設定データを復号化し、シードを抽出することができます。

これは、この記事のために開発された、Electrum ウォレットをターゲットとするおもちゃのアプリケーションです (ただし、別のソフトウェア ウォレットである可能性もあります)。 これは、被害者がユーザーのパスワードを入力すると、それを盗むマルウェアをシミュレートします。 次に、パスワードを使用してウォレット データが復号化され、シードが表示されます。

ご覧のとおり、パスワードが複雑であっても、アプリはメモリ内で直接パスワードを盗聴するため、パスワードを取得できます。

この例は最近の例とよく似ています .SCR マルウェア 暗号通貨を盗むために使用されるキャンペーン。 犯罪者はソーシャル エンジニアリング技術を使用して、ユーザーをだまして悪意のあるスクリーンセーバーをダウンロードさせました。 このスクリーンセーバーは実際に、ウォレットや仮想通貨取引所の情報を含む情報をコンピュータの被害者から盗んでいました。

コンピューター上で実行されるソフトウェア ウォレットについて結論を述べると、次のようになります。

  • ほとんどの場合、コンピュータ上で実行されるソフトウェア ウォレットは、パスワードを使用してユーザーのシードを保護します。
  • これらのウォレット ファイルのアクセス制御は、主にコンピュータのセキュリティに依存しています。 実際には、コンピュータをマルウェアから保護することは困難であり、暗号通貨が主流になるにつれて、ウォレットに対する攻撃はますます巧妙化するでしょう。
  • このようなソフトウェア ウォレットを使用してデジタル資産を保護することは得策ではありません。 特殊なマルウェアは、ウォレット ファイルを取得してオフラインでパスワードを見つけたり、キーロガーを通じてパスワードを取得したりすることができます。
スマートフォン上のソフトウェアウォレット

Android および iOS スマートフォンには、デスクトップ オペレーティング システムではあまり使用されていないセキュリティ機能がデフォルトで提供されています。

モバイル オペレーティング システムは、アプリとユーザーのデータを保護します。 特に、アプリ サンドボックスはすべてのアプリに必須です。 これは、たとえば Windows には当てはまりません。デフォルトでは、どのアプリケーションもユーザー データにアクセスできます。

したがって、悪意のあるアプリは、次の場合を除いて、別のアプリからデータを読み取ることはできません。

  • そのアプリに脆弱性が見つかりました。
  • あるいは、カーネルの脆弱性を悪用して、システムへの root アクセスを取得するなどして、権限を昇格させます。

残念ながら、そのような攻撃は存在します。 Android や iOS の古いバージョンや、サードパーティのコードの安全性が低いことが多い古いデバイスや安価なデバイスでは、これらのコードははるかに簡単です。

最新の OS では、これらの攻撃はより困難になりますが、リモートから実行できないわけではありません。 たとえば、イアン・ビールは次のことを示しました。 非常に印象的なゼロクリック攻撃 13.5 年 2020 月に iOS XNUMX に導入されました。Guang Gong は、 エクスプロイトチェーン 2020 年 XNUMX 月に、さまざまなクアルコム ベースの Android デバイスをリモートで root 化できるようになりました。そして XNUMX 週間前、 禁じられた物語 NSO グループがエクスプロイト チェーンを使用して、ゼロデイ脆弱性を利用して最近の iOS および Android デバイスをターゲットにしたことを明らかにしました。

それほど洗練されていない攻撃者は、ローカルの脆弱性を利用して、悪意のあるアプリケーションからウォレット データを抽出する可能性があります。 Zerodium などの脆弱性ブローカーは有料 最高$ 200,000 Android および iOS での root への権限昇格の場合は、リモート攻撃の場合は最大 1,500,000 ドルです。

私たちはいくつかの Android/iOS ウォレットを調査しました。 それらのセキュリティはアプリ自体に依存しますが、基盤となる OS のセキュリティ機能にも依存します。 もちろん、オペレーティング システムのセキュリティが破られると、アプリケーションはもはや安全ではなくなります。

種子を保護するには、次の XNUMX つの方法が一般的に使用されます。

  • パスワード保護 – ウォレットのデータは、ユーザーが入力したパスワードによって保護されます。 デザインはデスクトップウォレットと同じです。 上で説明した理由により、悪意のあるアプリからアプリ データを取得することは技術的により難しいため、実際には、データを抽出するのはコンピュータからよりも困難です。 ただし、データが盗まれた後でパスワードを取得するのは実際には簡単です。携帯電話で複雑なパスワードを入力するのは面倒なので、ユーザーは簡単なパスワードを選択する傾向があります。 さらに、モバイル デバイス上のキー導出メカニズム (パスワードからキーを作成するために使用される) は、パフォーマンス上の理由から軽量であることが多いため、通常は破るのが簡単です。
  • コイノミ および Metamask はそのようなウォレットの例です。

次のビデオでは、この記事のために開発された別のおもちゃアプリを紹介します。 これは、偽のビットコイン ティッカー ウィジェットを装ったマルウェアです。 マルウェアは、パッチが適用されていないデバイスの既知の脆弱性を悪用して、デバイス上でルート アクセスを取得し、暗号化されたシードをリモート サーバーに流出させます。 次に、サーバーはパスワードを総当たり攻撃してシードを復号化します。

このメソッドはウォレットに固有のものではありません。 これは、パスワードで保護されたウォレットに(多かれ少なかれ)簡単に適合させることができます。 以下は、Coinbase Wallet を使用した同じ例です。

[埋め込まれたコンテンツ]

  • Android キーストア (または iOS キーチェーン) に基づくセキュリティ – この場合、ウォレットのデータは Android キーストア (iOS キーチェーン) に保存されている暗号化キーを使用して暗号化されます。 これらのサービスは当初、暗号化キーを安全に保存するように設計されており、多くのアプリはそれらを使用して、すべての機密ユーザー データを暗号化するキーを生成します。キーストアを使用するアプリケーションは、次のメカニズムを実装します。
    • アプリはキーストアに、指定された識別子の暗号化キーを生成するように要求します。 キーストアはキーを生成し、安全に保管します。
    • アプリが BLOB を暗号化または復号化する場合、キー識別子とともに BLOB をキーストアに送信します。
    • 最後に、キーストアはアプリがこのキーを使用する権限を実際に持っているかどうかを確認し、出力データをアプリに送り返します。

このモデルでは、アプリはキーの値を知ることはできませんが、それを使用することはできます。 追加のアクセス制御をキーに関連付けることもできます。たとえば、キーへのアクセスをユーザー認証に条件付けることができます (PIN またはロック解除パターンのリクエスト).

このメカニズムは、パスワード ベースの保護と比較して、追加のセキュリティを提供します。 実際、最近の携帯電話では、キーストアは信頼できる実行環境 (TEE)、または場合によってはセキュア エレメントによってサポートされています。

つまり、root 権限を持つ攻撃者はキーストアから暗号化キーを抽出できなくなります。 それにもかかわらず、キーストアを復号化のオラクルとして使用し、必要なデータを暗号化または復号化することができます。

キーストアは暗号化だけでなく署名サービスも提供します。 では、ウォレットは暗号キーを保護して、暗号キーを抽出することを困難にすることができるでしょうか? 答えは残念ながらノーです。 ソフトウェアウォレットはトランザクションの署名にキーストアを使用しません秘密鍵は常にアプリによって平文で操作されます.

これは単純な理由です。KeyStore と KeyChain は汎用の署名および暗号化サービスを提供しますが、暗号通貨で使用される暗号化をサポートしていません。 たとえば、KeyStore は ECDSA 署名を実装しますが、FIPS 186-4 (P-224、P-256、P-384、および P-521) で定義された NIST 曲線にのみ実装されます。 ビットコインは別の曲線を使用します。 secp256k1、まだサポートされていません。

要約すると、キーストアとキーチェーンは保護に適したサービスです 秘密鍵と秘密鍵。 機密データを暗号化することで、ある程度のセキュリティを提供できます。一部のクラスの脆弱性 (任意のファイル読み取りなど) は、キーストア暗号化によって回避されます。 ただし、root 権限の昇格だけではハードウェア支援のキーストアからキー値を抽出できない場合は、機密データを復号化するだけで十分です。 アプリを操作できる攻撃者は、その秘密を取得できます。

モバイルウォレットについての結論は次のとおりです。

  • iOS/Android が提供するアプリ間の分離メカニズムは、コンピューター上で実行されるソフトウェア ウォレットと比較してセキュリティの基準を引き上げます。 攻撃者がアプリ データにアクセスするには、まず権限昇格が必要です。 これは古いデバイスでも可能です。 熟練した攻撃者 (Ian Beer は 6 か月で単独で実行しましたが、Ian Beer です) は、パッチを適用した最近のデバイスでも実行できます。
  • キー保護サービス (KeyStore、KeyChain) は、保管中の秘密を保護するためのセキュリティ層を追加できます。 それにもかかわらず、暗号通貨アプリケーションの暗号アルゴリズムをサポートしていないため、キーは抽出される可能性があります。
  • いずれの場合も、root アクセス権を持つ攻撃者は、使用時に保存されているシードを取得したり、ソフトウェア ウォレットをオラクルとして使用してユーザーの権限を利用してウォレットを空にしたりすることができます。

これは、Blockchain.com ウォレットをターゲットとするおもちゃのスパイウェアの最後の例です (ただし、これは他の多くのウォレットでも同様に簡単に実行できます)。 リモートにインストールされ、ウォレットを監視します。 ユーザーが指紋を使用して認証されると、暗号化キーのロックが解除され、ウォレットのデータが復号化されます。 スパイウェアは、アプリにこの暗号化キーを取得するよう設定します。 次に、キーとウォレットのデータをリモート サーバーに抽出します。

[埋め込まれたコンテンツ]

まとめ

結論として、ソフトウェアウォレットにはさまざまなレベルのセキュリティがあります。 ただし、彼らの脅威モデルは、特権昇格を伴う OS 上で実行されるマルウェアのケースをカバーしていません。 これは仕様によるものです。ウォレット アプリは、それが実行されるオペレーティング システムよりも安全であることはできません。

  • iOS/Android が提供するアプリ間の分離メカニズムは、コンピューター上で実行されるソフトウェア ウォレットと比較してセキュリティの基準を引き上げます。 攻撃者がアプリ データにアクセスするには、まず権限昇格が必要です。
  • キー保護サービス (KeyStore、KeyChain) は、保管中の秘密を保護するためのセキュリティ層を追加できます。 それにもかかわらず、暗号通貨アプリケーションの暗号アルゴリズムをサポートしていないため、キーをアプリから直接操作する必要があるため、提供される保護は限られています。
  • いずれの場合も、root アクセス権を持つ攻撃者は、使用時に保存されているシードを取得したり、ソフトウェア ウォレットをオラクルとして使用してウォレットを空にするユーザーの権利を利用したりすることができます。

タイムスタンプ:

より多くの 元帳