IDベース暗号
鍵交換
概要
鍵交換は,自身の秘密鍵と他パーティの公開鍵を用いて共有鍵を生成するスキームである.
鍵交換スキームは,一般的に次の処理から構成される.
- 各パーティの鍵ペアを構成するためのシステムパラメータを決定する.
- 自身の秘密鍵をシステムパラメータを用いて生成する.
- 他パーティの IDベース公開鍵を取得する.
- 秘密鍵と公開鍵を用いて,暗号演算を実行し共有情報を生成する.
- 鍵導出関数とそのパラメータを用いて,共有情報より共有鍵を生成する.
基本アルゴリズム
ペアリング演算 $e_m$ を用いた共有情報(鍵)の生成は,次のように行える.
- 鍵
- 公開鍵: $P \in E[m]$
- 秘密鍵: $Q = r P \in E[m]$
- システムパラメータ(秘密情報): $r$ (乱数)
- 情報共有
利用者 $A$ と $B$ が鍵を共有したければ,互いに相手の公開鍵 $(P_A, P_B)$ を入手し,それを自分の秘密鍵 $(Q_A, Q_B)$ を用いてペアリング演算
$e_m$ を以下のように計算することで同じ情報 $K_{AB}$ を共有することができる.
\[ K_{AB} = e_m(Q_A, P_B) = e_m(P_A, Q_B) = e_m(P_A, P_B)^r \]
Wang Key Agreement
共有鍵列 $K_1$ ~ $K_t$ を以下の手順により生成する (W-KA-G).
(→ IEEE P1636.3/D1 Draft Standard for Identity-based Public-key Cryptography Using Pairings 参照)
- システムパラメータを取得する.
- IDベース秘密鍵 $U$ と鍵ペア $(u, V)$ を選択する (P-WKA-D1、P-WKA-D2プリミティブ).
- 他のパーティのIDベース公開鍵 $W'$ と公開鍵 $V'$ を取得する.
- $U$,$u$,$V$,$W'$,$V'$ より共有情報 $z$ を生成する (P-WKA-D3プリミティブ).
- $z$ を FE2OSP によりオクテット列 $Z$ に変換する.
- 鍵交換パラメータ $P_i$ を取得する.
- $Z$ と $P_i$ より,鍵導出関数(KDF1等) を用いて共有鍵 $K_i$ を生成する.
SCC Key Agreement
共有鍵列 $K_1$ ~ $K_t$ を以下の手順により生成する(SCC-KA-G).
(→ IEEE P1636.3/D1 Draft Standard for Identity-based Public-key Cryptography Using Pairings 参照)
- IDベース秘密鍵 $d$ と鍵ペア $(x, E = xP)$ を選択する.
- 他のパーティのIDベース公開鍵 $Q$ と公開鍵 $E'$ を取得する.
- $d$,$x$,$Q$ より共有情報 $z$ を生成する (P-SCK-D1プリミティブ).
- $z$ を FE2OSP によりオクテット列 $Z$ に変換する.
- 鍵交換パラメータ $P_i$ を取得する.
- $Z$ と $P_i$ より,鍵導出関数(KDF1等) を用いて共有鍵 $K_i$ を生成する.