本文へスキップ
Anon Wallet

認証

Anon はパスキー(推奨)とパスワードに対応しています。どちらもウォレットの鍵階層を支え、ルートシークレットの導出と保護方法が異なります。

パスキー(WebAuthn PRF)

パスキーは WebAuthn 標準の PRF 拡張(疑似ランダム関数)を使います。認証時は次の手順になります。

  1. ブラウザーが Touch ID、Face ID、Windows Hello、FIDO2 ハードウェアキーなどの認証器を呼び出します
  2. 認証器が Anon の認証情報を鍵として HMAC-PRF を実行します
  3. 決定的な 32 バイトのシークレットである PRF 出力からウォレットの鍵を導出します

パスキーの利点

  • 認証器による保護: 保存、端末への紐付け、同期は認証器次第です。PRF 対応が必要で、侵害された端末に対する保証ではありません。
  • フィッシング耐性: WebAuthn 認証情報はオリジン(chrome-extension://...)に紐付き、偽サイトから要求できません。
  • パスワード入力が不要: キーロガーへのパスワード露出を避けられますが、セッションの秘密情報は引き続き保護が必要です。
  • 生体認証の利便性: タッチや視線で認証できます。

対応する認証器

利用可否はブラウザー、OS、認証器、PRF 対応状況によって異なります。設定時に互換性を確認してください。以下の例はすべてのバージョンの動作を保証しません。

  • Touch ID(Mac)
  • Face ID(Bluetooth 経由の外部認証器としての iPhone/iPad)
  • Windows Hello
  • YubiKey などの FIDO2 ハードウェアセキュリティキー

パスワード認証

パスワードを選ぶと Argon2id でルート鍵を導出します。

  • Argon2id はオフライン推測のコストを高めるメモリ集約型のパスワードハッシュです
  • Anon は高いメモリコスト(64 MB)で総当たり攻撃を難しくします
  • ランダムソルトは chrome.storage.local に保存され、導出鍵はサーバーに送られません

便利ですが、パスキーに比べると次の弱点があります。

  • 導出中は短時間パスワードがメモリに存在します
  • 保存データを盗まれると、弱いパスワードはオフライン攻撃に脆弱です

長く、使い回さないパスフレーズを使ってください。

セッション管理

認証後に Anon がセッションを作成します。

  • バックグラウンド同期用の閲覧専用鍵をメモリに読み込みます
  • 支出鍵はトランザクション開始時に必要に応じて読み込みます
  • 設定したタイムアウトでセッションが終了します

終了すると Anon はロックし、すべてのセッション鍵をメモリから消去します。

自動ロック

システムイベントで自動ロックできます。

  • 無操作タイムアウト: N 分間操作がない場合
  • OS ロック: 画面ロックやスリープ時。対応する拡張機能 API が必要で、既定で有効です
  • ブラウザー終了: 常にロックします

Settings → Security で設定できます。