(57)【要約】【課題】中央集権的な要素が強くなく、かつ、記録される情報の秘匿化を図ることができる分散型台帳システムを提供する。【解決手段】Ｐ２Ｐネットワークで接続された複数のノード３０を含んでなる分散型台帳システム１０を構成するにあたり、各ノード３０に設けられた分散型台帳記憶手段３３に、ユーザによる登録レコード、子属性秘密鍵を含む各ユーザのアカウント情報、属性ベース暗号に関連する各種処理用のプログラム、および親属性公開鍵を記憶させ、分散型台帳上に記録されたプログラムにより、レコード記録手段３１Ｄ、レコード暗号化手段３１Ｅ、レコード取得手段３１Ｆ、およびレコード復号手段３１Ｇを実現し、レコードの登録および閲覧の場面において属性ベース暗号に基づく暗号化および復号処理を行うようにした。【選択図】図１
2018098564.tif 000002
【特許請求の範囲】
【請求項１】
ピア・ツー・ピア・ネットワークで接続された複数のコンピュータからなる複数のノードを含んで構成され、これらの複数のノードの各々が同一内容のデータを共有した状態で記録するための分散型台帳を有する分散型台帳システムであって、
前記複数のノードの各々は、
前記分散型台帳として、ユーザにより登録されたレコード、属性ベース暗号用の子属性秘密鍵を含む各ユーザのアカウント情報、属性ベース暗号に関連する処理用のプログラム、および属性ベース暗号用の親属性公開鍵を記憶する分散型台帳記憶手段と、
この分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるレコード記録手段、レコード暗号化手段、レコード取得手段、およびレコード復号手段とを備え、
前記レコード記録手段は、
ユーザにより登録されるレコードおよび当該ユーザによる前記レコードの閲覧権限を指定するポリシーをユーザ端末からネットワークを介して受信するとともに、前記レコード暗号化手段により暗号化された前記レコードを、前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記レコード暗号化手段は、
前記レコード記録手段により受信した前記レコードおよび前記ポリシー、並びに前記分散型台帳記憶手段に記憶された前記親属性公開鍵を用いて、前記レコードの暗号化処理を実行する構成とされ、
前記レコード取得手段は、
ユーザ端末からユーザのアカウント鍵とともにネットワークを介して送信されてくる当該ユーザによるレコードの閲覧要求を受信して前記分散型台帳記憶手段から閲覧要求に係る前記レコードを取得するとともに、前記レコード復号手段により復号された前記レコードの表示用データを、ネットワークを介して前記ユーザ端末に送信する処理を実行する構成とされ、
前記レコード復号手段は、
閲覧要求を行ったユーザの前記アカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記子属性秘密鍵を取得し、取得した前記子属性秘密鍵を用いて、前記レコード取得手段により取得した前記レコードの復号処理を実行する構成とされている
ことを特徴とする分散型台帳システム。
【請求項２】
前記複数のノードを構成する各コンピュータとは別体の管理装置を備え、
前記複数のノードには、少なくとも1つの始動ノードが含まれ、
前記始動ノードは、
前記親属性公開鍵および親属性秘密鍵を生成し、生成した前記親属性公開鍵を前記分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した前記親属性秘密鍵をネットワークを介して前記管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
前記管理装置は、
前記親属性秘密鍵を記憶する親属性秘密鍵記憶手段を備え、
前記複数のノードの各々は、
前記分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
前記アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記アカウント情報に含まれる属性リストを取得する処理を実行するとともに、前記子属性秘密鍵生成手段により生成された前記子属性秘密鍵を前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記子属性秘密鍵生成手段は、
前記管理装置からネットワークを介して前記親属性秘密鍵を取得し、取得した前記親属性秘密鍵および前記アカウント生成手段により取得した当該ユーザの前記属性リストを用いて、当該ユーザの前記子属性秘密鍵を生成する処理を実行する構成とされている
ことを特徴とする請求項１に記載の分散型台帳システム。
【請求項３】
前記複数のノードを構成する各コンピュータとは別体の管理装置を備え、
前記複数のノードには、少なくとも1つの始動ノードが含まれ、
前記始動ノードは、
前記親属性公開鍵および親属性秘密鍵を生成し、生成した前記親属性公開鍵を前記分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した前記親属性秘密鍵をネットワークを介して前記管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
前記管理装置は、
前記親属性秘密鍵を記憶する親属性秘密鍵記憶手段と、前記子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段とを備え、
前記複数のノードの各々は、
前記分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段を備え、
前記アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記アカウント情報に含まれる属性リストを取得し、取得した前記属性リストをネットワークを介して前記管理装置へ送信する処理を実行するとともに、前記管理装置からネットワークを介して送信されてくる前記子属性秘密鍵を受信し、受信した前記子属性秘密鍵を前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記子属性秘密鍵生成手段は、
前記アカウント生成手段によりネットワークを介して送信されてくる当該ユーザの前記属性リストを受信し、前記親属性秘密鍵記憶手段に記憶された前記親属性秘密鍵および受信した当該ユーザの前記属性リストを用いて、当該ユーザの前記子属性秘密鍵を生成する処理を実行する構成とされている
ことを特徴とする請求項１に記載の分散型台帳システム。
【請求項４】
前記複数のノードを構成する各コンピュータとは別体の管理装置を備え、
前記複数のノードには、少なくとも1つの始動ノードが含まれ、
前記始動ノードは、
前記親属性公開鍵および親属性秘密鍵を生成し、生成した前記親属性公開鍵を前記分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した前記親属性秘密鍵を前記管理装置を操作する管理担当者のアカウント情報として前記分散型台帳記憶手段に記憶させるための処理を実行する親属性鍵生成手段を備え、
前記複数のノードの各々は、
前記分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
前記アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記アカウント情報に含まれる属性リストを取得する処理を実行するとともに、前記子属性秘密鍵生成手段により生成された前記子属性秘密鍵を前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記子属性秘密鍵生成手段は、
前記管理装置からネットワークを介して前記管理担当者のアカウント鍵を取得し、取得した前記アカウント鍵を用いて、前記分散型台帳記憶手段に記憶された前記親属性秘密鍵を取得し、取得した前記親属性秘密鍵および前記アカウント生成手段により取得した当該ユーザの前記属性リストを用いて、当該ユーザの前記子属性秘密鍵を生成する処理を実行する構成とされている
ことを特徴とする請求項１に記載の分散型台帳システム。
【請求項５】
前記複数のノードを構成する各コンピュータとは別体の分散型台帳生成者端末および管理装置を備え、
前記分散型台帳生成者端末は、
前記親属性公開鍵および親属性秘密鍵を生成し、生成した前記親属性公開鍵を前記分散型台帳記憶手段に記憶させるためにネットワークを介して前記複数のノードのいずれかに送信する処理を実行するとともに、生成した前記親属性秘密鍵をネットワークを介して前記管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
前記管理装置は、
前記親属性秘密鍵を記憶する親属性秘密鍵記憶手段を備え、
前記複数のノードの各々は、
前記分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
前記アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記アカウント情報に含まれる属性リストを取得する処理を実行するとともに、前記子属性秘密鍵生成手段により生成された前記子属性秘密鍵を前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記子属性秘密鍵生成手段は、
前記管理装置からネットワークを介して前記親属性秘密鍵を取得し、取得した前記親属性秘密鍵および前記アカウント生成手段により取得した当該ユーザの前記属性リストを用いて、当該ユーザの前記子属性秘密鍵を生成する処理を実行する構成とされている
ことを特徴とする請求項１に記載の分散型台帳システム。
【請求項６】
前記複数のノードを構成する各コンピュータとは別体の分散型台帳生成者端末および管理装置を備え、
前記分散型台帳生成者端末は、
前記親属性公開鍵および親属性秘密鍵を生成し、生成した前記親属性公開鍵を前記分散型台帳記憶手段に記憶させるためにネットワークを介して前記複数のノードのいずれかに送信する処理を実行するとともに、生成した前記親属性秘密鍵をネットワークを介して前記管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
前記管理装置は、
前記親属性秘密鍵を記憶する親属性秘密鍵記憶手段と、前記子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段とを備え、
前記複数のノードの各々は、
前記分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段を備え、
前記アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記アカウント情報に含まれる属性リストを取得し、取得した前記属性リストをネットワークを介して前記管理装置へ送信する処理を実行するとともに、前記管理装置からネットワークを介して送信されてくる前記子属性秘密鍵を受信し、受信した前記子属性秘密鍵を前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記子属性秘密鍵生成手段は、
前記アカウント生成手段によりネットワークを介して送信されてくる当該ユーザの前記属性リストを受信し、前記親属性秘密鍵記憶手段に記憶された前記親属性秘密鍵および受信した当該ユーザの前記属性リストを用いて、当該ユーザの前記子属性秘密鍵を生成する処理を実行する構成とされている
ことを特徴とする請求項１に記載の分散型台帳システム。
【請求項７】
前記複数のノードを構成する各コンピュータとは別体の分散型台帳生成者端末および管理装置を備え、
前記分散型台帳生成者端末は、
前記親属性公開鍵および親属性秘密鍵を生成し、生成した前記親属性公開鍵を前記分散型台帳記憶手段に記憶させるためにネットワークを介して前記複数のノードのいずれかに送信する処理を実行するとともに、生成した前記親属性秘密鍵を前記管理装置を操作する管理担当者のアカウント情報として前記分散型台帳記憶手段に記憶させるためにネットワークを介して前記複数のノードのいずれか若しくは前記管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
前記複数のノードの各々は、
前記分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
前記アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記アカウント情報に含まれる属性リストを取得する処理を実行するとともに、前記子属性秘密鍵生成手段により生成された前記子属性秘密鍵を前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記子属性秘密鍵生成手段は、
前記管理装置からネットワークを介して前記管理担当者のアカウント鍵を取得し、取得した前記アカウント鍵を用いて、前記分散型台帳記憶手段に記憶された前記親属性秘密鍵を取得し、取得した前記親属性秘密鍵および前記アカウント生成手段により取得した当該ユーザの前記属性リストを用いて、当該ユーザの前記子属性秘密鍵を生成する処理を実行する構成とされている
ことを特徴とする請求項１に記載の分散型台帳システム。
【請求項８】
前記複数のノードを構成する各コンピュータとは別体の管理装置を備え、
前記複数のノードの各々は、
前記分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段、子属性秘密鍵生成手段、および親属性鍵生成手段を備え、
前記親属性鍵生成手段は、
前記親属性公開鍵および親属性秘密鍵を生成し、生成した前記親属性公開鍵を前記分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した前記親属性秘密鍵をネットワークを介して前記管理装置へ送信する処理を実行する構成とされ、
前記管理装置は、
前記親属性秘密鍵を記憶する親属性秘密鍵記憶手段を備え、
前記アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記アカウント情報に含まれる属性リストを取得する処理を実行するとともに、前記子属性秘密鍵生成手段により生成された前記子属性秘密鍵を前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記子属性秘密鍵生成手段は、
前記管理装置からネットワークを介して前記親属性秘密鍵を取得し、取得した前記親属性秘密鍵および前記アカウント生成手段により取得した当該ユーザの前記属性リストを用いて、当該ユーザの前記子属性秘密鍵を生成する処理を実行する構成とされている
ことを特徴とする請求項１に記載の分散型台帳システム。
【請求項９】
前記複数のノードを構成する各コンピュータとは別体の管理装置を備え、
前記複数のノードの各々は、
前記分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および親属性鍵生成手段を備え、
前記親属性鍵生成手段は、
前記親属性公開鍵および親属性秘密鍵を生成し、生成した前記親属性公開鍵を前記分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した前記親属性秘密鍵をネットワークを介して前記管理装置へ送信する処理を実行する構成とされ、
前記管理装置は、
前記親属性秘密鍵を記憶する親属性秘密鍵記憶手段と、前記子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段とを備え、
前記アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記アカウント情報に含まれる属性リストを取得し、取得した前記属性リストをネットワークを介して前記管理装置へ送信する処理を実行するとともに、前記管理装置からネットワークを介して送信されてくる前記子属性秘密鍵を受信し、受信した前記子属性秘密鍵を前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記子属性秘密鍵生成手段は、
前記アカウント生成手段によりネットワークを介して送信されてくる当該ユーザの前記属性リストを受信し、前記親属性秘密鍵記憶手段に記憶された前記親属性秘密鍵および受信した当該ユーザの前記属性リストを用いて、当該ユーザの前記子属性秘密鍵を生成する処理を実行する構成とされている
ことを特徴とする請求項１に記載の分散型台帳システム。
【請求項１０】
前記複数のノードを構成する各コンピュータとは別体の管理装置を備え、
前記複数のノードの各々は、
前記分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段、子属性秘密鍵生成手段、および親属性鍵生成手段を備え、
前記親属性鍵生成手段は、
前記親属性公開鍵および親属性秘密鍵を生成し、生成した前記親属性公開鍵を前記分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した前記親属性秘密鍵を前記管理装置を操作する管理担当者のアカウント情報として前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記アカウント情報に含まれる属性リストを取得する処理を実行するとともに、前記子属性秘密鍵生成手段により生成された前記子属性秘密鍵を前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
前記子属性秘密鍵生成手段は、
前記管理装置からネットワークを介して前記管理担当者のアカウント鍵を取得し、取得した前記アカウント鍵を用いて、前記分散型台帳記憶手段に記憶された前記親属性秘密鍵を取得し、取得した前記親属性秘密鍵および前記アカウント生成手段により取得した当該ユーザの前記属性リストを用いて、当該ユーザの前記子属性秘密鍵を生成する処理を実行する構成とされている
ことを特徴とする請求項１に記載の分散型台帳システム。
【請求項１１】
前記分散型台帳記憶手段に記憶された前記属性ベース暗号に関連する処理用のプログラムにより実現される属性追加・削除手段を備え、
前記属性追加・削除手段は、
属性変更依頼を行うユーザの操作するユーザ端末からネットワークを介して送信されてくる属性変更依頼を行うユーザのアカウント鍵を受信し、受信した属性変更依頼を行うユーザのアカウント鍵を用いて、属性変更依頼を行うユーザのアカウント情報に含まれる属性識別子を前記分散型台帳記憶手段から取得するとともに、属性変更対象のユーザの操作するユーザ端末からネットワークを介して送信されてくる属性変更対象のユーザのアカウント鍵を受信し、受信した属性変更対象のユーザのアカウント鍵を用いて、属性変更対象のユーザのアカウント情報に含まれる属性リストを前記分散型台帳記憶手段から取得し、取得した属性変更対象のユーザの前記属性リストおよび属性変更依頼を行うユーザの前記属性識別子を用いて、前記属性リストに前記属性識別子を追加した属性若しくは前記属性リストから前記属性識別子を削除した属性を埋め込んだ新しい前記子属性秘密鍵を生成し、生成した新しい前記子属性秘密鍵、および前記属性リストに前記属性識別子を追加した更新後の属性リスト若しくは前記属性リストから前記属性識別子を削除した更新後の属性リストを、属性変更対象のユーザのアカウント情報として前記分散型台帳記憶手段に記憶させるための処理を実行する構成とされている
ことを特徴とする請求項１〜１０のいずれかに記載の分散型台帳システム。
【請求項１２】
前記レコード復号手段は、
閲覧要求を行ったユーザの前記アカウント鍵を用いて前記分散型台帳記憶手段から当該ユーザの前記子属性秘密鍵を取得する際には、閲覧要求に係るレコードが前記分散型台帳記憶手段に記憶された時点以前に前記分散型台帳記憶手段に記憶された前記子属性秘密鍵のうちの最も新しい前記子属性秘密鍵を取得して復号処理を実行する構成とされている
ことを特徴とする請求項１１に記載の分散型台帳システム。
【請求項１３】
前記親属性鍵生成手段は、
前記親属性公開鍵および親属性秘密鍵を生成する処理を定期的に繰り返す構成とされ、
前記分散型台帳記憶手段に記憶されている前記親属性公開鍵は、
前記親属性鍵生成手段により定期的に生成される前記親属性公開鍵により定期的に更新され、
前記分散型台帳記憶手段に記憶されている全てのユーザの前記子属性秘密鍵は、
前記親属性鍵生成手段により定期的に生成される前記親属性秘密鍵および前記分散型台帳記憶手段に記憶されている各ユーザの前記アカウント情報に含まれる属性リストを用いて生成される子属性秘密鍵により定期的に更新される
ことを特徴とする請求項１〜１２のいずれかに記載の分散型台帳システム。
【請求項１４】
請求項１〜１３のいずれかに記載の分散型台帳システムとして、コンピュータを機能させるためのプログラム。
【請求項１５】
請求項１〜１３のいずれかに記載の分散型台帳システムを構成するノードとして、コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ピア・ツー・ピア・ネットワークで接続された複数のコンピュータからなる複数のノードを含んで構成され、これらの複数のノードの各々が同一内容のデータを共有した状態で記録するための分散型台帳を有する分散型台帳システムおよびプログラムに係り、例えば、証券・金融市場における取引データの記録等に利用できる。
【背景技術】
【０００２】
近年、取引データの記録技術として、ブロックチェーン等の分散型台帳技術（Distributed Ledger Technology。以下「ＤＬＴ」という。）が用いられるようになってきた。このＤＬＴは、Ｐ２Ｐ（ピア・ツー・ピア）ネットワークで接続された複数のコンピュータ（本願では、これらをノードと呼ぶ。）により構成され、関係者間で情報を持ち合うことで公衆監視による所有証明を可能とし、中央集権の仕組みや組織を不要とする技術であり、仮想通貨であるビットコインの実現のために考案されたものである。
【０００３】
上記のビットコインでは、過去の全ての取引記録を取引当事者のＩＤとともに公開し、いずれのＩＤの者がどれ位のビットコインを所有しているかを把握することができるようになっているので、中央管理機関を設置することなく、取引についての高い透明性および過去の取引データの改ざんの困難性を担保することができる。そして、各ＩＤは、匿名となっているので、その点では、投資家の個人情報については、一応、秘匿性があるといえる。
【０００４】
しかし、このようなビットコインと同様または類似するＤＬＴの仕組みを、より広く証券・金融市場における取引について応用したとすると、大口取引や大口ポジションの存在がリアルタイムに公開されてしまうので、フロントランニングを誘引する可能性があるほか、公開された情報と法定開示書類等とを照合することにより、本来は匿名であるＤＬＴ上のＩＤと投資家とが紐付けられてしまう可能性がある。また、相対取引のケースでは、数量や価格等の取引条件を取引当事者以外に対して公開したくない場合もある。
【０００５】
従って、ＤＬＴ上の過去の取引記録について、取引当事者以外は参照できないようにすることが必要な場合もある。すなわち、必要な人や必要なグループだけが情報を参照することができ、それ以外の人やグループは情報を参照することができないようにし、情報の秘匿化を図ることが必要な場合もある。例えば、証券・金融取引において、ネットワークの参加者が互いに信頼できる限られた金融機関だけとなるいわゆるコンソーシアム型のＤＬＴを利用する場合には、全取引情報が含まれた分散型台帳を複数の金融機関で共有することになるが、この場合、ネットワークの参加ノードを管理する金融機関であっても自社以外の取引情報は参照することができないという秘匿性が要求されることになり、この要件が満たされないと、共有型インフラとしてのＤＬＴの利用は進まないと考えられている。
【０００６】
ＤＬＴにおいて、このような情報の秘匿化を図るには、ＤＬＴと公開鍵暗号方式とを組み合わせることが考えられる。このような組合せの仕組みとしては、例えば、取引所、清算機関、振替機関といった証券・金融市場インフラの運営体が、中立的第三者として公開鍵暗号基盤における認証局の役割を担い、ネットワークへの参加資格を有する各金融機関に対して電子証明書を発行し、各金融機関が、取引を実行する際に自身の電子証明書を添付することにより全取引情報を暗号化するという仕組みが考えられ、これにより、各金融機関が、参照権限を有するデータ（自身が取引当事者である取引の情報や、自社の顧客の口座情報）のみを参照できるようになるというアクセス制御を実現することができる。
【０００７】
なお、公開鍵暗号の１つとして、暗号化されたデータを復号できる者を属性に応じた条件で指定することができる属性ベース暗号という方式があり、本発明では、この属性ベース暗号を利用する。この点で、本発明に関連する技術としては、属性値の範囲指定が可能な属性ベース暗号システム（特許文献１参照）、属性の一部にワイルドカードを許容して属性ベース暗号を行うことが可能な属性ベース暗号システム（特許文献２参照）等が知られている。但し、これらの属性ベース暗号システムは、分散型台帳を利用するシステムではない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１６−１５５７１号公報
【特許文献２】特開２０１５−１８０５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、情報の秘匿化を図るために、前述した取引所、清算機関、振替機関といった証券・金融市場インフラの運営体に認証局の役割を担わせる仕組みを構築するとなると、その際に必要となる認証局は、中央集権的な要素が強いので、ＤＬＴの長所である非中央集権の要素が薄まってしまうという問題がある。
【００１０】
また、ＤＬＴを形成するネットワークの参加者は、様々な属性を有している場合があるので、情報の秘匿化を図る際には、それぞれの属性に応じて各参加者に情報の参照権限を付与する仕組みの構築が望まれる。この際、参加者（情報閲覧者）の属性は固定的であるとは限らず、変更されることもあるので、その属性変更に対応可能な仕組みの構築が望まれる場合もある。しかし、情報登録後の変更は不可であるというＤＬＴの特性があり、そのような特性を有するＤＬＴにおいて、属性変更に対応可能な仕組みを構築することになるので、一見すると、相容れない組合せの実現を目指すことになる。
【００１１】
以上より、ＤＬＴの長所である非中央集権の要素を薄めることなく、分散型台帳に記録される情報の秘匿化を図ることができる仕組みを構築することが望まれ、さらには、情報の秘匿化を図る際に、ネットワークの参加者の属性変化に対応可能な仕組みとすることが望まれる。
【００１２】
本発明の目的は、中央集権的な要素が強くなく、かつ、記録される情報の秘匿化を図ることができる分散型台帳システムおよびプログラムを提供するところにある。
【課題を解決するための手段】
【００１３】
本発明は、ピア・ツー・ピア・ネットワークで接続された複数のコンピュータからなる複数のノードを含んで構成され、これらの複数のノードの各々が同一内容のデータを共有した状態で記録するための分散型台帳を有する分散型台帳システムであって、
複数のノードの各々は、
分散型台帳として、ユーザにより登録されたレコード、属性ベース暗号用の子属性秘密鍵を含む各ユーザのアカウント情報、属性ベース暗号に関連する処理用のプログラム、および属性ベース暗号用の親属性公開鍵を記憶する分散型台帳記憶手段と、
この分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるレコード記録手段、レコード暗号化手段、レコード取得手段、およびレコード復号手段とを備え、
レコード記録手段は、
ユーザにより登録されるレコードおよび当該ユーザによるレコードの閲覧権限を指定するポリシーをユーザ端末からネットワークを介して受信するとともに、レコード暗号化手段により暗号化されたレコードを、分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
レコード暗号化手段は、
レコード記録手段により受信したレコードおよびポリシー、並びに分散型台帳記憶手段に記憶された親属性公開鍵を用いて、レコードの暗号化処理を実行する構成とされ、
レコード取得手段は、
ユーザ端末からユーザのアカウント鍵とともにネットワークを介して送信されてくる当該ユーザによるレコードの閲覧要求を受信して分散型台帳記憶手段から閲覧要求に係るレコードを取得するとともに、レコード復号手段により復号されたレコードの表示用データを、ネットワークを介してユーザ端末に送信する処理を実行する構成とされ、
レコード復号手段は、
閲覧要求を行ったユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザの子属性秘密鍵を取得し、取得した子属性秘密鍵を用いて、レコード取得手段により取得したレコードの復号処理を実行する構成とされていることを特徴とするものである。
【００１４】
このような本発明の分散型台帳システムにおいては、ユーザにより登録されるレコードは、分散型台帳に記録され、複数のノードで共有された状態で保存されるので、取引についての高い透明性および過去の取引データの改ざんの困難性は担保されているため、ＤＬＴの持つ基本的な特徴はそのまま活かされている。
【００１５】
また、本発明では、情報の秘匿化を図るために、ＤＬＴと属性ベース暗号とを組み合わせているが、前述したＤＬＴと公開鍵暗号方式との組合せの場合（取引所、清算機関、振替機関といった証券・金融市場インフラの運営体が認証局となり、ネットワークへの参加資格を有する各金融機関に対して電子証明書を発行する仕組みの場合）のように、取引データの登録（暗号化）および参照（復号）の場面においてＤＬＴと公開鍵暗号方式とを組み合わせるだけの単純な組合せではない。すなわち、本発明では、属性ベース暗号を実現するための機能の多くを分散型台帳内に組み込んでいる点に特徴がある。より具体的には、属性ベース暗号用の子属性秘密鍵を含む各ユーザのアカウント情報、属性ベース暗号に関連する処理用のプログラム、および属性ベース暗号用の親属性公開鍵が、分散型台帳に組み込まれている。このため、これらのアカウント情報（子属性秘密鍵を含む。）、プログラム、および親属性公開鍵を、改ざんできない形で複数のノードに保持させることが可能となる。
【００１６】
従って、各ユーザのアカウント情報（子属性秘密鍵を含む。）を、すべて各ユーザのアカウント鍵で暗号化することにより、属性ベース暗号を実現するための大部分の機能を、分散型台帳内に改ざんできない形で、かつ、秘匿すべきアカウント情報については秘匿した状態で組み込むことが可能となるので、分散型台帳の自律分散的なアカウント管理の仕組みの中に属性ベース暗号用の属性情報を組み込むことが可能となる。
【００１７】
このため、管理者による改ざんの脅威がない状態での属性管理を実現することができるうえ、中央集権的な要素を極力排除するというＤＬＴの特性を活かすことができ、これらにより前記目的が達成される。
【００１８】
＜親属性公開鍵および親属性秘密鍵の生成、親属性秘密鍵の記憶、並びに子属性秘密鍵の生成の詳細＞
【００１９】
また、親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理、親属性秘密鍵の記憶処理（保存場所）、並びに子属性秘密鍵の生成処理の詳細構成については、以下の３通り（Ｌ，Ｍ，Ｎ）×３通り（Ｐ，Ｑ，Ｒ）＝９通りのケースがある。
【００２０】
ケースＬでは、始動ノードが親属性鍵生成手段を備え（従って、始動ノードは、他の一般のノードに対し、親属性鍵生成手段が追加されていることになる。）、始動ノードで親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理が行われる。
【００２１】
ケースＭでは、始動ノードはなく、分散型台帳生成者端末で親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理が行われる。
【００２２】
ケースＮでは、親属性鍵生成手段を実現するためのプログラムも、属性ベース暗号に関連する処理用のプログラムとして、台帳型台帳に記憶される。従って、始動ノードはなく、すべてのノードが親属性鍵生成手段を備えることになるが、実際に親属性鍵生成手段による処理を実行するのは、１ノードでよい。
【００２３】
ケースＰでは、親属性秘密鍵は、管理装置に記憶される。子属性秘密鍵は、ノードで生成される。
【００２４】
ケースＱでは、親属性秘密鍵は、管理装置に記憶される。子属性秘密鍵は、管理装置で生成される。
【００２５】
ケースＲでは、親属性秘密鍵は、ノードの分散型台帳に記憶される。子属性秘密鍵は、ノードで生成される。
【００２６】
以上より、ケースＰ，Ｒでは、子属性秘密鍵は、ノードで生成されるので、その分だけ中央集権的な要素が少なくなっている。ケースＲでは、親属性秘密鍵は、ノードの分散型台帳に記憶されるので、その分だけ中央集権的な要素が少なくなっている。
【００２７】
（ケースＬ＋Ｐ）
【００２８】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードには、少なくとも1つの始動ノードが含まれ、
始動ノードは、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【００２９】
（ケースＬ＋Ｑ）
【００３０】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードには、少なくとも1つの始動ノードが含まれ、
始動ノードは、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段と、子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段とを備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得し、取得した属性リストをネットワークを介して管理装置へ送信する処理を実行するとともに、管理装置からネットワークを介して送信されてくる子属性秘密鍵を受信し、受信した子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
アカウント生成手段によりネットワークを介して送信されてくる当該ユーザの属性リストを受信し、親属性秘密鍵記憶手段に記憶された親属性秘密鍵および受信した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【００３１】
（ケースＬ＋Ｒ）
【００３２】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードには、少なくとも1つの始動ノードが含まれ、
始動ノードは、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵を管理装置を操作する管理担当者のアカウント情報として分散型台帳記憶手段に記憶させるための処理を実行する親属性鍵生成手段を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して管理担当者のアカウント鍵を取得し、取得したアカウント鍵を用いて、分散型台帳記憶手段に記憶された親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【００３３】
（ケースＭ＋Ｐ）
【００３４】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の分散型台帳生成者端末および管理装置を備え、
分散型台帳生成者端末は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるためにネットワークを介して複数のノードのいずれかに送信する処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【００３５】
（ケースＭ＋Ｑ）
【００３６】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の分散型台帳生成者端末および管理装置を備え、
分散型台帳生成者端末は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるためにネットワークを介して複数のノードのいずれかに送信する処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段と、子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段とを備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得し、取得した属性リストをネットワークを介して管理装置へ送信する処理を実行するとともに、管理装置からネットワークを介して送信されてくる子属性秘密鍵を受信し、受信した子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
アカウント生成手段によりネットワークを介して送信されてくる当該ユーザの属性リストを受信し、親属性秘密鍵記憶手段に記憶された親属性秘密鍵および受信した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【００３７】
（ケースＭ＋Ｒ）
【００３８】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の分散型台帳生成者端末および管理装置を備え、
分散型台帳生成者端末は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるためにネットワークを介して複数のノードのいずれかに送信する処理を実行するとともに、生成した親属性秘密鍵を管理装置を操作する管理担当者のアカウント情報として分散型台帳記憶手段に記憶させるためにネットワークを介して複数のノードのいずれか若しくは管理装置へ送信する処理を実行する親属性鍵生成手段を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および子属性秘密鍵生成手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して管理担当者のアカウント鍵を取得し、取得したアカウント鍵を用いて、分散型台帳記憶手段に記憶された親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【００３９】
ここで、「分散型台帳生成者端末」に設けられた「親属性鍵生成手段」により実行される「生成した親属性秘密鍵を管理装置を操作する管理担当者のアカウント情報として分散型台帳記憶手段に記憶させるためにネットワークを介して複数のノードのいずれか若しくは管理装置へ送信する処理」における「若しくは管理装置へ送信」とは、生成した親属性秘密鍵を、一旦、管理装置へ送信し、管理装置から複数のノードのいずれかに送信する場合である。
【００４０】
（ケースＮ＋Ｐ）
【００４１】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段、子属性秘密鍵生成手段、および親属性鍵生成手段を備え、
親属性鍵生成手段は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する構成とされ、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段を備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【００４２】
（ケースＮ＋Ｑ）
【００４３】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段および親属性鍵生成手段を備え、
親属性鍵生成手段は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵をネットワークを介して管理装置へ送信する処理を実行する構成とされ、
管理装置は、
親属性秘密鍵を記憶する親属性秘密鍵記憶手段と、子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段とを備え、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得し、取得した属性リストをネットワークを介して管理装置へ送信する処理を実行するとともに、管理装置からネットワークを介して送信されてくる子属性秘密鍵を受信し、受信した子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
アカウント生成手段によりネットワークを介して送信されてくる当該ユーザの属性リストを受信し、親属性秘密鍵記憶手段に記憶された親属性秘密鍵および受信した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【００４４】
（ケースＮ＋Ｒ）
【００４５】
前述した分散型台帳システムにおいて、
複数のノードを構成する各コンピュータとは別体の管理装置を備え、
複数のノードの各々は、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現されるアカウント生成手段、子属性秘密鍵生成手段、および親属性鍵生成手段を備え、
親属性鍵生成手段は、
親属性公開鍵および親属性秘密鍵を生成し、生成した親属性公開鍵を分散型台帳記憶手段に記憶させるための処理を実行するとともに、生成した親属性秘密鍵を管理装置を操作する管理担当者のアカウント情報として分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
アカウント生成手段は、
ユーザ端末からネットワークを介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザのアカウント情報に含まれる属性リストを取得する処理を実行するとともに、子属性秘密鍵生成手段により生成された子属性秘密鍵を分散型台帳記憶手段に記憶させるための処理を実行する構成とされ、
子属性秘密鍵生成手段は、
管理装置からネットワークを介して管理担当者のアカウント鍵を取得し、取得したアカウント鍵を用いて、分散型台帳記憶手段に記憶された親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段により取得した当該ユーザの属性リストを用いて、当該ユーザの子属性秘密鍵を生成する処理を実行する構成とすることができる。
【００４６】
＜属性の変更＞
【００４７】
以上に述べた分散型台帳システムにおいて、
分散型台帳記憶手段に記憶された属性ベース暗号に関連する処理用のプログラムにより実現される属性追加・削除手段を備え、
属性追加・削除手段は、
属性変更依頼を行うユーザの操作するユーザ端末からネットワークを介して送信されてくる属性変更依頼を行うユーザのアカウント鍵を受信し、受信した属性変更依頼を行うユーザのアカウント鍵を用いて、属性変更依頼を行うユーザのアカウント情報に含まれる属性識別子を分散型台帳記憶手段から取得するとともに、属性変更対象のユーザの操作するユーザ端末からネットワークを介して送信されてくる属性変更対象のユーザのアカウント鍵を受信し、受信した属性変更対象のユーザのアカウント鍵を用いて、属性変更対象のユーザのアカウント情報に含まれる属性リストを分散型台帳記憶手段から取得し、取得した属性変更対象のユーザの属性リストおよび属性変更依頼を行うユーザの属性識別子を用いて、属性リストに属性識別子を追加した属性若しくは属性リストから属性識別子を削除した属性を埋め込んだ新しい子属性秘密鍵を生成し、生成した新しい子属性秘密鍵、および属性リストに属性識別子を追加した更新後の属性リスト若しくは属性リストから属性識別子を削除した更新後の属性リストを、属性変更対象のユーザのアカウント情報として分散型台帳記憶手段に記憶させるための処理を実行する構成とされていることが望ましい。
【００４８】
このように属性追加・削除手段を設け、属性変更に対応可能な構成とした場合には、属性変更（追加または削除）の際に、属性変更依頼を行うユーザおよび属性変更対象のユーザのアカウント鍵をそれぞれのユーザ端末から受信するようになっているので、これらの双方のユーザに自律的に承認を取り、その両者のアカウント鍵を使ってその後の属性変更に係る処理を自律的に行うことが可能となる。
【００４９】
また、属性識別子および属性リストというパラメータを用意し、これらを各ユーザのアカウント情報として分散型台帳に暗号化して記憶させておくので、これらのパラメータを使って自律的な属性情報の更新が可能となる。通常、これらの属性情報は、管理者がリストとして保有しているものであるが、本発明では、分散型台帳上に暗号化して持たせることで、管理者の介在を不要とすることができる。
【００５０】
＜使用可能な子属性秘密鍵の制御によるレコードの閲覧制御＞
【００５１】
そして、上述したように属性追加・削除手段を設け、属性変更に対応可能な構成とした場合において、
レコード復号手段は、
閲覧要求を行ったユーザのアカウント鍵を用いて分散型台帳記憶手段から当該ユーザの子属性秘密鍵を取得する際には、閲覧要求に係るレコードが分散型台帳記憶手段に記憶された時点以前に分散型台帳記憶手段に記憶された子属性秘密鍵のうちの最も新しい子属性秘密鍵を取得して復号処理を実行する構成としてもよい。
【００５２】
このようにレコード復号手段による復号処理の際に、使用可能な子属性秘密鍵を制御する構成とした場合には、属性追加・削除手段による属性変更が行われ、新しい子属性秘密鍵が生成されたときに、その新しい子属性秘密鍵は、それ以降に登録されるレコードの閲覧にしか用いることができず、それよりも前に登録された過去のレコードについては、その新しい子属性秘密鍵を用いることができないようにする制御が可能となる。従って、新しい子属性秘密鍵が生成されても、それよりも前の時点で閲覧することができなかった過去のレコードについては、依然として閲覧することができないことになる。なお、このような閲覧制御を行わない場合は、新しい子属性秘密鍵が生成されると、それよりも前の時点で閲覧することができなかった過去のレコードについて、閲覧することができるようになる場合が生じる。
【００５３】
＜親属性公開鍵および親属性秘密鍵の定期的な更新＞
【００５４】
以上に述べた分散型台帳システムにおいて、
親属性鍵生成手段は、
親属性公開鍵および親属性秘密鍵を生成する処理を定期的に繰り返す構成とされ、
分散型台帳記憶手段に記憶されている親属性公開鍵は、
親属性鍵生成手段により定期的に生成される親属性公開鍵により定期的に更新され、
分散型台帳記憶手段に記憶されている全てのユーザの子属性秘密鍵は、
親属性鍵生成手段により定期的に生成される親属性秘密鍵および分散型台帳記憶手段に記憶されている各ユーザのアカウント情報に含まれる属性リストを用いて生成される子属性秘密鍵により定期的に更新されるようにしてもよい。
【００５５】
このように親属性公開鍵および親属性秘密鍵、並びに子属性秘密鍵を定期的に更新する構成とした場合には、万一、鍵に関する情報が漏れてしまったときでも、漏れた情報は、これらの鍵の更新後には使用できなくなるので、情報の秘匿性を高めることが可能となる。
【００５６】
＜プログラムの発明＞
【００５７】
また、本発明のプログラムは、以上に述べた分散型台帳システムとして、コンピュータを機能させるためのものである。
【００５８】
さらに、本発明のプログラムは、以上に述べた分散型台帳システムを構成するノードとして、コンピュータを機能させるためのものである。
【００５９】
なお、以上に述べたプログラムまたはその一部は、例えば、光磁気ディスク（ＭＯ）、コンパクトディスク（ＣＤ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、フレキシブルディスク（ＦＤ）、磁気テープ、読出し専用メモリ（ＲＯＭ）、電気的消去および書換可能な読出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、ハードディスク、ソリッドステートドライブ（ＳＳＤ）、フラッシュディスク等の記録媒体に記録して保存や流通等させることが可能であるとともに、例えば、ＬＡＮ、ＭＡＮ、ＷＡＮ、インターネット、イントラネット、エクストラネット等の有線ネットワーク、あるいは無線通信ネットワーク、さらにはこれらの組合せ等の伝送媒体を用いて伝送することが可能であり、また、搬送波に載せて搬送することも可能である。さらに、以上に述べたプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。
【発明の効果】
【００６０】
以上に述べたように本発明によれば、ＤＬＴと属性ベース暗号とを組み合わせるにあたり、属性ベース暗号を実現するための大部分の機能を、分散型台帳内に改ざんできない形で、かつ、秘匿すべきアカウント情報については秘匿した状態で組み込むので、中央集権的な要素を少なくし、管理者による改ざんの脅威がない状態での属性管理を実現しながら、分散型台帳に記録される情報の秘匿化を図ることができるという効果がある。
【図面の簡単な説明】
【００６１】
【図１】本発明の一実施形態の分散型台帳システムの全体構成図。
【図２】前記実施形態の分散型台帳システムを構成する始動ノードの構成図。
【図３】前記実施形態の分散型台帳システムを構成する一般のノードの構成図。
【図４】前記実施形態の分散型台帳システムを構成する管理装置の構成図。
【図５】前記実施形態の分散型台帳記憶手段に記憶された複数のブロックの構成図。
【図６】前記実施形態の分散型台帳記憶手段に記憶されたブロックに含まれるアカウント情報の構成図。
【図７】前記実施形態におけるブロックの追加による情報の更新の説明図。
【図８】前記実施形態における親属性鍵の生成時の処理の流れを示すフローチャートの図。
【図９】前記実施形態における子属性秘密鍵の生成時の処理の流れを示すフローチャートの図。
【図１０】前記実施形態におけるレコードの登録時および閲覧時の処理の流れを示すフローチャートの図。
【図１１】前記実施形態における属性追加時の処理の流れを示すフローチャートの図。
【図１２】本発明の変形の形態を示す管理装置の構成図。
【図１３】前記変形の形態における子属性秘密鍵の生成時の処理の流れを示すフローチャートの図。
【図１４】本発明の別の変形の形態における子属性秘密鍵の生成時の処理の流れを示すフローチャートの図。
【発明を実施するための形態】
【００６２】
以下に本発明の一実施形態について図面を参照して説明する。図１には、本実施形態の分散型台帳システム１０の全体構成が示されている。図２には、始動ノード２０の構成が示され、図３には、一般のノード３０（始動ノード２０以外のノードＸ，Ｙ，Ｚ）の構成が示されている。また、図４には、管理装置５０の構成が示され、図５には、分散型台帳記憶手段２３，３３に記憶された複数のブロックの構成が示され、図６には、ブロックに含まれるアカウント情報の構成が示されている。さらに、図７は、ブロックの追加による情報の更新の説明図である。そして、図８には、親属性鍵（親属性公開鍵および親属性秘密鍵）の生成時の処理の流れ、図９には、子属性秘密鍵の生成時の処理の流れ、図１０には、レコードの登録時および閲覧時の処理の流れ、図１１には、属性追加時の処理の流れが、それぞれフローチャートで示されている。
【００６３】
なお、本実施形態の分散型台帳システム１０は、親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理については、前述したケースＬ，Ｍ，ＮのうちのケースＬを採用し、親属性秘密鍵の記憶処理（保存場所）、および子属性秘密鍵の生成処理については、前述したケースＰ，Ｑ，ＲのうちのケースＰを採用し、従って、（ケースＬ＋Ｐ）の構成とするが、本発明の分散型台帳システムは、（ケースＬ＋Ｐ）の構成に限定されるものではない。
【００６４】
＜分散型台帳システム１０の全体構成＞
【００６５】
図１において、分散型台帳システム１０は、１つまたは複数の始動ノード２０と、この始動ノード２０以外の１つまたは複数の一般のノード３０と、ユーザ（個人や企業）が操作する１つまたは複数のユーザ端末４０と、管理担当者Ｍ２（分散型台帳生成者Ｍ１と兼任でもよい。）が運営・管理する管理装置５０と、分散型台帳生成者Ｍ１（管理担当者Ｍ２と兼任でもよい。）が操作する分散型台帳生成者端末６０とを備え、これらがネットワーク１で接続されて構成されている。
【００６６】
ここで、ネットワーク１のうちの図１中の太線部分は、Ｐ２Ｐ（ピア・ツー・ピア）ネットワークであり、例えばインターネットや通信事業者が提供する各種のサービス網等の公衆ネットワークを使って形成された仮想的なネットワーク（インターネット上にＶＰＮ（バーチャル・プライベート・ネットワーク）を用いて構築されたイントラネットを含む。）などである。従って、始動ノード２０およびそれ以外の一般のノード３０（本実施形態では、図１に示すように、一例として、３つのノードＸ，Ｙ，Ｚとしているが、３つに限定されるものではない。）は、Ｐ２Ｐ接続されている。
【００６７】
また、ユーザ端末４０や分散型台帳生成者端末６０は、ネットワーク１を介して各ノード２０，３０（始動ノード２０やノードＸ，Ｙ，Ｚ）に接続可能となっている。さらに、管理装置５０は、ネットワーク１を介して各ノード２０，３０と接続されている。
【００６８】
具体的には、証券・金融市場における取引に適用する場合には、例えば、各ノード２０，３０（始動ノード２０やノードＸ，Ｙ，Ｚ）は、証券会社や銀行等の各金融機関の運営・管理するサーバであり、ユーザ端末４０は、顧客（投資家）や発行体（株式の発行会社等）の操作する端末装置である。また、管理装置５０や分散型台帳生成者端末６０は、取引所、清算機関、振替機関等の証券・金融市場インフラの運営体の運営・管理するサーバ、あるいはそれらの運営体の担当者の操作する端末装置である。
【００６９】
＜始動ノード２０の構成＞
【００７０】
始動ノード２０は、コンピュータにより構成され、図２に示すように、分散型台帳の管理に必要な各種の処理を実行する処理手段２１と、この処理手段２１による処理に必要なプログラムを記憶するプログラム記憶手段２２と、処理手段２１による処理に必要な各種のデータ（プログラムを含む。）および処理で得られた各種のデータを記憶する分散型台帳記憶手段２３とを備えている。
【００７１】
この始動ノード２０は、分散型台帳システム１０に少なくとも１つ設けられていればよく、従って、複数の始動ノード２０がある場合には、そのうちの１つの始動ノード２０が親属性鍵の生成処理（図８参照）を行えばよく、他の始動ノード２０は、親属性鍵の生成処理を行わなくてもよいので、この場合の他の始動ノード２０は、一般のノード３０と同じ役割を果たすだけとなる。このため、親属性鍵の生成機能を有しない一般のノード３０（ノードＸ，Ｙ，Ｚ）を設けずに、すべてのノードを、始動ノード２０としてもよい。換言すれば、始動ノード２０は、一般のノード３０（ノードＸ，Ｙ，Ｚ）の全ての機能を備えているので、一般のノード３０と同じ役割を果たすことができる。
【００７２】
処理手段２１は、台帳管理手段２１Ａと、アカウント生成手段２１Ｂと、属性追加・削除手段２１Ｃと、レコード記録手段２１Ｄと、レコード暗号化手段２１Ｅと、レコード取得手段２１Ｆと、レコード復号手段２１Ｇと、子属性秘密鍵生成手段２１Ｈと、親属性鍵生成手段２１Ｊとを含んで構成されている。
【００７３】
このうち、台帳管理手段２１Ａおよび親属性鍵生成手段２１Ｊは、始動ノード２０を構成するコンピュータの内部に設けられた中央演算処理装置（ＣＰＵ）、このＣＰＵの動作手順を規定するプログラム（プログラム記憶手段２２に記憶された台帳管理プログラムおよび親属性鍵生成プログラム）、並びに、主メモリやキャッシュメモリ等により実現される。
【００７４】
一方、アカウント生成手段２１Ｂ、属性追加・削除手段２１Ｃ、レコード記録手段２１Ｄ、レコード暗号化手段２１Ｅ、レコード取得手段２１Ｆ、レコード復号手段２１Ｇ、および子属性秘密鍵生成手段２１Ｈは、プログラム記憶手段２２に記憶されたプログラムではなく、分散型台帳記憶手段２３に記憶された「属性ベース暗号に関連する各種処理用のプログラム」と、ＣＰＵ、主メモリやキャッシュメモリ等とにより実現される。なお、属性ベース暗号に関連する各種処理用のプログラムは、プログラム記憶手段２２にも記憶されているが、各手段２１Ｂ〜２１Ｈによる処理の実行時には、分散型台帳記憶手段２３に記憶されたプログラムが用いられる。
【００７５】
台帳管理手段２１Ａは、分散型台帳の基本的な処理（属性ベース暗号に直接関連しない処理）を実行するものである。本実施形態では、分散型台帳は、一例としてブロックチェーンとするので、台帳管理手段２１Ａは、トランザクションデータのレコード等を格納するブロックを生成するための処理と、生成したブロックを自分（自ノード）を含む参加するノード２０，３０間で承認するための処理と、承認したブロックを自分（自ノード）を含む参加するノード２０，３０で共有して記憶するための処理（自ノードでの保存、および参加する他のノード２０，３０への配信のための処理）と、ブロック内に格納されているレコードの参照のための処理とを実行する。
【００７６】
ここで、ブロックの生成・承認・共有記憶のための処理は、必ずしも自ら（自ノード）がブロックの生成処理を実行する必要はなく、また、必ずしも自らが承認処理を実行したり、承認処理に参加する必要はなく、さらには、必ずしも自らが共有記憶のための各ノード２０，３０への配信処理を実行する必要はない。従って、ブロックの生成処理・承認処理・共有記憶のための各ノードへの配信処理については、これらの処理を担当する他のノード２０，３０に対し、ブロックの生成指示・承認指示・配信指示を送ってもよく、要するに、自らは、処理のタイミング等を管理し、ブロックの生成処理・承認処理・共有記憶のための各ノード２０，３０への配信処理を主導すればよい。換言すれば、最終的に、分散型台帳システム１０を構成する全てのノード２０，３０のそれぞれが同一のデータを共有して記憶している状態になり、いわゆる分散型台帳が構築されている状態になればよい。このため、ブロックの生成処理・承認処理・共有記憶のための各ノード２０，３０への配信処理については、分散型台帳システム１０を構成する全てのノード２０，３０が関与することになるので、以下では、始動ノード２０の台帳管理手段２１Ａや分散型台帳記憶手段２３だけではなく、後述する一般のノード３０の台帳管理手段３１Ａや分散型台帳記憶手段３３（図３参照）も含めて説明を行う。
【００７７】
ブロックの生成処理は、トランザクションデータのレコード等の分散型台帳への新たな記録対象データを用いて、それまでに蓄積記憶されたブロック（既に分散型台帳記憶手段２３，３３に記憶されている前回までのブロック）とともにチェーンを形成するブロックを新たに生成する処理である。このブロックの生成処理は、上述したように、自分（自ノード）で直接に実行するか、または他のノード２０，３０に対してブロックの生成指示を送ることにより実行される。生成指示を送る場合は、生成指示を受けたノード２０，３０に設けられた台帳管理手段２１Ａ，３１Ａが実行する。
【００７８】
生成されるブロックは、図５に示すように、生成時刻を示すタイムスタンプと、前のブロックのハッシュ値等のチェーン形成情報と、分散型台帳への記録対象データ（トランザクションデータのレコード、アカウント情報、属性ベース暗号に関連する各種処理用のプログラム、親属性公開鍵のうちの少なくとも１つを含むデータ）とを含む。
【００７９】
チェーン形成情報は、通常のブロックチェーンのように、前のブロックのハッシュ値としてもよく、あるいは、例えば前のブロック以外の情報を用いて形成されたものとしてもよく、チェーンの形成方式は任意である。なお、本実施形態では、分散型台帳は、一例としてブロックチェーンとしているが、例えば、信頼できるノードのみで分散型台帳システムを構成するコンソーシアム型の場合や、特定の組織の内部で分散型台帳システムを構成するプライベート型の場合等のように、ある程度の安全性を確保できる場合であれば、必ずしもブロック間でチェーンを形成する必要はないので、チェーン形成情報を設けなくてもよく、また、記録対象データをブロックに格納する必要もない。
【００８０】
ブロックの承認処理は、データの改ざんがないか、残高は正しいか、残高を超える不正な取引ではないか等について、それ以前のブロックが有する情報との整合性等により判断する処理であり、この承認処理を経て、初めて分散型台帳システム１０への参加ノード間でのブロックの共有記憶が可能となる。なお、本実施形態では、分散型台帳は、一例としてブロックチェーンとしているので、ブロックの承認処理を行うが、上述したコンソーシアム型やプライベート型の場合等には、ブロックの承認処理を省略してもよい。
【００８１】
承認方式は問わない。例えば、ネットワーク１（図１中の太線で示されたＰ２Ｐネットワーク部分）内の特定または任意の１つのノード２０，３０（自分でもよい。）が承認処理を担当してもよく、特定または任意の複数のノード２０，３０（自分が含まれていても、含まれていなくてもよい。）が担当してもよく、全てのノード２０，３０が担当してもよい。例えば、複数のノード２０，３０や全てのノード２０，３０が担当する場合には、そのうちの一定比率（例えば３分の２以上）の合意を条件として承認する等とすることができる。また、このブロックの承認処理を実行するノード２０，３０には、ブロックの生成処理を担当したノード２０，３０が含まれていてもよく、含まれていなくてもよい。
【００８２】
ブロックの共有記憶のための各ノード２０，３０への配信処理は、承認されたブロックが全てのノード２０，３０に行き渡るように、すなわち、配信元のノードから、配信元を除く全てのノードに向け、承認されたブロックを配信するとともに、承認されたブロックを受け取ったノード２０，３０が、各自の分散型台帳記憶手段２３，３３に、受け取ったブロックを保存する処理である。配信元のノードは、承認処理を実行したノードや承認処理に参加したノードでもよく、承認指示を送ったノードでもよく、また、配信元のノードが複数ある場合には、複数個受け取ったブロックが同一のものであるときに保存するようにしてもよい。
【００８３】
アカウント生成手段２１Ｂは、ユーザ端末４０からネットワーク１を介して送信されてくるユーザのアカウント鍵を用いて分散型台帳記憶手段２３から当該ユーザのアカウント情報に含まれる属性リスト（図６参照）を取得し、子属性秘密鍵の生成指示（取得した属性リストを含む。）を子属性秘密鍵生成手段２１Ｈに送る処理を実行するとともに、子属性秘密鍵生成手段２１Ｈにより生成された子属性秘密鍵を子属性秘密鍵生成手段２１Ｈから受け取り、受け取った子属性秘密鍵を分散型台帳記憶手段２３に記憶させるための処理（受け取った子属性秘密鍵を台帳管理手段２１Ａへ引き渡して分散型台帳への保存を指示する処理）を実行するものである（図９参照、但し、図９では同じ機能を有するアカウント生成手段３１Ｂを図示している）。
【００８４】
属性追加・削除手段２１Ｃは、属性変更依頼を行うユーザの操作するユーザ端末４０からネットワーク１を介して送信されてくる属性変更依頼を行うユーザのアカウント鍵を受信し、受信した属性変更依頼を行うユーザのアカウント鍵を用いて、属性変更依頼を行うユーザのアカウント情報に含まれる属性識別子（図６参照）を分散型台帳記憶手段２３から取得するとともに、属性変更対象のユーザの操作するユーザ端末４０に対して属性変更の承認依頼を送り（例えば、電子メールの送信等）、この承認依頼に応じて属性変更対象のユーザの操作するユーザ端末４０からネットワーク１を介して送信されてくる属性変更対象のユーザのアカウント鍵を受信し、受信した属性変更対象のユーザのアカウント鍵を用いて、属性変更対象のユーザのアカウント情報に含まれる属性リスト（図６参照）を分散型台帳記憶手段２３から取得し、取得した属性変更対象のユーザの属性リストおよび属性変更依頼を行うユーザの属性識別子を用いて、属性リストに属性識別子を追加した属性若しくは属性リストから属性識別子を削除した属性を埋め込んだ新しい子属性秘密鍵を生成し、生成した新しい子属性秘密鍵、および属性リストに属性識別子を追加した更新後の属性リスト若しくは属性リストから属性識別子を削除した更新後の属性リストを、属性変更対象のユーザのアカウント情報として分散型台帳記憶手段２３に記憶させるための処理を実行するものである（図１１参照、但し、図１１では同じ機能を有する属性追加・削除手段３１Ｃを図示している）。
【００８５】
レコード記録手段２１Ｄは、ユーザにより登録されるレコードの内容データ（トランザクションデータ）および当該ユーザによるレコードの閲覧権限を指定するポリシーをユーザ端末４０からネットワーク１を介して受信し、受信した内容データ（トランザクションデータ）のレコードおよびポリシーをレコード暗号化手段２１Ｅに引き渡すとともに、暗号化されたレコードをレコード暗号化手段２１Ｅから受け取り、受け取ったレコードを分散型台帳記憶手段２３に記憶させるための処理（受け取ったレコードを台帳管理手段２１Ａへ引き渡して分散型台帳への記録を指示する処理）を実行するものである（図１０参照、但し、図１０では同じ機能を有するレコード記録手段３１Ｄを図示している）。
【００８６】
レコード暗号化手段２１Ｅは、レコード記録手段２１Ｄから登録対象のレコードおよびポリシーを受け取り、受け取ったレコードおよびポリシー、並びに分散型台帳記憶手段２３に記憶された親属性公開鍵を用いて、レコードを暗号化し、暗号化したレコードをレコード記録手段２１Ｄに引き渡す処理を実行するものである（図１０参照、但し、図１０では同じ機能を有するレコード暗号化手段３１Ｅを図示している）。
【００８７】
レコード取得手段２１Ｆは、ユーザ端末４０からユーザのアカウント鍵とともにネットワーク１を介して送信されてくる当該ユーザによるレコードの閲覧要求を受信して分散型台帳記憶手段２３から閲覧要求に係るレコードを取得し、取得したレコードおよび当該ユーザのアカウント鍵をレコード復号手段２１Ｇに引き渡すとともに、復号済のレコードをレコード復号手段２１Ｇから受け取り、受け取った復号済のレコードの表示用データを、ネットワーク１を介してユーザ端末４０に送信する処理を実行するものである（図１０参照、但し、図１０では同じ機能を有するレコード取得手段３１Ｆを図示している）。
【００８８】
レコード復号手段２１Ｇは、レコード取得手段２１Ｆから閲覧要求に係るレコードおよび閲覧要求を行ったユーザのアカウント鍵を受け取り、受け取った当該ユーザのアカウント鍵を用いて分散型台帳記憶手段２３から当該ユーザの子属性秘密鍵を取得し、取得した子属性秘密鍵を用いて、閲覧要求に係るレコードを復号し、復号済のレコードをレコード取得手段２１Ｆに引き渡す処理を実行するものである（図１０参照、但し、図１０では同じ機能を有するレコード復号手段３１Ｇを図示している）。
【００８９】
また、レコード復号手段２１Ｇは、閲覧要求を行ったユーザのアカウント鍵を用いて分散型台帳記憶手段２３から当該ユーザの子属性秘密鍵を取得する際には、閲覧要求に係るレコードが分散型台帳記憶手段２３に記憶された時点以前に分散型台帳記憶手段２３に記憶された子属性秘密鍵のうちの最も新しい子属性秘密鍵を取得して復号処理を実行する構成としてもよい（図７参照）。なお、閲覧要求に係るレコードが分散型台帳記憶手段２３に記憶された時点は、ブロックに含まれるタイムスタンプ（図５、図７参照）により判断することができる。
【００９０】
子属性秘密鍵生成手段２１Ｈは、アカウント生成手段２１Ｂから子属性秘密鍵の生成指示（属性リストを含む。）を受け取り、管理装置５０（図４参照）に対して親属性秘密鍵の取得要求を送信することにより管理装置５０からネットワーク１を介して親属性秘密鍵を取得し、取得した親属性秘密鍵およびアカウント生成手段２１Ｂから受け取った属性リストを用いて、対象ユーザの子属性秘密鍵を生成し、生成した子属性秘密鍵をアカウント生成手段２１Ｂに引き渡す処理を実行するものである（図９参照、但し、図９では同じ機能を有する子属性秘密鍵生成手段３１Ｈを図示している）。
【００９１】
この子属性秘密鍵生成手段２１Ｈによる子属性秘密鍵の生成処理については、属性ベース暗号（本実施形態では、暗号文ポリシー方式（ＣＰ−ＡＢＥ）を採用）を取り扱う既存のシステムと同じアルゴリズムでよいため、詳細な説明を省略する。
【００９２】
親属性鍵生成手段２１Ｊは、親属性公開鍵（マスター公開鍵とも称される。）および親属性秘密鍵（マスター秘密鍵とも称される。）を生成し、生成した親属性公開鍵を分散型台帳記憶手段２３に記憶させるための処理（生成した親属性公開鍵を台帳管理手段２１Ａへ引き渡して分散型台帳への記録を指示する処理）を実行するとともに、生成した親属性秘密鍵をネットワーク１を介して管理装置５０（図４参照）へ送信する処理を実行するものである（図８参照）。
【００９３】
この親属性鍵生成手段２１Ｊによる親属性公開鍵および親属性秘密鍵の生成処理については、属性ベース暗号を取り扱う既存のシステムと同じアルゴリズムでよいため、詳細な説明を省略する。なお、本実施形態では、属性ベース暗号のうちの暗号文ポリシー方式（ＣＰ−ＡＢＥ）を採用しているので、暗号文（暗号化された登録対象のレコード）にポリシーを埋め込み、各自の秘密鍵（子属性秘密鍵）に属性を埋め込んでいる。
【００９４】
また、親属性鍵生成手段２１Ｊは、生成した親属性公開鍵を分散型台帳記憶手段２３に記憶させるための処理（台帳管理手段２１Ａへ引き渡して分散型台帳への記録を指示する処理）と併せて、プログラム記憶手段２２に記憶されている属性ベース暗号に関連する各種処理用のプログラムについても、分散型台帳記憶手段２３に記憶させるための処理（台帳管理手段２１Ａへ引き渡して分散型台帳への記録を指示する処理）を実行する。但し、親属性公開鍵および親属性秘密鍵の生成処理が２回目以降になるときは、既に分散型台帳記憶手段２３に属性ベース暗号に関連する各種処理用のプログラムが記憶されている状態となっているので、この処理は実行しなくてよい。
【００９５】
さらに、親属性鍵生成手段２１Ｊは、親属性公開鍵および親属性秘密鍵を生成する処理を定期的に繰り返す構成としてもよい。このような構成とする場合には、分散型台帳記憶手段２３に記憶されている親属性公開鍵は、親属性鍵生成手段２１Ｊにより新たに生成される親属性公開鍵により定期的に更新されることになる。また、子属性秘密鍵生成手段２１Ｈにより、親属性鍵生成手段２１Ｊが定期的に生成する親属性秘密鍵および分散型台帳記憶手段２３に記憶されている各ユーザのアカウント情報に含まれる属性リストを用いて、各ユーザの子属性秘密鍵も新たに生成されるので、分散型台帳記憶手段２３に記憶されている全てのユーザの子属性秘密鍵も、定期的に更新されることになる。なお、子属性秘密鍵生成手段２１Ｈによる各ユーザの子属性秘密鍵の生成処理では、アカウント生成手段２１Ｂにより取得した各ユーザの属性リストが用いられるが、各ユーザの属性リストを取得するには、各ユーザのアカウント鍵が必要になるので、ユーザ端末４０から各ユーザのアカウント鍵の提供を受ける必要がある。従って、親属性鍵生成手段２１Ｊによる親属性公開鍵および親属性秘密鍵の生成処理は、例えば夜間等のバッチ処理で実行することができるが、子属性秘密鍵生成手段２１Ｈによる各ユーザの子属性秘密鍵の生成処理は、各ユーザによるユーザ端末４０からのアクセスを待って実行されることになるので、親属性鍵生成手段２１Ｊは、子属性秘密鍵の更新を各ユーザに促すための自動通知処理を各ユーザ端末４０に対して実行する。この自動通知処理は、例えば、電子メール等の自動送信でもよく、各ユーザによるユーザ端末４０からの次回のアクセス時に子属性秘密鍵の更新を行うべきことを知らせる自動表示でもよい。後者の場合、具体的には、例えば、親属性鍵生成手段２１Ｊが親属性鍵（親属性公開鍵および親属性秘密鍵）を更新した際（図８参照）に、その更新日時（ブロック番号）を分散型台帳に記録しておき、ユーザがレコードを閲覧する際（図１０参照）に、レコード取得手段３１Ｆまたはレコード復号手段３１Ｇが、分散型台帳上の当該ユーザのアカウント情報から当該ユーザの子属性秘密鍵の生成日時を取得し、取得した子属性秘密鍵の生成日時が、分散型台帳上の最新の親属性鍵の更新日時よりも前の時点であれば（つまり、子属性秘密鍵が古ければ）、子属性秘密鍵生成手段３１Ｈを自動的に立ち上げ、レコード閲覧のための処理の付加的処理として子属性鍵生成処理（図９参照）を起動する方法を採ることができる。また、レコード登録時（図１０参照）には、子属性秘密鍵は不要であるが、そのタイミングでもレコード記録手段３１Ｄまたはレコード暗号化手段３１Ｅにより、子属性秘密鍵生成手段３１Ｈを自動的に立ち上げて子属性鍵生成処理（図９参照）を起動させてもよい。さらに、子属性秘密鍵については、前述したようにレコード復号手段２１Ｇが使用する子属性秘密鍵を制御することによりレコードの閲覧制御が可能であるが（図７参照）、これと同様な考え方で、親属性鍵についても、分散型台帳に記録された最新の更新日時に生成された親属性鍵しか使用することができない仕様とすることで、明確に鍵の切り替えを行うことができるので、更新前の古い親属性秘密鍵を使用して子属性秘密鍵を生成してしまうという不都合（図９参照）や、更新前の古い親属性公開鍵を使用してレコードの暗号化処理を行ってしまうという不都合（図１０参照）を回避することができる。
【００９６】
プログラム記憶手段２２は、台帳管理手段２１Ａを実現するための台帳管理プログラムと、親属性鍵生成手段２１Ｊを実現するための親属性鍵生成プログラムと、分散型台帳記憶手段２３に記憶させるための属性ベース暗号に関連する各種処理用のプログラム（各手段２１Ｂ〜２１Ｈを実現するためのプログラム）とを記憶するものである。
【００９７】
分散型台帳記憶手段２３は、他の全てのノード２０，３０の分散型台帳記憶手段２３，３３とともに分散型台帳を構成するものである。本実施形態では、分散型台帳は、一例としてブロックチェーンとするので、分散型台帳記憶手段２３は、図５に示すように、ブロックチェーンを形成する複数のブロックを記憶するものである。
【００９８】
ブロックには、図５に示すように、生成時刻を示すタイムスタンプと、前のブロックのハッシュ値等のチェーン形成情報と、分散型台帳への記録対象データとが含まれている。分散型台帳への記録対象データとしては、トランザクションデータのレコードと、各ユーザのアカウント情報と、属性ベース暗号に関連する各種処理用のプログラム（各手段２１Ｂ〜２１Ｈを実現するためのプログラム）と、親属性公開鍵とがあり、ブロックチェーンを形成する各ブロックには、これらの記録対象データのうちの少なくとも１つが格納される。
【００９９】
ここで、各ユーザのアカウント情報としては、図６に示すように、各ユーザの属性識別子（属性名）と、各ユーザの子属性秘密鍵と、各ユーザの属性リストとが、各ユーザのＩＤ（ユーザ識別情報）と関連付けてブロック内に格納される。これらのアカウント情報は、各ユーザのアカウント鍵により暗号化され、各ユーザからのアカウント鍵の提供がないと、これらの内容を把握することができないようになっている。
【０１００】
このうち、各ユーザの属性識別子は、各ユーザを表す属性名であり、ユーザ単体の属性となる。例えば、ユーザＡの場合には、ユーザＡを表す属性名であり、ユーザＢの場合には、ユーザＢを表す属性名であり、ユーザＣの場合には、ユーザＣを表す属性名である。
【０１０１】
また、各ユーザの属性リストは、各ユーザの子属性秘密鍵を生成するときの入力となる属性であり、例えば、ユーザが自分以外のユーザの属性をも合わせ持つ場合には、自分を表す属性名と自分以外のユーザを表す属性名とを統合した属性となる。つまり、属性リストは、ユーザ単体の属性を集合させた状態の属性となる。例えば、ユーザＣが元々持っている「ユーザＣ」という属性に、ユーザＡが持っている「ユーザＡ」という属性が追加されると、ユーザＣの属性リストは、「ユーザＣ＋ユーザＡ」となる。
【０１０２】
さらに、属性ベース暗号に関連する各種処理用のプログラム（各手段２１Ｂ〜２１Ｈを実現するためのプログラム）は、バイナリの状態で分散型台帳記憶手段２３に記憶されている。なお、属性ベース暗号に関連する各種処理用のプログラムは、インタープリターのソースの状態で分散型台帳記憶手段２３に記憶されていてもよい。
【０１０３】
＜ノード３０の構成＞
【０１０４】
ノード３０（ノードＸ，Ｙ，Ｚ）は、コンピュータにより構成され、図３に示すように、分散型台帳の管理に必要な各種の処理を実行する処理手段３１と、この処理手段３１による処理に必要なプログラムを記憶するプログラム記憶手段３２と、処理手段３１による処理に必要な各種のデータ（プログラムを含む。）および処理で得られた各種のデータを記憶する分散型台帳記憶手段３３とを備えている。
【０１０５】
このノード３０は、始動ノード２０（図２参照）と略同様な構成を備え、親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理（図８参照）を行う機能を有しない点を除き、始動ノード２０と同様な構成および機能を有する。
【０１０６】
従って、処理手段３１は、台帳管理手段３１Ａと、アカウント生成手段３１Ｂと、属性追加・削除手段３１Ｃと、レコード記録手段３１Ｄと、レコード暗号化手段３１Ｅと、レコード取得手段３１Ｆと、レコード復号手段３１Ｇと、子属性秘密鍵生成手段３１Ｈとを含んで構成され、これらの各手段３１Ａ〜３１Ｈは、始動ノード２０の各手段２１Ａ〜２１Ｈに相当する手段である。しかし、処理手段３１には、始動ノード２０の親属性鍵生成手段２１Ｊに相当する手段は含まれていない。
【０１０７】
なお、台帳管理手段３１Ａは、プログラム記憶手段３２に記憶された台帳管理プログラムにより実現され、一方、その他の各手段３１Ｂ〜３１Ｈは、プログラム記憶手段３２に記憶されたプログラムではなく、分散型台帳記憶手段３３に記憶された属性ベース暗号に関連する各種処理用のプログラムにより実現される点についても、始動ノード２０の場合と同様である。
【０１０８】
また、プログラム記憶手段３２には、台帳管理手段３１Ａを実現するための台帳管理プログラムが記憶され、この点は、始動ノード２０の場合と同様である。しかし、一般のノード３０では親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理（図８参照）は行わないので、プログラム記憶手段３２には、親属性鍵生成プログラムや、分散型台帳記憶手段３３に記憶させるための属性ベース暗号に関連する各種処理用のプログラム（各手段３１Ｂ〜３１Ｈを実現するためのプログラム）は記憶されていない。
【０１０９】
さらに、分散型台帳記憶手段３３は、他の全てのノード２０，３０の分散型台帳記憶手段２３，３３とともに分散型台帳を構成するものであるから、始動ノード２０の分散型台帳記憶手段２３と同様な構成を備えている。
【０１１０】
＜ユーザ端末４０の構成＞
【０１１１】
ユーザ端末４０は、コンピュータにより構成され、例えばマウスやキーボード等の入力手段と、例えば液晶ディスプレイ等の表示手段とを備えている。このユーザ端末４０は、例えば、携帯電話機（ＰＨＳを含む。）、携帯情報端末（ＰＤＡ）、タブレット端末等の携帯機器であってもよい。
【０１１２】
＜管理装置５０の構成＞
【０１１３】
管理装置５０は、コンピュータにより構成され、図４に示すように、属性管理を含む各種処理を実行する処理手段５１と、親属性秘密鍵を記憶する親属性秘密鍵記憶手段５２とを備えている。
【０１１４】
処理手段５１は、始動ノード２０の親属性鍵生成手段２１Ｊによりネットワーク１を介して送信されてくる親属性秘密鍵を受信し、受信した親属性秘密鍵を親属性秘密鍵記憶手段５２に記憶させる処理（図８参照）を実行する親属性秘密鍵受信手段５１Ａと、始動ノード２０やノード３０の子属性秘密鍵生成手段２１Ｈ，３１Ｈからの親属性秘密鍵の取得要求に応じ、親属性秘密鍵記憶手段５２に記憶されている親属性秘密鍵を、ネットワーク１を介して始動ノード２０やノード３０に送信する処理（図９参照）を実行する親属性秘密鍵送信手段５１Ｂとを含んで構成されている。
【０１１５】
＜分散型台帳生成者端末６０の構成＞
【０１１６】
分散型台帳生成者端末６０は、コンピュータにより構成され、例えばマウスやキーボード等の入力手段と、例えば液晶ディスプレイ等の表示手段とを備えている。この分散型台帳生成者端末６０は、例えば、携帯電話機（ＰＨＳを含む。）、携帯情報端末（ＰＤＡ）、タブレット端末等の携帯機器であってもよい。
【０１１７】
＜その他の構成＞
【０１１８】
以上において、始動ノード２０の処理手段２１に含まれる各手段２１Ａ〜２１Ｊ（図２参照）、一般のノード３０の処理手段３１に含まれる各手段３１Ａ〜３１Ｈ（図３参照）、管理装置５０の処理手段５１に含まれる各手段５１Ａ，５１Ｂ（図４参照）は、始動ノード２０、ノード３０、管理装置５０を構成する各コンピュータの内部に設けられた中央演算処理装置（ＣＰＵ）、このＣＰＵの動作手順を規定する１つまたは複数のプログラム、並びに、主メモリやキャッシュメモリ等により実現される。
【０１１９】
また、始動ノード２０のプログラム記憶手段２２および分散型台帳記憶手段２３（図２参照）、一般のノード３０のプログラム記憶手段３２および分散型台帳記憶手段３３（図３参照）、管理装置５０の親属性秘密鍵記憶手段５２（図４参照）は、例えば、ハードディスク、ソリッドステートドライブ（ＳＳＤ）、フラッシュディスク、ＥＥＰＲＯＭ、フラッシュ・メモリ、ＭＯ、ＣＤ、ＤＶＤ、ＦＤ、磁気テープ、あるいはこれらの組合せ等を採用することができる。
【０１２０】
＜分散型台帳システム１０による処理の流れ＞
【０１２１】
このような本実施形態においては、以下のようにして分散型台帳システム１０により、分散型台帳の構築、分散型台帳へのデータの記録、分散型台帳に記録されたデータの参照、属性ベース暗号に用いられる属性の変更についての各種処理が実行される。
【０１２２】
＜親属性鍵（親属性公開鍵および親属性秘密鍵）の生成時の処理の流れ＞
【０１２３】
図８において、先ず、分散型台帳システム１０のシステム構築者である分散型台帳生成者Ｍ１またはその協力者が、始動ノード２０のプログラム記憶手段２２に記憶された台帳管理プログラムを立ち上げると、台帳管理手段２１Ａによる処理が開始される。この際、分散型台帳生成者Ｍ１またはその協力者が、パラメータ（例えばＩＤ=１００番）を指定する入力を行うと、台帳管理手段２１Ａにより、この入力が受け付けられて新しい分散型台帳が生成され、生成された分散型台帳にデータを記録するための領域が始動ノード２０の分散型台帳記憶手段２３に確保される（ステップＳ１）。
【０１２４】
次に、分散型台帳生成者Ｍ１またはその協力者が、一般のノード３０（ノードＸ，Ｙ，Ｚ）のプログラム記憶手段３２に記憶された台帳管理プログラムを立ち上げると、台帳管理手段３１Ａによる処理が開始される。この際、分散型台帳生成者Ｍ１またはその協力者が、同じパラメータ（例えばＩＤ=１００番）を指定する入力を行うと、台帳管理手段３１Ａにより、この入力が受け付けられ、上述したステップＳ１で生成された分散型台帳に参加することができるようになり、参加した分散型台帳にデータを記録するための領域がノード３０の分散型台帳記憶手段３３に確保される（ステップＳ２）。なお、ステップＳ１で立ち上げた始動ノード２０以外にも始動ノード２０がある場合には、その始動ノード２０のプログラム記憶手段２２に記憶された台帳管理プログラムも立ち上げ、同じパラメータ（例えばＩＤ=１００番）を指定する入力を行うことにより、ステップＳ１で生成された分散型台帳に参加することができるようになる。
【０１２５】
続いて、分散型台帳生成者Ｍ１またはその協力者は、分散型台帳生成者端末６０を操作して始動ノード２０にアクセスし、プログラム記憶手段２２に記憶された親属性鍵生成プログラムを立ち上げ、親属性鍵生成手段２１Ｊによる処理を開始させる。そして、親属性鍵生成手段２１Ｊにより、分散型台帳生成者Ｍ１またはその協力者による親属性鍵（親属性公開鍵および親属性秘密鍵）の生成指示の入力を受け付け（ステップＳ３）、親属性公開鍵および親属性秘密鍵を生成する（ステップＳ４）。
【０１２６】
その後、親属性鍵生成手段２１Ｊにより、生成した親属性公開鍵および分散型台帳記憶手段２３に記憶されている属性ベース暗号に関連する各種処理用のプログラム（各手段２１Ｂ〜２１Ｈを実現するためのプログラム）を、台帳管理手段２１Ａに引き渡して分散型台帳への保存指示を行う（ステップＳ５）。台帳管理手段２１Ａは、親属性公開鍵および属性ベース暗号に関連する各種処理用のプログラムを受け取ると、受け取った親属性公開鍵および属性ベース暗号に関連する各種処理用のプログラムを、自分（自ノード）の分散型台帳記憶手段２３および全てのノード３０の分散型台帳記憶手段３３に記憶させるための処理を実行する（ステップＳ６）。また、自分（自ノード）以外にも始動ノード２０がある場合には、その始動ノード２０の分散型台帳記憶手段２３にも記憶させる。
【０１２７】
具体的には、台帳管理手段２１Ａは、親属性公開鍵および属性ベース暗号に関連する各種処理用のプログラムを含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分（自ノード）の分散型台帳記憶手段２３に保存するとともに、他のノード２０，３０へ配信する（ステップＳ６）。この際、ブロックの生成処理、承認処理、他のノード２０，３０への配信処理は、必ずしも自分（自ノード）で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード２０，３０に行わせてもよい。
【０１２８】
各ノード３０では、台帳管理手段３１Ａにより、親属性鍵の生成を行った始動ノード２０（またはブロックの生成若しくは承認を行ったノード２０，３０）からネットワーク１を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段３３に保存する（ステップＳ７）。また、親属性鍵の生成を行った始動ノード２０以外にも始動ノード２０がある場合には、その始動ノード２０の台帳管理手段２１Ａにより、親属性鍵の生成を行った始動ノード２０（またはブロックの生成若しくは承認を行ったノード２０，３０）からネットワーク１を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段２３に保存する（ステップＳ７）。
【０１２９】
また、始動ノード２０では、親属性鍵生成手段２１Ｊにより、生成した親属性秘密鍵をネットワーク１を介して管理装置５０へ送信する（ステップＳ８）。管理装置５０では、親属性秘密鍵受信手段５１Ａにより、始動ノード２０からネットワーク１を介して送信されてくる親属性秘密鍵を受信し、受信した親属性秘密鍵を、親属性秘密鍵記憶手段５２に記憶させる（ステップＳ９）。
【０１３０】
＜子属性秘密鍵の生成時の処理の流れ＞
【０１３１】
図９において、ユーザ（ここでは、ユーザＡとする。）が、自分の子属性秘密鍵の生成のために、ユーザ端末４０からノード３０（始動ノード２０でもよいが、ここではノードＸ，Ｙ，Ｚのいずれかとする。）にアクセスすると、台帳管理手段３１Ａにより、分散型台帳記憶手段３３から、属性ベース暗号に関連する各種処理用のプログラムのうちのアカウント生成手段３１Ｂおよび子属性秘密鍵生成手段３１Ｈを実現するプログラムが読み込まれ、主メモリ上に配置される。
【０１３２】
そして、アカウント生成手段３１Ｂにより、ユーザＡのＩＤ（ユーザ識別情報）およびアカウント鍵を受け付けると（ステップＳ２１）、受け付けたユーザＡのＩＤおよびアカウント鍵を用いて、分散型台帳記憶手段３３から、ユーザＡのアカウント情報に含まれる属性リストを取得し（ステップＳ２２）、取得した属性リストとともに子属性秘密鍵の生成指示を、子属性秘密鍵生成手段３１Ｈに送る（ステップＳ２３）。
【０１３３】
子属性秘密鍵生成手段３１Ｈは、アカウント生成手段３１Ｂからの子属性秘密鍵の生成指示（ユーザＡの属性リストを含む。）を受け取ると（ステップＳ２４）、親属性秘密鍵の取得要求信号をネットワーク１を介して管理装置５０へ送信する（ステップＳ２５）。管理装置５０では、親属性秘密鍵の取得要求信号を受信すると（ステップＳ２６）、親属性秘密鍵送信手段５１Ｂにより、親属性秘密鍵記憶手段５２に記憶されている親属性秘密鍵を、ネットワーク１を介してノード３０に送信する（ステップＳ２７）。なお、上記のステップＳ２５，Ｓ２６の親属性秘密鍵の取得要求信号の送受信時には、なりすましによる不正な鍵情報の取得を防止するため、人（管理担当者Ｍ２）による確認や、電子署名などの別の暗号化技術により、要求の真偽を確認する処理（ＤＬＴ若しくは認証済みノードから送られた要求であることを確認する処理）を施す。
【０１３４】
ノード３０では、管理装置５０からネットワーク１を介して送信されてくる親属性秘密鍵を受信し（ステップＳ２８）、受信した親属性秘密鍵および上述したステップＳ２４でアカウント生成手段３１Ｂから受け取ったユーザＡの属性リストを用いて、その属性リストで示される属性（ユーザＡという属性、あるいはこの時点で属性リストが更新されていれば、例えば「ユーザＡ＋ユーザＣ」という属性等である場合もある。）を埋め込んだ子属性秘密鍵を生成し（ステップＳ２９）、生成した子属性秘密鍵をアカウント生成手段３１Ｂに引き渡す（ステップＳ３０）。
【０１３５】
アカウント生成手段３１Ｂは、子属性秘密鍵生成手段３１Ｈからの子属性秘密鍵を受け取ると、受け取った子属性秘密鍵を、台帳管理手段３１Ａに引き渡して保存指示を行う（ステップＳ３１）。台帳管理手段３１Ａは、子属性秘密鍵を受け取ると、受け取った子属性秘密鍵を、自分（自ノード）を含む全てのノード２０，３０の分散型台帳記憶手段２３，３３に記憶させるための処理を実行する（ステップＳ３２）。
【０１３６】
具体的には、台帳管理手段３１Ａは、子属性秘密鍵を含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分（自ノード）の分散型台帳記憶手段３３に保存するとともに、他のノード２０，３０へ配信する（ステップＳ３２）。この際、ブロックの生成処理、承認処理、他のノード２０，３０への配信処理は、必ずしも自分（自ノード）で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード２０，３０に行わせてもよい。
【０１３７】
また、図示は省略されているが、他のノード２０，３０では、台帳管理手段２１Ａ，３１Ａにより、配信元のノード３０（始動ノード２０の場合もある。）からネットワーク１を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段２３，３３に保存する。
【０１３８】
＜レコードの登録時の処理の流れ＞
【０１３９】
図１０において、ユーザ（ここでは、ユーザＡとする。）が、分散型台帳へのトランザクションデータのレコードの登録のために、ユーザ端末４０からノード３０（始動ノード２０でもよいが、ここではノードＸ，Ｙ，Ｚのいずれかとする。）にアクセスすると、台帳管理手段３１Ａにより、分散型台帳記憶手段３３から、属性ベース暗号に関連する各種処理用のプログラムのうちのレコード記録手段３１Ｄおよびレコード暗号化手段３１Ｅを実現するプログラムが読み込まれ、主メモリ上に配置される。
【０１４０】
そして、レコード記録手段３１Ｄにより、ユーザＡが登録するレコードの内容データ（トランザクションデータ）およびユーザＡによるそのレコードの閲覧権限を指定するポリシー（例えば、ユーザＡという属性、またはユーザＢという属性のうちの少なくとも一方の属性を有するユーザのみが閲覧可能等）を、ユーザ端末４０からネットワーク１を介して受信し、受信した内容データ（トランザクションデータ）のレコードおよびポリシーをレコード暗号化手段３１Ｅに引き渡す（ステップＳ４１）。
【０１４１】
レコード暗号化手段３１Ｅは、レコード記録手段３１Ｄから登録対象のレコードおよびポリシーを受け取ると（ステップＳ４２）、分散型台帳記憶手段３３から親属性公開鍵を取得し（ステップＳ４３）、受け取ったレコードおよびポリシー、並びに取得した親属性公開鍵を用いて、レコードを暗号化し（ステップＳ４４）、暗号化したレコードをレコード記録手段３１Ｄに引き渡す（ステップＳ４５）。
【０１４２】
レコード記録手段３１Ｄは、レコード暗号化手段３１Ｅから暗号化されたレコードを受け取ると、受け取ったレコードを、台帳管理手段３１Ａに引き渡して保存指示を行う（ステップＳ４６）。台帳管理手段３１Ａは、暗号化されたレコードを受け取ると、受け取ったレコードを、自分（自ノード）を含む全てのノード２０，３０の分散型台帳記憶手段２３，３３に記憶させるための処理を実行する（ステップＳ４７）。
【０１４３】
具体的には、台帳管理手段３１Ａは、暗号化されたレコードを含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分（自ノード）の分散型台帳記憶手段３３に保存するとともに、他のノード２０，３０へ配信する（ステップＳ４７）。この際、ブロックの生成処理、承認処理、他のノード２０，３０への配信処理は、必ずしも自分（自ノード）で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード２０，３０に行わせてもよい。
【０１４４】
また、図示は省略されているが、他のノード２０，３０では、台帳管理手段２１Ａ，３１Ａにより、配信元のノード３０（始動ノード２０の場合もある。）からネットワーク１を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段２３，３３に保存する。
【０１４５】
＜レコードの閲覧時の処理の流れ＞
【０１４６】
図１０において、ユーザ（ここでは、ユーザＢとする。）が、分散型台帳に登録されているレコードの閲覧のために、ユーザ端末４０からノード３０（始動ノード２０でもよいが、ここではノードＸ，Ｙ，Ｚのいずれかとする。）にアクセスすると、台帳管理手段３１Ａにより、分散型台帳記憶手段３３から、属性ベース暗号に関連する各種処理用のプログラムのうちのレコード取得手段３１Ｆおよびレコード復号手段３１Ｇを実現するプログラムが読み込まれ、主メモリ上に配置される。
【０１４７】
そして、レコード取得手段３１Ｆにより、ユーザＢによるレコードの閲覧要求（閲覧対象のレコードを特定する情報を含む。）を、ユーザＢのＩＤ（ユーザ識別情報）およびアカウント鍵とともにユーザ端末４０からネットワーク１を介して受信すると（ステップＳ５１）、分散型台帳記憶手段３３から、閲覧対象のレコードを取得し、取得した閲覧対象のレコードを、ユーザＢのＩＤおよびアカウント鍵とともにレコード復号手段３１Ｇに引き渡す（ステップＳ５２）。
【０１４８】
レコード復号手段３１Ｇは、レコード取得手段３１Ｆから閲覧対象のレコード並びにユーザＢのＩＤおよびアカウント鍵を受け取ると（ステップＳ５３）、ユーザＢのＩＤおよびアカウント鍵を用いて、分散型台帳記憶手段３３からユーザＢの子属性秘密鍵を取得し（ステップＳ５４）、取得したユーザＢの子属性秘密鍵を用いて、閲覧対象のレコードを復号し（ステップＳ５５）、復号済のレコードをレコード取得手段３１Ｆに引き渡す（ステップＳ５６）。
【０１４９】
なお、上述したステップＳ５４で、分散型台帳記憶手段３３からユーザＢの子属性秘密鍵を取得する際には、レコード復号手段３１Ｇは、閲覧対象のレコードが分散型台帳記憶手段３３に記憶された時点以前に分散型台帳記憶手段３３に記憶されたユーザＢの子属性秘密鍵のうちの最も新しい子属性秘密鍵を取得して復号処理を実行してもよい。
【０１５０】
レコード取得手段３１Ｆは、レコード復号手段３１Ｇから復号済のレコードを受け取り、受け取った復号済のレコードの表示用データを、ネットワーク１を介してユーザＢの操作するユーザ端末４０に送信する（ステップＳ５７）。
【０１５１】
＜属性追加時の処理の流れ、および子属性秘密鍵の新旧によるレコードの閲覧制御＞
【０１５２】
図１１において、ユーザ（ここでは、ユーザＡとする。）が、他のユーザ（ここでは、ユーザＣとする。）の属性変更のために（例えば、個人であるユーザＡが自分の所属する企業であるユーザＣの属性に、自分の属性を追加することにより、ユーザＣがユーザＡの登録レコードを閲覧できるようにするために）、ユーザ端末４０からノード３０（始動ノード２０でもよいが、ここではノードＸ，Ｙ，Ｚのいずれかとする。）にアクセスすると、台帳管理手段３１Ａにより、分散型台帳記憶手段３３から、属性ベース暗号に関連する各種処理用のプログラムのうちの属性追加・削除手段３１Ｃを実現するプログラムが読み込まれ、主メモリ上に配置される。
【０１５３】
そして、属性追加・削除手段３１Ｃにより、属性変更依頼を行うユーザＡの操作するユーザ端末４０からネットワーク１を介して送信されてくるユーザＡによる属性の追加依頼（ユーザＡのＩＤおよびアカウント鍵、および属性変更対象のユーザＣのＩＤを含む。）を受信すると（ステップＳ７１）、属性変更対象のユーザＣの操作するユーザ端末４０に対して属性変更（ここでは、一例として、ユーザＣの属性に、ユーザＡの属性を追加する属性変更とする。）の承認依頼を送る（ステップＳ７２）。この承認依頼は、例えば、電子メールの自動送信等でよい。
【０１５４】
ユーザＣが、ユーザＡによる承認依頼に応じるために、ユーザ端末４０からノード３０にアクセスすると、台帳管理手段３１Ａにより、分散型台帳記憶手段３３から、属性ベース暗号に関連する各種処理用のプログラムのうちの属性追加・削除手段３１Ｃを実現するプログラムが読み込まれ、主メモリ上に配置される。なお、既に配置されている場合には、分散型台帳記憶手段３３からのプログラムの読込は省略することができる。
【０１５５】
そして、属性追加・削除手段３１Ｃにより、ユーザＣの操作するユーザ端末４０からネットワーク１を介して送信されてくるユーザＣのＩＤおよびアカウント鍵、並びにユーザＡのＩＤおよびアカウント鍵（ユーザＡのＩＤおよびアカウント鍵は、ユーザＡによるユーザＣへの承認依頼に含まれている。）を受信し（ステップＳ７３）、ユーザＣのＩＤおよびアカウント鍵を用いて、ユーザＣのアカウント情報に含まれる属性リスト（図６参照）を分散型台帳記憶手段３３から取得するとともに、ユーザＡのＩＤおよびアカウント鍵を用いて、ユーザＡのアカウント情報に含まれる属性識別子（図６参照）を分散型台帳記憶手段３３から取得する（ステップＳ７４）。
【０１５６】
続いて、属性追加・削除手段３１Ｃにより、属性変更対象のユーザＣの属性リストおよび属性変更依頼を行うユーザＡの属性識別子を用いて、ユーザＣの属性リストにユーザＡの属性識別子を追加した属性を埋め込んだユーザＣの新しい子属性秘密鍵を生成するとともに、ユーザＣの今までの属性リストにユーザＡの属性識別子を追加することにより、ユーザＣの属性リストを更新する（ステップＳ７５）。
【０１５７】
それから、属性追加・削除手段３１Ｃにより、生成したユーザＣの新しい子属性秘密鍵、およびユーザＣの更新後の属性リストを、台帳管理手段３１Ａに引き渡して保存指示を行う（ステップＳ７６）。台帳管理手段３１Ａは、ユーザＣの新しい子属性秘密鍵、およびユーザＣの更新後の属性リストを受け取ると、受け取った子属性秘密鍵および属性リストを、ユーザＣのアカウント情報として自分（自ノード）を含む全てのノード２０，３０の分散型台帳記憶手段２３，３３に記憶させるための処理を実行する（ステップＳ７７）。
【０１５８】
具体的には、台帳管理手段３１Ａは、ユーザＣの新しい子属性秘密鍵およびユーザＣの更新後の属性リストを含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分（自ノード）の分散型台帳記憶手段３３に保存するとともに、他のノード２０，３０へ配信する（ステップＳ７７）。この際、ブロックの生成処理、承認処理、他のノード２０，３０への配信処理は、必ずしも自分（自ノード）で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード２０，３０に行わせてもよい。
【０１５９】
また、図示は省略されているが、他のノード２０，３０では、台帳管理手段２１Ａ，３１Ａにより、配信元のノード３０（始動ノード２０の場合もある。）からネットワーク１を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段２３，３３に保存する。
【０１６０】
これにより、図６に示すように、例えば、日時Ｔ３に、ユーザＣのアカウント情報についてユーザＡの属性を追加する属性変更を行った場合には、ユーザＣの子属性秘密鍵については、ユーザＣという属性が埋め込まれた秘密鍵が、「ユーザＣ＋ユーザＡ」という属性が埋め込まれた秘密鍵に更新される。また、ユーザＣの属性リストについては、ユーザＣという属性リストが、「ユーザＣ＋ユーザＡ」という属性リストに更新される。
【０１６１】
なお、ユーザＣの子属性秘密鍵が、「ユーザＣ＋ユーザＡ」という属性が埋め込まれた秘密鍵に更新されると、ユーザＣはユーザＡの登録レコードを参照することができるようになるが（例えば、ユーザＡの所属する企業であるユーザＣは、社員であるユーザＡの登録情報を参照することができるようになるが）、ユーザＡがユーザＣの登録レコードを参照することができるようになるわけではない。ユーザＡがユーザＣの登録レコードを参照するためには、ユーザＡのアカウント情報についてユーザＣの属性を追加する属性変更を行い、ユーザＡの子属性秘密鍵を、「ユーザＡ＋ユーザＣ」という属性が埋め込まれた秘密鍵にする必要がある。
【０１６２】
また、図７に示すように、日時Ｔ１に生成されたブロックに、ユーザＣのアカウント情報が初期状態で格納されているものとし、日時Ｔ２，Ｔ４に生成されたブロックに、ユーザＡ，Ｂのみ閲覧可能なレコード（ユーザＡという属性、またはユーザＢという属性のうちの少なくとも一方の属性を有するユーザのみが閲覧可能となるポリシーを埋め込んだレコード）が格納されているとする。この例では、ブロック内の情報を更新する際には、更新する部分についての新しい情報だけを新しいブロックに格納し、更新する必要のない部分については、古いブロックの情報を参照する方法が採られている。
【０１６３】
このとき、ユーザＣは、日時Ｔ２に生成されたブロックに格納されているユーザＡ，Ｂのみ閲覧可能なレコードについては、（１）日時Ｔ１の子属性秘密鍵では閲覧することができない。日時Ｔ１の子属性秘密鍵は、ユーザＣという属性が埋め込まれた秘密鍵であり、ユーザＡという属性は埋め込まれていないので（勿論、ユーザＢという属性も埋め込まれていない。）、この日時Ｔ２のレコードを復号することができないからである。一方、（２）日時Ｔ３の子属性秘密鍵を使用すれば閲覧することができる。日時Ｔ３の子属性秘密鍵は、「ユーザＣ＋ユーザＡ」という属性が埋め込まれた秘密鍵であり、ユーザＡという属性が含まれているので、この日時Ｔ２のレコードを復号することができるからである。
【０１６４】
従って、日時Ｔ３の子属性秘密鍵は、日時Ｔ３以降に登録されたレコードにしか使用できない制御を行うと、日時Ｔ２のレコードの閲覧制御が可能となる。すなわち、前述したように、図１０のステップＳ５４で、分散型台帳記憶手段３３から子属性秘密鍵を取得する際に、レコード復号手段３１Ｇにより、閲覧対象のレコードが分散型台帳記憶手段３３に記憶された時点以前に分散型台帳記憶手段３３に記憶された子属性秘密鍵（該当する子属性秘密鍵が複数ある場合には、そのうちの最も新しい子属性秘密鍵）を取得して復号処理を実行することにより、上記のようなレコードの閲覧制御が可能となる。
【０１６５】
このようなレコードの閲覧制御を行った場合には、ユーザＣは、日時Ｔ４に生成されたブロックに格納されているユーザＡ，Ｂのみ閲覧可能なレコードについては、日時Ｔ３の子属性秘密鍵を使用することができるので、復号することができ、閲覧することができる。
【０１６６】
＜分散型台帳システム１０の効果＞
【０１６７】
このような本実施形態によれば、次のような効果がある。すなわち、分散型台帳システム１０では、ユーザにより登録されるレコードは、分散型台帳に記録され、複数のノード２０，３０で共有された状態で保存されるので、取引についての高い透明性および過去の取引データの改ざんの困難性を担保することができるため、ＤＬＴの持つ基本的な特徴をそのまま活かすことができる。
【０１６８】
また、分散型台帳システム１０では、情報の秘匿化を図るために、ＤＬＴと属性ベース暗号とを組み合わせているが、レコードの登録（暗号化）および参照（復号）の場面においてＤＬＴと公開鍵暗号方式とを組み合わせるだけの単純な組合せではなく、属性ベース暗号を実現するための機能の多くを分散型台帳内に組み込んでいる。より具体的には、子属性秘密鍵を含む各ユーザＡ，Ｂ，Ｃ，…のアカウント情報、属性ベース暗号に関連する各種処理用のプログラム、および親属性公開鍵を、分散型台帳記憶手段２３，３３に格納している。このため、これらのアカウント情報（子属性秘密鍵を含む。）、プログラム、および親属性公開鍵を、改ざんできない形で複数のノード２０，３０に保持させることができる。
【０１６９】
従って、各ユーザＡ，Ｂ，Ｃ，…のアカウント情報（子属性秘密鍵を含む。）を、すべて各ユーザＡ，Ｂ，Ｃ，…のアカウント鍵で暗号化することにより、属性ベース暗号を実現するための大部分の機能を、分散型台帳内に改ざんできない形で、かつ、秘匿すべきアカウント情報については秘匿した状態で組み込むことができるので、分散型台帳の自律分散的なアカウント管理の仕組みの中に属性ベース暗号用の属性情報を組み込むことができる。このため、管理者による改ざんの脅威がない状態での属性管理を実現することができるうえ、中央集権的な要素を極力排除するというＤＬＴの特性を活かすことができる。
【０１７０】
そして、分散型台帳システム１０では、ＤＬＴと属性ベース暗号とを組み合わせているので、例えば、証券業界の場合であれば、次のような属性による閲覧制御を行うことができる。すなわち、証券保管振替機構や取引所は、全てのトランザクションデータを閲覧することができる。証券会社は、自分の顧客（株主等）のトランザクションデータであれば、いずれの銘柄（いずれの発行体が発行した株式等の銘柄）のデータであっても閲覧することができるが、他の証券会社の顧客のデータは閲覧することができない。顧客（株主等）は、自分のトランザクションデータであれば、いずれの銘柄のデータでも、いずれの証券会社を介したデータでも閲覧することができるが、他の顧客（株主等）のデータは閲覧することができない。株式等の発行体は、自分の発行した株式等の銘柄のデータであれば、いずれの顧客（株主等）のデータでも、いずれの証券会社を介したデータでも閲覧することができるが、他の発行体のデータは閲覧することができない。このような詳細な閲覧制御を行うことができる。
【０１７１】
このため、分散型台帳システム１０を証券業界に適用した場合には、決算機関の省略による決済コストの削減、発行体に関連する一連の業務負荷の軽減（株主報告、議決権行使、配当等）、議決権行使プロセスの透明化、証券・資金両決済への適用による（Ｔ＋０）化（約定したその日Ｔに決済までできることによる決済リスクの削減）、決済関連データにおける災害復旧・事業継続態勢の確立といった効果が得られる。
【０１７２】
また、分散型台帳システム１０を構成する各ノード２０，３０は、属性追加・削除手段２１Ｃ，３１Ｃを備えているので、属性変更に対応することができる。そして、属性追加・削除手段２１Ｃ，３１Ｃは、属性変更（追加または削除）の際に、属性変更依頼を行うユーザおよび属性変更対象のユーザのアカウント鍵をそれぞれのユーザ端末４０から受信するようになっているので、これらの双方のユーザに自律的に承認を取り、その両者のアカウント鍵を使ってその後の属性変更に係る処理を自律的に行うことができる。
【０１７３】
さらに、分散型台帳システム１０では、属性識別子および属性リストというパラメータを用意し、これらを各ユーザＡ，Ｂ，Ｃ，…のアカウント情報として分散型台帳に暗号化して記憶させておくので、これらのパラメータを使って自律的な属性情報の更新を実現することができる。通常、これらの属性情報は、管理者がリストとして保有しているものであるが、分散型台帳システム１０では、分散型台帳上に暗号化して持たせることで、管理者の介在を不要とすることができる。
【０１７４】
また、レコード復号手段２１Ｇ，３１Ｇは、復号処理を行う際に、使用する子属性秘密鍵を選択制御する構成とすることもでき、このような構成とした場合には、属性追加・削除手段２１Ｃ，３１Ｃによる属性変更が行われ、新しい子属性秘密鍵が生成されたときに、その新しい子属性秘密鍵は、それ以降に登録されるレコードの閲覧にしか用いることができず、それよりも前に登録された過去のレコードについては、その新しい子属性秘密鍵を用いることができないようにする制御を行うことができる。従って、新しい子属性秘密鍵が生成されても、それよりも前の時点で閲覧することができなかった過去のレコードについては、依然として閲覧することができないようにすることができる。
【０１７５】
さらに、親属性鍵生成手段２１Ｊは、親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理を定期的に繰り返す構成とすることもでき、このような構成とした場合には、親属性公開鍵および親属性秘密鍵、並びに子属性秘密鍵が定期的に更新されるので、万一、鍵に関する情報が漏れてしまったときでも、漏れた情報は、これらの鍵の更新後には使用できなくなるため、情報の秘匿性を高めることができる。
【０１７６】
＜変形の形態＞
【０１７７】
なお、本発明は前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
【０１７８】
（ケースＬ：前記実施形態で採用）
【０１７９】
例えば、前記実施形態では、親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理については、前述したケースＬを採用していた。すなわち、ケースＬでは、始動ノード２０が親属性鍵生成手段２１Ｊを備え、始動ノード２０で親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理が行われるようになっていた。従って、始動ノード２０は、一般のノード３０に対し、親属性鍵生成手段２１Ｊが追加された構成を備えていた。
【０１８０】
（ケースＭ）
【０１８１】
しかし、本発明の分散型台帳システムでは、前述したケースＭを採用してもよい。ケースＭでは、始動ノード２０は存在せず、分散型台帳生成者端末６０（前記実施形態の分散型台帳生成者端末６０とは異なる構成となるが、説明の便宜上、同じ符号を用いる。）で親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理が行われる。
【０１８２】
従って、ケースＭでは、分散型台帳生成者端末６０に、始動ノード２０の親属性鍵生成手段２１Ｊに相当する親属性鍵生成手段を設けるとともに、始動ノード２０のプログラム記憶手段２２に記憶されていた親属性鍵生成プログラムを記憶させる。
【０１８３】
また、ケースＭでは、分散型台帳生成者端末６０に設けられた親属性鍵生成手段（２１Ｊ相当）により親属性公開鍵および親属性秘密鍵を生成するので、前記実施形態の図８に示す処理の流れとは異なり、分散型台帳生成者端末６０で生成した親属性公開鍵を、全てのノード３０（ノードＸ，Ｙ，Ｚ）の分散型台帳記憶手段３３に記憶させるために、分散型台帳生成者端末６０からネットワーク１を介して複数のノード３０のいずれかに送信する。
【０１８４】
さらに、ケースＭでは、前記実施形態の図８に示す処理の流れとは異なり、分散型台帳生成者端末６０で生成した親属性秘密鍵を、分散型台帳生成者端末６０からネットワーク１を介して管理装置５０へ送信する。但し、ケースＲでは、親属性秘密鍵は、管理装置５０に記憶されるのではなく、ノードの分散型台帳に記憶されるので、（ケースＭ＋Ｒ）の場合には、分散型台帳生成者端末６０に設けられた親属性鍵生成手段（２１Ｊ相当）により生成した親属性秘密鍵を、管理装置５０（装置という呼称としているが、端末である。）を操作する管理担当者Ｍ２のアカウント情報として全てのノード３０（ノードＸ，Ｙ，Ｚ）の分散型台帳記憶手段３３に記憶させるために、分散型台帳生成者端末６０からネットワーク１を介して複数のノード３０のいずれか若しくは管理装置５０（管理担当者Ｍ２の操作する端末）へ送信する。後者のように、管理装置５０（管理担当者Ｍ２の操作する端末）へ送信する場合とは、生成した親属性秘密鍵を、一旦、管理装置５０へ送信し、管理装置５０から自己（管理担当者Ｍ２）のアカウント情報として複数のノード３０のいずれかに送信する場合である。
【０１８５】
なお、前記実施形態では、属性ベース暗号に関連する各種処理用のプログラムも、親属性公開鍵とともに、始動ノード２０による処理を起点として、各ノード２０，３０の分散型台帳記憶手段２３，３３に配置するようになっていたので、ケースＭでも、属性ベース暗号に関連する各種処理用のプログラムを、同様にして分散型台帳生成者端末６０による処理を起点として、各ノード３０の分散型台帳記憶手段３３に配置するようにしてもよい。
【０１８６】
（ケースＮ）
【０１８７】
また、本発明の分散型台帳システムでは、前述したケースＮを採用してもよい。ケースＮでは、親属性鍵生成手段（２１Ｊ相当）を実現するためのプログラムも、属性ベース暗号に関連する各種処理用のプログラムとして、台帳型台帳に記憶される。すなわち、ノード３０の分散型台帳記憶手段３３に記憶されたプログラム（属性ベース暗号に関連する各種処理用のプログラム）を実行することにより、親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理が行われる。このため、始動ノード２０は存在せず、すべてのノード３０が親属性鍵生成手段（２１Ｊ相当）を備えることになるが、実際に親属性鍵生成手段（２１Ｊ相当）による処理を実行するのは、１つのノード３０でよい。
【０１８８】
従って、ケースＮでは、親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理を行うにあたり、前記実施形態の図８に示す処理の流れとは異なり、分散型台帳生成者端末６０から始動ノード２０にアクセスするのではなく、分散型台帳生成者端末６０から一般のノード３０（複数のノード３０のうちのいずれか）にアクセスし、ノード３０の台帳管理手段３１Ａが、分散型台帳記憶手段３３に記憶された属性ベース暗号に関連する各種処理用のプログラムのうちの親属性鍵生成手段（２１Ｊ相当）を実現するプログラムを読み込み、主メモリ上に配置する。そして、ノード３０において、親属性鍵生成手段（２１Ｊ相当）により、親属性鍵（親属性公開鍵および親属性秘密鍵）の生成処理を実行する。また、ノード３０で生成した親属性秘密鍵は、ノード３０からネットワーク１を介して管理装置５０へ送信する。
【０１８９】
（ケースＰ：前記実施形態で採用）
【０１９０】
また、前記実施形態では、親属性秘密鍵の記憶処理（保存場所）、および子属性秘密鍵の生成処理については、前述したケースＰを採用していた。すなわち、ケースＰでは、親属性秘密鍵は、管理装置５０に記憶されていた。また、子属性秘密鍵は、ノード３０（始動ノード２０でもよい。）で生成されていた。
【０１９１】
（ケースＱ）
【０１９２】
しかし、本発明の分散型台帳システムでは、前述したケースＱを採用してもよい。ケースＱでは、前記実施形態（ケースＰ）の場合と同様に、図１２に示すように、親属性秘密鍵は、管理装置２５０に記憶される。一方、子属性秘密鍵は、図１３に示すように、ノード２３０（ノードＸ，Ｙ，Ｚ）ではなく、管理装置２５０で生成される。従って、ケースＱでの子属性秘密鍵の生成時の処理の流れは、前記実施形態の図９に示す処理の流れとは異なるものとなる。
【０１９３】
図１２において、管理装置２５０は、属性管理を含む各種処理を実行する処理手段２５１と、親属性秘密鍵を記憶する親属性秘密鍵記憶手段２５２とを備えている。
【０１９４】
処理手段２５１は、始動ノードの親属性鍵生成手段２１Ｊによりネットワーク１を介して送信されてくる親属性秘密鍵（但し、ケースＭでは、分散型台帳生成者端末６０からネットワーク１を介して送信されてくる親属性秘密鍵となる。）を受信し、受信した親属性秘密鍵を親属性秘密鍵記憶手段２５２に記憶させる処理を実行する親属性秘密鍵受信手段２５１Ａと、子属性秘密鍵を生成する処理を実行する子属性秘密鍵生成手段２５１Ｂとを含んで構成されている。このうち親属性秘密鍵受信手段２５１Ａは、前記実施形態の親属性秘密鍵受信手段５１Ａと同様である。一方、子属性秘密鍵生成手段２５１Ｂは、前記実施形態の子属性秘密鍵生成手段２１Ｈ，３１Ｈに相当する処理を行うものであるが、前記実施形態では、子属性秘密鍵生成手段２１Ｈ，３１Ｈは、各ノード２０，３０に設けられていたのに対し、この子属性秘密鍵生成手段２５１Ｂは、管理装置２５０に設けられている点が異なる。
【０１９５】
図１３において、ユーザ（ここでは、ユーザＡとする。）が、自分の子属性秘密鍵の生成のために、ユーザ端末４０からノード２３０（始動ノードが存在するケースでは、始動ノードでもよいが、ここではノードＸ，Ｙ，Ｚのいずれかとする。また、前記実施形態のノード３０とは異なり、子属性秘密鍵の生成を行わないことから、符号を２３０に変えている。）にアクセスすると、台帳管理手段３１Ａにより、分散型台帳記憶手段３３から、属性ベース暗号に関連する各種処理用のプログラムのうちのアカウント生成手段２３１Ｂを実現するプログラムが読み込まれ、主メモリ上に配置される。なお、前記実施形態（ケースＰ）では、子属性秘密鍵生成手段３１Ｈを実現するプログラムも読み込んでいたが、ノード２３０では、子属性秘密鍵の生成を行わないことから、アカウント生成手段２３１Ｂを実現するプログラムの読込だけでよい。
【０１９６】
そして、アカウント生成手段２３１Ｂにより、ユーザＡのＩＤ（ユーザ識別情報）およびアカウント鍵を受け付けると（ステップＳ８１）、受け付けたユーザＡのＩＤおよびアカウント鍵を用いて、分散型台帳記憶手段３３から、ユーザＡのアカウント情報に含まれる属性リストを取得し（ステップＳ８２）、取得した属性リストとともに子属性秘密鍵の生成依頼を、ネットワーク１を介して管理装置２５０へ送信する（ステップＳ８３）。なお、前記実施形態（ケースＰ）では、図９のステップＳ２３に示すように、アカウント生成手段３１Ｂにより、子属性秘密鍵の生成指示（属性リストを含む。）を、子属性秘密鍵生成手段３１Ｈに送っていた。
【０１９７】
管理装置２５０では、子属性秘密鍵生成手段２５１Ｂにより、ノード２３０からネットワーク１を介して送信されてくる子属性秘密鍵の生成依頼（ユーザＡの属性リストを含む。）を受信すると（ステップＳ８４）、親属性秘密鍵記憶手段２５２に記憶されている親属性秘密鍵および受信したユーザＡの属性リストを用いて、その属性リストで示される属性（ユーザＡという属性、あるいはこの時点で属性リストが更新されていれば、例えば「ユーザＡ＋ユーザＣ」という属性等である場合もある。）を埋め込んだ子属性秘密鍵を生成し（ステップＳ８５）、生成した子属性秘密鍵を、ネットワーク１を介してノード２３０へ送信する（ステップＳ８６）。なお、上記のステップＳ８３，Ｓ８４の子属性秘密鍵の生成依頼の送受信時には、なりすましによる不正な鍵情報の取得を防止するため、人（管理担当者Ｍ２）による確認や、電子署名などの別の暗号化技術により、依頼の真偽を確認する処理（ＤＬＴ若しくは認証済みノードから送られた依頼であることを確認する処理）を施す。
【０１９８】
ノード２３０では、アカウント生成手段２３１Ｂにより、管理装置２５０からネットワーク１を介して送信されてくる子属性秘密鍵を受信すると、受信した子属性秘密鍵を、台帳管理手段３１Ａに引き渡して保存指示を行う（ステップＳ８７）。台帳管理手段３１Ａは、子属性秘密鍵を受け取ると、受け取った子属性秘密鍵を、自分（自ノード）を含む全てのノード２３０（始動ノードが存在するケースでは、始動ノードも含む。）の分散型台帳記憶手段３３に記憶させるための処理を実行する（ステップＳ８８）。
【０１９９】
具体的には、台帳管理手段３１Ａは、子属性秘密鍵を含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分（自ノード）の分散型台帳記憶手段３３に保存するとともに、他のノード２３０（始動ノードが存在するケースでは、始動ノードも含む。）へ配信する（ステップＳ８８）。この際、ブロックの生成処理、承認処理、他のノード２３０（始動ノードが存在するケースでは、始動ノードも含む。）への配信処理は、必ずしも自分（自ノード）で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード２３０に行わせてもよい。
【０２００】
また、図示は省略されているが、他のノード２３０（始動ノードが存在するケースでは、始動ノードも含む。）では、台帳管理手段３１Ａにより、配信元のノード２３０からネットワーク１を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段３３に保存する。
【０２０１】
（ケースＲ）
【０２０２】
また、本発明の分散型台帳システムでは、前述したケースＲを採用してもよい。ケースＲでは、図１４に示すように、親属性秘密鍵は、管理装置３５０ではなく、各ノード３３０（始動ノードが存在するケースでは、始動ノードも含む。）の分散型台帳に記憶される。また、子属性秘密鍵は、各ノード３３０（始動ノードが存在するケースでは、始動ノードも含む。）で生成されるが、この点は、前記実施形態（ケースＰ）の場合と同様である。
【０２０３】
従って、ケースＲでは、親属性鍵生成手段２１Ｊ（または２１Ｊ相当）により生成した親属性秘密鍵を、管理装置３５０を操作する管理担当者Ｍ２のアカウント情報として全てのノード３３０（ノードＸ，Ｙ，Ｚであるが、始動ノードが存在するケースでは、始動ノードも含む。）の分散型台帳記憶手段３３３に記憶させる。なお、管理装置３５０は、親属性秘密鍵を記憶しないので、各ノード３３０からの要求に応じて親属性秘密鍵を提供するサーバの役割は果たさなくてよいため、装置という呼称としているが、端末である。
【０２０４】
図１４において、ユーザ（ここでは、ユーザＡとする。）が、自分の子属性秘密鍵の生成のために、ユーザ端末４０からノード３３０（始動ノードが存在するケースでは、始動ノードでもよいが、ここではノードＸ，Ｙ，Ｚのいずれかとする。また、前記実施形態のノード３０とは異なり、親属性秘密鍵を記憶していることから、符号を３３０に変えている。）にアクセスすると、台帳管理手段３１Ａにより、分散型台帳記憶手段３３３から、属性ベース暗号に関連する各種処理用のプログラムのうちのアカウント生成手段３１Ｂおよび子属性秘密鍵生成手段３３１Ｈを実現するプログラムが読み込まれ、主メモリ上に配置される。ここで、子属性秘密鍵生成手段３３１Ｈは、前記実施形態（ケースＰ）の子属性秘密鍵生成手段３１Ｈとは、親属性秘密鍵の取得方法が異なるので、異なる符号を付している。
【０２０５】
そして、アカウント生成手段３１Ｂにより、ユーザＡのＩＤ（ユーザ識別情報）およびアカウント鍵を受け付けると（ステップＳ９１）、受け付けたユーザＡのＩＤおよびアカウント鍵を用いて、分散型台帳記憶手段３３３から、ユーザＡのアカウント情報に含まれる属性リストを取得し（ステップＳ９２）、取得した属性リストとともに子属性秘密鍵の生成指示を、子属性秘密鍵生成手段３３１Ｈに送る（ステップＳ９３）。
【０２０６】
子属性秘密鍵生成手段３３１Ｈは、アカウント生成手段３１Ｂからの子属性秘密鍵の生成指示（ユーザＡの属性リストを含む。）を受け取ると（ステップＳ９４）、親属性秘密鍵取得用のアカウント鍵の要求信号を、ネットワーク１を介して管理装置３５０へ送信する（ステップＳ９５）。管理装置３５０では、親属性秘密鍵取得用のアカウント鍵の要求信号を受信すると（ステップＳ９６）、その要求がノード３３０からの正当なものであれば、管理担当者Ｍ２のアカウント鍵を、ネットワーク１を介してノード３３０へ送信する（ステップＳ９７）。なお、上記のステップＳ９５，Ｓ９６の親属性秘密鍵取得用のアカウント鍵の要求信号の送受信時には、なりすましによる不正な鍵情報の取得を防止するため、人（管理担当者Ｍ２）による確認や、電子署名などの別の暗号化技術により、要求の真偽を確認する処理（ＤＬＴ若しくは認証済みノードから送られた要求であることを確認する処理）を施す。
【０２０７】
ノード３３０では、子属性秘密鍵生成手段３３１Ｈにより、管理装置３５０からネットワーク１を介して送信されてくる管理担当者Ｍ２のアカウント鍵を受信すると（ステップＳ９８）、受信した管理担当者Ｍ２のアカウント鍵を用いて、分散型台帳記憶手段３３３から、管理担当者Ｍ２のアカウント情報に含まれる親属性秘密鍵を取得し（ステップＳ９９）、取得した親属性秘密鍵および上述したステップＳ９４でアカウント生成手段３１Ｂから受け取ったユーザＡの属性リストを用いて、その属性リストで示される属性（ユーザＡという属性、あるいはこの時点で属性リストが更新されていれば、例えば「ユーザＡ＋ユーザＣ」という属性等である場合もある。）を埋め込んだ子属性秘密鍵を生成し（ステップＳ１００）、生成した子属性秘密鍵をアカウント生成手段３１Ｂに引き渡す（ステップＳ１０１）。
【０２０８】
アカウント生成手段３１Ｂは、子属性秘密鍵生成手段３３１Ｈからの子属性秘密鍵を受け取ると、受け取った子属性秘密鍵を、台帳管理手段３１Ａに引き渡して保存指示を行う（ステップＳ１０２）。台帳管理手段３１Ａは、子属性秘密鍵を受け取ると、受け取った子属性秘密鍵を、自分（自ノード）を含む全てのノード３３０（始動ノードが存在するケースでは、始動ノードも含む。）の分散型台帳記憶手段３３３に記憶させるための処理を実行する（ステップＳ１０３）。
【０２０９】
具体的には、台帳管理手段３１Ａは、子属性秘密鍵を含むブロックの生成処理を行った後、生成したブロックの承認処理を行い、承認されたブロックを、自分（自ノード）の分散型台帳記憶手段３３３に保存するとともに、他のノード３３０（始動ノードが存在するケースでは、始動ノードも含む。）へ配信する（ステップＳ１０３）。この際、ブロックの生成処理、承認処理、他のノード３３０（始動ノードが存在するケースでは、始動ノードも含む。）への配信処理は、必ずしも自分（自ノード）で行う必要はなく、生成指示、承認指示、配信指示を出して他のノード３３０に行わせてもよい。
【０２１０】
また、図示は省略されているが、他のノード３３０（始動ノードが存在するケースでは、始動ノードも含む。）では、台帳管理手段３１Ａにより、配信元のノード３３０からネットワーク１を介して送信されてくるブロックを受信し、受信したブロックを分散型台帳記憶手段３３３に保存する。
【０２１１】
（その他の変形の形態）
【０２１２】
さらに、前記実施形態では、ユーザ端末４０からの子属性秘密鍵の生成、レコード登録、レコード閲覧、属性変更（追加、削除）のためのアクセスがあったときに、分散型台帳管理の基本的な処理（属性ベース暗号以外の処理）を取り扱う台帳管理手段２１Ａ，３１Ａが、分散型台帳記憶手段２３，３３から、属性ベース暗号に関連する各種処理用のプログラムを読み込んで主メモリ上に配置する構成とされていたが、ユーザ端末４０からのアクセスを待たずに、属性ベース暗号に関連する各種処理用のプログラムを常駐させる構成としてもよい。
【産業上の利用可能性】
【０２１３】
以上のように、本発明の分散型台帳システムおよびプログラムは、例えば、証券・金融市場における取引データの記録等に用いるのに適している。
【符号の説明】
【０２１４】
１  ネットワーク
１０  分散型台帳システム
２０  始動ノード
２３，３３，３３３  分散型台帳記憶手段
２１Ｂ，３１Ｂ，２３１Ｂ  アカウント生成手段
２１Ｃ，３１Ｃ  属性追加・削除手段
２１Ｄ，３１Ｄ  レコード記録手段
２１Ｅ，３１Ｅ  レコード暗号化手段
２１Ｆ，３１Ｆ  レコード取得手段
２１Ｇ，３１Ｇ  レコード復号手段
２１Ｈ，３１Ｈ，２５１Ｂ，３３１Ｈ  子属性秘密鍵生成手段
２１Ｊ  親属性鍵生成手段
３０，２３０，３３０  ノード
４０  ユーザ端末
５０，２５０，３５０  管理装置
５１Ａ，２５１Ａ  親属性秘密鍵受信手段
５１Ｂ  親属性秘密鍵送信手段
５２，２５２  親属性秘密鍵記憶手段
６０  分散型台帳生成者端末
【図１】
2018098564.tif 000003
【図２】
2018098564.tif 000004
【図３】
2018098564.tif 000005
【図４】
2018098564.tif 000006
【図５】
2018098564.tif 000007
【図６】
2018098564.tif 000008
【図７】
2018098564.tif 000009
【図８】
2018098564.tif 000010
【図９】
2018098564.tif 000011
【図１０】
2018098564.tif 000012
【図１１】
2018098564.tif 000013
【図１２】
2018098564.tif 000014
【図１３】
2018098564.tif 000015
【図１４】
2018098564.tif 000016