VoiceDrop 这个录音 app 不用注册、没有密码——你的身份,就是手机钥匙串里的一串密钥。那么换一台设备、或者想让电脑上的脚本以「你」的身份干活,要怎么登录?
大多数工具的「登录」背后都有一个中心服务器:它认得你(浏览器里有会话),你点一下「授权」,它就替你的账号签发一个 token 发给新设备。Claude Code 的 /login、gh auth login 都是这套。
VoiceDrop 偏偏没有这个中心权威。它的匿名身份是这样算出来的:
你的空间 = users/anon-<sha256(密钥)>/服务器根本不存这串密钥——你每次请求带上它,服务器当场哈希一下,就知道该开哪个空间。持有密钥 = 就是你。
这带来一个硬约束:服务器没法凭空签发一个指向你账号的新 token(那等于要破解 sha256)。所以「在新设备上登录」,本质只有一条路——把老设备上那串密钥,安全地搬到新设备。
怎么「安全地搬」?用一套设备配对握手。新设备只知道一个公开的 6 位短码,剩下的全靠老设备在场证明 + 端到端加密。
4 位码只会出现在真主人那台已登录的设备上(手机弹卡)。别人就算猜中你的 6 位短码,也看不到这 4 位——它压根不发给他。
🔢 4 位码:5 次机会 / 2 分钟过期。暴力破解约 5/10000,而且——真主人会在自己手机上看到这次登录尝试。被攻击是看得见的。
🔒 密钥全程端到端加密(X25519 + AES-GCM)。新设备先发一个临时公钥,老设备用它加密密钥,服务器只中转密文、从不解密、不留存。
🛂 只有持有账号的设备能放行。服务器强制「放行者的身份 = 被登录的账号」——别的设备替不了你点这个头。
/vd-login同一套握手,新设备那一半换成命令行就行——服务器一行都不用改。于是有了一个小工具,让电脑/脚本从手机登录你的账号:
之后别的工具读这个凭证,就能以你这个具体账号的身份调 API(比如把录音挖成文章),不用再共享一把「能看所有人」的管理员钥匙。
这套机制已经在生产环境跑通:手机弹码、命令行接住、密钥端到端搬过去、解密成功。整篇讲的就是它背后那点「没有中心权威,怎么还能安全登录」的小心思。