Skip to content

密钥保密要求

接入时重点保护两个长期值:AccessKeySecretdevice_secret_key

两者都不要出现在客户端、日志、截图、工单或聊天记录中。AccessKeySecret 只放在可信业务服务端;device_secret_key 用于证明具体设备身份,只放在受控设备环境和确有需要的服务端流程中。

放在哪里

密钥是什么可以出现在哪里不应出现在哪里
AccessKeySecret应用级长期密钥,用于服务端 TGV1 签名业务服务端的密钥管理系统或受控运行环境客户端、设备固件、前端脚本、示例仓库、日志、截图、工单
device_secret_key设备级长期密钥,与 device_id 一起证明设备身份设备端受控存储;服务端确有需要的设备管理流程客户端、普通配置模板、日志、群聊、邮件、截图、工单

不要这样做

  • AccessKeySecret 写进 App、Electron 应用或示例代码。
  • device_secret_key 当成普通配置打印到设备日志。
  • 在群聊、邮件、工单或截图里发送完整 Token、Authorization 或签名计算过程。
  • 把密钥写入本地配置文件后提交到仓库。
  • 让设备直接签发 Token,或让客户端直接调用需要 AccessKeySecret 签名的接口。

推荐做法

每一端只取得必要信息

  • 业务服务端保管 AccessKey,并完成权限判断、签名和 Token 签发。
  • 设备端使用设备身份和短期 device_access_token
  • 客户端使用绑定目标设备的短期 app_access_token

Token 有效期按最小需要设置,服务端允许范围为 900~43200 秒。Token 到期时由受信任服务端重新签发。

日志里只放定位信息

通常只记录接口名、HTTP 状态、业务错误码、request_id、SDK 版本、脱敏设备 ID 和关键状态。不要记录:

  • AccessKeySecret
  • device_secret_key
  • 完整 Token 或 Authorization
  • 可复用的签名值
  • 包含真实凭证的 Canonical Request

发给别人前先脱敏

只保留足以关联同一次请求的时间、request_id、错误码和字段长度。需要确认凭证是否匹配时,说明结果,不要复制原值。

如果已经泄露了怎么办

先停止继续传播,确认泄露范围,包括代码仓库、构建产物、日志、聊天、截图、工单和测试脚本。

AccessKeySecret 泄露

立即停用并轮换受影响的 AccessKey,更新业务服务端配置,检查泄露期间的 Token 签发、索引查询和删除审计记录,并清理所有已知副本。

device_secret_key 泄露

先确认受影响的 device_id 范围,再按项目交付流程制定设备密钥轮换方案。已经出厂的设备通常需要通过安全升级把新密钥写入设备,并与平台侧配置同步;两侧未同步完成时,设备鉴权可能失败。

Token 泄露

Token 是短期凭证,但在有效期内仍可能被滥用。停止继续传播,评估目标设备和授权范围,并在必要时按当前平台能力撤销或等待过期;同时修复产生泄露的日志或接口。

TiStore 开发文档