準同型暗号

準同型暗号（じゅんどうけいあんごう）（英: Homomorphic Encryption, HE）は、準同型性を有するような暗号方式である。RSA暗号、ElGamal暗号など整数論をベースとした多くの公開鍵暗号は、この特徴を有しており、電子投票、電子マネーなどの暗号プロトコルにおいて利用される。 二つの暗号文 E n c ( m 1 ) , E n c ( m 2 ) {\displaystyle {\rm {Enc}}(m_{1}),{\rm {Enc}}(m_{2})} が与えられた時に、平文や秘密鍵なしで E n c ( m 1 ∘ m 2 ) {\displaystyle {\rm {Enc}}(m_{1}\circ m_{2})} を計算できる。 ここで ∘ {\displaystyle \circ } は、加法 + {\displaystyle +} や乗法 × {\displaystyle \times } のような二項演算子とする。直感的に言うと、もし E n c {\displaystyle {\rm {Enc}}} が加法に関して準同型性を有するものであれば、 E n c ( 3 ) {\displaystyle {\rm {Enc}}(3)} と E n c ( 2 ) {\displaystyle {\rm {Enc}}(2)} から E n c ( 5 ) {\displaystyle {\rm {Enc}}(5)} を計算できる。 加法、乗法の両方の演算が可能な完全準同型性暗号は長らく見つかっていなかったが、2009年にGentryらにより発表された。準同型性は暗号プロトコルを構成する上で非常に有用な性質ではあるが、暗号文のみから、平文の操作を可能としてしまうため、通常利用には適していない。 RSA暗号の公開鍵を ( e , n ) {\displaystyle (e,n)} 、秘密鍵を ( d , n ) {\displaystyle (d,n)} とする。 ここで n {\displaystyle n} は合成数とする。 この暗号方式では、平文 m 1 , m 2 ∈ Z n ∗ {\displaystyle m_{1},m_{2}\in \mathbb {Z} _{n}^{*}} の暗号文は、それぞれ m 1 e mod n , m 2 e mod n {\displaystyle m_{1}^{e}{\bmod {n}},m_{2}^{e}{\bmod {n}}} となる。この二つの暗号文から m 1 × m 2 {\displaystyle m_{1}\times m_{2}} の 暗号文を構成するためには、二つの暗号文の乗算をすればよい。これは、 ( m 1 × m 2 ) e mod n {\displaystyle (m_{1}\times m_{2})^{e}{\bmod {n}}} となることからも確かめられる。 位数が素数 q {\displaystyle q} であるような群 G = ⟨ g ⟩ {\displaystyle G=\langle g\rangle } 上のElGamal暗号を考える。公開鍵を ( g , y = g x ) {\displaystyle (g,y=g^{x})} 、秘密鍵を x {\displaystyle x} とする。平文 m 1 , m 2 ∈ G {\displaystyle m_{1},m_{2}\in G} の暗号文は、 ( g r 1 , y r 1 ⋅ m 1 ) {\displaystyle (g^{r_{1}},y^{r_{1}}\cdot m_{1})} 、 ( g r 2 , y r 2 ⋅ m 2 ) {\displaystyle (g^{r_{2}},y^{r_{2}}\cdot m_{2})} となる。 この二つの暗号文を掛け合わせれば、 ( g r 1 + r 2 , y r 1 + r 2 ⋅ ( m 1 m 2 ) ) {\displaystyle (g^{r_{1}+r_{2}},y^{r_{1}+r_{2}}\cdot (m_{1}m_{2}))} となり、 m 1 m 2 {\displaystyle m_{1}m_{2}} の暗号文となる。 ElGamal暗号に若干の修正を加えれば、加法に関して準同型性を有する公開鍵暗号を構成できる。上と同じように、位数が素数 q {\displaystyle q} であるような群 G = ⟨ g ⟩ = ⟨ h ⟩ {\displaystyle G=\langle g\rangle =\langle h\rangle } 上のElGamal暗号を考える。公開鍵を ( g , h , y = g x ) {\displaystyle (g,h,y=g^{x})} 、秘密鍵を x {\displaystyle x} とする。平文 m 1 , m 2 ∈ Z q {\displaystyle m_{1},m_{2}\in \mathbb {Z} _{q}} の暗号文は、 ( g r 1 , y r 1 ⋅ h m 1 ) {\displaystyle (g^{r_{1}},y^{r_{1}}\cdot h^{m_{1}})} 、 ( g r 2 , y r 2 ⋅ h m 2 ) {\displaystyle (g^{r_{2}},y^{r_{2}}\cdot h^{m_{2}})} となる。 この二つの暗号文を掛け合わせれば、 ( g r 1 + r 2 , y r 1 + r 2 ⋅ h m 1 + m 2 ) {\displaystyle (g^{r_{1}+r_{2}},y^{r_{1}+r_{2}}\cdot h^{m_{1}+m_{2}})} となり、 m 1 + m 2 {\displaystyle m_{1}+m_{2}} の暗号文となる。 平文 m ∈ Z n {\displaystyle m\in \mathbb {Z} _{n}} に対するPaillier暗号(en:Paillier cryptosystem)の暗号文は、 g m ⋅ r n mod n 2 {\displaystyle g^{m}\cdot r^{n}{\bmod {n^{2}}}} である。ここで g ∈ Z n 2 ∗ {\displaystyle g\in \mathbb {Z} _{n^{2}}^{*}} 、 r ∈ Z n ∗ {\displaystyle r\in \mathbb {Z} _{n}^{*}} である。この公開鍵暗号は加法に関して、準同型性を有する。すなわち、 m 1 , m 2 {\displaystyle m_{1},m_{2}} の暗号文 g m 1 ⋅ r 1 n , g m 2 ⋅ r 2 n mod n 2 {\displaystyle g^{m_{1}}\cdot {r_{1}}^{n},g^{m_{2}}\cdot {r_{2}}^{n}{\bmod {n^{2}}}} から m 1 + m 2 {\displaystyle m_{1}+m_{2}} の暗号文を計算することは容易である。 すなわち、 g m 1 ⋅ r 1 n × g m 2 ⋅ r 2 n mod n 2 = g m 1 + m 2 ⋅ ( r 1 r 2 ) n mod n {\displaystyle g^{m_{1}}\cdot {r_{1}}^{n}\times g^{m_{2}}\cdot {r_{2}}^{n}{\bmod {n^{2}}}=g^{m_{1}+m_{2}}\cdot (r_{1}r_{2})^{n}{\bmod {n}}} とできる。 準同型の性質により、これらの暗号方式においては、 k {\displaystyle k} と E n c ( m ) {\displaystyle {\rm {Enc}}(m)} から E n c ( k m ) {\displaystyle {\rm {Enc}}(km)} を計算できる。 例えば、Paillier暗号ならば、 k {\displaystyle k} と g m ⋅ r n mod n 2 {\displaystyle g^{m}\cdot r^{n}{\bmod {n^{2}}}} から、 ( g m ⋅ r n ) k = g k m ⋅ ( r k ) n {\displaystyle (g^{m}\cdot r^{n})^{k}=g^{km}\cdot (r^{k})^{n}} とすることにより、 k m {\displaystyle km} の暗号文を得ることができる。 準同型性暗号には、その性質から数多くのアプリケーションがある。その代表的なものとしては、電子マネーや電子投票などがある。また、暗号プロトコルの設計において多く利用される紛失通信(en:Oblivious transfer)プロトコルといったものもある。