鍵同期
安全なデバイス間鍵転送
QRコードを使用して暗号化鍵を新しいデバイスに転送。X25519 ECDH鍵交換 + AES-256-GCM暗号化転送。
1
ソースデバイス
鍵があるデバイスで:設定 → Key Sync → 「鍵を転送」。QRコードが表示されます(5分間有効)。
2
ターゲットデバイス
新しいデバイスで:ログイン後、「QRスキャン」を選択し、ソースデバイスのQRコードをカメラでスキャン。
3
転送完了
暗号化チャネルを介して鍵が安全に転送されます。SHA-256チェックサムでデータ整合性を検証。セッションは自動的に期限切れ。
転送プロトコル
Source Device Target Device
│ │
│ 1. Create Session (Firestore) │
│ 2. Generate X25519 Ephemeral Key │
│ 3. Display QR Code │
│ ─── QR Scan ───► │
│ │ 4. Parse QR → sessionId + publicKey
│ │ 5. Generate X25519 Ephemeral Key
│ │ 6. ECDH → Shared Secret
│ │ 7. HKDF-SHA256 → AES Key
│ ◄── Firestore ── │ 8. Write encrypted response
│ 9. ECDH → Same Shared Secret │
│ 10. Encrypt keys (AES-256-GCM) │
│ ── Firestore ──► │
│ │ 11. Decrypt → Import keys
│ │ 12. SHA-256 Checksum verify
│ 13. Cleanup session │
└────────────────────────────────────┘
Session TTL: 5 minutes転送される鍵
| 鍵 | アルゴリズム | 用途 |
|---|---|---|
| アイデンティティ鍵ペア | X25519 | 本人確認 / PQXDH |
| 署名鍵ペア | Ed25519 | メッセージ署名 (AEGIS XEdDSA) |
| 署名付きPreKeyペア | X25519 | X3DHセッション確立 |
| Registration ID | — | セッション識別子 |
ワンタイムPreKeyは転送されません。デバイス間の鍵競合を避けるため、新しいデバイスで再生成されます。
プラットフォーム対応
| プラットフォーム | QRスキャン | 鍵保管 | 代替手段 |
|---|---|---|---|
| iOS | 対応 | Keychain | — |
| Android | 対応 | Android Keystore | — |
| macOS | カメラ依存 | Keychain | 鍵を再生成 |
| PWA (Web) | カメラ権限依存 | Web Crypto API | 鍵を再生成 |
鍵の再生成: QRスキャンが利用できない場合(PWA/macOS)、「鍵を再生成」を選択して新しい暗号化鍵を作成できます。全コンタクトとの新しいセッションが確立されますが、以前のメッセージは復号できなくなります。
マルチデバイス利用
同じアカウントを複数デバイスで使用する際の重要な注意点。
同一アカウント、複数デバイス
- • 各デバイスは独立した暗号化鍵を保存
- • 元のデバイスのメッセージ復号にはKey Syncが必要
- • 同時使用時にワンタイムPreKeyの競合が発生する可能性
- • デバイス上限:Essential 1台 / Premium & Intelligence 3台
異なるアカウント、同一デバイス
- • すべての暗号化セッションが完全にリセット
- • 前のアカウントのメッセージは永久に復号不可
- • 異なるアカウント間での鍵の衝突なし
- • アカウント切り替え前に警告ダイアログを表示
Arc vs Signal:マルチデバイスモデル
| 機能 | Signal | Arc V2 |
|---|---|---|
| デバイスモデル | プライマリ/リンク | 独立鍵セット |
| デバイス追加 | プライマリ経由 | 直接登録 + Key Sync |
| 鍵配布 | プライマリからリンクへ配布 | ピアツーピアQR交換 |
| デバイス認証 | 暗黙的信頼 | Ed25519署名検証 |
| プライマリ障害 | 全リンクデバイスが孤立 | 影響なし(独立) |
