OneKey TransferはOneKeyアプリ内の機能です。この機能はソフトウェアウォレットの秘密鍵をデバイス間で安全に移動します。このガイドはデータを保護する複数のセキュリティ層について説明します。
ウォレットに関する注記: 現在、この機能はソフトウェアウォレットのみを対象としています。ハードウェアウォレットのサポートはより複雑で、将来のバージョンで追加される予定です。
基本原則
当社のセキュリティは3つの主要な約束に基づいています:
オープンソースで信頼できる
アプリとサーバーのコードは公開されています。誰でも確認して、当社のセキュリティ主張を検証できます。
エンドツーエンド暗号化(E2EE)
データは送信元のデバイスで暗号化され、宛先のデバイスでのみ復号されます。途中の誰も、OneKeyですら、それを読むことはできません。
サーバーのゼロ知識
当社のサーバーはデバイス間を接続するトラフィックコントローラーとしてのみ機能します。転送されるデータにアクセスしたり、その内容を知ったりすることはありません。
暗号化キーの構成方法
データは複数の独立した要素から作られたキーで保護されます。攻撃者が暗号を破ろうとするには、これらすべての要素を異なる場所から同時に奪う必要があります。
1. 動的共有キー(ECDHE)
概要: セッション開始時に、2台のデバイス間で直接作成される一時的な使い捨ての共有キーです。
要点: このキーはサーバーに送信されたりサーバーによって参照されたりすることはありません。ペアリングコードが傍受された場合(例: 画面録画)でも接続を安全に保ちます。
2. ペアリングコード
最初の10文字: どのデバイスが接続を希望しているかを識別するためにサーバーへ送信されます。
最後の40文字: 最終的な暗号化キーの秘密要素として使用されます。この部分は決してサーバーに送信されません。
3. 追加の秘密の要素
端末側(ローカル)から: 端末のロックパスワード、転送用のランダム数、アプリインスタンスの一意のID、アプリに組み込まれたシークレット(ソルト)です。
クラウド(サーバー)から: セッション用にサーバーが生成する一時的な接続IDと別のランダム数です。
要するに、この複数ソースによるキー構成は非常に高いセキュリティ障壁を作ります。攻撃者がデータを復号する可能性を得るには、サーバーを同時に侵害して(データを乗っ取り、クラウド側のキー要素を入手し、さらに中間者攻撃でECDHEキーを改ざんし)かつ端末の画面を録画してアプリのペアリングコードや他のローカルキー要素を盗む必要があります。
防御と検証
攻撃を阻止し、ユーザーが制御できるようにするために、いくつかの能動的な対策を採用しています。
サーバー側の保護
ブルートフォース対策:
レート制限: 単一のデバイスは3秒に1回しかリクエストできず、連続攻撃を防ぎます。
試行回数制限: ペアリングコードは10回しか試行できません。10回失敗するとセッションは終了します。
ユーザーによる検証
ロック画面のパスワード確認
操作: 転送を承認するために、端末のパスワードを入力する必要があります。
重要な理由: ロック解除された端末を誰かが手に取っても秘密鍵を盗めないようにします。
6桁の物理的確認
操作: ペアリング後、両方のデバイスの画面に表示される6桁のコードが一致することを実際に確認する必要があります。
重要な理由: これにより中間者攻撃を阻止します。ハッカーは2台目のデバイスに表示されるコードを見ることができないため、転送を完了できません。
ワンタイム使用のペアリングコード
概要: ペアリングコードは一度の成功使用後に期限切れになります。
重要な理由: これは「先取り接続」の防御機能を備えています。もしハッカーがコードを盗んで先に接続した場合でも、あなたの正当な接続試行がハッカーを強制的に切断し、あなただけが進行できるようにします。
高度なオプション
オープンソースのコードにより、データ転送のセキュリティとプライバシーをさらに強化できます:
サーバーを自己ホストする: サーバーコードをご自身のサーバーにデプロイし、アプリの "Custom Server" オプションを選んで接続します。これによりデータを完全に制御できます。
LAN転送(近日対応): 将来のバージョンでは、OneKeyデスクトップアプリがローカルエリアネットワーク(LAN)リレーとして機能できるようになります。これによりデバイスは公開インターネットに触れることなくデータを転送でき、真の物理的隔離が実現します。