同态加密的GM方案

Goldwasser-Micali (GM) 方案

同态加密允许在密文上直接执行计算,结果解密后与明文上执行相同计算一致。

Goldwasser-Micali (GM) 加密方案(1982)是第一个基于标准数论困难假设(二次剩余问题)证明语义安全(IND-CPA)的概率公钥加密方案,同时天然支持异或(XOR)同态

数学基础:二次剩余与 Legendre 符号

1. 二次剩余

\(N\) 为正整数,\(a\)\(N\) 互素。若存在 \(x\) 使得

\[x^2 \equiv a \pmod N \]

则称 \(a\) 是模 \(N\)二次剩余;否则称为二次非剩余

  • \(N=pq\) 是两个大素数乘积时,二次剩余问题是指:给定 \((a, N)\),判断 \(a\) 是否为模 \(N\) 的二次剩余。
  • 若已知 \(p, q\),则可利用 Legendre 符号判定:

    \[\left(\frac{a}{p}\right) \equiv a^{(p-1)/2} \pmod p \]

    值为 \(1\) 表示二次剩余,\(-1\) 表示非剩余。同理对 \(q\)。只有对 \(p\)\(q\) 均为剩余时,\(a\) 才是模 \(N\) 的二次剩余。

2. 特殊素数选取

GM 方案要求 \(p \equiv q \equiv 3 \pmod 4\),这样 \(-1\) 是模 \(p\) 和模 \(q\) 的非剩余,方便构造公钥参数。

GM 加密方案描述

GM 方案包含三个算法:密钥生成、加密、解密。明文按比特处理,即 \(m = (m_1, m_2, \dots, m_n) \in \{0,1\}^n\)

1. 密钥生成 (KeyGen)

  • 随机选择两个大素数 \(p, q\),满足 \(p \equiv q \equiv 3 \pmod 4\)
  • 计算 \(N = p q\)
  • 选取一个整数 \(a\),使得:

    \[\left(\frac{a}{p}\right) = -1,\quad \left(\frac{a}{q}\right) = -1 \]

    \(a\) 是模 \(p\) 和模 \(q\) 的二次非剩余,从而 \(a\) 是模 \(N\)非剩余
  • 公钥:\(\mathrm{pk} = (a, N)\);私钥:\(\mathrm{sk} = (p, q)\)

2. 加密 (Encrypt)

对明文位 \(m_i \in \{0,1\}\)

  • 随机选取 \(b_i \in \mathbb{Z}_N^*\)(与 \(N\) 互素)。

  • 计算密文:

    \[c_i = b_i^2 \cdot a^{m_i} \pmod N \]

  • 输出密文向量 \(c = (c_1, c_2, \dots, c_n)\)

  • \(m_i = 0\),则 \(c_i = b_i^2\) 是一个二次剩余(模 \(N\))。

  • \(m_i = 1\),则 \(c_i = b_i^2 \cdot a\),由于 \(a\) 是非剩余,乘以剩余仍然是非剩余,因此 \(c_i\) 是二次非剩余。

3. 解密 (Decrypt)

给定密文 \(c_i\),利用私钥 \(p, q\) 判断 \(c_i\) 是否为模 \(N\) 的二次剩余:

  • 计算 \(c_{i,p} = c_i \bmod p\)\(c_{i,q} = c_i \bmod q\)
  • 检查:

    \[c_{i,p}^{(p-1)/2} \equiv 1 \pmod p \quad\text{且}\quad c_{i,q}^{(q-1)/2} \equiv 1 \pmod q \]

    若二者均成立,则 \(c_i\) 是二次剩余,\(m_i=0\);否则 \(m_i=1\)

加法同态性(XOR)

GM 方案满足密文相乘对应明文异或。设有两个明文位 \(m_1, m_2\),对应密文:

\[c_1 = b_1^2 a^{m_1},\quad c_2 = b_2^2 a^{m_2} \pmod N \]

则:

\[c_1 \cdot c_2 = (b_1 b_2)^2 \cdot a^{m_1 + m_2} \pmod N \]

  • \(m_1 + m_2 = 0\)\(1\),则 \(a^{m_1+m_2}\) 的指数即为异或值 \(m_1 \oplus m_2\)
  • \(m_1 = m_2 = 1\),则 \(m_1+m_2 = 2\),此时 \(c_1 c_2\) 是一个二次剩余(因为 \(a^2\) 是剩余),解密判定为 \(0\),而 \(1 \oplus 1 = 0\),结果一致。

因此,密文乘积对应明文按位异或,即加法同态(在 \(\mathbb{F}_2\) 上)。

安全性

GM 方案的语义安全性(IND-CPA)归结为二次剩余问题的困难性。在 CPA 中,敌手能区分明文 \(0\)\(1\) 的密文,当且仅当它能区分二次剩余与非剩余,而这在 \(N\) 的分解未知时是困难的。因此,GM 方案是概率加密 ——同一明文每次加密因随机 \(b_i\) 不同而得到不同密文,确保语义安全。

效率与局限性

指标 数值
明文长度 1 比特
密文长度 \(\log_2 N\) 比特(约 2048 位)
密文膨胀率 \(\log_2 N\)(约 2000 倍)
  • 优点:基于经典数论假设,安全性基础坚实;首次实现可证明安全的概率加密。
  • 缺点:密文膨胀极大,每次加密仅处理 1 比特,实用性受限。

小结

  • GM 方案是首个 IND-CPA 安全的概率公钥加密,基于二次剩余困难假设。
  • 天然支持 XOR 同态(密文乘法对应明文异或),属于加法同态加密。
  • 密文膨胀严重,主要用于理论教学和小规模应用(电子投票中的位运算)。
posted @ 2026-06-24 12:00  lumiere_nebula  阅读(18)  评论(0)    收藏  举报