現在の暗号ハードウェアウォレット市場を見ると、これらのほとんどすべてが、主にXNUMXつの異なるイデオロギーによって推進されているXNUMXつの大きなカテゴリに分類されていることがわかります。
しかし、どちらの方法にも浮き沈みがあります。Trezorのような完全にオープンソースのシステムには通常、セキュリティ要素がありません。したがって、シークレットは通常、障害攻撃によって簡単に公開される汎用MCUに格納されます。
あるいは、元帳タイプのウォレットは、シークレットがセキュアエレメントに格納されているため、このような障害攻撃に耐えることができます。しかし、これらを使用すると、デバイスのファームウェアとソフトウェアの重要な部分は、通常、ピアレビューに利用できません。したがって、特定の信頼係数が導入されますが、これは多くの暗号化愛好家の間ではあまり人気がありません。
ただし、ファームウェアとソフトウェアを完全にオープンソースに保ちながらシークレットを保存するためのSEを提供することで、両方の長所を提供することで最高のように見えるハードウェアウォレットがXNUMXつあります。
CoinkiteのColdcardハードウェアウォレットについて話しています。
コールドカードの外観
Coldcardは、内部コンポーネントの改ざんをより視覚的に検出できるシンプルな半透明のデザインです。同社は、機器の安全性を確保し、製造コストと小売価格を低く抑えることに重点を置いています。
情報を表示するためのOLED画面、0〜9の数字を含む12キーのキーボード、OK(確認)ボタンとX(拒否)ボタンがあります。これらのボタンを使用して、コールドカードPINを入力し、ユーザーインターフェイスを参照し、トランザクションに署名することができます。
MicroSDカードスロット(詳細は後ほど)、3つのLEDインジケーター、電源と直接接続用のMicro-USBポートもあります。
Coldcardハードウェアの詳細については、を参照してください。公式文書。
コールドカードが違うのはなぜですか?
Coldcardは、現在市場に出回っている他の一般的なハードウェアウォレットとは大きく異なります。
セキュリティ要素。「隠すことによるセキュリティ」ではありません。
一般に、SEを備えたほとんどのハードウェアウォレットは、デュアルチップアーキテクチャを使用します。通常のデバイス機能用の汎用MCUと、シークレットの保存とトランザクションの署名用のバンクグレードのSEです。
ただし、銀行グレードのSEには通常、(部分的または完全に)クローズドソースファームウェアが付属しています。攻撃者がシステムを理解していない場合、システムを悪用することはできないという考え方です。したがって、このタイプのハードウェアは通常、「秘密のセキュリティ」を提供します。
Coldcardも同様のデュアルチップアーキテクチャを使用していますが、そのSEは、元帳タイプのハードウェアウォレットで一般的に見られるSEとは大きく異なります。
マイクロチップを使用していますATECC508A (Mk2)、ATECC608A (Mk3)キーマスターキーを保存します。マイクロコントローラーは、ハードウェアベースの安全なキーストレージを提供する暗号化コプロセッサーです。さらに重要なことに、クローズドソースコンポーネントがありません。
セキュアMCUはSHA-256ハッシュを実行でき、内部の真の乱数ジェネレーター(TRNG)を備えています。Coldcardは、これらの機能と慎重なプロトコル設計を組み合わせて、攻撃者がシークレットにアクセスするために特定のPINシーケンス(ウォレットのセットアッププロセスの一部として保存される)を知っている必要があることを強制します。
コールドカードPINの長さは4〜12桁で、プレフィックスと残りのPINの2つの部分に分けられます。各部分の長さは6〜XNUMX桁です。8(4 + 4)桁以上のPINを使用することをお勧めします。
プレフィックスPINを入力した後、ColdcardはBIP39語彙からXNUMXつの単語を生成します。この単語のペアは、各コールドカードデバイスとプレフィックスPINの組み合わせに固有であり、フィッシングの試みを識別するための手段として使用できます。
表示されたフィッシング対策ワードのペアが予想と一致しない場合は、間違ったプレフィックスPINを入力したか、フィッシングデバイスである可能性があります。
さらに、安全MCU制限PINの最大試行回数(増分時間遅延を強制するための繰り返しのPIN試行の場合)、このようなブルートフォース攻撃は、強力なPINコードでは実用的ではありません。
したがって、攻撃者が秘密を直接ブルートフォースすることにした場合、それは運が悪すぎます。SHA-256暗号化ハッシュはTRNGと連携して、強力な暗号化を保証します。サーチスペースは2 ^ 256になりました。これは、メインMCUのファームウェアが完全に交換された場合、またはSEチップがボードから取り外された場合でも正しいです。
したがって、ATECCX08Aチップは、「隠すことによるセキュリティ」ではなく、暗号化ハッシュ関数のセキュリティに依存しています。このようなSEを使用すると、Coinkiteは、ピアレビューと検証のためにすべてのファームウェアとソフトウェアをオープンソースに保つことができます。
完全な「エアギャップ」ソリューション
Coldcardは、コンピューターやモバイルデバイスに接続しなくても、オフラインで操作できます。BluetoothまたはWiFi接続をサポートしていません。コールドカードのすべての操作を効果的に実行するには、コールドカードを電源コンセントに挿入するだけです。USB経由でコンピューターを操作することもできます。
コールドカードにはMicroSDスロットがあり、エアギャップ間の媒体としてメモリカードを使用できます。拡張公開鍵を含むMicroSDカード上のElectrumやWasabiなど、サポートされているウォレットアプリケーション用のスケルトンウォレットを生成できます。拡張公開鍵を使用すると、対応する秘密鍵を知らなくても、新しい受信アドレスを生成できます。
Coldcardは、世界初のPSBTネイティブでもあります(「部分的に署名されたビットコイントランザクションフォーマット」-BIP 174)ハードウェアウォレット;これにより、MicroSDカードで直接トランザクションに署名し、Coldcardに接続しなくてもネットワーク上でブロードキャストできます。
さらに、ColdcardはMicroSDカードを使用して、ウォレットシードを暗号化されたファイルにバックアップしたり、デバイスファームウェアをアップグレードしたりすることができます。これらはすべて、コンピューターに直接接続する必要はありません。
注:エアギャップは安全性を高めますが、少し不便かもしれません。Coldcardは、エアギャップとUSB経由の直接接続をサポートすることにより、より安全か便利かを選択するオプションを提供します。
特別なソフトウェアは必要ありません
サードパーティのアプリケーションがサポートされている場合でも、ほとんどのハードウェアウォレットは通常、公式のサポートアプリケーションに依存して、ファームウェアの検証やアップグレード、拡張コインサポートなどのタスクを実行します。
Coldcardには、専用のコンパニオンアプリケーションはありません。ElectrumやWasabiなどのネイティブウォレットアプリケーションで動作するように設計されています。MicroSDサポート、LEDインジケーター、その他の機能を利用して、ファームウェアの更新や検証などのタスクをデバイスで直接処理できます。
Coldcardは、USB直接接続とエアギャップソリューションを介してElectrumとWasabiで使用されます。
同様に、ファームウェアの更新はから直接行うことができますコールドカードのウェブサイトダウンロード、そして、Electrum(USB経由)またはColdcard自体(MicroSDカード経由)を使用してデバイスにロードします。
注:現在のところ、Coldcardはビットコイン(メインとテストネット)とライトコイン(メインとテストネット)の暗号通貨のみをサポートしています。
Coldcardハードウェアウォレットの設定方法
デバイスのセキュリティを向上させるために、Coldcardのセットアッププロセスは他の一般的なハードウェアウォレットとは少し異なります。これは、Coldcardで新しいウォレットを設定するためのステップバイステップガイドです。
注:注文後、コールドカードは、バッグの底にバーコードと番号が記載された密封バッグに梱包する必要があります。損傷の兆候がないかバッグを確認し、もしあれば不適切場所をお願いしますに報告しますCoinkiteのサポート。
- マイクロUSBウォールチャージャーまたはバッテリーパックを使用して、コールドカードに電力を供給します。
- コールドカード画面の利用規約をお読みください。キー5(上)または8(下)を使用してメッセージを参照し、右下隅にあるOKキーを押して続行します。
- デバイスのシリアル番号を確認し、バッグに印刷されているシリアル番号と一致していることを確認します。
- コールドカードを不正使用から保護するために使用されるプレフィックスPINを入力します。4〜6桁を使用することをお勧めします。
- 画面に表示されるXNUMXつのフィッシング対策の単語に注意して覚えておいてください。使用する特定のプレフィックスPINに応じて、この単語ペアはコールドカードに固有です。
- 残りの優先PINを入力します。4〜6桁を使用することをお勧めします。
- PINを保存すると、BIP39シードから新しいウォレットを作成するか、既存のウォレットをインポートするためのメニューが表示されます。5キーと8キーを使用して上下に移動し、[OK]ボタンを押します。
- [既存のインポート]を使用すると、対応する12〜24語のシードを指定して、既存のウォレットを入力できます。
- または、[新しいウォレット]を選択すると、24個のシードワードのセットが次の画面に表示されます。スクロールして、各単語を記録します。このために、パッケージで提供されているウォレットバックアップカードを使用できます。最後に、[OK]を押してクイズに答え、すべての単語が正しく記録されていることを確認します。
クイズが正常に完了すると、ウォレットを使用できるようになります。
注:別のウォレットに切り替えてアセットを保存およびアクセスする場合は、BIP39パスワードを設定することを選択できます。
さまざまなウォレット機能の使用方法の詳細については、以下を確認してください。コールドカードのウェブサイト。
コールドカードのセキュリティとさまざまな攻撃ベクトル
Coldcardは、製品の安全性を確保するためにいくつかの対策を講じています。さまざまな攻撃ベクトルに対してどのように防御するかを分析してみましょう。
長距離攻撃
Coldcardは、SHA-256ハッシュとTRNGを使用してデータを暗号化するセキュアエレメントチップに秘密鍵を格納します。デバイスがインターネットに接続されたコンピューターに直接接続されている場合でも、SEは秘密が外部に公開されないようにすることができます。
すべての支出取引は、受取人の住所を示すOLEDディスプレイを読み取ることで確認でき、物理的なOKキーを押すことで確認できます。外部で利用できる唯一のデータは、トランザクションの開始に使用される署名付きメッセージです。
あなたが十分に妄想的であるならば、あなたはデバイスが常にオフラインであるエアギャップモードでコールドカードを使うことができます。この場合、Coldcardハードウェアウォレットに対してリモート攻撃を実行することはできません。
肉体攻撃
コールドカードウォレットに対するさまざまなタイプの物理的/中間者(MITM)攻撃について考えてみましょう。
サプライチェーン攻撃
すべてのColdcardウォレットは、工場出荷時に特別なシリアル番号バッグに梱包されています。この特別なバッグには、不正開封防止シールが付いているだけでなく、一意のシリアル番号もあります。デバイスのフラッシュメモリの安全な領域にも記録され、ウォレットのセットアッププロセス中に確認できます。
さらに、コールドカードの周囲に透明なプラスチックケースを使用することは、デバイス内部の物理的な改ざんの兆候を簡単に検出できるようにするための意図的な設計上の決定でした。さらに、プラスチック製のハウジングは溶接によって閉じられているため、このような物理的な改ざんに気付かずにハウジングを開いて再シールすることは困難です。
盗難
デバイスが盗まれた場合、ウォレットの秘密にアクセスすることは困難になります(「不可能」と読みます)。前述のように、シークレットはセキュアエレメントに格納されており、正しいPINシーケンスがわからない場合、シークレットをそこから抽出することはできません。
間違ったPINの試行の間に強制される制限時間により、特に強力なPINコードが使用されている場合、ブルートフォース攻撃を実行することは非現実的です。さらに、攻撃者がPINコードを入力せずに外部から秘密を強制的に解読しようとすると、検索スペースが巨大(2 ^ 256)であるため、SHA-256ハッシュ+ TRNGは強制的に実行することを非現実的にします。
注:コールドカードの後続の反復(MK3以降)では、所定の回数の連続した誤ったPINの試行により、デバイスとその機密性が恒久的に損傷(「破壊」)されます。
悪意あるメイド攻撃
コールドカードは、さまざまな悪意あるメイドの攻撃を防ぐためにさまざまな対策を講じています。
悪意のあるファームウェア攻撃-元帳STM32xF0DBABE
Ledger Nano Sは、深刻なブートローダーの問題に悩まされています(現在は修正されています)。ファームウェアの検証プロセスでは、特定のメモリ位置について特定の0進定数(00xFXNUMXDBABE)をチェックします。この問題は、セキュリティ研究者がファームウェアをカスタマイズするために簡単に悪用する可能性があります正常に読み込まれましたNano Sには、同時に特定のメモリ位置に0xF00DBABEを書き込みます。
Nano Sとは異なり、Coldcard Walletは、デバイスが起動するたびに各フラッシュメモリアドレスを確認します。SHA-256ハッシュは、SEに安全に保存されている値に基づいて計算および検証されます。結果は、赤(falseを示す)および緑(trueを示す)のライトでユーザーに表示されます。これらは、SE以外のシステムのどの部分からもアクセスできません。
ファームウェアのアップグレードを実行すると、新しいファームウェアのSHA-256ハッシュ値が変更されます。そのとき、新しい「あるべき」ハッシュ値もSEに書き込まれました。攻撃者がカスタム(悪意のある)ファームウェアをフラッシュしたい場合は、メインデバイスのPINを知っている必要があります。
ストームアタック-元帳ブルーRFリーク
別のデモ、セキュリティ研究者は、デバイス画面のさまざまな領域に登録されたタッチによって生成された無線周波数信号を追跡することにより、元帳ブルーのPINコードを判別できます。Coldcardのファームウェアにはそのような攻撃に対する必要な保護があるため、これを実行するのは困難です。
さらに、MK2バージョン以降、Coldcardはタッチキーの代わりに物理キーを使用して耐風性を強化しています。
グリッチアタック-TREZOROne Glitching
TREZORデバイスは、シークレット(暗号化された形式)がメインの汎用MCU自体に格納されているため、障害攻撃に対して脆弱です。これはColdcardには当てはまりません。すべてのシークレットは、ATECCX08ASEチップに保存されます。
前述のように、マスターPINコードが不明な場合、このSEからデータを抽出することはできません。また、失敗したPIN試行間の強制的なタイミング遅延やTRNGを使用したシークレットのSHA-256ハッシュなどのブルートフォース攻撃もあります。
最も重要なことは、Coldcardは、完全なPINを明らかにすることなく、MITM攻撃の可能性を簡単に検出できることです。プレフィックスPINを入力すると、デバイスに固有のXNUMXつのフィッシング対策ワードとプレフィックスPINの組み合わせが表示されます。単語が一致しない場合は、Coldcardハードウェアが改ざんされている可能性があります。
または、デバイスの電源がオンになっている場合、チェックサムの検証中に(マスターPINを知らずに)デバイスファームウェアの悪意のあるバージョンをフラッシュしようとする試みが識別されます(赤と緑のライト)。
「5ドルレンチ」の状況
強要されると、ハードウェアウォレットで採用されているすべてのセキュリティメカニズムが失敗する可能性があります。たとえば、銃で指されてデバイスのPINを明らかにしたり、ビットコインを攻撃者のウォレットに転送したりします。BIP39パスワードのサポート、強要PIN、BrickMe PINなどの機能により、この状況でコールドカードウォレットを救助または破壊することができます。
パスワード
BIP 39標準は、24ワードのシードに加えて、オプションのパスフレーズをサポートします。シードは、考えられるすべてのパスフレーズの新しいウォレットにアクセスできます。Coldcardウォレットは、ファームウェアバージョン2.0.0以降、最初のシードワードへのパスワードの追加をサポートしています。
PINを入力してColdcardにログインすると、デフォルトのパスワードは常に空白になります。パスワードを追加し、それに関連付けられている新しいウォレットにアクセスするには:
- プレフィックスと残りのPINを使用してColdcardにログインします。
- コールドカードメニューからパスフレーズを選択します。
- パスフレーズの説明画面で[OK]を押します。
- 適切なオプションを選択して、新しいパスワードを追加します。フレーズの編集(上下および左右に移動して文字を入力)、単語の追加(BIP39単語リストから単語を選択)、数字の追加(物理キーボードを使用) 。
これらのオプションはすべて組み合わせて使用できます。パスワードには、BIP39単語リストの単語、数字、特殊文字が含まれている場合があります。フレーズの長さは最大100文字です。
パスワードを再入力する必要がある場合、または24ワードのシードウォレットに戻りたい場合は、パスフレーズメニューにすべてをクリアするオプションもあります。
パスワードを選択した後、メニューから[適用]を選択して続行します。画面にXNUMX桁のウォレット指紋が表示されます。このフィンガープリントを使用して、特定のパスワードを入力してアクセスしたウォレットが、実際に開く予定のウォレットであるかどうかを確認できます。同じパスワードを入力するたびに、ウォレットのフィンガープリントは同じである必要があります。
財布を威嚇する
PINを明かすことを余儀なくされた場合、強要された状況が発生した場合に備えて、ウォレットを強要して逃げ道として使用する必要があります。実際のPINの代わりに強要PINを入力して、さまざまなウォレットにアクセスできます。
強要PINが入力されると、Coldcardは正常に動作し、ウォレットのロックを解除するため、通常、攻撃者は警告を受けません。ただし、Coldcardに精通している人は、違いがわかる場合があります。たとえば、強要ウォレットにはパスフレーズメニュー項目がありません。
BrickMeパスワード
Coldcardでは、BrickMe PINを設定して、Coldcardデバイスを効果的かつ永続的に破棄することもできます。BrickMe PINを使用すると、キーシークレットが元に戻せなくなり、ウォレットは基本的にレンガのように役に立たなくなります。」
強要PINとBrickMePINはどちらも、Coldcardウォレットの設定メニュー(PINコードの変更オプション)から設定できます。
報酬:最も安全な方法でColdcardを設定します
これらのヒントは、Coldcardウォレットを最大限のセキュリティでセットアップするのに役立ちます。
コンピューターなしで電源を入れます。コールドカードを壁のコンセントまたはバッテリーパックに差し込んで起動します。
強力な12桁のPIN:6桁のプレフィックスPINと残りの6つのPINを使用して強力なPINを作成します。次に、新しいウォレットを作成し、回復のためにシードを安全に記録します。
パスワード設定:次に、パスフレーズメニューに移動し、覚えているが推測しにくい強力なパスフレーズを設定します。パスフレーズを適用すると、特定のパスフレーズに関連付けられたウォレットにログインします。また、後で参照できるようにウォレットの指紋を書き留めておきます。
PSBT:次に、MicroSDカードを使用して、PSBTを介してアセットをパスワード関連のウォレットに保存または転送します。
常にオフライン:エアギャップモードでColdcardウォレットを引き続き使用します。
注:Coldcardには、特に強迫的な状況に対応する強要ウォレットがありますが、Coldcardに精通している攻撃者は実際のウォレットと強要ウォレットの違いを簡単に検出できるため、この機能の使用はお勧めしません。代わりに、パスワードなしでメインウォレットに資金をロードすることをお勧めします(失ってもかまいません)。これは、強要された場合にアクセスできます。
追加のヒント:新しいColdcardMK3には、PINの試行が13回連続して失敗した後、デバイスを自動的に「ブリック」する機能があります。ただし、以前のバージョンのデバイスを使用している場合は、プライマリPINと同じ桁数で、値を小さくしてBrickMePINを設定できます。このように、ブルートフォースでPINコードを解読すると、攻撃者はデバイスのロックを解除する前にデバイスをブリックする可能性があります。
コールドカードを取得する必要があります
現在、Coldcardは複数の通貨をサポートしていません。外出先でビットコインを送信するのには適していません。それにもかかわらず、Coldcardは長期的なビットコイン「ホドラー」にとって完璧なソリューションかもしれません。
このデバイスは主にセキュリティと費用対効果に重点を置いており、オープンソースのイデオロギーを損なうことなく、ビットコインを最も安全な方法(エアギャップ、安全な要素)で保管したい人に最適です。