この記事は EAGLYS Advent Calendar 2022 の14日目の記事です
はじめに
昨年のアドカレでは,↓の書評記事を書きました
書籍『耐量子計算機暗号』の紹介
書籍『データ解析におけるプライバシー保護』の紹介
書籍『セキュリティエンジニアのための機械学習』の紹介
書評記事は書くのが楽なので今年も書こうと思います
Q. それってあなたの感想ですよね?
A. はい
ということですので,あくまで個人の感想となります
今回紹介する本
内容に深く入らない程度で気になった章を↓で紹介します
第14章
耐量子暗号ということで,ウッキウキでこの章から読み始めたのですが,当然の如く符号ベース暗号は紹介程度に終わっていました・・・
ブロックチェーンに触れる以上,ハッシュベースを紹介するのは分かります
耐量子暗号の中で一番「性能がいい」格子暗号を紹介するのも分かります
符号ベース暗号もやってくれって・・・
ということでもうこの章に関してこれ以上書くことはありません(過激派)
第12章
おそらくこの本の一番のメインです,ブロックチェーンの話ですね
マークルツリーを使って,ハッシュでぐちゃぐちゃみたいな話もちゃんと書かれていました
ディエムのことがしれっと書かれているんですが,そういえば撤退したのって今年でしたね・・・
第13章
基本的にハードウェアっていうかアプリケーションには興味がない筆者なのですが,
constant-time implmentation に触れられていたのは驚きでした
constant-time implmentation とは,例えば,与えられた正整数 $n$ が偶数かどうかを判定する関数を↓で作ったとします
def decide_even(n : int):
flag = False
if (n % 2 == 0):
flag = True
return flag
これで動くっちゃ動くんですが,例えば,偶数だったら,サブルーチンAを呼び出して,その中で別のサブルーチンを呼び出して・・・みたいな処理を途中で挟むなら,
$n$が偶数のときの decide_even (たぶんこの間数名でなくなると思いますが)の処理時間と奇数のときの処理時間は大きく異なります
実はプログラムの中身を全く見ずとも,ランダムに正整数を与え続けてその処理時間や消費電力などを測定することで,部分的にプログラムの情報を得ることができます(サイドチャネル攻撃の一種)
このような攻撃に対する実装上の工夫が constant-time implementation です
*上の関数を修正するなら,if文を消せばOKです
*全然関係ないんですが,この前の Asiacrypt2022 で constant-time implementation のツールがあることを初めて知ったのですが,かなりいろいろなツールがあるそうですね・・・
Constant-timeness verification tools
TEE の話にも触れられていたのが,現代って感じでした
第15章
雑多な章ですね,MPCとFHEとZKPについてです
MPC
もうChromeで使われてるんですね知らなかった
8章を前提にすると分かりやすいと思います
FHE
聖杯ってなに?
概要のみならず,ブートストラップにも触れらていますその図がめちゃわかりづらいんですが
LWE問題をもとにしたFHEも触れられていて驚きでした
ZKP
なんか最近すごく話題ですよね(他人事)
この中だと(少なくともFHEと比較して)かなり古参なのに・・・
まとめ
「数式はできるだけ使わず、代わりに図解をふんだんに使った本」ですので,「暗号理論」ではなく「暗号技術」の本です
それが良いか悪いかという話ではなく,個人的にそのような類の本は需要があるのかなと思いますし,流行りに合わせて定期的に出版されるべきだと思います
数式はできるだけ使わない代わりにめちゃくちゃ読みづらい部分もあるため,結局しっかり勉強するなら,個別でやるのが良いかなと
今回の内容はここまでです.ここまでご覧になってくださった方々ありがとうございます!