サイバー脅威
IPFSはデータの最先端領域か、それともサイバー犯罪者の巣窟か
データの可用性やレジリエンスにメリットをもたらす技術IPFS(Interplanetary File System(惑星間ファイルシステム))の概要と、サイバー犯罪者による悪用の可能性について、前編と後編にわたって解説します。前編の本稿では、ユーザレベルでのIPFSの機能について説明します。
データの可用性やレジリエンスにメリットをもたらす技術IPFS(Interplanetary File System(惑星間ファイルシステム))の概要と、サイバー犯罪者による悪用の可能性について、前編と後編にわたって解説します。前編の本稿では、ユーザレベルでのIPFSの機能について説明します。
新たなテクノロジの開発に伴って、私たちのさまざまな活動に役立つイノベーションが次々と生まれています。近年登場した重要なシステムの1つに、IPFSシステムがあります。このシステムは、ピアツーピア(P2P)ネットワーキングに基づく分散型保管・配信ネットワークであり、新たな「Web3テクノロジ」の構成要素となっています。
IPFSにより、ユーザはインターネットでのコンテンツのホスティングや共有をより低価格で行うことができ、可用性とレジリエンスも確保できます。しかしIPFSは、一般ユーザとは別の社会に住む人々、つまりサイバー犯罪者にも新たな機会を提供します。
前編である本稿では、IPFSの概要とそのユーザレベルでの機能を説明します。
IPFSとは
IPFSは、Interplanetary File System(惑星間ファイルシステム)を表します。IPFSは、P2Pネットワーキングとコンテンツベースのアドレス指定の原則を基盤とする分散型ストレージ・配信ネットワークです。
IPFSの仕組みを、通常のWebの仕組みと比較してみましょう。Web上でホストされている実際のコンテンツのほとんどは、Webサーバによって提供されます。ごく単純な見方をすると、インターネット上でのこの機能は、さまざまなコンピュータがさまざまなWebサーバにデータを要求するという形で展開されています。このようなデータには、Webページやファイルのほか、インターネットブラウザからアクセスできるあらゆるコンテンツが含まれます。ほとんどの場合、こうしたコンテンツは単一のWebサーバでホストされており、サーバはコンテンツを要求したすべてのコンピュータにそのコンテンツを提供します。
IPFSの場合は少し異なり、データを提供する中央Webサーバのようなものは存在しません。データをホストしているあらゆるピア(ノードとも言う)がデータを提供できます。
ユーザはIPFS DesktopクライアントまたはAPIをダウンロードして使用するか、オンラインサービスを利用することで、IPFSでファイルの共有を開始することができます。
あるファイルを持たないノードがファイルを要求すると、そのファイルは要求元のノードにコピーされ、その後、要求元のノードも他のノードに対してそのファイルを共有できるようになります。こうして、ファイルを提供できるノードが増えていきます。この方法により、サイバー犯罪者も含めたあらゆるユーザが、自身のインフラストラクチャ上でノードを実行しなくても、オンラインサービスで無料アカウントを作成し、IPFSネットワーク上でコンテンツのホスティングを開始することができます。
IPFSのコンテンツ識別子(CID)
インターネットをブラウズする際、ユーザは通常、trendmicro.comなどのURLにアクセスします。ユーザのコンピュータは、DNSシステムに要求を送ってデータの場所を教えてもらい、その場所からデータを取得します。そのため、Webのクライアント/サーバモデルは場所によるアドレス指定と言われています。
IPFSで採用されているP2Pモデルでは、特定のファイルが異なる複数のIPFSピア上に配置されている可能性があります。これらのファイルの保管場所は、コンテンツ識別子(CID)と呼ばれる、そのコンテンツの暗号化ハッシュによってアドレス指定されます。CIDは、英数字からなるファイル固有の文字列です。同じ内容のファイルには、その保管場所がどこであろうと常に同じCIDが割り当てられます。IPFSがコンテンツによるアドレス指定と呼ばれるのはこのためです。
ファイルに何らかの変更が適用された場合、そのファイルには別のCIDが割り当てられることにも注意してください。
CIDには2つのバージョンがあります。CID v0形式は46文字で構成され、先頭文字は常に「Qm」ですが、CID v1形式ではBase32が使用されます。
CID v0形式は次のようにCID v1形式に変換できます。
IPFSデータのブラウズ
CIDおよび対応するファイルには、2つの方法でアクセスすることができます。
最初の方法では、IPFSプロトコルをネイティブに処理するブラウザを使用します。現在、BraveブラウザのみがIPFSをサポートしています。このブラウザは、コンピュータがバックグラウンドで実行するIPFSデーモンを使用して、IPFSコンテンツにネイティブにアクセスします。
2番目の方法では、いわゆる「IPFSゲートウェイ」を経由してコンテンツにアクセスします。IPFSをネイティブにサポートしていないアプリケーションでも、このようなゲートウェイを使用することで対処できます。簡単に言うと、ゲートウェイは、IPFS CIDに対するHTTP要求を受け入れて、ユーザがデフォルトのブラウザを使用してIPFSコンテンツにアクセスできるようにするIPFSピアです。
グローバルな書式は次のようなものです。
以下のサイトでは、現在使用されているゲートウェイのリストとそれぞれの稼働状況をオンラインで確認することができます。
https://ipfs.github.io/public-gateway-checker/
次に示すのは、ipfs.ioゲートウェイからIPFSコンテンツにアクセスするときの完全なパスの例です。
https://gateway.ipfs.io/ipfs/{ランダムに生成された文字列}
同じコンテンツにCloudflareゲートウェイからアクセスする場合は、次のようなURLになります。
https://{同じランダム生成文字列}.ipfs.cf-ipfs.com/
別のゲートウェイを使用するためURLは変わりますが、この例のCID(ランダム生成文字列)は変わらないことに注目してください。
他のWebリンクと同様に、この種のURLの後ろには、その他のパラメータが続くこともあります。
IPFSピン留め
ノードは、IPFSネットワーク上に保管されているファイルをキャッシュし、ネットワーク上の他のノードが利用できるようにすることでファイルを処理します。どのノードもキャッシュ記憶容量には限りがあるため、ノードが使用しているキャッシュを消去する必要が生じることがあります。これは、「IPFSガーベッジコレクションプロセス」と呼ばれる処理です。この処理では、キャッシュされたコンテンツのうち、不要になったと見なされたコンテンツが削除されます。ここで、IPFSピン留めが登場します。
IPFSピン留めでは、データをピン留めしてキャッシュからの削除を防ぎ、データを常にアクセス可能な状態にします。
IPFSピン留めはローカルにホストされたノード上で実行できますが、長期の保管を保証するピン留めサービスも存在します。サイバー犯罪者はこれに興味を持ち、コンテンツを長期間アクセス可能にするために利用する可能性があります。
IPNS – Interplanetary Name System(惑星間ネームシステム)
もう1つのプロトコルとして、IPNS(Interplanetary Name System:惑星間ネームシステム)があります。IPNSはDNSシステムの一種と見なすことができますが、これはIPFS用のシステムです。IPNSレコードは秘密鍵を使って署名され、レコード内にはIPFSコンテンツのパスとその他の情報(有効期限やバージョン番号など)が格納されます。IPNSレコードは、分散ハッシュテーブル(Distributed Hash Table:DHT)プロトコルを使って公開されます。そのため、レコードを定期的に再公開して、時間の経過とともにレコードがDHTピアに忘れられないようにする必要があります。
IPNSレコードの簡単な説明として、その例を次に示します。
/ipns/k2k4r8oid7ncjwgnpoy979brx3r9ellvvwofht57mc9q4jzlxtydalvf
これは次のコンテンツを指しています。
/ipfs/QmYr5ExzJJncpMNhqzhLjkCrRNgm4UmyX28gcYjt5RLYY8
IPNSアドレスが後から再割り当てされ、アドレスの指すコンテンツが変わることもあります。
DNSLink
DNSLinkでは、DNSプロトコルのTXTレコードを使ってDNS名をIPFSアドレスにマッピングします。DNS TXTレコードは容易に変更できるため、管理者はこのマッピングを利用することでIPFSリソースへのリンクを管理しやすくなります。
DNSLinkアドレスはIPNSアドレスと似ていますが、公開鍵のハッシュの代わりにDNS名が使用されます。
たとえば、DNSLinkは次のようなものです。
/ipns/example.org
関係をマッピングするためには、DNS TXTレコードで接頭辞dnslinkに続けてホスト名が指定されている必要があります。
さらに詳しく説明すると、以下ののDNS TXTレコードの場合、
_dnslink.en/Wikipedia-on-ipfs.org
下記のように解決されます。
dnslink=/ipfs/bafybeiaysi4s6lnjev27ln5icwm6tueaw2vdykrtjkwiphwekaywqhcjze
IPFSの使用目的
IPFSは次のようにさまざまな目的で使用できます。
データストレージ・レジリエンスの確保
レジリエンスは、ネットワークが孤立状態になった際にも適応する能力を指します。また、障害発生時にサービスを提供し維持する能力でもあります。IPFSでは通常、データが複数の異なるノードに保管されることで、データが利用不能になる可能性が軽減されます。
また、Filecoinなどのサービスを使って、あらゆる種類のデータを極めて低価格でIPFS上に保管することもできます。
スマートコントラクト・NFT(Non-Fungible Token:代替不可能なトークン)
スマートコントラクトは、トランザクションによってトリガできる、ブロックチェーン上に保管されたプログラムです。ブロックチェーンへのデータの保存は高コストになることがありますが、IPFSなどの分散ストレージをデータベースとして使用することでコストを削減できます。たとえば、NFTプロジェクトの一般的な実装の1つとして、メタデータと画像(動画、クリップ、音楽などの場合もある)をIPFS上に保管し、スマートコントラクトを使ってデータにアクセスするというものがあります。
投票
Snapshotなどの投票プラットフォームでは、ユーザや企業がIPFSを使用して、提案やユーザの投票/アンケートを保管することができます。
ドキュメントへの署名
ドキュメントへの署名の分散型バージョンに一部のオンラインサービスを利用することが可能です。ユーザは自分のウォレットでドキュメントに「署名」することができます。この場合、ドキュメントファイルはIPFSに保管され、署名はEthereumブロックチェーンに保管されます。
検閲対策
検閲テクノロジが積極的に導入されている国に住む人々が、検閲対策としてIPFSを活用することもあります。複数の異なるゲートウェイから同じコンテンツにアクセスできるため、ブロックされることなくデータにアクセスする方法を見つけやすくなります。このような国で導入されているブロッキングソリューションは、1つの特定のゲートウェイのみをブロックし、他のゲートはブロックしない場合などがあるためです。
ペーストツール
クリアWebにWebサイトpastebin.comがあるように、IPFS上にもhardbin.comなどのペーストサービスが存在します。
分散型アプリ
分散型アプリdAppsをIPFS上で構築し、ホストすることができます。開発者がこのようなアプリを作成する際には、Fleekなどの利用可能なフレームワークが役立ちます。
IPFSでのdAppsの用途は、通常のクリアWebでの用途と同じように多岐にわたります。
eコマース
eコマースWebサイトの実行にIPFSを利用することもできます。トレンドマイクロの調査では、eコマースのフレームワークを1つ確認しています。このフレームワークはIPFS上でのホスティングを提供し、暗号資産と連携するため、サイバー犯罪者にとって特に興味をそそるものとなっています。
後編では、IPFSのサイバー犯罪者による悪用の可能性について解説します。