安全与隐私
AnyTTY 的核心安全原则是:daemon 是 terminal、file、history、设备身份和客户端访问的最终权威。 route 可以决定客户端能否到达机器,但不能扩大 daemon 已经签发的 grant。
责任边界
| 组件 | 负责 | 不负责 |
|---|---|---|
| daemon | 进程、history、文件范围、identity、grant 与授权判断 | Cloud 账号、套餐和公网路由容量 |
| 客户端 | 保存自己的 endpoint/credential、验证 daemon、发送用户操作 | 替其他客户端授权、改变 daemon 本地权限 |
| route | 提供 Local、SSH、Direct 或 Cloud 的可达路径 | 绕过 identity、认证或 grant |
| Cloud | daemon 注册、发现、P2P/Relay、用量和订阅 | 自动同步 App endpoint、授予 terminal/file 权限 |
| Relay | 转发加密流量 | 成为 terminal/file authority |

身份认证与传输保护
远程连接会验证 daemon identity,并保护 terminal 与 file 流量的传输。SSH route 还应固定并验证 SSH host key。Direct 和 Cloud 使用配对得到的客户端绑定 credential 与 daemon identity。
当 identity、认证或授权失败时,连接必须拒绝。fallback 只能在已配置的可信 route 之间改变网络路径,不能通过跳过 pin、关闭认证或改用更弱检查来“修复”连接。
本文使用“传输加密”描述公开安全承诺,不把未在安全边界中承诺的属性扩大表述为端到端加密、匿名或零知识服务。
claim、grant 与撤销
- pairing claim 短期、一次性,未兑换时应视为秘密。
- grant 绑定到具体客户端 identity,复制 endpoint metadata 不会复制访问权。
- grant 可以限制到单个 terminal,并设置期限。
- daemon 可以用
anytty access list查看、用anytty access revoke撤销。 - lost 或不再可信的设备必须从 daemon 撤销,不能只从客户端删除 endpoint。
默认 claim 和 grant 生命周期以当前 pair create --help 为准。缩短权限范围比事后依赖撤销更稳妥。
文件权限
terminal 与 file 是独立能力。daemon 只允许 grant 和本地文件策略覆盖的路径;网络 route 和 Cloud 套餐不能把权限扩展到任意文件系统位置。
文件根目录应保持最小。递归删除、覆盖上传和覆盖移动属于高风险操作,即使客户端有权限也应在操作前确认 endpoint 与完整路径。
Relay 能看到什么
Relay 的职责是转发加密连接,不获得 daemon 的 terminal 或 file 权限。托管服务仍可能处理建立和运营连接所需的 metadata,例如账号、设备标识和标签、IP/网络信息、路由诊断、时间、订阅与用量。
Local、SSH 和 Direct 连接不会把 terminal/file 内容路由到 AnyTTY 托管服务。使用 Relay 时,服务转发加密流量。隐私数据类别、用途、共享和删除权利以隐私政策为准。
本地数据与凭据
- history 保存在 daemon 机器上,可能包含命令、输出、路径和业务数据。
- 客户端保存完成已授权连接所需的 endpoint 与 credential material。
- 移动端使用平台保护存储;iOS 使用 Keychain,并在可用时使用 Secure Enclave 保存 SSH 签名密钥。
- 日志、截图、issue 和测试 fixture 不应包含私钥、claim、grant、terminal 内容、文件内容或个人数据。
- clipboard history 也可能包含敏感文本,应设置合理上限并按需清理。
安全配置清单
- 以普通当前用户运行 daemon,不使用 root 作为方便的默认方案。
- 只监听需要的地址;Direct 不直接暴露到不受控公网。
- 为 SSH 固定 host key,为远程 endpoint 保留 daemon identity pin。
- claim 使用短 TTL,grant 使用最小 scope 和合理有效期。
- 定期检查
access list,撤销遗失、闲置或未知客户端。 - 限制文件范围,保留破坏性操作确认。
- 保护 history、配置备份、日志和诊断包。
- 及时升级安全修复,并在升级后验证 daemon 与 endpoint。
Cloud 账号安全
Cloud 控制台支持修改密码、重新验证身份、管理持久登录和永久删除账号。修改密码后,其他持久登录凭据停止续期;撤销一个登录后,已签发的短期访问凭据最多需要当前有效期结束才完全失效。
Cloud 登录与 daemon grant 是两套凭据。账号疑似泄露时需要同时处理 Cloud 密码/登录、daemon 注册和各 endpoint grant。
报告漏洞
不要创建公开 issue。使用 GitHub 私密漏洞报告,提供受影响提交、前置条件、使用新生成测试凭据的最小复现、实际影响和已知缓解措施。
不要提交真实私钥、claim、grant、terminal 内容、文件、个人数据或生产服务标识。AnyTTY 当前处于 Beta,没有漏洞奖励或保证响应时间;维护者会在能力范围内确认、分级和协调披露。