(57)【要約】中央集権的な秘匿化サーバを置かなくとも、利用者が複雑な手順又は鍵の管理に煩わされることなく、分散台帳に登録する契約データの一部を柔軟に秘匿化して管理すること。  分散台帳に登録するデータに含まれる項目を暗号化及び復号化するための共通鍵を生成するステップと、項目に対するアクセス権限を有するユーザのアカウントごとに公開鍵を取得するステップと、共通鍵を、前記アカウントごとの各公開鍵で暗号化するステップと、前記アカウントごとに暗号化された各共通鍵を、トランザクションを介して分散台帳に登録するステップと、を含む、コンピュータが行うデータ登録方法。
2019082442.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが行うデータ登録方法であって、
分散台帳に登録するデータに含まれる項目を暗号化及び復号化するための共通鍵を生成するステップと、
前記項目に対するアクセス権限を有するユーザのアカウントごとに公開鍵を取得するステップと、
前記共通鍵を、前記アカウントごとの各公開鍵で暗号化するステップと、
前記アカウントごとに暗号化された各共通鍵を、トランザクションを介して前記分散台帳に登録するステップと、
を含む、データ登録方法。
【請求項２】
請求項１に記載のデータ登録方法において、
前記共通鍵を用いて、前記データに含まれる、前記共通鍵と対応する項目を暗号化するステップと、
前記暗号化された項目を含むデータを、トランザクションを介して前記分散台帳に登録するステップと、
を更に含むデータ登録方法。
【請求項３】
請求項１又は２に記載のデータ登録方法において、
前記共通鍵は、前記データに含まれる暗号化対象項目ごとに生成される、データ登録方法。
【請求項４】
請求項１乃至３のいずれか一項に記載のデータ登録方法において、
前記共通鍵を生成するステップは、前記データの前記分散台帳への登録要求を受け付ける度に、前記共通鍵を生成する
、データ登録方法。
【請求項５】
コンピュータが行うデータ復号方法であって、
トランザクションを介して分散台帳に登録された、暗号化された項目を含むデータを取得するステップと、
トランザクションを介して前記分散台帳に登録された秘匿管理情報を取得するステップと、
前記秘匿管理情報から、前記暗号化された項目と、当該暗号化された項目を復号化するための、暗号化された共通鍵と、を取得するステップと、
前記暗号化された共通鍵を、当該共通鍵に対応する秘密鍵を用いて復号化するステップと、
前記復号化された共通鍵を用いて、前記暗号化された項目を復号化するステップと、
を含む、データ復号方法。
【請求項６】
秘匿管理情報のデータ構造であって、
トランザクションを介して分散台帳に登録されたデータの暗号化された項目に対するアクセス権限を有するユーザのアカウント情報と、
前記暗号化された項目を示す情報と、
前記暗号化された項目を復号化するための共通鍵を暗号化するために用いる公開鍵に関する情報と、
前記公開鍵によって暗号化された前記共通鍵と、
を含み、
前記アカウント情報は、前記秘匿管理情報がどのユーザに対応するものかを特定し、
前記共通鍵は、前記公開鍵に対応する秘密鍵を用いて復号化され、
前記復号化された共通鍵は、前記暗号化された項目を復号化するために用いられる、
データ構造。
【請求項７】
分散台帳に登録するデータに含まれる項目を暗号化及び復号化するための共通鍵を生成し、
前記項目に対するアクセス権限を有するユーザのアカウントごとに公開鍵を取得し、
前記共通鍵を、前記アカウントごとの各公開鍵で暗号化し、
前記アカウントごとに暗号化された各共通鍵を、トランザクションを介して前記分散台帳に登録する、
プロセッサを備えるコンピュータ。
【請求項８】
コンピュータに、
分散台帳に登録するデータに含まれる項目を暗号化及び復号化するための共通鍵を生成するステップと、
前記項目に対するアクセス権限を有するユーザのアカウントごとに公開鍵を取得するステップと、
前記共通鍵を、前記アカウントごとの各公開鍵で暗号化するステップと、
前記アカウントごとに暗号化された各共通鍵を、トランザクションを介して前記分散台帳に登録するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ登録方法、データ復号方法、データ構造、コンピュータ、及びプログラムに関する。
【背景技術】
【０００２】
近年、中央集権的な管理を必要とせずに信頼性を担保可能な仕組みが、デジタル仮想通貨であるビットコインを中心に普及しつつある。ブロックチェーンと呼ばれるこの仕組みにおいては、やり取りされる情報の信頼性が分散ネットワーク内の合意形成のプロセスによって担保される。また、改ざん又は二重使用などの不正を系全体で防ぐことで健全性が保たれる。このブロックチェーンでは、参加者間の仮想通貨の取引情報（トランザクション）が「ブロック」という単位でまとめられ、各ブロックは数珠つなぎとなって時系列順に管理される。新たなブロックの承認は、Proof of Workなどの分散ネットワークにおける合意アルゴリズムによって成される。このことは、ブロック内部に記録された通貨取引が系全体で合意されたことを示す。このブロックチェーンを用いて管理される一連の取引情報の帳簿は「分散台帳」と呼ばれる。ネットワークに参加する各ノードは同一の分散台帳を保持する。【０００３】
近年では、分散台帳に通貨取引だけでなく、高度なスクリプトコードを登録し、スクリプトコードの実行とその結果についても合意を得るブロックチェーン基盤技術も開発されている。例えばEthereumやHyperledger Fabricに代表されるブロックチェーン基盤では、トランザクションを入力としてスクリプトコードを実行し、その実行結果をキーバリュー型のストアに格納し、その時のストアの代表値もブロックに記録する分散台帳を持つ（例えば非特許文献１）。前述の仮想通貨ではトランザクションは「誰から誰へいくら渡した」といった通貨の取引記録のみに限定された。一方、これら後継のブロックチェーン技術では、利用者自身が、トランザクションとスクリプトコードによって記録する情報をプログラマブルに設定可能である。そのため、証券取引、保険業務、著作権管理など通貨取引以外の様々な用途にブロックチェーンを応用することが容易になる。これらの基盤技術は、ある契約に関して参加者間で合意を得ることから、スマートコントラクト型のブロックチェーンと呼ばれている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−５０７６３号公報
【非特許文献】
【０００５】
【非特許文献１】ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎ、「はじめてのBlockchain」、[Online]、2016年9月15日、[平成29年10月3日検索]、インターネット(URL: https://www.ibm.com/developerworks/jp/cloud/library/j_cl-blockchain-basics-bluemix/index.html)
【非特許文献２】株式会社富士通研究所、「ブロックチェーンのセキュリティ強化技術を開発」、２．秘密分散鍵管理によるブロックチェーン上の文書秘匿化技術、[Online]、2016年10月19日、[平成29年10月3日検索]、インターネット(URL: http://pr.fujitsu.com/jp/news/2016/10/19.html)
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記ブロックチェーンのシステムでは、全てのノード間において情報が公開されることが前提となっている。しかしながら、用途によってはトランザクションの一部の領域を秘匿化して、関係する参加者に限って公開したい場合がある。例えば、特許文献１に示す方法によれば、コンテンツの許諾管理に適用するために、仮想通貨型のブロックチェーンを介して、暗号化した情報を送受信することができる。この方式によれば、暗号化するデータの対象はコンテンツの共通鍵であり、権利者と利用者の二者間の端末に限定して秘匿情報がやり取りされている。しかしこの方式では、秘匿化する範囲を選択することができない。【０００７】
スマートコントラクト型のブロックチェーンのように利用者がプログラマブルに契約の項目を設定できる場合において、より柔軟に秘匿化の設計を行うことが求められている。例えば、貿易業務における貨物保険証券の取引にスマートコントラクト型のブロックチェーンを適用する場合、複数の項目において柔軟に秘匿化する項目を設定でき、かつ、保険会社・通知銀行・発行銀行など複数の異なる組織間の組み合わせで公開範囲を設定できることが求められている。この場合、複数の項目を有する契約データのうち、どの項目を暗号化しているのか、どの利用者に限って公開されているのか、復号化に使う鍵はどれか、といった管理情報が煩雑化する。更に、共通鍵を入手するまでに必要な鍵交換の手順並びに公開鍵及び秘密鍵の管理が煩雑化し、利用者がシステムを利用する際に運用面で大きな負担となる。【０００８】
このような課題に対して、非特許文献２に示すように、中央管理された秘匿化サーバをブロックチェーンシステム外に設けて対応することが考えられる。秘匿化サーバの内部には、秘匿化のための管理情報が保管され、利用者の要求に応じて暗号化・復号化の機能を提供する。秘匿化された情報は契約データに含められ、ブロックチェーンシステム内の分散台帳に保管される。秘匿化サーバによって暗号化の項目及び公開範囲が管理される。このため、利用者の負担は軽減される。一方で、非特許文献２では、ブロックチェーンシステムの特徴である権限の分散性は損われてしまう。例えば、秘匿化サーバの管理者が権限を乱用し、他社が格納した機密情報を覗き見るような内部不正は防ぐことが困難である。また、秘匿化サーバの管理者がサービスを停止した場合に、分散台帳に登録された暗号化データを利用者の権限のみで復号化することは容易ではない。また、ブロックチェーンシステム外で鍵の受け渡しが発生するため、誰が誰に鍵を渡したかの証拠が残らず、取引の証拠性を損ね得る。【０００９】
かかる点に鑑みてなされた本発明の目的は、中央集権的な秘匿化サーバを置かなくとも、利用者が複雑な手順又は鍵の管理に煩わされることなく、分散台帳に登録するデータの一部を柔軟に秘匿化して管理することができるデータ登録方法、データ復号方法、データ構造、コンピュータ、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本実施形態のコンピュータにおけるデータ登録方法は、分散台帳に登録するデータに含まれる項目を暗号化及び復号化するための共通鍵を生成するステップと、前記項目に対するアクセス権限を有するユーザのアカウントごとに公開鍵を取得するステップと、前記共通鍵を、前記アカウントごとの各公開鍵で暗号化するステップと、前記アカウントごとに暗号化された各共通鍵を、トランザクションを介して前記分散台帳に登録するステップと、を含む。【００１１】
また、上記課題を解決するため、本実施形態のコンピュータにおけるデータ復号方法は、トランザクションを介して分散台帳に登録された、暗号化された項目を含むデータを取得するステップと、トランザクションを介して前記分散台帳に登録された秘匿管理情報を取得するステップと、前記秘匿管理情報から、前記暗号化された項目と、当該暗号化された項目を復号化するための、暗号化された共通鍵と、を取得するステップと、前記暗号化された共通鍵を、当該共通鍵に対応する秘密鍵を用いて復号化するステップと、前記復号化された共通鍵を用いて、前記暗号化された項目を復号化するステップと、を含む。【００１２】
また、上記課題を解決するため、本実施形態の秘匿管理情報のデータ構造は、トランザクションを介して分散台帳に登録されたデータの暗号化された項目に対するアクセス権限を有するユーザのアカウント情報と、前記暗号化された項目を示す情報と、前記暗号化された項目を復号化するための共通鍵を暗号化するために用いた公開鍵に関する情報と、前記公開鍵によって暗号化された前記共通鍵と、を含む。前記アカウント情報は、前記秘匿管理情報がどのユーザに対応するものかを特定する。前記共通鍵は、前記公開鍵に対応する秘密鍵を用いて復号化される。前記復号化された共通鍵は、前記暗号化された項目を復号化するために用いられる。【００１３】
また、上記課題を解決するため、本実施形態のコンピュータは、分散台帳に登録するデータに含まれる項目を暗号化及び復号化するための共通鍵を生成し、前記項目に対するアクセス権限を有するユーザのアカウントごとに公開鍵を取得し、前記共通鍵を、前記アカウントごとの各公開鍵で暗号化し、前記アカウントごとに暗号化された各共通鍵を、トランザクションを介して前記分散台帳に登録する、プロセッサを備える。【００１４】
また、上記課題を解決するため、本実施形態のプログラムは、コンピュータに、分散台帳に登録するデータに含まれる項目を暗号化及び復号化するための共通鍵を生成するステップと、前記項目に対するアクセス権限を有するユーザのアカウントごとに公開鍵を取得するステップと、前記共通鍵を、前記アカウントごとの各公開鍵で暗号化するステップと、前記アカウントごとに暗号化された各共通鍵を、トランザクションを介して前記分散台帳に登録するステップと、を実行させる。
【発明の効果】
【００１５】
本発明に係るデータ登録方法、データ復号方法、データ構造、コンピュータ、及びプログラムによれば、中央集権的な秘匿化サーバを置かなくとも、利用者が複雑な手順又は鍵の管理に煩わされることなく、分散台帳に登録するデータの一部を柔軟に秘匿化して管理することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態の秘匿化システムの概略構成を示す機能ブロック図である。
【図２Ａ】暗号化前の契約データの一例を示す図である。
【図２Ｂ】暗号化後の契約データの一例を示す図である。
【図３】本実施形態の検証端末の機能ブロック図である。
【図４】本実施形態の秘匿管理情報を示す図である。
【図５】本実施形態の中間サーバの機能ブロック図である。
【図６】本実施形態の秘匿管理情報の構築処理を示すシーケンス図である。
【図７】本実施形態のユーザ端末の機能ブロック図である。
【図８Ａ】実施形態１の中間サーバが実行する処理を示すフローチャートである。
【図８Ｂ】図８Ａの暗号化処理のサブルーチンを示すフローチャートである。
【図９】中間サーバが実行する復号化処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
図１は、本実施形態の秘匿化システムＳを示す機能ブロック図である。本実施形態の秘匿化システムＳは、ネットワークＮＷと、検証端末１Ａ、１Ｂ及び１Ｃと、中間サーバ２Ａ、２Ｂ及び２Ｃと、ユーザ端末３Ａ、３Ｂ、３Ｃ、３Ｘ、３Ｙ、３Ｚ、３Ｓ、３Ｔ及び３Ｕとを有する。本実施形態のネットワークＮＷはブロックチェーンネットワークである。本実施形態の検証端末１Ａ、１Ｂ及び１Ｃはブロックチェーン検証端末である。ユーザ端末３Ａ、３Ｂ及び３Ｃは組織１に設けられ、ユーザ端末３Ｘ、３Ｙ及び３Ｚは組織２に設けられ、ユーザ端末３Ｓ、３Ｔ及び３Ｕは組織３に設けられる。組織は例えば、保険会社、銀行等である。
【００１８】
ユーザ端末３Ａ、３Ｂ及び３Ｃは中間サーバ２Ａを介して検証端末１Ａと接続する。ユーザ端末３Ｘ、３Ｙ及び３Ｚは中間サーバ２Ｂを介して検証端末１Ｂと接続する。ユーザ端末３Ｓ、３Ｔ及び３Ｕは中間サーバ２Ｃを介して検証端末１Ｃと接続する。
【００１９】
以下、重複説明を避けるために、検証端末１Ａ、中間サーバ２Ａ並びにユーザ端末３Ａ、３Ｂ及び３Ｃが実行する処理を中心に説明する。しかし、その説明は、検証端末１Ｂ、中間サーバ２Ｂ並びにユーザ端末３Ｘ、３Ｙ及び３Ｚにもあてはまり、検証端末１Ｃ、中間サーバ２Ｃ並びにユーザ端末３Ｓ、３Ｔ及び３Ｕにもあてはまる。
【００２０】
検証端末１Ａは、トランザクションの検証若しくは伝搬、後述する分散台帳１２Ａ（図３参照）への記録若しくは参照など、ブロックチェーンシステムを使用する上で基本的な機能を備えたソフトウェアを搭載する。検証端末１Ａは秘匿化システムＳを利用するための専用のソフトウェアではなく、EthereumやHyperledger Fabricなど汎用のブロックチェーン基盤を利用してよい。中間サーバ２Ａは、中間サーバ２Ａに接続された各ユーザ端末から要求を受け付け、検証端末１Ａと通信し、指定された処理を実行する。各中間サーバは、管理権限の分かれた組織単位で分散して運用される。一つの検証端末には一つの中間サーバが割り当てられる。一つの中間サーバに対して、同じ組織内の複数のユーザ端末が接続されてよい。しかし、ある組織のユーザ端末に接続された中間サーバは、他の組織のユーザ端末に直接的に接続されない。検証端末１Ａと中間サーバ２Ａとは必ずしも物理的に分かれている必要はなく、仮想化などを利用して同じ物理端末上に実装されてよい。
【００２１】
検証端末１Ａ、１Ｂ及び１Ｃは、ネットワークＮＷを介して互いに接続される。図１に示す例では、ネットワークＮＷに検証端末が３つ接続されているが、その数は限定されない。また、図１に示す例では、中間サーバ２Ａ、２Ｂ及び２Ｃにユーザ端末が３つずつ接続されているが、その数は限定されない。以下では本実施形態の秘匿化システムＳの各機能を説明するが、秘匿化システムＳが備える他の機能を排除することを意図したものではない。
【００２２】
図２Ａは、本実施形態で用いられる、構造化された契約データの例を示す。図２Ａに示すように、契約データにおいては、契約ＩＤ（「contract1」）に対し、日付（「date」）、内容（「description」）、契約者（「contractors」）、金額（「amount」）、請求金額（「charges」）等が対応付けられる。この契約データは複数人で交わされたある契約に関するデータである。契約データはユーザ入力によってユーザ端末で生成される。契約データの一部は秘匿化システムＳ全体には公開されず、後述する方法で暗号化（秘匿化）して分散台帳１２Ａに記録される。暗号化の実行後、図２Ｂの範囲Ｒ２１及び範囲Ｒ２２に示すように、契約データの一部の項目（「contractors」、「amount」及び「charges」）は暗号化される。分散台帳１２Ａに登録するデータは契約データに限られず、他の任意のデータが登録されてよい。
【００２３】
復号化するための鍵は、秘匿化システムＳにより、指定されたユーザ端末のみに共有される。各中間サーバは復号化を自動的に実施する。このため、各ユーザ端末は図２Ｂのような暗号文を表示しない。よって、図２Ｂに示すような暗号文をユーザが直接目にすることはない。各ユーザ端末は、図２Ａに示すような平文を表示する。
【００２４】
図３は、検証端末１Ａの機能ブロック図である。検証端末１Ａは、制御部１１と記憶部１２とを有する。検証端末１Ｂ及び１Ｃのハードウェア構成は検証端末１Ａのそれと同様であるため、説明を省略する。
【００２５】
制御部１１は、１又は複数のプロセッサを含む。プロセッサは、種々の処理のためのプログラム及び演算中の情報を記憶する１又は複数のメモリを含んでよい。メモリは揮発性メモリ及び不揮発性メモリを含む。メモリは、プロセッサと独立しているメモリ、及びプロセッサの内蔵メモリを含む。プロセッサは特定のプログラムを読み込ませて特定の機能を実行する汎用のプロセッサ、及び、特定の処理に特化した専用のプロセッサを含む。専用のプロセッサは、特定用途向けＩＣ（ＡＳＩＣ；Application Specific Integrated Circuit）を含む。プロセッサは、プログラマブルロジックデバイス（ＰＬＤ；Programmable Logic Device）を含む。ＰＬＤは、ＦＰＧＡ（Field-Programmable Gate Array）を含む。制御部１１は、一つまたは複数のプロセッサが協働するＳｏＣ（System-on-a-Chip）、及びＳｉＰ（System In a Package）のいずれかであってよい。
【００２６】
制御部１１は、契約データ保管機能１１Ａと秘匿管理機能１１Ｂとを有する。契約データ保管機能１１Ａと秘匿管理機能１１Ｂとはスクリプトコードで実装される。スクリプトコードは記憶部１２に格納される。スクリプトコードは、例えばスマートコントラクト型のブロックチェーン基盤のHyperledger Fabricでは「チェインコード」と呼ばれ、Ethereumでは「コントラクト」と呼ばれる分散実行可能なプログラムを指す。ブロックチェーンの基盤によっては、スクリプトコードは分散台帳１２Ａの内部に保管されている場合もある。一般的にスマートコントラクト型のブロックチェーンシステムは、ユーザ端末が発行したトランザクションに応じて、本スクリプトコードを実行し、実行結果について他の組織の検証端末１Ｂ又は１Ｃと合意を取る。実行結果であるキーバリュー型のデータ及び合意結果は、検証端末１Ａで保有されている分散台帳１２Ａへ記録される。
【００２７】
記憶部１２は、半導体メモリ又は磁気メモリ等で構成される。記憶部１２は、ログ、プログラム及びコンテンツ等の任意の情報を格納するＤＢを有する。記憶部１２はワークメモリとしても機能してよい。記憶部１２が記憶する分散台帳１２Ａの内部のステートＤＢ１２Ａ２は、キーバリュー型で表現されるデータを格納する。ブロックチェーン特有の鎖状のデータストア１２Ａ１は、スクリプトコードの実行結果を含むステートＤＢ１２Ａ２のスナップショット（ハッシュ値など）を格納する。
【００２８】
本実施形態において、検証端末１Ａは、利用するブロックチェーンのプロトコルに従い、契約データ保管機能１１Ａ及び秘匿管理機能１１Ｂとして示されるスクリプトコードを実行する。契約データ保管機能１１Ａは、中間サーバ２Ａから契約データを含むトランザクションを受け取り、ブロックチェーンのプロトコルに従って、当該トランザクションを分散台帳１２Ａに記録する。契約データは、暗号化対象の項目を含む場合、中間サーバ２Ａで暗号化（秘匿化）される。このため、契約データ保管機能１１Ａが受信する契約データは、図２Ｂに示すように一部が暗号化されている。暗号文は文字列として扱われるため、暗号化されていることを明示的に示すフラグが追加されてよい。
【００２９】
秘匿管理機能１１Ｂは、中間サーバ２Aから秘匿化に必要な情報を含むトランザクションを受け取り、ブロックチェーンのプロトコルにしたがって、当該トランザクションを秘匿管理情報として分散台帳１２Ａに登録する。秘匿管理情報のデータ構造では、図４に例示するように、暗号化項目に対するアクセス権限を有する各ユーザのアカウント情報に対して、鍵交換に用いる公開鍵情報（範囲Ｒ４１参照）と、契約データのどの項目が暗号化されているかを示す情報（範囲Ｒ４２参照）と、その暗号化項目に対する共通鍵（前記公開鍵で暗号化済み）情報（範囲Ｒ４３参照）とが対応付けられる。ここでアカウントとは、ユーザを一意に特定するＩＤを示す。例えば図４に示す例では、組織１（org1）におけるユーザＡ（user A）のアカウント情報は、「org1.userA」などと示される。秘匿管理情報は、アカウントを識別するアイデンティティ情報（範囲Ｒ４４参照）（例えばＣＡ（認証局）発行の証明書又は署名検証用の公開鍵のハッシュなど）を含んでよい。検証端末１Ａは、アカウントとアイデンティティ情報とを照合することによって、トランザクションが、当該アカウントが発行したものか否かを検証することができる。このため、検証端末１Ａは、無権限のユーザによる、秘匿管理情報への不正な書き込みを防止することができる。
【００３０】
図５は、中間サーバ２Ａの機能ブロック図を示す。中間サーバ２Ｂ及び２Ｃのハードウェア構成は中間サーバ２Ａのそれと同様であるため、説明を省略する。
【００３１】
中間サーバ２Ａは、検証端末連携部２１と、鍵生成部２２と、契約データ処理部２３と、鍵登録部２４と、暗号・復号化処理部２５とを有する。これらの機能部は、中間サーバ２Ａのプロセッサによって実行される。
【００３２】
検証端末連携部２１は、トランザクション送信機能２１Ａと、分散台帳参照機能２１Ｂと、署名用鍵保管ＤＢ２１Ｃとを有する。トランザクション送信機能２１Ａは、各機能部から情報を受け取り、分散台帳１２Ａに記録するために必要なトランザクションを生成し、検証端末１Ａへ送信する。ブロックチェーンシステムにおけるトランザクションの生成にはアカウントごとに紐づけられた電子署名鍵が必要である。電子署名鍵は署名用鍵保管ＤＢ２１Ｃに保管される。分散台帳参照機能２１Ｂは、検証端末１Ａが保有する分散台帳１２Ａを参照する機能を持ち、各機能部からの要求に応じて分散台帳１２Ａ上の契約データ又は秘匿管理情報を取得する。
【００３３】
鍵生成部２２は、公開鍵・秘密鍵生成機能２２Ａと、共通鍵生成機能２２Ｂとを有する。公開鍵・秘密鍵生成機能２２Ａは、他の機能部の要求に応じて、公開鍵及び／又は秘密鍵を生成する。本実施形態の公開鍵・秘密鍵生成機能２２Ａは、ユーザのアカウントごとに公開鍵と秘密鍵とのペアを生成する。公開鍵・秘密鍵生成機能２２Ａは、公開鍵と秘密鍵とのペアを定期的に更新可能である。更新時において、中間サーバ２Ａは、更新後の公開鍵と秘密鍵とのペアを秘匿管理情報として分散台帳１２Ａへ再登録する。公開鍵及び秘密鍵のペアは、共通鍵を共有する際の鍵交換を行うために利用される。公開鍵・秘密鍵生成機能２２Ａは、公開鍵及び秘密鍵を生成するために、例えばＲＳＡ公開鍵暗号方式を用いる。公開鍵・秘密鍵生成機能２２Ａは、生成した鍵ペアを鍵登録部２４へ渡す。
【００３４】
共通鍵生成機能２２Ｂは、暗号・復号化処理部２５にて契約データの項目を暗号化又は復号化に用いる共通鍵を生成する。本実施形態では、暗号化・復号化の一例として、例えばAES−GCMなどの共通鍵暗号方式を利用する。すなわち、本実施形態では、暗号化と復号化とで用いる鍵は同一である。以下ではその鍵を共通鍵と称する。本実施形態の共通鍵生成機能２２Ｂは、データに含まれる暗号化対象項目ごとに共通鍵を生成する。例えば、項目Ａをユーザ端末３Ａ、ユーザ端末３Ｘ及びユーザ端末３Ｓのみが参照可能なようにする場合、共通鍵生成機能２２Ｂは、項目Ａ用の共通鍵を生成する。そして、共通鍵生成機能２２Ｂは、ユーザ端末３Ａの公開鍵で当該共通鍵を暗号化し、ユーザ端末３Ｘの公開鍵で当該共通鍵を暗号化し、ユーザ端末３Ｓの公開鍵で当該共通鍵を暗号化する。このとき、項目Ａが、共通鍵と対応する項目である。詳細は後述するが、下記実施形態１では、指定されたアカウントに共通鍵が既に配布されているときに契約データの登録要求を受けた場合には、その共通鍵が利用される。一方、下記実施形態２では、契約データの登録要求を受ける度に共通鍵が新たに生成される。
【００３５】
契約データ処理部２３は、契約データ登録機能２３Ａ及び契約データ取得機能２３Ｂを有する。
【００３６】
契約データ登録機能２３Ａは、契約データの一部の項目を暗号化することが指定された場合に、暗号・復号化処理部２５に暗号化を要求する。契約データ登録機能２３Ａは、暗号化の実施後に、契約データを検証端末連携部２１へ送信する。契約データは検証端末連携部２１を介してトランザクションとして発行され、ブロックチェーンシステムのプロセスに従い、分散台帳１２Ａに記録される。すなわち契約データ登録機能２３Ａは、契約データを、トランザクションを介して分散台帳１２Ａへ登録する。
【００３７】
契約データ取得機能２３Ｂは、取得した契約データの一部に暗号化された項目が存在する場合に、暗号・復号化処理部２５に復号化を要求する。復号化が実行されると、契約データ取得機能２３Ｂは契約データを要求元の端末に送信する。
【００３８】
鍵登録部２４は、公開鍵登録機能２４Ａ、秘密鍵保管機能２４Ｂ及び秘密鍵保管ＤＢ２４Ｃを有する。公開鍵登録機能２４Ａは、鍵生成部２２で生成した公開鍵を、検証端末１Ａを介して、分散台帳１２Ａに登録する。このとき公開鍵は、トランザクションを介して登録される。秘密鍵保管機能２４Ｂは、鍵生成部２２で生成した秘密鍵を、外部に漏洩しないよう、中間サーバ２Ａ内の秘密鍵保管ＤＢ２４Ｃに登録する。
【００３９】
暗号・復号化処理部２５は、契約データ処理部２３からの要求に応じて、暗号化又は復号化が要求された項目に対して暗号化又は復号化の処理を実行し、契約データ処理部２３に送信する。暗号・復号化処理部２５は、暗号化機能２５Ａ、復号化機能２５Ｂ及び、これらと連携する秘匿管理情報取得機能２５Ｃを有する。
【００４０】
暗号化機能２５Ａは、暗号化を要求するユーザ端末のアカウントを判定し、暗号化前の契約データと、秘匿管理情報取得機能２５Ｃが取得した秘匿管理情報とを受け付け、要求された項目を暗号化し、暗号化済みの項目を含む契約データを出力する。
【００４１】
復号化機能２５Ｂは、復号化を要求するユーザ端末のアカウントを判定し、暗号化項目を含む契約データと、秘匿管理情報取得機能２５Ｃが取得した秘匿管理情報とを受け付け、暗号化項目を復号し、復号された契約データを出力する。
【００４２】
秘匿管理情報取得機能２５Ｃは、検証端末１Ａから検証端末連携部２１を介して、指定されたアカウントに関する秘匿管理情報を取得し、暗号化機能２５Ａ又は復号化機能２５Ｂに渡す。
【００４３】
図６は、中間サーバ２Ａ、２Ｂ及び２Ｃと、それぞれに対応する検証端末１Ａ、１Ｂ及び１Ｃとが実行する、秘匿管理情報の構築処理を示す図である。検証端末１Ａ、１Ｂ及び１Ｃは、以下、３つを総称して検証端末１と称するが、それぞれの中間サーバから検証端末に対する処理は対応する検証端末を用いる。ここでは一例として、ユーザ端末３Ａが、共通鍵を配布する先としてユーザ端末３Ｘ及び３Ｓのみを指定し、且つ、暗号化される項目として、契約者（「contractors」）と金額（「amount」）を設定した場合を説明する。
【００４４】
中間サーバ２Ａは、ユーザ端末３Ａ、３Ｂ及び３Ｃのアカウントのそれぞれに対し、公開鍵及び当該公開鍵に対応する秘密鍵を生成し、生成した公開鍵を、検証端末連携部２１を介してトランザクションに含め、検証端末１へ送信する（ステップＳ１）。同様に、中間サーバ２Ｂ及び中間サーバ２Ｃは、それぞれユーザ端末３Ｘ、３Ｙ及び３Ｚ、並びに、３Ｓ、３Ｔ及び３Ｕに対し、公開鍵及び秘密鍵を個別に生成し、生成した公開鍵を、検証端末連携部２１を介してトランザクションに含め、検証端末１へ送信する（ステップＳ２及びステップＳ３）。
【００４５】
検証端末１は受信した公開鍵を含むトランザクションについて、ブロックチェーンシステムのプロトコルに従って合意し、秘匿管理機能１１Ｂを介して公開鍵を秘匿管理情報として分散台帳１２Ａに登録する（ステップＳ４）。範囲Ｒ５１に示すように、分散台帳１２Ａは、ユーザごとのアカウントと、公開鍵とを対応付けて記憶する。このような登録処理は、例えばアカウント作成時に実行可能である。
【００４６】
任意の時点で、中間サーバ２Ａは、ユーザ端末３Ａから送信された契約データのどの項目を共通鍵で暗号化するかを示す情報（すなわち、contract1とcontract2に対する契約者「contractors」と金額「amount」の項目）と、どのアカウントに共通鍵を配布し情報を公開するかを示す情報（すなわち、ユーザ端末３Ｘ「org2.userX」及びユーザ端末３Ｓ「org3.userS」）とを受信する（ステップＳ５）。
【００４７】
中間サーバ２Ａは、前記ユーザ端末３Ａにより暗号化を指定された各項目に対して、それぞれ異なる共通鍵を生成する（ステップＳ６）。具体的には、中間サーバ２Ａは、「contract1.contractors」、「contract2.contractors」、「contract1.amount」及び「contract2.amount」に対して異なる４つの共通鍵を生成する。
【００４８】
中間サーバ２Ａは、前記ユーザ端末３Ａにより指定された、共通鍵を配布する各アカウントの公開鍵を、検証端末１を介して、分散台帳上の秘匿管理情報より取得する。具体的には、中間サーバ２Ａは、ユーザ端末３Ｘ及びユーザ端末３Ｓの公開鍵を含む秘匿管理情報を、検証端末１に対して要求する（ステップＳ７）。また、中間サーバ２Ａは、要求元アカウントであるユーザ端末３Ａの公開鍵についても取得する。検証端末１は要求された秘匿管理情報を分散台帳１２Ａから取得し、中間サーバ２Ａへ送信する（ステップＳ８）。
【００４９】
中間サーバ２Ａは、各共通鍵を、取得した各公開鍵でそれぞれ暗号化する。具体的には、中間サーバ２Ａは、ある共通鍵に対して、ユーザ端末３Ａの公開鍵で暗号化したユーザ端末３Ａ用の共通鍵と、ユーザ端末３Ｘの公開鍵で暗号化したユーザ端末３Ｂ用の共通鍵と、ユーザ端末３Ｓの公開鍵で暗号化したユーザ端末３Ｂ用の共通鍵と、を生成する（ステップＳ９）。中間サーバ２Ａは、暗号化した共通鍵の配布先の各アカウントに対して、「暗号化項目を示す情報」と「その暗号化項目に対する共通鍵」とを含むトランザクションを生成し、検証端末１へ送信する（ステップＳ１０）。検証端末１は受信したトランザクションを、ブロックチェーンシステムのプロトコルに従い合意し、分散台帳１２Ａに秘匿管理情報として登録する（ステップＳ１１）。範囲Ｒ５２に示すように、契約者（「contractors」）と金額（「amount」）に対して、暗号化された共通鍵の情報が格納されている。このように、中間サーバ２Ａは秘匿管理情報を構築する。
【００５０】
図７は、ユーザ端末３Ａの機能ブロック図を示す。ユーザ端末３Ａは、制御部３１、表示部３２及び記憶部３３を有する。他のユーザ端末のハードウェア構成はユーザ端末３Ａのハードウェア構成と同一であるため、説明を省略する。
【００５１】
制御部３１は、一つ又は複数のプロセッサを含む。制御部３１は、制御手順を規定したプログラムを実行して、ユーザ端末３Ａの各機能部を制御する。
【００５２】
表示部３２は例えば、液晶ディスプレイ、有機ＥＬ（Ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイ、無機ＥＬディスプレイ等の表示デバイス等であるが、これらに限られない。本実施形態では一例として、表示部３２はタッチスクリーンとして構成され、ユーザの指又はスタイラスペンによる選択操作を受け付けることができる。選択操作は例えば、押下、タッチ、タップ、接触、近接等の操作である。
【００５３】
記憶部３３は半導体メモリ又は磁気メモリ等で構成されることができる。記憶部３３は、ログ、プログラム及びコンテンツ等の任意の情報を格納するＤＢを有する。記憶部３３は、ワークメモリとしても機能してよい。
【００５４】
運用ポリシーに応じた、暗号化及び復号化に関する例示的な実施形態が下記に示される。
【００５５】
［実施形態１］
実施形態１では、図６の処理により、指定されたアカウントに共通鍵が既に配布（分散台帳１２Ａに登録）されている前提で、契約データの暗号化および復号化を行う。すなわち、実施形態１では、中間サーバ２Ａは、配布済みの共通鍵を利用して暗号化および復号化を行う。このとき、分散台帳１２Ａ上に、既に項目の一部が暗号化された契約データが格納されている状態で、さらに契約データの暗号化要求をユーザ端末から受け付けた場合、分散台帳１２Ａの契約データは更新される。
【００５６】
図８Ａは、ユーザ端末からの要求に応じて、中間サーバ２Ａが実行するデータ暗号方法を示すフローチャートである。図８Ａに示すように、契約データ処理部２３は、ユーザ端末が送信した契約データを受信すると、暗号・復号化処理部２５へ、契約データの暗号化を要求する（ステップＳ４１）。
【００５７】
暗号・復号化処理部２５が契約データの暗号化の要求を受けると、暗号化機能２５Ａは、暗号化を要求したユーザ端末のアカウントを判定し、秘匿管理情報取得機能２５Ｃを介して、分散台帳１２Ａより当該アカウントに関する秘匿管理情報を取得する（ステップＳ４２）。暗号化機能２５Ａは、秘匿管理情報に含まれる、共通鍵を持つ契約データの項目（すなわち、暗号化が可能な契約データの項目）と、当該項目に対応する暗号化された共通鍵のペアを全て抽出する（ステップＳ４３）。暗号化が可能な契約データの項目は、例えば、図６の範囲Ｒ５２で、org1.userAが暗号化を要求したアカウントとすると、contract1.contractors、contract2.contractors、contract1.amount、及びcontract2.amountである。暗号化機能２５Ａは、当該項目とその共通鍵の情報を用いて、図８Ｂに示すように暗号化処理を行う（ステップＳ４４）。
【００５８】
図８Ｂに示すように、暗号化機能２５Ａは、抽出した共通鍵を用いて、暗号化可能な契約データの項目に対して暗号化を行う。各共通鍵は暗号化されている。そこで、暗号・復号化処理部２５は、秘密鍵保管ＤＢ２４Ｃに記憶される秘密鍵を用いて、各共通鍵を復号化する（ステップＳ５１）。
【００５９】
暗号化機能２５Ａは、暗号化可能な契約データの各項目に対して、復号化されたそれぞれの共通鍵で暗号化を実施する（ステップＳ５２）。これにより、契約データのうち、一部の項目が暗号化された契約データが出力される。暗号・復号化処理部２５は、一部の項目が暗号化された契約データを、契約データ処理部２３へ送信する（ステップＳ５３）。
【００６０】
図８Ａに戻り、契約データ処理部２３は、一部の項目が暗号化された契約データを検証端末連携部２１へ送信し、検証端末連携部２１は当該契約データをトランザクションに含めて検証端末１Ａに送信する（ステップＳ４５）。検証端末１Ａはブロックチェーンシステムのプロトコルに従い、当該トランザクションに関して合意し、一部の項目が暗号化された契約データを分散台帳へ登録する。
【００６１】
図９は、中間サーバ２Ｂ、２Ｃが実行するデータ復号方法を示すフローチャートである。詳細は次の通りである。ここでは、暗号化項目の復号化が許可された、ユーザ端末３Ｘ又はユーザ端末３Ｓから復号化要求を受信した場合を説明する。なお、暗号・復号化処理部２５は、復号化が許可されていないユーザ端末から復号化要求を受信しても、下記の復号化を実行せず、エラー画面又は暗号化された項目が空白に表示される画面を当該ユーザ端末へ返す。
【００６２】
契約データ処理部２３は、任意のユーザ端末から、契約データの暗号化項目に対する復号化要求を受信する。復号化要求を受信すると、契約データ処理部２３は、暗号・復号化処理部２５へ復号化を要求する（ステップＳ６１）。
【００６３】
暗号・復号化処理部２５の秘匿管理情報取得機能２５Ｃは、分散台帳１２Ａから秘匿管理情報及び契約データを取得する（ステップＳ６２）。秘匿管理情報取得機能２５Ｃは、復号化を要求するアカウントに関して、共通鍵が配布された暗号化項目と、それに対応する共通鍵とのペアの一覧を全て取得する（ステップＳ６３）。ここで秘匿管理情報に含まれる上記共通鍵は、上記アカウントの公開鍵で暗号化されている。そこで、暗号・復号化処理部２５は、秘密鍵保管ＤＢ２４Ｃから上記アカウントの秘密鍵を取得し（ステップＳ６４）、当該秘密鍵を用いて、暗号化された共通鍵を全て復号化する（ステップＳ６５）。
【００６４】
暗号・復号化処理部２５は、暗号化項目が含まれる契約データについて、上記全ての復号化した共通鍵を用いて、暗号化された全ての項目を復号化する（ステップＳ６６）。暗号・復号化処理部２５は、復号化可能な全ての暗号化項目と共通鍵とに対し、ステップＳ６５からステップＳ６６を実行したと判定すると（ステップＳ６７のＹｅｓ）、暗号化項目が復号化された契約データを契約データ処理部２３に送信する（ステップＳ６８）。契約データ処理部２３の契約データ取得機能２３Ｂは、契約データを取得すると、復号化を要求するアカウントに対し、当該契約データを送信する。これにより、ユーザ端末３Ｘ又はユーザ端末３Ｓの表示部は、復号化された契約データを表示する。このため、ユーザは当該契約データを閲覧することができる。
【００６５】
本実施形態によれば、ブロックチェーンを用いることで、中央集権的なサーバを用いずに契約データを暗号化及び復号化することができる。このため、権限分散性を保ちながら、契約データの暗号化及び復号化を実行することが可能である。
【００６６】
また、本実施形態によれば、公開鍵は、暗号化対象項目に対するアクセス権限を有するユーザのアカウントごとに別々に生成される。このため、ユーザ自身が契約データの暗号化項目及び公開範囲を柔軟に指定することができる。換言すれば、アクセス権限のないユーザは、閲覧権限のないデータを盗み見ることができない。
【００６７】
また、本実施形態によれば、秘匿管理情報は分散台帳１２Ａ上で管理されるため、秘匿化のための手続き又は鍵の管理の煩雑さを軽減し、運用上のコスト及びセキュリティリスクを低減することができる。
【００６８】
また、本実施形態によれば、秘匿管理情報はトランザクションを介して分散台帳１２Ａに登録される。契約データの秘匿化は分散台帳１２Ａに登録された秘匿管理情報を取得して行われる。このため、秘匿管理情報への攻撃に対する耐性を高めることができる。
【００６９】
また、本実施形態によれば、共通鍵は、契約データに含まれる暗号化対象項目ごとに生成される。このため、どの項目を暗号化するかを柔軟に指定することができる。
【００７０】
また、本実施形態によれば、共通鍵が、項目に対するアクセス権限を有するユーザのアカウントへ配布済み（分散台帳１２Ａに登録済み）のとき、中間サーバ２Ａは、当該配布済みの共通鍵を利用して共通鍵と対応する項目を暗号化する。このため、契約データを暗号化する際に、新たに共通鍵を登録する処理が不要となり、中間サーバ２Ａの処理負荷を低減することができる。
【００７１】
また、本実施形態によれば、秘匿化システムＳはブロックチェーン上で鍵交換を行うため、誰にどの項目の参照を許可したか、誰に共通鍵を渡したか、等の過去の鍵交換履歴が記録として残る。更に外部サーバでの鍵のやり取りに比べ、鍵の改ざんが困難であり且つ証拠性が高い。
【００７２】
上述の実施形態は代表的な例として説明されている。しかし本発明の趣旨及び範囲内で、多くの変更及び置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、特許請求の範囲から逸脱することなく、種々の変形又は変更が可能である。例えば、実施形態の構成図に記載の複数の構成ブロックを１つに組み合わせたり、あるいは１つの構成ブロックを分割したりすることが可能である。
【００７３】
［実施形態２］
上記実施形態１では、中間サーバ２Ａは、秘匿管理情報上の共通鍵を用いて、指定された項目を暗号化して契約データを登録する。一方で実施形態２では、中間サーバ２Ａは、契約データの登録の要求を受ける度に常に新しい共通鍵を生成し、指定された項目を暗号化して契約データを登録する。実施形態２の詳細は次の通りである。実施形態１と実施形態２とで重複する説明は省略する。
【００７４】
契約データ処理部２３は、ユーザ端末から契約データの登録要求を受信すると、契約データのどの項目を暗号化するかと、どのアカウントに共通鍵を配布するかを指定する。指定内容は、ユーザ端末３Ａによって入力されてよいし、設定ファイルによって事前に設定されてもよい。鍵生成部２２は、契約データの登録要求に応じて、新たに共通鍵を生成する。なお、これらの処理は、図６のステップＳ５およびＳ６に相当する。図６のステップＳ１〜Ｓ４の処理は、事前に行われているものとする。
【００７５】
中間サーバ２Ａは、図６に示す手法で秘匿管理情報を構築する。具体的には中間サーバ２Ａは、図６に示すステップＳ７からステップＳ１１を実行するが、内容が重複するためここでの説明は省略する。
【００７６】
暗号化機能２５Ａは、秘匿管理情報取得機能２５Ｃを介して、分散台帳１２Ａより、秘匿管理情報を取得する。暗号化機能２５Ａは、秘匿管理情報に含まれる、新たに生成された共通鍵を用いて、契約データの一部の項目を暗号化する。契約データ処理部２３は、一部の項目が暗号化された契約データを検証端末連携部２１へ送信し、トランザクションに含めて検証端末１Ａへ送信する。
【００７７】
［実施形態３］
実施形態３において中間サーバ２Ａは、項目の一部が暗号化された契約データとその共通鍵を登録したとき、当該契約データの公開対象であるユーザ端末に通知してよい。また、契約データを書き込んだユーザが共通鍵を変更したとき、中間サーバ２Ａはその旨を、契約データの公開対象であるユーザ端末へ通知してよい。
【００７８】
検証端末、中間サーバ又はユーザ端末をコンピュータで構成する場合、各機能を実現する処理内容を記述したプログラムを、当該コンピュータの内部又は外部の記憶手段に格納しておき、当該コンピュータの中央演算処理装置（ＣＰＵ）によってこのプログラムを読み出して実行させることで実現することができる。また、このようなプログラムは、例えばＤＶＤ又はＣＤ−ＲＯＭ等の可搬型記録媒体の販売、譲渡、貸与等により流通させることができる。また、そのようなプログラムを、例えばネットワーク上にあるサーバの記憶手段に記憶しておき、ネットワークを介してサーバから他のコンピュータにそのプログラムを転送することにより、流通させることができる。また、そのようなプログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム又はサーバから転送されたプログラムを、一旦、自己の記憶手段に格納することができる。また、このプログラムの別の実施態様として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよい。更に、このコンピュータにサーバからプログラムが転送される度に、コンピュータは、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。
【符号の説明】
【００７９】
Ｓ  秘匿化システム
１Ａ、１Ｂ、１Ｃ  検証端末
１１    制御部
１１Ａ  契約データ保管機能
１１Ｂ  秘匿管理機能
１２    記憶部
１２Ａ  分散台帳
１２Ａ１  データストア
１２Ａ２  ステートＤＢ
２Ａ、２Ｂ、２Ｃ  中間サーバ
２１    検証端末連携部
２１Ａ  トランザクション送信機能
２１Ｂ  分散台帳参照機能
２１Ｃ  署名用鍵保管ＤＢ
２２    鍵生成部
２２Ａ  公開鍵・秘密鍵生成機能
２２Ｂ  共通鍵生成機能
２３    契約データ処理部
２３Ａ  契約データ登録機能
２３Ｂ  契約データ取得機能
２４    鍵登録部
２４Ａ  公開鍵登録機能
２４Ｂ  秘密鍵保管機能
２４Ｃ  秘密鍵保管ＤＢ
２５    暗号・復号化処理部
２５Ａ  暗号化機能
２５Ｂ  復号化機能
２５Ｃ  秘匿管理情報取得機能
３Ａ、３Ｂ、３Ｃ、３Ｘ、３Ｙ、３Ｚ、３Ｓ、３Ｔ、３Ｕ  ユーザ端末
３１    制御部
３２    表示部
３３    記憶部
【図１】
2019082442.tif 000003
【図２Ａ】
2019082442.tif 000004
【図２Ｂ】
2019082442.tif 000005
【図３】
2019082442.tif 000006
【図４】
2019082442.tif 000007
【図５】
2019082442.tif 000008
【図６】
2019082442.tif 000009
【図７】
2019082442.tif 000010
【図８Ａ】
2019082442.tif 000011
【図８Ｂ】
2019082442.tif 000012
【図９】
2019082442.tif 000013
【国際調査報告】
2019082442.tif 000014
2019082442.tif 000015
2019082442.tif 000016