目次


Hyperledger Fabric 入門, 第 4 回

Membership Service Provider

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: Hyperledger Fabric 入門, 第 4 回

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:Hyperledger Fabric 入門, 第 4 回

このシリーズの続きに乞うご期待。

第 4 回は Hyperledger Fabric の MSP (Membership Service Provider) について紹介します。

1

はじめに

Hyperledger Fabric はビジネス向けの許可性ブロックチェーンです。 許可性ブロックチェーンではネットワークに参加している組織間で台帳の情報を共有します。 Hyperledger Fabric では MSP (Membership Service Provider) というコンポーネントを利用して、ユーザの認証や、証明書の発行、検証を行います。本稿では MSP と CA (Certificate Authority) について紹介します。 この記事は Hyperledger Fabric v1.2 の情報を元に作成しております。

2

MSP

MSP は証明書の発行と検証、ユーザ認証の背後にある暗号化メカニズムとプロトコルを抽象化するコンポーネントです。 MSP が複雑な部分を抽象化してくれるおかげで、そういった複雑なものを意識することなく、ネットワーク内で証明書の発行や検証、ユーザ認証を行うことができます。

Hyperledger Fabric のネットワークは 1つ以上の MSP によって管理されます。

ネットワークに参加する Peer、Orderer は MSP を所持している必要があります。 これによりブロックチェーンネットワーク内でクライアントの検証やそれぞれの署名 (Endorsing Peer の署名や Orderer の署名) の検証を行うことができます。

MSP の設定にあたり、まず参加組織ごとに MSP のインスタンスを生成します。 インスタンスを作成するために必要な要素を作る方法はは Hyperledger Fabric で用意されている Cryptogen ツールを利用する場合と openssl を利用する場合の 2種類があります。

これらの方法で MSP を構成するのに必要な各組織のルート証明書等が作成されます。 Cryptogen ツールは開発用やテスト用ツールで証明書の有効期限を設定できない等の運用制限があります。

詳細はこちら「Install Samples, Binaries and Docker Images」をご確認下さい。

また openssl を利用する場合はこちら「6.4.3.2 Creating SSL Certificates and Keys Using openssl」をご確認下さい。

MSP の構成要素について説明します。MSP は 9つの要素から成り立っています。

  • Root CAs
    MSP の要素の中で一番重要な要素です。この MSP を定義する組織のルート証明書が格納されています。
    MSP を構成するために必ず 1つ以上の CA の証明書が必要です。
  • Intermediate CAs
    中間 CA の証明書が格納されています。
    オプションなのでこの要素がなくても MSP は構成されます。
    組織単位ではなく、組織の部門ごとに CA を立てる時等に利用されます。
  • OUs (Organization Units)
    この MSP によりネットワークへの参加が許可されている組織のメンバーのリストが定義されています。
    この証明書を持つユーザは MSP の構成変更等を行うことができます。
    複数組織で 1つのルート証明書や中間証明書を使っている場合に利用するオプション機能です。
  • Administrator
    この MSP の管理者権限を持つ administrator の証明書が格納されています。
    通常の MSP の構成では 1 つ以上の administrator の証明書が格納されています。
  • Revoked Certificates
    失効した証明書の情報が格納されています。組織の証明書を管理している CA で証明書を Revoke させると この Revoked Certificates フォルダにデータが移入されます。
    こちらもオプション機能で Revoked Certificates がなくても MSP を構成することができます。
  • Node Identity
    Node Identity にはノード自体の証明書が格納されています。Channel MSP には利用されません。
    トランザクションの検証の際に Endorsement Policy が充足しているかどうかを検証する時に、 秘密鍵と合わせて、正しい Peer が改ざんなく、トランザクションに署名したことを検証することができます。
  • keystore
    クライアントや Peer、Orderer の各ノードの署名用の秘密鍵が格納されています。
    クライアントは作成したトランザクションに署名する際に秘密鍵を利用します。
    Orderer や Peer はクライアントから送信されたトランザクションに署名をする際に利用されます。
  • TLS Root CA
    Peer と Orderer 間等の通信で TLS 通信をするための組織の証明書が格納されています。
  • TLS Intermediate CA
    TLS 通信をするための中間組織の証明書が格納されてます。
    Intermediate CAs 同様、こちらもオプション機能です。

作成した MSP のインスタンスは一意な MSPID と紐付けられ、Orderer や Peer の各ノードにこの対応する MSP ID を指定します。 各ノードで持つ MSP を Local MSP と言います。 例えば Org 1 組織の MSP ID を Org1MSP として設定する場合、Org1 で作成する Peer は MSP ID に Org1MSP を指定する必要があります。

Hyperledger Fabric のネットワークを立ち上げる際に作成した MSP の情報がジェネシスブロックに組み込まれます。 MSP ID は必ず一意である必要があり、重複しているとネットワークを起動する際にエラーになります。

Hyperledger Fabric のネットワークを構築する時に作成するジェネシスブロックに MSP の情報が組み込まれることで、ブロックチェーンネットワークの参加者の認証を行い、許可制ブロックチェーンネットワークを実現します。

この仕組みを Network MSP と言います。Network MSP はブロックチェーンネットワークに参加する全ての組織の MSP を定義することで、どの組織がブロックチェーンネットワークへの参加や、チャネルの作成ができるか等の認証を行っています。

またブロックチェーンネットワークの初回構築後、新しく組織を追加する場合は、その組織用の暗号鍵やルート証明書を Cryptogen ツールや openssl を使って作成し、その組織の Peer に MSP の設定をする必要があります。

また新たに参加する組織の情報をジェネシスブロックに追加する必要があります。

チャネルはそのチャネルに参加する全ての組織の MSP の情報 (Orderer の MSP 含む) を持っています。これを ChannelMSP と言います。 Channel MSP によって各 Peer がチャネルに参加できるかどうかを制御できます。

例えば、Org1 と Org2 が参加するチャネルは Org1 と Org2 の MSP の構成情報を持っていますが、Org3 の MSP の情報は持っていないため、 Org3 の MSP を指定している Peer はこのチャネルに参加することはできません。

チャネルの MSP の情報はチャネルの構成ファイルを定義する際に設定ファイルに参加する組織の MSP の情報を設定する必要があります。

 

 

3

CA

3章では CA (Certificate Authority) について説明します。Hyperledger Fabric 用の CA (Fabric CA) が用意されており、Fabric CA はクライアント (Fabric-CA-Client) としての機能とサーバー (Fabric-CA-Server) としての機能の両面を持ちます。

以下、CA の主な機能において Fabric-CA-Client が証明書の発行や失効の要求を行い、それに応じて Fabric-CA-Server が ECert 等の証明書を発行、管理を行います。

ECert の発行

ECert はクライアントから Hyperledger Fabric のネットワークに接続するために必要な証明書です。 ECert を取得するための手順を説明します。

まず、(1) 管理者が CA を構築時に作成したデフォルトの ID とパスワードを使って、Enrollment ID(≒ユーザ ID) を CA に登録します。

CA に接続する際に SDK を使って接続する方法CLI を使って接続する方法の 2種類がありますが、 ECert を発行する流れは同じです。図では SDK を使って接続する方法を記載しています。

(2) CA では管理者から連携された Enrollment ID を登録し、その ID に紐づく secret(≒パスワード) を返信します。

(3) 管理者は Enrollment ID と secret を実際に Hyperledger Fabric に接続するユーザに連携します。

(4) ユーザは管理者から連携された Enrollment ID と secret を指定して CA に Enroll をします。

(5) 正しく認証されると、CA 局で ECert を発行し、ユーザに送付します。また ECert に対応した公開鍵と秘密鍵も発行されます。

ECert と公開鍵と秘密鍵を元に、クライアント側でも MSP を作成します。クライアント側でもつ MSP も Local MSP です。 ユーザはこの ECert を使って、トランザクションに署名をして、Hyperledger Fabric のネットワークに送信します。 クライアントも Local MSP を持っているため、Hyperledger Fabric のネットワークに接続することができます。

 

証明書の更新と失効

CA は発行した ECert や Enrollment ID を失効させることもできます。 Enrollment ID と secret を使って、ECert を作るので、Enrollment ID を失効させると、その Enrollment ID では二度と ECert を発行することができなくなります。 ECert を失効させた場合は、同じ Enrollment ID で新しく別の ECert を発行することができます。

証明書を失効させると CRL (Certificate Revocation List) にその証明書が追加されます。CRL の更新があった場合は、各 MSP に最新の CRL を連携する必要があります。 MSP に CRL が連携されると、その CRL を基にブロックチェーンネットワーク内でユーザの認証等を行います。 CRL は Hyperledger Fabric の v1.1 から利用できるようになりました。

その他機能

CA の Config ファイルの設定値を変更すると、LDAP と接続することができるようになり、Hyperledger Fabric のユーザの属性情報を LDAP で管理することができます。 詳細はこちら「Configuring LDAP」をご確認ください。

CA のデフォルトのデータベースは SQLite になっていますが、PostgreSQL や MySQL を利用することも可能です。 CA をクラスタで構成する場合は、PostgreSQL や MySQL を利用することが推奨されます。 また Hyperledger Fabric の CA 以外の外部の CA を利用して証明書を発行することも可能です。 外部の CA を利用する場合、CLI を使って、ECert の発行を行います。

MSP と CA の違い

MSP は証明書の発行と検証、ユーザ認証の背後にある暗号化メカニズムとプロトコルを抽象化するコンポーネントで、CA は認証のために必要な証明書や鍵を発行するコンポーネントです。 CA で証明書や鍵ファイル等を作成して、Local MSP、Channel MSP を利用して、許可制ブロックチェーンネットワークを実現しています。

4

まとめ

今回は Hyperledger Fabric の MSP、CA について学びました。Hyperledger Fabric ではこのような仕組みを利用して、許可制ネットワーク内で、トランザクションを実行しています。 第 1 回からこれまで Hyperledger Fabric の基盤要素を中心に説明してきました。 今後は、Hyperledger Fabric のアプリケーション部分について紹介していきます。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing
ArticleID=1063053
ArticleTitle=Hyperledger Fabric 入門, 第 4 回: Membership Service Provider
publish-date=10042018