日期偏移

日期是一种非常常见的数据类型。如果日期可被视为敏感数据或个人身份信息 (PII),您可能需要对其进行泛化、模糊化或隐去处理。

执行此操作的一种方法是泛化或分桶。 但是,分桶可能会消除日期的效用,具体取决于用例和配置。例如,如果将所有日期泛化为仅有某一年份,则可能会丢失该年份内各种事件的发生顺序。如需解决此问题,除了对日期进行模糊处理之外,您还可以使用另一种方法,即“日期偏移”。

日期偏移技术会随机偏移一组日期,但保留一段时间内的顺序和持续时间。通常在个人或实体的上下文中完成偏移日期。也就是说,对于每个个人而言,日期的偏移时间量是唯一的。

日期偏移示例

请思考以下数据:

user_id 日期 行动
1 2009-06-09 跑步
1 2009-06-03 散步
1 2009-05-23 自由泳
2 2010-11-03 自由泳
2 2010-11-22 散步
...

如果将这些日期泛化为年份,会得到以下内容:

user_id date_year 行动
1 2009 跑步
1 2009 散步
1 2009 自由泳
2 2010 自由泳
2 2010 散步
...

但现在,您已经对每个用户的顺序失去了概念。

请改为尝试日期偏移这种方法:

user_id 日期 行动
1 2009-07-17 跑步
1 2009-07-11 散步
1 2009-06-30 自由泳
2 2011-01-26 自由泳
2 2011-02-14 散步
...

请注意日期是不同的,但保留了顺序和持续时间。 在 user_id 1 和 2 之间,日期偏移的幅度是不同的。

Sensitive Data Protection 中的日期转换

以下是用于针对敏感数据保护的 content.deidentify 方法配置日期偏移的 JSON 对象:

deidentify_config {
  record_transformations {
    field_transformations {
      fields {
        name: "date"
      }
      primitive_transformation {
        date_shift_config {
          upper_bound_days: 100
          lower_bound_days: -100
          entity_field_id {
            name: "user_id"
          }
          crypto_key {
            unwrapped {
              key: "123456789012345678901234567890ab"
            }
          }
        }
      }
    }
  }
}

偏移的上限和下限分别由 upper_bound_dayslower_bound_days 值指定。将应用该偏移的上下文或范围基于 entity_id_field 值,在本例中为 "user_id"

此外,请注意 crypto_key 的使用。这与其在假名化中的使用方式类似。借助该密钥,可在多个请求或数据运行中保证这些日期偏移的完整性。

资源

有关如何使用日期偏移和 敏感数据保护中的其他方法,请参阅:

如需了解 Sensitive Data Protection 中初始转换的 API 参考信息,请参阅: