【文献】
大東 俊博ほか,暗号文ポリシー属性ベース暗号を利用したファイル名暗号化ファイル共有サービスの実装と性能評価,情報処理学会論文誌,[online],2014年 3月15日,Vol. 55, No. 3,pp. 1126-1139
【文献】
浅川 直輝ほか,ブロックチェーン過熱 part3 4社が試す潜在能力,日経コンピュータ,2016年 7月 7日,No. 916,pp. 32-35
(58)【調査した分野】(Int.Cl.,DB名)
ピア・ツー・ピア・ネットワークで接続された複数のコンピュータからなる複数のノードを含んで構成され、これらの複数のノードの各々が同一内容のデータを共有した状態で記録するための分散型台帳を有する分散型台帳システムであって、
前記複数のノードの各々は、
前記分散型台帳として、ユーザにより登録されたレコード、属性ベース暗号用の子属性秘密鍵を含む各ユーザのアカウント情報、属性ベース暗号に関連する処理用のプログラム、および属性ベース暗号用の親属性公開鍵を記憶する分散型台帳記憶手段と、
この分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるレコード記録手段、レコード暗号化手段、レコード取得手段、およびレコード復号手段とを備え、
前記レコード記録手段は、
ユーザにより登録されるレコードおよび当該ユーザによる前記レコードの閲覧権限を指定するポリシーをユーザ端末からネットワークを介して受信するとともに、前記レコード暗号化手段により暗号化された前記レコードを、前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記レコード暗号化手段は、
前記レコード記録手段により受信した前記レコードおよび前記ポリシー、並びに前記分散型台帳記憶手段に記憶された前記親属性公開鍵を用いて、前記レコードの暗号化処理を実行する構成とされ、
前記レコード取得手段は、
ユーザ端末からユーザのアカウント鍵とともにネットワークを介して送信されてくる当該ユーザによるレコードの閲覧要求を受信して前記分散型台帳記憶手段から閲覧要求に係る前記レコードを取得するとともに、前記レコード復号手段により復号された前記レコードの表示用データを、ネットワークを介して前記ユーザ端末に送信する処理を実行する構成とされ、
前記レコード復号手段は、
閲覧要求を行ったユーザの前記アカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記子属性秘密鍵を取得し、取得した前記子属性秘密鍵を用いて、前記レコード取得手段により取得した前記レコードの復号処理を実行する構成とされている
ことを特徴とする分散型台帳システム。
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、情報の秘匿化を図るために、前述した取引所、清算機関、振替機関といった証券・金融市場インフラの運営体に認証局の役割を担わせる仕組みを構築するとなると、その際に必要となる認証局は、中央集権的な要素が強いので、DLTの長所である非中央集権の要素が薄まってしまうという問題がある。
【0010】
また、DLTを形成するネットワークの参加者は、様々な属性を有している場合があるので、情報の秘匿化を図る際には、それぞれの属性に応じて各参加者に情報の参照権限を付与する仕組みの構築が望まれる。この際、参加者(情報閲覧者)の属性は固定的であるとは限らず、変更されることもあるので、その属性変更に対応可能な仕組みの構築が望まれる場合もある。しかし、情報登録後の変更は不可であるというDLTの特性があり、そのような特性を有するDLTにおいて、属性変更に対応可能な仕組みを構築することになるので、一見すると、相容れない組合せの実現を目指すことになる。
【0011】
以上より、DLTの長所である非中央集権の要素を薄めることなく、分散型台帳に記録される情報の秘匿化を図ることができる仕組みを構築することが望まれ、さらには、情報の秘匿化を図る際に、ネットワークの参加者の属性変化に対応可能な仕組みとすることが望まれる。
【0012】
本発明の目的は、中央集権的な要素が強くなく、かつ、記録される情報の秘匿化を図ることができる分散型台帳システムおよびプログラムを提供するところにある。
【課題を解決するための手段】
【0013】
本発明は、ピア・ツー・ピア・ネットワークで接続された複数のコンピュータからなる複数のノードを含んで構成され、これらの複数のノードの各々が同一内容のデータを共有した状態で記録するための分散型台帳を有する分散型台帳システムであって、
複数のノードの各々は、
分散型台帳として、ユーザにより登録されたレコード、属性ベース暗号用の子属性秘密鍵を含む各ユーザのアカウント情報、属性ベース暗号に関連する処理用のプログラム、および属性ベース暗号用の親属性公開鍵を記憶する分散型台帳記憶手段と、
この分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるレコード記録手段、レコード暗号化手段、レコード取得手段、およびレコード復号手段とを備え、
レコード記録手段は、
ユーザにより登録されるレコードおよび当該ユーザによるレコードの閲覧権限を指定するポリシーをユーザ端末からネットワークを介して受信するとともに、レコード暗号化手段により暗号化されたレコードを、分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
レコード暗号化手段は、
レコード記録手段により受信したレコードおよびポリシー、並びに分散型台帳記憶手段に記憶された親属性公開鍵を用いて、レコードの暗号化処理を実行する構成とされ、
レコード取得手段は、
ユーザ端末からユーザのアカウント鍵とともにネットワークを介して送信されてくる当該ユーザによるレコードの閲覧要求を受信して分散型台帳記憶手段から閲覧要求に係るレコードを取得するとともに、レコード復号手段により復号されたレコードの表示用データを、ネットワークを介してユーザ端末に送信する処理を実行する構成とされ、
レコード復号手段は、
閲覧要求を行ったユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザの子属性秘密鍵を取得し、取得した子属性秘密鍵を用いて、レコード取得手段により取得したレコードの復号処理を実行する構成とされていることを特徴とするものである。
【0014】
このような本発明の分散型台帳システムにおいては、ユーザにより登録されるレコードは、分散型台帳に記録され、複数のノードで共有された状態で保存されるので、取引についての高い透明性および過去の取引データの改ざんの困難性は担保されているため、DLTの持つ基本的な特徴はそのまま活かされている。
【0015】
また、本発明では、情報の秘匿化を図るために、DLTと属性ベース暗号とを組み合わせているが、前述したDLTと公開鍵暗号方式との組合せの場合(取引所、清算機関、振替機関といった証券・金融市場インフラの運営体が認証局となり、ネットワークへの参加資格を有する各金融機関に対して電子証明書を発行する仕組みの場合)のように、取引データの登録(暗号化)および参照(復号)の場面においてDLTと公開鍵暗号方式とを組み合わせるだけの単純な組合せではない。すなわち、本発明では、属性ベース暗号を実現するための機能の多くを分散型台帳内に組み込んでいる点に特徴がある。より具体的には、属性ベース暗号用の子属性秘密鍵を含む各ユーザのアカウント情報、属性ベース暗号に関連する処理用のプログラム、および属性ベース暗号用の親属性公開鍵が、分散型台帳に組み込まれている。このため、これらのアカウント情報(子属性秘密鍵を含む。)、プログラム、および親属性公開鍵を、改ざんできない形で複数のノードに保持させることが可能となる。
【0016】
従って、各ユーザのアカウント情報(子属性秘密鍵を含む。)を、すべて各ユーザのアカウント鍵で暗号化することにより、属性ベース暗号を実現するための大部分の機能を、分散型台帳内に改ざんできない形で、かつ、秘匿すべきアカウント情報については秘匿した状態で組み込むことが可能となるので、分散型台帳の自律分散的なアカウント管理の仕組みの中に属性ベース暗号用の属性情報を組み込むことが可能となる。
【0017】
このため、管理者による改ざんの脅威がない状態での属性管理を実現することができるうえ、中央集権的な要素を極力排除するというDLTの特性を活かすことができ、これらにより前記目的が達成される。
【0018】
<親属性公開鍵および親属性秘密鍵の生成、親属性秘密鍵の記憶、並びに子属性秘密鍵の生成の詳細>
【0019】
また、親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理、親属性秘密鍵の記憶処理(保存場所)、並びに子属性秘密鍵の生成処理の詳細構成については、以下の3通り(L,M,N)×3通り(P,Q,R)=9通りのケースがある。
【0020】
ケースLでは、始動ノードが親属性鍵生成手段を備え(従って、始動ノードは、他の一般のノードに対し、親属性鍵生成手段が追加されていることになる。)、始動ノードで親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理が行われる。
【0021】
ケースMでは、始動ノードはなく、分散型台帳生成者端末で親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理が行われる。
【0022】
ケースNでは、親属性鍵生成手段を実現するためのプログラムも、属性ベース暗号に関連する処理用のプログラムとして、台帳型台帳に記憶される。従って、始動ノードはなく、すべてのノードが親属性鍵生成手段を備えることになるが、実際に親属性鍵生成手段による処理を実行するのは、1ノードでよい。
【0023】
ケースPでは、親属性秘密鍵は、管理装置に記憶される。子属性秘密鍵は、ノードで生成される。
【0024】
ケースQでは、親属性秘密鍵は、管理装置に記憶される。子属性秘密鍵は、管理装置で生成される。
【0025】
ケースRでは、親属性秘密鍵は、ノードの分散型台帳に記憶される。子属性秘密鍵は、ノードで生成される。
【0026】
以上より、ケースP,Rでは、子属性秘密鍵は、ノードで生成されるので、その分だけ中央集権的な要素が少なくなっている。ケースRでは、親属性秘密鍵は、ノードの分散型台帳に記憶されるので、その分だけ中央集権的な要素が少なくなっている。
【0027】
(ケースL+P)
【0028】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードには、少なくとも1つの始動ノードが含まれ、
始動ノードは、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【0029】
(ケースL+Q)
【0030】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードには、少なくとも1つの始動ノードが含まれ、
始動ノードは、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段と、子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段とを備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得し、取得した属性リストをネットワークを介して管理装置へ送信する処理を実行するとともに、管理装置からネットワークを介して送信されてくる子属性秘密鍵を受信し、受信した子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
アカウント生成手段によりネットワークを介して送信されてくる当該ユーザの属性リストを受信し、親属性秘密鍵記憶手段に記憶された親属性秘密鍵および受信した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【0031】
(ケースL+R)
【0032】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードには、少なくとも1つの始動ノードが含まれ、
始動ノードは、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵を管理装置を操作する管理担当者のアカウント情報として分散型台帳記憶手段に記憶させるための処理を実行する親属性鍵生成手段を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して管理担当者のアカウント鍵を取得し、取得したアカウント鍵を用いて、分散型台帳記憶手段に記憶された親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【0033】
(ケースM+P)
【0034】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の分散型台帳生成者端末および管理装置を備え、
分散型台帳生成者端末は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるためにネットワークを介して複数のノードのいずれかに送信する処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【0035】
(ケースM+Q)
【0036】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の分散型台帳生成者端末および管理装置を備え、
分散型台帳生成者端末は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるためにネットワークを介して複数のノードのいずれかに送信する処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段と、子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段とを備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得し、取得した属性リストをネットワークを介して管理装置へ送信する処理を実行するとともに、管理装置からネットワークを介して送信されてくる子属性秘密鍵を受信し、受信した子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
アカウント生成手段によりネットワークを介して送信されてくる当該ユーザの属性リストを受信し、親属性秘密鍵記憶手段に記憶された親属性秘密鍵および受信した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【0037】
(ケースM+R)
【0038】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の分散型台帳生成者端末および管理装置を備え、
分散型台帳生成者端末は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるためにネットワークを介して複数のノードのいずれかに送信する処理を実行するとともに、生成した親属性秘密鍵を管理装置を操作する管理担当者のアカウント情報として分散型台帳記憶手段に記憶させるためにネットワークを介して複数のノードのいずれか若しくは管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して管理担当者のアカウント鍵を取得し、取得したアカウント鍵を用いて、分散型台帳記憶手段に記憶された親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【0039】
ここで、「分散型台帳生成者端末」に設けられた「親属性鍵生成手段」により実行される「生成した親属性秘密鍵を管理装置を操作する管理担当者のアカウント情報として分散型台帳記憶手段に記憶させるためにネットワークを介して複数のノードのいずれか若しくは管理装置へ送信する処理」における「若しくは管理装置へ送信」とは、生成した親属性秘密鍵を、一旦、管理装置へ送信し、管理装置から複数のノードのいずれかに送信する場合である。
【0040】
(ケースN+P)
【0041】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段、子属性秘密鍵生成手段、および親属性鍵生成手段を備え、
親属性鍵生成手段は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する構成とされ、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【0042】
(ケースN+Q)
【0043】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および親属性鍵生成手段を備え、
親属性鍵生成手段は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する構成とされ、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段と、子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段とを備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得し、取得した属性リストをネットワークを介して管理装置へ送信する処理を実行するとともに、管理装置からネットワークを介して送信されてくる子属性秘密鍵を受信し、受信した子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
アカウント生成手段によりネットワークを介して送信されてくる当該ユーザの属性リストを受信し、親属性秘密鍵記憶手段に記憶された親属性秘密鍵および受信した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【0044】
(ケースN+R)
【0045】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段、子属性秘密鍵生成手段、および親属性鍵生成手段を備え、
親属性鍵生成手段は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵を管理装置を操作する管理担当者のアカウント情報として分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して管理担当者のアカウント鍵を取得し、取得したアカウント鍵を用いて、分散型台帳記憶手段に記憶された親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【0046】
<属性の変更>
【0047】
以上に述べた分散型台帳システムにおいて、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現される属性追加・削除手段を備え、
属性追加・削除手段は、
属性変更依頼を行うユーザの操作するユーザ端末からネットワークを介して送信されてくる属性変更依頼を行うユーザのアカウント鍵を受信し、受信した属性変更依頼を行うユーザのアカウント鍵を用いて、属性変更依頼を行うユーザのアカウント情報に含まれる属性識別子を分散型台帳記憶手段から取得するとともに、属性変更対象のユーザの操作するユーザ端末からネットワークを介して送信されてくる属性変更対象のユーザのアカウント鍵を受信し、受信した属性変更対象のユーザのアカウント鍵を用いて、属性変更対象のユーザのアカウント情報に含まれる属性リストを分散型台帳記憶手段から取得し、取得した属性変更対象のユーザの属性リストおよび属性変更依頼を行うユーザの属性識別子を用いて、属性リストに属性識別子を追加した属性若しくは属性リストから属性識別子を削除した属性を埋め込んだ新しい子属性秘密鍵を生成し、生成した新しい子属性秘密鍵、および属性リストに属性識別子を追加した更新後の属性リスト若しくは属性リストから属性識別子を削除した更新後の属性リストを、属性変更対象のユーザのアカウント情報として分散型台帳記憶手段に記憶させるための処理を実行する構成とされていることが望ましい。
【0048】
このように属性追加・削除手段を設け、属性変更に対応可能な構成とした場合には、属性変更(追加または削除)の際に、属性変更依頼を行うユーザおよび属性変更対象のユーザのアカウント鍵をそれぞれのユーザ端末から受信するようになっているので、これらの双方のユーザに自律的に承認を取り、その両者のアカウント鍵を使ってその後の属性変更に係る処理を自律的に行うことが可能となる。
【0049】
また、属性識別子および属性リストというパラメータを用意し、これらを各ユーザのアカウント情報として分散型台帳に暗号化して記憶させておくので、これらのパラメータを使って自律的な属性情報の更新が可能となる。通常、これらの属性情報は、管理者がリストとして保有しているものであるが、本発明では、分散型台帳上に暗号化して持たせることで、管理者の介在を不要とすることができる。
【0050】
<使用可能な子属性秘密鍵の制御によるレコードの閲覧制御>
【0051】
そして、上述したように属性追加・削除手段を設け、属性変更に対応可能な構成とした場合において、
レコード復号手段は、
閲覧要求を行ったユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザの子属性秘密鍵を取得する際には、閲覧要求に係るレコードが分散型台帳記憶手段に記憶された時点以前に分散型台帳記憶手段に記憶された子属性秘密鍵のうちの最も新しい子属性秘密鍵を取得して復号処理を実行する構成としてもよい。
【0052】
このようにレコード復号手段による復号処理の際に、使用可能な子属性秘密鍵を制御する構成とした場合には、属性追加・削除手段による属性変更が行われ、新しい子属性秘密鍵が生成されたときに、その新しい子属性秘密鍵は、それ以降に登録されるレコードの閲覧にしか用いることができず、それよりも前に登録された過去のレコードについては、その新しい子属性秘密鍵を用いることができないようにする制御が可能となる。従って、新しい子属性秘密鍵が生成されても、それよりも前の時点で閲覧することができなかった過去のレコードについては、依然として閲覧することができないことになる。なお、このような閲覧制御を行わない場合は、新しい子属性秘密鍵が生成されると、それよりも前の時点で閲覧することができなかった過去のレコードについて、閲覧することができるようになる場合が生じる。
【0053】
<親属性公開鍵および親属性秘密鍵の定期的な更新>
【0054】
以上に述べた分散型台帳システムにおいて、
親属性鍵生成手段は、
親属性公開鍵および親属性秘密鍵を生成する処理を定期的に繰り返す構成とされ、
分散型台帳記憶手段に記憶されている親属性公開鍵は、
親属性鍵生成手段により定期的に生成される親属性公開鍵により定期的に更新され、
分散型台帳記憶手段に記憶されている全てのユーザの子属性秘密鍵は、
親属性鍵生成手段により定期的に生成される親属性秘密鍵および分散型台帳記憶手段に記憶されている各ユーザのアカウント情報に含まれる属性リストを用いて生成される子属性秘密鍵により定期的に更新されるようにしてもよい。
【0055】
このように親属性公開鍵および親属性秘密鍵、並びに子属性秘密鍵を定期的に更新する構成とした場合には、万一、鍵に関する情報が漏れてしまったときでも、漏れた情報は、これらの鍵の更新後には使用できなくなるので、情報の秘匿性を高めることが可能となる。
【0056】
<プログラムの発明>
【0057】
また、本発明のプログラムは、以上に述べた分散型台帳システムとして、コンピュータを機能させるためのものである。
【0058】
さらに、本発明のプログラムは、以上に述べた分散型台帳システムを構成するノードとして、コンピュータを機能させるためのものである。
【0059】
なお、以上に述べたプログラムまたはその一部は、例えば、光磁気ディスク(MO)、コンパクトディスク(CD)、デジタル・バーサタイル・ディスク(DVD)、フレキシブルディスク(FD)、磁気テープ、読出し専用メモリ(ROM)、電気的消去および書換可能な読出し専用メモリ(EEPROM)、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、ハードディスク、ソリッドステートドライブ(SSD)、フラッシュディスク等の記録媒体に記録して保存や流通等させることが可能であるとともに、例えば、LAN、MAN、WAN、インターネット、イントラネット、エクストラネット等の有線ネットワーク、あるいは無線通信ネットワーク、さらにはこれらの組合せ等の伝送媒体を用いて伝送することが可能であり、また、搬送波に載せて搬送することも可能である。さらに、以上に述べたプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。
【発明の効果】
【0060】
以上に述べたように本発明によれば、DLTと属性ベース暗号とを組み合わせるにあたり、属性ベース暗号を実現するための大部分の機能を、分散型台帳内に改ざんできない形で、かつ、秘匿すべきアカウント情報については秘匿した状態で組み込むので、中央集権的な要素を少なくし、管理者による改ざんの脅威がない状態での属性管理を実現しながら、分散型台帳に記録される情報の秘匿化を図ることができるという効果がある。
【発明を実施するための形態】
【0062】
以下に本発明の一実施形態について図面を参照して説明する。
図1には、本実施形態の分散型台帳システム10の全体構成が示されている。
図2には、始動ノード20の構成が示され、
図3には、一般のノード30(始動ノード20以外のノードX,Y,Z)の構成が示されている。また、
図4には、管理装置50の構成が示され、
図5には、分散型台帳記憶手段23,33に記憶された複数のブロックの構成が示され、
図6には、ブロックに含まれるアカウント情報の構成が示されている。さらに、
図7は、ブロックの追加による情報の更新の説明図である。そして、
図8には、親属性鍵(親属性公開鍵および親属性秘密鍵)の生成時の処理の流れ、
図9には、子属性秘密鍵の生成時の処理の流れ、
図10には、レコードの登録時および閲覧時の処理の流れ、
図11には、属性追加時の処理の流れが、それぞれフローチャートで示されている。
【0063】
なお、本実施形態の分散型台帳システム10は、親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理については、前述したケースL,M,NのうちのケースLを採用し、親属性秘密鍵の記憶処理(保存場所)、および子属性秘密鍵の生成処理については、前述したケースP,Q,RのうちのケースPを採用し、従って、(ケースL+P)の構成とするが、本発明の分散型台帳システムは、(ケースL+P)の構成に限定されるものではない。
【0064】
<分散型台帳システム10の全体構成>
【0065】
図1において、分散型台帳システム10は、1つまたは複数の始動ノード20と、この始動ノード20以外の1つまたは複数の一般のノード30と、ユーザ(個人や企業)が操作する1つまたは複数のユーザ端末40と、管理担当者M2(分散型台帳生成者M1と兼任でもよい。)が運営・管理する管理装置50と、分散型台帳生成者M1(管理担当者M2と兼任でもよい。)が操作する分散型台帳生成者端末60とを備え、これらがネットワーク1で接続されて構成されている。
【0066】
ここで、ネットワーク1のうちの
図1中の太線部分は、P2P(ピア・ツー・ピア)ネットワークであり、例えばインターネットや通信事業者が提供する各種のサービス網等の公衆ネットワークを使って形成された仮想的なネットワーク(インターネット上にVPN(バーチャル・プライベート・ネットワーク)を用いて構築されたイントラネットを含む。)などである。従って、始動ノード20およびそれ以外の一般のノード30(本実施形態では、
図1に示すように、一例として、3つのノードX,Y,Zとしているが、3つに限定されるものではない。)は、P2P接続されている。
【0067】
また、ユーザ端末40や分散型台帳生成者端末60は、ネットワーク1を介して各ノード20,30(始動ノード20やノードX,Y,Z)に接続可能となっている。さらに、管理装置50は、ネットワーク1を介して各ノード20,30と接続されている。
【0068】
具体的には、証券・金融市場における取引に適用する場合には、例えば、各ノード20,30(始動ノード20やノードX,Y,Z)は、証券会社や銀行等の各金融機関の運営・管理するサーバであり、ユーザ端末40は、顧客(投資家)や発行体(株式の発行会社等)の操作する端末装置である。また、管理装置50や分散型台帳生成者端末60は、取引所、清算機関、振替機関等の証券・金融市場インフラの運営体の運営・管理するサーバ、あるいはそれらの運営体の担当者の操作する端末装置である。
【0070】
始動ノード20は、コンピュータにより構成され、
図2に示すように、分散型台帳の管理に必要な各種の処理を実行する処理手段21と、この処理手段21による処理に必要なプログラムを記憶するプログラム記憶手段22と、処理手段21による処理に必要な各種のデータ(プログラムを含む。)および処理で得られた各種のデータを記憶する分散型台帳記憶手段23とを備えている。
【0071】
この始動ノード20は、分散型台帳システム10に少なくとも1つ設けられていればよく、従って、複数の始動ノード20がある場合には、そのうちの1つの始動ノード20が親属性鍵の生成処理(
図8参照)を行えばよく、他の始動ノード20は、親属性鍵の生成処理を行わなくてもよいので、この場合の他の始動ノード20は、一般のノード30と同じ役割を果たすだけとなる。このため、親属性鍵の生成機能を有しない一般のノード30(ノードX,Y,Z)を設けずに、すべてのノードを、始動ノード20としてもよい。換言すれば、始動ノード20は、一般のノード30(ノードX,Y,Z)の全ての機能を備えているので、一般のノード30と同じ役割を果たすことができる。
【0072】
処理手段21は、台帳管理手段21Aと、アカウント生成手段21Bと、属性追加・削除手段21Cと、レコード記録手段21Dと、レコード暗号化手段21Eと、レコード取得手段21Fと、レコード復号手段21Gと、子属性秘密鍵生成手段21Hと、親属性鍵生成手段21Jとを含んで構成されている。
【0073】
このうち、台帳管理手段21Aおよび親属性鍵生成手段21Jは、始動ノード20を構成するコンピュータの内部に設けられた中央演算処理装置(CPU)、このCPUの動作手順を規定するプログラム(プログラム記憶手段22に記憶された台帳管理プログラムおよび親属性鍵生成プログラム)、並びに、主メモリやキャッシュメモリ等により実現される。
【0074】
一方、アカウント生成手段21B、属性追加・削除手段21C、レコード記録手段21D、レコード暗号化手段21E、レコード取得手段21F、レコード復号手段21G、および子属性秘密鍵生成手段21Hは、プログラム記憶手段22に記憶されたプログラムではなく、分散型台帳記憶手段23に記憶された「属性ベース暗号に関連する各種処理用のプログラム」と、CPU、主メモリやキャッシュメモリ等とにより実現される。なお、属性ベース暗号に関連する各種処理用のプログラムは、プログラム記憶手段22にも記憶されているが、各手段21B〜21Hによる処理の実行時には、分散型台帳記憶手段23に記憶されたプログラムが用いられる。
【0075】
台帳管理手段21Aは、分散型台帳の基本的な処理(属性ベース暗号に直接関連しない処理)を実行するものである。本実施形態では、分散型台帳は、一例としてブロックチェーンとするので、台帳管理手段21Aは、トランザクションデータのレコード等を格納するブロックを生成するための処理と、生成したブロックを自分(自ノード)を含む参加するノード20,30間で承認するための処理と、承認したブロックを自分(自ノード)を含む参加するノード20,30で共有して記憶するための処理(自ノードでの保存、および参加する他のノード20,30への配信のための処理)と、ブロック内に格納されているレコードの参照のための処理とを実行する。
【0076】
ここで、ブロックの生成・承認・共有記憶のための処理は、必ずしも自ら(自ノード)がブロックの生成処理を実行する必要はなく、また、必ずしも自らが承認処理を実行したり、承認処理に参加する必要はなく、さらには、必ずしも自らが共有記憶のための各ノード20,30への配信処理を実行する必要はない。従って、ブロックの生成処理・承認処理・共有記憶のための各ノードへの配信処理については、これらの処理を担当する他のノード20,30に対し、ブロックの生成指示・承認指示・配信指示を送ってもよく、要するに、自らは、処理のタイミング等を管理し、ブロックの生成処理・承認処理・共有記憶のための各ノード20,30への配信処理を主導すればよい。換言すれば、最終的に、分散型台帳システム10を構成する全てのノード20,30のそれぞれが同一のデータを共有して記憶している状態になり、いわゆる分散型台帳が構築されている状態になればよい。このため、ブロックの生成処理・承認処理・共有記憶のための各ノード20,30への配信処理については、分散型台帳システム10を構成する全てのノード20,30が関与することになるので、以下では、始動ノード20の台帳管理手段21Aや分散型台帳記憶手段23だけではなく、後述する一般のノード30の台帳管理手段31Aや分散型台帳記憶手段33(
図3参照)も含めて説明を行う。
【0077】
ブロックの生成処理は、トランザクションデータのレコード等の分散型台帳への新たな記録対象データを用いて、それまでに蓄積記憶されたブロック(既に分散型台帳記憶手段23,33に記憶されている前回までのブロック)とともにチェーンを形成するブロックを新たに生成する処理である。このブロックの生成処理は、上述したように、自分(自ノード)で直接に実行するか、または他のノード20,30に対してブロックの生成指示を送ることにより実行される。生成指示を送る場合は、生成指示を受けたノード20,30に設けられた台帳管理手段21A,31Aが実行する。
【0078】
生成されるブロックは、
図5に示すように、生成時刻を示すタイムスタンプと、前のブロックのハッシュ値等のチェーン形成情報と、分散型台帳への記録対象データ(トランザクションデータのレコード、アカウント情報、属性ベース暗号に関連する各種処理用のプログラム、親属性公開鍵のうちの少なくとも1つを含むデータ)とを含む。
【0079】
チェーン形成情報は、通常のブロックチェーンのように、前のブロックのハッシュ値としてもよく、あるいは、例えば前のブロック以外の情報を用いて形成されたものとしてもよく、チェーンの形成方式は任意である。なお、本実施形態では、分散型台帳は、一例としてブロックチェーンとしているが、例えば、信頼できるノードのみで分散型台帳システムを構成するコンソーシアム型の場合や、特定の組織の内部で分散型台帳システムを構成するプライベート型の場合等のように、ある程度の安全性を確保できる場合であれば、必ずしもブロック間でチェーンを形成する必要はないので、チェーン形成情報を設けなくてもよく、また、記録対象データをブロックに格納する必要もない。
【0080】
ブロックの承認処理は、データの改ざんがないか、残高は正しいか、残高を超える不正な取引ではないか等について、それ以前のブロックが有する情報との整合性等により判断する処理であり、この承認処理を経て、初めて分散型台帳システム10への参加ノード間でのブロックの共有記憶が可能となる。なお、本実施形態では、分散型台帳は、一例としてブロックチェーンとしているので、ブロックの承認処理を行うが、上述したコンソーシアム型やプライベート型の場合等には、ブロックの承認処理を省略してもよい。
【0081】
承認方式は問わない。例えば、ネットワーク1(
図1中の太線で示されたP2Pネットワーク部分)内の特定または任意の1つのノード20,30(自分でもよい。)が承認処理を担当してもよく、特定または任意の複数のノード20,30(自分が含まれていても、含まれていなくてもよい。)が担当してもよく、全てのノード20,30が担当してもよい。例えば、複数のノード20,30や全てのノード20,30が担当する場合には、そのうちの一定比率(例えば3分の2以上)の合意を条件として承認する等とすることができる。また、このブロックの承認処理を実行するノード20,30には、ブロックの生成処理を担当したノード20,30が含まれていてもよく、含まれていなくてもよい。
【0082】
ブロックの共有記憶のための各ノード20,30への配信処理は、承認されたブロックが全てのノード20,30に行き渡るように、すなわち、配信元のノードから、配信元を除く全てのノードに向け、承認されたブロックを配信するとともに、承認されたブロックを受け取ったノード20,30が、各自の分散型台帳記憶手段23,33に、受け取ったブロックを保存する処理である。配信元のノードは、承認処理を実行したノードや承認処理に参加したノードでもよく、承認指示を送ったノードでもよく、また、配信元のノードが複数ある場合には、複数個受け取ったブロックが同一のものであるときに保存するようにしてもよい。
【0083】
アカウント生成手段21Bは、ユーザ端末40からネットワーク1を介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段23から当該ユーザのアカウント情報に含まれる属性リスト(
図6参照)を取得し、子属性秘密鍵の生成指示(取得した属性リストを含む。)を子属性秘密鍵生成手段21Hに送る処理を実行するとともに、子属性秘密鍵生成手段21Hにより生成された子属性秘密鍵を子属性秘密鍵生成手段21Hから受け取り、受け取った子属性秘密鍵を分散型台帳記憶手段23に記憶させるための処理(受け取った子属性秘密鍵を台帳管理手段21Aへ引き渡して分散型台帳への保存を指示する処理)を実行するものである(
図9参照、但し、
図9では同じ機能を有するアカウント生成手段31Bを図示している)。
【0084】
属性追加・削除手段21Cは、属性変更依頼を行うユーザの操作するユーザ端末40からネットワーク1を介して送信されてくる属性変更依頼を行うユーザのアカウント鍵を受信し、受信した属性変更依頼を行うユーザのアカウント鍵を用いて、属性変更依頼を行うユーザのアカウント情報に含まれる属性識別子(
図6参照)を分散型台帳記憶手段23から取得するとともに、属性変更対象のユーザの操作するユーザ端末40に対して属性変更の承認依頼を送り(例えば、電子メールの送信等)、この承認依頼に応じて属性変更対象のユーザの操作するユーザ端末40からネットワーク1を介して送信されてくる属性変更対象のユーザのアカウント鍵を受信し、受信した属性変更対象のユーザのアカウント鍵を用いて、属性変更対象のユーザのアカウント情報に含まれる属性リスト(
図6参照)を分散型台帳記憶手段23から取得し、取得した属性変更対象のユーザの属性リストおよび属性変更依頼を行うユーザの属性識別子を用いて、属性リストに属性識別子を追加した属性若しくは属性リストから属性識別子を削除した属性を埋め込んだ新しい子属性秘密鍵を生成し、生成した新しい子属性秘密鍵、および属性リストに属性識別子を追加した更新後の属性リスト若しくは属性リストから属性識別子を削除した更新後の属性リストを、属性変更対象のユーザのアカウント情報として分散型台帳記憶手段23に記憶させるための処理を実行するものである(
図11参照、但し、
図11では同じ機能を有する属性追加・削除手段31Cを図示している)。
【0085】
レコード記録手段21Dは、ユーザにより登録されるレコードの内容データ(トランザクションデータ)および当該ユーザによるレコードの閲覧権限を指定するポリシーをユーザ端末40からネットワーク1を介して受信し、受信した内容データ(トランザクションデータ)のレコードおよびポリシーをレコード暗号化手段21Eに引き渡すとともに、暗号化されたレコードをレコード暗号化手段21Eから受け取り、受け取ったレコードを分散型台帳記憶手段23に記憶させるための処理(受け取ったレコードを台帳管理手段21Aへ引き渡して分散型台帳への記録を指示する処理)を実行するものである(
図10参照、但し、
図10では同じ機能を有するレコード記録手段31Dを図示している)。
【0086】
レコード暗号化手段21Eは、レコード記録手段21Dから登録対象のレコードおよびポリシーを受け取り、受け取ったレコードおよびポリシー、並びに分散型台帳記憶手段23に記憶された親属性公開鍵を用いて、レコードを暗号化し、暗号化したレコードをレコード記録手段21Dに引き渡す処理を実行するものである(
図10参照、但し、
図10では同じ機能を有するレコード暗号化手段31Eを図示している)。
【0087】
レコード取得手段21Fは、ユーザ端末40からユーザのアカウント鍵とともにネットワーク1を介して送信されてくる当該ユーザによるレコードの閲覧要求を受信して分散型台帳記憶手段23から閲覧要求に係るレコードを取得し、取得したレコードおよび当該ユーザのアカウント鍵をレコード復号手段21Gに引き渡すとともに、復号済のレコードをレコード復号手段21Gから受け取り、受け取った復号済のレコードの表示用データを、ネットワーク1を介してユーザ端末40に送信する処理を実行するものである(
図10参照、但し、
図10では同じ機能を有するレコード取得手段31Fを図示している)。
【0088】
レコード復号手段21Gは、レコード取得手段21Fから閲覧要求に係るレコードおよび閲覧要求を行ったユーザのアカウント鍵を受け取り、受け取った当該ユーザのアカウント鍵を用いて分散型台帳記憶手段23から当該ユーザの子属性秘密鍵を取得し、取得した子属性秘密鍵を用いて、閲覧要求に係るレコードを復号し、復号済のレコードをレコード取得手段21Fに引き渡す処理を実行するものである(
図10参照、但し、
図10では同じ機能を有するレコード復号手段31Gを図示している)。
【0089】
また、レコード復号手段21Gは、閲覧要求を行ったユーザのアカウント鍵を用いて分散型台帳記憶手段23から当該ユーザの子属性秘密鍵を取得する際には、閲覧要求に係るレコードが分散型台帳記憶手段23に記憶された時点以前に分散型台帳記憶手段23に記憶された子属性秘密鍵のうちの最も新しい子属性秘密鍵を取得して復号処理を実行する構成としてもよい(
図7参照)。なお、閲覧要求に係るレコードが分散型台帳記憶手段23に記憶された時点は、ブロックに含まれるタイムスタンプ(
図5、
図7参照)により判断することができる。
【0090】
子属性秘密鍵生成手段21Hは、アカウント生成手段21Bから子属性秘密鍵の生成指示(属性リストを含む。)を受け取り、管理装置50(
図4参照)に対して親属性秘密鍵の取得要求を送信することにより管理装置50からネットワーク1を介して親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段21Bから受け取った属性リストを用いて、対象ユーザの子属性秘密鍵を生成し、生成した子属性秘密鍵をアカウント生成手段21Bに引き渡す処理を実行するものである(
図9参照、但し、
図9では同じ機能を有する子属性秘密鍵生成手段31Hを図示している)。
【0091】
この子属性秘密鍵生成手段21Hによる子属性秘密鍵の生成処理については、属性ベース暗号(本実施形態では、暗号文ポリシー方式(CP−ABE)を採用)を取り扱う既存のシステムと同じアルゴリズムでよいため、詳細な説明を省略する。
【0092】
親属性鍵生成手段21Jは、親属性公開鍵(マスター公開鍵とも称される。)および親属性秘密鍵(マスター秘密鍵とも称される。)を生成し、生成した親属性公開鍵を分散型台帳記憶手段23に記憶させるための処理(生成した親属性公開鍵を台帳管理手段21Aへ引き渡して分散型台帳への記録を指示する処理)を実行するとともに、生成した親属性秘密鍵をネットワーク1を介して管理装置50(
図4参照)へ送信する処理を実行するものである(
図8参照)。
【0093】
この親属性鍵生成手段21Jによる親属性公開鍵および親属性秘密鍵の生成処理については、属性ベース暗号を取り扱う既存のシステムと同じアルゴリズムでよいため、詳細な説明を省略する。なお、本実施形態では、属性ベース暗号のうちの暗号文ポリシー方式(CP−ABE)を採用しているので、暗号文(暗号化された登録対象のレコード)にポリシーを埋め込み、各自の秘密鍵(子属性秘密鍵)に属性を埋め込んでいる。
【0094】
また、親属性鍵生成手段21Jは、生成した親属性公開鍵を分散型台帳記憶手段23に記憶させるための処理(台帳管理手段21Aへ引き渡して分散型台帳への記録を指示する処理)と併せて、プログラム記憶手段22に記憶されている属性ベース暗号に関連する各種処理用のプログラムについても、分散型台帳記憶手段23に記憶させるための処理(台帳管理手段21Aへ引き渡して分散型台帳への記録を指示する処理)を実行する。但し、親属性公開鍵および親属性秘密鍵の生成処理が2回目以降になるときは、既に分散型台帳記憶手段23に属性ベース暗号に関連する各種処理用のプログラムが記憶されている状態となっているので、この処理は実行しなくてよい。
【0095】
さらに、親属性鍵生成手段21Jは、親属性公開鍵および親属性秘密鍵を生成する処理を定期的に繰り返す構成としてもよい。このような構成とする場合には、分散型台帳記憶手段23に記憶されている親属性公開鍵は、親属性鍵生成手段21Jにより新たに生成される親属性公開鍵により定期的に更新されることになる。また、子属性秘密鍵生成手段21Hにより、親属性鍵生成手段21Jが定期的に生成する親属性秘密鍵および分散型台帳記憶手段23に記憶されている各ユーザのアカウント情報に含まれる属性リストを用いて、各ユーザの子属性秘密鍵も新たに生成されるので、分散型台帳記憶手段23に記憶されている全てのユーザの子属性秘密鍵も、定期的に更新されることになる。なお、子属性秘密鍵生成手段21Hによる各ユーザの子属性秘密鍵の生成処理では、アカウント生成手段21Bにより取得した各ユーザの属性リストが用いられるが、各ユーザの属性リストを取得するには、各ユーザのアカウント鍵が必要になるので、ユーザ端末40から各ユーザのアカウント鍵の提供を受ける必要がある。従って、親属性鍵生成手段21Jによる親属性公開鍵および親属性秘密鍵の生成処理は、例えば夜間等のバッチ処理で実行することができるが、子属性秘密鍵生成手段21Hによる各ユーザの子属性秘密鍵の生成処理は、各ユーザによるユーザ端末40からのアクセスを待って実行されることになるので、親属性鍵生成手段21Jは、子属性秘密鍵の更新を各ユーザに促すための自動通知処理を各ユーザ端末40に対して実行する。この自動通知処理は、例えば、電子メール等の自動送信でもよく、各ユーザによるユーザ端末40からの次回のアクセス時に子属性秘密鍵の更新を行うべきことを知らせる自動表示でもよい。後者の場合、具体的には、例えば、親属性鍵生成手段21Jが親属性鍵(親属性公開鍵および親属性秘密鍵)を更新した際(
図8参照)に、その更新日時(ブロック番号)を分散型台帳に記録しておき、ユーザがレコードを閲覧する際(
図10参照)に、レコード取得手段31Fまたはレコード復号手段31Gが、分散型台帳上の当該ユーザのアカウント情報から当該ユーザの子属性秘密鍵の生成日時を取得し、取得した子属性秘密鍵の生成日時が、分散型台帳上の最新の親属性鍵の更新日時よりも前の時点であれば(つまり、子属性秘密鍵が古ければ)、子属性秘密鍵生成手段31Hを自動的に立ち上げ、レコード閲覧のための処理の付加的処理として子属性鍵生成処理(
図9参照)を起動する方法を採ることができる。また、レコード登録時(
図10参照)には、子属性秘密鍵は不要であるが、そのタイミングでもレコード記録手段31Dまたはレコード暗号化手段31Eにより、子属性秘密鍵生成手段31Hを自動的に立ち上げて子属性鍵生成処理(
図9参照)を起動させてもよい。さらに、子属性秘密鍵については、前述したようにレコード復号手段21Gが使用する子属性秘密鍵を制御することによりレコードの閲覧制御が可能であるが(
図7参照)、これと同様な考え方で、親属性鍵についても、分散型台帳に記録された最新の更新日時に生成された親属性鍵しか使用することができない仕様とすることで、明確に鍵の切り替えを行うことができるので、更新前の古い親属性秘密鍵を使用して子属性秘密鍵を生成してしまうという不都合(
図9参照)や、更新前の古い親属性公開鍵を使用してレコードの暗号化処理を行ってしまうという不都合(
図10参照)を回避することができる。
【0096】
プログラム記憶手段22は、台帳管理手段21Aを実現するための台帳管理プログラムと、親属性鍵生成手段21Jを実現するための親属性鍵生成プログラムと、分散型台帳記憶手段23に記憶させるための属性ベース暗号に関連する各種処理用のプログラム(各手段21B〜21Hを実現するためのプログラム)とを記憶するものである。
【0097】
分散型台帳記憶手段23は、他の全てのノード20,30の分散型台帳記憶手段23,33とともに分散型台帳を構成するものである。本実施形態では、分散型台帳は、一例としてブロックチェーンとするので、分散型台帳記憶手段23は、
図5に示すように、ブロックチェーンを形成する複数のブロックを記憶するものである。
【0098】
ブロックには、
図5に示すように、生成時刻を示すタイムスタンプと、前のブロックのハッシュ値等のチェーン形成情報と、分散型台帳への記録対象データとが含まれている。分散型台帳への記録対象データとしては、トランザクションデータのレコードと、各ユーザのアカウント情報と、属性ベース暗号に関連する各種処理用のプログラム(各手段21B〜21Hを実現するためのプログラム)と、親属性公開鍵とがあり、ブロックチェーンを形成する各ブロックには、これらの記録対象データのうちの少なくとも1つが格納される。
【0099】
ここで、各ユーザのアカウント情報としては、
図6に示すように、各ユーザの属性識別子(属性名)と、各ユーザの子属性秘密鍵と、各ユーザの属性リストとが、各ユーザのID(ユーザ識別情報)と関連付けてブロック内に格納される。これらのアカウント情報は、各ユーザのアカウント鍵により暗号化され、各ユーザからのアカウント鍵の提供がないと、これらの内容を把握することができないようになっている。
【0100】
このうち、各ユーザの属性識別子は、各ユーザを表す属性名であり、ユーザ単体の属性となる。例えば、ユーザAの場合には、ユーザAを表す属性名であり、ユーザBの場合には、ユーザBを表す属性名であり、ユーザCの場合には、ユーザCを表す属性名である。
【0101】
また、各ユーザの属性リストは、各ユーザの子属性秘密鍵を生成するときの入力となる属性であり、例えば、ユーザが自分以外のユーザの属性をも合わせ持つ場合には、自分を表す属性名と自分以外のユーザを表す属性名とを統合した属性となる。つまり、属性リストは、ユーザ単体の属性を集合させた状態の属性となる。例えば、ユーザCが元々持っている「ユーザC」という属性に、ユーザAが持っている「ユーザA」という属性が追加されると、ユーザCの属性リストは、「ユーザC+ユーザA」となる。
【0102】
さらに、属性ベース暗号に関連する各種処理用のプログラム(各手段21B〜21Hを実現するためのプログラム)は、バイナリの状態で分散型台帳記憶手段23に記憶されている。なお、属性ベース暗号に関連する各種処理用のプログラムは、インタープリターのソースの状態で分散型台帳記憶手段23に記憶されていてもよい。
【0104】
ノード30(ノードX,Y,Z)は、コンピュータにより構成され、
図3に示すように、分散型台帳の管理に必要な各種の処理を実行する処理手段31と、この処理手段31による処理に必要なプログラムを記憶するプログラム記憶手段32と、処理手段31による処理に必要な各種のデータ(プログラムを含む。)および処理で得られた各種のデータを記憶する分散型台帳記憶手段33とを備えている。
【0105】
このノード30は、始動ノード20(
図2参照)と略同様な構成を備え、親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理(
図8参照)を行う機能を有しない点を除き、始動ノード20と同様な構成および機能を有する。
【0106】
従って、処理手段31は、台帳管理手段31Aと、アカウント生成手段31Bと、属性追加・削除手段31Cと、レコード記録手段31Dと、レコード暗号化手段31Eと、レコード取得手段31Fと、レコード復号手段31Gと、子属性秘密鍵生成手段31Hとを含んで構成され、これらの各手段31A〜31Hは、始動ノード20の各手段21A〜21Hに相当する手段である。しかし、処理手段31には、始動ノード20の親属性鍵生成手段21Jに相当する手段は含まれていない。
【0107】
なお、台帳管理手段31Aは、プログラム記憶手段32に記憶された台帳管理プログラムにより実現され、一方、その他の各手段31B〜31Hは、プログラム記憶手段32に記憶されたプログラムではなく、分散型台帳記憶手段33に記憶された属性ベース暗号に関連する各種処理用のプログラムにより実現される点についても、始動ノード20の場合と同様である。
【0108】
また、プログラム記憶手段32には、台帳管理手段31Aを実現するための台帳管理プログラムが記憶され、この点は、始動ノード20の場合と同様である。しかし、一般のノード30では親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理(
図8参照)は行わないので、プログラム記憶手段32には、親属性鍵生成プログラムや、分散型台帳記憶手段33に記憶させるための属性ベース暗号に関連する各種処理用のプログラム(各手段31B〜31Hを実現するためのプログラム)は記憶されていない。
【0109】
さらに、分散型台帳記憶手段33は、他の全てのノード20,30の分散型台帳記憶手段23,33とともに分散型台帳を構成するものであるから、始動ノード20の分散型台帳記憶手段23と同様な構成を備えている。
【0111】
ユーザ端末40は、コンピュータにより構成され、例えばマウスやキーボード等の入力手段と、例えば液晶ディスプレイ等の表示手段とを備えている。このユーザ端末40は、例えば、携帯電話機(PHSを含む。)、携帯情報端末(PDA)、タブレット端末等の携帯機器であってもよい。
【0113】
管理装置50は、コンピュータにより構成され、
図4に示すように、属性管理を含む各種処理を実行する処理手段51と、親属性秘密鍵を記憶する親属性秘密鍵記憶手段52とを備えている。
【0114】
処理手段51は、始動ノード20の親属性鍵生成手段21Jによりネットワーク1を介して送信されてくる親属性秘密鍵を受信し、受信した親属性秘密鍵を親属性秘密鍵記憶手段52に記憶させる処理(
図8参照)を実行する親属性秘密鍵受信手段51Aと、始動ノード20やノード30の子属性秘密鍵生成手段21H,31Hからの親属性秘密鍵の取得要求に応じ、親属性秘密鍵記憶手段52に記憶されている親属性秘密鍵を、ネットワーク1を介して始動ノード20やノード30に送信する処理(
図9参照)を実行する親属性秘密鍵送信手段51Bとを含んで構成されている。
【0116】
分散型台帳生成者端末60は、コンピュータにより構成され、例えばマウスやキーボード等の入力手段と、例えば液晶ディスプレイ等の表示手段とを備えている。この分散型台帳生成者端末60は、例えば、携帯電話機(PHSを含む。)、携帯情報端末(PDA)、タブレット端末等の携帯機器であってもよい。
【0118】
以上において、始動ノード20の処理手段21に含まれる各手段21A〜21J(
図2参照)、一般のノード30の処理手段31に含まれる各手段31A〜31H(
図3参照)、管理装置50の処理手段51に含まれる各手段51A,51B(
図4参照)は、始動ノード20、ノード30、管理装置50を構成する各コンピュータの内部に設けられた中央演算処理装置(CPU)、このCPUの動作手順を規定する1つまたは複数のプログラム、並びに、主メモリやキャッシュメモリ等により実現される。
【0119】
また、始動ノード20のプログラム記憶手段22および分散型台帳記憶手段23(
図2参照)、一般のノード30のプログラム記憶手段32および分散型台帳記憶手段33(
図3参照)、管理装置50の親属性秘密鍵記憶手段52(
図4参照)は、例えば、ハードディスク、ソリッドステートドライブ(SSD)、フラッシュディスク、EEPROM、フラッシュ・メモリ、MO、CD、DVD、FD、磁気テープ、あるいはこれらの組合せ等を採用することができる。
【0120】
<分散型台帳システム10による処理の流れ>
【0121】
このような本実施形態においては、以下のようにして分散型台帳システム10により、分散型台帳の構築、分散型台帳へのデータの記録、分散型台帳に記録されたデータの参照、属性ベース暗号に用いられる属性の変更についての各種処理が実行される。
【0122】
<親属性鍵(親属性公開鍵および親属性秘密鍵)の生成時の処理の流れ>
【0123】
図8において、先ず、分散型台帳システム10のシステム構築者である分散型台帳生成者M1またはその協力者が、始動ノード20のプログラム記憶手段22に記憶された台帳管理プログラムを立ち上げると、台帳管理手段21Aによる処理が開始される。この際、分散型台帳生成者M1またはその協力者が、パラメータ(例えばID=100番)を指定する入力を行うと、台帳管理手段21Aにより、この入力が受け付けられて新しい分散型台帳が生成され、生成された分散型台帳にデータを記録するための領域が始動ノード20の分散型台帳記憶手段23に確保される(ステップS1)。
【0124】
次に、分散型台帳生成者M1またはその協力者が、一般のノード30(ノードX,Y,Z)のプログラム記憶手段32に記憶された台帳管理プログラムを立ち上げると、台帳管理手段31Aによる処理が開始される。この際、分散型台帳生成者M1またはその協力者が、同じパラメータ(例えばID=100番)を指定する入力を行うと、台帳管理手段31Aにより、この入力が受け付けられ、上述したステップS1で生成された分散型台帳に参加することができるようになり、参加した分散型台帳にデータを記録するための領域がノード30の分散型台帳記憶手段33に確保される(ステップS2)。なお、ステップS1で立ち上げた始動ノード20以外にも始動ノード20がある場合には、その始動ノード20のプログラム記憶手段22に記憶された台帳管理プログラムも立ち上げ、同じパラメータ(例えばID=100番)を指定する入力を行うことにより、ステップS1で生成された分散型台帳に参加することができるようになる。
【0125】
続いて、分散型台帳生成者M1またはその協力者は、分散型台帳生成者端末60を操作して始動ノード20にアクセスし、プログラム記憶手段22に記憶された親属性鍵生成プログラムを立ち上げ、親属性鍵生成手段21Jによる処理を開始させる。そして、親属性鍵生成手段21Jにより、分散型台帳生成者M1またはその協力者による親属性鍵(親属性公開鍵および親属性秘密鍵)の生成指示の入力を受け付け(ステップS3)、親属性公開鍵および親属性秘密鍵を生成する(ステップS4)。
【0126】
その後、親属性鍵生成手段21Jにより、生成した親属性公開鍵および分散型台帳記憶手段23に記憶されている属性ベース暗号に関連する各種処理用のプログラム(各手段21B〜21Hを実現するためのプログラム)を、台帳管理手段21Aに引き渡して分散型台帳への保存指示を行う(ステップS5)。台帳管理手段21Aは、親属性公開鍵および属性ベース暗号に関連する各種処理用のプログラムを受け取ると、受け取った親属性公開鍵および属性ベース暗号に関連する各種処理用のプログラムを、自分(自ノード)の分散型台帳記憶手段23および全てのノード30の分散型台帳記憶手段33に記憶させるための処理を実行する(ステップS6)。また、自分(自ノード)以外にも始動ノード20がある場合には、その始動ノード20の分散型台帳記憶手段23にも記憶させる。
【0127】
具体的には、台帳管理手段21Aは、親属性公開鍵および属性ベース暗号に関連する各種処理用のプログラムを含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分(自ノード)の分散型台帳記憶手段23に保存するとともに、他のノード20,30へ配信する(ステップS6)。この際、ブロックの生成処理、承認処理、他のノード20,30への配信処理は、必ずしも自分(自ノード)で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード20,30に行わせてもよい。
【0128】
各ノード30では、台帳管理手段31Aにより、親属性鍵の生成を行った始動ノード20(またはブロックの生成若しくは承認を行ったノード20,30)からネットワーク1を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段33に保存する(ステップS7)。また、親属性鍵の生成を行った始動ノード20以外にも始動ノード20がある場合には、その始動ノード20の台帳管理手段21Aにより、親属性鍵の生成を行った始動ノード20(またはブロックの生成若しくは承認を行ったノード20,30)からネットワーク1を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段23に保存する(ステップS7)。
【0129】
また、始動ノード20では、親属性鍵生成手段21Jにより、生成した親属性秘密鍵をネットワーク1を介して管理装置50へ送信する(ステップS8)。管理装置50では、親属性秘密鍵受信手段51Aにより、始動ノード20からネットワーク1を介して送信されてくる親属性秘密鍵を受信し、受信した親属性秘密鍵を、親属性秘密鍵記憶手段52に記憶させる(ステップS9)。
【0130】
<子属性秘密鍵の生成時の処理の流れ>
【0131】
図9において、ユーザ(ここでは、ユーザAとする。)が、自分の子属性秘密鍵の生成のために、ユーザ端末40からノード30(始動ノード20でもよいが、ここではノードX,Y,Zのいずれかとする。)にアクセスすると、台帳管理手段31Aにより、分散型台帳記憶手段33から、属性ベース暗号に関連する各種処理用のプログラムのうちのアカウント生成手段31Bおよび子属性秘密鍵生成手段31Hを実現するプログラムが読み込まれ、主メモリ上に配置される。
【0132】
そして、アカウント生成手段31Bにより、ユーザAのID(ユーザ識別情報)およびアカウント鍵を受け付けると(ステップS21)、受け付けたユーザAのIDおよびアカウント鍵を用いて、分散型台帳記憶手段33から、ユーザAのアカウント情報に含まれる属性リストを取得し(ステップS22)、取得した属性リストとともに子属性秘密鍵の生成指示を、子属性秘密鍵生成手段31Hに送る(ステップS23)。
【0133】
子属性秘密鍵生成手段31Hは、アカウント生成手段31Bからの子属性秘密鍵の生成指示(ユーザAの属性リストを含む。)を受け取ると(ステップS24)、親属性秘密鍵の取得要求信号をネットワーク1を介して管理装置50へ送信する(ステップS25)。管理装置50では、親属性秘密鍵の取得要求信号を受信すると(ステップS26)、親属性秘密鍵送信手段51Bにより、親属性秘密鍵記憶手段52に記憶されている親属性秘密鍵を、ネットワーク1を介してノード30に送信する(ステップS27)。なお、上記のステップS25,S26の親属性秘密鍵の取得要求信号の送受信時には、なりすましによる不正な鍵情報の取得を防止するため、人(管理担当者M2)による確認や、電子署名などの別の暗号化技術により、要求の真偽を確認する処理(DLT若しくは認証済みノードから送られた要求であることを確認する処理)を施す。
【0134】
ノード30では、管理装置50からネットワーク1を介して送信されてくる親属性秘密鍵を受信し(ステップS28)、受信した親属性秘密鍵および上述したステップS24でアカウント生成手段31Bから受け取ったユーザAの属性リストを用いて、その属性リストで示される属性(ユーザAという属性、あるいはこの時点で属性リストが更新されていれば、例えば「ユーザA+ユーザC」という属性等である場合もある。)を埋め込んだ子属性秘密鍵を生成し(ステップS29)、生成した子属性秘密鍵をアカウント生成手段31Bに引き渡す(ステップS30)。
【0135】
アカウント生成手段31Bは、子属性秘密鍵生成手段31Hからの子属性秘密鍵を受け取ると、受け取った子属性秘密鍵を、台帳管理手段31Aに引き渡して保存指示を行う(ステップS31)。台帳管理手段31Aは、子属性秘密鍵を受け取ると、受け取った子属性秘密鍵を、自分(自ノード)を含む全てのノード20,30の分散型台帳記憶手段23,33に記憶させるための処理を実行する(ステップS32)。
【0136】
具体的には、台帳管理手段31Aは、子属性秘密鍵を含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分(自ノード)の分散型台帳記憶手段33に保存するとともに、他のノード20,30へ配信する(ステップS32)。この際、ブロックの生成処理、承認処理、他のノード20,30への配信処理は、必ずしも自分(自ノード)で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード20,30に行わせてもよい。
【0137】
また、図示は省略されているが、他のノード20,30では、台帳管理手段21A,31Aにより、配信元のノード30(始動ノード20の場合もある。)からネットワーク1を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段23,33に保存する。
【0139】
図10において、ユーザ(ここでは、ユーザAとする。)が、分散型台帳へのトランザクションデータのレコードの登録のために、ユーザ端末40からノード30(始動ノード20でもよいが、ここではノードX,Y,Zのいずれかとする。)にアクセスすると、台帳管理手段31Aにより、分散型台帳記憶手段33から、属性ベース暗号に関連する各種処理用のプログラムのうちのレコード記録手段31Dおよびレコード暗号化手段31Eを実現するプログラムが読み込まれ、主メモリ上に配置される。
【0140】
そして、レコード記録手段31Dにより、ユーザAが登録するレコードの内容データ(トランザクションデータ)およびユーザAによるそのレコードの閲覧権限を指定するポリシー(例えば、ユーザAという属性、またはユーザBという属性のうちの少なくとも一方の属性を有するユーザのみが閲覧可能等)を、ユーザ端末40からネットワーク1を介して受信し、受信した内容データ(トランザクションデータ)のレコードおよびポリシーをレコード暗号化手段31Eに引き渡す(ステップS41)。
【0141】
レコード暗号化手段31Eは、レコード記録手段31Dから登録対象のレコードおよびポリシーを受け取ると(ステップS42)、分散型台帳記憶手段33から親属性公開鍵を取得し(ステップS43)、受け取ったレコードおよびポリシー、並びに取得した親属性公開鍵を用いて、レコードを暗号化し(ステップS44)、暗号化したレコードをレコード記録手段31Dに引き渡す(ステップS45)。
【0142】
レコード記録手段31Dは、レコード暗号化手段31Eから暗号化されたレコードを受け取ると、受け取ったレコードを、台帳管理手段31Aに引き渡して保存指示を行う(ステップS46)。台帳管理手段31Aは、暗号化されたレコードを受け取ると、受け取ったレコードを、自分(自ノード)を含む全てのノード20,30の分散型台帳記憶手段23,33に記憶させるための処理を実行する(ステップS47)。
【0143】
具体的には、台帳管理手段31Aは、暗号化されたレコードを含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分(自ノード)の分散型台帳記憶手段33に保存するとともに、他のノード20,30へ配信する(ステップS47)。この際、ブロックの生成処理、承認処理、他のノード20,30への配信処理は、必ずしも自分(自ノード)で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード20,30に行わせてもよい。
【0144】
また、図示は省略されているが、他のノード20,30では、台帳管理手段21A,31Aにより、配信元のノード30(始動ノード20の場合もある。)からネットワーク1を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段23,33に保存する。
【0146】
図10において、ユーザ(ここでは、ユーザBとする。)が、分散型台帳に登録されているレコードの閲覧のために、ユーザ端末40からノード30(始動ノード20でもよいが、ここではノードX,Y,Zのいずれかとする。)にアクセスすると、台帳管理手段31Aにより、分散型台帳記憶手段33から、属性ベース暗号に関連する各種処理用のプログラムのうちのレコード取得手段31Fおよびレコード復号手段31Gを実現するプログラムが読み込まれ、主メモリ上に配置される。
【0147】
そして、レコード取得手段31Fにより、ユーザBによるレコードの閲覧要求(閲覧対象のレコードを特定する情報を含む。)を、ユーザBのID(ユーザ識別情報)およびアカウント鍵とともにユーザ端末40からネットワーク1を介して受信すると(ステップS51)、分散型台帳記憶手段33から、閲覧対象のレコードを取得し、取得した閲覧対象のレコードを、ユーザBのIDおよびアカウント鍵とともにレコード復号手段31Gに引き渡す(ステップS52)。
【0148】
レコード復号手段31Gは、レコード取得手段31Fから閲覧対象のレコード並びにユーザBのIDおよびアカウント鍵を受け取ると(ステップS53)、ユーザBのIDおよびアカウント鍵を用いて、分散型台帳記憶手段33からユーザBの子属性秘密鍵を取得し(ステップS54)、取得したユーザBの子属性秘密鍵を用いて、閲覧対象のレコードを復号し(ステップS55)、復号済のレコードをレコード取得手段31Fに引き渡す(ステップS56)。
【0149】
なお、上述したステップS54で、分散型台帳記憶手段33からユーザBの子属性秘密鍵を取得する際には、レコード復号手段31Gは、閲覧対象のレコードが分散型台帳記憶手段33に記憶された時点以前に分散型台帳記憶手段33に記憶されたユーザBの子属性秘密鍵のうちの最も新しい子属性秘密鍵を取得して復号処理を実行してもよい。
【0150】
レコード取得手段31Fは、レコード復号手段31Gから復号済のレコードを受け取り、受け取った復号済のレコードの表示用データを、ネットワーク1を介してユーザBの操作するユーザ端末40に送信する(ステップS57)。
【0151】
<属性追加時の処理の流れ、および子属性秘密鍵の新旧によるレコードの閲覧制御>
【0152】
図11において、ユーザ(ここでは、ユーザAとする。)が、他のユーザ(ここでは、ユーザCとする。)の属性変更のために(例えば、個人であるユーザAが自分の所属する企業であるユーザCの属性に、自分の属性を追加することにより、ユーザCがユーザAの登録レコードを閲覧できるようにするために)、ユーザ端末40からノード30(始動ノード20でもよいが、ここではノードX,Y,Zのいずれかとする。)にアクセスすると、台帳管理手段31Aにより、分散型台帳記憶手段33から、属性ベース暗号に関連する各種処理用のプログラムのうちの属性追加・削除手段31Cを実現するプログラムが読み込まれ、主メモリ上に配置される。
【0153】
そして、属性追加・削除手段31Cにより、属性変更依頼を行うユーザAの操作するユーザ端末40からネットワーク1を介して送信されてくるユーザAによる属性の追加依頼(ユーザAのIDおよびアカウント鍵、および属性変更対象のユーザCのIDを含む。)を受信すると(ステップS71)、属性変更対象のユーザCの操作するユーザ端末40に対して属性変更(ここでは、一例として、ユーザCの属性に、ユーザAの属性を追加する属性変更とする。)の承認依頼を送る(ステップS72)。この承認依頼は、例えば、電子メールの自動送信等でよい。
【0154】
ユーザCが、ユーザAによる承認依頼に応じるために、ユーザ端末40からノード30にアクセスすると、台帳管理手段31Aにより、分散型台帳記憶手段33から、属性ベース暗号に関連する各種処理用のプログラムのうちの属性追加・削除手段31Cを実現するプログラムが読み込まれ、主メモリ上に配置される。なお、既に配置されている場合には、分散型台帳記憶手段33からのプログラムの読込は省略することができる。
【0155】
そして、属性追加・削除手段31Cにより、ユーザCの操作するユーザ端末40からネットワーク1を介して送信されてくるユーザCのIDおよびアカウント鍵、並びにユーザAのIDおよびアカウント鍵(ユーザAのIDおよびアカウント鍵は、ユーザAによるユーザCへの承認依頼に含まれている。)を受信し(ステップS73)、ユーザCのIDおよびアカウント鍵を用いて、ユーザCのアカウント情報に含まれる属性リスト(
図6参照)を分散型台帳記憶手段33から取得するとともに、ユーザAのIDおよびアカウント鍵を用いて、ユーザAのアカウント情報に含まれる属性識別子(
図6参照)を分散型台帳記憶手段33から取得する(ステップS74)。
【0156】
続いて、属性追加・削除手段31Cにより、属性変更対象のユーザCの属性リストおよび属性変更依頼を行うユーザAの属性識別子を用いて、ユーザCの属性リストにユーザAの属性識別子を追加した属性を埋め込んだユーザCの新しい子属性秘密鍵を生成するとともに、ユーザCの今までの属性リストにユーザAの属性識別子を追加することにより、ユーザCの属性リストを更新する(ステップS75)。
【0157】
それから、属性追加・削除手段31Cにより、生成したユーザCの新しい子属性秘密鍵、およびユーザCの更新後の属性リストを、台帳管理手段31Aに引き渡して保存指示を行う(ステップS76)。台帳管理手段31Aは、ユーザCの新しい子属性秘密鍵、およびユーザCの更新後の属性リストを受け取ると、受け取った子属性秘密鍵および属性リストを、ユーザCのアカウント情報として自分(自ノード)を含む全てのノード20,30の分散型台帳記憶手段23,33に記憶させるための処理を実行する(ステップS77)。
【0158】
具体的には、台帳管理手段31Aは、ユーザCの新しい子属性秘密鍵およびユーザCの更新後の属性リストを含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分(自ノード)の分散型台帳記憶手段33に保存するとともに、他のノード20,30へ配信する(ステップS77)。この際、ブロックの生成処理、承認処理、他のノード20,30への配信処理は、必ずしも自分(自ノード)で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード20,30に行わせてもよい。
【0159】
また、図示は省略されているが、他のノード20,30では、台帳管理手段21A,31Aにより、配信元のノード30(始動ノード20の場合もある。)からネットワーク1を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段23,33に保存する。
【0160】
これにより、
図6に示すように、例えば、日時T3に、ユーザCのアカウント情報についてユーザAの属性を追加する属性変更を行った場合には、ユーザCの子属性秘密鍵については、ユーザCという属性が埋め込まれた秘密鍵が、「ユーザC+ユーザA」という属性が埋め込まれた秘密鍵に更新される。また、ユーザCの属性リストについては、ユーザCという属性リストが、「ユーザC+ユーザA」という属性リストに更新される。
【0161】
なお、ユーザCの子属性秘密鍵が、「ユーザC+ユーザA」という属性が埋め込まれた秘密鍵に更新されると、ユーザCはユーザAの登録レコードを参照することができるようになるが(例えば、ユーザAの所属する企業であるユーザCは、社員であるユーザAの登録情報を参照することができるようになるが)、ユーザAがユーザCの登録レコードを参照することができるようになるわけではない。ユーザAがユーザCの登録レコードを参照するためには、ユーザAのアカウント情報についてユーザCの属性を追加する属性変更を行い、ユーザAの子属性秘密鍵を、「ユーザA+ユーザC」という属性が埋め込まれた秘密鍵にする必要がある。
【0162】
また、
図7に示すように、日時T1に生成されたブロックに、ユーザCのアカウント情報が初期状態で格納されているものとし、日時T2,T4に生成されたブロックに、ユーザA,Bのみ閲覧可能なレコード(ユーザAという属性、またはユーザBという属性のうちの少なくとも一方の属性を有するユーザのみが閲覧可能となるポリシーを埋め込んだレコード)が格納されているとする。この例では、ブロック内の情報を更新する際には、更新する部分についての新しい情報だけを新しいブロックに格納し、更新する必要のない部分については、古いブロックの情報を参照する方法が採られている。
【0163】
このとき、ユーザCは、日時T2に生成されたブロックに格納されているユーザA,Bのみ閲覧可能なレコードについては、(1)日時T1の子属性秘密鍵では閲覧することができない。日時T1の子属性秘密鍵は、ユーザCという属性が埋め込まれた秘密鍵であり、ユーザAという属性は埋め込まれていないので(勿論、ユーザBという属性も埋め込まれていない。)、この日時T2のレコードを復号することができないからである。一方、(2)日時T3の子属性秘密鍵を使用すれば閲覧することができる。日時T3の子属性秘密鍵は、「ユーザC+ユーザA」という属性が埋め込まれた秘密鍵であり、ユーザAという属性が含まれているので、この日時T2のレコードを復号することができるからである。
【0164】
従って、日時T3の子属性秘密鍵は、日時T3以降に登録されたレコードにしか使用できない制御を行うと、日時T2のレコードの閲覧制御が可能となる。すなわち、前述したように、
図10のステップS54で、分散型台帳記憶手段33から子属性秘密鍵を取得する際に、レコード復号手段31Gにより、閲覧対象のレコードが分散型台帳記憶手段33に記憶された時点以前に分散型台帳記憶手段33に記憶された子属性秘密鍵(該当する子属性秘密鍵が複数ある場合には、そのうちの最も新しい子属性秘密鍵)を取得して復号処理を実行することにより、上記のようなレコードの閲覧制御が可能となる。
【0165】
このようなレコードの閲覧制御を行った場合には、ユーザCは、日時T4に生成されたブロックに格納されているユーザA,Bのみ閲覧可能なレコードについては、日時T3の子属性秘密鍵を使用することができるので、復号することができ、閲覧することができる。
【0167】
このような本実施形態によれば、次のような効果がある。すなわち、分散型台帳システム10では、ユーザにより登録されるレコードは、分散型台帳に記録され、複数のノード20,30で共有された状態で保存されるので、取引についての高い透明性および過去の取引データの改ざんの困難性を担保することができるため、DLTの持つ基本的な特徴をそのまま活かすことができる。
【0168】
また、分散型台帳システム10では、情報の秘匿化を図るために、DLTと属性ベース暗号とを組み合わせているが、レコードの登録(暗号化)および参照(復号)の場面においてDLTと公開鍵暗号方式とを組み合わせるだけの単純な組合せではなく、属性ベース暗号を実現するための機能の多くを分散型台帳内に組み込んでいる。より具体的には、子属性秘密鍵を含む各ユーザA,B,C,…のアカウント情報、属性ベース暗号に関連する各種処理用のプログラム、および親属性公開鍵を、分散型台帳記憶手段23,33に格納している。このため、これらのアカウント情報(子属性秘密鍵を含む。)、プログラム、および親属性公開鍵を、改ざんできない形で複数のノード20,30に保持させることができる。
【0169】
従って、各ユーザA,B,C,…のアカウント情報(子属性秘密鍵を含む。)を、すべて各ユーザA,B,C,…のアカウント鍵で暗号化することにより、属性ベース暗号を実現するための大部分の機能を、分散型台帳内に改ざんできない形で、かつ、秘匿すべきアカウント情報については秘匿した状態で組み込むことができるので、分散型台帳の自律分散的なアカウント管理の仕組みの中に属性ベース暗号用の属性情報を組み込むことができる。このため、管理者による改ざんの脅威がない状態での属性管理を実現することができるうえ、中央集権的な要素を極力排除するというDLTの特性を活かすことができる。
【0170】
そして、分散型台帳システム10では、DLTと属性ベース暗号とを組み合わせているので、例えば、証券業界の場合であれば、次のような属性による閲覧制御を行うことができる。すなわち、証券保管振替機構や取引所は、全てのトランザクションデータを閲覧することができる。証券会社は、自分の顧客(株主等)のトランザクションデータであれば、いずれの銘柄(いずれの発行体が発行した株式等の銘柄)のデータであっても閲覧することができるが、他の証券会社の顧客のデータは閲覧することができない。顧客(株主等)は、自分のトランザクションデータであれば、いずれの銘柄のデータでも、いずれの証券会社を介したデータでも閲覧することができるが、他の顧客(株主等)のデータは閲覧することができない。株式等の発行体は、自分の発行した株式等の銘柄のデータであれば、いずれの顧客(株主等)のデータでも、いずれの証券会社を介したデータでも閲覧することができるが、他の発行体のデータは閲覧することができない。このような詳細な閲覧制御を行うことができる。
【0171】
このため、分散型台帳システム10を証券業界に適用した場合には、決算機関の省略による決済コストの削減、発行体に関連する一連の業務負荷の軽減(株主報告、議決権行使、配当等)、議決権行使プロセスの透明化、証券・資金両決済への適用による(T+0)化(約定したその日Tに決済までできることによる決済リスクの削減)、決済関連データにおける災害復旧・事業継続態勢の確立といった効果が得られる。
【0172】
また、分散型台帳システム10を構成する各ノード20,30は、属性追加・削除手段21C,31Cを備えているので、属性変更に対応することができる。そして、属性追加・削除手段21C,31Cは、属性変更(追加または削除)の際に、属性変更依頼を行うユーザおよび属性変更対象のユーザのアカウント鍵をそれぞれのユーザ端末40から受信するようになっているので、これらの双方のユーザに自律的に承認を取り、その両者のアカウント鍵を使ってその後の属性変更に係る処理を自律的に行うことができる。
【0173】
さらに、分散型台帳システム10では、属性識別子および属性リストというパラメータを用意し、これらを各ユーザA,B,C,…のアカウント情報として分散型台帳に暗号化して記憶させておくので、これらのパラメータを使って自律的な属性情報の更新を実現することができる。通常、これらの属性情報は、管理者がリストとして保有しているものであるが、分散型台帳システム10では、分散型台帳上に暗号化して持たせることで、管理者の介在を不要とすることができる。
【0174】
また、レコード復号手段21G,31Gは、復号処理を行う際に、使用する子属性秘密鍵を選択制御する構成とすることもでき、このような構成とした場合には、属性追加・削除手段21C,31Cによる属性変更が行われ、新しい子属性秘密鍵が生成されたときに、その新しい子属性秘密鍵は、それ以降に登録されるレコードの閲覧にしか用いることができず、それよりも前に登録された過去のレコードについては、その新しい子属性秘密鍵を用いることができないようにする制御を行うことができる。従って、新しい子属性秘密鍵が生成されても、それよりも前の時点で閲覧することができなかった過去のレコードについては、依然として閲覧することができないようにすることができる。
【0175】
さらに、親属性鍵生成手段21Jは、親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理を定期的に繰り返す構成とすることもでき、このような構成とした場合には、親属性公開鍵および親属性秘密鍵、並びに子属性秘密鍵が定期的に更新されるので、万一、鍵に関する情報が漏れてしまったときでも、漏れた情報は、これらの鍵の更新後には使用できなくなるため、情報の秘匿性を高めることができる。
【0177】
なお、本発明は前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
【0179】
例えば、前記実施形態では、親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理については、前述したケースLを採用していた。すなわち、ケースLでは、始動ノード20が親属性鍵生成手段21Jを備え、始動ノード20で親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理が行われるようになっていた。従って、始動ノード20は、一般のノード30に対し、親属性鍵生成手段21Jが追加された構成を備えていた。
【0181】
しかし、本発明の分散型台帳システムでは、前述したケースMを採用してもよい。ケースMでは、始動ノード20は存在せず、分散型台帳生成者端末60(前記実施形態の分散型台帳生成者端末60とは異なる構成となるが、説明の便宜上、同じ符号を用いる。)で親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理が行われる。
【0182】
従って、ケースMでは、分散型台帳生成者端末60に、始動ノード20の親属性鍵生成手段21Jに相当する親属性鍵生成手段を設けるとともに、始動ノード20のプログラム記憶手段22に記憶されていた親属性鍵生成プログラムを記憶させる。
【0183】
また、ケースMでは、分散型台帳生成者端末60に設けられた親属性鍵生成手段(21J相当)により親属性公開鍵および親属性秘密鍵を生成するので、前記実施形態の
図8に示す処理の流れとは異なり、分散型台帳生成者端末60で生成した親属性公開鍵を、全てのノード30(ノードX,Y,Z)の分散型台帳記憶手段33に記憶させるために、分散型台帳生成者端末60からネットワーク1を介して複数のノード30のいずれかに送信する。
【0184】
さらに、ケースMでは、前記実施形態の
図8に示す処理の流れとは異なり、分散型台帳生成者端末60で生成した親属性秘密鍵を、分散型台帳生成者端末60からネットワーク1を介して管理装置50へ送信する。但し、ケースRでは、親属性秘密鍵は、管理装置50に記憶されるのではなく、ノードの分散型台帳に記憶されるので、(ケースM+R)の場合には、分散型台帳生成者端末60に設けられた親属性鍵生成手段(21J相当)により生成した親属性秘密鍵を、管理装置50(装置という呼称としているが、端末である。)を操作する管理担当者M2のアカウント情報として全てのノード30(ノードX,Y,Z)の分散型台帳記憶手段33に記憶させるために、分散型台帳生成者端末60からネットワーク1を介して複数のノード30のいずれか若しくは管理装置50(管理担当者M2の操作する端末)へ送信する。後者のように、管理装置50(管理担当者M2の操作する端末)へ送信する場合とは、生成した親属性秘密鍵を、一旦、管理装置50へ送信し、管理装置50から自己(管理担当者M2)のアカウント情報として複数のノード30のいずれかに送信する場合である。
【0185】
なお、前記実施形態では、属性ベース暗号に関連する各種処理用のプログラムも、親属性公開鍵とともに、始動ノード20による処理を起点として、各ノード20,30の分散型台帳記憶手段23,33に配置するようになっていたので、ケースMでも、属性ベース暗号に関連する各種処理用のプログラムを、同様にして分散型台帳生成者端末60による処理を起点として、各ノード30の分散型台帳記憶手段33に配置するようにしてもよい。
【0187】
また、本発明の分散型台帳システムでは、前述したケースNを採用してもよい。ケースNでは、親属性鍵生成手段(21J相当)を実現するためのプログラムも、属性ベース暗号に関連する各種処理用のプログラムとして、台帳型台帳に記憶される。すなわち、ノード30の分散型台帳記憶手段33に記憶されたプログラム(属性ベース暗号に関連する各種処理用のプログラム)を実行することにより、親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理が行われる。このため、始動ノード20は存在せず、すべてのノード30が親属性鍵生成手段(21J相当)を備えることになるが、実際に親属性鍵生成手段(21J相当)による処理を実行するのは、1つのノード30でよい。
【0188】
従って、ケースNでは、親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理を行うにあたり、前記実施形態の
図8に示す処理の流れとは異なり、分散型台帳生成者端末60から始動ノード20にアクセスするのではなく、分散型台帳生成者端末60から一般のノード30(複数のノード30のうちのいずれか)にアクセスし、ノード30の台帳管理手段31Aが、分散型台帳記憶手段33に記憶された属性ベース暗号に関連する各種処理用のプログラムのうちの親属性鍵生成手段(21J相当)を実現するプログラムを読み込み、主メモリ上に配置する。そして、ノード30において、親属性鍵生成手段(21J相当)により、親属性鍵(親属性公開鍵および親属性秘密鍵)の生成処理を実行する。また、ノード30で生成した親属性秘密鍵は、ノード30からネットワーク1を介して管理装置50へ送信する。
【0190】
また、前記実施形態では、親属性秘密鍵の記憶処理(保存場所)、および子属性秘密鍵の生成処理については、前述したケースPを採用していた。すなわち、ケースPでは、親属性秘密鍵は、管理装置50に記憶されていた。また、子属性秘密鍵は、ノード30(始動ノード20でもよい。)で生成されていた。
【0192】
しかし、本発明の分散型台帳システムでは、前述したケースQを採用してもよい。ケースQでは、前記実施形態(ケースP)の場合と同様に、
図12に示すように、親属性秘密鍵は、管理装置250に記憶される。一方、子属性秘密鍵は、
図13に示すように、ノード230(ノードX,Y,Z)ではなく、管理装置250で生成される。従って、ケースQでの子属性秘密鍵の生成時の処理の流れは、前記実施形態の
図9に示す処理の流れとは異なるものとなる。
【0193】
図12において、管理装置250は、属性管理を含む各種処理を実行する処理手段251と、親属性秘密鍵を記憶する親属性秘密鍵記憶手段252とを備えている。
【0194】
処理手段251は、始動ノードの親属性鍵生成手段21Jによりネットワーク1を介して送信されてくる親属性秘密鍵(但し、ケースMでは、分散型台帳生成者端末60からネットワーク1を介して送信されてくる親属性秘密鍵となる。)を受信し、受信した親属性秘密鍵を親属性秘密鍵記憶手段252に記憶させる処理を実行する親属性秘密鍵受信手段251Aと、子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段251Bとを含んで構成されている。このうち親属性秘密鍵受信手段251Aは、前記実施形態の親属性秘密鍵受信手段51Aと同様である。一方、子属性秘密鍵生成手段251Bは、前記実施形態の子属性秘密鍵生成手段21H,31Hに相当する処理を行うものであるが、前記実施形態では、子属性秘密鍵生成手段21H,31Hは、各ノード20,30に設けられていたのに対し、この子属性秘密鍵生成手段251Bは、管理装置250に設けられている点が異なる。
【0195】
図13において、ユーザ(ここでは、ユーザAとする。)が、自分の子属性秘密鍵の生成のために、ユーザ端末40からノード230(始動ノードが存在するケースでは、始動ノードでもよいが、ここではノードX,Y,Zのいずれかとする。また、前記実施形態のノード30とは異なり、子属性秘密鍵の生成を行わないことから、符号を230に変えている。)にアクセスすると、台帳管理手段31Aにより、分散型台帳記憶手段33から、属性ベース暗号に関連する各種処理用のプログラムのうちのアカウント生成手段231Bを実現するプログラムが読み込まれ、主メモリ上に配置される。なお、前記実施形態(ケースP)では、子属性秘密鍵生成手段31Hを実現するプログラムも読み込んでいたが、ノード230では、子属性秘密鍵の生成を行わないことから、アカウント生成手段231Bを実現するプログラムの読込だけでよい。
【0196】
そして、アカウント生成手段231Bにより、ユーザAのID(ユーザ識別情報)およびアカウント鍵を受け付けると(ステップS81)、受け付けたユーザAのIDおよびアカウント鍵を用いて、分散型台帳記憶手段33から、ユーザAのアカウント情報に含まれる属性リストを取得し(ステップS82)、取得した属性リストとともに子属性秘密鍵の生成依頼を、ネットワーク1を介して管理装置250へ送信する(ステップS83)。なお、前記実施形態(ケースP)では、
図9のステップS23に示すように、アカウント生成手段31Bにより、子属性秘密鍵の生成指示(属性リストを含む。)を、子属性秘密鍵生成手段31Hに送っていた。
【0197】
管理装置250では、子属性秘密鍵生成手段251Bにより、ノード230からネットワーク1を介して送信されてくる子属性秘密鍵の生成依頼(ユーザAの属性リストを含む。)を受信すると(ステップS84)、親属性秘密鍵記憶手段252に記憶されている親属性秘密鍵および受信したユーザAの属性リストを用いて、その属性リストで示される属性(ユーザAという属性、あるいはこの時点で属性リストが更新されていれば、例えば「ユーザA+ユーザC」という属性等である場合もある。)を埋め込んだ子属性秘密鍵を生成し(ステップS85)、生成した子属性秘密鍵を、ネットワーク1を介してノード230へ送信する(ステップS86)。なお、上記のステップS83,S84の子属性秘密鍵の生成依頼の送受信時には、なりすましによる不正な鍵情報の取得を防止するため、人(管理担当者M2)による確認や、電子署名などの別の暗号化技術により、依頼の真偽を確認する処理(DLT若しくは認証済みノードから送られた依頼であることを確認する処理)を施す。
【0198】
ノード230では、アカウント生成手段231Bにより、管理装置250からネットワーク1を介して送信されてくる子属性秘密鍵を受信すると、受信した子属性秘密鍵を、台帳管理手段31Aに引き渡して保存指示を行う(ステップS87)。台帳管理手段31Aは、子属性秘密鍵を受け取ると、受け取った子属性秘密鍵を、自分(自ノード)を含む全てのノード230(始動ノードが存在するケースでは、始動ノードも含む。)の分散型台帳記憶手段33に記憶させるための処理を実行する(ステップS88)。
【0199】
具体的には、台帳管理手段31Aは、子属性秘密鍵を含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分(自ノード)の分散型台帳記憶手段33に保存するとともに、他のノード230(始動ノードが存在するケースでは、始動ノードも含む。)へ配信する(ステップS88)。この際、ブロックの生成処理、承認処理、他のノード230(始動ノードが存在するケースでは、始動ノードも含む。)への配信処理は、必ずしも自分(自ノード)で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード230に行わせてもよい。
【0200】
また、図示は省略されているが、他のノード230(始動ノードが存在するケースでは、始動ノードも含む。)では、台帳管理手段31Aにより、配信元のノード230からネットワーク1を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段33に保存する。
【0202】
また、本発明の分散型台帳システムでは、前述したケースRを採用してもよい。ケースRでは、
図14に示すように、親属性秘密鍵は、管理装置350ではなく、各ノード330(始動ノードが存在するケースでは、始動ノードも含む。)の分散型台帳に記憶される。また、子属性秘密鍵は、各ノード330(始動ノードが存在するケースでは、始動ノードも含む。)で生成されるが、この点は、前記実施形態(ケースP)の場合と同様である。
【0203】
従って、ケースRでは、親属性鍵生成手段21J(または21J相当)により生成した親属性秘密鍵を、管理装置350を操作する管理担当者M2のアカウント情報として全てのノード330(ノードX,Y,Zであるが、始動ノードが存在するケースでは、始動ノードも含む。)の分散型台帳記憶手段333に記憶させる。なお、管理装置350は、親属性秘密鍵を記憶しないので、各ノード330からの要求に応じて親属性秘密鍵を提供するサーバの役割は果たさなくてよいため、装置という呼称としているが、端末である。
【0204】
図14において、ユーザ(ここでは、ユーザAとする。)が、自分の子属性秘密鍵の生成のために、ユーザ端末40からノード330(始動ノードが存在するケースでは、始動ノードでもよいが、ここではノードX,Y,Zのいずれかとする。また、前記実施形態のノード30とは異なり、親属性秘密鍵を記憶していることから、符号を330に変えている。)にアクセスすると、台帳管理手段31Aにより、分散型台帳記憶手段333から、属性ベース暗号に関連する各種処理用のプログラムのうちのアカウント生成手段31Bおよび子属性秘密鍵生成手段331Hを実現するプログラムが読み込まれ、主メモリ上に配置される。ここで、子属性秘密鍵生成手段331Hは、前記実施形態(ケースP)の子属性秘密鍵生成手段31Hとは、親属性秘密鍵の取得方法が異なるので、異なる符号を付している。
【0205】
そして、アカウント生成手段31Bにより、ユーザAのID(ユーザ識別情報)およびアカウント鍵を受け付けると(ステップS91)、受け付けたユーザAのIDおよびアカウント鍵を用いて、分散型台帳記憶手段333から、ユーザAのアカウント情報に含まれる属性リストを取得し(ステップS92)、取得した属性リストとともに子属性秘密鍵の生成指示を、子属性秘密鍵生成手段331Hに送る(ステップS93)。
【0206】
子属性秘密鍵生成手段331Hは、アカウント生成手段31Bからの子属性秘密鍵の生成指示(ユーザAの属性リストを含む。)を受け取ると(ステップS94)、親属性秘密鍵取得用のアカウント鍵の要求信号を、ネットワーク1を介して管理装置350へ送信する(ステップS95)。管理装置350では、親属性秘密鍵取得用のアカウント鍵の要求信号を受信すると(ステップS96)、その要求がノード330からの正当なものであれば、管理担当者M2のアカウント鍵を、ネットワーク1を介してノード330へ送信する(ステップS97)。なお、上記のステップS95,S96の親属性秘密鍵取得用のアカウント鍵の要求信号の送受信時には、なりすましによる不正な鍵情報の取得を防止するため、人(管理担当者M2)による確認や、電子署名などの別の暗号化技術により、要求の真偽を確認する処理(DLT若しくは認証済みノードから送られた要求であることを確認する処理)を施す。
【0207】
ノード330では、子属性秘密鍵生成手段331Hにより、管理装置350からネットワーク1を介して送信されてくる管理担当者M2のアカウント鍵を受信すると(ステップS98)、受信した管理担当者M2のアカウント鍵を用いて、分散型台帳記憶手段333から、管理担当者M2のアカウント情報に含まれる親属性秘密鍵を取得し(ステップS99)、取得した親属性秘密鍵および上述したステップS94でアカウント生成手段31Bから受け取ったユーザAの属性リストを用いて、その属性リストで示される属性(ユーザAという属性、あるいはこの時点で属性リストが更新されていれば、例えば「ユーザA+ユーザC」という属性等である場合もある。)を埋め込んだ子属性秘密鍵を生成し(ステップS100)、生成した子属性秘密鍵をアカウント生成手段31Bに引き渡す(ステップS101)。
【0208】
アカウント生成手段31Bは、子属性秘密鍵生成手段331Hからの子属性秘密鍵を受け取ると、受け取った子属性秘密鍵を、台帳管理手段31Aに引き渡して保存指示を行う(ステップS102)。台帳管理手段31Aは、子属性秘密鍵を受け取ると、受け取った子属性秘密鍵を、自分(自ノード)を含む全てのノード330(始動ノードが存在するケースでは、始動ノードも含む。)の分散型台帳記憶手段333に記憶させるための処理を実行する(ステップS103)。
【0209】
具体的には、台帳管理手段31Aは、子属性秘密鍵を含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分(自ノード)の分散型台帳記憶手段333に保存するとともに、他のノード330(始動ノードが存在するケースでは、始動ノードも含む。)へ配信する(ステップS103)。この際、ブロックの生成処理、承認処理、他のノード330(始動ノードが存在するケースでは、始動ノードも含む。)への配信処理は、必ずしも自分(自ノード)で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード330に行わせてもよい。
【0210】
また、図示は省略されているが、他のノード330(始動ノードが存在するケースでは、始動ノードも含む。)では、台帳管理手段31Aにより、配信元のノード330からネットワーク1を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段333に保存する。
【0212】
さらに、前記実施形態では、ユーザ端末40からの子属性秘密鍵の生成、レコード登録、レコード閲覧、属性変更(追加、削除)のためのアクセスがあったときに、分散型台帳管理の基本的な処理(属性ベース暗号以外の処理)を取り扱う台帳管理手段21A,31Aが、分散型台帳記憶手段23,33から、属性ベース暗号に関連する各種処理用のプログラムを読み込んで主メモリ上に配置する構成とされていたが、ユーザ端末40からのアクセスを待たずに、属性ベース暗号に関連する各種処理用のプログラムを常駐させる構成としてもよい。
【解決手段】P2Pネットワークで接続された複数のノード30を含んでなる分散型台帳システム10を構成するにあたり、各ノード30に設けられた分散型台帳記憶手段33に、ユーザによる登録レコード、子属性秘密鍵を含む各ユーザのアカウント情報、属性ベース暗号に関連する各種処理用のプログラム、および親属性公開鍵を記憶させ、分散型台帳上に記録されたプログラムにより、レコード記録手段31D、レコード暗号化手段31E、レコード取得手段31F、およびレコード復号手段31Gを実現し、レコードの登録および閲覧の場面において属性ベース暗号に基づく暗号化および復号処理を行うようにした。