Skip to main content

原文準拠 Phase 1:基礎

2.1 暗号(Cryptography)

Midnight Academy Phase 1 / Unit 2 / 2.1 Cryptography の原文準拠版。ハッシュ・公開鍵暗号・デジタル署名という3つの土台を、正確に・やさしく。Midnight での使われ方も。


📘 Academy原文準拠 | Phase 1 · Unit 2 · Lesson 2.1 Cryptography 内容に忠実な日本語版です。図・原文(英語)・動画は公式 Academy(外部リンク・別タブで開きます) を正本に。

暗号(cryptography)は、ブロックチェーンの安全のいちばん下の土台です。これが無いと、貴重品を置いた家の玄関を開けっぱなしにするようなものです。

特に大事な土台が3つあります:ハッシュ / 公開鍵暗号 / デジタル署名。順に、やさしく・正確に見ていきます。

① ハッシュ(hashing)

同じ「こんにちは、世界」でも入力を少し変えるとハッシュ値が全く別物になり、ハッシュからは逆算できないことを示す図

端末の顔データや書類などをハッシュ+ソルト化しローカルで証明を作り、チェーンにはハッシュだけを保存して別端末で照合する流れの図

ハッシュは「データの指紋」です。どんな入力(1単語でも映画1本でも)を入れても、決まった長さの・ランダムに見える文字列が出てきます。

特徴をおさえましょう。

  • 一方向:入力 → ハッシュは簡単。でもハッシュ → 元の入力は復元できない(総当たりで当てにいく以外は)。
  • だから入力が予測できる(例:password123)と、攻撃者は「よくある候補」を片っぱしから試して一致を探せます。
  • 対策が salt(ソルト):データにランダムなゴミを足してからハッシュする。すると password123 でも当てにくくなります。
  • 同じ発想が nonce(ナンス):取引ごとに1回だけ使う数を混ぜて、取引をユニークにし、あとからコピーして再送(リプレイ)されるのを防ぎます。
  • 入力を1文字変えるだけでハッシュは全く別物になる。Hello WorldHello World! で全然ちがうハッシュ。これが改ざん検知の仕組みです。

ブロックチェーンでは、各ブロックが前のブロックのハッシュを含みます。古い取引を書きかえると、そのハッシュが変わり、次のブロックとのつながりが壊れ、その先も全部壊れる。だから全ノードがすぐ不正に気づくわけです。

Midnight での使われ方:センシティブな書類の「ハッシュだけ」をチェーンに置けば、書類そのものを見せずに「ある時点で存在した」ことを証明できます。チェーンが見るのは指紋だけ。中身は端末から出ません。

(→ やさしい版:ブロックチェーンってなに? / ハッシュの応用は ZKの部品箱

ブロックは前のハッシュでつながる図

② 公開鍵暗号(Public-Key Cryptography)

乱数から秘密鍵を生成し、数学的な関数で公開鍵を導く鍵生成の流れと、秘密鍵は秘匿・公開鍵は自由に共有という利用方法を示す図

2つで1組の鍵を使います。

  • 秘密鍵(private key)=パスワードのように絶対に守るもの
  • 公開鍵(public key)=メールアドレスのようにみんなに教えてよいもの

この2つは数学的に結びついています。

  • Midnight では、公開鍵(またはそこから作るアドレス)があなたの口座のIDになり、秘密鍵がその口座を操作できる唯一のカギです。
  • ⚠️ 秘密鍵を無くしたら、資産は永久に戻りません。パスワード再発行も窓口もありません(“not your keys, not your coins”)。

③ 認証と完全性(署名のはたらき)

送金とは、実は「コインを動かす」ことではなく、秘密鍵でメッセージに署名することです。

「私は、自分のアドレスから Bob のアドレスへ X トークン動かすことを承認します」に署名する。

ネットワークはその署名を公開鍵で照合します。一致すれば、次の2つが分かります。

  • 認証(authentication):その取引は本当にあなたから出た(なりすませない)
  • 完全性(integrity):途中で改ざんされていない

④ 暗号化と秘匿(confidentiality)

公開鍵暗号は暗号化にも使えます。

  • Midnight では、受信者の公開鍵で機密データ(受信者のID・取引の詳細など)を暗号化できます。
  • 受信者だけが自分の秘密鍵で復号できる。だから公開台帳に記録されても、中身は当事者以外には秘密のままです。

Midnight はこの上に、さらにゼロ知識証明などのプライバシー機能を重ねます(後の Phase)。でもこの公開鍵暗号の土台が、それら全部を可能にしています。

⑤ デジタル署名(digital signatures)

アリスがトランザクションを作成し秘密鍵で署名・デジタル署名を添付、ネットワークが公開鍵で検証してボブへ届くまでのシーケンス図

デジタル署名は「この内容が、特定の人(の秘密鍵)によって作られ、改ざんされていない」ことを示す仕組み。Midnight の全ノードが、あなたの公開鍵で署名を検証します。

署名がもたらす3つ:

性質 意味
Authentication(認証) その公開鍵の持ち主から来た、と分かる。なりすまし不可
Integrity(完全性) 署名後にデータを変えれば署名は無効に。気づかれず変えられない
Non-repudiation(否認防止) 一度署名したら「送ってない」と言い逃れできない

開発者として押さえる点

  • ハッシュ=一方向・改ざん検知。salt/nonce で予測・リプレイを防ぐ
  • 秘密鍵=全権。鍵管理が最重要(紛失=終わり)
  • 送金=署名。認証・完全性・否認防止は署名から来る
  • Midnight 固有:ハッシュで「見せずに証明」公開鍵暗号で「公開台帳でも中身は秘密」。ZK はこの土台の上に乗る
  • 実装では、ハッシュは Compact の persistentHash、コミットメントやマークル木として現れる(→ ZKの部品箱Compactの書きかた

やさしい版・公式へ

つぎに読むページ

➡️ 開発系の見本へ。1.2 Compact の基礎