以下、添付図面を用いて実施例を説明する。本実施例は情報連携システムを実現するための一例に過ぎず、技術的範囲を限定するものではないことに注意すべきである。以下に説明する例において、情報連携を行う組織の種類は任意であり、例えば、企業、同一企業内の異なる組織、役所や役所内の組織等である。以下に開示する情報連携システムは、異なる組織に、マスクされた部分(開示された部分)が異なる情報を渡す。
具体的には、情報連携システムは、複数の項目から構成されるレコードにおいて、選択された項目それぞれの値を、それらの値に基づき生成されるハッシュ値(項目ハッシュ値と呼ぶ)に置き換える。項目ハッシュ値はマスクされた項目の値を表す。これにより、情報の開示先に応じてマスクする部分を変更することができる。
情報連携システムは、選択された項目の値が項目ハッシュ値に置き換えられたレコードに加え、当該レコードの全ての項目の値それぞれの項目ハッシュ値に基づくハッシュ値(レコードハッシュ値と呼ぶ)を、開示先の組織に渡す。
組織のシステムは、受け取ったレコードの項目ハッシュ値に変換されていないオリジナルの項目の値それぞれに基づいて、項目ハッシュ値を生成する。さらに、受け取ったレコードに含まれる項目ハッシュ値と生成した項目ハッシュ値とに基づくレコードハッシュ値を計算する。組織のシステムは、受け取ったレコードハッシュ値と生成したレコードハッシュ値を比較することで、受け取ったレコードの改竄の有無を検証できる。
図1は情報連携システムの一例を示すブロック図である。情報連携システムは、アクセス制御サーバ100と、ブロックチェーンサーバ200と、外部データベースサーバ300と、クライアントサーバ400-A~400-Zと、を含む。情報連携システムに含まれる各構成要素は、ネットワーク500を経由して相互に接続される。
本実施例の情報連携システムは、情報提供者が提供する情報を外部データベースサーバ300に登録し、アクセス制御サーバ100を介して複数の企業A~Zのクライアントサーバ400-A~400-Zで共有する。但し、情報の開示先及び開示先毎の開示範囲は、情報提供者により指定され得る。なお、企業A~Zは、それぞれクライアントサーバ400-A~400-Zを運用する。
以下に説明する例において、情報提供者が提供する情報は、KYC(Know Your Customer)情報とする。KYC情報は、情報提供者の個人情報(又は法人情報)を含み得る。KYC情報は、KYC情報を利用した企業A~Zが付加した情報、例えば、企業Aの顧客Xが、新たに企業BのサービスYを利用したことを示す情報を含んでもよい。
本実施例の情報連携システムは、情報提供者によるKYC情報の開示先及び開示範囲の指定を受け付け、情報提供者の指定に応じてKYC情報の開示先及び開示範囲の制御を行う。なお、以下の説明では、企業を特定しない場合、クライアントサーバの符号は「-」以降を省略した「400」を使用する。他の構成要素の符号についても同様である。
図2は、アクセス制御サーバ100の構成の一例を示すブロック図である。ブロックチェーンサーバ200、外部データベースサーバ300、及びクライアントサーバ400のハードウェア構成は、例えばアクセス制御サーバ100の構成と同様である。
アクセス制御サーバ100は、ネットワークインタフェース101と、CPU102と、入出力装置103と、記憶装置104と、これらの構成要素を相互に接続するインターコネクト109を含む。
ネットワークインタフェース101は、ネットワーク500と通信するためのインタフェースである。CPU102はプロセッサであり、記憶装置104が格納する開示先制御機能105、属性開示制御機能106、アクセス鍵生成機能107、データ連携機能108といったプログラムを実行する。入出力装置103は、データの入力及びデータの出力を行うための装置である。入出力装置103は、例えば、キーボード、マウス、タッチパネル、ディスプレイ、及びプリンタ等を含む。
アクセス制御サーバ100は、情報提供者の情報に基づいて、外部データベースサーバ300が保持するKYC情報テーブル305のデータの開示先(企業)や、開示する属性情報の制御を実施する。アクセス制御サーバ100は、開示先制御機能、属性開示制御機能、アクセス鍵生成機能、データ連携機能、を実現する計算機である。アクセス制御サーバ100は、外部データベースサーバ300に登録されたKYC情報テーブル305のデータの開示先及び開示内容を制限する。
図3は、ブロックチェーンサーバ200の構成を示すブロック図である。ブロックチェーンサーバ200は、KYC情報テーブル305の開示制御のための情報を管理する。ブロックチェーンサーバ200は、ネットワークインタフェース201と、CPU202と、入出力装置203と、記憶装置204と、これらの構成要素を相互に接続するインターコネクト209を含む計算機である。
ネットワークインタフェース201は、ネットワーク500と通信するためのインタフェースである。CPU202はプロセッサであり、記憶装置204が格納する電子署名生成機能205といったプログラムを実行する。記憶装置204は、さらに、アクセス制御テーブル206を格納している。入出力装置203は、データの入力及びデータの出力を行うための装置である。入出力装置203は、例えば、キーボード、マウス、タッチパネル、ディスプレイ、及びプリンタ等を含む。
図4は、外部データベースサーバ300の構成を示すブロック図である。外部データベースサーバ300は、情報提供者(例えば顧客又は企業A~Z)が提供したKYC情報を管理する、KYC情報テーブル305を含む。
外部データベースサーバ300は、ネットワークインタフェース301と、CPU302と、入出力装置303と、記憶装置304と、これらの構成要素を相互に接続するインターコネクト309を含む計算機である。
ネットワークインタフェース301は、ネットワーク500と通信するためのインタフェースである。CPU302はプロセッサであり、記憶装置204が格納するプログラムを実行する。記憶装置304は、さらに、KYC情報テーブル305を格納している。入出力装置303は、データの入力及びデータの出力を行うための装置である。入出力装置303は、例えば、キーボード、マウス、タッチパネル、ディスプレイ、及びプリンタ等を含む。
図5は、クライアントサーバ400の構成を示すブロック図である。クライアントサーバ400は、KYC情報の開示の許可情報を管理するユーザ情報テーブル405を含む。クライアントサーバ400は、ネットワークインタフェース401と、CPU402と、入出力装置403と、記憶装置404と、これらの構成要素を相互に接続するインターコネクト409を含む計算機である。
ネットワークインタフェース401は、ネットワーク500と通信するためのインタフェースである。CPU402はプロセッサであり、記憶装置404が格納するプログラムを実行する。記憶装置404は、さらに、ユーザ情報テーブル405を格納している。入出力装置403は、データの入力及びデータの出力を行うための装置である。入出力装置403は、例えば、キーボード、マウス、タッチパネル、ディスプレイ、及びプリンタ等を含む。
アクセス制御サーバ100、ブロックチェーンサーバ200、外部データベースサーバ300、クライアントサーバ400のような計算機において、プロセッサが、記憶装置に格納されているプログラムに従って動作することで、様々な機能部が実現される。プロセッサは制御指示に基づき信号を操作する任意の装置として実装することができ、単一の処理ユニットまたは複数の処理ユニットで構成することができる。
計算機の機能は、プロセッサ及び非一過性の記憶媒体を含む記憶装置を含む1以上の計算機からなる計算機システムに実装することができる。複数の計算機はネットワークを介して通信する。アクセス制御サーバ100、ブロックチェーンサーバ200、外部データベースサーバ300、クライアントサーバ400の機能は、任意の数の計算機それぞれに任意の組み合わせで実装することができる。
図10は、KYC情報の登録処理の一例を示すシーケンス図である。情報提供者によるKYC情報を利用したいクライアントサーバ400(企業A~Z)は、アクセス制御サーバ100に対して、予めクライアントサーバ400の公開鍵を送付する(S101)。
情報提供者は、図示しない端末(計算機)を利用して、情報連携システムのアクセス制御サーバ100が提供する個人情報登録画面1300(図12、図13参照)を介して、「KYC情報」と、「情報の開示先」と、「開示する属性項目(以下、開示属性と称す)」と、を登録する(S102)。開示属性は、KYC情報に含まれる複数の属性項目において、開示することが許可(指定)された項目を示す。情報提供者は、開示先毎に開示属性を指定することができる。
図12は、個人情報登録画面1300の前半部の一例を示す。ステップS102において、情報提供者は画面1300の入力項目に従い、図示しない端末から、個人情報(又は法人情報)を入力する。図13の例では、氏名1321、国籍1322及びマイナンバー1323といった「基本的な個人情報」以外にも、「住関連情報」1330と「金融機関情報」1340の入力項目が存在している。住関連情報1330には、情報提供者の居所の郵便番号や住所及び電話番号が含まれる。金融機関情報1340には、銀行名や支店名口座種別、口座番号及び口座名義人などが含まれる。
次に、図13は、個人情報登録画面1300の後半部の一例を示す。情報提供者は、入力した個人情報等の開示先の企業名を、共有先企業一覧1350で選択する。情報提供者は、自身のKYC情報の開示を許可する企業名のチェックボックスをクリックすることで、KYC情報を開示する企業を指定することができる。
また、個人情報登録画面1300の後半部には、開示するKYC情報の項目(開示属性)を指定する開示属性一覧1360と、登録ボタン1380と、完了ボタン1390が表示される。
開示属性一覧1360は、共有先企業一覧1350で選択した企業に開示を許可する属性として、住関連情報と金融機関情報を選択可能とした例を示す。開示属性一覧1360は、開示先毎に、共有する属性を設定可能であり、図14のような「住関連情報」や「金融機関情報」といったグループ単位や、入力項目単位で個別に開示属性を設定可能である。
情報提供者が図示しない端末から登録ボタン1380を操作することで、指定した開示先企業の開示項目が登録される。登録ボタン1380の操作により入力された情報が個人情報登録画面1300においてクリアされ、新たな開示先及び開示範囲の指定が可能となる。完了ボタン1390の操作により、情報開示先及び開示範囲の登録処理が完了する。
図10の説明に戻る。ステップS103では、アクセス制御サーバ100のアクセス鍵生成機能107が、情報提供者から受信した「KYC情報」と「開示属性」に基づいて、「アクセス鍵」を生成する。「アクセス鍵」は、ブロックチェーンサーバ200のアクセス制御テーブル206が保持する個人のID2061(図6)と開示属性群に格納されているビット列を、アクセス制御サーバ100の共有鍵で暗号化して生成される。共有鍵は、アクセス制御サーバ100で予め生成(あるいは設定)された鍵である。
ステップS104では、アクセス制御サーバ100の属性開示制御機能106が、KYC情報のハッシュ値(レコードハッシュ値)を算出する。属性開示制御機能106は、KYC情報の各項目の値に基づいて各項目のハッシュ値を計算し、さらに、全ての項目のハッシュ値に基づいてKYC情報のレコードハッシュ値を計算する。項目及びKYC情報のハッシュ値の算出方法の詳細は後述する。属性開示制御機能106は、さらに、アクセス制御サーバ100の秘密鍵とレコードハッシュ値から、レコードハッシュ値に対する電子署名(ハッシュ値署名)を生成する。ハッシュ値署名は、レコードハッシュ値を生成した装置の署名である。
図6は、アクセス制御テーブル206のデータフォーマットの一例である。アクセス制御テーブル206は、情報提供者によって登録又は更新されるKYC情報について、開示先毎の開示属性とKYC情報の改竄の有無を検証するための情報を管理するテーブルである。アクセス制御サーバ100は、情報提供者がKYC情報を登録したときにアクセス制御テーブル206のレコードを生成し、KYC情報の更新要求に応じて更新する。
アクセス制御テーブル206は、ID2061と、属性群(「属性-1(2062-1)」から「属性-n(2062-n)」を指す)と、企業ID2063と、電子署名2064と、レコードハッシュ値2065と、ハッシュ値署名2066と、を一つのレコードに含む。
属性-1(2062-1)から属性-n(2062-n)は、図12、13に示した個人情報登録画面1300の氏名1321~金融機関情報1340の各項目に対応するフィールドである。属性-1(2062-1)から属性-n(2062-n)と個人情報登録画面1300の各項目の関係は予め設定されている。
ID2061には、アクセス制御サーバ100が情報提供者に付与したユニークな識別子が設定される。属性群(2062-1~2061-n)には、開示してもよい属性には「1」を、開示したくない属性には「0」が設定される。企業ID2063は、KYC情報の開示先企業のIDが設定される。図6において、例えば、情報提供者のID2061が「A」、開示先の企業ID2603が「X」のレコードは、属性-1(2062-1)から属性-n(2062-n)が「1」であり、全ての属性の情報の開示が許可されている。
図10の説明に戻る。ステップS105では、アクセス制御サーバ100は、アクセス制御テーブル206にKYC情報についての上記情報2061~2066を示す新たなレコードを生成し、アクセス制御テーブル206の保存をブロックチェーンサーバ200に指令する。ブロックチェーンサーバ200の電子署名生成機能205は、ステップS103で生成したアクセス鍵のハッシュ値を、ブロックチェーンサーバ200の秘密鍵で暗号化し、電子署名2064に格納してアクセス制御テーブル206を更新する。
次に、ステップS106では、アクセス制御サーバ100が外部データベースサーバ300で格納されている、KYC情報テーブル305を更新する。図8は、KYC情報テーブル305のデータフォーマットの一例を示す図である。
KYC情報テーブル305は、情報提供者のIDを示すID3051と、KYC情報の属性の値を示す属性3052-1~3052-nと、を一つのレコードに含む。ID3051の値は、アクセス制御テーブル206のID2061の値に対応する。属性3052-1~3052-nは、アクセス制御テーブル206の属性-1(2062-1)~属性-n(2062-n)に対応し、個人情報登録画面1300の各項目(属性)へ入力された値が格納される。登録される属性3052-1~3052-nは、例えば氏名1321や国籍1322などを含み、ステップS102で情報提供者が入力したKYC情報を管理する。
KYC情報テーブル305は、ブロックチェーンではなく、従来のデータベース管理システムで管理するため、レコード削除が可能である。これにより、情報提供者(又は企業A~Z)の意志でデータの削除を実現できる。
次に、ステップS107では、アクセス制御サーバ100が連携テーブル207の更新をブロックチェーンサーバ200に指令する。連携テーブル207は、アクセス制御テーブル206と、KYC情報テーブル305を紐付ける中間テーブルであり、図7にデータフォーマットの一例を示す。
連携テーブル207は、KYC情報の開示先の企業を示す企業ID2071と、KYC情報テーブル305のID3051と紐づく個人ID2072と、を一つのレコードに含む。連携テーブル207は、上記ステップS102における情報提供者の「開示先」の設定に基づいて生成された開示先の企業ID2071のレコードを含む。図7において、例えば、企業ID2071が「W」、個人ID2072が「A」のレコードが存在する。このレコードは、図8のKYC情報テーブル305のID3051が「A」のレコードと紐づく。
連携テーブル207は、個人ID2072毎に、KYC情報を開示可能な企業ID2071のレコードを含む。アクセス制御サーバ100は、個人ID2072で連携テーブル207を検索することで、当該個人ID2072のKYC情報へアクセスが許可された企業ID2071(クライアントサーバ400)を判定することができる。
次に、アクセス制御サーバ100の開示先制御機能105は、開示先のクライアントサーバ400だけが復号できる情報を送信するため、ステップS108~S110を実施する。
ステップS108で、開示先制御機能105は、共有鍵で、ステップS103で生成したアクセス鍵を暗号化する。ステップS109で、開示先制御機能105は、ステップS101で受信した、開示先のクライアントサーバ400の公開鍵を用いて、アクセス制御サーバ100の共有鍵を暗号化する。そして、ステップS110で、開示先制御機能105は、上記暗号化したアクセス鍵と、暗号化した共有鍵と、KYC情報を登録した情報提供者のID2061をクライアントサーバ400へ送信する。
最後に、ステップS110で、クライアントサーバ400は、受信した暗号化されたアクセス鍵に基づいて、ユーザ情報テーブル405を更新する。図9は、ユーザ情報テーブル405のデータフォーマットの一例を示す。ユーザ情報テーブル405は、各クライアントサーバ400がKYC情報テーブル305において参照可能な情報への接続情報を管理する。
ユーザ情報テーブル405は、個人ID4051と、アクセス鍵4052と、を一つのレコードに含む。ユーザ情報テーブル405を用いて、外部データベースサーバ300が保持するKYC情報テーブル305を参照する方法は、図11を参照して後述する。
個人ID4051は、KYC情報テーブル305のレコードを特定する個人ID3051(2061)に紐付けられた識別子を格納する。アクセス鍵4052は、アクセス制御サーバ100から受信した鍵を格納する。
図11は、KYC情報の取得処理の一例を示すシーケンス図である。特定の企業IDのクライアントサーバ400が、外部データベースサーバ300が保持するKYC情報テーブル305から、特定の個人IDのアクセス対象のKYC情報(KYC情報レコード)を取得する処理について説明する。但し前提条件として、クライアントサーバ400が有するユーザ情報テーブル405に、取得対象のID4051とアクセス鍵4052が登録されている場合に限る。
まず、ステップS201で、クライアントサーバ400が、アクセス制御サーバ100から受信した、暗号化された共有鍵をクライアントサーバ400の秘密鍵で復号することで、アクセス制御サーバ100の共有鍵を取得する。
次に、ステップS202で、クライアントサーバ400が、取得した共有鍵を用いて、暗号化されたアクセス鍵を復号し、アクセス鍵を取得する。クライアントサーバ400は、取得したいKYC情報があれば、ステップS202で復号したアクセス鍵と、アクセス対象のユーザ情報(ID4051)を、アクセス制御サーバ100へ送信し、ユーザ情報に対応するKYC情報へのアクセスを要求する(S203)。
次に、アクセス制御サーバ100のデータ連携機能108は、クライアントサーバ400からアクセス要求を受信し、アクセス要求に含まれるユーザ情報(ID4051)とクライアントサーバ400の企業IDの組み合わせを、ブロックチェーンサーバ200が保持する連携テーブル207において検索する(S204)。
企業IDは、アクセス対象のユーザ情報(ID4051)と共にクライアントサーバ400が送信してもよいし、クライアントサーバ400のアドレス情報と企業ID2071の対応関係を予め設定しておき、アクセス制御サーバ100はクライアントサーバ400が所属する企業ID2071を判定してもよい。
アクセス制御サーバ100のデータ連携機能108は、クライアントサーバ400の企業ID2071及び対象のユーザ情報の個人ID2072を指定して、クエリをブロックチェーンサーバ200に発行する。アクセス制御サーバ100のデータ連携機能108は、該当する連携レコード(個人ID2072、企業ID2071)を取得する。対象の連携レコードを取得できない場合は、取得できるKYC情報が無いため、アクセス制御サーバ100は、クライアントサーバ400に対してKYC情報を取得できないことを示すエラーを送信する(S205)。
次に、ステップS206で、アクセス制御サーバ100のデータ連携機能108は、クライアントサーバ400から受信したアクセス鍵の正当性を検証する。正当性が検証されると、アクセス制御サーバ100のデータ連携機能108は、ステップS204で取得した連携レコード(企業ID2071、個人ID2072)と、ブロックチェーンサーバ200が保持するアクセス制御テーブル206との紐付けを実施する。
図14は、アクセス鍵の正当性検証処理S206の一例を示すフローチャートである。まず、ステップS301で、データ連携機能108は、対象のアクセス制御テーブル206のレコードをブロックチェーンサーバ200から取得する。データ連携機能108は、ステップS204で取得した連携レコードに含まれる、企業ID2071及び個人ID2072と一致するアクセス制御テーブル206のレコードを取得するクエリを生成して、ブロックチェーンサーバ200へ発行する。
次に、ステップS302で、データ連携機能108は、クライアントサーバ400から受信したアクセス鍵から、所定の関数によってハッシュ値を算出する。ステップS303で、データ連携機能108は、上記ステップS301で取得したアクセス制御テーブル206のレコードに含まれる電子署名2064を、ブロックチェーンサーバ200の公開鍵で復号する。なお、アクセス制御サーバ100は、予めブロックチェーンサーバ200から公開鍵を取得しておくものとする。
最後に、ステップS304で、データ連携機能108は、ステップS302で生成したアクセス鍵のハッシュ値と、ステップS303で取得した電子署名2064の復号結果の値とを比較する。
ステップS302で生成したアクセス鍵のハッシュ値と、ステップS303で取得した電子署名2064の復号結果の値が一致した場合、データ連携機能108は、クライアントサーバ400から受信したアクセス鍵が正当なものと判定する。アクセス制御サーバ100は、図11のステップS208へ進む。
一方、ステップS302で生成したアクセス鍵のハッシュ値と、ステップS303で取得した電子署名2064の復号結果の値が不一致であった場合は、データ連携機能108は、アクセス鍵は不正なものと判定する。データ連携機能108は、ステップS305のエラー送信処理を実施し、図11のステップS207で、クライアントサーバ400へKYC情報の取得が不可である旨のエラーを通知する。
次に、ステップS208で、アクセス制御サーバ100が外部データベースサーバ300のKYC情報テーブル305から、連携レコード(個人ID2072)と紐づくKYC情報のレコードを取得する。そして、アクセス制御サーバ100の属性開示制御機能106が、KYC情報の開示先のクライアントサーバ400に対して、指定された属性の開示処理を実施する。
図15は、属性開示制御処理S208の一例を示すフローチャートである。ステップS401において、アクセス制御サーバ100の属性開示制御機能106は、KYC情報テーブル305からKYC情報レコードを取得する。具体的には、属性開示制御機能106は、連携レコードと紐づく条件のクエリを外部データベースサーバ300へ発行する。属性開示制御機能106は、ステップS203でクライアントサーバ400から受け付けた個人ID及び当該クライアントサーバ400の企業IDの組み合わせに該当するレコードを、外部データベースサーバ300に要求し、取得する。
ステップS402において、属性開示制御機能106は、図11のステップS204で取得したアクセス制御テーブル206のレコード(アクセス制御レコード)に含まれる属性(「属性-1(2062-1)」から「属性-n(2062-2)」)の個数分、ステップS402及びステップS403を繰返す。
ステップS402において、属性開示制御機能106は、アクセス制御テーブル206のレコードの属性-k(kは1~nの数)の値を判定する。値が「1」である場合、属性-kは開示される属性のため、属性開示制御機能106は、次の属性を選択する。値が「0」である場合、属性-kはマスクされる属性のため、属性開示制御機能106は、ステップS403へ進む。
ステップS403において、属性開示制御機能106は、KYC情報の属性値をマスクする。具体的には、属性開示制御機能106は、マスクすると判定された属性-k(3052-k)の値を、当該値に基づくハッシュ値(項目ハッシュ値)に置き換える。
属性開示制御機能106は所定のハッシュ関数により、ハッシュ値を計算する。ハッシュ値の計算は、例えば、属性-k(項目)の属性値(項目値)に加え、レコードIDを入力値として使用してもよい。レコードIDはレコードの識別情報である。上記例において、レコードIDは個人IDである。このように、レコードID及び項目値に基づきハッシュ値を計算することで、少数クラスしか持たない項目におけるハッシュ値の衝突の可能性を低下させることができる。
他の例において、ハッシュ値の計算は、項目値に加え項目名を入力値として使用してもよい。項目名は、項目のID(識別情報)である。これにより、項目間のハッシュ値の衝突の可能性を低下させることができる。他の例において、ハッシュ値の計算は、項目値、項目名及びレコードIDを入力値として使用してもよい。これにより、ハッシュ値の衝突の可能性をより低下させることができる。
図16は、企業X及び企業Yに、それぞれ異なる部分がマスキングされたKYC情報レコードを渡す例を示す。オリジナルKYC情報レコード700は、ID、名前、住所1、住所2、性別及び物件の項目(フィールド)を含む。オリジナルKYC情報レコード700は、全ての項目において、オリジナルの値を格納している。ID項目は、KYC情報レコードのIDを示し、本例において個人名を示す。ID項目以外の項目は、属性項目である。
企業Xに対して、オリジナルKYC情報レコード700において一部の項目がマスキングされたKYC情報レコード701が渡される。KYC情報レコード701において、名前項目の値がマスキングされており、具体的には、値「浦谷」が、ハッシュ値h1に置き換えられている。上述のように、ハッシュ値は、例えば、h(ID、項目値、項目名)により計算される。h()は所定のハッシュ関数である。
企業Yに対して、オリジナルKYC情報レコード700において一部の項目がマスキングされたKYC情報レコード702が渡される。KYC情報レコード702において、名前項目、住所1項目及び住所2項目の値がマスキングされており、具体的には、値「浦谷」、値「東京」及び値「文京」が、それぞれ、ハッシュ値h1、ハッシュ値h2及びハッシュ値h2に置き換えられている。ハッシュ値の計算方法は上述の通りである。
このように、ステップS403の処理により、情報提供先毎に、情報提供者の意志に基づいた属性の開示制御が可能となる。つまり、情報提供者は、指定した開示先に対してのみ情報を開示し、開示先毎に許可した項目のみを開示することができる。アクセス制御サーバ100は、属性開示制御処理が終了した後は、KYC情報をクライアントサーバ400へ送信する。
図11の説明に戻る。ステップS209では、クライアントサーバ400は、アクセス制御サーバ100からKYC情報レコードを受信する。ステップS210において、クライアントサーバ400は、受信したKYC情報レコードを送信して、そのKYC情報レコードの改竄の有無の検証を、アクセス制御サーバ100に依頼する。
ステップS211において、アクセス制御サーバ100は、KYC情報レコードの改竄の有無の検証を行い、その検証結果をクライアントサーバ400に送信する。具体的には、アクセス制御サーバ100の属性開示制御機能106は、受信したKYC情報レコードから生成されるハッシュ値(レコードハッシュ値)と、当該KYC情報レコードのオリジナルのKYC情報レコードのレコードハッシュ値とを比較して、改竄の有無を判定する。アクセス制御サーバ100は、検証結果をクライアントサーバ400に送信する。ステップS212において、クライアントサーバ400は検証結果を受信する。
図17は、検証対象のKYC情報レコードの改竄の有無の検証処理S211の一例を示すフローチャートである。ステップS501において、属性開示制御機能106は、検証対象のKYC情報レコードを受信する。ステップS502において、属性開示制御機能106は、受信した検証対象のKYC情報レコードと同一IDを有するオリジナルKYC情報レコードのレコードハッシュ値H2を、そのハッシュ値署名と共にアクセス制御テーブル206から取得する。
レコードハッシュ値H2は、オリジナルKYC情報レコードの全ての項目それぞれの項目ハッシュ値を上述のように算出し、全ての項目ハッシュ値を上述のように所定ハッシュ関数に入力することで算出される。属性開示制御機能106は、アクセス制御サーバ100の公開鍵によりハッシュ値署名を復号化し、その値とレコードハッシュ値H2とを比較することで、レコードハッシュ値の正当性を確認できる。本例においては、レコードハッシュ値を生成する主体とKYC情報レコードの改竄の有無の検証の主体が同一であるが、後述するように、これらが異なる場合もある。
ステップS503において、属性開示制御機能106は、検証対象のKYC情報レコードにおいて、マスクされていないオリジナルの値の全ての項目それぞれの項目ハッシュ値を算出する。ステップS504において、属性開示制御機能106は、オリジナルKYC情報レコードの全ての項目ハッシュ値を所定のハッシュ関数に入力して、検証対象KYC情報レコードのレコードハッシュ値H1を算出する。レコードハッシュ値のハッシュ関数は、項目ハッシュ値のハッシュ関数と同一又は異なる。
ステップS505において、属性開示制御機能106は、検証対象KYC情報レコードのレコードハッシュ値H1と、オリジナルKYC情報レコードのレコードハッシュ値H2とを比較して、検証対象KYC情報レコードの改竄の有無を判定する。二つのレコードハッシュ値H1、H2が異なる場合、検証対象KYC情報レコードは改竄され、同一である場合改竄されていない。ステップS506において、属性開示制御機能106は、検証結果をクライアントサーバ400に送信する。
図16に示す例を使用して、KYC情報レコードの改竄の有無の検証方法を説明する。企業XのKYC情報レコード701の検証方法を説明する。アクセス制御サーバ100は、企業Xのクライアントサーバ400から、部分的にマスクされたKYC情報レコード701を受信する。
属性開示制御機能106は、KYC情報レコード701における住所1項目、住所2項目、性別項目及び物件項目のそれぞれの項目ハッシュ値h2、h3、h4及びh5を、計算する。例えば、属性開示制御機能106は、レコードID、項目名及び項目値に基づき各項目ハッシュ値を算出する。属性開示制御機能106は、さらに、全ての項目ハッシュ値h1~h5に基づき、レコードハッシュ値H1を算出する。
属性開示制御機能106は、オリジナルKYC情報レコード700のレコードハッシュ値H2を、アクセス制御テーブル206から取得する。オリジナルKYC情報レコード700のレコードハッシュ値H2の算出は、オリジナルKYC情報レコード700の全項目それぞれのハッシュ値h11~h15を、ID、項目値及び項目名に基づき算出し、さらに、全ての項目ハッシュ値に基づきレコードハッシュ値を算出する。
属性開示制御機能106は、レコードハッシュ値H1とレコードハッシュ値H2とを比較する。それらが一致する場合、属性開示制御機能106は、KYC情報レコード701が改竄されていないと判定し、それらが一致しない場合、KYC情報レコード701が改竄されていると判定する。
このように、項目のハッシュ値をマスキングされた項目値として渡すことで、部分的にマスクされたKYC情報を受信した装置が、オリジナルのKYC情報のレコードハッシュ値を計算した方法同じ計算方法を用いて、改竄の有無を検証することができる。
上記例において、アクセス制御サーバ100がKYC情報レコードの改竄の有無を検証する。他の例において、アクセス制御サーバ100と異なる装置がKYC情報レコードの改竄の有無を検証してよい。例えば、クライアントサーバ400は、受信したKYC情報レコードの改竄の有無を検証してもよい。
例えば、クライアントサーバ400は、KYC情報レコードと共に、そのKYC情報レコードのオリジナルKYC情報レコードのレコードハッシュ値を受信する。クライアントサーバ400は、受信したKYC情報レコードにおいて、オリジナルの項目値の項目それぞれの項目ハッシュ値を計算する。KYC情報レコードにおいてマスクされている項目は、例えば、アクセス制御サーバ100又はクライアントサーバ400のユーザにより指定される。
クライアントサーバ400は、算出した項目ハッシュ値及び受信したKYC情報レコードの含まれているハッシュ値から、レコードハッシュ値を算出する。クライアントサーバ400は、算出したレコードハッシュ値と受信したオリジナルKYC情報レコードのレコードハッシュ値とを比較して、受信したKYC情報レコードの改竄の有無を判定する。また、クライアントサーバ400は、ハッシュ値署名をレコードハッシュ値と共に受信して、レコードハッシュ値の正当性の検証を行ってもよい。
他の例において、クライアントサーバ400は、アクセス制御サーバ100と異なる装置に検証を依頼してもよい。クライアントサーバ400は、検証対象のKYC情報レコード及びマスクされた項目の指定と共に、アクセス制御サーバ100から受信したオリジナルKYC情報レコードのレコードハッシュ値を、検証依頼と共に依頼先に送信する。依頼先がアクセス制御テーブル206にアクセスできる場合、クライアントサーバ400は、オリジナルKYC情報レコードのレコードハッシュ値を受信する必要はない。ハッシュ値署名による検証は、クライアントサーバ400又は検証依頼先において行うことができる。
上記例はレコードハッシュ値を予め生成してアクセス制御テーブル206に格納する。他の例は、レコードハッシュ値を予め生成することなく、部分的にマスクされたKYC情報レコードの改竄の有無の検証のときに、オリジナルのKYC情報レコードからレコードハッシュ値を生成してもよい。
上記実施例では、情報提供者が入力したKYC情報を、情報提供者が指定した複数の企業A~Zで共有する例を示したが、これに限定されるものではない。例えば、複数の企業A~Zが保有する顧客の情報のうち、顧客から許諾を得た情報を外部データベースサーバ300に登録し、アクセス制御サーバ100を介して複数の企業A~Zで共有するようにしてもよい。
複数の企業A~Zは、外部データベースサーバ300を使用することなく、情報を共有してもよい。例えば、情報提供元企業のサーバは、提供先企業に応じてマスクする項目を決定し、部分的にマスクした情報を提供先企業に提供する。アクセス制御サーバ100は、オリジナル情報のレコードハッシュ値を管理する。提供先企業のサーバは、アクセス制御サーバ100に対して、部分的にマスクされた情報と共に、その情報の正当性の検証を依頼する。アクセス制御サーバ100は、部分的にマスクされた情報のレコードハッシュ値を算出し、オリジナルの情報のレコードハッシュ値と比較して、改竄の有無を判定する。 複数の企業A~Zのサーバが、それぞれ、受信した部分的にマスクされた情報の改竄の有無の検証を行ってもよい。情報提供元企業のサーバは、部分的にマスクされた情報と共にレコードハッシュ値を送信する。情報提供先企業のサーバは、部分的にマスクされた情報からレコードハッシュ値を計算して、受信したレコードハッシュ値と比較する。また、レコードハッシュ値と共にハッシュ値署名を受信することで、情報提供先企業は受信したレコードハッシュ値の正当性を検証できる。
上記実施例では、アクセス制御テーブル206と、連携テーブル207と、電子署名生成機能205をアクセス制御サーバ100とは異なるブロックチェーンサーバ200で管理する例を示したが、これに限定されるものではない。アクセス制御テーブル206及び連携テーブル207をブロックチェーンサーバ200に格納するが、これらは通常のデータベースに格納されていてもよい。例えば、アクセス制御サーバ100が、上記実施例の機能とテーブルに加えて、電子署名生成機能205を提供し、アクセス制御テーブル206と、連携テーブル207を管理するようにしてもよい。
上記実施例では、アクセス制御サーバ100と、外部データベースサーバ300と、ブロックチェーンサーバ200を独立した計算機で構成する例を示したが、これに限定されるものではない。例えば、アクセス制御サーバ100に、外部データベースサーバ300とブロックチェーンサーバ200の機能とデータを集約し、一つの計算機で運用してもよい。また、アクセス制御サーバ100は、物理計算機に限定されるものではなく、仮想計算機やコンテナで実現してもよい。
また、上記実施例では、KYC情報テーブル305を共有するクライアントサーバ400を企業が利用する例を示したが、これに限定されるものではない。任意の組織が運用して情報提供者のKYC情報を共有するようにしてもよい。
なお、本発明は上記実施例に限定しされるものではなく、様々な変形例が含まれる。例えば、上記実施例では本発明を実現するため、複数の構成サーバが存在しているが、必ずしも説明した全て構成に限定されるものではない。また、本発明を実現するためのインフラ環境も限定されていないため、オンプレミスやクラウド環境で実現することも可能である。
上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。