Skip to main content

Module crypto

Module crypto 

Source
Expand description

MCP token 静态加密(AES-GCM-256)。

设计要点:

  • 明文 bearer token 永不裸存于 DB。存储列 token_enc 是 AES-GCM 密文 (nonce ‖ ciphertext ‖ tag)的 hex 编码;管理员可在后台解密重查明文。
  • token_hash(明文 SHA-256 hex)用于每请求 O(1) 常量查找,见 auth.rs
  • 主密钥来自环境变量 MCP_TOKEN_ENC_KEY(hex 编码的 32 字节,64 个 hex 字符; 可用 openssl rand -hex 32 生成)。缺失或非法时 mcp_enc_key() 返回 None, 调用方按「MCP 不可用」降级(拒绝签发/认证),不 panic——符合 AGENTS.md §16。

AES-GCM-256:12 字节随机 nonce(每次加密独立生成),认证标签隐含在密文尾部。 nonce 复用是 AES-GCM 的唯一致命风险;这里每次 encrypt_token 都新取 nonce, 且 nonce 与密文一同存储,解密时无需额外恢复。仅用 hex(已是直接依赖)编码, 避免把 base64 由传递依赖提升为直接依赖。

Functions§

decrypt_token
解密 token_encnonce‖ct‖tag 的 hex)还原明文 token。
encrypt_token
加密明文 token,返回 nonce‖ct‖tag 的 hex 字符串(存入 token_enc)。
mcp_enc_key
从环境读取并解码主密钥;缺失或非法返回 None(降级,不 panic)。