KEY SYNC
安全的设备间密钥传输
使用 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传输的密钥
| 密钥 | 算法 | 用途 |
|---|---|---|
| Identity Key Pair | X25519 | 身份验证 / PQXDH |
| Signing Key Pair | Ed25519 | 消息签名 (AEGIS XEdDSA) |
| Signed PreKey Pair | X25519 | X3DH 会话建立 |
| Registration ID | — | 会话标识符 |
One-Time PreKey 不会被传输。它们会在新设备上重新生成,以避免设备间的密钥竞争。
平台支持
| 平台 | QR 扫描 | 密钥存储 | 替代方案 |
|---|---|---|---|
| iOS | 支持 | Keychain | — |
| Android | 支持 | Android Keystore | — |
| macOS | 取决于摄像头 | Keychain | 重新生成密钥 |
| PWA (Web) | 取决于摄像头权限 | Web Crypto API | 重新生成密钥 |
重新生成密钥: 如果无法使用 QR 扫描(PWA/macOS),选择"重新生成密钥"来创建新的加密密钥。将与所有联系人建立新会话,但之前的消息无法解密。
多设备使用
在多台设备上使用同一账户时的重要注意事项。
同一账户,多台设备
- • 每台设备独立存储加密密钥
- • 需要 Key Sync 才能解密原始设备的消息
- • 同时使用多台设备可能出现 One-Time PreKey 冲突
- • 设备限制:Essential 1台 / Premium & Intelligence 3台
不同账户,同一设备
- • 所有加密会话完全重置
- • 之前账户的消息永久无法解密
- • 不同账户之间不存在密钥冲突
- • 切换账户前显示警告对话框
Arc vs Signal:多设备模型
| 功能 | Signal | Arc V2 |
|---|---|---|
| 设备模型 | Primary/Linked | Independent key sets |
| 设备添加 | Via Primary | Direct registration + Key Sync |
| 密钥分发 | Primary distributes to Linked | Peer-to-peer QR exchange |
| 设备认证 | Implicit trust | Ed25519 signature verification |
| Primary 故障 | All Linked devices orphaned | No impact (independent) |
