企業におけるプライバシーとは何か、Cordaではなぜプライバシー確保を重視しているのか。
はじめに
大企業(エンタープライズ企業)がブロックチェーンを導入する際に、どんなことを重要視するのだろうか。当然ながら、エンタープライズ企業がブロックチェーンを大規模で導入する際には、様々なことを確認する。数あるブロックチェーン基盤がある中、それぞれの基盤はどう異なるか。それぞれどのような特徴があり、その特徴が想定したユースケースの要件に合うかどうか。エンタープライズ企業がブロックチェーン技術を導入する際に、ユースケースによって要件は異なるパターンが多い。しかしプライバシーに関しては、程度の違いはあっても、プライバシーの確保が必要な場合がほとんどである。
一方で、ブロックチェーン技術自体、プライバシー確保とあまり相性が良くない。というのも、複数ノード(それぞれ異なる企業が管理するノード)で一つの「正しい」とされる台帳を決める必要があるからである。ある時点のデータを「正しい」と決めた場合、皆でそのデータを持つことで、改ざんされた事実がわかるようになっている。(誰かが一つのノードのデータを改ざんしても、他の人が持つノードのデータと異なるため)ブロックチェーン技術自体、プライバシー確保とあまり相性が良くない理由は「正しい」とされる台帳を決めるためには、そのデータの中身を見る必要があるからである。
本記事では、なぜエンタープライズ企業はプライバシー確保を重要視するかを説明し、ブロックチェーン技術自体がプライバシー確保とあまり相性が良くない中、現状どのような方法で、プライバシーを確保する方法があるかについて述べる。その上でそれらの方法にどのような問題点があり、Cordaはプライバシー確保においてなぜ画期的なのかを説明する。
※本記事で言うプライバシー確保は匿名ではない
エンタープライズ企業におけるプライバシー確保の重要性
プライバシーを確保するとは具体的にどういうことだろうか。 「プライバシー」には「個人や家庭内の私事・私生活。個人の秘密。また、それが他人から干渉・侵害を受けない権利。」(参照元:小学館「大辞泉」)という意味があるほか、最近では、「自己の情報をコントロールできる権利」という意味でも使われているそうだ。大企業(エンタープライズ企業)がブロックチェーン技術を使うに当たって、なぜプライバシー確保が重要かを一緒に考えてみよう。
単純な例として、A社がB社に50億円を送金する例があるとする。送金記録をブロックチェーンに記録するとした場合、どんなデータを記録すれば良いだろうか。最低限として、お金を送る人、受け取る人、数量が必要だ。時によっては時間も必要だろう。
パブリックチェーンにデータを記録する場合、誰でもA社からB社への送金の履歴を確認することができる。送金アドレス、着金のアドレス、数量が見える。一方、プライベートチェーンやコンソーシアムチェーンのケースにおいて、ネットワーク参加が認められたものだけが履歴を見ることができ、場合によってはアドレスだけではなく、社名も分かったりする。見られる範囲は違っても確実に誰かに見られるのである。
もし後日A社がB社に50億円出資したというプレスリリースを出したらどうなるのだろうか。金額が大きいため、この50億円の移動からA社とB社のアドレスを推測することができ、その情報を持って悪用することができるようになるだろう。
上述はあくまで一例にしかすぎない。A社がいくらの借金を抱えているか、いつ返済するか、一日どれくらいのトランザクションが発生しているかなどが社外に漏れたら、競合企業がその情報を利用しない理由がないのである。
人によってはすべてのトランザクションがパブリックチェーン上で記録され、データの所有権が個人に帰属されるようになる世界を夢見るかもしれない(私もその一人)。しかし、現段階においてそれを実現させるためには、課題が非常に多い。
ブロックチェーンとプライバシー確保は相性が悪い?
ブロックチェーン技術自体、プライバシー確保とあまり相性が良くない。それは、「正しい」とされる台帳を決めるためには、そのデータの中身を見る必要があるからである。データを見なければ「正しい」とされる台帳を決められない中で、プライバシーを守ろうとしているから難しいのである。
ブロックチェーンが想定通りにワークするためには、複数のノード(それぞれ異なる企業が持つノード)で一つの「正しい」とされる台帳を決める必要がある。ある時点のデータを「正しい」と決め、皆でそのデータを持つことで、誰かが一つのノードのデータを改ざんしても、他の人が持つノードのデータと異なるため、改ざんされたことがわかるわけである。
余談だが、プライバシーを守ることと完全匿名化するのは別の話である。完全に匿名化をしてしまうと、規制側の監視ができないため、結局マネーロンダリングの温床となり、規模が大きくなれば取り締まりが入る。プライバシーを守りつつ、規制側の監視のニーズにも対応し、異なるノード間で合意をとって「正しい」とされる台帳を決めなければならないのである。
現在のプライバシー確保の方法及び問題点
プライバシー確保のために、様々な開発が行われている。その中でどのようなプライバシーを確保する方法が存在し、それぞれどのような課題を抱えているかについて、代表的な例を説明する。
ハッシュ化
簡単に言えば、データそのものを記録するのではなく、ハッシュ化したデータを記録し、元データはローカルサーバーに保存する方法である。
A社がB社に100万円を送金したというデータをA社がそのままブロックチェーンに記録すると、A社がB社に100万円送金したのだなと、データを見ることで誰でもわかる。送金データをハッシュ化して、ブロックチェーンに記録し、元データをローカルサーバーで保管することで、プライバシーを確保することはできる。ローカルサーバーに保存されているデータを再度ハッシュ化し、ブロックチェーン上に記録しているデータと照合すれば、ローカルサーバーに保存された元データが改ざんされているかどうかが分かる。一方、デメリットとしてローカルサーバーのデータが消えないように、改ざんされないように注意を払い続ける必要性がある。また、改ざんされたらどのように元データを取り戻すかも問題である。さらに、ブロックチェーン上にデータそのものがないため、データの存在性を証明するのが大変である。エンタープライズ企業はただのハッシュ値を記録したくて、ブロックチェーンを使うわけではないだろう。誤解を恐れずに言うと、これはデータをハッシュ化して、新聞に載せるのと考え方は同じである。
応用として、単純にハッシュ化したものを記録するのではなく、スキームを作って、特定ノード間だけで検証可能な形でデータを保存し、ブロードキャストはハッシュ値だけをする形で行うことが可能である。その一例がQuorumのPrivate Transactionである。
Private Transactionはプライベートとは言え、関連のトランザクションはブロードキャストされる。取引の明細は取引関係者だけが見ることができ、ブロードキャストされたものはハッシュ値だけである。取引関係者であれば、ハッシュ値を利用し、Transaction Manager及びEnclaveから取引の内容を確認できる。ただし、トランザクションを最初から作る側は秘匿ができないという特徴がある。
ゼロ知識証明
プライバシーの確保において、期待されているのが、ゼロ知識証明である。 ゼロ知識証明はある人が他の人に、自分の持っている(通常、数学的な)命題が真であることを伝えるのに、真であること以外の何の知識も伝えることなく証明できるようなやりとりの手法である。わかりやすく言うと、他の人に秘密を知っていることを、秘密の中身を伝えずに証明する、ということである(わかりやすくない…)。
ゼロ知識証明は、その過程で多くの処理が必要であるため、どうしても処理速度が遅くなってしまうことがある他、なんでも証明できるわけではない。例えば18歳以上であることを証明するような簡単なケースはまだなんとか可能だが、複雑な命題であればあるほど処理速度が遅くなる。実利用においてはある程度利用シーンを限定することでカバーする必要があるだろう。
他にも様々なプライバシー確保の試みや研究開発の事例があるが、透明性を求められるブロックチェーンでプライバシーを守ろうとすると、どうしてもデータサイエンスや暗号学的なソリューションにたどり着く。他のアプローチとして本記事ではCordaを紹介したい。
Cordaにおけるプライバシー確保の方法
Cordaは世界中の金融機関がブロックチェーンを活用しようとしてスクラッチ開発された分散台帳基盤である。そのため、当初からプライバシー確保を考慮した設計となっている。
Cordaでは取引当事者のみデータを見ることができるのである。どうやってそれを実現できたかを理解するためには、Cordaのデータモデルを理解する必要がある。
プライバシー確保のために、Cordaは1ブロック1取引となっている。 データ構造をよく見てほしい、例えば図表1のブロック2をみてみよう。ブロック2のデータの中には、ハッシュ1が含まれている。その為、ブロック2はブロック1を特定することができる。しかし、ブロック2はブロック3のデータを一切持っていない。それはつまり、ブロック2からブロック3を探す事ができない事を意味する。ここで半順序性のデータ構造を仮定すると、ブロック3はブロック2やブロック1から分岐した枝を何とかして探す必要が出てくることを意味する。これは今考えているデータ構造では実現不可能だ。
図表1 Cordaのデータモデル
台帳にデータそのものが記録されているのと、データそのものが記録されていないのでは全く意味が異なる。
ブロックチェーンを使う理由は様々あると思うが、その中でも価値の移動を実現させたいから使うケースが多くある。ただし、もし台帳にデータそのものが記録していなければ、果たして価値の移動と言えるのだろうか。
また、台帳にデータそのものが記録されているケースでは企業はノードの管理をすれば良いのに対し、台帳に元データから暗号化したものを記録し、データそのものをローカルで管理するのであれば、二度手間となるだけではなく、不正ができる可能性が一気に高くなる。
なぜなら、オフチェーンとオンチェーンの整合性をとるためにはオフチェーンのデータをハッシュ化してオンチェーンに記録されているハッシュと照合する必要があるが、改ざんしたオフチェーンのデータとオンチェーンに記録したハッシュと比較する前にもとに改ざんし直せば一時的に改ざんされていることがバレないからだ。
Cordaはプライバシーを確保するために、データモデルの設計からビットコインやイーサリアムと異なる半順序のモデルにした。これは暗号化やデータサイエンスのアプローチとは大きく異なる。一方で、このようなデータモデルでは、各ノードがすべてのデータを持つわけではないため、データのバックアップ処理などが必要になってくる。
ただし、Cordaはエンタープライズ向けの分散台帳であることもあり、厳格な管理がされる前提での設計である。エンタープライズの世界で重要なデータのバックアップを取るなど、厳正に管理していない会社はあるのだろうか。銀行が取引データを失うことはなかなか想像できないだろう。エンタープライズの世界では、これは当たり前のリスク管理であり、エンタープライズ企業の要件や運用方法を深く理解し、設計されているからこそ、Corda別のアプローチを取れたのではないかと私は考える。
Cordaのデータモデルについてより深く知りたい方は以下の記事を参考にすると良いだろう。
<ご質問・ご要望の例>
- Corda Portalの記事について質問したい
- ブロックチェーンを活用した新規事業を相談したい
- 企業でのブロックチェーン活用方法を教えて欲しい 等々
SBI R3 Japan ビジネス推進部
デジタルアセットのプロジェクトをしています。
パブリックチェーン大好きでした(今も)が、Cordaの魅力に惹かれました!