zk-tokyo Advanced Cryptography Program 2026

受講しながら書いている
自習ノート

講座を追いかけながら、読むだけで終わらせない形で整理しています。 各週のノートは前提から順に説明し、最後は実際に手を動かして壊せるようにしてあります。 公式教材ではなく、個人のノートです。

単一 HTML ビルド不要 外部通信なし 対話ラボ + クイズ

方針

教材として、3 つの層で作っています

ブログ記事は読み物として書きますが、こちらは繰り返し戻ってくる教材として組んでいます。

01 — 前提から なぜこの形なのか 手順の説明ではなく、そもそもなぜその道具が必要になったのかから書きます。 前提が抜けると、以降の記述がただの呪文になるからです。
02 — 壊せるラボ 自分の手で失敗させる 正しい完成形だけを見ても、各行が何を買っているのかは分かりません。 1 行外して壊れる様子をその場で観察できるようにしています。
03 — 検問クイズ 出題は毎回生成する 固定の問題集だと答えを覚えて終わります。その場で生成し、判定はラボと同じ計算器が行うので、 何度でも別の問題になります。

目次

週ごとのノート

講座の進行に合わせて増やしていきます。準備中の週は講座側がまだ公開していないものです。

Week 0 有限体と楕円曲線 手元の Python で 1 行打って、出た値を貼る対話ドリル 2 本(余りの世界 14 行 / 曲線の点と離散対数 11 行)から入る。 mod・群環体・逆元・位数・楕円曲線・離散対数をカード 1 枚 = 主張 1 つで、数は mod 7・11・13 だけ。演習 13 問と、 零因子が現れる/消えるのを見る電卓、曲線の全点を描いて離散対数を総当たりで解くラボつき 公開中
Week 1 算術回路の作り方と、壊し方 手元の Python で 1 行打って、出た値を貼る対話ドリル 2 本(「= 0 の式」で条件を書く 10 行 / 1 本抜くと通る値が 2 通りから 8 通りに増える 9 行)から入る。講義スライドと課題 README の順番のカード列、 宿題 build / attack を因数分解から読む。演習 6 問、制約を 1 本外して回路を壊せる対話ラボと検問クイズつき 公開中
Week 2 秘密を分けて、集めずに計算する 手元の Python で 1 行打って、出た値を貼る対話ドリル 2 本(share と線形演算 10 行 / Beaver と GMW 10 行)から入る。 講義スライド 55 枚と同じ順番のカード列、宿題 8 関数をスライド番号つきで、Beaver・OT・GMW を mod 11・23・1 bit の演習 15 問で。 GMW を 1 ステップずつ回せるラボ、開示検問クイズつき 公開中
Week 3 知っていることだけを、渡す 楕円曲線と Schnorr。宿題の 7 問を「1 行打つ → 出た値 → 1 文」で進む対話ドリル 25 行と、講義スライド 65 枚と同じ順番のカード列。講義が飛ばした「制約 → 多項式 → 短い証明」と「ZK 証明を自分で組み立てる手順」を専用カードで。 秘密なしで作った会話が受理される simulator ラボと、nonce 再利用で鍵を復元する攻撃ラボつき 公開中
Week 4 証明システムを 3 つの部品に分ける 予習ノート。SumCheck(mod 11)・STARK のトレース → 商多項式 → FRI(mod 17)・PLONK のゲート表と大積(mod 101)を 1 行ずつ打って進む対話ドリル 3 本(41 行)と、講義スライド追従のカード 26 枚。嘘の証明者がすり抜ける確率を数える 3 つのラボつき 公開中
Week 5 暗号文のまま関数を引く 予習ノート。完全準同型暗号と TFHE。ノイズが Δ/2 を超えて復号が壊れる瞬間(mod 64)・講義スライドの数値そのままで多項式を回して定数項を読む Bootstrapping(mod 64)・ 同じ符号反転が事故にも NAND の仕掛けにもなる negacyclic(mod 32)を 1 行ずつ打って進む対話ドリル 3 本(31 行)と、講義スライド 51 枚追従のカード 47 枚 公開中
Week 6 隠す・分ける・示すを組み合わせる 予習ノート。理論を応用設計へ。co-SNARK(mod 97 の share と Beaver triple)・zkVM(16 ビットのあふれと実行の表)・Tornado Cash(sha256 の先頭 6 桁で作る commitment / nullifier / Merkle 所属)を 宿題 co-snark-prove / zkvm-exploit と同じ数値で 1 行ずつ打って進む対話ドリル 3 本(38 行)と、講義スライド 41 枚追従のカード 32 枚。抜けた制約 1 行で二重引き出しが通る瞬間つき 公開中

読み方

各ノートの進み方

どのノートも同じ順路で組んでいます。上から読んでいけば前提は埋まります。

  1. 全体像講座が何を目指しているか、その週がどこに位置するか
  2. 前提なぜその道具が要るのか。素朴な方法が壊れるところから
  3. 部品式を 1 本ずつ、値を代入して読む
  4. ラボ実際に壊す。何がどれだけ壊れるかを数字で見る
  5. 検問生成された問題で、判定する側に回って確かめる

扱いについて

課題の答えが含まれます。自分で解いてから読むことをおすすめします (なお公式リポジトリの提出は公開 Pull Request で行われるため、各人の解答はもともと公開されています)。

ノート内の数値は、公式リポジトリの採点器を実際に走らせて突き合わせています。 ラボとクイズの計算はすべてブラウザ内で行われ、外部への通信はありません。