コラム Column

ブロックチェーンにまつわる誤解を解く

image-gokai

●はじめに

ブロックチェーンは金融(決済インフラ)だけにとどまらずさまざまな業界で利用できる技術です。この技術は世界を大きく変化させる可能性を秘めており、当初から注目を浴びています。

業務上、主にエンタープライズ向けブロックチェーン関連の案件に携わっており、お客様からブロックチェーンを使って「こんなことがしたい」「こんなことはできますか」と、ご要望やご質問を受けることが多々あります。
その内容はお客様によってさまざまなのですが、中には「ブロックチェーンがどういうものなのかを誤解しているかもしれない」と思うことがあります。
今回のコラムでは、複数のお客様から同じような「誤解」を感じた内容をピックアップして、下記の3点をご紹介したいと思います。

誤解1.ブロックチェーンのデータは改ざん耐性があるので安全

ブロックチェーンに高い改ざん耐性があることは、皆さんご存じかと思います。そこでその改ざん耐性に注目して、「品質/検査データの改ざん防止にブロックチェーンを使いたい」というご要望を、さまざまな業界の方からいただきます。
たとえば、製造業であれば「製品を工場で製造する各工程で検査を行っている。その検査データを社内の人間でさえも改ざんできないようにするために、ブロックチェーンに保存したい。ブロックチェーンなら改ざん耐性があるので安全ですよね?」といった具合です。

これには2点ほど、ブロックチェーンに関する「誤解」があります。

①自社のみで保持するデータでもセキュアにデータ保存するためにはブロックチェーンを使用することが重要だ
(正解:ブロックチェーンは他社とのデータ共有や取引(トランザクション)のために使ってこそ意味があるのであり、 自社で保持するデータの保管場所として使うだけなのであれは、ブロックチェーンを使う必要がない)

②ブロックチェーンはどんなケースでもデータベース改ざんできない
(正解:ブロックチェーンのデータは何らかのデータベースに保管されるので、直接そのデータベースにアクセスできる人(=たとえば社内のシステム管理者)であれば、データの書き換え自体は可能である)

それぞれについて解説します。

image-blockchain

①自社のみで保持するデータでもセキュアにデータ保存するためにはブロックチェーンを使用することが重要だ
(正解:ブロックチェーンは他社とのデータ共有や取引(トランザクション)のために使ってこそ意味があるのであり、 自社で保持するデータの保管場所として使うだけなのであれは、ブロックチェーンを使う必要がない)

これは、よくある「誤解」で、ブロックチェーンの用途を見誤っている例です。
ブロックチェーンはネットワークを構成しており、そのネットワーク上で各コンピュータ(=ノードという)が繋がり、各ノード同士が互いに対等の立場(ピアツーピア)で通信し合います。そうすることで、データを共有したり何らかの資産(アセット)を転々流通させたり、スマートコントラクト(あらかじめ設定されたルールに従って実行されるプログラム)によって自動的に契約(プログラム)の実行をしています。

そのため、自社のデータの保管場所としてだけ使用する場合、ノードは1つのみでネットワークもなく、他社とのデータ共有もせず、プログラムの自動実行も不要であれば、もはやブロックチェーンを使う必要性がありません。むしろ、自社内のデータの改ざん防止がしたいのであれば、AWSのQLDB(Quantum Ledger Database)や、OracleのOracle Blockchain Tableといった製品を使うことをお勧めします。

image-破壊

②ブロックチェーンはどんなケースでもデータベース改ざんできない
(正解:ブロックチェーンのデータは何らかのデータベースに保管されるので、直接そのデータベースにアクセスできる人(=たとえば社内のシステム管理者)であれば、データの書き換え自体は可能である)

これは、ブロックチェーンの改ざん耐性がいつ/どうやって担保されているのか、という仕組みを知らないと「誤解」してしまう例です。
ブロックチェーンの改ざん耐性の仕組みは、既に皆さんもどこかで耳にしているかと思います。そう、ブロックが1つ前のブロックのハッシュ値を持っていて、どこかのブロックを改ざんしたらそれ以降のブロックも改ざんしないといけないから大変!というやつのことです。

ブロックにはトランザクションが複数入っており、データを改ざんするということは、このトランザクションの内容を書き換えるということです。トランザクションの内容を書き換えるとブロックのハッシュ値が変わってしまい、後続のブロックが持っているハッシュ値と整合性が合わなくなるため、「改ざんしたことを検知できる」わけです。

また、そもそも各トランザクションには少なくともそのトランザクションの発行者の電子署名が含まれており、単にデータを書き換えるとその電子署名と整合性が合わなくなるため、同様に「改ざんしたことを検知できる」のです。そして、「改ざんしたことを検知できる」のは、どのタイミングであるかをご存じでしょうか?世の中には数多くのブロックチェーン・プラットフォームがあるため、一概には言えないのですが、多くの場合、「改ざんしたことを検知できる」タイミングは、他のノードから新しいトランザクションやブロックを受け取った時なのです。

どこかのノードでトランザクションが発行されると、それが他ノードで受け取られ、他ノード側で改ざんされていないか検証されます。改ざんされているトランザクションの場合は、その検証の時点でトランザクションが破棄されます。また、ブロックが確定したらそのブロックが全ノード(場合によっては一部のノード)に伝播され、そのブロックを受け取った各ノード側でブロックに入っている全トランザクションが同じように検証されます。検証の結果、問題がなければ各ノードが自ノードのブロックチェーンに保存します。

この仕組みにより、ブロックチェーンは、

・他ノードから送られてきたトランザクションは自ノードで検証するので、他ノードから騙されることはない
・自ノードでトランザクションを改ざんしても、他ノード側で検証されるので他ノードを騙すことはできない

という改ざん耐性を持ちますが、ポイントは後者の「自ノードでトランザクションを改ざんしても」のところです。自ノードで改ざんしたデータを使ってトランザクションを新たに発行し、他ノードに受け取ってもらうタイミングがあれば、その時に自動で検証されて改ざんが検知されます。しかし、過去データ(=既に発行済みのトランザクション)のデータを改ざん(書き換えた)しただけの場合は、新たにトランザクションを発行するわけではないので、他ノードには送られず、そのため自動で検証されるタイミングがないのです。

もちろん、手動で任意のタイミングで自ら検証することができるAPIを持つブロックチェーン・プラットフォームもありますが、そのようなAPIを持たないものもあります。また、そのようなAPIがあったとしても、自分でそのAPIを呼び出さない限り、改ざんを検知するタイミングがありません。多くの場合、自ノードで改ざんされたデータを参照すると、その改ざんされたデータがただ返ってくるだけです。※データ参照時にも自動で検証するようなブロックチェーン・プラットフォームも、もちろん世の中には存在します。

②に書いたように、直接そのデータベースにアクセスできる人(=たとえば社内のシステム管理者)ならデータの書き換え自体は可能であり、書き換えられたデータを使ったトランザクションを発行することがなければ、改ざんをチェックするAPIを自分で都度、あるいは定期的に実行しない限り、自ノードで起きた改ざんを検知することはできません。

これは、自社でノードを運用する場合に気をつけておかなければならない点であり、たとえ、社内のシステム管理者であっても、容易にはデータベースにはアクセスできないようにしたり、アクセスログをとるなどして自衛する必要があります。この点は、従来型のデータベースのシステム運用とセキュリティ上は全く同じレベル感であり、「ブロックチェーン使うと改ざんできないから安全」というわけではありません。

誤解2.ブロックチェーンにするとコストが安くなるので既存システムを置き換えたい

image-balance

最近ではあまり聞くことはありませんが、数年前(2018年頃)には、たまに耳にしていた「誤解」です。

ブロックチェーンを使うとコストが安くなるという根拠は、
・分散システムなので、ブロックチェーンのネットワークに参加している一部のノードが落ちても、ネットワークの系全体としては稼働し続けることができるので各ノードを冗長化する必要がない(→コストダウン)。
・分散システムで利用者全員が処理をするので、個々のノードのハードウェア・スペックは落とすことができる(→コストダウン)。
というものですが、エンタープライズ向けブロックチェーンの場合は、これは全くあてはまりません。

先にも述べたように、ブロックチェーンはネットワークを構成して、ノード間で通信をし合います。そして、そのノードは、エンタープライズ向けブロックチェーンの場合、ネットワークに参加している各社が自社ノードを運用するという構成にするのが一般的です。
この場合、ブロックチェーンのデータ参照やトランザクションの発行は、基本的に自社ノードに対して行うものであって、他社ノードから自由にアクセスさせたりするような構成はとりません。

つまり、たとえブロックチェーンとはいえ、自社ノードが落ちれば自社の業務が止まるわけです。もちろん、他社のノード同士は稼働を続けられるので、ネットワークの系全体としては稼働しているというだけです。そのため、自社ノードの冗長化は必須となります。

同じく、ハードウェア・スペックについても同様です。ブロックチェーンとはいえ、所詮はデータベースです。既存システムで使用していたアクセス数に耐えられるようにするには、ほぼ同等のハードウェア・スペックのノードが必要なわけで、これもコストダウンにはつながりません。

ブロックチェーンによるコストダウンとは、業務の効率化によってもたらされる恩恵です。
今まで紙ベースで取引先とやりとりしていた業務を、ブロックチェーンを使って電子データとしてやりとり(取引)できるようにする。データを各社で共有することで、たとえば食品のトレーサビリティを可能にして、何か食品に問題があった場合にすぐに原因と影響範囲を特定できるようになる、といったような「業務の効率化」を通じて、全体としてコストダウンが図れるというものです。

逆に言えば、既に紙ではなく電子データでやりとりするシステムを使っており、先の例のような食品のトレーサビリティ・システムを既に導入しているのであれば、今更その既存システムをブロックチェーンに置き換えても、コストダウンの効果はほとんどありません。

ブロックチェーンでコストダウンが見込めるのは、既存システムの置き換えではなく、まだシステム化されていない領域の業務をブロックチェーンでシステム化できるときです。

誤解3.ブロックチェーンを使うとトレーサビリティ・システムが簡単に構築できる

image-easy

ブロックチェーンで発行するトランザクションは、ブロックチェーンに履歴という形で各ノードのデータベースに保存され溜まっていきます。
そのデータベースを直接編集しない限り、消えることも改ざんされることもありません。このため、モノや資産が転々流通していく履歴を追跡するトレーサビリティ・システムの構築には、ブロックチェーンは適しており、そのユースケースも数多く存在します。

しかし、そのようなシステムが簡単に構築できるかというと、そうではないことが多いです。
ブロックチェーンには取引履歴が改ざん耐性を持った形で記録されていますが、そのデータを検索するのは苦手です。ブロックチェーンに使用されているデータベースは、KVS(Key-Value Store)であることが多く、一般的なRDBのSQLで検索するものとは異なり、データをさまざまな条件で検索するには不向きなデータベースです(もちろん、RDBをベースとしたブロックチェーン・プラットフォームも存在します)。

このため、検索条件を柔軟に指定してさまざまな観点でトレースをしたい場合、ブロックチェーンに記録されているデータを外部のRDBに入れて(コピーして)、そのRDB側でデータを検索する、という手法がよく用いられます。実際には、トレーサビリティ・システムを構築するには、ブロックチェーン上のデータだけでなく、マスタデータとの紐付けも必要なので、そのような紐づけもRDB側で行い、さらに検索条件に応じたインデックスも張るなど、検索のためにさまざまな工夫が行われます。

ただ、もう皆さんお気付きかと思いますが、この手法には2点ほど問題があります。
①データがブロックチェーンとRDBに保存されるので、単純にストレージ容量が倍以上必要になること
②ブロックチェーンのデータは改ざん耐性がある構造を持っているが、RDBにデータをコピーした時点でそのメリットを失うこと
前者はコスト増に繋がりますし、後者はRDBにコピーしたデータが改ざんされていないか自分でチェックする(たとえば、ブロックチェーン上のデータと都度、突合するなど)必要があり、思ったほど、ブロックチェーンを使えば簡単にトレーサビリティ・システムが構築できる、というわけではないのです。

●さいごに

今回のコラムは、私が今まで経験してきた中から3つの誤解をピックアップしてご説明させて頂きましたが、いかがでしたでしょうか?

ブロックチェーンは発明されてからまだ十年そこそこの技術ですが、さまざまな分野でその適用が試行され続けています。
もともとビットコインから生まれた技術であるため、暗号資産(仮想通貨)の分野はもちろんのこと、エンタープライズ領域での課題解決や、最近流行りのNFT(Non-Fungible Token)などもブロックチェーンで実現されています。

本サイトのPAYCIERGE(ペイシェルジュ)が目指す「キャッシュレス決済の普及と新しい社会づくり」にも適用できる技術だと考えています。今回のコラムが、ブロックチェーンについて皆さんのご理解が深まる一助となれば幸いです。


企業でのブロックチェーン活用を読み解く
image-column-blockchain

※この記事が参考になった!面白かった! と思った方は是非「シェア」ボタンを押してください。