暗号勉強会

あまりコードが出てこない話

2-out-of-2修正Elgamal暗号

修正Elgamal暗号Elgamal暗号を加法に対して準同型性を持つように修正を加えたものです。修正Elgamal暗号について以下のサイトがとても参考になりました!

tex2e.github.io

これに更に修正を加えることで、2-ouf-of-2のしきい値Elgamal暗号を構成することができます。

  • 鍵生成 ここでtsk=tsk _ 1 + tsk _ 2,tpk=tpk _ 1 \cdot tpk _ 2とする。

P _ 1は次のように鍵を生成する。


tpk _ 1 = g ^ {tsk _ 1}

P _ 2は次のように鍵を生成する。


tpk _ 2 = g ^ {tsk _ 2}
  • 暗号化

m\in Z _ qについて暗号文はct=(g ^ r ,tpk ^ r \cdot g ^m)=(u,e)とする。

  • 復号

P _ 1が、ct'=(u,e'=\frac{e}{u ^ {tpk _ 1}})を半分復号する。P _ 2が、m=log _ g \frac{e'}{u ^ {tpk _ 2}}で復号を完了する。

log _ g \frac{e'}{u ^ {tpk _ 2}}=log _ g \frac{\frac{e}{u ^ {tpk _ 1}}}{u ^ {tpk _ 2}}=log _ g \frac{e}{u ^ {tpk _ 1 \cdot tpk _ 2}}=log _ g \frac{tpk ^ r \cdot g ^ m}{g ^ {r \cdot (tsk _ 1 + tsk _ 2)}}=log _ g \frac{g ^ {r \cdot tsk} \cdot g ^ m}{g ^ {r \cdot tsk}}=log _ g g ^m = m

これを利用することで、half-decryptという半分だけ復号された状態を作り出すことができる。これにより、二人がいないと復号できない状態になります。 鍵を複数に分割すれば、n-out-of-nに拡張することもできそうです。

参考文献の論文では集合に関連付けられた値を暗号化したまま集計するのに利用していました。統計値は現実的な値にしかならないので修正Elgamalの欠点である平文空間の小ささは問題にならなそう。

参考文献

https://eprint.iacr.org/2020/385.pdf