【IPFSサーバーとは何か】

西村 祥一 | コンプス情報技術研究社代表取締役
自然言語処理・機械学習などの学術系案件の開発・コンサルティングを行うと共に、ブロックチェーン技術を用いた開発に取り組んでいる。Global Blockchain Summit2016ではブロックチェーン技術による位置情報プラットフォームを提案し、Best Innovation Awardを受賞。共著に「はじめてのブロックチェーンアプリケーション~Ethereumによるスマートコントラクト開発入門」(2017年、翔泳社)がある。

西村:我々オルツ社では、個人のデータを分散化して永久に保存するというプロジェクトに取り組んでいるのですが、2018年にデータの格納先として使うのであればIPFSが適していると考えています。

IPFS(InterPlanetary File System)という技術があります。インタープラネタリーとは惑星間という意味ですが、実際に惑星間でデータを置くわけではないので、通常は地球上にサーバーが分散しているところにファイルを分散して格納するような仕組みになります。IPFSというのはブロックチェーンではなく、技術的に言うと、分散ファイルシステムというものになります。

IPFSを理解していただくために、暗号化の必要なところだけをまとめた基礎知識をおさらいしたいと思います。

暗号化には、いろいろな暗号化方式がありますが、シンプルにわかりやすいもので言えば、元々の文章があって、それに対して共通鍵や秘密鍵と呼ばれたりする、パスワードのようなものを使って暗号文を作ります。暗号文を元の文章に戻そうとする場合、暗号化に使った鍵、もしくはそれとペアになる鍵がない限り、元の文章に戻すのが難しいという仕組みが暗号化と通常呼ばれているものです。

ハッシュも似ていますが、こちらは鍵が必要ありません。

公開されているアルゴリズムで、プログラムがあれば計算できて、元の文章をハッシュに置き換えます。同じ文章があれば、同じハッシュが出てきます。何に使うかと言うと、元の文章が改ざんされていないことを証明するときに、ハッシュと共に原文を出します。そうすると、誰でもハッシュは計算ができるので、元の文章が改ざんされていないことが保証できます。

鍵があれば結合可能というのが普通の暗号化です。ハッシュの場合はハッシュだけもらっても復号は不可能、極めて困難です。どれだけ困難かと言うと、何文字かわからないですが、ありとあらゆる可能な限りの英文を1個ずつ計算して、いつかこれが出てくるまでやれば戻せます。

総当たりで存在している文章を全部ハッシュします。天文学的な数値の確率で、もしかしたらこれがあてられてしまうかもしれない。そういう意味だと100%復号不可能とは数学的には言えない。しかし、極めて困難というものがハッシュという技術になります。

IPFSの仕組みですが、これはファイルシステムなので、ファイルを格納するための仕組みになります。

ファイルを保存したいとなった場合に、普通は契約しているサーバーにデータをアップロードします。

IPFSの場合は、まずファイルのハッシュを取ります。このハッシュは元のファイルを改ざんされないように守っている暗号だと思っていただいて、ハッシュを取った上で、ファイル自体をIPFSネットワーク上の一つのノードに送ります。そうすると、ハッシュが住所のような形でくっつきながら、このサーバーに保存されます。IPFSはP2Pで各ノードと呼ばれるマシンがつながっていますのでこれをどんどん複製していきます。世界中に散らばっているコンピュータに自分が保存したデータが散らばっていくと思ってください。

これの大事なところですが、実際にファイルを転送してしまっているので、世界中に自分が置いたファイルがそのまま置かれて、誰でも見られる状態になっています。

これに対して別の人が、ハッシュを教えられた場合、このハッシュのファイルが欲しいですと、あるノードに問い合わせます。このノードには希望するファイルはなかったのですが、ネットワークでつながっているので、このハッシュのファイルを持っている人はいませんか、とネットワーク上聞きにいきます。誰かが持っていれば、ここにコピーされて、このファイルが手に入るというような仕組みになっています。これが参照の仕組みです。

先ほど、削除性とか訂正という話が出てきたと思いますが、IPFSにも削除という概念はあります。

公開したけどあまり見せたくない、このハッシュのファイルを消してと命令は出せます。そうすると、このファイル消したいって言っているよと、他のノードにも伝えていきます。

世界中のノードから消えて初めてそのファイルがこの世から消えたという状態になります。これは正常に動いていれば削除することができます。

消してと言った後に、途中までは消していくのですが、ネットワークが繋がっていないとか、後はプログラムが壊れていて、消してくださいということに対して応答できないノードがあった場合、実はファイルとして残ってしまうことがあります。

若しくは故意にこのファイル残しておきたいから、プログラムを改造してどこかに取っておこうということが実はできてしまいます。一旦最初にばら撒いてしまっているので、これを取り返すというのは1回発行されてしまった雑誌や新聞を回収するのと同じ話だと思っていただくと分かりやすいかなと思います。

実はこのIPFSに個人情報をそのまま原文で書き込むという事はあまりお勧めをするやり方ではなく、通常はまず秘密鍵でファイル自体を暗号化します。暗号化したもののハッシュを取って、それをIPFS上に置くということをすれば、各ノードは自分が何のデータを受け取っているのかがあまりわからないので、それを取っておいてもしょうがないですよね。秘密鍵が外に出回らなければ、実質元のデータに戻すことは不可能である形になります。

ここまでがIPFSの仕組みですが、ハッシュというのは個人情報なのか、技術的にどうなのか、ということです。

例えば、どこの都道府県に住んでいるかというデータが入っていたとすると、ハッシュは誰がハッシュしても、同じ原文であれば同じハッシュが出てくるので、ハッシュが同じものを見ると、この人たちが同じところに住んでいるということがわかります。もっと言うと、都道府県は47個しかないので東京都在住と1個ずつハッシュすると、全部ハッシュがわかるので、そのハッシュとマッピングすることにより全員どこに住んでいるかが分かります。

ハッシュ自体から原文に戻すことは技術的にできないとしても、推測が可能です。取りえるデータのバリエーションが多いか少ないかで、実質戻せてしまうという事があります。どれくらい戻すのが難しいかというデリケートなところに、データのバリエーションが関わってきます。

技術的な対策として簡単に言うと、元のデータにランダムな文字を付けてハッシュ化すると、元の分が違うので、全部ハッシュが異なるようになります。データが改ざんされていないということは、ランダムに足した分を無視すればデータは取り出せますので、このような技術が使われています。

技術的なところから、IPFSと暗号化、ハッシュを組み合わせてできることというところをご説明させていただきました。

al+ stack / al+ emeth

alt社では、FacebookのデータやグーグルのGmailのデータを連携して、そこから個人のデジタルクローンと呼んでいる、個性をリビルドすることに取り組んできました。

自然言語処理を使い、個性をコピーするために、テキストのデータだけではなく、その人の顔の情報や、声の情報というのも、機械学習に至って、対話、顔、音声のモデルを全部作ります。その人の顔や声で、その人が喋りそうなことを喋る、というようなことを目指して作ってきました。

現在我々が作ってきたものは、弊社のサーバー上に全てのデータが載っている状態で、その学習処理もサーバーで行われています。これを複数のユーザーさんに提供していくとなると、全員のデータが全部サーバー上に格納されることになります。また、プロセスした後に出てくる学習後のモデルも全てサーバー上に保存されることになるので、データの所有権はどこにあるのかとか、単純にサーバーの拡張をしていかないとユーザー数に耐えられないという実務的な問題もでてきます。

al+ stack(オルツ・スタック)

そこで我々が作り出したのが、オルツ・スタックというものになりまして、IPFSとかブロックチェーンを使いながら個人のデータを分散して格納しましょうというものになります。

簡単にフローを説明しますと、FacebookやGmail上のデータなど、あらゆるデータを分散ストレージに暗号化して書き込みます。分散ストレージはIPFSだと思ってください。暗号化しているというのが1つのキーポイントです。

IPFSはハッシュを取るという話をしていましたが、そのハッシュ値をブロックチェーンに書き込んでおくことで、1回書き込んだデータがブロックチェーンの方を見ると改ざんされていないとみることができます。これが、分散ストレージとブロックチェーンの組み合わせで使うと良いという例になります。

「死んだおばあちゃんと話せる」という動画を先ほどお見せしましたが、この暗号化に使った鍵を子孫にずっと受け継いでいくと、それを受け取った子孫は、分散ストレージからデータを持ってきて、そこから弊社の技術を使ってデジタルクローンを再現して、おばあちゃんと会話するというようなことができてきます。

なんで分散ストレージを使ったのかと言うと、先ほどのIPFSの仕組みを見ると、世界中のマシンにデータが分散される、中央管理がされていない民衆によるデータ管理なので、鍵を持った個人のみがデータアクセス可能という暗号化の技術を単体で使って実現しています。これが組み合わさるとデータの主権を個人に取り戻す、これがやりたいことだったわけです。

Gmailのデータはグーグルさんが持っているし、Facebookの投稿情報はFacebookが1社で持っています。その全部の所有権を個人に取り戻すというところが主な取り組みです。

その溜め込んだデータを、なにかしらの状態で取り出したら、鍵で復号はできますが、このデータはただのデータの寄せ集めなので、なにかのモデルにしてあげないと、対話をしたり実際話したりという事ができません。

その処理は、ディープラーニングと呼ばれているものや、ニューラルネットワークという技術を使って、そこの再現を行っています。その処理も今までは弊社のサーバー上で行っていたのですが、現在は分散コンピューティングの仕組みの開発に今着手していて、世界中に散らばったマシンで処理をした結果のモデルを1回こちらに戻して、それをまた秘密鍵で暗号化したものを、また分散ストレージに書き戻す、といった取り組みもしています。

元データの個人情報というところから、作り上げた人工知能というのは個人データなのかというような未来の話になってくるので、これはまた次回のお話になってくると思っております。

ディスカッション

河﨑:非常に面白い話だなと思ったのですが、これはまさに個人情報の塊みたいな話だと思います。データ主権を個人に取り戻すというキャッチフレーズは、GDPRのキャッチフレーズと全く一緒ですね。

永井:そうですね、GDPRのデータポータビリティとの関係では、自分の提供したデータを取り出せるという点で、同じ思想に沿ったサービスだと思います。日本で検討されている情報銀行も、信頼のできる機関に預けた情報を本人の意思でコントロールできるようにするという点で、同じ思想に基づいた動きと言えるように思います。

河﨑:ただ、極めてセンシティブな個人情報の塊みたいなもので、選別しないことに意味があるわけですよね。だからFacebookなどの書き込み全てに意味があるということですよね。

西村:よく私ミイラの話をするのですが、エジプトの王は内臓などを取り出して全部そこにいれて、包帯ぐるぐる巻きにして、将来復活できると信じて保存されていたのです。あれは、その時代には復活する技術はなかったのですが、未来に託している。我々もなるべく取れるだけのデータを取っておいて、もしかしたら50年後に、そのデータから自分のデジタルクローンを復元できる技術ができるかもしれないので、なるべく粒度を高く、全部取っておきたいのです。そういう意味で選別をしないということです。

河﨑:思いきり、この個人情報保護法とぶつかる気がしますが、どうですか。

永井:本人から有効な同意を取得したうえで提供するサービスでしょうから、個人情報保護法の利用や提供の制限との関係では、適法なサービス提供ができそうです。他方、本人の同意の枠外での利用、提供や、情報漏えいが発生した場合に、本人のプライバシー侵害を理由とする損害賠償の問題が生じることとなります。例えば、本人の同意なく私生活を紹介する小説を発表して裁判になった『宴のあと』『石に泳ぐ魚』などの事例では、通常公開されないはずの私生活が公開された点を認定して、損害賠償や出版の差止めを認めました。人格そのものというプライバシーとして保護する必要性が特に高い情報の取扱いとなりますので、実効的な安全管理措置が講じられているかが厳しく問われることになると思います。

高松:このサービスはすごく面白いサービスだなと思いました。データの主権がまさに個人個人に戻ってくる、しかもそのデータは大量に集積され、個人そのものに近い情報で構成されるという話になるので、個人情報保護法やプライバシーなどを超え始めて、情報そのものをどう保護するかといった議論にも近づいてくるような気がします。現に民法の研究者の間でも、時代に即して、情報自体の占有や所有を認めるべきではないかといった議論が始まっています。最先端の技術が古典的な民法上の占有や所有の議論を呼び起こすという点でも、興味深いです。

河﨑:エンジニア側からすると、これにIPFSとブロックチェーンの組み合わせを考えておられますよね。そこら辺の論点からコメントがあればお願いします。

石井:お話を伺っていて、シュレッダーを思い出しました。個人情報をシュレッダーにかけて粉砕したという事を証明すると思うのですが、デジタルシュレッダーみたいなものが今後いるのかなと思っています。つまりネット上に自分の重要な情報がIPFSなりブロックチェーンにありますが、それはもう粉砕されていて繋げることはできないと証明することになると思っています。ウィルスに感染すると自分のPCのデータが壊れるとかありますが、ウィルス的な動きをある意味ポジティブに使い、感染させてシュレッダーで粉砕するようなテクノロジーが今後いるのでは、ニーズがあるのではないかなと思いました。

おすすめの記事