1. 現状の課題:非永続的で脆弱な保管領域

現在の多くの Web アプリケーションや Web/A の参照実装において、秘密鍵や機密データはブラウザの localStorage やプレーンなファイルとして管理されています。しかし、商用および公的な大規模展開を想定した場合、これらには以下の致命的な弱点があります。

  • LocalStorage の脆弱性: XSS(クロスサイトスクリプティング)攻撃に対して無防備であり、スクリプトから秘密鍵を直接読み取られるリスクがある。
  • フラットファイルの管理コスト: ユーザーが秘密鍵ファイルを誤って削除したり、紛失したりするリスクが高い。また、OS レイヤーでの保護が不十分な場合がある。
  • 非永続性: ブラウザのキャッシュクリアやストレージ制限により、重要なアイデンティティが喪失する可能性がある。

2. 参照モデル:EUDIW ARF との比較

欧州のデジタル・アイデンティティ・ウォレット(EUDIW)のアーキテクチャ・フレームワーク(ARF)では、鍵管理について極めて厳格かつ高度なモデルを定義しています。

コンポーネント EUDIW ARF の定義 Web/A Folio のアプローチ
WSCD (Secure Device) Secure Element (SE) や TEE 等の物理的セキュリティデバイス。 WebAuthn / Passkey 対応のセキュリティキーまたは端末内 Enclave。
WSCA (Secure App) WSCD 内で秘密鍵を直接扱うセキュアなアプリケーション。 直接的な App は作らず、ブラウザ経由でハードウェア鍵を呼び出す。
LoA (Assurance) 高(High)レベルの保証。SE への依存が必須。 Holder Binding により、Passkey と公的証明書を紐付けて保証。

Web/A は「特定のネイティブアプリへの依存を避ける」という哲学を持つため、EUDIW の WSCA モデル(アプリをセキュアエレメント上に実装する)をそのまま採用するのではなく、標準的なブラウザ API である WebAuthn を Trust Anchor(信頼の基点)として活用します。


3. Web/A Folio の階層型セキュリティモデル

データの重要度とユースケースに応じて、以下の3つの階層(Tier)を使い分けます。

Tier 1: エフェメラル・ストレージ (開発・低保証用)

  • 保管場所: localStorage またはプレーンなファイル。
  • 用途: デモ、検証、重要度の低い情報の署名。
  • リスク: 紛失・盗難に対して脆弱。

Tier 2: ウェアラブル/バイオメトリクス・セキュリティ (標準用)

  • 保管場所: 端末のセキュア・エンクレーブ(Passkeys)。
  • 用途: 日常的な申請、ログイン、文書署名。
  • 鍵管理: WebAuthn により、秘密鍵はハードウェアから外部に出ない。
  • 仕組み: Web/A 文書の署名は、Passkey で生成された鍵(P-256 / Ed25519 等)を用いて行われる。

Tier 3: ハードウェア・バインド・セキュリティ (高保証用)

  • 保管場所: 公的証明書(ハードウェアトークン)+ Passkey。
  • 用途: 法的効力を持つ手続き、高額取引。
  • 鍵管理: 公的証明書の署名用電子証明書を用いて、Tier 2 の Passkey に対して「これは私の所持している鍵である」という署名を付与(Holder Binding)。
  • メリット: 物理トークンを毎回読み取る手間を省きつつ、法的・物理的な本人性を担保する。

4. 「Folio Vault」構想:暗号化ラッピング

将来的な Folio は、単なるフォルダーではなく、「暗号化されたコンテナ(Vault)」 として扱われます。

  1. データ本体の暗号化: Folio 内の各ファイルまたはディレクトリ全体を、ユーザーの Passkey に紐付いた共有鍵(Web Crypto API で導出)で AES-GCM 暗号化する。
  2. アクセスの抽象化:
    • ローカル環境では Folio CLI が復号を行う。
    • ブラウザ環境では、Service Worker や「Folio Agent」が仮想ファイルシステムとして振る舞い、必要な時だけメモリ上で復号してユーザーに提示する。
  3. ポータビリティ: 暗号化された状態であれば、iCloud, Google Drive, Box 等のクラウドストレージに安全にバックアップ・同期が可能。プロバイダーは中身を閲覧できない。

5. 結論:ブラウザを「セキュアな窓口」に変える

Web/A は、ブラウザそのものを信頼するのではなく、ブラウザが提供する WebAuthn などのハードウェア保護された API をゲートウェイとして利用します。

これにより、ユーザーは「特定のベンダーのウォレットアプリ」に閉じ込められることなく、標準的なブラウザと手元のスマートフォンやセキュリティキー(Yubikey 等)を組み合わせて、国家レベルのセキュリティ要件を満たす鍵管理を、ファイルベースの利便性を維持したまま実現できます。