Skip to main content

redact_key_id

Function redact_key_id 

Source
pub fn redact_key_id(raw: &str) -> String
Expand description

v1.4.106 codex 0542 F1 [P2 SECURITY]: redact key_id label 为 8-hex 短 SHA256.

输入 key id 明文 (如 “bot_a” / “trader-prod-1”) → 输出 kh_<8hex> (如 kh_3a4f5b6c). dashboard 看到 kh_3a4f5b6c 仍能区分 (counter 维度 差异化), 但不暴露 key id 明文 — 反查需要离线 dictionary 攻击 (尝试 SHA256 大量候选 id 直到 hash prefix 匹配).

三个 sentinel 不 hash, 直接透传 — 这些是 audit 内部 sentinel, 无 key id 可泄漏:

  • <none> (no api key configured / legacy mode)
  • <missing> (key 缺失)
  • <invalid> (key verify 失败 / unknown bearer)

opt-out: 设 FUTU_METRICS_PUBLIC=1 env 时回退 v1.4.105 行为 (明文 key_id) — 老用户 dashboard 依赖 key_id 明文时用. 默认 secure (redact).

8 hex (32 bit) 在 ~10 keys 量级内 collision 极低 (<10^-7), dashboard 维度 差异化够用. 若 keys.json 上 100+ keys 仍想 redact 时单 metric 多个 hash 是可接受 cardinality (类似 user-agent label 多 variant).