Skip to main content

フェーズ2:プライバシーとゼロ知識証明

ゼロ知識証明ってなに?

中身を見せずに「正しいよ」とだけ納得させる魔法のような技。完全性・健全性・ゼロ知識の3つの約束と、prover / verifier / witness を、たとえ話で。


ここが Midnight の心臓部です。 名前はむずかしいけど、考えかたはとてもシンプル。1回でぜんぶ分からなくて大丈夫です。

なんのためにあるの?

「正しいことを証明したい。でも、中身は見せたくない」——そんなわがままをかなえる技です。

中身を見せずに、「これは正しいよ」とだけ、相手に納得させる。

これを ゼロ知識証明(ゼロちしきしょうめい / ZKP) と言います。

たとえ話:パスワードを見せずに証明する

あなたは、あるアプリの正しいパスワードを知っています。 でも、パスワードそのものはぜったいに見せたくないですよね。

ゼロ知識証明を使うと、

  • パスワードは見せない
  • でも「正しいパスワードを知っている」ことだけは、相手にちゃんと納得させられる

「答えは見せないけど、ちゃんと解けたよ」と証明できる、魔法みたいな技です。

3つの約束(これだけ覚えよう)

ゼロ知識証明は、つぎの3つを守ります。

約束 むずかしい名前 やさしい意味
① 正しいなら、必ず通る 完全性(かんぜんせい) ほんとに正しければ、検査は必ず合格する
② うそは、ほぼ通らない 健全性(けんぜんせい) うそをついても、ほぼ合格できない
③ 中身はもれない ゼロ知識 たしかめた人は「正しい」以外何もわからない

この3つがそろって、はじめて「見せずに証明する」が成り立ちます。

登場人物(だれが何をする?)

名前 役わり たとえ
prover(証明する人) 「知ってる/条件を満たす」と主張する 解けたよ!」と言う人
verifier(たしかめる人) その主張がほんとか確かめる ほんと?」と検査する人
witness(証拠・秘密) 証明する人が手元に持つ秘密の値 手元のパスワードそのもの
circuit(回路) 「何を証明するか」を計算の手順で書いたもの 検査のルールブック

⚠️ prover も verifier も「人」とはかぎりません。アプリの中で、同じプログラムが両方の役を演じることもあります。「役わりの名前」だと思ってください。

1回だけで終わる証明(ブロックチェーン向き)

  • やり取りしながら納得させるやりかた(interactive)もありますが、
  • ブロックチェーンでは「1回つくった証明を、後からだれでも1人で確かめられる」必要があります。
  • だから Midnight では「1回で完結する証明」(non-interactive)が前提です。

気をつけること(よくあるかんちがい)

  • ゼロ知識証明は「暗号で隠して運ぶ」しくみではありません。「事実だけを納得させる」しくみです。
  • 「回路(circuit)」を書くのは、あとで出てくる Compact の役目。今は入口だけでOK。

開発者として何を学べばいい?

  • まずは「中身を見せずに、正しさだけ渡せる」というイメージをつかむこと
  • 3つの約束(完全性・健全性・ゼロ知識)を、言葉だけでも覚えておくこと
  • 「prover / verifier / witness」という役わりの名前に慣れておくこと

今日のまとめ

  • ゼロ知識証明=中身を見せずに「正しい」とだけ納得させる
  • 約束は3つ:正しければ通る・うそは通らない・中身はもれない
  • ブロックチェーンでは「1回で完結する証明」を使う

今はここだけでOK

「答えを見せずに、解けたことだけ証明できる」——このイメージが持てたら大成功です。

📘 もっと正確に(原文準拠コース)

Academy 原文に忠実な詳しい版はこちら:

つぎに読むページ

➡️ では、その「見せかた」をどう設計する? 必要なことだけ見せる


📚 もっとくわしく(公式・むずかしめ): Midnight Academy(外部リンク・別タブで開きます)ZKP とは(ブログ)(外部リンク・別タブで開きます)