You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数据库泄露场景下多用户身份别名的匿名性保护方案咨询

可行的存储方案设计

核心原则是彻底消除user文档和alias文档之间可被直接匹配的关联字段,即使攻击者拿到全量数据库数据,也没有任何依据可以把某一个alias和对应的所属user绑定,具体实现如下:

  • 首先删除user文档内所有和alias相关的明文关联字段,原来的aliasIds列表完全移除,user文档仅存储登录必备的基础信息(邮箱、登录密码哈希等),全程不记录该用户创建过的任何alias标识:
// 调整后的user文档结构
user123: {
  email: 'foo@bar.com',
  passwordHash: "xxx登录密码哈希值",
  // 无任何alias相关字段
}
  • 每个alias文档增加独立的鉴权字段,创建alias时生成非对称密钥对,公钥直接存在alias文档中作为操作校验依据,私钥仅在创建成功时返回给用户端,由用户本地存储:
// 调整后的alias文档结构
MikeMain: {
  aliasPubKey: "xxx非对称加密公钥",
  name: 'Mike',
  catchPhrase: 'Always remain hydrated'
}

用户后续对该alias的所有操作请求,都需要用对应的私钥签名,服务端仅需用alias文档内存储的公钥验签通过即可执行操作,全程不需要识别该请求对应的用户身份,自然也不需要存储alias和user的关联关系。

  • 如果担心用户本地丢失alias私钥无法找回,可以做两个可选的兼容方案:
    1. 让用户为每个alias设置独立的恢复密码,用恢复密码的哈希值加密alias私钥后,存到和user表完全隔离的alias密钥备份表中,备份记录不包含任何用户身份信息,用户只有输入正确的恢复密码才能解密拿回私钥
    2. 兼顾易用性的方案:用户登录时用输入的明文密码做KDF派生一个独立的加密密钥,把用户所有alias的私钥加密成一串密文后存在user文档中,就算数据库泄露,攻击者没有用户的明文登录密码,也无法解密密文得到alias私钥,自然无法完成关联。

内容的提问来源于stack exchange,提问作者Josh M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:27:01