ゼファーネットのロゴ

ウォレットのセキュリティ: 「非カストディアル」の誤謬

日付:

よく引用される「not your keys, not your crypto」という表現は、純粋主義者の暗号鍵管理の哲学を伝えています。 このウォレット セキュリティ モデルでは、個人 (または「マルチシグ」を介したグループ) のみが自分の秘密鍵を直接かつ単独で制御できるため、暗号資産の真の所有権を持ちます。 この強硬なアプローチを順守する暗号ウォレットは「非管理」と呼ばれ、外部の当事者が鍵にアクセスできないことを意味します。

ただし、それほど速くはありません。 状況はそれほど単純ではありません。 注目を集めた「非カストディアル」ウォレットのハッキング – を含む スロープウォレットハック 8,000 月に XNUMX 以上のアカウントが侵害され、 トリニティウォレットハック 2 年に 2020 万ドル以上の IOTA トークンを失い、 パリティウォレットハック 攻撃者は 150,000 年に 2017 ETH を盗むことができました。 ハードウェアウォレットの脆弱性、およびその他の事件 - 保管用ウォレットと非保管用ウォレットの間の従来の区別を弱体化させます。 これらのケースの多くで、非管理のウォレットを使用していると信じていた被害者は、攻撃者が切望されたキーをハイジャックできることに気付きました。 矛盾ですよね?

実際、ストーリーはキャッチフレーズで捉えきれないほど複雑です。 非カストディアル ウォレットでは、ユーザーが自分の鍵を完全に制御できるわけではありません。 これは、ウォレットが通常 によって作成され、運営されています。 他人のソフトウェアまたはハードウェア. ユーザーは常に他の人、製品、およびコンピューター プログラムを信頼しています。 彼らは、ブロックチェーンコマンドラインインターフェース、ウォレットソフトウェアとデバイス、集中型プラットフォーム、 スマート コントラクト コード、分散型アプリケーション、およびさまざまなウォレット 間の接続統合。 各タッチポイントがリスクを追加します。 これらすべての連動部分の合計は、非保管財布の幻想を打ち砕きます。

監護権は、実際には、 更新不バイナリ. 一見非管理的であるように見えるものは、実際には多くの管理的要素を含んでいる可能性があり、人々はその信頼性を当然のことと見なすことがよくあります。 伝統的な二分法 - 拘留対非拘禁 - は誤りです。 

代わりに、財布をよりニュアンスに捉えた方が良いでしょう。 自問すべき重要な質問は、次のとおりです。どの程度の大きさの攻撃対象領域を受け入れることができるか、サード パーティへの信頼をなくそうとして、どれだけ多くの責任を引き受けることができますか? 一般に、ウォレット セキュリティの基盤であるキー管理は XNUMX つの領域に分けることができ、それぞれに固有の露出機会があります。 サブカテゴリは次のとおりです。

  1. 鍵の生成 (暗号鍵の作成)
  2. キーストレージ (キーを安静に固定)
  3. 主な使用法 (キーを機能させる)

この概要は、web3 ユーザーが、上記のルーブリックを使用して資産を保護する際の複雑さをよりよく理解できるようにすることを目的としています。 さらに、技術者がウォレット開発でよくある失敗点を特定して補強することを目指しています。 Docker、Anchorage、Facebook、および a16z crypto にわたって暗号およびセキュリティ システムを構築してきた長年の経験に基づいて作成されたこのガイドを適用することで、人々が対話、参加、またはweb3 技術の構築。

以下では、今日存在する仮想通貨ウォレットのセキュリティとカストディ プラットフォームの一般的な機能と落とし穴について説明します。 また、ユーザーの web3 エクスペリエンスの安全性を向上させるために、今後数か月または数年で最も注意を払い、開発する必要があると思われる領域についても説明します。

鍵生成ウォレットのセキュリティ

ウォレットのセキュリティに関する議論は、暗号化キーを作成するプロセスであるキー生成から始める必要があります。 ウォレットがカストディアルまたは非カストディアルと見なされるかどうかにかかわらず、キー生成ステップのセキュリティ プロパティは、その後のキーの安全性にとって最も重要です。 キーの生成時には、信頼できるコードを使用すること、コードを適切に実装すること、および出力を安全に処理することの XNUMX つの重要な点に留意する必要があります。

あなたが暗号の専門家でない場合、次のすべての要因が本によって行われていることを確認するのは難しい場合があります. 一部のウォレット プロバイダーが公式 Web サイトまたは Github リポジトリで公開している、信頼できる監査レポートにアクセスできるかどうかを確認してください。 その代わりに、 財布の背後に評判の良い会社があるかどうかを判断するために、独自の調査を行ってください。 情報がまばらな場合、ユーザーと開発者の重要な活動が評判の次の指標になる可能性があります。

これらのガイドラインに従って、リスクを軽減してください。 ウォレットが以下のチェックに失敗した場合は、逃げてください!

  • 独自の暗号を転がさないウォレットを使用する

暗号学者には、「独自の暗号を転がすな」という格言があります。 要点は、「車輪を再発明するな」という格言に似ています。 ホイールはそのままで問題ありませんが、ゼロから再構築しようとすると、より悪い製品になる可能性があります。 同じことが暗号にも当てはまります。正確に正しく理解するのは難しい科学です。 ウォレットを構成するコードは、うまく機能するという評判が必要です。 不十分に作成されたソフトウェアを選択する – または独自の代替手段を開発しようとする 新たに – 鍵の漏えいや秘密情報の漏えいなどの事故につながる可能性があります。 これは、最近悪用された脆弱性の背後にあったものです Profanity のバニティ アドレス ツール. 何よりもまず、問題のウォレットが監査済みで信頼できる鍵生成ライブラリとプロセスを使用していることを明確にする必要があります。

  • 二度測って何度も切る財布を使う

コードが評判の良い暗号化ライブラリを使用している場合でも、適切に統合する必要があります。 精査されたソフトウェアは通常、デフォルトで正しいパラメーターを設定しますが、実行にギャップが生じる可能性があります。 たとえば、エントロピーの強力なソース、または数学的ランダム性の投与は、生成されるキーを予測不可能にし、したがってより安全にするために必要です。 多くのマルチパーティ計算 (MPC) アルゴリズムなどの特定のキー生成プロセスでは、多くの個別のキー (またはシャード、キーのフラグメント) を生成および調整する必要があります。ウォレットは、アルゴリズム。 このアルゴリズムでは、資金のセキュリティを維持するためにウォレットが適切に統合する必要があるキーの更新だけでなく、複数回の計算も必要になる場合があります。

  • 秘密を守れる財布を使う

鍵生成プロセスの最終段階には、ソフトウェアの実際の操作と出力が含まれます。 キーが生成される場所と形式に注意してください。

理想的には、鍵は隔離されたハードウェアで生成され、情報は信頼できるアルゴリズムで暗号化されるべきです。 避けるべき弱いものの例は、今日のデータ暗号化標準 (DES) です。 壊れていると見なされる. 特にメモリ、ディスク上、または「スワップ」と呼ばれるこれら XNUMX つの場所の中間ゾーンにキーが平文のまま残っていると、重大なセキュリティ リスクが生じます。 一般に、キー マテリアルは生成されたハードウェアから離れるべきではなく、他のユーザーがアクセスできるネットワーク上に流出してはなりません。 (つまり、キー マテリアルが暗号化されていない限り、暗号化キーも保護する必要があります。)

今年の夏にハッキングされたウォレット「Slope」の鍵は、 生成後、プレーンテキストで外部サーバーにログインされました。 これは、コードの監査またはオープン ソース実装で表面化する可能性がある一種のセキュリティ違反です。 透明性に欠けるウォレット - クローズド ソース コードを特徴とし、第三者によるセキュリティ監査を一般に公開していない - は警告を発する必要があります。 

鍵保管ウォレットのセキュリティ

キーが生成された後、 それらはどこかに隠しておく必要があります - 決して平文ではなく、常に暗号化してください。 しかし、単に キーが保存されているデバイスを所有することは、必ずしもキーの所有権と制御と同じではありません。 デバイスのサプライ チェーン セキュリティ、デバイスの接続方法、デバイスが相互作用する他のコンポーネントなど、多くの要因を考慮する必要があります。 さらに、各ストレージ方法には、セキュリティ、アクセシビリティ、保守性、および使いやすさの間の独自のトレードオフがあります。

以下では、関連する認識されたリスクのレベルに基づいて、最も一般的なカテゴリを分類します。 

高リスク: 「ホット」ウォレット

この概念は、実際には温度とはあまり関係がありません。 鍵の保管オプションに関して言えば、ウォレットがインターネットに接続されている場合、そのウォレットは「ホット」と見なされます。 一方、ウォレットがオフラインで孤立している場合、そのウォレットは「コールド」と見なされます。 他のすべての条件が同じであれば、コールド ウォレットはホット ウォレットよりも安全ですが、アクセスや使用が難しくなります。 任意のネットワークに接続されているウォレットは、攻撃者がアクセスして脆弱性を発見して悪用する可能性が高くなるため、ハッキングの影響を受けやすくなります。

ホットウォレットにはいくつかの形式があります。

  • 接続されたソフトウェア: オンライン データベース、電話または Web サーバー アプリケーション メモリ、ブラウザ拡張機能

これらは最も危険なオプションです。 ここでは、ウォレット ソフトウェアは、保管用であろうとなかろうと、外部のインターネットに接続されている間、キーに直接アクセスできます。 キーは理想的には暗号化する必要があり、それらの暗号化に使用されるその他のキーのセットは、オペレーティング システムのキーチェーンやクラウドのキー管理システムなど、アクセス制御が厳しく制限された専用のキー管理システム (KMS) に格納する必要があります。

ソフトウェア ベースのホット ウォレットの場合、鍵の管理と承認を残りのソフトウェア コンポーネントから分離することが重要です。 ロギング、エラー管理、およびメモリ管理 (特にキーが適切に「ゼロ化」または消去されない可能性のあるヒープベース) で問題が発生する可能性があり、これらすべてが誤ってパスワード、暗号化キー、署名キー、またはその他の機密情報を漏洩する可能性があります。暗号素材。 その場合、侵入者は、接続されたアプリケーションや Web サーバー、サイド チャネル攻撃、または内部関係者の脅威を通じて、不正アクセスを取得する可能性があります。

サービス自体がどのようにラベル付けされていても、署名キーがオンライン システムのメモリ内で常に暗号化されていない場合、そのモデルはホット ソフトウェア ウォレットと見なされます。 (キーが後で安全なエンクレーブに保管されている場合でも。)

  • コネクテッド ハードウェア: 専用デバイス、モバイル セキュア エンクレーブ、オンライン ハードウェア セキュリティ モジュール (HSM)

一般に、接続されたハードウェアは接続されたソフトウェアよりもリスクが低いと考えられていますが、それでもコールド ストレージほど安全ではありません。 接続されたハードウェアでは、キーが生成され、専用のハードウェア デバイス内でのみ有効になります。 これらは、内部ネットワークまたはパブリック ネットワークのいずれかに接続できます。 このようなデバイスは、通常、鍵の生成、署名、保管のセキュリティなど、鍵の管理に関連する複数の責任を負います。

接続されたハードウェアにはいくつかの種類があります。 Trezor や Ledger デバイスなどのハードウェア ウォレットは、やや高度な暗号ユーザーが一般的に使用しています。 (これらのデバイスは、接続されたソフトウェアだけを使用するよりもはるかに安全であるため、より多くの人が使用する必要があります。)また、ハードウェア セキュリティ モジュール (HSM) もあり、機密データの処理など、従来のビジネス環境で一般的に使用されています。 、クレジット カードの支払いなど。

デバイスの安全性は、デバイスを製造および構成したサプライ チェーンの安全性にかかっています。 接続されたハードウェアを検討するときは、次のことを自問してください。デバイス (またはファームウェア) が、所有する前に改ざんされた可能性はどのくらいですか? このリスクを軽減するには、信頼できるベンダーからデバイスを直接購入することをお勧めします。 ソースから直接出荷してもらいます。 輸送中の改ざんを示す可能性のある裂け目、裂け目、シールの破れなど、パッケージが損傷していないように見えることを確認してください。 また、使用前にファームウェアのバージョンと構成を確認することをお勧めします。 これを行う手順はハードウェアによって異なりますが、すべてに手順が記載されています。

もちろん、ハードウェア ウォレットが後で盗まれたり、許可されていない第三者によってアクセスされる可能性は常にあります。 これらの脅威を考えると、ハードウェア ウォレットにも安全なアクセス制御レイヤーがあることを確認することが重要です。これは、すべてのトランザクションにやみくもに署名しないことを保証する保護手段です。 コントロールには、パスワード要件、トランザクションのすべてのステップで明示的な許可を求めるプロンプト、およびトランザクションが実際に行っていることを説明する平易な英語の要約を含めることができます。 さらに、ほとんどのハードウェア ウォレットは、「キー ラッピング」とも呼ばれる秘密鍵暗号化をサポートしています。 さらに良いことに、安全なウォレットでは、鍵を生の平文形式でエクスポートすることはできません。

これは、暗号資産を真に保護するために必要な安全レベルです。

リスクが少ない: 「コールド」ウォレット

発熱が少なく、リスクが低くなります。 コールド ウォレットは、他の条件がすべて同じであれば、ホット ウォレットよりも一般的に安全であると考えられていますが、一般的に使いやすさも劣ります。 コールド ウォレットは、一般に「エアギャップ」ウォレットと呼ばれます。つまり、内部またはパブリック ネットワークに接続されていません。

この場合、孤独は美徳です。 エアギャップには、厳密な物理的分離と承認手段の実装が含まれます。 これらの対策には、ファラデー ケージ (無線信号をブロックするシールド)、バイオメトリクス アクセス (指紋や虹彩スキャナーなど)、モーション センサー (不正使用の場合にアラームを作動させるため)、および SCIF、または機密区画情報施設 (特別なコンパートメント) の使用が含まれます。機密情報を処理するための領域)。

いくつかのコールド ウォレット オプションを詳しく見てみましょう。

  • Airgrapped ソフトウェア: オフライン サーバー アプリケーション

攻撃者はいつでもマシンを盗んだりオンラインにしたりすることができるため、コールド ウォレットは、オンラインになっても持ちこたえるセキュリティ システムで設計する必要があります。 キーはキー シャードに分割する必要があります。シャミールの秘密共有やマルチパーティ計算などの標準的な方法を使用して、断片を再結合して使用できるようにする必要があります。 HSM などの専用ハードウェアは、一般的により多くの制御を提供するため、接続されたソフトウェアよりも強くお勧めします。

  • エアグラップされたハードウェア: オフライン ハードウェア ウォレット、オフライン ハードウェア セキュリティ モジュール (HSM)

このソリューションは、最も安全であると考えられています。 前のカテゴリと同様に、ハードウェアが盗まれてオンラインになる可能性があると想定する必要があります。 そのため、前述のように、これらのシステムに適切に実装されたアクセス制御レイヤーを含めることが再び重要になります。 多くの HSM ベンダーは、キーへのアクセスのロックを解除する前に、物理スマートカードのクォーラムをまとめる必要があります。 デバイスに表示画面がない場合でも、ユーザーがトランザクションの詳細を確認するための何らかの方法を提供する必要があります。

コールド ウォレットまたはエアギャップ ウォレットは最も安全なカテゴリであるため、大企業が管理するほとんどの資金はこの方法で保管されます。 Coinbase、Gemini、Kraken などの主要な小売サービスや、Anchorage などの機関ユーザー向けのサービスは、そのようなサービスを提供しています。 これらのプレーヤーの多くは、万一、アクセスできなくなったり、マシンが破損、盗難、破壊されたりした場合に備えて、バックアップとリカバリの形で別の防御策を講じることを選択しています。

バックアップとリカバリ

署名キーは、暗号化後に必ずバックアップする必要があります。 暗号化された署名キーとキー ラッピング キーの両方に冗長性を持たせることが重要です。 署名キーをバックアップする方法は異なりますが、常にハードウェア ネイティブ ソリューションを優先する必要があります。

ハードウェア ウォレットの場合、バックアップには通常、秘密鍵が派生する 12 語のプレーンテキスト シード フレーズが含まれます。 このシード フレーズは、非デジタル形式 (紙や金属など) で、最も安全な方法 (自宅の物理的な金庫室、銀行の金庫室など) で保存する必要があります。 フレーズは、地理的に分散された部分に分割して、秘密全体が簡単に侵害されるのを防ぐことができます。 (人々は、闇の魔法使いが自分の魂を「バックアップ」するために効果的に使用する架空の分霊箱を参照して、このアプローチを説明することがあります ハリーポッター.)

多くの HSM は、バックアップとリカバリに関連するいくつかの課題をネイティブに処理します。 標準のものには、デフォルトでアクセス制御で暗号化されているキーをエクスポートできるメカニズムがあります。 アクセス制御が満たされている場合は、キーを他の HSM にインポートできます。 便利なことに、HSM のフリートは、スマートカードのクォーラムから派生した共通の暗号化キーを使用してプロビジョニングすることもできます。 このようにハードウェアをキー マテリアルから切り離すことで、単一障害点を回避できます。

最後に、人的要因に対処する必要があります。 復旧メカニズムは、アカウント管理業務に関与する個人が一時的または永久的に利用できなくなっても耐えることができる必要があります。 個人は、死亡またはその他の緊急事態が発生した場合に、近親者またはその他の信頼できる関係者がキーを回復する方法を確実に提供する必要があります。 一方、グループ運営では、ライフイベント、旅行、病気、または事故に関係なく合理的に運営できる定足数を定義する必要があります。

鍵使用ウォレットのセキュリティ

キーが生成されて保存されると、それらを使用してトランザクションを承認するデジタル署名を作成できます。 混在するソフトウェア コンポーネントとハードウェア コンポーネントが多いほど、リスクは大きくなります。 リスクを軽減するために、ウォレットは承認と認証に関する次のガイドラインに従う必要があります。

  • 信頼するが、検証する

ウォレットには認証が必要です。 つまり、ユーザーが本人であることを確認し、承認された関係者のみがウォレットのコンテンツにアクセスできることを確認する必要があります。 ここでの最も一般的な保護手段は、PIN コードまたはパスフレーズです。 いつものように、これらは十分に長く、複雑であり、多くの異なるタイプの文字を使用して、最大限の効果を発揮する必要があります. より高度な形式の認証には、生体認証または公開鍵暗号ベースの承認 (他の複数のセキュリティで保護されたデバイスからの暗号署名など) を含めることができます。

  • あなた自身の暗号を転がさないでください(再び!)

ウォレットは、確立された暗号化ライブラリを使用する必要があります。 いくつかの調査を行って、キー マテリアルの漏洩や秘密キーの完全な損失を回避するために、それらが監査されて安全であることを確認してください。 問題を複雑にしているのは、最近のケースのように、信頼できるライブラリでさえ安全でないインターフェースを持つ可能性があることです。 これらの Ed25519 ライブラリ。 気をつけて! 

  • ナンスの再利用

よく研究されている鍵の使用法の落とし穴は、特定の暗号化署名パラメーターの不注意による再利用です。 一部の署名方式では、 使節 つまり、「3 回だけ使用される番号」という意味で、システム内で 2010 回だけ使用されることを意図した任意の番号です。 楕円曲線デジタル署名アルゴリズム (ECDSA) は、そのような署名方式の XNUMX つです。 nonce が ECDSA で再利用されると、鍵の侵害につながる可能性があります。 他のさまざまなアルゴリズムは影響を受けないため、通常どおり、十分に確立された暗号化ライブラリが使用されていることを確認してください。 (特定の暗号化ライブラリは、トランザクション データをハッシュすることにより、一意のナンスを保証します。これには、アカウント ノンスなどの他の一意のデータが含まれます。) ソニー プレイステーション 3 のハッキング.

  • 目的ごとに XNUMX つのキー

もう XNUMX つのベスト プラクティスは、複数の目的でキーを再利用しないことです。 たとえば、暗号化と署名用に別々のキーを保持する必要があります。 これは、「の原則に従います。最小特権つまり、資産、情報、または操作へのアクセスは、システムが機能するために絶対に必要とする関係者またはコードのみに制限する必要があります。 「最小特権」の原則は、適切に実装された場合、成功した攻撃の爆発範囲を大幅に制限できます。 キーが異なれば、目的に応じて、バックアップとアクセス管理の要件も異なります。 web3 のコンテキストでは、資産とウォレットの間でキーとシード フレーズを分離することがベスト プラクティスであるため、XNUMX つのアカウントの侵害が他のアカウントに影響を与えることはありません。

まとめ

鍵の所有権の保管性または非保管性は、従来の考え方で信じられているほど白黒ではありません。 状況は、鍵の生成から保管、使用まで、鍵の管理に関連する多くの可動部分によって複雑になっています。 チェーンに沿ったハードウェアまたはソフトウェアのすべての部分は、非カストディアルと思われるウォレットオプションでさえ、カストディアルタイプの危険にさらすリスクをもたらします. 

将来的には、ウォレットを攻撃から保護し、上記のリスクを軽減するために、より多くの開発作業が行われることを期待しています。 改善点は次のとおりです。

  • モバイルおよびデスクトップ オペレーティング システム間で共有される、安全なオープンソース キー管理およびトランザクション署名ライブラリ
  • 共有オープンソース トランザクション承認フレームワーク

具体的には、共有およびオープンソースの開発が見られることを特に楽しみにしています。

  • さまざまなストレージ バックエンド (ディスク上の暗号化、安全なハードウェアなど) にわたってクラス最高のセキュリティを実装するためのキー生成ライブラリ。
  • モバイルおよびデスクトップ オペレーティング システム用のキー管理およびトランザクション署名ライブラリ
  • バイオメトリクス、PKI ベースの承認、承認回復などの強力な要素検証を実装するトランザクション承認フローのフレームワーク。

上記のリストは網羅的なものではありませんが、出発点としては適切です。 つまり、状況は「あなたの鍵ではなく、あなたの暗号ではない」というスローガンが示すよりも複雑です。 鍵の所有は、生成と保管から使用までの多くの相互作用する部分とフェーズを考えると、注意が必要な問題です。 

上記のいずれかに対処するプロジェクトに既に取り組んでいる場合、またはそれに興味がある場合は、ご連絡ください。 これらの面でのさらなる進展を期待しています。

***

編集者: ロバート・ハケット、@rhhackett

***

ここに示されている見解は、引用された個々の AH Capital Management, LLC (「a16z」) の見解であり、a16z またはその関連会社の見解ではありません。 ここに含まれる特定の情報は、a16z が管理するファンドのポートフォリオ企業を含む第三者の情報源から入手したものです。 a16z は、信頼できると思われる情報源から取得したものですが、そのような情報を独自に検証しておらず、情報の現在または永続的な正確性、または特定の状況に対するその適切性について表明するものではありません。 さらに、このコンテンツにはサードパーティの広告が含まれる場合があります。 a16z はそのような広告を確認しておらず、そこに含まれる広告コンテンツを推奨していません。 

このコンテンツは情報提供のみを目的として提供されており、法律、ビジネス、投資、または税務に関するアドバイスとして信頼されるべきではありません。 これらの問題については、ご自身のアドバイザーにご相談ください。 証券またはデジタル資産への言及は、説明のみを目的としたものであり、投資の推奨または投資顧問サービスの提供を構成するものではありません。 さらに、このコンテンツは、投資家または将来の投資家による使用を目的としたものではなく、a16zが管理するファンドへの投資を決定する際にいかなる状況においても信頼されない場合があります。 (a16zファンドへの投資の申し出は、私募覚書、サブスクリプション契約、およびそのようなファンドの他の関連文書によってのみ行われ、その全体を読む必要があります。)言及、参照、または記載されているのは、a16zが管理する車両へのすべての投資を代表するものではなく、投資が有益である、または将来行われる他の投資が同様の特性または結果をもたらすという保証はありません。 アンドリーセンホロウィッツが管理するファンドが行った投資のリスト(発行者がa16zに公開を許可していない投資、および公開されているデジタル資産への未発表の投資を除く)は、https://a16z.com/investmentsで入手できます。 /。

記載されているチャートおよびグラフは、情報提供のみを目的としており、投資を決定する際に信頼することはできません。 過去の実績は将来の結果を示すものではありません。 内容は、示された日付の時点でのみ話されています。 これらの資料に記載されている予測、推定、予測、目標、見通し、および/または意見は、予告なしに変更される場合があり、他の人が表明した意見と異なる場合があります。 その他の重要な情報については、https://a16z.com/disclosuresを参照してください。

スポット画像

最新のインテリジェンス

スポット画像