メインコンテンツにスキップ

OneKeyのキーレスウォレットの仕組み

昨日アップデートされました

Web3は急速に拡大しています: 新しいアプリケーション、プロトコル、機能が毎日登場しています。しかし、多くのユーザーにとって、参入障壁の本当の要因はオンチェーン機能の欠如ではなく、ウォレットキーを安全に保護し復元することの難しさです。

現在、業界標準は依然としてシードフレーズ(ニーモニック)です。しかし、このアプローチには現実的な課題があります。ユーザーはしばしばフレーズをスクリーンショットで撮り、意図せずクラウドアルバムに同期してしまいます。また、紙に書き留めても紛失したり損傷したりして、資産を永久に失うことにつながります。このような話はあまりにも頻繁に起こります。多くの場合、これらのリスクは技術的な障害からではなく、日々の習慣の怠慢から生じています。

近年、「Web2スタイル」のウォレットソリューションが増加しており、ユーザーが使い慣れたログイン方法を使用してウォレットの作成、バックアップ、復元を行えるようになっています。これらの目的は参入障壁を下げることですが、実装方法、特に真に分散化され、自己管理型のままであるかどうかという点で大きな違いがあります。

  • 集中型シャーディングのリスク: 一部のソリューションでは、プライベートキーを複数の「シェア」または「シャード」に分割します。分割自体は問題ではありません。重大なリスクは、単一の参加エンティティ(サービスプロバイダーのバックエンドなど)が復元しきい値に達するのに十分なシェアを保持している場合に発生します。その場合、技術的には完全なキーを再構築する能力を持つことになり、「自己管理」は単なる名目上の約束になってしまいます。

  • HSM依存のリスク: 他のソリューションは、ハードウェアセキュリティモジュール(HSM)内にプライベートキーを保存し、厳格なルールに従ってのみトランザクションに署名すると主張します。これは妥当に聞こえますが、ルール適用やポリシー実行が信頼境界(つまりHSMの外部)外で行われる場合、極端なシナリオではバイパスまたは改ざんされる可能性があり、ユーザーの意図を反映しない署名につながる可能性があります。

OneKeyキーレスウォレットが異なる点

OneKeyのキーレスウォレットは、「Google/Appleログイン + PIN」アプローチを採用しており、使いやすさと真の自己管理性を単一の設計に統合しています。

ログインと復元には使い慣れたアカウントシステムを使用しますが、基盤となるアーキテクチャは分散型キー管理および署名メカニズムを採用しています。これにより、OneKeyを含むいかなる単一の当事者も、完全なキーを再構築したり、一方的に送金を開始したりすることはできなくなります。

つまり、当社のサーバー、特定のコンポーネント、または単一の参加エンティティが侵害されたとしても、攻撃者が単にOneKeyに侵入して「あなたのウォレットを盗む」ことはできません。


OneKeyのソリューション

OneKeyのキーレスウォレットは、分散型キー管理メカニズムに基づいて構築されています。その目的は、シードフレーズを書き留め、保存し、持ち運ぶという高リスクの負担からユーザーを解放することです。代わりに、すでに知っている方法、つまりGoogle / Appleログイン + PINを使用してウォレットを作成および復元できます。

負担の軽減、自己管理の非侵害

従来のウォレットはシードフレーズ(通常12語または24語)に依存しており、ユーザーは安全に保管し、必要なときに手動で復元する必要があります。キーレスウォレットを使用すると、PINを覚えておくだけで資産を管理できます。ウォレットを復元する機能は分散型アーキテクチャに基づいて構築されており、完全な管理権限がいかなる単一のサービスプロバイダーにも渡されないことが保証されます。

二要素認証:アカウント + PIN

キーレスウォレットは2つの認証要素を利用します。

  1. Google / Appleアカウント

  2. PIN

これは、GoogleまたはAppleアカウントが侵害されたとしても、PINがなければ重要な操作を実行できないことを意味します。逆に、PINだけがあっても、関連付けられたアカウントにログインしない限り、ウォレットを復元またはアクセスすることはできません。両方の要素が不可欠であり、単一障害点の発生リスクを大幅に低減します。

検証後にのみシードフレーズが表示される

キーレスウォレットの設計では、完全なシードフレーズまたはプライベートキーが特定の場所に平文で長期間保存されることはありません。デバイス上でアカウントとPINの両方の検証に成功した場合にのみ、ウォレットはローカルで必要な復元およびアクティベーションプロセスを完了します。

バックアップと復元の仕組み:

  • 暗号化されたストレージ: シードフレーズに関連するデータは、可用性(例:クロスデバイス復元のため)を確保するためにサーバーに暗号化された形式で保存されます。

  • シャーディングメカニズム: 復号に必要な重要なマテリアルは分割され、複数のパーティまたはノードに分散されます。

したがって、デバイス上で検証を完了して復元をトリガーしない限り、OneKeyを含むいかなる単一のパーティも、それを実用的な平文キーに一方的に再構築することはできません。


技術的な詳細

このセクションでは、GoogleまたはAppleを使用して新しいキーレスウォレットを作成する際に、クライアント側(デバイス)とサーバー側の両方で何が起こるかを説明します。また、「バックアップ」「復元」プロセスがユーザーフレンドリーでありながら、いかなる単一のパーティもユーザーの完全なプライベートキーにアクセスできないことを保証する方法についても明確にします。

キーレスウォレットのバックアップ

オンボーディングプロセス中にキーレスウォレットを作成する際、次のことができます。

  • ホーム画面で「Googleで続行」を選択します。

  • または、「•••」ボタン → キーレスウォレットGoogleまたはAppleを選択します。

重要事項: キーレスウォレットと従来のシードフレーズウォレットは、2つの別個の独立したシステムです。現在、「既存のシードフレーズウォレット」からキーレスウォレットへの移行はサポートされていません。これらは並行して存在します。

ユーザーがGoogleまたはAppleアカウントを使用してウォレットを作成する際に発生する技術的なプロセスを順を追って説明します。

ステップ1 — シード暗号文の生成、暗号化、およびデバイスへの保存

  1. ローカル生成: デバイスは新しいシードフレーズをローカルで生成します(ウォレットのキーマテリアルのランダムソースとして機能します)。

  2. 対称鍵の作成: デバイスは同時に対称鍵を生成します。

  3. 暗号化: デバイスはこの対称鍵を使用してシードフレーズを暗号化し、シード暗号文を生成します。

  4. 安全な保存: シード暗号文のみが、クロスデバイス復元の可用性を確保するために、安全な保存のためにOneKeyバックエンドに送信されます。

重要なポイント:

  • ローカルのみの処理: 平文のシードフレーズ対称鍵の両方がデバイス上で排他的に生成および処理されます。これらがデバイスから直接送信されることはありません。

  • 使用できない暗号文: 暗号文自体は署名に使用できません。対称鍵がなければ、暗号文を復号して実用的なシードフレーズやキーマテリアルに戻すことは不可能です。

ステップ2 — 対称鍵を2つの「2対2」のシェアに分割

デバイスに戻り、対称鍵はShamirの秘密分散法(SSS)2対2のしきい値を使用して2つのシェアに分割されます。

  • バックエンドシェア: OneKeyバックエンドによって保持されます。

  • Juiceboxシェア: 分散型ストレージプロトコルであるJuicebox内に保存されます。

重要なポイント:

2対2のしきい値では、単一のシェアだけでは対称鍵を再構築するのに不十分です。OneKeyが「シード暗号文」と「バックエンドシェア」の両方を持っているとしても、ウォレットを一方的に復元したり、トランザクション署名を開始したりすることはできません。

ステップ3 — PINによって保護され、分散ネットワークへのネットワークシェアの書き込み

  1. JuiceboxシェアがJuiceboxネットワークに書き込まれます。

  2. ユーザーはPINを設定します。これは、Juiceboxからこのシェアを取得するためのアクセスを保護するために機能します。

  3. 技術的実装: シェアはさらに複数のサブシェアに分割され、保存のために異なるノードに分散されます。シェアを取得するには、ネットワークのしきい値検証に合格するために正しいPINを入力する必要があります。


キーレスウォレットの復元

ステップ1 — 認証とシード暗号文 + バックエンドシェアの取得

  1. デバイスはGoogle / Appleアカウントを使用して認証を実行します。

  2. 正常に検証されると、デバイスはOneKeyバックエンドから2つのデータピースを取得します。

    • シード暗号文

    • バックエンドシェア

ステップ2 — PINを入力してJuiceboxシェアを取得

  1. デバイスにPINを入力します。

  2. デバイスはPINを使用して、Juicebox分散ストレージプロトコルからJuiceboxシェアを取得します。

ステップ3 — 対称鍵の再構築と復号化

  1. デバイスはバックエンドシェア + Juiceboxシェアを結合して、元の対称鍵を再構築します。

  2. この対称鍵を使用してシード暗号文を復号化し、元のシードフレーズをデバイス上にローカルに復元します。

  3. 復元が完了すると、ウォレットは標準のウォレットと同様にOneKeyアプリ内で正常に機能します。


総合分析

最終状態(データ分散)

  • ユーザー: Google / Appleアカウントへのアクセス権を持ち、PINを覚えています。

  • OneKeyクライアント(デバイス): 使用可能な復号化されたシードフレーズを持っています(一時的に使用のため)。

  • OneKeyサーバー: 暗号文バックエンドシェアを保存しています。

  • Juiceboxレルム: Juiceboxサブシェア(Juiceboxシェアを再構築するために必要)を個別に保存しています。

セキュリティ特性

  • OneKeyサーバーデータベースの侵害: 攻撃者が暗号文バックエンドシェアの両方へのアクセスを取得した場合でも、対称鍵を一方的に再構築することはできません。したがって、シードフレーズを復号化することは不可能です。

  • Juiceboxレルム/ノードの侵害: 攻撃者が十分な数のJuiceboxサブシェア(復元しきい値に達しない)を取得しない限り、Juiceboxシェアを復元できず、したがって対称鍵の再構築に協力できません。

  • アカウントの侵害: GoogleまたはAppleアカウントへのアクセスだけでは、Juicebox側からJuiceboxサブシェアを取得するには不十分です。取得プロセスはPINによって厳密に保護されています。PINなしでは、復元チェーンを完了することはできません。


セキュリティ

OneKeyキーレスウォレットの設計目標は、いかなる単一のパーティの手にも「制御」を集中させることなく、参入障壁を最小限に抑えることです。ウォレットの復元は最も機密性の高い操作の1つであるため、プロトコルのセキュリティ境界と脅威モデルを設計の中心に置いています。これにより、使いやすさの向上がセキュリティを犠牲にすることなく達成されます。

セキュリティ目標

当社のアーキテクチャは、次の2つの重要な目的を満たすように設計されています。

  1. 一方的なアクセス禁止: OneKeyを含むいかなる第三者も、ユーザーのプライベートキーまたはシードフレーズを一方的に再構築または使用すべきではありません。

  2. 厳格な復元条件: ユーザーがウォレットを復元する唯一の方法は、次の2つの検証要件を同時に満たすことです。

    • Google / Appleアカウントを介した正常な認証;

    • そしてPINの所持を証明すること。


OneKeyが(一方的に)キーを再構築できない理由

デバイス上で実用的なシードフレーズまたはキーマテリアルを復元するには、次のすべての要素が同時に存在する必要があります。

  1. シード暗号文

  2. 対称鍵の2つのシェア(バックエンドシェア + Juiceboxシェア)

このアーキテクチャはいくつかの直接的な結論につながります。

  • Juicebox内の悪意のあるアクター: 悪意のあるJuiceboxレルム/ノードのしきい値未満のアクターがいる場合、攻撃者は有効なJuiceboxシェアを再構築できず、したがって対称鍵を再構築できません。

  • 分散ネットワークの完全な侵害: 分散型シャーディングネットワーク全体が侵害されたという仮説的なシナリオであっても、攻撃者はOneKeyバックエンドが保持するバックエンドシェアまたは暗号文を依然として欠いているため、独立した復元は不可能です。

  • OneKeyバックエンドの侵害: OneKeyバックエンドが攻撃されたとしても、攻撃者はJuicebox側に保存されているシェアを依然として欠いています。Juiceboxシェアがなければ、バックエンドデータだけでは対称鍵を再構築したり、シード暗号文を復号化したりするには不十分です。

「アカウント + PIN」が両方とも不可欠である理由

IDとアクセス制御に関して、キーレスウォレットは「あなたが誰であるか」(アカウントID)を「あなたが何を知っているか」(PIN)から分離しています。

  • アカウント側: OneKeyは、確立されたOAuth 2.0ログイン/認証フローを使用してGoogleおよびAppleとインターフェースし、ID検証と認証を行います。

  • PIN側: PINは、分散ストレージプロトコル(Juicebox)から重要なシェアを取得するプロセスを保護します。攻撃者がアカウントを侵害しても、PINを知らなければ、対応するシェアを取得したり、復元を完了したりすることはできません。

暗号化と鍵管理

暗号化と鍵分割のレベルでは、キーレスウォレットは「暗号文は保存できるが、鍵は集中化してはならない」という原則を順守しています。

  • シードフレーズの暗号化: シードフレーズ/キーマテリアルは、認証済み暗号化アルゴリズム(AES-256)を使用して暗号化され、復元時の整合性検証を保証する暗号文が生成されます。

  • 鍵の分割と再構築: Shamirの秘密分散法(SSS)を使用して、しきい値ルールに従って対称鍵を分割および再構築します。

  • 保存時のバックエンド暗号化: バックエンドに保存されるシェアは、保存前にクラウドKMSと暗号化アルゴリズムで最初に暗号化されます。これにより、プロセス全体を通して平文が一切表示されないことが保証され、キーデータのセキュリティが確保されます。


信頼性

OneKeyキーレスウォレットについて理解しておくべき重要な点は、復元が2つの条件を同時に満たすことに依存しているということです。対応するGoogleまたはAppleアカウントにログインできること、そしてPINを覚えていることです。

従来のWeb2の「パスワードを忘れた場合」のフローとは異なり、OneKeyはPINを回復したり、代理でプライベートキーまたはシードフレーズを再構築したりすることはできません。これは製品の欠陥ではなく、セキュリティ境界の意図的な一部です。サービスプロバイダーがいずれかの要素にアクセスできる能力を持っている場合、「自己管理」の核となる属性が根本的に侵害されます。

したがって、真の「ゼロトラスト」ソリューションは、最終的にユーザーが責任の一部を負うことを要求します。アカウントへのアクセスを維持し、PINを覚えることです。

PINを忘れた場合は?

ただし、セーフティネットがあります。キーレスウォレットのシードフレーズは、すでにログインしているデバイス上で使用可能な形式で存在します。

PINを忘れたが、ウォレットがログイン済みで機能しているデバイスへのアクセス権を引き続き持っている場合は、通常そのデバイスでPINをリセットできます。このプロセスにより新しいバックアップ構成が作成され、将来のデバイス間復元能力を維持できます。

定期的なPIN検証リマインダー

時間の経過とともにPINを忘れるリスクを軽減するために、OneKeyは適切な間隔でPINの検証を求めるプロンプトを表示します。

これらのチェックのいずれかでPINを思い出せないことに気付いた場合は、デバイスへのアクセス権を持っている間に直ちにPINをリセットし、その後バックアップ構成を再生成/更新する機会を利用する必要があります。

可用性の究極の境界線

要約すると、次のいずれかの条件を満たしている限り、キーレスウォレットへのアクセスを維持できることになります。

  1. まだ機能しているログイン済みデバイスを所有している。または

  2. Google / Appleアカウントにログインでき、PINを覚えている(新しいデバイスでの復元を可能にする)。

推奨事項:「クロスデバイス復元ドリル」の実行

復元プロセスは本質的に「アカウントにログイン + PINを入力」であるため、キーレスウォレット作成直後に2台目のデバイスで復元ドリルを実行することを強くお勧めします。

そうすることで、次のものが確保されます。

  • デバイスAでのアクセスポイント。

  • デバイスBでのアクセスポイント。

  • 将来新しいデバイスで復元するためのバックアップパス(アカウント + PIN)に対する検証済みの確信。


結論

多くの新規ユーザーにとって、シードフレーズは業界標準ですが、それを使用することは直感的でないことがよくあります。新しいデバイスにシードフレーズを入力するには大きな摩擦が伴い、安全に保管する方法や場所を知ることは、しばしば混乱の原因となります。

OneKeyキーレスウォレットは、異なるバランスを取ることを目指しています。

使い慣れた方法(Google / Apple + PIN)を使用することで参入障壁を下げます。同時に、分散型キー管理アーキテクチャを通じて、OneKeyを含むいかなる単一のパーティも、ユーザーの完全なキーを一方的に再構築できないことを保証します。これにより、「使いやすさ」「自己管理セキュリティの境界」との間で、一般の人々に非常に適した妥協が達成されます。

こちらの回答で解決しましたか?