zk-tokyo Advanced Cryptography Program 2026

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

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

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

方針

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

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

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

目次

週ごとのノート

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

Week 0 有限体と楕円曲線 mod 演算・群環体・逆元・離散対数問題。Week 1 以降の前提がここに全部ある スライドのみ
Week 1 算術回路の作り方と、壊し方 なぜ回路で書くのか/なぜプライバシーが守れるのか/なぜ + と × しか使えないのか。 制約を 1 本外して回路を壊せる対話ラボと検問クイズつき 公開中
Week 2 準備中 講座側が未公開
Week 3 楕円曲線暗号と Schnorr プロトコル 有限体 → 楕円曲線 → シグマプロトコル → Fiat-Shamir。nonce 使い回しで鍵が漏れる理由も攻撃側から これから
Week 4 準備中 講座側が未公開
Week 5 TFHE — Programmable Bootstrapping 暗号文のまま NAND を計算する。Week 1 の「+ と × しかない」の続き これから
Week 6 zkVM / vFHE / co-SNARK 組み合わせて 1 つのスタックにする。zkVM の中で動く Proof of Exploit を Rust で書く これから

読み方

各ノートの進み方

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

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

扱いについて

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

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