0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EAGLYSAdvent Calendar 2024

Day 24

エクセルで理解するTFHE暗号(part1/2 理論編)

Last updated at Posted at 2024-12-23

本記事の著者は秘密計算のベンチャー企業で働いております.
一方, 今年から暗号に触れた素人でもあり, 勉強の一環として本記事を書いています.
誤字・脱字から暗号理論の技術的詳細まで, 記事に誤りがありましたら,
ご指摘いただけますと幸いです.

本記事は, 2回連載(第1回:理論編, 第2回:実践編-ハンズオン-)の第1回.
連載の目的は, エクセルを利用した, TFHEの要点解説です.

TFHEとは, 暗号方式の一種です(トーラスを用いた完全準同型暗号).
少し唐突ですがTFHEを理解するうえで, 次の問Aは有益です(問Aは@0917laplaceさん, エクセル利用は@daikumatanさん, のideaです):

問A:

「平文をm, その暗号文をEnc(m), で表すとします.
TFHEでは, どのような方法で,
Enc(m)から暗号状態で(=復号せずに)Enc(m^2)を計算するのか?」

問Aはシンプルですが, その回答は複雑です.
そこで本連載では, 問Aの回答を理解するために, より簡単な問Bを考えます:

問B:

「TFHEでは, どのような方法で, 平文mから平文m^2を計算するのか?」

勿論, 平文の場合, 例えばm=0.3の時, m^2=0.09と直接計算できます.
しかし, 直接計算という手法は,暗号状態でのEnc(m)からEnc(m^2)の計算へ応用できません. なぜなら, Enc(m)を復号しないと, mの値は分からないためです.

本連載では, 暗号状態でのEnc(m)からEnc(m^2)の計算へ応用可能な,
平文状態でのmからm^2の計算手法について,
第1回:理論編では, 高校数学程度の数式を用いて解説します.
第2回:実践編では, エクセルを用いてハンズオン解説します.
本連載を通じて, TFHEの理解向上の一助になりましたら幸いです.

本連載エクセルハンズオンの続編にあたる
「エクセルを利用した, 暗号状態でのEnc(m)からEnc(m^2)の計算」は,
弊社第2回暗号勉強会にて体験していただける「予定!」です.
https://connpass.com/event/341101/
よろしかったらご参加ください.

繰り返しで恐縮ですが, 本記事の著者はTFHE暗号の専門家ではありませんので,
厳密に理解されたい方は, 原著論文や解説論文をご一読ください.

それでは本連載第1回の内容に入ります. 本記事の流れは以下の通りです:
1.暗号の基礎(平文, 暗号文, 暗号化, 復号化);
2.準同型暗号・完全準同型暗号;
3.TFHEの要点;
4.TFHEの計算方針.

4.が最も重要です(問Bに回答します).
1., 2., 3.を読まなくとも, 4.を読んで理解することは可能です.

本連載では, 平文状態での計算のみを扱いますが,
TFHEの特徴の理解のため, 1.-3.では, 暗号の一般論を解説します.

1.暗号の基礎:

必要最小限の解説に留めます.
「暗号とは, ある情報(平文)を,
特別な情報(鍵)を用いて, 他人に簡単には読めない情報(暗号文)に変換して,
必要な人が特別な情報(秘密鍵)を用いて, 元の情報(平文)に戻せる仕組みです.」

本連載において, 平文, 暗号文のとりうる範囲は,
実数またはその部分集合と思っていただいて構いません. また,

暗号化: 平文  → 暗号文 
復号化: 暗号文 → 平文

暗号化/復号化では, 鍵を利用しますが,
本連載では, 問Bへの回答が目的のため, 鍵の記述は省略します.
(同様な理由により, encode/decode, LWE暗号, RLWE暗号, RGSW暗号などについても省略します).

2.準同型暗号(HE)・完全準同型暗号(FHE)

2.1.準同型暗号(Homomorphic Encryption)

Encをある暗号方式とします.
つまり, 平文mに対して, その暗号文をEnc(m)で表すとします.
Encが加法準同型暗号とは, 全ての平文m, nに対して,
Enc(m) + Enc(n) = Enc(m+n)
を満たすことをいいます.
同様に, Encが乗法準同型暗号とは, 全ての平文m, nに対して,
Enc(m) × Enc(n) = Enc(m×n)
を満たすことをいいます.

2.2.完全準同型暗号(Fully Homomorphic Encryption)

Encをある暗号方式とします.
Encが完全準同型暗号(FHE)とは, 以下の2条件を満たすことを言います:
(1)Encが加法かつ乗法準同型暗号;
(2)暗号文の加法と乗法を「任意の回数(何回でも!)」実行できる.

3.TFHEの要点

3.1.TFHEの直訳

TFHEとは, 原著論文に従うと, 以下の略です:
(Fast) Fully Homomorphic Encryption over the Torus.
つまり, TFHEの直訳は, Torus上の完全準同型暗号(FHE)です.

直訳に従い, 以下では, Torusの定義の説明から始めます.
個人的な意見ですが, Torusは手段であって, 目的ではないように思います.
つまり「Torusの定義」を理解すること以上に,
「Torusを利用して何を実現したいか(以下の3.3(2))」を理解することが重要です.

3.2.Torusの定義

「トーラス(Torus)とは, 0以上1未満の実数の集合.
ただし, 整数部分は無視する(1の加法減法は無視する)」

厳密には, トーラスとは実数体を整数環で割った商加群のこと.

トーラスをTで表すとします. 例えば, Tでは,
0.1 = 1.1 = 2.1 = 3.1 = ...(Tでは, 1の加法減法を無視)
が成り立ちます.

またTでは, 足し算, 引き算, スカラー倍が定義されています:
0.3 + 0.8 = 1.1 = 0.1 (Tでは, 1の加法減法を無視)
0.3 - 0.7 = -0.4 = -0.4 + 1 = 0.6 (Tでは, 1の加法減法を無視)
3・0.4 = 0.4 + 0.4 + 0.4 = 1.2 = 0.2 (Tでは, 1の加法減法を無視)

Tでは, 少なくとも以上と同様には, 乗法除法は定義できないです.
理由を考えてみてください. ひとまずTの説明は以上です.

3.3.TFHEが満たす性質

EncをTFHE暗号とします. この時, Encは以下の性質を満たします:
(1)Encは完全準同型暗号;

(2)f:T → Tを任意の1変数関数とします
(n倍, n乗, 1変数多項式関数, 絶対値関数, sin関数など何でも良い!).
mを平文とします(特に, m, f(m)はTに属しています). この時,
Enc(m)から暗号状態で(=復号せずに), Enc(f(m))を計算できる.

TFHEの特徴は(2)に凝縮されていると思いましたので,
本連載では(2)を具体例・ハンズオンを通して要点解説します.

分かりやすさのため, 以下では「f=2乗関数」の場合を考えます.
「f=2乗関数」とする理由は, 以下で述べるPBSが必要となる関数fのなかで,
最も簡単だからです. 2倍関数の場合, PBSは不必要です(2.1より分かります).

4.TFHEの計算方針

4.1.Programmable Bootstrapping

冒頭で述べました問A, Bを再掲します:
問A:
「Enc(m)をTFHE暗号方式とします.
TFHEでは, どのような方法で,
Enc(m)から暗号状態で(=復号せずに)Enc(m^2)を計算するのか?」

問B:「TFHEでは, どのような方法で, 平文mから平文m^2を計算するのか?」

問A, Bの回答は, どちらも,
Programmable Bootstrapping (PBS)
という計算方法です.

より詳細には, PBSは次の4操作を合成した操作です(右から順に行う):
Programmable Bootstrap
= (Key Switch) ○ (Sample extract) ○ (Blind Rotate) ○ (Rescale)

PBSにおいて最も重要な操作は Blind Rotation です. 本連載では,
「PBSを用いた暗号状態でのEnc(m)からEnc(m^2)の計算」を理解するため,
「PBSを用いた平文状態でのmからm^2の計算」を要点解説します.

勿論, 平文の場合, 例えばm=0.3の時, m^2=0.09と直接計算できますが,
直接計算という手法は暗号状態でのEnc(m)からEnc(m^2)の計算へ応用できません.
以下では, 暗号状態でのEnc(m)からEnc(m^2)の計算へ応用可能な,
平文状態でのmからm^2の計算手法を解説します.

4.2.PBSを用いた平文mから平文m^2の計算(トイモデル)

平文空間を, 0.00, 0.01,0.02, ... , 0.99までの100パターンとします.

Step.1.Look up tablesの作成:

ある特定の平文mを入力する前に,
全ての平文mに対して, 平文の演算結果m^2を用意した表を作成します.
この表は Look up tables と呼ばれます:

i m m^2
1 0.00 0.0000
2 0.01 0.0001
3 0.02 0.0004
4 0.03 0.0009
30 0.30 0.0900
31 0.31 0.0961
32 0.32 0.1024
100 0.99 0.9801

Step.2.平文の入力:

平文mをPBSに入力します.
以下では, m=0.31の場合を考えます.

Step.3.指数の決定:

上の表の第2列に位置する入力mに対応した, 第1列の指数iが定まります.
例えば, 平文m=0.31の場合, 指数i=31となります.

Step.4.Rotate(回転)

Step.3で定まった指数iを利用して,
「表の第3列の各値の位置を指数iだけ上にずらした列」を第4列に作成します.
第3列から第4列を作成することは Rotate(回転) と呼ばれます.
暗号文状態で行う際は, Blind Rotate と呼ばれます.

例えば, 平文m=0.31の場合, 指数i=31となり, Rotateは以下の通りです:

i m m^2 Rotate (shifted up by 31)
1 0.00 0.0000 0.0961
2 0.01 0.0001 0.1021
3 0.02 0.0004
4 0.03 0.0009
30 0.30 0.0900
31 0.31 0.0961
32 0.32 0.1024
100 0.99 0.9801 0.0900

Step.5.Sample Extract(抽出):

表の第4列i=1の値を取り出します(Sample Extractに対応).
例えば, m=0.31の時, 表の第4列i=1である0.0961が取り出せます.
この0.0961は, PBSの出力です.

以上をまとめると, PBS(という操作または関数)に,
0.31を入力した時, 0.0961が出力されたことになります.
実際に (0.31)^2=0.0961 を満たします. 他の値でも同様です.
計算手続きは面倒ですが, PBSは2乗関数の役割を果たしていることが分かります.

以上が数式を用いた「PBSを用いた平文mからm^2の計算」の要点解説でした.
これにて, 本連載第1回:理論編 が終了です.
読者の方は, 貴重なお時間をありがとうございました.

本連載第2回:実践編では, 以上をエクセルを用いてハンズオン解説します.
それではまた明日!
Have a nice Christmas!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?