双線形写像を用いた暗号方式

双線形写像を用いて暗号方式を構成することを考えてみます。 以下の説明ではG1, GTを可換な乗法群としています。 簡単のために演算子*を省略して、f*gをfgなどと略記することにします。


双線形DH問題

暗号理論で用いられる双線形写像の代表例としては、楕円曲線上で定義されるWeilペアリングTateペアリングがあります。 実際の計算方法は私の手に余りますので省略します。


ElGamal暗号

まず参考のためにDH問題に基づいたElGamal暗号を整理して再度記述します。

【公開鍵】
g,ga
【受信者の秘密鍵】
a
【暗号化】
送信者がbを選び、
(ga)b = gab
を求め、平文mに対する暗号文をgbとmgabの組
(gb,mgab)
とします(mgabはm*gabですが、以下*はすべて省略することにします)。
【復号化】
暗号文(gb,mgab)のgbと秘密鍵aより、
(gb)a = gab
を求め、
mgab/gab = m
と平文mを求めます。
gaは公開鍵、gbは暗号文から盗聴者にも手に入りますが、gabは求められません(DH問題)。
送信者はbを知っており、受信者はaを知っているので、送信者と受信者のみgabを計算でき、平文mが得られます。


双線形写像を用いた簡易暗号方式1

Elgamal暗号と同様のことを双線形写像を用いて行った場合、

【公開鍵】
e(g,g),e(g,g)a
【受信者の秘密鍵】
a
【暗号化】
送信者がbを選び、
(e(g,g)a)b = e(g,g)ab
を求め、平文mをGTの要素とし、m ∈ GTに対する暗号文をe(g,g)bとme(g,g)abの組
(e(g,g)b,me(g,g)ab)
とします。
【復号化】
暗号文(e(g,g)b,me(g,g)ab)のe(g,g)bと秘密鍵aより、
(e(g,g)b)a = e(g,g)ab
を求め、
me(g,g)ab/ e(g,g)ab = m
と平文mを求めます。
e(g,g)aは公開鍵、e(g,g)bは暗号文から盗聴者にも手に入りますが、e(g,g)abは求められません(DH問題)。
送信者はbを知っており、受信者はaを知っているので、送信者と受信者のみe(g,g)abを計算でき、平文mが得られるということになります。
しかし、これは双線形写像の性質を利用してはいません。


双線形写像を用いた簡易暗号方式2(失敗例)

双線形写像の性質を利用するため、双線形写像の値ではなく、双線形写像に代入する値を鍵にした形を考えてみます。

【公開鍵】
g,ga
【受信者の秘密鍵】
a
【暗号化】
送信者は公開鍵のg,gaと自分で選んだbを用いて
(e(g,ga))b = e(g,g)ab
を求め、平文m ∈ GTに対する暗号文をe(g,g)bとme(g,g)abの組
(gb,me(g,g)ab)
とします。
【復号化】
暗号文(gb,me(g,g)ab)のgb、公開鍵gと秘密鍵aより、
(e(g,gb))a = e(g,g)ab
を求め、
me(g,g)ab/ e(g,g)ab = m
と平文mを求めます。
暗号化、復号化のためにe(g,g)abを双線形写像を用いて計算することにしています。 しかし、この場合、ga,gbは公開鍵、暗号文から盗聴者にも手に入るため、e(ga,gb)=e(g,g)abが求められてしまい、平文mを盗聴者に知られてしまいます。


双線形写像を用いた簡易暗号方式3

そこで、公開鍵を一つ増やすことにします。

【公開鍵】
g,ga,gc
【受信者の秘密鍵】
a
【暗号化】
送信者は公開鍵のga,gcと自分で選んだbを用いて
(e(ga,gc))b = e(g,g)abc
を求め、平文m∈GTに対する暗号文をgbとme(g,g)abの組
(gb,me(g,g)abc)
とします。
【復号化】
暗号文(gb,me(g,g)abc)のgb、公開鍵gcと秘密鍵aより、
(e(gc,gb))a = e(g,g)abc
を求め、
me(g,g)abc/ e(g,g)abc = m
と平文mを求めます。
g,ga,gcは公開鍵、gbは暗号文から盗聴者にも手に入りますが、e(g,g)abcは求められません(双線形DH問題)。
送信者はbを知っており、受信者はaを知っているので、送信者と受信者のみe(g,g)abcを計算でき、平文mが得られるということになります。
公開鍵を一つ増やしましたが、増やした公開鍵をユーザごとに設定することにより、様々な付加的な機能を追加できる様になります。


双線形写像を用いた簡易暗号方式3の安全性

ElGamal暗号方式の安全性と同じ様に証明してみます。
攻撃者は公開鍵暗号と暗号文を得ることができるとします。
秘密鍵を知らずに簡易暗号方式3を復号することのできる攻撃者がいるとすると双線形DH問題が解けることを示します。
双線形DH問題は効率的には解けない問題であるとしていますので、背理法により、簡易暗号方式3を復号できる攻撃者がいるとすると矛盾が生じることより、このような攻撃者はいないことになります。
双線形DH問題を解こうとしている人をA君とし、簡易暗号方式3を復号することのできる攻撃者をB君とします。

  1. A君には双線形DH問題として、双線形群(G1,GT,e)において、原始元g∈G1とga, gb, gc (a,b,cは正の整数)が与えられますが、a,b,cは教えてもらえません。A君の目的はe(g,g)abcを求めることです。
  2. B君は簡易暗号方式3の公開鍵として、双線形群(G1,GT,e)におけるG1の生成元g、ga,gc, (a,cは正の整数)を与えられますが、a,cは教えてもらえません。B君は暗号文(gb,me(g,g)abc) (bは乱数、m∈GTは平文)を与えられますが、乱数bと平文mは教えてもらえません。B君は秘密鍵を知らなくても簡易暗号方式3を復号できるので、mを計算することができてしまいます。
  3. A君はB君に簡易暗号方式3の公開鍵として、双線形DH問題の双線形群(G1,GT,e)における原始元g∈Gとga, gcを渡します。このときA君も知らない正の整数aが簡易暗号方式3の秘密鍵aになります。
  4. A君はu = gbとし、GTからランダムに要素vを選び、(u,v)を簡易暗号方式3の暗号文としてB君に渡します。このときA君も知らない正の整数bが簡易暗号方式3の送信者が選んだbと置かれたことになります。
  5. B君はA君に渡された暗号文(u,v)から平文mを求めてA君に渡します。復号の式からmは m = v/ e(gc,u)aを満たしていますので、
    e(gc,u)a = v/m
    が成り立ちます。
  6. A君はvを知っており、mもB君から渡されているのでe(gc,u)a = v/mを計算することができます。このとき
    e(gc,u)a = e(gc,gb)a = gabc
    となりますので、A君はv/mを計算することにより双線形DH問題を解いたことになります。