秘密にするべき「情報」を秘密にしたまま、その「情報」を知っていると証明する技術です。
例えば、扉を開く「合言葉」を自分が知っているとして、その「合言葉」を誰にも教えることなく、知っていると証明する方法はあるでしょうか?みんなの前で「合言葉」を唱えれば知っていることを証明できますが、同時に「合言葉」もみんなに知られてしまします。それでは、秘密にするべき情報を秘密にできません。
ゼロ知識証明とは、何の情報も知識もみんなに与えることなく、ただ本当に「合言葉」を知っているという事実だけを証明するための技術です。
なぜ、そんなものが必要なのでしょうか。事例で考えてみます。
個人情報など、保護する必要性が高い情報を大量に集めて、機械学習によって分析する場面を想定します。
機械学習による分析では、与えられる情報の量が多い方が、得られる結果の精度が高まる場面が多くあります。つまり、情報を分析する人の立場としては、大量の情報を投入して計算したいと考えます。
また、機械学習においては、その計算処理に最適化されたコンピューターを使えば、処理時間を大幅に短縮することができます。高度に最適化されたコンピューターを大量に導入すれば、時間短縮と精度向上という効果が見込まれ、結果として解析に関わるコストを下げられるのです。
大半の企業にとって、そのような高度なコンピューターを大量に自前で用意することは、現実的ではありません。購入費用や維持費用が高すぎたり、性能向上ですぐにコンピューターが陳腐化してしまったりして、逆に高くついてしまいます。そのため一般的には、クラウドコンピューティングリソースを必要最低限の時間借りて使うのが現実的です。
ここまでの前提をまとめると、次のようになります。
個人情報を分析する場合、大量の個人情報を大規模なクラウドコンピューティング環境に預けて計算をするのが最適である。
しかしそこには問題があります。
個人情報を大量にクラウドコンピューティング環境にアップロードすることは、問題ないのでしょうか?万が一、情報が流出してしまったら、企業の信用は失われます。
問題を避けるためにクラウドコンピューティング環境を使わないという選択肢もありますが、その場合は高価なコンピューターを大量に購入し、維持し、オフライン環境で適切に維持する事が要求されます。それには多くの場合、膨大な時間とコストが発生します。適切にクラウドコンピューティング環境を利用できる競合他社との差が開く一方です。
そこで登場するのが、ゼロ知識証明です。
ゼロ知識証明を使えば、秘密にするべき「個人情報」を秘密にしたまま、分析することができます。
個人情報を断片化し暗号化すれば、アップロードしたあとに流出してしまったとしても、意味をなさない情報にできます。その状態でクラウドコンピューティング環境に分析を任せ、結果を受け取ります。断片化されて暗号化された情報を元に戻すための合言葉は、自分だけが知っていれば良いのです。
さらに今後の応用が期待される利用場面として、ユーザー認証が挙げられます。
現状、Web サイトにログインする時には、本人しか知らないパスワードで認証してログインをします。
古い仕組みの Web サイトでは、パスワードを Web サイト側でも保存しているため、合っているかどうかを検証し、認証することができるわけです。もしそのパスワードが暗号化されずに Web サイト側に保存されていたら、そしてその Web サイトのサーバー管理体制が不十分だったら、パスワードは流出してしまう危険性があります。
これまでパスワードというのは、人間が覚えて入力をする前提で使われてきました。その制約のため、パスワードとして設定できる文字数が限られており、近年の高度な計算能力を有するコンピューターであれば、総当たりで試しても短時間でパスワードを解析することが現実的に可能になりました。もし同じパスワードをいろんな Web サイトや SNS で使いまわしていた場合、1箇所でも管理体制の甘い場所があれば、そこから流出してすべてを失う可能性があるわけです。
利用者側にできる対策としては、パスワードの文字列を長くすること、意味をなさない文字と記号の羅列にすること、利用するサービスごとに違うパスワードを使うことです。その場合、人間の記憶できる範囲を超えますので、覚えて管理するのは不可能になります。パスワード管理ソフトを利用し、加えて2段階認証を設定するのが、現状での最適な対策になります。要するに、利用者側の負担が大きくなってしまいました。
今後、ゼロ知識証明の利用シーンが増えることで、ID とパスワードに頼らない認証の実現が期待されています。パスワードそのものを誰にも教える事なく、パスワードを知っている事、自分が認証しようとしている人「本人」であることを証明するのです。Web サイト側にとっても、貴重な情報を預かるリスクを抑える事ができます。
暗号技術から発展してきた仮想通貨、ブロックチェーンとは組み合わせて考えられ、利用される技術になります。情報の公開が前提となるブロックチェーンにとって、ゼロ知識証明利用価値は非常に高くなります。
今後、さらなる発展が期待されるコア技術のひとつです。