SBT⑦プライバシーを保護するためのSBTの実装
Soul Bound Token(SBT)を実装する上で、一番の問題はプライバシーだろう。ブロックチェーンは基本オープンで、そこに記載されるデータは、世界中の誰もが簡単に見ることができる。SBTをそのままブロックチェーンに載せてしまえば、プライバシーなどない状態になってしまう。
そこでセキュリティを高めるために、いろいろな手法が考えられるが、一番簡単な方法は複数のソウル(SBTを格納しておくウォレット、アプリのようなもの)を持つことだろう。例えば家族関係のSBTだけを格納するソウル、医療データだけを格納するソウル、仕事関連のSBTを格納するソウル、政治に関するSBTのためのソウルなど、複数のソウルを使い分けることで、関係ない人たちに関係ない情報が拡散するのを防ぐことができるだろう。ちょうど仕事関係の人たちとはFacebook、友人とはインスタグラム、家族とはLINE、というようにサービスやデータを使い分けるのと同じような感じだ。
それでもよほど気をつけてないと、バラバラに発信した情報がかき集められて名前や住所などの個人情報が特定されてしまうことがあるかもしれない。
そこでSBTに別の技術を組み込むことで、SBTをよりセキュアにすることが可能だ。
最も簡単な方法は、元のデータをブロックチェーンに載せるのではなく、元データはオフチェーンのどこかに保存しておき、そのハッシュ値だけをブロックチェーンに載せるという方法だ。
ハッシュ値とは、ある数字をハッシュ関数と呼ばれる関数に入れた場合に出てくる数字だ。例えばy=x2という関数のxに2という数字を入れれば、計算結果であるyは必ず4になる。ところが逆に4という計算結果が分かっていても、元の数字が+2なのか-2なのかは分からない。ハッシュ関数はこれをより複雑にしたもので、ある数字をその関数に入力すると必ず同じハッシュ値が出てくるが、ハッシュ値から元の数字を推測することは非常に困難、というものだ。
ブロックチェーンにハッシュ値を載せておけば、オフチェーンのデータからハッシュ値を生成し、ブロックチェーン上のハッシュ値と同じであることをいつでも証明できるわけだ。
ハッシュ関数、ハッシュ値とは、簡単に言えばこんな仕組みで、ブロックチェーンに載っているハッシュ値からは元のデータが何なのかはまったく分からない。なのでプライバシーが守られるわけだ。
元のデータのオフチェーンの格納場所に関しては、幾つか考えられる。自分自身のデバイスに格納しておくことも可能だし、信用できるクラウドサービスを利用してもいいだろう。Interplanetary File System(IPTS)と呼ばれる分散型のクラウドサービスを使ってもいい。
このハッシュ値だけをブロックチェーンに載せる方法なら、引き続きスマートコントラクトがSBTを書くことも、データ格納場所からSBTを読むこともできる。単純なデータのやり取りなら、この比較的シンプルな方法でも十分にプライバシーを守ることができる。
しかしビタリック・ブテリン氏は、今後個人のデータが細かく切り出され、複雑に組み合わさってAIの学習データになり、科学技術、産業が大きく発展するようになるという。そのためには、データのどの部分を誰にいつ、どの程度公開するのかを細かく設定できる、より高機能なプライバシー保護技術が必要になってくる。
幸いなことにそのための技術が既に幾つか登場しているらしい。この論文によると、1つが「ゼロ知識証明」と呼ばれる暗号技術だ。ゼロ知識証明は今日、プライバシーを保護した形での資産の移動方法として、またほかの情報は一切明らかにせずに特定の情報だけを公開する方法として、既に広く使われている。
ブテリン氏のブログによると、過去10年間に開発された暗号技術で最も優れているのがゼロ知識証明で、中でもzk-SNARKs(zero knowledge succinct arguments of knowledge)と呼ばれる汎用簡潔ゼロ知識証明が卓越しているという。
zk-SNARKsは、実際の計算にどれくらい長い時間がかかろうとも、その計算の結果をすぐに証明できるという技術だ。例えば「cowという単語の後ろに秘密の数字を追加したデータを、ハッシュ関数で1億回計算した結果が、0x57d00485aaから始まるデータである」という主張が本当か嘘かを、実際にハッシュ関数に入れて1億回計算しなくても、またその秘密の数字が何であるだのかが分からなくても、その場ですぐに証明できるという。
この技術を使えばSBTのデータのハッシュ値から、例えば「私は20歳以上である」というような主張が真実であることを簡単に証明できるという。
さらにはGarbled circuitsといった複数のユーザーが関係する計算にも、ゼロ知識証明を応用できるという。
Garbled Circuitsは、互いに双方のデータを知られたくない場合でも、双方のデータを使った計算結果だけは知ることができるという暗号技術だ。例えば、住民投票で誰が賛成票を投じ、誰が反対票を投じたのか分からなくても、投票結果はだれでも知ることができる。もちろん選挙管理委員会という信頼できる中央集権型の集計係がいれば可能なわけだが、Garbled Circuitsは集計者がいなくても同じことができる計算技術だ。
この論文によると、Garbled Circuitsを使う際に、各人のデータをゼロ知識証明の技術を使ってハッシュ値にすれば、さらにセキュリティが向上するという。
もう1つの強力な技術はdesignated-verifier proof(指定検証者証明)だ。指定検証者証明は、その名の通り、指定した検証者だけがその証明が正しいかどうかが分かるという技術だ。
例えば田中さんが、彼のSBTを使って彼が20歳以上であるということを山田さんに証明したいとする。田中さんが「私は20歳以上であるということを証明するSBTを持っている」という主張が正しいというゼロ知識証明の証明書を作成。それを指定検証者証明を使って、山田さんに証明する。山田さんは、それを見て田中さんの主張は十分に正しいと判断するが、山田さんの友人の鈴木さんは検証者として指定されていないので、田中さんが20歳以上なのかどうかは分からないようになっている。そんな技術だ。
また山田さんは自分が「20歳以上である」という証明書をいつでも作れるが、verifiable delay functions(VDF)という技術を使えば5分間だけ誰でもその証明書を作ることができるようになる。
こうした技術を使えば、オフチェーンに格納されたSBTの元データを公開しなくても、そこから必要な情報だけを抜き出して、特定の人物にだけ、特定の時間だけ、共有することが可能になるわけだ。
こうした技術は一例に過ぎず、これからもいろいろな技術を組み合わせることで、個人情報を安全に取り扱えるようになるだろう。そうすることで、個人情報が意味のある形で共有され、AIの学習データとなって、科学技術、産業が今までと比較にならないくらいの速度で発展していくことだろう。