LocalAuth / 创作心路

为什么在 Passkey 时代,
我们还要做一款三通道验证器?

写给所有不想把全部账号放进同一信任边界的人。

Open Source · GitHub · Apache-2.0

独揽令牌现已在 GitHub 开源。你可以直接查看源码、许可证与开源 Release,并审查本地令牌、Travel Vault 与硬件密钥实现。

Passkey 是更好的未来,这点我们并不怀疑。但现实世界里,大量服务、后台系统和迁移流程,仍然和 TOTP、恢复码、传统 2FA 长期共存。

所以问题从来不是"还要不要做一个验证器",而是:当 TOTP 还没退场时,我们能不能把"信任边界"做得更细,让不同价值的账号进入不同强度的解锁通道?

过渡时代的真实问题

纯软件方案的"同篮子风险"

无论是云端同步还是纯本地 Auth 应用,它们都倾向于把所有 TOTP 密钥放在一个篮子里。一旦手机在已解锁状态下脱离视线,攻击者拿到的往往不是一个账号,而是你从社交媒体到交易所的一整串动态密码。

单硬件通道方案的"高摩擦"

硬件密钥当然更安全,但"所有账号都走同一把钥匙"会带来高摩擦。你会发现:哪怕只是登录低风险论坛,也要重复掏钥匙、贴 NFC 或插 USB-C,长期使用的阻力非常真实。

我们的答案:把 TOTP 按价值分层

我们想做的,不是再重复一个"支持扫码、支持迁移、支持本地存储"的验证器,而是把系统级生物识别的便利、YubiKey 通道的专属硬防护,以及通用 FIDO hmac-secret 的开放兼容组合起来。

在创作 LocalLens 产品的过程中,我们持续把硬件密钥链路工程化,逐步扩展到 FIDO CTAP2 hmac-secret 体系。深入研究后我们意识到:硬件密钥不该只是"有或没有"的单点能力,而应该成为"可分级、可替换、可验证"的底层安全能力。

这就是 独揽令牌 (LocalAuth) 诞生的原因。我们重构了验证器底层逻辑,做出的关键决定不是"再做一个 2FA App",而是:把"一刀切解锁"改成"三通道分级解锁"。

  • 日常防护级(Face ID / Secure Enclave) 对于 GitHub、社交媒体等日常账号,密钥加密存储于本地,只需看一眼屏幕即可快速复制,把高频登录的摩擦压到最低。
  • YubiKey 专属级(YubiKit 通道) 对于交易所、钱包、主密码等核心资产,种子密文在手机里,但解密密钥依赖实体 YubiKey 参与派生。没有物理钥匙在场,验证码无法还原。
  • 通用硬件密钥级(FIDO hmac-secret) 对于希望统一 USB-C 与 NFC 使用体验的用户,可使用兼容 hmac-secret 扩展的设备,通过标准 FIDO 通道完成解锁,让分级安全不被单一品牌绑死。

旅行寄存:低频紧急场景的安全网

默认的令牌体验以本地为主。但纯本地方案有一个致命弱点:手机一旦丢失或损坏,所有令牌将无法找回。

旅行寄存是我们为这种极端场景设计的应急通道。你可以将当前令牌加密打包上传到云端,并获得一个取件码。需要恢复时,只需在新设备上输入取件码即可下载并解密。

这是一个低频紧急功能。只有在你主动创建或下载旅行寄存时,应用才会连接网络,且上传内容全程端到端加密——服务端无法解读你的任何令牌数据。

做一款真正有立场的本地验证器

除了底层的硬核安全,我们在 UI 层面也倾注了大量心血。我们厌倦了那些千篇一律的白底黑字和突兀的倒计时饼图。在 LocalAuth 中,生命周期融入了静谧的呼吸圆环,复制操作拥有真实的 Taptic 震动反馈,多任务切换时会自动拉起高斯模糊防窥层。

它依然遵循 LocalLens Project 的核心教条:默认绝无云端同步,不收集一字节的隐私。只有在你主动使用旅行寄存时,才会临时连接网络,且全程端到端加密。

我们相信,安全工具应该允许用户验证它,而不只是相信它。

独揽令牌已开源到 GitHub。代码公开之后,你可以更清楚地审视本地令牌、旅行寄存与硬件密钥的每一行实现。真正的安全,从来不需要黑盒里的闭门造车——而是经得起审视的绝对透明。

Passkey 会继续普及,但 TOTP 不会在一夜之间消失。我们想做的,就是在这段过渡时期里,为你提供一个极度安全、赏心悦目、支持分级信任边界、且完全透明的本地数字保险箱。

返回主页 阅读支持列表