Toqen.app Mobile 现已开源
Source: Dev.to
什么是 Toqen
Toqen 是一种以访问为先的认证基础设施,旨在实现安全、实时的授权。每一次访问请求都:
- 实时创建
- 由用户明确批准
- 由设备进行加密签名
- 由后端进行验证
移动应用充当这些决策的安全执行层。
开源移动应用实际做了什么
移动客户端的职责非常狭窄且明确:
- 扫描或接收访问请求
- 从后端获取请求上下文
- 向用户展示请求内容
- 收集明确的批准或拒绝
- 使用设备密钥对短期挑战进行签名
- 将签名结果发送回后端进行验证
该应用不自行授予访问权限;所有最终决策均由服务器验证。
应用收集了哪些数据
这是关键点——你可以直接在代码中验证。移动应用仅存储执行加密授权所必需的数据:
device_private_key(在设备上生成,永不离开设备)device_idapp_instance_id
这就是全部敏感数据的存储项。不会存储以下内容:
- 密码
- 会话令牌
- 刷新令牌
- 可重复使用的凭证
- 后端密钥
敏感数据使用操作系统级别的安全存储(Keychain / Keystore)进行保存。
系统中不包含的内容
Toqen 以严格的数据最小化为核心:
- QR 码不包含密钥
- 授权请求是短期且一次性使用的
- 流程中不存在可重复使用的令牌
即使 QR 码被拦截,也无法用于获取访问权限。授权始终需要:
- 用户确认
- 设备签名
- 后端验证
授权实际是如何工作的
所有流程遵循相同的模式:
request → context → user decision → signature → verification → result
这确保了:
- 没有静默批准
- 没有隐式信任
- 没有后台授权
每一次访问都是有意且可验证的。
安全模型(简要版)
系统假设处于敌对环境:
- 网络不可信
- QR 码可能被拦截
- 请求可能被重放
安全性通过以下方式实现:
- 与设备绑定的加密密钥
- 挑战‑响应授权
- 短期请求
- 服务器端验证
私钥永不离开设备,后端也永远无法获取私钥。
为什么仅开源移动应用
移动客户端是从信任角度最关键的部分。通过开源它,我可以:
- 进行独立的安全审查
- 验证数据处理方式
- 检查加密流程
- 确认收集了哪些数据、未收集哪些数据
后端保持闭源,但其行为通过以下方式完全定义:
- API 合约
- 文档化的流程
- 安全模型
- 威胁模型
这样既保证系统可验证,又不暴露运营基础设施。
构建透明度
构建和发布过程也有文档记录。每次构建都会包含:
- 版本号
- 提交哈希
- 标签
- CI 引用
这使任何人都能追踪分发的应用是如何生成的。
这意味着什么
你不再只能依赖声明。你可以:
- 检查代码
- 验证存储行为
- 审阅加密操作
- 确认数据处理方式
移动应用本身就是设计为完全透明的。