セキュリティモデル | TZUR Wallet
設計による非カストディアル
TZURはすべてのプラットフォームで完全に非カストディアルです。お客様の秘密鍵が当社のサーバーに保存されることはなく、TZURにはお客様の資金へアクセス、凍結、移動する能力がありません。アカウントはなく、ウォレットデータのクラウドストレージもなく、保有資産のサーバー側記録もありません。お客様の鍵はお使いのデバイス上にのみ存在します。仮にTZURのサーバーが明日消滅しても、お客様のビットコインは完全にアクセス可能なままです。リカバリーフレーズを使って、BIP-39互換の任意のウォレットでウォレットを復元できます。これが最も純粋な形のセルフカストディです。鍵を保有する人がビットコインを所有します。
オープンなビットコイン標準
TZURは、オープンで監査済みのビットコイン標準の上に完全に構築されているため、ウォレットは可搬性があり、復元は互換性のある任意のソフトウェアで検証可能です。リカバリーフレーズはBIP-39に準拠します(デフォルトで12語、24語のオプションあり)。鍵はBIP-32で階層的に導出されるため、すべてのアドレスと鍵ペアは単一のマスターシードから生成され、アドレスは標準パスm/84'/0'/0'上でBIP-84 Native SegWit(bech32)を使用します。動作は完全に決定的であり、同じリカバリーフレーズはどのプラットフォームでも常に同じアドレスを生成します。TZURはオプションのBIP-39パスフレーズにも対応しています。iOSとWindowsは同じTZURCore暗号処理を共有し、Androidは同じ監査済みのRustコア上に構築されたBDKライブラリを使用します。
リカバリーフレーズはお客様の手元に
リカバリーフレーズは、オペレーティングシステムの暗号学的に安全な乱数生成器を使用してローカルに生成されます。iOSではSecRandomCopyBytes、AndroidではSecureRandom、WindowsではOSのCSPRNGです。これはお客様のウォレットの唯一の復元手段です。TZURはこれを保存も送信もせず、一切アクセスしません。ネットワーク経由で送信されることも、サーバーログに記録されることも、分析に含まれることもありません。ウォレット作成時に一度表示され、認証を経てバックアップ目的でアプリ内で再確認できます。リカバリーフレーズとデバイスの両方を失った場合、TZURを含め誰もお客様のビットコインを復元できません。紙に書き留め、安全なオフラインの場所に保管することを強くお勧めします。
デバイス上での鍵の保管
シードは、各オペレーティングシステムが提供する最も強力な保護を用いて保存時に暗号化され、平文で保存されることはありません。iPhoneでは、このデバイスのみの保護クラスでiOS Keychainに保持されます。デバイスのロック解除時のみアクセス可能で、エクスポート不可、バックアップおよびデバイス移行から除外されます(Secure Enclaveを搭載したデバイスでは、Keychainの暗号化鍵はそのコプロセッサによってハードウェアで保護されます)。Androidでは、シードはエクスポート不可のAndroid Keystore鍵を用いてAES-256-GCMで封印され、デバイスが対応している場合はStrongBoxに、それ以外の場合はTrusted Execution Environmentにフォールバックします。Windowsでは、シードファイルはPINから導出された鍵によりAES-256-GCMで暗号化され、DPAPIでWindowsアカウントに紐付けられ、オプションでエクスポート不可のTPM鍵により封印して、そのマシン外では復号できないようにできます。TZURが機密データを保護されていないストレージに保存することはありません。
認証とデバイスロック
鍵へのアクセスは、デバイス認証とアプリのPINによって保護されます。PINが保存されることはなく、保持されるのはPBKDF2-HMAC-SHA256のハッシュ(600,000回反復、ウォレットごとのランダムなソルト付き)のみで、定時間比較されます。iPhoneでは、AppleのLocalAuthenticationを通じてFace IDまたはTouch IDでロック解除し、登録情報が変更されると生体認証の証明は無効化されます。Androidでは、強い生体認証クラスのBiometricPromptを使用します。Windowsでは、TPMに裏付けられたWindows Helloの同意をPINの上に重ねて使用し、Hello認証システムが登録されていない場合はPINへ適切に切り替わります。自動ロックおよびスリープ時の再ロックに対応しています。
鍵素材は有害データとして扱う
秘密鍵の素材は、トランザクションへの署名に必要な瞬間のみメモリ上に存在します。鍵のバッファはすべてのプラットフォームで使用後ただちにゼロクリアされ、鍵がアプリケーションの状態にキャッシュされることも、一時ファイルに書き込まれることも、ログに記録されることも、セキュアストレージの外に永続化されることもありません。Androidでは、鍵管理モジュールにログ出力APIが現れるとビルド自体が失敗し、シードおよびPINの画面はスクリーンショット保護を使用します。Windowsでは、リカバリーフレーズの表示中は画面キャプチャがブロックされます。当社自身のコードに記載した正直な制限事項として、テキスト文字列として一時的に保持されるリカバリーフレーズは強制的に消去できません。言語ランタイムが文字列を不変にするためです。そのため、その存在期間を可能な限り短く保っています。
トランザクションはローカルで署名される
すべてのトランザクションの構築と署名はお客様のデバイス上で行われます。ウォレットは鍵素材を読み込み、署名し、ゼロクリアします。鍵が有効な間にネットワーク活動は一切なく、ブロードキャストされるのは完成した署名済みのトランザクションのみです。ウォッチオンリーウォレットおよびロックされたパスフレーズウォレットは一切署名できず、署名のたびに新たな認証が必要です。iOSとWindowsではこれは共有のTZURCore内で実行され、AndroidではBDK内で実行されます。
サーバーは決して信頼しない
TZURは、残高、履歴、手数料見積もりなどのブロックチェーンデータを得るために公開Electrumサーバーと通信しますが、それらを厳密に信頼できないデータプロバイダーとして扱います。接続はiOSとWindowsで証明書ピンニングを伴うTLSのみで、証明書がピンと一致しないサーバーはフォールバックなしで拒否されます。Androidでは、返されたチェーンデータは残高に反映される前にSPVおよびMerkle証明で検証されます。ウォレットの照会はお客様のアドレスではなくスクリプトハッシュを使用し、アップロードされるのはブロードキャスト用の完全に署名されたトランザクションのみです。お客様の鍵、リカバリーフレーズ、PINが送信されることはありません。複数の独立したサーバー間でのフェイルオーバーにより、単一の運営者がデータを差し控えることを防ぎます。
アプリの完全性アテステーション
オプションのBlockSightエクスプローラーのAPIを悪用から保護するため、TZURはプラットフォームアテステーション(iOSではApple App Attest、AndroidではGoogle Play Integrity)を使用して、リクエストが本物の改変されていないアプリから来ていることを証明します。これはお客様のウォレットから隔離されています。アテステーションが制御するのは公開のブロックチェーンエクスプローラーデータのみで、鍵素材や資金操作を制御することは決してありません。万一失敗しても影響を受けるのはエクスプローラーのみで、ウォレットは引き続き機能します。
プライバシーに配慮した分析
TZURウォレットはアプリケーションの改善のために匿名の使用分析データを収集する場合があります。この分析は機能の利用状況やユーザー体験の改善点を理解するのに役立ちます。分析の収集は完全にオプションであり、設定からいつでも無効にできます。有効な場合、データは集約・匿名化され、ウォレット、身元、ビットコイン活動と紐付けられることはありません。
分析には以下は含まれません:
- ウォレットアドレスまたは公開鍵
- アカウント残高またはUTXOデータ
- 取引金額、送信先、または履歴
- シードフレーズまたは鍵素材
- 秘密鍵または導出パス
- 個人の身元、氏名、または所在地
TZURウォレットには広告SDK、サードパーティのトラッキング技術、フィンガープリンティングライブラリは含まれていません。ユーザーデータの販売、共有、収益化は行いません。
責任ある開示
TZURウォレットにセキュリティ脆弱性を発見された場合は、contact@tzur.liveまでご報告ください。すべての報告を真摯に受け止め、速やかに対応いたします。脆弱性が対処される前に公開しないようお願いいたします。確認されたセキュリティ問題を可能な限り迅速に修正することをお約束し、ご希望に応じて有効な発見を報告された研究者にクレジットを付与いたします。
最終更新:2026年4月
