# パスキー認証ガイド

## パスキーとは？

パスキーは、パスワードの代わりに指紋認証やPIN、顔認証などを使って安全にログインできる仕組みです。

## 対応プラットフォーム

### ✅ 対応デバイス

| プラットフォーム | 認証方法 | 同期 |
|----------------|----------|------|
| **Windows** | Windows Hello（指紋/顔/PIN） | ❌ 端末固有 |
| **macOS** | Touch ID | ✅ iCloud Keychain |
| **iOS/iPadOS** | Touch ID / Face ID | ✅ iCloud Keychain |
| **Android** | 指紋認証 / 顔認証 / パターン | ✅ Google パスワードマネージャー* |
| **Chrome (全OS)** | 端末の認証機能 | ✅ Google パスワードマネージャー* |

*同期されても、nokakoi では端末ごとの再登録が必要です（後述）

## nokakoi でのパスキー使用方法

### 初回登録

1. **nsecでログイン**画面を開く
2. nsec（秘密鍵）を入力
3. ☑ **次回から自動ログイン** をチェック
4. ☑ **🔐 パスキー（指紋認証/PIN）で保護** をチェック
5. **[ログイン]** をクリック
6. 👆 指紋認証または PIN 入力を求められる
7. 認証が完了すると、パスキーが登録される

### パスキー登録後の表示

Chromeのパスキーマネージャーで確認すると、以下のように表示されます：

```
nokakoi - Windows (Chrome) [A3F2]
└─ localhost または nokakoi.com
```

- **nokakoi**: アプリ名
- **Windows (Chrome)**: 端末とブラウザ
- **[A3F2]**: 端末ID（4文字のランダムコード）

### 2回目以降のログイン

1. nokakoi を開く
2. 自動的に 👆 指紋認証ダイアログが表示される
3. 認証するだけでログイン完了！

## 重要な注意事項

### ⚠️ 端末ごとに登録が必要

nokakoi のパスキー機能は、**端末ごとに登録が必要**です。

**理由:**
- nsec（秘密鍵）は端末固有のキーで暗号化されている
- このキーは localStorage に保存されており、同期されない
- パスキー自体は同期されても、暗号化キーがないと復号化できない

**つまり:**
- PC でパスキー登録 → PC のみで使える
- スマホで使いたい → スマホで再度パスキー登録が必要

### 複数端末で使う場合

#### オプション1: 各端末でパスキー登録（推奨）

1. 各端末で nokakoi を開く
2. nsec でログイン
3. パスキーを登録

**メリット:**
- ✅ 各端末で指紋認証のみでログイン可能
- ✅ セキュリティが高い

**デメリット:**
- ❌ 初回は各端末で設定が必要

#### オプション2: NIP-07 拡張機能を使う

[nos2x](https://github.com/fiatjaf/nos2x)、[Alby](https://getalby.com/)、AKA Profiles（PC Chrome）、Nostash（iOS）などの拡張機能・連携アプリを使用します。

**メリット:**
- ✅ 拡張機能が同期されれば、複数端末で使える
- ✅ 他の Nostr アプリでも同じ秘密鍵を使える

**デメリット:**
- ❌ ブラウザ拡張機能のインストールが必要
- ❌ モバイルでは使えない場合がある

## パスキーマネージャーでの確認方法

### Chrome

```
chrome://settings/passkeys
```

または:

1. 設定 → プライバシーとセキュリティ
2. **パスキー** をクリック
3. `localhost` または `nokakoi.com` を検索

### Safari (macOS/iOS)

1. 設定 → パスワード
2. `nokakoi.com` を検索

### Windows Hello

1. 設定 → アカウント → サインイン オプション
2. セキュリティ キー → 管理

## パスキーの削除方法

### nokakoi からログアウト時

ログアウトすると、保存された暗号化データを削除するか確認されます:

```
「Windows (Chrome) [A3F2]のパスキーデータを削除しますか？」
```

- **はい**: 暗号化データを削除（パスキー自体は残る）
- **いいえ**: 次回も指紋認証でログイン可能

### パスキー自体を削除

ブラウザの設定から削除する必要があります:

#### Chrome
1. `chrome://settings/passkeys`
2. `nokakoi - Windows (Chrome) [A3F2]` を選択
3. **削除**

#### Safari
1. 設定 → パスワード
2. `nokakoi.com` を選択
3. パスキーを削除

## セキュリティに関する Q&A

### Q: パスキーは安全ですか？

**A:** はい、非常に安全です。

- 秘密鍵は端末の TPM/Secure Enclave に保存
- フィッシング耐性（ドメインに紐づく）
- 指紋認証なしではアクセス不可

### Q: パスキーが漏洩する可能性は？

**A:** ほぼありません。

- ハードウェアレベルで保護
- ソフトウェア攻撃では取り出せない
- XSS 攻撃でも指紋認証をバイパスできない

### Q: 端末を紛失したら？

**A:** その端末のパスキーは使えなくなりますが、nsec は漏洩しません。

- 指紋認証なしでは復号化不可
- 別の端末で再度ログインすれば OK

### Q: パスキーとパスワード、どちらが安全？

| 項目 | パスキー | パスワード |
|------|---------|-----------|
| フィッシング耐性 | ✅ | ❌ |
| 生体認証 | ✅ | ❌ |
| パスワード不要 | ✅ | ❌ |
| 複数端末 | △ 各端末で登録 | ✅ どこでも使える |
| セキュリティ | ★★★★★ | ★★★☆☆ |

## トラブルシューティング

### パスキー認証に失敗する

#### 原因1: 指紋センサーが反応しない
- 指を拭いて再試行
- 別の指を試す
- PIN を使用

#### 原因2: パスキーが見つからない
- Chrome のパスキーマネージャーで確認
- 削除されている場合は再登録

#### 原因3: 別の端末で登録したパスキー
- その端末では使えません
- 現在の端末で再登録してください

### 自動ログインされない

#### 確認事項
1. localStorage に設定が保存されているか？
   - F12 → Application → Local Storage → `appSettings`
   - `preferredSigner: "nsec-passkey"` があるか確認

2. パスキーが登録されているか？
   - `chrome://settings/passkeys` で確認

3. コンソールエラーを確認
   - F12 → Console でエラーメッセージを確認

### Q: XSS 攻撃で秘密鍵が盗まれるリスクは？

**A:** nokakoiでは秘密鍵を**クロージャ（JavaScriptの閉じたスコープ）内でのみ保持**しています。`window` オブジェクト等のグローバル変数上に秘密鍵が存在しないため、悪意あるスクリプトから直接秘密鍵を読み出すことはできません。

---

## 🔗 関連ドキュメント・ガイド

- [🔒 nokakoi ログイン方法完全ガイド](login-guide.html)
- [⌨️ キーボード操作ガイド](keyboard-guide.html)
- [📱 スマホ操作・トラブルガイド](mobile-guide.html)
- [⚙️ 設定ガイド](settings-guide.html)
- [nokakoi Web アプリ](https://nokakoi.com/app/)
- [nostr プロトコル](https://nostr.com)
- [WebAuthn 仕様](https://www.w3.org/TR/webauthn-3/)

## まとめ

### パスキーを使うべき人

- ✅ 1台の端末で主に使う
- ✅ 指紋認証でサクッとログインしたい
- ✅ パスワードを覚えたくない
- ✅ セキュリティを重視

### パスワード方式を使うべき人

- ✅ 複数端末で頻繁に使う
- ✅ 生体認証が使えない端末
- ✅ パスワードを覚えるのが苦でない

### NIP-07 拡張機能を使うべき人

- ✅ 他の Nostr アプリも使う
- ✅ PC で主に使う（デスクトップブラウザ）
- ✅ 最高のセキュリティとUXを求める

---

**推奨**: メイン端末では**パスキー**、サブ端末では**NIP-07拡張機能**の併用がベスト！
