数据流
工作流程
0
vault-client 启动
PM2 常驻,进入「等待 seed」状态。Unix Socket 就绪。
1
手动注入 TOTP seed
POST /seed — seed 只存内存,不落盘。自动连接 proxy 发起密码申请。
2
vault-proxy 转发
VPS 公网中转,记录审计日志,APNs 唤醒 iPhone。零明文,零 seed。
3
iPhone 审批 + TOTP 加密
Face ID 解锁 Keychain → 读取密码 → TOTP 派生 AES-256-GCM 密钥加密 → 密文出设备。
4
vault-client 解密入内存
TOTP 派生同一 AES key 解密 → 存入内存 Map → 暴露 Unix Socket。重启 = 全部清零。
协议架构
三组件,零信任
dns
01 / SERVERS
vault-client
各业务服务器。密码纯内存驻留,TOTP seed 不落盘,Unix Socket 本地 API。
DISK: ZERO_SENSITIVE | MEM: SECRETS + SEED
security
02 / VPS_RELAY
纯中转
vault-proxy
公网 WSS 中转。零密码,零 seed,只转发密文。审计日志 + APNs 推送。
PLAINTEXT: NEVER | SEED: NEVER
smartphone
03 / IPHONE
vault-approve
iPhone 独立 App。iOS Keychain + Face ID 存储密码,TOTP 加密后才出设备。
STORAGE: SECURE_ENCLAVE | AUTH: FACE_ID
天生硬核
每一层都假设其他层已被攻破。
face
Face ID + iOS Keychain
Apple Secure Enclave 硬件级加密。密码读取需 Face ID 生物认证,其他进程无法访问。
key_visualizer
TOTP 动态加密
AES 密钥每 30 秒轮换。密文抓到也没用——窗口过期后无法解密,重放攻击无效。
memory
服务器纯内存
密码和 TOTP seed 都不落盘。服务器磁盘零敏感信息,入侵读磁盘什么都拿不到。
touch_app
人工审批必须
每次密码请求推送到 iPhone。不点批准 = 没有密文产生。自动化脚本无法绕过。
encrypted
Proxy 零知识
VPS 中转服务器全程只见密文。被入侵也无法获取任何密码或 seed。
emergency_home
紧急锁定
iPhone 一键锁定:推送 revoke 给所有 agent,立即清除全部服务器内存中的密码。
安全分析
威胁矩阵
| 攻击场景 | 攻击者获得 | 结果 |
|---|---|---|
| 业务服务器被入侵 | agent-token(磁盘上仅此) | 安全 |
| WSS 中间人攻击 | 加密流量 | 安全 |
| VPS 被入侵 | 审计日志 + 转发能力 | 安全 |
| 服务器 + VPS 同时沦陷 | token + 转发(磁盘无 seed) | 安全 |
| iPhone 被入侵 | iOS Keychain(Face ID 保护) | 困难 |
| 全部沦陷 | 所有组件 | GG |
shield_locked
加密标准
AES-256
GCM 模式
密钥轮换
30 秒
TOTP 窗口
认证
双因素
Token + 人工
磁盘密码
零
纯内存