PKEET加密

带等式测试的公钥加密(PKEET)通俗讲解与数学原理分析

一、什么是 PKEET?

带等式测试的公钥加密(Public Key Encryption with Equality Test, PKEET),是一种在保密信息的同时,允许受信方判断两个密文是否加密了相同明文的加密方案。

你可以把它看作是“带比较功能的加密”,即:

不解密、不泄密、可判断内容是否一致。


二、为什么需要 PKEET?

现实中有很多隐私场景中,我们只想知道两个值是否一样,而不想暴露值本身,例如:

  • 医院之间是否接诊了同一个癌症患者?
  • 银行之间是否共享了同一个风险客户?
  • 匿名用户之间是否喜欢了同一部电影?
  • 云存储中是否上传了重复的加密文件?

这时候就需要一种“可比较但不可识破”的加密机制,PKEET 就是为这些场景而生的。


三、PKEET 的基本功能

PKEET 主要提供六个算法组件:

算法 功能说明
Setup 系统初始化,生成主密钥
KeyGen 用户生成自己的公钥和私钥
Encrypt 加密明文并生成可测试的密文
Decrypt 使用私钥恢复明文
TestKeyGen 为受信方生成等式测试密钥
Test 判断两个密文是否加密了相同的明文

四、类比生活:加密后的“指纹比对”

我们可以把 PKEET 想象成:

  • 把明文变成一个只有授权人才能识别的“指纹”;
  • 密文中藏着这个“指纹”;
  • 授权方可以把两个指纹对一下,判断是否是同一个人;
  • 但看不出指纹代表谁。

五、数学原理解析:一个基于双线性对的 PKEET 实现

现在我们深入到一个经典实现:基于**双线性对(Bilinear Pairing)**的 PKEET。

1. 数学基础

设:

  • G1,G2G_1, G_2 是两个椭圆曲线群,阶为素数 pp
  • e:G1×G2GTe: G_1 \times G_2 \rightarrow G_T 是一个非退化、双线性、可计算的配对函数
  • g1G1g_1 \in G_1, g2G2g_2 \in G_2 是生成元

2. 算法结构


🔧 Setup(系统初始化)

  • 选择私有主密钥 αZp\alpha \in \mathbb{Z}_p
  • 设置主公钥为 Ppub=g2αG2P_{pub} = g_2^\alpha \in G_2
  • 系统参数:(G1,G2,GT,e,g1,g2,Ppub)(G_1, G_2, G_T, e, g_1, g_2, P_{pub})

🔐 KeyGen(用户密钥生成)

用户选择私钥 sk=xZpsk = x \in \mathbb{Z}_p

计算公钥:

  • pk1=g1xG1pk_1 = g_1^x \in G_1
  • pk2=g2xG2pk_2 = g_2^x \in G_2

🔏 Encrypt(加密)

给定明文 mZpm \in \mathbb{Z}_p,选择随机 rZpr \in \mathbb{Z}_p

  • C1=g1rG1C_1 = g_1^r \in G_1
  • C2=pk2rG2C_2 = pk_2^r \in G_2
  • C3=me(Ppub,pk2)rGTC_3 = m \cdot e(P_{pub}, pk_2)^r \in G_T
  • Tag = H(m)(哈希明文生成标签)

最终密文为 CT=(C1,C2,C3,Tag)CT = (C_1, C_2, C_3, Tag)


🔓 Decrypt(解密)

用私钥 sk=xsk = x 解密:

m=C3e(C1,pk2α)=C3e(g1r,g2xα)m = \frac{C_3}{e(C_1, pk_2^\alpha)} = \frac{C_3}{e(g_1^r, g_2^{x\alpha})}

因为:

C3=me(Ppub,pk2)r=me(g2α,g2x)r=me(g2,g2)αxrC_3 = m \cdot e(P_{pub}, pk_2)^r = m \cdot e(g_2^\alpha, g_2^x)^r = m \cdot e(g_2, g_2)^{\alpha x r}


🧪 TestKeyGen(生成等式测试密钥)

系统为某个用户生成等式测试密钥:

  • 令该用户的授权密钥为 TK=αTK = \alpha,只暴露等式测试功能

或者直接发布一个用于测试的函数,输入两个 Tag 对比即可。


✅ Test(等式测试)

判断两个密文是否是相同明文加密:

  • 比较两者的 TagTag:即 Tag1=?Tag2\text{Tag}_1 \stackrel{?}{=} \text{Tag}_2

由于 Tag 是 H(m)H(m),而 H 是不可逆的哈希,无法通过 Tag 恢复 m,但相等说明原始 m 相等。


六、安全性分析

安全目标

安全性质 说明
语义安全性 未授权者不能从密文中恢复明文
标签隐藏性 Tag 不可逆,即使泄露也无法获取明文
可控等式测试 只有授权者才能执行 Test 操作

抗攻击性

  • 对标签的保护依赖于哈希函数抗碰撞性;
  • 对明文保护依赖双线性对的 Decisional Bilinear Diffie-Hellman 假设(DBDH)。

七、PKEET 应用实例

场景 功能
医疗病例比对 医院之间加密病例,通过等式测试判断是否是同一患者
银行黑名单共享 不泄露客户身份的前提下识别重复嫌疑人
社交匹配平台 双方兴趣标签加密,通过等式测试发现匹配
云存储去重 加密文件上传,平台判断是否重复

八、小结与展望

PKEET 是在传统加密之上增强了一种“加密下可比较性”的能力,它既保留了隐私保护的优点,又提升了数据的交互性和可用性。在数据共享日益频繁而隐私问题突出的今天,PKEET 可能会在医疗、金融、社交和云计算等多个领域成为核心加密工具。

未来研究还可能聚焦在:

  • 支持模糊匹配的 PKEET
  • 高效标签生成与压缩
  • 与可搜索加密(PEKS)的融合