突貫で書いてしまった部分もあるので、大いに誤りを含む可能性があります。誤字・脱字レベルでも構いませんので、ご指摘ください。
また、予告なしに内容の加筆や構成の変更を行うことがありますが、読みやすくするためのものですので、ご容赦ください
既存のロードマップ
突然ですが皆さんこちらの記事はご存知でしょうか?
自分が3年前に書いた記事で、大変ありがたいことに、多くの方に読まれている記事です
しかし、3年も経てば、自分の知見も参考教材もアップデートされます
そこで、今回は、準同型暗号の勉強・研究をしてみたい方向けに、理論寄り・実装寄り、を含む3つの視点から、学習ロードマップを作成しました
自分も準同型暗号に関する解説記事をいくつか書いていますし、まだ書けていないものもたくさんありますが、
それよりも先に、これから準同型暗号の勉強をしてみたい、研究の入り口に立ってみたい、という方への記事になります
まずはよく使われる数学の分野を頻度順にまとめます
そして,それらの分野の中でも習得の優先順位が高いと思われるキーワードを列挙します
その優先順位の段階に応じておすすめの書籍も紹介します
最後にそれらを土台として、準同型暗号の実装や理論に関して,おすすめの勉強ステップを書きます
*勘違いされそうなことへの補足
- 準同型暗号で必要とされる数学を全て網羅しているわけではありません
- また本当に必要な数学を網羅できているとも限りません(今後新しい分野が出てくることもある)
- 数学に興味がない方も想定して,特に初めの段階では,「適宜ググれば良い」やおすすめ本が必ずしも数学書ではないなど,ある程度の厳密性は落としています(全員が全員数学科出身ではないためです,必要になったり数学に興味が出てきたら色々な数学書で本格的に勉強してみてください)
- この記事では「数学の勉強」はあくまで論文を読むためのサプリのようなものなのであり,必要になったら適宜本に戻ってある程度わかったら論文に戻る,というスタンスの方を想定しています
- とは言っても,既に数学にかなり習熟されている(代数幾何専攻だったとか数論専攻だったとか表現論専攻だったとか)方もいらっしゃると思います,そのような方向けに暗号の理論的な部分に関する書籍も紹介していますので,参考になる部分があれば
- 本記事では、準同型暗号の具体的な方式として、完全準同型暗号である CKKS 方式、および、TFHE 方式のみ触れます
- 学習ロードマップは、どなたかに試してもらったわけではなく、あくまで理想的な進め方を示すものです
ですので、これに沿ったからといって必ず習得できるとは言っていない- 学習ロードマップというのは、内容がそこまで間違っていない限り、あることに意味があると思っています
- ですので、もしこれを試した方がいらっしゃったら、ご連絡いただけると、改善します
本記事の対象読者
前述のとおり、今回は、実装寄りの方にも向けたロードマップとなります
大まかにレベルとして分けるなら、以下の3つになります
- 準同型暗号を触ってみたい
- 準同型暗号の実装寄りの研究(GPU 実装など)をしてみたい
- 準同型暗号の理論寄りの研究(アルゴリズム高速化・安全性検討など)をしてみたい
初めに断っておきますが、1と2, 2と3のそれぞれには、大きな隔たりがありますし、
2を目指す方は1の内容、3を目指す方は1と2の内容を前提としています
準同型暗号の研究界隈では、アルゴリズム高速化の研究テーマであれば、実装評価まで行って、数値評価をするのがトレンドのため、
理論寄りの方も最低限の実装ができることを求められます
おすすめ教材一覧
先に、現時点でおすすめできる教材をまとめます
基本的な概念は、可能な限り、和書で習得するべき、と考えているため、和書が多めです
- 暗号から学ぶ代数学
- 暗号理論による秘密計算からプライバシー保護データ解析へ
- R. Ko: ``The Beginner's Textbook for Fully Homomorphic Encryption'', arXiv preprint arXiv:2503.05136, 2025.
- TFHE-rs handbook
基本的に、上2冊は読んだ方が良いと思います
3冊目は、良い教材なのですが、前段の I, II, III が長すぎて、どこを読めば良いかわからない、という方が多いと思います
そこで、本記事では、どのタイミングで、どの箇所を読むべきかを明示します
4冊目は、現代的な TFHE の教科書です
機械学習で必要な数学の分野との違い
応用数学という広い分野の中に機械学習と暗号理論という2つの分野があるわけですが、
ものすごく大雑把に、機械学習では解析・暗号理論では代数という数学の分野が主に使われます
機械学習では、微積分(主に多変数関数)・関数解析・数値解析(・統計)など多くの場面で解析が関わります
一方、暗号理論では、初等整数論・群・環・有限体など代数を用いることが多いです
また、どちらでも使われる分野もあり、統計や線形代数は割と共通していると思います
両者で必要とされる数学のスキルセットが異なるのですが、この中でも優先順位があります
機械学習の実装に日頃励んでいる方が今回の準同型暗号の実装をやってみたいと思ったら、初等整数論・代数の基本的な知識を勉強するだけで、ある程度はできるようになるはずです
準同型暗号を触ってみたい方向け
まずは、準同型暗号を触ってみたいエンジニア向けです
最低限の数学さえ抑えたら、後は触ってみることができます
学習ロードマップ
- [共通] 準同型暗号の簡単な実装(暗号化や暗号文の足し算の実装など)に必要な前提知識
- 初等整数論(mod)
- 暗号から学ぶ代数学 2章(2.1節だけでもOK)
- 暗号理論による秘密計算からプライバシー保護データ解析へ 1.1/1.4/1.6 節
- R. Ko: ``The Beginner's Textbook for Fully Homomorphic Encryption'', arXiv preprint arXiv:2503.05136, 2025. A-1.1/A-1.2
- 環論の初歩(多項式環・剰余環)
- 初等整数論(mod)
正直なところ、上記さえわかっていれば、触る分には困らないと思います
どれも、具体例が豊富に書かれていますし、もし説明がわからなかったとしても、調べればたくさん出てくると思います
上記ロードマップの補足
初等整数論(mod)
暗号理論は有限の数の世界で議論することが多い(特に実務で使われるようなものは尚更)ため,合同式に関する知識は必須です
mod とかいう記号にギョッとするかもしれませんが,しょせんは余りに注目しているのにすぎないという意識があれば,そこまで恐れる必要もないと思います
その後
準同型暗号では、CKKS と TFHE 方式が有名であり、それぞれ、OpneFHE, TFHE-rs という OSS ライブラリがよく使われています
下記ライブラリのチュートリアルをやってみることをおすすめします
準同型暗号の実装寄りの研究者向け
学習ロードマップ
下記でいう「CKKS/TFHE 方式の Bootstrap の理解」とは、書いてあることがなんとなくわかる、ぐらいのイメージ感です
人に説明できるようになるレベルを要求するなら、次の「準同型暗号の理論寄りの研究者向け」を参考にしてください
- [共通] 準同型暗号の簡単な実装(暗号化や暗号文の足し算の実装など)に必要な前提知識
- 初等整数論(mod)
- 暗号から学ぶ代数学 2章(2.1節だけでもOK)
- 暗号理論による秘密計算からプライバシー保護データ解析へ 1.1/1.4/1.6 節
- R. Ko: ``The Beginner's Textbook for Fully Homomorphic Encryption'', arXiv preprint arXiv:2503.05136, 2025. A-1.1/A-1.2
- 環論の初歩(多項式環・剰余環)
- 初等整数論(mod)
- [共通] CKKS/TFHE 方式の基盤の理解に必要な前提知識
- LWE/RLWE/GLWE/GLev/GGSW 暗号方式
- [CKKS] CKKS 方式の Bootstrap の理解に必要な前提知識
- 初等整数論(整数の分解, 中国剰余定理)
- 複素数
- 複素数とはなんたるか、四則演算・共役さえわかっていればOKです
- [TFHE] TFHE 方式の Bootstrap の理解に必要な前提知識
- 初等整数論(整数の分解)
- GLWE/GLev/GGSW 暗号方式
上記を押さえていたら、CKKS 方式と TFHE 方式の理論理解に入れると思います
下記のうち、好きなものを読んで、基盤の数学がわからなくなったら、該当箇所に戻りましょう
R. Ko: ``The Beginner's Textbook for Fully Homomorphic Encryption'', arXiv preprint arXiv:2503.05136, 2025. D-1/D-3
TFHE-rs handbook 2章
ちなみに、CKKS と TFHE は、難しさの度合いが異なります
以下は、個人的な印象です
CKKS: 背景の数学は難しいが、暗号の理論はシンプル
TFHE: 背景の数学は難しくないが、暗号の理論が複雑
上記 CKKS ロードマップの補足
正直なところ、CKKS のブートストラップを本当に理解しようとするなら、上記の前提知識だけでは全然足りないです(なので、ある程度の割り切りが必要)
なんですが、いきなり、Bootstrap を触る方は稀で、
まずは CKKS で暗号文乗算を触ってみて、その後に Bootstrap に入る方がほとんどだと思います
ひとまず、CKKS で暗号文乗算を触ることを前提に、Bootstrap にも最低限入れることを前提に、上記のロードマップを作っています
*と言っても、暗号文乗算に入る前に、本当なら
R. Ko: ``The Beginner's Textbook for Fully Homomorphic Encryption'', arXiv preprint arXiv:2503.05136, 2025. A-13/C-4
は理解しておきたいですが、初めてだと、意義がよくわからないと思うので、必要になったタイミングで戻れば良いと思います
後述しますが、CKKS の Bootstrap を真に理解したいなら、線型代数や体の拡大、自己準同型、などは必須項目です
その後
「準同型暗号を触ってみたい方向け」と同様です
ひとまず、OpenFHE と TFHE-rs のチュートリアルをやってみましょう
終わったら、その後、ご自身でどのような研究テーマをやるかに依存しますが、
例えば、GPU 高速化をやってみたいなら、HEonGPU という OSS ライブラリから触ってみることをおすすめします
準同型暗号の理論寄りの研究者向け
ここまでやって、ようやくスタートラインです
腰を据えて、長い時間をかけて、何周もすることで理解していくと良いと思います
学習ロードマップ
- 暗号をやる上で必要
- 確率・統計(特に正規分布)
- 計算量理論(多項式時間・クラスP, NP)
- 耐量子計算機暗号 1.2
- 計算理論の基礎 [原著第3版] 3.複雑さの理論 <- 詳しくやるなら
- 暗号理論の一般的な知識 <- 必要なタイミングで
- 格子暗号/準同型暗号の一般的な知識 <- 必要なタイミングで
- [共通] 準同型暗号の簡単な実装(暗号化や暗号文の足し算の実装など)に必要な前提知識
- 初等整数論(mod)
- 環論の初歩(多項式環・剰余環)
- [共通] CKKS/TFHE 方式の基盤の理解に必要な前提知識
- LWE/RLWE/GLWE/GLev/GGSW 暗号方式
- 円分多項式
- Modulus Switch
- [CKKS] CKKS 方式の Bootstrap の理解に必要な前提知識
- 初等整数論(整数の分解, 中国剰余定理)
- 複素数
- 複素数とはなんたるか、四則演算・共役さえわかっていればOKです
- 多項式補間/線型代数/Taylor 展開
- [TFHE] TFHE 方式の Bootstrap の理解に必要な前提知識
- 初等整数論(整数の分解)
- GLWE/GLev/GGSW 暗号方式
上記ロードマップの補足
まず、大前提として、理論寄りの研究をするなら、膨大な前提知識が必要です
以下では、さらっと「読む」という表現を使っていますが、「理解する」という意味ですし、自身の血肉となるように身につけることを想定しています
数学のみならず、準同型暗号以外にも、例えば、RSA 暗号方式は抑えるべきなので、
暗号から学ぶ代数学 は全て、暗号理論による秘密計算からプライバシー保護データ解析へ は2章まで全てを読むことを想定しています
また、耐量子計算機暗号の中の格子暗号についても、耐量子計算機暗号 や 暗号の理論と技術 量子時代のセキュリティ理解のために などで、大まかな理解は必要ですし、
基盤である LWE 問題への解読の理解を深めるために、格子暗号解読のための数学的基礎-格子基底簡約アルゴリズム入門- も読んだ方が良いです
準同型暗号についても、R. Ko: ``The Beginner's Textbook for Fully Homomorphic Encryption'', arXiv preprint arXiv:2503.05136, 2025. の A だけでは、足りないです
しかし、「膨大な前提知識」というのは、結果であって、事前にそれらを全て揃える必要はありません
必要になったら習得すれば良く、長い時間をかけて取り組んでいきましょう
確率・統計(特に正規分布)
この辺は暗号理論の書籍より機械学習の書籍の方が充実しているかもしれません
より理論の深い部分(安全性証明とか)を勉強・研究するなら,Chebyshev の不等式といった部分も必要になりますが,それ以外の方は正規分布がなんたるかを分かっていれば十分だと思います
計算量理論(多項式時間・クラスP, NP)
実務で使うような暗号は安全,と割り切ってしまえば,ここは飛ばしてもOKです
そこそこしっかりやるなら 耐量子計算機暗号 の1.2を読めば十分です
もっとしっかりやるなら、和書なら 計算理論の基礎 [原著第3版] 3.複雑さの理論 とか 計算できるもの、計算できないもの―実践的アプローチによる計算理論入門 とかがおすすめです
洋書はめちゃくちゃあるのですが,後で Goldreich という方の暗号理論の洋書を紹介するためここでは統一して Computational Complexity: A Conceptual Perspective
を載せておきます
*Turing マシンやオートマトンなども1回はやっておいた方がいい気はしますが,この時点ではそこまで重要視しなくてもいいです
*計算量理論メインの本を読むといいです,計算理論の方に突っ込むと戻れなくなります()
その後
上記の学習ロードマップを終え、CKKS か TFHE の Bootstrap に触れ、さらに、OpenFHE か TFHE-rs のチュートリアルを終えた方向けです
共通
まず、何をするにしても、FFT/NTT の理解は必須です
R. Ko: ``The Beginner's Textbook for Fully Homomorphic Encryption'', arXiv preprint arXiv:2503.05136, 2025. A-16
DFT, FFT, NTT, QDFT をまとめる
僭越ながら、自分の記事を載せましたが、最低限 butterfly 演算の理解はした方が良いです
*余裕があれば、Barret Reduction とか Harvey Reduction なども
CKKS
CKKS の理論寄りの研究をするなら、体の拡大を含む、Galois 理論は知っておくと便利です
と言っても、数学科学部3年レベルなので、かなり理想論ですが・・・
CKKS の standard bootstrap さえ理解できれば、多くの論文を読むことができます
ですので、自分が気になる論文を読むと良いのかなと思います
TFHE
TFHE-rs handbook を読んでいきましょう
いろんな論文が途中で引用されているので、気になったものから読み始めると良いと思います
研究全般
3年前と比べて、準同型暗号でおすすめな研究分野もかなり増えました
*これについては、別記事でまとめたいと思います(かなり長そうなので)
正直なところ、自分が興味あるテーマの論文を読み進めていくのが良いと思います
どうやって研究を進めていくか、論文を読んでいくか、については、下記の記事を参照してください
まとめ
3年前に書いたロードマップの記事をアップデートしました
あくまで個人の意見ということをお忘れなく
もっと他にこういう本があるよ,などありましたら,ぜひ教えていただけたらと思います
とは言っても、いろいろな文献を読もうとすると、解説する人の癖だったりで、中々難しい面もあると思います
CKKS の解説記事の連載を終えたら(決して忘れているわけではない)、準同型暗号の数学などの記事を書こうと思っています
本記事がどなたかのお役に立てるのなら幸いです
今回の内容はここまでです.ここまでご覧になってくださった方々ありがとうございます!