关于敏感数据加密的设计

Yuming 代码 2023-08-31
  1. 查询用 hash ,使用用加密。

    cellphone_enc, cellphone_hash, id_enc,id_hash. 如果还要查询归属地的,再加一个 phone_meta 里面只存前 7 位即可
  2. 加密后如何查询才能击中索引;

    使用 hash 查询。
    加密字段只允许精准查询,不允许模糊。
    如果一定要模糊,那也是有限制的模糊,提前定好模糊规则,根据模糊规则提前预留相关数据,再进行加密。
  3. 用户身份如何验证(手机号、身份证);

    验证后再加密,或者允许解密。

所以你需要

  1. 一个专用于加密解密的服务。
    所有加密解密都访问该服务。
    可访问数据库的人,秘钥管理人,加密服务管理人,这三方不能有任何一方有办法获取到所有要素。
  2. 调用解密必须有日志。

注意:

  1. 不同业务场景对脱敏的要求是不一样的。我们公司的要求是,任何人任何时候都不能看到明文,明文只出现在内存中。
    有时候,脱敏并不是要求看不到明文,而是要求 不要让人在看到 1 条明文时,再看到与之相关的其他明文,进而推测出业务信息,例如同时看到姓名与手机号。当然,这与你们公司的具体场景有关。
  2. 解密后,明文在内存中,如果被 log ,一直面临风险,所以需要对日志进行审核。
  3. 现在有些数据库或者数据库中间件支持字段脱敏。你可以参考他们的方案。
PREV
Go面试面经
NEXT
Mac 配置 zsh

评论(0)

发布评论