ゼロ知識証明にできること
何かを証明するとき、普通は証拠を見せる必要があります。パスワードを入力したり、身分証を渡したりするようなことです。それによって、相手が知る必要のある以上の情報が伝わってしまうことがあります。
ゼロ知識証明は、これを変える暗号技術です。証明者と呼ばれる一方が、その主張を裏付ける秘密を明かすことなく、検証者と呼ばれるもう一方に正確な主張を示します。検証者は必要な答え、たとえば年齢の条件を満たしているという事実だけを知り、誕生日や住所、証明書番号までは知りません。
これは漠然としたプライバシーの約束ではありません。証明は1つの正確な主張のために設計される必要があり、優れた設計であれば不正はほぼ不可能になります。
洞窟の例
鍵のかかった扉の奥で2本の道がつながっている洞窟を想像してください。扉は合言葉を言わないと開きません。あなたはその言葉を知っていると言いますが、声に出したくはありません。
友人が外で待つあいだ、あなたはどちらかの道から洞窟に入ります。友人は、あなたにどちらの道から戻ってきてほしいかを叫んで伝えます。合言葉を知っていれば、洞窟の中で扉を開けて、どちらの道からでも戻れます。もし当てずっぽうなら、指定された側に戻れる確率は五分五分しかありません。
毎回予測できない新しい選択で、このテストを何度も繰り返します。10回連続で成功した場合、はったりをかけている人が偶然成功する確率は約1,000分の1です。友人は、あなたが合言葉を知っているという強い証拠を得ますが、その言葉を聞くことは一度もありません。
洞窟の物語から実際のソフトウェアへ
実際の証明は洞窟ではなく数学を使いますが、プライバシーを守るという目的は同じです。取引がルールに従っていることを、詳細をすべて明かさずに示すことができます。また、1つの小さな証明で大量のチェックの代わりを果たせるため、検証が速くなるシステムもあります。
デジタル資格証明も実用的な使い道の1つです。すべてのサービスに身分証全体をアップロードする代わりに、うまく設計された資格証明なら、「この人は18歳以上か」「この資格を持っているか」といった、聞かれた質問にだけ答えられます。
細部が重要です。証明が保護するのは、隠すために設計された情報だけです。それを取り巻くアプリは、依然としてデータを収集したり、ユーザーを特定したり、他の部分で不適切なセキュリティ上の選択をしたりする可能性があります。
ゼロ知識証明とゼロ知識暗号化の違い
「ゼロ知識」という言葉は、クラウドストレージでも使われます。ただし、これは別の考え方です。ゼロ知識暗号化とは、ストレージの提供元が復号キーを持たないため、ファイルを読み取れないことを意味します。
ゼロ知識証明は、答えの裏にある秘密を明かさずに質問に答える仕組みです。ゼロ知識暗号化は、保存されたファイルを提供元が読み取れないようにする仕組みです。どちらもプライバシーを高められますが、互いに置き換えられるものではありません。
実践的なプライバシーの教訓
ゼロ知識証明は、タスクに必要な最小限の情報だけを共有すればよいということを教えてくれます。ただし、匿名になれるわけでも、アプリのすべてを安全にしてくれるわけでもありません。サービス側は、あなたが接続したこと、いつ接続したか、証明の範囲外にあるその他のデータを、依然として把握している場合があります。
Sealbyには、何かを証明するよう求めるアカウントやサーバーがないため、ゼロ知識証明は必要ありません。ファイルはiPhone上で暗号化されます。日常のプライバシーを考えるうえで大切な問いはシンプルです。このサービスが本当に知る必要があるのは何か、もっと少ない情報で済ませられないか、ということです。