Summarize Timeline Top Qs Fact Check
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}
の暗号文を得ることができる。