セキュリティキャンプ 2021にL-IIトラック「暗号のままで計算しようゼミ」で参加してきました。
メインとしては、TFHEという完全準同型暗号の1つについての理論の理解と実装をしました。
長くだらだらと書いているので、です、ます調がごちゃごちゃになっているのはご了承ください。
セキュリティ・キャンプ全国大会2021 オンライン とは
情報処理推進機構 (IPA )が主催している無料でセキュリティ技術が学べるイベントです。今年は疫病の影響もあり(去年もでしたが)8/9〜10/3という長期間開催になりました。
詳しくは下のリンクを見てください。
www.ipa.go.jp
参加理由
3回生の夏休みってことで周りはインターン とか考えてるみたいだけど、あんまりインターン には興味がなかった。せっかくだし何か技術系のイベントに参加してみたいなあと漠然に思ってはいた。
1回生くらいからセキュリティキャンプ の存在は知っていて、あまりよく覚えてはいないが、京大界隈では単位取得率bot で有名なへいほぅ さんがtwitter で参加します、みたいなことを言っていたのを見て存在を知った気はする。
ただ、セキュリティキャンプ は低レイヤーな話が多い印象で、バリバリプログラミング書いているわけでもないし、最近は数学とか物理とかばっかりやっていたのもあって、自分が挑戦するにはハードルが高すぎるなあとも思っていた。
しかし、2021の講義一覧とか応募課題を見ると、Lトラック(暗号数理実装トラック)だったらいけるんじゃない?面白そうだし、という気持ちに。
学科の先輩(YトラックでOS作ったらしい)がtwitter でセキュキャンは技術よりやる気が買われるぞ!と言っていたのも見て、年齢制限(22歳までしか応募できないので最初で最後のチャンスだった)もあるしとりあえず申し込んでみるか〜となった。
L-IIトラックを選んだ理由
理由としては
準同型暗号とは何たるか知りたい
応募課題が取り組みやすかった
の2つかなと思う。応募課題が取り組みやすかったのが正直一番の決め手だと思う。
応募課題
応募課題 のうちL-IIの部分をざっくり要約すると
準同型暗号について調べたことをまとめる(意欲と調査力を問う、準同型暗号だけでなく他の秘密計算との比較)
プログラミング能力を図る(整数係数多項式 の剰余演算、剰余環上のP進数をp進数に直すみたいなやつ)
自由記述
でした。超シンプル!
出した応募課題は載せないけど、 どんな感じでやったかだけ書いてみようと思います。
↑書いた応募課題下に載せました
課題1
意欲を問うとのことだったのでとにかく書きまくってやろうという気持ちでがんばった。間違ったことを書いても減点されないらしいのでとにかく調べて書きまくるのだ。
去年の参加者の方が応募課題をあげていたのを発見。なんとこの方、今年のチューターさんでした。
qiita.com
とりあえず「準同型暗号」でググったりしていたら講師の方が書かれていたqiita記事を発見する。当然知らないワードがいっぱいあるのでそれの中から掘り下げたい単語をググる 。
qiita.com
図書館で「準同型暗号」で調べてヒットした本を読んだ(これはネットで読めた)。
herumi.github.io
TFHEのいろんな論文にあたってみる。準同型暗号をまとめたスライドを見つけたので読んでみる。情報処理学会 とかのpdfを読んでみる。など...
調べてはまとめてをひたすらやっていたら去年の参加者の応募課題晒しに書いてあることと理解が違うな、と思うなどしたり...
結局5000文字くらいにはなった。参考文献は20個。
課題2
2n-1次以下の多項式 をXn +1で割ってください、という課題。ナイーブに割り算をすると構造はすぐ見える。python で課題を出したのでリストのスライス使えばプログラムとしてはなんと11文字だけで終わり(雛形の関数内にプログラムを追記する形式だった)。当然だけど説明のコメントはしっかり書いた。
割り算と繰り上がりみたいなのに気をつける。と完成。
とりあえず書いてみようと一番初めに手につけたのがこの課題で、すぐ書けたのでこれは課題出せる!という気持ちになった。
課題3
がんばって自己アピールをする。何かそういうイベントに応募したりとかインターン とか行ってはないのでとりあえず最近つくったものとかをそれっぽく書いた。
あと大学で何やってるか。応用数学 、応用物理、計算シミュレーション、機械学習 アルゴリズム やってますとか、数理工学実験でこういうことやりました(数理工学実験でやったことは2回生後期の振り返り - ポタージュを垂れ流す。 を参照)、とか。
ここまで暗号の話をなにもしていないので、最後に暗号の話を書いた。
暗号技術に興味を持つようになったのは最近。遡ると量子力学 おもろいなあってのがまずあるけど、量子情報科学 入門を手に取ってみて量子アルゴリズム や量子暗号ってこうなってるんだ〜へえ〜というのがきっかけになっていると思う。ちなみに読み切れてなくて積読 になってる。はやく読もうね。
www.kyoritsu-pub.co.jp
ところで、量子じゃない暗号についてなんも知らない...。
こんな感じのことと、暗号について勉強を始めたのは最近だから準同型暗号をきっかけに色々知りたいみたいなことを書いた。
応募課題晒し
※提出方法はフォームにtxt形式で書く感じなのでこういう形式になっています
※応募課題:https://www.ipa.go.jp/files/000090352.txt
以下課題
以下、全体を通して見出しをmarkdown 形式のように用いて記述を行っています。
# 課題1
## 準同型暗号とは
準同型暗号とは、暗号化したまま平文の計算を行うことができる暗号のことである。
なお、以下における完全準同型暗号の完全とは、0と1だけの有限体の世界においては加算は排他的論理和 に、乗算は論理積 に相当し、これらを使うことで任意の論理演算を構成できるという意味での完全である[4]。
準同型暗号には以下の4種類(PHE、SHE、LHE、FHE)が存在する。上から述べる順に演算に対する制約が緩くなっている。
### PHE(Partial Homomorphic Encryption)
加算や乗算などの単一の演算のみが可能な準同型暗号。加法性をもつ準同型暗号を加法準同型暗号、乗法性をもつ準同型暗号を乗法準同型暗号と呼ぶ。
加法準同型暗号としてはGoldwasser-Micali暗号、Paillier暗号(平方剰余判定問題が根拠)などが、乗法準同型暗号としてはRSA暗号 、El-Gamal暗号(離散対数問題が根拠)などがある。
### SHE(Somewhat Homomorphic Encryption)
演算回数に制限を設けた完全準同型暗号のことである。制限の設け方としては、復号可能であるノイズのとりうる範囲から演算回数の制限を決定する場合が考えられる。
例えば初めてSHEとしてBoneh,Goh,Nissimにより考案されたペアリング暗号であるBGN(部分群判定仮定が根拠)は、加算は任意回可能だが乗算は1回に制限されている[5]。ここでペアリングとは2入力1出力の、各入力に対して線形性が成り立つ双線形関数のことである[6]。
また、[4]で紹介されているlifted-ElGamal暗号 を用いたL2準同型暗号も乗算が1回だけ可能である。
### LHE(Leveled Homomorphic Encryption)
演算回数に制限があるが、その制限をパラメータによって変更することができる完全準同型暗号のことである。FHEの第2世代以降のFHEはLHEにも分類されることが多いようである([1]で紹介されている実装はすべてそうだったが、実際にすべてがそうかは不明なため語尾をぼかした)。純粋なFHEでは空間計算量、時間計算量ともに大きく、実用的なものとは言い難いため応用研究や実装としてはLHEで行われていると考えられる。
### FHE(Fully homomorphic encryption)
演算回数に上限のない本当の完全準同型暗号のことで、格子暗号をベースにした暗号である。ここでいう格子とはベクトル空間の基底をとったときに、その整数係数の線型結合で表現される部分空間のことである。なお、格子暗号は量子コンピュータ を用いても現実的な時間で解くのが困難な数学的問題として利用できると考えられている[7]。
暗号文に含まれるノイズが演算をするに従って増大していき、そのノイズの大きさがある閾値 を超えると復号が不可能になってしまう。ここでbootstrappingとよばれる、準同型暗号上で復号と等価な処理、具体的にはそれ自身のSHEを用いて作った複号回路の利用によってノイズを取り除く処理を行うことで、任意回の加算乗算演算を可能とした準同型暗号である。
以下では世代分けをして順に説明する。
#### 第1世代
暗号文のノイズを抑えるbootstrappingの手法が導入され、純粋なFHEが現実に実装可能となった。Gentryが考案した最初のFHEはideal格子問題がベースとなっている[8]。
#### 第2世代
RLWE問題がベースとなる暗号が登場した。RLWE問題は、誤差を含んだ多変数連立方程式 を解くLWE問題を有限体上の多項式環 に制限した問題のことである。現在では多くの研究がRLWE問題ベースの暗号に対してなされている。このことは高速化の面で恩恵をもたらした。LWE問題に基づくSHEの構成は行列ベクトル演算だったが、RLWE問題に基づくSHEの構成は多項式 演算となったため、FFT を用いて計算の高速化を行うことができる。
また、packingとよばれる複数の平文を1つの暗号文に暗号化する手法が導入され、SIMD 的な演算が可能となったことも高速化に役立った。
暗号文のノイズを抑える面では、ideal格子からRLWE問題を基に考えるようになったことでre-linearizationと呼ばれる平文を保持しつつ次元を落とす処理が考案された[9]。
さらに、modulus switchingという暗号文の法(modulus)を別の法に変換(switching)することでノイズを削減する手法も考案された[10]。
これらを用いている方式にはBFV[10]やBGV[11]などがある。
#### 第3世代
準同型乗算を行うと暗号長が長くなってしまい、それに伴ってノイズも大きくなってしまうので、暗号長を短くする処理としてre-linearizationが行われるが、それはbootstrappingほどではないとはいえ、乗算と同程度の重い計算となってしまう。それを高速化する手法としてapproximate eigenvector methodが考案された。この中で(Bit) decompositionという操作により暗号文を整数値から2値化して計算を行う手法が導入された。これによりノイズの大きさを冪乗から対数スケールに落とすことが可能になった[12](GSW方式)。
また、これまでは整数演算を用いていたが、このように2値化して論理演算として考えているのもこの世代の特徴であり、これらの利用によってbootstrappingの速度に劇的な改良がみられる(FHEW方式,TFHE方式)。
#### 第4世代
現在ではCKKS方式のみが分類される。これまでのFHEは整数による演算を考えていたがCKKSではrescalingという手続きによって固定小数点演算や複素数 演算を行うことが可能となった。復号結果は一定の誤差を持つ近似値として得ることができる[13]。この固定小数点や複素数 での評価が可能である性質は、準同型暗号上で機械学習 や深層学習への応用が期待される。
## Garbled Circuit
通常の回路と異なり、入力は0と1でなく、0と1に対応するラベルと呼ばれる乱数を用いて論理計算を行うような回路のことである。
この手法は2パーティで間の初のマルチパーティ計算プロトコル である[14]。Aさんのデータに対応したラベルとゲート暗号文をBさんに送信し、Bさんがラベルを用いてAさんのデータを知ることなく回路を計算して計算結果を返す委託計算が可能である。また、紛失通信と呼ばれる、送信者が送信したデータのうち受信者がどれを受信したのか送信者が知ることができないようなプロトコル を利用することで、両者のデータを互いに知ることなく、それらを入力として回路を計算することができる[15]。
## 秘密分散
秘密分散とは、秘密情報をシェアと呼ばれるいくつかの断片に変換する方法である。このとき、あらかじめ決められたいくつかのシェアの組み合わせからは秘密情報が復元できるが、それ以外のシェアの組からは秘密の情報が漏れないようにシェアが生成される。したがって、リスクが集中する鍵の管理が、秘密情報が分散することで不要となっているという特徴がある。特に(k,n)しきい値 法と呼ばれる、n個のシェアを生成し、任意のk個以上のシェアからは秘密が復元できるが、k-1 個以下のシェアからは秘密の復元ができず、情報が全く漏れない情報理論 的安全性を保証した方法がよく用いられる。この手法を用いた秘密計算では、サーバはn台存在し、そのうちのk-1 台が攻撃者により乗っ取られたとしても元データの情報が漏れることはなく、残りのシェアから秘密情報を復元することができる。
(k,n)しきい値 法の具体的構成の1つとしてはShamirの方式が有名である。この方法は、k-1 次多項式 が、k点が決まれば一意に多項式 が決定できるが、k-1 点以下では定まらないことを根拠とした方法である。この方法では各シェアのサイズは元の秘密情報のサイズと同じである[14][16]。
## TEE(Trusted Execution Environment)
TEEとは、デバイス のメモリ上に高いレベルのセキュリティで保護された環境を作成し、その環境内で情報の保護や秘密計算、実行環境の検証などを可能にした機構のことである。その保護された領域に対しては、通常のユーザーの命令による干渉ができず、最低限の権限しか持たないようにハードウェアレベルで設計されており、CPUを信頼することで成立している技術であるといえる。その領域では暗号化せずに平文のまま計算を行えるため処理速度が速い[17][18]。
## 準同型暗号のGrabled Circuit,秘密分散,Teeと比較したメリットとデメリット
### メリット
計算の種類という意味で単純に比較はできないが、Garbled Circuitは論理回路 が得意な暗号なので、算術回路の計算を行うことを考えると整数値を入力として受け付けるような準同型暗号の方が効率がよい。
秘密分散法は各シェアのサイズが元の機密情報のサイズが同じであるので、全体の秘密情報のデータ量としては準同型暗号の方が少なくなる。
準同型暗号をGrabled Circuitと秘密分散の両方と比較した際に共通するメリットとしては、通信速度が計算の効率性にはあまり関係してこないということが挙げられる。Grabled Circuitと秘密分散は秘密データを持つ者同士が対話的に計算を進めるため、計算機自体の性能だけでなく、ネットワークの通信速度が重要な要素となるが、準同型暗号はデータを計算者に送信したあとは計算を非対話的に実行するため、通信環境のことはあまり問題にならない[19]。
TEEはハードウェアレベルの攻撃であるサイドチャネル攻撃をされると、中で平文のまま計算しているので、消費電力の変化、発生する熱、演算時に発生するノイズの音などを分析することで平文を容易に解析されてしまう可能性がある。一方で準同型暗号では、サイドチャネル攻撃をされたところで暗号化されている内容しか傍受できないためより安全であると言える[17]。
### デメリット
上記の手法に比較すれば、より多くの時間計算量、空間計算量が必要になることが挙げられる。例えば乗算処理は加算処理比較して50倍程度の計算時間が必要であり、Bootstrap処理は乗算の処理に比較してさらに数百倍程度の計算時間を要する重い計算となってしまっている[20 の表2]。また、計算量的安全性をもつアルゴリズム であるがゆえ、暗号文長を長くせざるを得ない。アルゴリズム の改良やCPUの性能向上により高速化が図られているとはいえ、暗号化なしで計算コストのかかる計算を完全準同型暗号で行うのは困難を伴う。
なお、Grabled circuitや秘密分散法においても計算機の性能は重要であり、例えば紛失通信は(上では紹介しなかったが、秘密分散法においても、GMW方式というものにおいてはこの手法が用いられる[16])計算に大きな計算量を要することに注意。
また、公開鍵にアクセス可能な誰もが自由に準同型演算を実施できるので、このことは暗号文を偽造可能ということを意味し、攻撃者に最大限優位な環境でも秘密データに関する情報は一切漏洩しないというCCA安全性を達成することは理論的に不可能である。ゆえに、準同型性を利用できるユーザーを制限した準同型暗号や、改ざんを検知できる仕組みを取り入れた準同型暗号とするなどの対策が必要となる。
## 参考文献
[1] 松岡航太郎(@nindanaoto). (完全)準同型暗号の最前線1(入門編). https://qiita.com/nindanaoto/items/98335ad4d32b927effa9
[2] Homomorphic encryption - Wikipedia . https://en.wikipedia.org/wiki/Homomorphic_encryption#cite_note-GINX16-34
[3] Wen-jie Lu, FHE in Action. https://www.slideshare.net/ssuser4c5f79/fhe-in-action
[4] 光成滋生, クラウド を支えるこれからの暗号技術(第13章). https://herumi.github.io/ango/
ここまでの4つは準同型暗号について説明するにあたって、通して参考とした。
[5] Dan Boneh, Eu -Jin Goh, Kobbi Nissim. Evaluating 2-DNF Formulas on Ciphertexts. http://crypto.stanford.edu/~dabo/pubs/papers/2dnf.pdf
[6] 岡本栄 司, 岡本健, 金山直樹. ペアリングに関する最近の研究動向. https://www.jstage.jst.go.jp/article/essfr/1/1/1_1_1_51/_pdf
[7] 四方順司. 量子コンピュータ の脅威を考慮した高機能暗号:格子問題に基づく準同型暗号とその応用. https://www.imes.boj.or.jp/research/papers/japanese/18-J-07.pdf
[8] Graig Gentry. Fully Homomorphic Encryption Using Ideal Lattices. https://www.cs.cmu.edu/~odonnell/hits09/gentry-homomorphic-encryption.pdf
[9] Zvika Brakerski, Vinod Vaikuntanathan. Efficient Fully Homomorphic Encryption from (Standard) LWE. https://eprint.iacr.org/2011/344.pdf
[10] Junfeng Fan, Frederik Vercauteren. Somewhat Practical Fully Homomorphic Encryption. https://eprint.iacr.org/2012/144.pdf
[11] Zvika Brakerski, Craig Gentry, Vinod Vaikuntanathan. Fully Homomorphic Encryption without Bootstrapping. https://eprint.iacr.org/2011/277.pdf
[12] Craig Gentry, Amit Sahai, Brent Waters. Homomorphic Encryption from Learning with Errors: Conceptually-Simpler, Asymptotically-Faster, Attribute-Based. https://eprint.iacr.org/2013/340.pdf
[13] Jung Hee Cheon, Andrey Kim, Miran Kim, Yongsoo Song. Homomorphic Encryption for Arithmetic of Approximate Numbers. https://eprint.iacr.org/2016/421.pdf
[14] 菊池亮, 五十嵐大. 解説論文 秘密計算の発展 -データを隠しつつ計算する仕組みとその発展-. https://www.jstage.jst.go.jp/article/essfr/12/1/12_12/_pdf
[15] 菊池亮. 安全なデータ活用を実現する秘密計算技術:4.Garbled circuitを用いた秘密計算と混合的構成. https://ipsj.ixsq.nii.ac.jp/ej/index.php?active_action=repository_view_main_item_detail&page_id=13&block_id=8&item_id=191277&item_no=1
[16] 大原一真 . 「プライバシー保護データマイニング 」特集号 秘密分散を用いた秘密計算. https://www.jstage.jst.go.jp/article/isciesci/63/2/63_71/_pdf
[17] 秘密計算の主な手法をまとめて紹介!データ保護と活用を両立しよう. https://acompany.tech/blog/technology-secure-computing/
[18] 加藤郁之, 曹洋, 吉川正俊. TEEに基づく差分プライバシの検証. https://db-event.jpn.org/deim2020/post/proceedings/papers/E4-2.pdf
[19] 佐久間淳,陸文傑. 安全なデータ活用を実現する秘密計算技術:5.準同型暗号を用いた秘密計算技術と実用化に向けた活動. https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=191278&item_no=1&page_id=13&block_id=8
[20] 佐藤宏樹, 石巻 優, 山名早人. 完全準同型暗号におけるbootstrap problem及びrelinearize problemの厳密解法の高速化. https://dbsj.org/wp-content/uploads/2020/02/DBSJ_18_17_sato.pdf
# 課題2
以下のリンクに課題のコード(kadai2-1.py, kadai2-2.py)を掲載しました。
https://gist.github.com/watagashi0619/45323dee57665210390f890a79c0f849
なお、課題2.2の説明に誤りがあると思われます。具体的には、変換先の各桁が[-16/2,16/2)の間の値をとるはずですが、例として挙げられている「232→(8,-2)」は8は取り得ない値のはずなので誤りで、正しくは(-8,-1)のように分解されると思われます。また、コードについても、入力として16bitの符号なし整数(uint16_t)が与えられますが、その受け取りを8bit符号付き整数で受け取るコードとなっていたため、その部分については修正を行いました。
# 課題3
現在、京都大学 工学部情報学科の数理工学コースに在学し、応用数学 や応用物理、計算シミュレーションや機械学習 アルゴリズム 等について勉強しています。数学や物理自体も好きですが、数理的な知識をプログラムと関連させることも好きです。これの関連としては、雷雲プロジェクト(https://thdr.info/ 簡単に言えば雷の発生の原因を解明するプロジェクト)に関わりをもち、雷雲や宇宙からやってくるガンマ線 や環境放射線 の測定と解析を行っていますが、主に雷放電時のガンマ線 量の増大の検知(異常検知)に統計、機械学習 を用いた方法の設計から実装まで携わっていることが挙げられると思います。このプロジェクトに携わっていることは、まだ誰もやったことのないことに挑戦しようとしているという意味ではこのゼミと共通点があるかもしれません。また、これに関連して、プログラミングという点では他に、最近ではraspberrypiを用いて学生証をカードリーダーにタッチすることで入退室の記録がつけられる入退室管理システム を構築したり(https://potaxyz.hatenablog.jp/entry/2020/12/15/004100 )、大学の講義や課題、履修に関する通知、コロナウイルス による大学側の授業方針についてのお知らせ等の分散している情報をを集約してslackに通知するbot をaws 上に構築した等の経験があります。このほか、大学の実験の中で数値線形代数 、数値積分 、微分方程式 の数値解法、勾配法などによる零点探索、分枝限定法、FFT 等の実装の経験があります。暗号技術に興味を持つようになったのは最近で、量子力学 を勉強する中で量子アルゴリズム や量子暗号に興味を持ちましたが、そこで量子暗号以外についてあまり勉強していなかったな、となったのがきっかけです。特に興味があるのは暗号技術の数学的な側面です。準同型暗号含め、暗号技術についての勉強は始めたばかりなので、この機会に準同型暗号や秘密計算を中心に、様々な暗号技術についての知識を理論についても、また実装の観点からも得たいと考えています。
選考通過
締め切りが1週間伸びた影響で結果の公表も1週間程度伸びてた
ちなみに、同学科同回生で一緒にPRML ゼミやってるんですが、そこのメンバーがL-IIのトラックに来てたりとか、L-IIIトラックにもメンバーが行ってたりした。
L-IIIトラックに行った友人。選考通過者1人でウケた
講師の方もL-II,IIIともに京大の情報学研究科の方です。全国大会なのになんだか内輪感が...
閉講式の成果発表のときも...
実際に参加してやったこと
オンラインなので講義の時間が被らなければ他の講義も取れる。集中コースと選択コースは時間被らないように時間割が設定されています。僕は追加でA2の講義を受けました。他にAIシステム・ハッキング入門とか申し込んでたけど外れました。かなしいね。
各受講生には専用のgoogle accountが配られ、講義にはgoogle meetが使用されていました。
L-IIの講義
メンバーとしては自分入れて4人+追加受講者1人の合計5人でした。
TFHEとは?
TFHE(Torus Fully Homomorphic Encryption)とは、データを暗号化したまま任意の演算を行うことができる完全準同型暗号の1つです。いくつかある完全準同型暗号の流派のなかでも特に高速なことで注目されているようです。
流れ(?)としては、
入力を0,1のバイナリとして、暗号化(ノイズを付加、トーラスに埋め込み、多項式 にする、など)して、所望の論理ゲートの性質を満たすように暗号のまま加算、回転などをして、符号をとって復号する
という感じになっています。
最近ではパスワードモニター等の技術に応用されているようです。
www.microsoft.com
詳しくは講師の方が書かれたものを見るのがいいかな、と思います
qiita.com
講義内容
講義は3回、13:30-17:30の4時間。8/11,9/19,9/26にあった。基本的に進捗を聞いて、暗号のしくみ等についての講義を1時間程度して、残りはひたすらハッカソン という感じでした。
8/11と9/19の間にすごい期間空いちゃっているけど、そこには週1回くらいのペースで1時間程度のミーティングがあった。進捗どうですかと講義。
講義の目的は理論と実装の間を埋めること。実際論文を見ると、書かれている順番が講義の順の方が自然だったりとか、実装とちょっと数字の取り方が違ったりとか、アルゴリズム もそうだけど理論に寄ってて実装に持ってくのが大変だなあと思ったりした。
ミーティングと旅行が被って野付半島 にドライブした帰りにミーティング受けた日もあった(10泊11日 だいたい北海道ぐるっと - ポタージュを垂れ流す。 ←の9/14)。
セキュキャンのdiscordがあるのでそこで連絡を取ったりとか時には質問投げたりとか、通話して作業したりした。
オンラインのメリットはどこでもいつでも好きな時に進捗が生めることだなあとは思う。
けど、デメリットとしては、あんまり交流が生まれなかったなあ、っていうのがある。ここは難しいところだと思う。画面突き合わせてはい喋ってくださいってなっても難しいよね。あとは、些細な質問でもオフラインなら質問してたのかなあと思ったり。自分で考えたら解決する/した問題でも、聞いたことで新たな知見を得られることもあるしね。
成果
github.com
応募課題はpython で出したが、c++ を書いてみることにした。普段python 書いてるけどc++ もpython 並みに使えるようになればいいかなと思って。実際ポインタとか理解が完全ではないにせよ、逃げていたようなところとかも通らざるを得なくなって勉強になった。
講義の目標はHom NANDをつくること。NANDが作れれば任意の論理演算ができます。僕は9/19の時点で完成していたので、講義の目標は達成できた。
ちなみに、昨年度より受講生の進捗はだいぶよかったみたいです。昨年はHom NAND実装まで到達してない人もいたみたい。今年は追加受講生の方以外はみんな到達できていたと思う。
追加でTBSR(という暗号形式)を用いた整数加算アルゴリズム を論文 を読みつつ実装した。
見た目は地味だけど、実際走ってるのを見ると感動する。
Hom NANDの表を計算して表示 / TBSRによる足し算
Hom NANDは実行に50秒程度かかっているけど、FFT などでちょっと高速化すると4秒程度にはなるらしい。高速化を目指すとさらに10ミリ秒単位くらいにはなるみたい。
結果だけ表示してるので、暗号になってるものを文字列として表示するとそれっぽくていいかもしれないですね。
今後の展望
TBSRの加算だけ実装したので、乗算も実装しようと思う
今度は準同型暗号のライブラリを使って何かアプリケーションを作ってみる(L-IIIでやってたMNISTの分類とかを準同型暗号を使ってやってみる)
準同型暗号に限らず暗号についての知見を広げたい
A2の講義
講義内容
講義タイトルは「任意USBデバイス 開発実験」でした。なんかちっちゃいマイコン 触れるの面白そう〜というノリ。講義で使ったのは 開発ボード EZ-USB(FX2LP CY7C68013A) です。
Lチカから始まって開発ボードから文字入力、カーソル操作、USB通信の盗聴をみてみたり...
成果
Lチカをいじって3拍子に
最後はBadUSBを作ろう!とのことだったのですが、何も思いつかなかったのでそのデバイス をパソコンに接続すると画面にフィボナッチ数列 をひたすら表示するってのを作った。
交流会
時々交流会的なのが設定されていました。oviceというのをつかってやっていました。
自己紹介の回のときは機械学習 に興味があるみたいな中学1年生の人がいたりしておじさんびっくりしちゃった。あと九十九里浜 をひたすら歩いたみたいな話した人がいて、そのまま限界旅行の話になってしばらく盛り上がった。そこではじめて琵琶湖一周した時の話 - ポタージュを垂れ流す。 の話をしたらめちゃくちゃウケた。みんなも昼夜逆転 したらとりあえず琵琶湖一周するといいと思います。
グループワーク
「セキュリティ・キャンプ修了後にあなたが取り組むこと」ってテーマでランダムに5人グループが作られて、そこでグループで何をするか決めることになった。3回くらいそういう時間が設けられたかな。僕はブログリレーをすることになった。いつまで続けられるかは正直わからないが...。前の人が次の人のテーマを決めるというなかなかユニークなものなので、勉強になるとは思う。
ちなみに1つ目の自分の記事はVPNについて調べてみた - ポタージュを垂れ流す。 です。分野外なだけあって伝えるのが難しい...。
企業イベント
協賛企業さんがお話してくれる。労働意識の低い僕にとっては企業というものに触れられるいい機会になった。
NTTデータ の方が初めは全然セキュリティとか知らなかったけど会社入ってから色々な技術を学んでいったみたいな話してて僕でも就職できるかもしれんって思った。
ゲヒル ンのお話を聞けたのは本当に良かったと思う。いつもtwitter とかアプリとかお世話になってます。あとスライドのデザインが良すぎ。好きです。
twitter.com
あんま関係ないけど気象データ扱ってるから雷のデータベースとか知りませんかって社長さんに聞いたら
https://www.blitzortung.org/ を教えてもらった。こんなんあんねや。
たくさんいただきました
その他
修了証が後日届くらしいです。届いたら追記したい。
さいごに
夏休みに1つの思い出ができたかなと思う。自分からでは触れなかったであろう準同型暗号を実際に理論から実装まで勉強する機会になって良かった。これからの暗号技術の勉強のきっかけにしたい。
そして、運営の方々、講師の方、チューターの方、そして受講生仲間、ありがとうございました!
あと、これ読んでてセキュリティキャンプ に応募するか迷っている人、応募に必要なのは技術よりやる気だ!バシバシ挑戦してみよう!