はじめに
この資料では,
イデアル格子暗号入門
で紹介されている完全準同型暗号について説明する.完全準同型暗号とは,2つの暗号文に対する足し算と掛け算ができる暗号方式である.
(
イデアル格子暗号入門
と同時に読むと良い思います。)
完全準同型暗号
完全準同型暗号とは,2つの暗号文に対する足し算と掛け算ができる暗号方式である.
数学的準備
本資料を読むにおいて,必要最低限の円分整数の知識について,以下に述べる.
本資料では,円分整数ついて詳しくは説明しない.
本資料を読む分には,円分整数とは
円分整数の性質
で説明する性質を持った,不思議な多項式みたいなものと思ってもらえれば構わない.
円分整数
としたとき,以下のような虚数 を,円分整数または円の 分整数と呼ぶ.(はオイラーの関数)
円分整数全体
円分整数全体の集合を と表記する.
円分整数の性質
円分整数同士の演算では以下の性質が成り立つ.
(円分整数は可換環である.)
円分整数の性質1. 演算可能
円分整数同士は加法,減法,乗法ができる.
加法
円分整数同士は足し算ができ,その和は各係数を足した円分整数になる.
減法
円分整数同士は引き算ができ,その差は各係数を引いた円分整数になる.
乗法
円分整数同士は掛け算ができる.
- 多項式の掛け算と同じように計算できる.
- 具体的な乗法の方法について,本資料では紹介しない.
円分整数の性質2. 演算の閉性
円分整数は加法,減法,乗法について閉じる
加法の閉性
円の 分整数同士は足し算ができ,結果は必ず円の 分整数になる.
減法の閉性
円の 分整数同士は引き算ができ,差は必ず円の 分整数になる.
乗法の閉性
円の 分整数同士は掛け算ができ,積は必ず円の 分整数になる.
円分整数の性質3. 演算の可換性
円分整数の加法と乗法は可換である.
加法の可換性
円分整数同士の加法は可換である.
乗法の可換性
円分整数同士の乗法は可換である.
円分整数の性質4. 整数との演算
スカラー倍
整数と円分整数はかけることができ,その積は円分整数の各項が整数倍されたものになる.なおこの演算は可換である.
整数との剰余
円分整数を整数で割ってあまりをとることができる.その剰余は円分整数の各項を整数でわってあまりを,各項の係数とした円分整数とする.
整数との除算
円分整数を整数()で割ることができる.その商は円分整数の各項を整数でわったものを,各項の係数とした円分整数とする.のとき,は円分整数に閉じない.
その他表記
〜 までの整数の集合
までの整数の集合(実数がでた場合は,0に近づけて切り捨てる)
※ 一般的な表記と異なる.
の要素を各係数にもつ円分整数全体.
の要素を各係数にもつ円分整数全体.
をで割ったあまりを表す.あまりはにとる.が円分整数の場合,の各係数をで割った係数を持つ円分整数を表す.
をで割ったあまりを表す.あまりはより大きく以下にとる.円分整数の場合,の各係数をで割った係数を持つ円分整数を表す.
ををで割ったあまりが等しい(合同)
からランダム(※一様乱数的)に要素を取り出してとする.
からランダム(※一様乱数的)に要素を取り出してとする.
各係数に平均がかつ分布がのガウス乱数を持つ,円分整数を取り出してとする.
※ 一般的な表記と異なる.
暗号化と復号
本節では,方式の暗号化/復号の仕組みについて述べる.
具体的に,本節は公開鍵の暗号の設計に必要な暗号学的仮定について説明した後,暗号化と復号の手順についてそれぞれ説明する.
RLWE 問題
RLWE(Ring Learning With Errors)問題とは,以下のような次元の大きいが存在する時,からを求めるのが難しいという問題である.は大きな自然数,は円分整数の次元である.
秘密鍵
の一様乱数から選んだ個の係数を持つ円分整数.
ノイズ
平均がかつ分布がのガウス乱数から選んだ,個の要素を持つ円分整数. の大きさは大きすぎても,小さすぎてもいけない.
公開鍵1
の一様乱数から選んだ個の係数を持つ円分整数.
公開鍵2
との積に,を足して,のあまりをとった円分整数.
が大きすぎると復号できなくなり,小さすぎると安全でなくなるため,丁度良いサイズが求められている.
一般にはにくらべて,かなり小さくとれることが知られている.
手順
以下の鍵生成,暗号化,復号の手順にそれぞれ示す.
鍵生成
以下の手順で公開鍵,秘密鍵を生成する.以下のは大きな自然数,円分整数の次元である.
- 以下を生成する.
- 公開鍵 を計算する.
- ではなく, を足していることに注意 - 公開鍵を,秘密鍵とする.
暗号化
以下の手順で,平文をで暗号化した,暗号文を計算する.
- 小さな一様乱数を集めた整数 を生成する.
- ノイズ を生成する.
- を計算する.
- を計算する.
- 暗号文を とする.
復号
暗号文と秘密鍵用いて,平文を以下のように求める.
健全性の証明
この節では暗号文が正しく復号されることを説明する.
(が成り立つことを,以下の1.と2.で証明する.)
大まかには,1.でであることを証明した後,2.で であることを証明する.
1. 平文とノイズの和であることの証明
まず以下の通り, であることがわかる.
※実際には等式はなりたたず,を法として合同である
とおくと,これは平文とノイズの和になっている.
(まとめると,となる)
2. ノイズの消去
以下の理由で,が成り立つ.
の各係数がより小さい場合, となる.
- を構成する,,, ,どれをとっても,にくらべてかなり小さい為,はより小さくなる.
の各係数は,必ず偶数である.の各係数はになる.
の各係数には,かが入っていた為,2のあまりをとっても値が変わらない.
足し算と掛け算
この暗号方式は,暗号化した円分整数同士の,足し算と掛け算ができる.
足し算
平文,秘密鍵による平分の暗号文と復号処理がある時,以下を満たすような足し算を考える.
以下に足し算の手順と健全性の証明を以下に述べる.
手順
同じ秘密鍵でそれぞれ暗号化された,の暗号文, の暗号文があるとする.
を暗号化した暗号文は,次のように計算できる.
健全性の証明
暗号文が正しく復号されることを以下に証明する.
基本的な流れは,
通常の暗号化に対する健全性の証明
と同じである.
1. 平文とノイズの和であることの証明
と置く.
を暗号化した暗号文を復号したものは,以下の通り,平文とノイズ の和になっていることがわかる.
2. ノイズの消去
以下の理由で,が成り立つ.
がより小さい場合, となる.
- の各係数は以下の理由でより小さい
- を構成する,,, ,どれをとっても,にくらべてかなり小さい
- と同じ理由ではよりかなり小さい.
の各係数は,必ず偶数である.の各係数はになる.
の各係数はなので,2で割ったあまりをとることで,正しい計算結果を得ることができる.
掛け算
平文,秘密鍵による平分の暗号文と復号処理がある時,以下を満たすような掛け算を考える.
まず簡単な掛け算の方法について述べる.その掛け算の方法では,積の暗号文がもつ成文の数が増えてしまう問題がある.
最後に成文の数が増えない掛け算の方法について述べる.
シンプルな方法
以下にシンプルな方式の手順,健全性,この方式の問題点についてそれぞれ述べる.
手順
以下にシンプルな方式の掛け算の手順について述べる.
この方式では,復号の仕方が通常の復号と変わるため,
その手順についても述べる.
掛け算
同じ秘密鍵でそれぞれ暗号化された,の暗号文, の暗号文があるとする.
を暗号化した暗号文は,次のように計算できる.
復号
暗号文と秘密鍵用いて,平文を以下のように求める.
健全性の証明
暗号文が正しく復号されることを以下に証明する.
基本的な流れは,
通常の暗号化に対する健全性の証明
と同じである.
1. 平文とノイズの和であることの証明
と置く.
を暗号化した暗号文を復号したものは,以下の通り,平文とノイズ の和になっていることがわかる.
とおくと,これは平文とノイズの和になっている.
(まとめると,となる)
2. ノイズの消去
以下の理由で,が成り立つ.
がより小さい場合, となる.
- は以下の理由でより小さい
- とは,にくらべてかなり小さい
- を構成する,,,,どれをとっても,にくらべてかなり小さい
- と同じ理由ではよりかなり小さい.
の各係数は,必ず偶数である.の各係数はになる.
の各係数はなので,2で割ったあまりをとることで,正しい計算結果を得ることができる.
問題点
この方式には,入力に対して出力の成分の数が大きくなるという問題がある.
例えば,以下のように2成分同士の掛け算では,3成分になる.
- 2成分の掛け算(i.e. との掛け算)をすると,積が3成分(i.e. )になる.
このように,掛け算を繰り返せば繰り返すほど,出力する成分の数が大きくなることが知られている.
成文の数が増えない掛け算の方法
以下に出力が必ず2成分になる掛け算の手順,健全性についてそれぞれ述べる.
手順
以下に出力が必ず2成分になる掛け算の手順について述べる.
大まかに以下の流れで説明する.
- 掛け算に使う値の生成
- 掛け算の仕方
- シンプルな掛け算
- 成分を2成文にする
- ノイズを消しながら,モジュラスをに戻す
1. 掛け算に使う値の生成
- の同程度の大きさを持つ奇数 を選ぶ.
- の暗号文を生成する.
2. シンプルな掛け算
同じ秘密鍵でそれぞれ暗号化された,の暗号文, の暗号文があるとする.
シンプルな掛け算
に沿って,を暗号化した暗号文 を計算する.
3. 成分を2成文にする処理
を次のように計算する.
4. ノイズを消しながら,モジュラスをに戻す
を暗号化した暗号文を次のように計算する.ただしは以下に沿ってなるべく小さく選ぶ.
, がそれぞれで割り切れるとは限らない.
そこで, をでそれぞれ引くことで,必ずで割り切れるようにしている.
健全性の証明
暗号文が正しく復号されることを以下に証明する.
1. 掛け算に使う値の生成
暗号文に対する復号を考えてみる.
これは,暗号文に をかけたものになっている.
2. ノイズを消しながら,モジュラスをに戻す
, に対する復号を考えてみる.
しかし,の各係数は整数にならないため,, の各係数も整数にならない.
3. 分数が出ないように調整
で分数がでないようにするため.
各項を をつかって以下のように調整する.
それらをで割ると, 以下のようになる.
4. 復号
とおく.
( の各係数は偶数なので,このような置き方をしても構わない)
暗号文 を復号したものは,
ノイズは整数
は円分整数であり,各係数は整数であることを以下に証明する.
- がで割り切れるためには,がゼロであれば良い.
- これはと式変形でき,満たすことを以下に示す.
の理由より,
5. ノイズの消去
以下の理由で,が成り立つ.
がより小さい場合, となる.
- の各係数は以下の理由でより小さい
- はにくらべてかなり小さい
- は大きな奇数で割っているのでに比べてかなり小さい.
の各係数は,必ず偶数である.の各係数はになる.
の各係数はなので,2で割ったあまりをとることで,正しい計算結果を得ることができる.
まとめ
完全準同型暗号についてまとめた.
完全準同型暗号はRLWE仮定に基づいており,
暗号文同士の足し算と引き算ができた.