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
:指定要假名化的数据类型。必须是ip
、date
、integer
、ipv4
或ipv6
之一。type-params
:根据所选类型指定额外的类型参数。目前,只有integer
类型需要强制的min
和max
类型参数,以指定其范围。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 的关键特性:
- AES (Advanced Encryption Standard): AES 是一种广泛使用的对称加密算法,它以128位的块大小对数据进行加密。
- GCM (Galois/Counter Mode): GCM 是一种认证加密模式,它不仅提供加密,还提供数据完整性校验和重放攻击保护。GCM 使用一个nonce(一次性密码),也称为初始化向量(IV),以及一个附加的认证标签(tag)来确保数据的完整性和真实性。
- SIV (Synthetic Initialization Vector): SIV 是一种模式,它允许使用相同的加密密钥对多个消息进行加密,而不需要为每个消息生成新的随机IV。这在某些场景下非常有用,比如当需要加密大量数据或者需要从相同的密钥派生多个IV时。
EncryptionAESGCMSIV
类:
在 Java 中,EncryptionAESGCMSIV
类可能是用来实现 AES/GCM/SIV 加密模式的一个类。这个类可能包含以下功能:
- 加密数据:使用 AES/GCM/SIV 算法对输入数据进行加密,并生成密文和认证标签。
- 解密数据:使用相同的加密密钥和正确的认证标签对密文进行解密,恢复原始数据。
- 生成和验证认证标签:在加密过程中生成认证标签,并在解密过程中验证这个标签以确保数据的完整性和真实性。
使用场景:
AES/GCM/SIV 算法适用于需要高安全性和效率的场景,特别是在以下情况:
- 数据需要在不安全的通道上传输,比如互联网。
- 需要确保数据的完整性和防止篡改。
- 需要抵抗重放攻击,即攻击者不能简单地重放之前捕获的加密数据。
注意事项:
使用任何加密算法时,都需要遵循最佳实践,比如:
- 使用强密钥。
- 密钥管理应该安全,避免泄露。
- 使用合适的随机数生成器来生成 IV 或 nonce。