Pseudonymization算法

https://www.youtube.com/watch?v=V2UJ9xzbJGs&t=10633s
https://www.bis.org/about/bisih/topics/cbdc/mcbdc_bridge.htm
BIS Innovation Summit 2024: Navigating rapid innovation (day 1)中,mbridge (showcase)中讲到,其项目的privacy中使用了 Pseudonymization algorithm。下面针对 Pseudonymization 展开详细讲述。

1. https://github.com/kiprotect/kodex

假名化(Pseudonymization)算法可以分为几个类别,包括可逆和不可逆方法,以及结构保持和格式保持方法。以下是网页中提到的一些关键点:

假名化技术(PET)

  • 假名化是一种隐私增强技术,它将数据点中的直接或间接标识符替换为其他“假名”值,从而保护数据所属个体的身份。

假名化方法分类

  • 可逆假名化方法:允许数据去假名化,即利用额外数据(如加密密钥或映射表)从假名恢复到原始标识符。
  • 不可逆假名化方法:不允许从假名恢复到原始标识符。
  • 确定性假名化方法:对同一个标识符应用时总是创建相同的假名。
  • 非确定性方法:即使多次应用到同一个标识符,也会生成随机假名。
  • 结构保持假名化方法:保持标识符的特定内部结构。
  • 格式保持假名化方法:保持数据的原始格式。

可逆方法

Kodex支持基于格式保持加密的可逆假名化方法。使用原始密钥可以解密/去假名化生成的假名。例如,merengue假名化方法可以操作任意二进制数据,并生成二进制假名,此外还可以保持数据的前缀结构。

结构保持方法

基于merengue方法,Kodex提供了多种结构保持假名化方法,可以操作如时间戳、IP地址和数字等数据类型。这些方法保持原始数据的格式,并且也可以保持结构信息。

不可逆方法

Kodex也支持不可逆假名化方法,特别是基于密钥哈希的消息认证码(HMAC)的假名化,以及无密钥哈希的假名化(强烈不推荐)。例如,以下动作生成基于HMAC的假名:

假名化方法的配置参数

  • merengue方法接受一个encode参数,指定结果字节字符串的编码。目前唯一可能的值(也是默认值)是base64
  • structured方法接受以下参数:
    • preserve-prefixes:如果为_true_,将保留结构化数据值的前缀。例如,使用_date_格式时,具有共同前缀的日期(例如相同的年和月)将映射到也共享相同长度前缀的假名。默认为_false_。
    • type:指定要假名化的数据类型。必须是ipdateintegeripv4ipv6之一。
    • type-params:根据所选类型指定额外的类型参数。目前,只有integer类型需要强制的minmax类型参数,以指定其范围。
    • format:指定要假名化的数据的类型依赖格式(如果适用)。目前,只有date类型支持format参数。

2. https://github.com/aws-samples/pseudonymization-service

示例中,pseudonymization-service 是利用 AES+gcm+siv实现的。
AES/GCM/SIV 是一种基于 AES(高级加密标准)的加密模式,它结合了 Galois/Counter Mode(GCM)和 SIV(Synthetic Initialization Vector)的特性。

AES/GCM/SIV 的关键特性:

  1. AES (Advanced Encryption Standard): AES 是一种广泛使用的对称加密算法,它以128位的块大小对数据进行加密。
  2. GCM (Galois/Counter Mode): GCM 是一种认证加密模式,它不仅提供加密,还提供数据完整性校验和重放攻击保护。GCM 使用一个nonce(一次性密码),也称为初始化向量(IV),以及一个附加的认证标签(tag)来确保数据的完整性和真实性。
  3. SIV (Synthetic Initialization Vector): SIV 是一种模式,它允许使用相同的加密密钥对多个消息进行加密,而不需要为每个消息生成新的随机IV。这在某些场景下非常有用,比如当需要加密大量数据或者需要从相同的密钥派生多个IV时。

EncryptionAESGCMSIV 类:

在 Java 中,EncryptionAESGCMSIV 类可能是用来实现 AES/GCM/SIV 加密模式的一个类。这个类可能包含以下功能:

  • 加密数据:使用 AES/GCM/SIV 算法对输入数据进行加密,并生成密文和认证标签。
  • 解密数据:使用相同的加密密钥和正确的认证标签对密文进行解密,恢复原始数据。
  • 生成和验证认证标签:在加密过程中生成认证标签,并在解密过程中验证这个标签以确保数据的完整性和真实性。

使用场景:

AES/GCM/SIV 算法适用于需要高安全性和效率的场景,特别是在以下情况:

  • 数据需要在不安全的通道上传输,比如互联网。
  • 需要确保数据的完整性和防止篡改。
  • 需要抵抗重放攻击,即攻击者不能简单地重放之前捕获的加密数据。

注意事项:

使用任何加密算法时,都需要遵循最佳实践,比如:

  • 使用强密钥。
  • 密钥管理应该安全,避免泄露。
  • 使用合适的随机数生成器来生成 IV 或 nonce。