2021年度暗号分科会
第9回、第10回

@hakatashi

2021-08-05 / 2021-08-19

第2部 新しい暗号技術

  • 2000年以降に生まれた新しい暗号技術

    • IDベース暗号

    • 検索可能暗号

    • プロキシ暗号

    • 放送型暗号

    • 属性ベース暗号

    • 関数型暗号

    • 準同型暗号

    • ゼロ知識証明

  • 今日はこれらの暗号のベースとなる
    楕円曲線のペアリングについて話す

7.1 ペアリング

7.1 ペアリング

  • 第5章で導入した「楕円曲線⇔トーラス上のベクトル」の
    アナトミーを用いて説明する
  • 楕円曲線上の点\(P\)と\(Q\)に対して
    それらが囲う平行四辺形の面積を\(S(P,Q)\)とする
  • ペアリングは有限体\(F_p\)のある元\(g\)に対して$$e(P,Q)=g^{S(P,Q)}$$で定義される

7.1 ペアリング

重要な性質

$$e(aP,bQ)=e(P,Q)^{ab}$$

$$e\left(P_{1}+P_{2},Q\right)=e\left(P_{1},Q\right)e\left(P_{2},Q\right)$$

$$e\left(P,Q_1+Q_2\right)=e\left(P,Q_1\right)e\left(P,Q_2\right)$$

$$e(Q,P)=e(P,Q)^{-1}$$

7.2 ID を使った鍵共有

ID鍵共有

  • あらかじめ決められたIDを
    公開鍵として利用できる鍵共有

7.2 ID を使った鍵共有

  • 公開鍵生成
    AとBはそれぞれ適当に楕円曲線上の点を取り、
    \(P_A,P_B\)とする 
  • 秘密鍵生成
    生成局がマスター秘密鍵\(s\)を生成し、
    Aに\(K_A:=sP_A\)、Bに\(K_B:=sP_B\)を配る
  • 鍵共有
    Aは\(s_A=e(K_A,P_B)\)、Bは\(s_B=e(P_A,K_B)\)を計算する
  • このとき
    $$\begin{aligned}s_{A} &=e(K_{A},P_{B})=e(sP_{A},P_{B})=e(P_{A},P_{B})^s\\s_{B} &=e(P_{A},K_{B})=e(P_{A},sP_{B})=e(P_{A},P_{B})^s\end{aligned}$$より\(s_A=s_B\)

7.6 DLP とECDLP とペアリング

MOVリダクションの紹介。

MOVリダクションはECDLPをDLPに帰着させる攻撃手法。

 

楕円曲線の点 \(P\) と \(Q=aP\) が与えられたとき
\[f:X\mapsto e(X,bP)\in F_{p}\]

を考えると、
\[f(P)=g^b,f(Q)=g^{ab}\]

※ただし \(g:=e(P,P)\)

 

ECDLPがDLPに帰着されている

7.6 DLP とECDLP とペアリング

ところで、\(P,aP,bP\) が与えられたとき、

  • \(e(P,P)=g\)
  • \(e(P,aP)=g^a\)
  • \(e(P,bP)=g^b\)
  • \(e(aP,bP)=g^{ab}\)

を求めることができることがわかる。

\(g^a\)と\(g^b\)から\(g^{ab}\)を
求める問題をDH問題と呼んだ。

ペアリングを用いるとまるで
DH問題が解けたかのように
\(g^{ab}\)を求めることができる

7.7 IDベース暗号

  • 好きなデータを公開鍵にできる公開鍵暗号
  • 例えばメールアドレスを公開鍵にしたら
    本人認証の必要がなくなる

7.7 IDベース暗号

  • マスター公開鍵: \(P \in E\)
  • マスター秘密鍵: \(s \in \mathbb{Z}\)
  • ユーザーXの公開鍵: \(P_X \in E\)
  • ユーザーXの秘密鍵: \(K_A:=sP_X\)
  • 楕円曲線Eから有限体\(F_q\)へのハッシュ関数: \(h_2\)

をとる。

 

このとき、

$$\begin{aligned}\mathrm{Enc}\left(m\right) &:=\left(rP,m\oplus h_{2}\left(e\left(P_{A},sP\right)^{r}\right)\right)\\\mathrm{Dec}\left(U,v\right) &:=v\oplus h_{2}\left(e\left(K_{A},U\right)\right)\end{aligned}$$である。

ただし \(r\) は暗号化時に生成される乱数。

7.8 IDベース暗号と公開鍵暗号

IDベース暗号の利点とは?

  • 例えばメールアドレスを公開鍵にしたら
    本人認証の必要がなくなる
    • PKIが不要に
  • だが現実に応用しようとすると課題が多い

生成局が必要

  • PKIにおける認証局の代わりに
    マスター生成局という強い権限を持った
    アカウントが必要
  • PKIの認証局は個々の通信の復号まではできないが
    IDベース暗号ではマスター鍵があると
    任意のユーザーの復号ができてしまう

7.8 IDベース暗号と公開鍵暗号

鍵の失効

  • IDベース暗号では公開鍵が (半ば) 固定化されるため、
    秘密鍵が漏洩してしまったときにどのように
    鍵を失効させるかは自明ではない
    • 公開鍵暗号は通常セッションごとに異なる鍵を
      使うのでこの点はあまり問題にならない
  • 鍵の有効期限などを公開鍵に含めることもできるが、
    相手のIDだけで暗号文を送れるという
    利点は失われてしまう

7.9 タイムリリース暗号

  • 時刻センターから送られる署名付きの時報を用いて
    特定の時間以降しか復号できない暗号文を生成する手法

7.9 タイムリリース暗号

  • 時刻センターの公開鍵: \((P,sP)\)
  • 時刻センターの秘密鍵: \(s \in \mathbb{Z}\)
  • 時刻\(T\)から\(E\)へのハッシュ関数: \(H\)

をとる。

時刻センターは時刻\(T\)に\(sH(T)\)を配信する。

このとき、

秘密鍵 \(s_{T_0}=e(H(T_0),rsP)\) を用いて暗号化し、
\(rP\)を同時に公開すると、

※ \(r\) は暗号化時に生成される乱数。

時刻\(T_0\)に時刻センターから送られる\(sH(T_0)\)を用いて
\(e(sH(T_0),rP)=e(H(T_0),rP)^{rs}=s_{T_0}\)を計算できる。

7.10 ペアリングを使ったデジタル署名

  • 秘密鍵: \(x,y \in \mathbb{Z}\)
  • 公開鍵: \(P,Q:=xP,R:=yP\)

をとる。

$$S:=\frac{1}{x+m+yr}P$$として、\((S,r)\)を署名とする。

※ \(r\) は暗号化時に生成される乱数。

 

署名が正当ならば、$$e(S,Q+mP+rR)=e(P,P)$$が満たされる。

Made with Slides.com