生成的データ インテリジェンス

Kraken Wallet がモバイル暗号通貨セキュリティの課題にどのように対処するか

日付:

私たちは、最も安全なモバイル暗号通貨ウォレットは、モバイル オペレーティング システムに固有の制約を克服するものであると信じています。たとえば、iOS では、Apple の CryptoKit は secp256k1 楕円曲線、ビットコイン、イーサリアム、その他多くのブロックチェーンの標準。

この制限により、開発者はキーの保管やトランザクションの署名のためにデバイスのセキュアな要素を利用することが制限されます。その結果、モバイル暗号ウォレットはインターネットに接続され、暗号アルゴリズムのソフトウェア実装を使用して安全な要素の外部でトランザクションに署名するため、ホットウォレットとして分類されます。

これは、秘密キーが、少なくとも署名中に、サンドボックス アプリ環境のメモリ内で公開される必要があることを意味します。そのため、安全な要素を使用してトランザクションに署名するウォレットよりも潜在的な脅威にさらされる可能性が高くなります。

Despite the inability to perform the signing on the secure elements directly, which would offer increased protection, we have committed to providing an open-source mobile crypto wallet that prioritizes security, transparency and user control.

当社のセキュリティ アーキテクチャは、次の目的に特化して構築されています。

  • 複数のブロックチェーンをサポート
  • セキュリティを強化する予測不可能性の尺度である高エントロピーの秘密キーを生成します。
  • 携帯電話のセキュリティ ハードウェアと OS のセキュリティ機能を活用して、実証済みの暗号化を活用してユーザーの秘密キーを安全に暗号化します
  • (復号化キーの OS キーチェーン保護に加えて) 追加レベルの暗号化を必要とする上級ユーザー向けに、ユーザー生成のパスワードを使用してセキュリティを強化します。
  • ハードウェア ウォレットや MPC クォーラム ベースのシステムなど、新しいキー管理タイプを将来組み込むための強固な基盤を作成します。

オープンソースの利点

基本的なセキュリティ原則の 1 つとして、 クラーケンウォレット 無料のオープンソース ソフトウェアです、以下で配布されています MITライセンス。新しいウォレットをゼロから構築することは、オープンソースと分散型エコシステムの育成を支援することが私たちにとって重要でした。

オープンソース コードがなければ、Kraken Wallet は透明性のない大量の信頼を必要とします。これにより、クライアントの保護が低下します。クライアントを自分で検証、変更、実行したくてもできません。 「信じるな、検証しろ!」これは単なる業界の格言ではなく、当社の指針の 1 つです。

当社のソフトウェアをオープンソース化することで、この製品に対して当初設定した 2 つの基本的な目標、つまり検証可能で監査可能な信頼の最小化が達成されます。

  • 検証可能性: このブログ投稿で示されているセキュリティの前提条件が正しいことを検証する機能。誰でもできる ソースコードを見てください このウォレットで何が行われていて、何が行われていないのかを具体的に理解するためです。 
  • 監査可能性: セキュリティ実装の出力が正しいことを検証し、正しくない場合はレポートする機能。私たちはリリース前に社内および社外のチームと協力してセキュリティ監査を複数回実施しました。今後は、誰でもコードを監査し、その結果に関するレポートを作成できるようになります。

鍵の生成と鍵のインポート

React Native は強力なツールですが、暗号化モジュールが組み込まれていません。これを回避するために、NodeJS の暗号モジュールの pure-js 実装 (crypto-browserify) を使用しました。 crypto.randomBytes() メソッド – キーの生成中に必要な実際のランダム バイトを生成する – は、 反応ネイティブのランダム値の取得 ポリフィル。

React-native-get-random-values は、ネイティブ コードを使用して、デバイスで利用可能な暗号的に安全な擬似乱数ジェネレーター (CSPRNG) を利用して乱数を生成します。事実上すべての最新のデバイスでは、この乱数ジェネレータは安全なハードウェア乱数ジェネレータによってサポートされています。

ウォレットの初期化中に、CSPRNG からエントロピーを取得し、確立された npm パッケージを使用してそれをニーモニック シードに変換します (BIP32, BIP39).

キーは BIP39 標準に基づいて変換、保存され、ユーザーに提示されます。BIP39 標準は、エコシステム内のほとんどのウォレットに相互運用性を備えた、バックアップが簡単なニーモニック方法を提供します。インポート機能は、エコシステム内で最高の相互運用性を提供する BIPXNUMX 互換シードのリカバリをサポートします。 

キー管理 

Kraken ウォレットは、シードとニーモニックという 2 つの秘密の値と、ウォレット アドレス、ウォレット名、トランザクションの説明などの複数の非秘密 (ただし非公開) 値を保持します。

秘密鍵マテリアル (シード/ニーモニック) は、キーチェーン (iOS の場合) とキーストア (Android の場合) に保存されます。公開キー素材と非機密データ (拡張公開キー、アドレス、説明) は、アプリケーションの暗号化されたデータベースに保存されます ( レルム).

データを保護するためのセキュリティ制御は複数あります。

  • アプリロック: キーチェーンまたはキーストアに保存される、ランダムに生成された 64 バイトの文字列。シークレットへのアクセスは、ユーザーの存在要件 (生体認証またはパスコード認証) によって保護されます。
  • パスワード : ユーザーが提供し、デバイス上に保持されません。代わりに、ユーザーはアプリケーションから要求されるたびにパスワードを手動で入力する必要があります。ウォレットは、キーチェーンまたはキーストアに保存されている 2 つのフラグ (is_storage_encrypted と is_seed_encrypted) を参照して、パスワードが必要かどうかを判断します。 ArgonXNUMX アルゴリズムが鍵導出関数として使用されます。
  • データベースの暗号化: データベース (レルム) は、非機密データを保存するために使用されます。データはランダムな 64 バイトのキーで暗号化されます。
  • ロックアウト機構: 間違ったパスワードを入力すると、その後のパスワードの試行が可能になるまでに遅延が発生します。このメカニズムは、ブルートフォースパスワード攻撃を効果的に阻止します。試行回数や遅延時間などのロックアウト パラメータに関する情報は、キーチェーンまたはキーストアに安全に保存されます。

シード、ニーモニック、データベース暗号化キーは常に暗号化された形式で保存されます。

  • 保護が有効になっていない場合: シード、ニーモニック、レルム暗号化キーは、ユーザーの存在によるアクセス制御なしでキーチェーンまたはキーストアに直接保存されます。
  • アプリロックがかかっている場合: ニーモニックとシードは、まずアプリ ロック シークレットで暗号化され、次にキーチェーンまたはキーストアに安全に保存されます。 Realm 暗号化キーは、キーチェーンまたはキーストアにも直接保存されます。
  • パスワード保護が有効な場合: ニーモニックとシードはパスワードで暗号化されますが、レルム暗号化キーは is_storage_encrypted が true に設定されている場合にのみパスワードで暗号化されます。
  • アプリロックとパスワード保護の両方が有効な場合: ニーモニックとシードは、パスワード (最初) とアプリ ロック (2 番目) の両方で暗号化されます。レルム暗号化キーは、is_storage_encrypted が true に設定されている場合にのみ、パスワードを使用して暗号化されます。

主な使用法

シード/ニーモニックはキーチェーンまたはキーストアに保存され、暗号化操作において重要な役割を果たします。新しいウォレットアドレスを生成する必要がある場合、またはトランザクションに署名する必要がある場合、秘密キーなどの必要な情報をこのシードから導出します。

ただし、これらの操作中に秘密キーをメモリにロードする必要があることに注意することが重要です。この必要性は、モバイル ウォレットについて前述した制約と、トランザクション署名のためのセキュア エレメントに直接アクセスできないことに起因しています。

  • トランザクション署名 (トークンの送信)
  • WalletConnect データ署名 (セッションリクエストの処理)
  • 新しいウォレットの追加
  • テストネットチェーンの有効化 (テストネットウォレットの追加)
  • ニーモニックの表示
  • ニーモニックの確認
  • アプリロックの有効化と無効化
  • パスワードの有効化と無効化

次の機能に対して追加の生体認証が実行されます。

  • アプリロックを有効にする
  • すべてのデータを消去する
  • ウォレット(アカウント)を削除する
  • パスワードの有効化または無効化 (アプリロックの取得に加えて)
  • アプリケーションを開く
  • アプリケーションをフォアグラウンドに移動する
  • 拡張公開キーの表示
  • 分散型アプリケーション (dApp) への接続

さらに、アプリケーションを開くときにパスワードが必要になる場合があります。キーチェーンとキーストアは常に、 反応ネイティブキーチェーン ラッパー:

  • ラッパーは、アイテムごとにキーチェーンまたはキーストアに新しいキーを生成します。
  • ラッパーは、キーチェーンとキーストアの正しい構成フラグを渡す責任があります。
  • ウォレットは、キーにアクセスするにはデバイスのロックを解除する必要があるように、常にラッパーにフラグを設定するように要求します。
  • ユーザープレゼンス (生体認証) チェックは時間ベースで構成されており、チェックは 5 秒間有効です。ユーザーの存在チェックはアクセスごとに実行されません

暗号化アルゴリズムはすべてのアイテムで同じです。

  • キーは、Argon2id を使用して、NFC で正規化されたシークレットから派生されます。
  • Argon2id のソルトはデバイスの一意の ID です
  • 暗号化モードはAES-GCMです
  • AES の初期化ベクトル (IV) は 16 ランダム バイトです
  • AES の認証タグの長さは 16 バイトである必要があります

トランザクションの署名

キーの保管、生体認証、およびパスワード保護に関する前述の対策に加えて、トランザクション署名は引き続き改善の重要な焦点領域です。最初のステップとして、この分野で次のようないくつかの注目すべき措置を実装しました。

トランザクションシミュレーション

外部 API サービス (例: フグ など)トランザクションがユーザーにもたらす可能性のある「重大度」のレベル(リスクスコア)を確認します。これは、悪意のあるトランザクション (またはメッセージ署名) の可能性を示すフルブロック画面から、トランザクションに署名または確認する前にユーザーが持つ必要があるさまざまなレベルの警戒の警告まで続きます。 

その他の対策は次のとおりです。

  • 間違ったアドレスに送信しないようにするためのアドレス検証
  • ユーザーがアドレス構成に関する特定の攻撃の対象にならないようにするために、アドレス全体が常に表示されます。
  • ユーザーが間違ったネットワークに送信しないことを確認するためのネットワーク検証と警告
  • ユーザーがトランザクションに対して過剰な支払いをしていないかどうかを確認するための料金健全性チェック

ネットワーキングのプライバシー

ユーザーのプライバシーと個人データをネットワーク リクエスト、特にサードパーティ サービスに漏洩しない方法で保護するために、当社はプロキシ リクエストへの API ゲートウェイを開発しました。このプロキシを使用すると、ユーザーのリクエストをサードパーティのサービスに渡さず、クライアントの IP が外部プロバイダーや公共プロバイダーに公開されなくなります。 

このバックエンド サービスは基本的に、パブリック ブロックチェーン データをクエリするための API です。ウォレットのセキュリティ アーキテクチャ内で、その目的は、この機能をすべてのブロックチェーンにわたる共通 API の背後にカプセル化して、Kraken ウォレットがデータ クエリのためにブロックチェーン固有の動作を実装する必要がないようにすることです。

このバックエンド サービスは、この共通 A​​PI を定義します。最終的にはリクエストを他のパーティにプロキシし、そこから実際のデータを取得します。ブロックチェーン自体にインデックスを付けたり、状態を維持したりしません。

セキュリティの前提条件

当社のセキュリティ アーキテクチャは、最適な保護を実現するために、いくつかの重要な前提に基づいて動作します。私たちは次のように推測します:

  • ユーザーのデバイスは root 化されておらず、OS も古くなく、攻撃者にデバイスのメモリへのアクセスを許可する可能性のある重大な脆弱性の影響を受けやすいわけではありません。
  • キーチェーンまたはキーストア パッケージは十分に強力な保護を提供します
  • モバイル OS はアプリのプロセス間に強固なサンドボックスを提供し、シードなどの機密データを含むメモリが適切に管理されるようにします。

追加機能

  • アプリは、ウォレットを実行するために必要な最小限のデータのみを保存するという原則に基づいて動作します。
  • クライアントではサードパーティの分析やクラッシュレポートのソフトウェア開発キット (SDK) は使用されません。
    • 第三者にデータを漏洩しないように努めているため、追加のデータ追跡機能を含めることは意味がありません。つまり、クライアントには分析ソフトウェアやクラッシュ レポート ソフトウェアが見つからないことになります。
  • (通常の AppStore/Play ストア更新フローの外で) 無線更新は許可されず、コードベースにも実装されません。
    • ユーザーは、オプトインの同意がなければ更新できない、コンパイルされたソフトウェアを期待できます。
  • トークンリストと評判システム
    • ユーザーが自分のトークンを管理できるようにするために、Kraken やその他のサードパーティが提供する資産に基づいたリストと評価システムを実装しました。
  • NFTスパム
    • 今後も改善を続ける予定の最初の取り組みは、スパムとスパム関連の攻撃の検出です。スパムはユーザーのフォルダに自動的にアーカイブされます。

外部セキュリティ監査

The security of our self-custody wallet was rigorously evaluated through an audit conducted by ビットトレイル, a well-regarded security auditing firm in the industry. This audit encompassed a detailed examination of our codebase and client architecture, aimed at identifying and addressing potential security vulnerabilities.

透明性を確保し、プラットフォームのセキュリティに関する洞察を提供するために、この監査の結果は一般に公開されます。このオープン アクセスにより、ユーザーおよび関係者は、Trail of Bits が実施したセキュリティ分析の結果を確認できます。このレポートは、当社が実施しているセキュリティ対策と、ユーザーのために安全な環境を維持するための当社の取り組みを理解する上で重要なリソースとして役立ちます。

セキュリティ、透明性、ユーザーコントロールを優先する

Kraken Wallet は、プラットフォーム固有の制約に直面しながらも、利便性と堅牢な保護の間で微妙なバランスを保っています。私たちのアプローチは常に、広く認知されている相互運用可能なウォレット構造から始めることでした。この強固な基盤は、暗号資産を自己保管するための進化し続ける最高レベルのセキュリティ ソリューションをユーザーに提供することを目的として、当社が革新し、新しい機能を追加するための基盤を整えます。

これらの資料は一般的な情報提供のみを目的としており、投資アドバイスや、暗号資産の購入、売却、ステーキング、保有、または特定の取引戦略への参加の推奨や勧誘ではありません。 Kraken は、利用可能にする特定の暗号資産の価格を増減させることはしませんし、今後も行いません。 一部の暗号商品および市場は規制されていないため、政府の補償や規制による保護制度によって保護されない場合があります。 暗号資産市場の予測不可能な性質により、資金の損失につながる可能性があります。 税金は、暗号資産の返品および/または値の増加に対して支払われる可能性があるため、課税上の立場について独立したアドバイスを求める必要があります。 地理的な制限が適用される場合があります。

スポット画像

最新のインテリジェンス

スポット画像

私たちとチャット

やあ! どんな御用でしょうか?