CyberGlossary

密码学

胡椒(Pepper)

别称: 服务端密钥, Pepper 秘密

定义

服务端持有的一段秘密,在口令哈希之前与每个口令拼接,与数据库分开存储,用于在哈希泄露后缓解离线破解风险。

胡椒(pepper)是一段在应用层面共享的长秘密(通常 32 字节以上),在口令送入哈希函数或 KDF 之前与之拼接,与每用户唯一的盐配合使用。与盐不同,胡椒被存储在凭证数据库之外,如配置文件、环境变量或硬件安全模块(HSM)中;这样即便攻击者只拿到哈希表,也难以在离线状态下高效破解。常见做法是先在应用中计算 HMAC(pepper, password),再将结果送入 Argon2id;或者将胡椒作为秘密材料的一部分输入到 KDF。胡椒是一种纵深防御措施,不能替代强 KDF、盐和速率限制,但能显著提高仅数据库被攻破时的破解成本。

示例

  • 在应用中计算 HMAC-SHA-256(pepper, password),再用 Argon2id 哈希。
  • 将 pepper 存储在 HSM 中,使应用无法直接将其导出。

相关术语