跳到正文

安全与隐私

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
将客户端可达性与 endpoint daemon 授权分开的信任边界图
Route 负责建立可达性,endpoint daemon 始终是最终授权方。

身份认证与传输保护

远程连接会验证 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 也可能包含敏感文本,应设置合理上限并按需清理。

安全配置清单

  1. 以普通当前用户运行 daemon,不使用 root 作为方便的默认方案。
  2. 只监听需要的地址;Direct 不直接暴露到不受控公网。
  3. 为 SSH 固定 host key,为远程 endpoint 保留 daemon identity pin。
  4. claim 使用短 TTL,grant 使用最小 scope 和合理有效期。
  5. 定期检查 access list,撤销遗失、闲置或未知客户端。
  6. 限制文件范围,保留破坏性操作确认。
  7. 保护 history、配置备份、日志和诊断包。
  8. 及时升级安全修复,并在升级后验证 daemon 与 endpoint。

Cloud 账号安全

Cloud 控制台支持修改密码、重新验证身份、管理持久登录和永久删除账号。修改密码后,其他持久登录凭据停止续期;撤销一个登录后,已签发的短期访问凭据最多需要当前有效期结束才完全失效。

Cloud 登录与 daemon grant 是两套凭据。账号疑似泄露时需要同时处理 Cloud 密码/登录、daemon 注册和各 endpoint grant。

报告漏洞

不要创建公开 issue。使用 GitHub 私密漏洞报告,提供受影响提交、前置条件、使用新生成测试凭据的最小复现、实际影响和已知缓解措施。

不要提交真实私钥、claim、grant、terminal 内容、文件、个人数据或生产服务标识。AnyTTY 当前处于 Beta,没有漏洞奖励或保证响应时间;维护者会在能力范围内确认、分级和协调披露。