🔒 ログイン方法完全ガイド
nokakoiでは、ユーザーの利用環境やセキュリティ要件に合わせて4種類のログイン方法に対応しています。
それぞれのメリット、デメリット、セキュリティ構造を解説します。
📊 ログイン方式の一覧比較
| ログイン方式 | 利便性 | キー保管場所 | XSS耐性 | 推し環境 |
|---|---|---|---|---|
| 🔑 nsec + パスキー 推奨 | ★★★★★ (生体認証1タッチ) |
デバイス暗号領域 (WebAuthn PRF) |
✅ 高 (クロージャ保護) |
PC・スマホ単体使用 |
| 🧩 NIP-07 拡張機能 高セキュリティ | ★★★★☆ (拡張ダイアログ) |
ブラウザ拡張内部 (nos2x / Alby等) |
✅ 最高 (Webアプリ非露出) |
PCブラウザメイン |
| 🌐 NIP-46 (Nostr Connect) 高セキュリティ | ★★★☆☆ (リモート承認) |
リモート署名器 (Amber / Remote Signer) |
✅ 最高 (鍵はリモートのみ) |
Android / 専用署名器 |
| 🔐 nsec + パスワード 従来の方式 | ★★★☆☆ (パスワード入力) |
ブラウザ LocalStorage (AES-GCM暗号化) |
✅ 高 (クロージャ保護) |
パスキー非対応環境 |
🔍 各ログイン方式の詳細説明
🔑 1. nsec + パスキー(生体認証) おすすめ
概要: 指紋認証(Touch ID / Windows Hello)や顔認証(Face ID)を使ってワンタッチでログインする最新の認証方式です。
- メリット: パスワードの入力が一切不要。ドメイン(nokakoi.com)に結びつくためフィッシングサイトに強い。
- 安全性: WebAuthn PRF 拡張を利用して秘密鍵(nsec)を暗号化保存します。パスキー認証が成功した時のみメモリ上で復号されます。
- クロージャ保護: 復号された秘密鍵はJavaScriptのクロージャ(閉じられたスコープ)に保持され、外部のスクリプトから直接読み取ることはできません。
- 注意点: 登録した端末・ブラウザごとにパスキーの初期登録(初回のみnsec入力)が必要です。
🧩 2. NIP-07(ブラウザ拡張機能・連携アプリ)
概要: nos2x, Alby, AKA Profiles(PC Chrome), Nostash(iOS)などのブラウザ拡張機能・連携アプリを使用して署名を行う方式です。
- メリット: nokakoiを含む複数のNostr Webアプリで同じ秘密鍵を安全に共有・利用できます。
- 安全性: 秘密鍵は拡張機能・アプリ内に安全に保持され、nokakoi側には一切渡りません。署名が必要な時だけ確認ポップアップが表示されます。
- 注意点: 対応するブラウザ拡張機能または連携アプリを事前インストールしておく必要があります。
🌐 3. NIP-46(Nostr Connect / リモート署名)
概要: AndroidのAmberアプリなどの外部署名器とリレー経由で通信し、遠隔でイベントに署名する方式です。
- メリット: Webブラウザ上に秘密鍵を一切持ち込まないため、Webアプリ側の脆弱性の影響を受けません。
- 安全性: 署名リクエストごとにスマホ側の署名アプリで承認・拒否をコントロールできます。
- 注意点: リモート署名アプリとの初期接続設定が必要です。
🔐 4. nsec + パスワード暗号化
概要: 自分で設定したマスターパスワードでnsecをAES-GCM暗号化してブラウザ内に保存する方式です。
- メリット: パスキー未対応の古いブラウザや環境でも利用可能です。
- 注意点: パスワードを忘れると復号できなくなります。パスキー対応環境ではパスキーログインのご利用を強く推奨します。
🛡️ nokakoiの秘密鍵保護アーキテクチャ(クロージャ保護)
🔒 メモリ内秘密鍵のクロージャ遮断構造
nokakoiでは、nsec復号後の秘密鍵をグローバル変数(window オブジェクトなど)に保持しません。
JavaScriptのモジュールスコープ(クロージャ)内に厳格に閉じ込めることで、悪意のあるサードパーティ製スクリプトやXSS(クロスサイトスクリプティング)攻撃によってブラウザから秘密鍵を直接盗み出す(window.nsec のような参照)攻撃を未然に防ぎます。