(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-04
(45)【発行日】2024-09-12
(54)【発明の名称】端末装置、コンピュータプログラム
(51)【国際特許分類】
G06F 21/60 20130101AFI20240905BHJP
H04L 9/14 20060101ALI20240905BHJP
G06F 21/62 20130101ALI20240905BHJP
【FI】
G06F21/60 320
H04L9/14
G06F21/62 309
(21)【出願番号】P 2022542563
(86)(22)【出願日】2020-08-14
(86)【国際出願番号】 JP2020030888
(87)【国際公開番号】W WO2022034684
(87)【国際公開日】2022-02-17
【審査請求日】2022-10-27
(73)【特許権者】
【識別番号】521205593
【氏名又は名称】株式会社アイルソフト
(74)【代理人】
【識別番号】110001911
【氏名又は名称】弁理士法人アルファ国際特許事務所
(72)【発明者】
【氏名】市川 満之
【審査官】行田 悦資
(56)【参考文献】
【文献】欧州特許出願公開第03428865(EP,A1)
【文献】特開2015-041319(JP,A)
【文献】特開2008-163612(JP,A)
【文献】国際公開第2018/096641(WO,A1)
【文献】特表2008-503950(JP,A)
【文献】米国特許出願公開第2002/0199121(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60
H04L 9/14
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
外部装置との間で、ブローカを介して、パブリッシュ・サブスクライブ・メッセージ・モデルに基づく通信を行う端末装置であって、
外部データを取得する取得部と、
前記外部データの少なくとも一部を暗号化して、暗号文を含む暗号メッセージデータを生成する暗号化処理部と、
平文のトピック指定データと、前記暗号メッセージデータと、を含む暗号化パブリッシュメッセージを、前記ブローカに配信するデータ配信部と、
暗号化条件が満たされるか否かを判断する暗号化判断部と、
を備え、
前記暗号化判断部によって前記暗号化条件が満たされると判断された場合、前記暗号化処理部は、前記暗号メッセージデータを生成し、前記データ配信部は、前記暗号化パブリッシュメッセージを前記ブローカに配信し、
前記暗号化判断部によって前記暗号化条件が満たされないと判断された場合、前記データ配信部は、平文のトピック指定データと、平文のメッセージデータと、を含む非暗号化パブリッシュメッセージを前記ブローカに配信し、
さらに、前記暗号化パブリッシュメッセージと前記非暗号化パブリッシュメッセージとのそれぞれにおける暗号文の配置パターンを識別するためのパターン識別データを、前記トピック指定データに含めるトピック処理部を備える、端末装置。
【請求項2】
請求項1に記載の端末装置であって、
前記外部データは、第1の外部データと第2の外部データとを含んでおり、
前記暗号化処理部は、前記第1の外部データを平文のままとし、前記第2の外部データを暗号化して、平文と暗号文とを含む前記暗号メッセージデータを生成可能である、
端末装置。
【請求項3】
請求項1または請求項2に記載の端末装置であって、
前記外部データは、第1の外部データと第2の外部データとを含んでおり、
前記暗号化処理部は、前記第1の外部データと前記第2の外部データとを、暗号ルールおよび暗号鍵の少なくとも一方が互いに異なる方法により暗号化して、前記暗号メッセージデータを生成可能である、
端末装置。
【請求項4】
外部装置との間で、ブローカを介して、パブリッシュ・サブスクライブ・メッセージ・モデルに基づく通信を行う端末装置であって、
外部データを取得する取得部と、
前記外部データの少なくとも一部を暗号化して、暗号文を含む暗号メッセージデータを生成する暗号化処理部と、
平文のトピック指定データと、前記暗号メッセージデータと、を含む暗号化パブリッシュメッセージを、前記ブローカに配信するデータ配信部と、
前記暗号メッセージデータを復号化するための復号化ルールと暗号鍵との少なくとも一方を含む暗号ルールデータを生成する暗号ルール生成部と、
を備え、
前記データ配信部は、前記トピック指定データと前記暗号ルールデータとを含む暗号ルールパブリッシュメッセージを前記ブローカに配信し、
前記暗号ルールデータは、前記復号化ルールと、前記暗号鍵と、前記復号化ルールと前記暗号鍵とを区切る区切り文字であって、複数の文字列である区切り文字を含む、
端末装置。
【請求項5】
請求項4に記載の端末装置であって、
さらに、暗号変更条件が満たされるか否かを判断する暗号変更判断部を備え、
前記暗号変更判断部によって前記暗号変更条件が満たされると判断された場合、暗号ルール生成部は、前記復号化ルールと前記暗号鍵と前記区切り文字との少なくとも1つを変更した新たな暗号ルールデータを生成する、
端末装置。
【請求項6】
請求項5に記載の端末装置であって、
前記暗号変更判断部は、第1の暗号変更条件と、前記第1の暗号変更条件よりも満たす頻度が高い第2の暗号変更条件とのそれぞれが満たされるか否かを判断し、
暗号ルール生成部は、前記暗号変更判断部によって前記第1の暗号変更条件が満たされると判断された場合、前記復号化ルールと前記暗号鍵との少なくとも1つを変更した新たな第1の暗号ルールデータを生成し、前記暗号変更判断部によって前記第2の暗号変更条件が満たされると判断された場合、前記区切り文字を変更した新たな第2の暗号ルールデータを生成する、
端末装置。
【請求項7】
外部装置との間で、ブローカを介して、パブリッシュ・サブスクライブ・メッセージ・モデルに基づく通信を行う端末装置が有するコンピュータに、
外部データを取得する取得処理と、
前記外部データの少なくとも一部を暗号化して、暗号文を含む暗号メッセージデータを生成する暗号化処理と、
平文のトピック指定データと、前記暗号メッセージデータと、を含む暗号化パブリッシュメッセージを生成するデータ生成処理と、
前記データ生成処理によって生成された前記暗号化パブリッシュメッセージを、前記ブローカに配信するデータ配信処理と、
暗号化条件が満たされるか否かを判断する暗号化判断処理と、を実行させ、
前記暗号化判断処理で前記暗号化条件が満たされると判断された場合、前記暗号化処理では、前記暗号メッセージデータを生成し、前記データ配信処理では、前記暗号化パブリッシュメッセージを前記ブローカに配信し、
前記暗号化判断処理で前記暗号化条件が満たされないと判断された場合、前記データ配信処理では、平文のトピック指定データと、平文のメッセージデータと、を含む非暗号化パブリッシュメッセージを前記ブローカに配信し、
前記コンピュータに、さらに、前記暗号化パブリッシュメッセージと前記非暗号化パブリッシュメッセージとのそれぞれにおける暗号文の配置パターンを識別するためのパターン識別データを、前記トピック指定データに含めるトピック処理を実行させる、
コンピュータプログラム。
【請求項8】
外部装置との間で、ブローカを介して、パブリッシュ・サブスクライブ・メッセージ・モデルに基づく通信を行う端末装置が有するコンピュータに、
外部データを取得する取得処理と、
前記外部データの少なくとも一部を暗号化して、暗号文を含む暗号メッセージデータを生成する暗号化処
理と、
平文のトピック指定データと、前記暗号メッセージデータと、を含む暗号化パブリッシュメッセージを、前記ブローカに配信するデータ配信処理と、
前記暗号メッセージデータを復号化するための復号化ルールと暗号鍵との少なくとも一方を含む暗号ルールデータを生成する暗号ルール生成処理と、
を実行させ、
前記データ配信処理では、前記トピック指定データと前記暗号ルールデータとを含む暗号ルールパブリッシュメッセージを前記ブローカに配信し、
前記暗号ルールデータは、前記復号化ルールと、前記暗号鍵と、前記復号化ルールと前記暗号鍵とを区切る区切り文字であって、複数の文字列である区切り文字を含む、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示される技術は、パブリッシュ・サブスクライブ・メッセージ・モデルに基づく通信技術に関する。
【背景技術】
【0002】
端末装置間で通信する方法として、パブリッシュ・サブスクライブ(Publish-Subscribe)・メッセージ・モデル(以下、「パブ・サブ・モデル」という)が知られている(例えば特許文献1参照)。パブ・サブ・モデルでは、パブリッシャとして機能する端末装置(以下、単に「パブリッシャ」という)がトピック指定データとメッセージデータとを含むパブリッシュメッセージを生成し、ブローカに送信する。トピック指定データは、ブローカにおいて管理されるトピックを指定するための情報である。ブローカは、受信したパブリッシュメッセージに含まれるメッセージデータを、そのパブリッシュメッセージに含まれるトピック指定データにより指定されたトピックに登録する。ブローカは、トピックに登録されたメッセージデータを、そのトピックに予め申し込んでいたサブスクライバとして機能する端末装置(以下、「サブスクライバ」という)に送信する。これにより、サブスクライバは、パブリッシャが配信するメッセージデータのうち、予め申し込んでいたトピックに対応するものを購読することができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、パブ・サブ・モデルにおいて、パブリッシャとサブスクライバとの間でメッセージデータの機密性を確保したい場合がある。ここで、メッセージデータの機密性を確保する方法として、例えば、パブリッシャがパブリッシュメッセージ全体を公知の暗号化方式(例えばTLS(Transport Layer Security)による標準の暗号化方式)によって暗号化してブローカに送信する方法が考えられる。しかし、この方法では、ブローカは、トピック指定データを取得するため、暗号化されたパブリッシュメッセージを復号化する必要がある。復号化されると、平文のトピック指定データだけでなく、平文のメッセージデータもブローカに記憶される。このため、この平文のメッセージデータが、例えばブローカにアクセス可能な外部装置から取得可能となり、メッセージデータの機密性を確保できないという問題が生じる。
【0005】
本明細書では、上述した課題を解決することが可能な技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示される技術は、例えば、以下の形態として実現することが可能である。
【0007】
(1)本明細書に開示される端末装置は、外部装置との間で、ブローカを介して、パブリッシュ・サブスクライブ・メッセージ・モデルに基づく通信を行う端末装置であって、外部データを取得する取得部と、前記外部データの少なくとも一部を暗号化して、暗号文を含む暗号メッセージデータを生成する暗号化処理部と、平文のトピック指定データと、前記暗号メッセージデータと、を含む暗号化パブリッシュメッセージを、前記ブローカに配信するデータ配信部と、を備える。本端末装置は、平文のトピック指定データと、外部データの少なくとも一部を暗号化した暗号メッセージデータとを含む暗号化パブリッシュメッセージを、ブローカに配信することができる。このため、ブローカでは、暗号メッセージデータの復号化を要することなく、その暗号メッセージデータが指定されたトピックに登録される。これにより、本端末装置によれば、暗号メッセージデータの機密性を確保しつつ外部装置に配信することが可能である。
【0008】
(2)上記端末装置において、前記外部データは、第1の外部データと第2の外部データとを含んでおり、前記暗号化処理部は、前記第1の外部データを平文のままとし、前記第2の外部データを暗号化して、平文と暗号文とを含む前記暗号メッセージデータを生成可能である構成としてもよい。本端末装置によれば、例えば、公開性を重視した平文の第1の外部データと、機密性を重視した暗号文の第2の外部データとを、暗号化パブリッシュメッセージとしてまとめて外部装置に配信可能である。
【0009】
(3)上記端末装置において、前記外部データは、第1の外部データと第2の外部データとを含んでおり、前記暗号化処理部は、前記第1の外部データと前記第2の外部データとを、暗号ルールおよび暗号鍵の少なくとも一方が互いに異なる方法により暗号化して、前記暗号メッセージデータを生成可能である構成としてもよい。本端末装置によれば、互いに異なる暗号方法により暗号化された複数の外部データを、暗号化パブリッシュメッセージとしてまとめて外部装置に配信可能である。
【0010】
(4)上記端末装置において、さらに、暗号化条件が満たされるか否かを判断する暗号化判断部を備え、前記暗号化判断部によって前記暗号化条件が満たされると判断された場合、前記暗号化処理部は、前記暗号メッセージデータを生成し、前記データ配信部は、前記暗号化パブリッシュメッセージを前記ブローカに配信し、前記暗号化判断部によって前記暗号化条件が満たされないと判断された場合、前記データ配信部は、平文のトピック指定データと、平文のメッセージデータと、を含む非暗号化パブリッシュメッセージを前記ブローカに配信する構成としてもよい。本端末装置では、所定の暗号化条件が満たされるか否かに基づき、機密性を重視する暗号化パブリッシュメッセージをブローカに配信する機密配信形態と、公開性を重視する非暗号化パブリッシュメッセージをブローカに配信する公開配信形態とを使い分けることができる。これにより、本端末装置によれば、メッセージデータの機密性と公開性とを両立させたパブリッシュ・サブスクライブ・メッセージ・モデルを実現することが可能である。
【0011】
(5)上記端末装置において、さらに、前記暗号化パブリッシュメッセージと前記非暗号化パブリッシュメッセージとのそれぞれにおける暗号文の配置パターンを識別するためのパターン識別データを、前記トピック指定データに含めるトピック処理部を備える構成としてもよい。端末装置から配信される暗号化パブリッシュメッセージと非暗号化パブリッシュメッセージのトピック指定データには、パターン識別データが含まれている。このため、外部装置では、このパターン識別データに基づき、暗号化パブリッシュメッセージと非暗号化パブリッシュメッセージとのそれぞれにおける暗号文の配置パターンを識別できる。これにより、例えばパターン識別データを外部装置に伝達する手段を別途要することなく、暗号文の配置パターンが随時変わり得るパブリッシュメッセージに対する処理を外部装置に正常に行わせることができる。
【0012】
(6)上記端末装置において、さらに、前記暗号メッセージデータを復号化するための復号化ルールと暗号鍵との少なくとも一方を含む暗号ルールデータを生成する暗号ルール生成部を備え、前記データ配信部は、前記トピック指定データと前記暗号ルールデータとを含む暗号ルールパブリッシュメッセージを前記ブローカに配信する構成としてもよい。本端末装置によれば、端末装置側で生成した暗号ルールおよび暗号鍵の少なくとも一方が、パブリッシュ・サブスクライブ・メッセージ・モデルに基づく通信によって外部装置に配信される。これにより、端末装置側で暗号ルールや暗号鍵を定めつつ、別の通信手段を要することなく、暗号ルールや暗号鍵を外部装置に配信することができる。
【0013】
(7)上記端末装置において、前記暗号ルールデータは、前記復号化ルールと、前記暗号鍵と、前記復号化ルールと前記暗号鍵とを区切る区切り文字であって、複数の文字列である区切り文字を含む構成としてもよい。本端末装置によれば、予め共通の区切り文字を把握している外部装置だけが、ブローカから受信した暗号ルールパブリッシュメッセージから暗号ルールデータを取得することができる。これにより、特定の外部装置への暗号ルールデータの配信の機密性を向上させることができる。
【0014】
(8)上記端末装置において、さらに、暗号変更条件が満たされるか否かを判断する暗号変更判断部を備え、前記暗号変更判断部によって前記暗号変更条件が満たされると判断された場合、暗号ルール生成部は、前記復号化ルールと前記暗号鍵と前記区切り文字との少なくとも1つを変更した新たな暗号ルールデータを生成する構成としてもよい。本端末装置によれば、端末装置側で暗号ルールと暗号鍵と区切り文字との少なくとも1つが変更される。これにより、特定の外部装置への暗号ルールデータの配信の機密性を効果的に向上させることができる。
【0015】
(9)上記端末装置において、前記暗号変更判断部は、第1の暗号変更条件と、前記第1の暗号変更条件よりも満たす頻度が高い第2の暗号変更条件とのそれぞれが満たされるか否かを判断し、暗号ルール生成部は、前記暗号変更判断部によって前記第1の暗号変更条件が満たされると判断された場合、前記復号化ルールと前記暗号鍵との少なくとも1つを変更した新たな第1の暗号ルールデータを生成し、前記暗号変更判断部によって前記第2の暗号変更条件が満たされると判断された場合、前記区切り文字を変更した新たな第2の暗号ルールデータを生成する構成としてもよい。本端末装置によれば、変更に伴う処理負担が比較的に小さい区切り文字の変更頻度が、暗号ルールや暗号鍵の変更頻度よりも高いため、暗号ルールデータの変更に伴う処理負担を抑制しつつ、特定の外部装置への暗号ルールデータの配信の機密性を、より効果的に向上させることができる。
【0016】
(10)本明細書に開示されるコンピュータプログラムは、外部装置との間で、ブローカを介して、パブリッシュ・サブスクライブ・メッセージ・モデルに基づく通信を行う端末装置が有するコンピュータに、外部データを取得する取得処理と、前記外部データの少なくとも一部を暗号化して、暗号文を含む暗号メッセージデータを生成する暗号化処理と、平文のトピック指定データと、前記暗号メッセージデータと、を含む暗号化パブリッシュメッセージを生成するデータ生成処理と、前記データ生成処理によって生成された前記暗号化パブリッシュメッセージを、前記ブローカに配信するデータ配信処理と、を実行させる。本コンピュータプログラムによれば、暗号メッセージデータの機密性を確保しつつ外部装置に配信することが可能である。
【0017】
(11)本明細書に開示される通信システムは、複数の端末装置と、ブローカと、を備え、前記複数の端末装置の間で、ブローカを介して、パブリッシュ・サブスクライブ・メッセージ・モデルに基づく通信を行う通信システムであって、少なくとも一の前記端末装置は、外部データを取得する取得部と、前記外部データの少なくとも一部を暗号化して、暗号文を含む暗号メッセージデータを生成する暗号化処理部と、平文のトピック指定データと、前記暗号メッセージデータと、を含む暗号化パブリッシュメッセージを、前記ブローカに配信するデータ配信部と、を備え、少なくとも、前記一の端末装置とは異なる他の端末装置は、前記ブローカから、前記暗号化パブリッシュメッセージを購読するデータ購読部と、前記暗号化パブリッシュメッセージに含まれる前記暗号メッセージデータを復号化する復号化処理部と、を備える。本通信システムによれば、暗号メッセージデータの機密性を確保しつつ一の端末装置から他の端末装置に配信することが可能である。
【0018】
(12)本明細書に開示される通信方法は、複数の端末装置の間で、ブローカを介して、パブリッシュ・サブスクライブ・メッセージ・モデルに基づく通信を行う通信方法であって、少なくとも一の前記端末装置が、外部データを取得する取得し、前記外部データの少なくとも一部を暗号化して、暗号文を含む暗号メッセージデータを生成し、平文のトピック指定データと、前記暗号メッセージデータと、を含む暗号化パブリッシュメッセージを生成し前記暗号化パブリッシュメッセージを、前記ブローカに配信する、パブリッシュ処理と、少なくとも、前記一の端末装置とは異なる他の端末装置が、前記ブローカから、前記暗号化パブリッシュメッセージを購読し、前記暗号化パブリッシュメッセージに含まれる前記暗号メッセージデータを復号化する、サブスクライブ処理と、を備える。本通信方法によれば、暗号メッセージデータの機密性を確保しつつ一の端末装置から他の端末装置に配信することが可能である。
【0019】
なお、本明細書に開示される技術は、種々の形態で実現することが可能であり、例えば、端末装置(パブリッシャ/サブスクライバ)、ブローカと複数の端末装置とを備える通信システム、通信方法、それらの方法を実現するコンピュータプログラム、そのコンピュータプログラムを記録した一時的でない記録媒体等の形態で実現することができる。
【図面の簡単な説明】
【0020】
【
図1】本実施形態における通信システム10の概略構成を示す説明図
【
図2】ブローカ100の構成を概略的に示すブロック図
【
図3】端末装置200の構成を概略的に示すブロック図
【
図4】パブリッシュ処理の内容を示すフローチャート
【
図6】サブスクライブ処理の内容を示すフローチャート
【発明を実施するための形態】
【0021】
A.実施形態:
A-1.通信システム10の構成:
図1は、本実施形態における通信システム10の概略構成を示す説明図である。通信システム10は、パブリッシュ・サブスクライブ(Publish-Subscribe)・メッセージ・モデル(以下、「パブ・サブ・モデル」という)により、複数の端末装置200の間で通信を行うためのシステムである。通信システム10は、ブローカ(「サーバ」ということもある)100と、複数のユーザP(P1,P2,・・・,Pn)が使用する端末装置200とを備える。通信システム10を構成する各装置は、通信ネットワークNETを介して互いに通信可能に接続されている。
【0022】
ブローカ100は、パブ・サブ・モデルにおいて、複数の端末装置200の間でメッセージを交換するために、各端末装置200から、メッセージの出版やメッセージの購読の要求を受け付ける管理装置である。ブローカ100は、パブ・サブ・モデルに対応するプロトコルとして、例えば、MQTT(MQ Telemetry Transport)、AMQP(Advanced Message Queuing Protocol)、OPC UA(OPC Unified Architecture)、XMPP(eXtensible Messaging and Presence Protocol)のPubSub拡張(XEP-0060)等を実装してもよい。
【0023】
図2は、ブローカ100の構成を概略的に示すブロック図である。ブローカ100は、制御部110と、記憶部130と、表示部152と、操作入力部156と、インターフェース部158とを備える。これらの各部は、バス190を介して互いに通信可能に接続されている。
【0024】
ブローカ100の表示部152は、例えば液晶ディスプレイや有機ELディスプレイ等により構成され、各種の画像や情報を表示する。また、操作入力部156は、例えばキーボードやマウス、ボタン、マイク等により構成され、管理者の操作や指示を受け付ける。また、インターフェース部158は、例えばLANインターフェースやUSBインターフェース等により構成され、有線または無線により他の装置との通信を行う。
【0025】
ブローカ100の記憶部130は、例えばROMやRAM、ハードディスクドライブ(HDD)等により構成され、各種のプログラムやデータを記憶したり、各種のプログラムを実行する際の作業領域やデータの一時的な記憶領域として利用されたりする。例えば、記憶部130には、パブ・サブ・モデルに関する各種処理を実行するためのコンピュータプログラムであるブローカプログラムBPが格納されている。ブローカプログラムBPは、例えば、CD-ROMやDVD-ROM、USBメモリ等のコンピュータ読み取り可能な記録媒体(不図示)に格納された状態で提供され、あるいは外部装置から通信ネットワークNETを介してダウンロードされ、ブローカ100にインストールすることにより記憶部130に格納される。
【0026】
ブローカ100の記憶部130には、トピック管理データTDが格納されている。トピック管理データTDは、パブリッシャとして機能する端末装置200から受信したパブリッシュメッセージに含まれるメッセージデータを、そのパブリッシュメッセージに含まれるトピック指定データにより指定されたトピックに対応付けて登録するための記憶領域である。トピック(「キー」または「ネーム」といわれることもある)は、メッセージを配信(出版)するための論理チャネルを示す名称である。
【0027】
ブローカ100の制御部110は、例えばCPU等により構成され、記憶部130から読み出したコンピュータプログラムを実行することにより、ブローカ100の動作を制御する。例えば、制御部110は、記憶部130からブローカプログラムBPを読み出して実行することにより、パブ・サブ・モデルに関する各種処理を実行するメッセージ管理部112として機能する。この機能については、後述のメッセージ管理処理の説明に合わせて説明する。
【0028】
端末装置200は、例えば、スマートフォンやタブレット型端末、パーソナルコンピュータ(PC)、GPS(Global Positioning System)端末、ウェアラブル端末、センサ等である。
図3は、端末装置200の構成を概略的に示すブロック図である。端末装置200は、制御部210と、記憶部230と、表示部252と、取得部254と、操作入力部256と、インターフェース部258とを備える。これらの各部は、バス290を介して互いに通信可能に接続されている。
【0029】
端末装置200の表示部252は、例えば液晶ディスプレイや有機ELディスプレイ等により構成され、各種の画像や情報を表示する。また、操作入力部256は、例えばキーボードやマウス、ボタン、マイク等により構成され、ユーザPの操作や指示を受け付ける。なお、表示部252がタッチパネルを備えることにより、操作入力部256として機能するとしてもよい。また、インターフェース部258は、例えばLANインターフェースやUSBインターフェース等により構成され、有線または無線により他の装置との通信を行う。
【0030】
取得部254は、例えばカメラ、マイク、各種のセンサ(温度センサ等)、GPSの受信アンテナ等を備え、外部データを取得する。外部データは、例えば、温度等の気象データ(環境データ)、位置(緯度・経度)データ、センサや計測器等による検知データ(緊急通報データ、異常検知データ、血圧や脈拍等の体内データなど)である。なお、操作入力部256が取得部として機能する構成でもよい。この場合、外部データは、操作入力部256の操作による入力情報(例えば氏名や年齢等の個人情報など)である。
【0031】
端末装置200の記憶部230は、例えばROMやRAM、HDD等により構成され、各種のプログラムやデータを記憶したり、各種のプログラムを実行する際の作業領域やデータの一時的な記憶領域として利用されたりする。例えば、記憶部230には、パブ・サブ・モデルに関する各種処理を実行するためのアプリケーションプログラムであるパブリッシュプログラムPPとサブスクライブプログラムSPとが格納されている。パブリッシュプログラムPPとサブスクライブプログラムSPとは、例えば、CD-ROMやDVD-ROM、USBメモリ等のコンピュータ読み取り可能な記録媒体(不図示)に格納された状態で提供され、あるいは外部装置から通信ネットワークNETを介してダウンロードされ、端末装置200にインストールすることにより記憶部230に格納される。
【0032】
端末装置200の制御部210は、例えばCPU等により構成され、記憶部230から読み出したコンピュータプログラムを実行することにより、端末装置200の動作を制御する。例えば、制御部210は、記憶部230からパブリッシュプログラムPPを読み出して実行することにより、パブリッシュ処理を実行するパブリッシュ処理部212として機能する。このとき、端末装置200は、ブローカ100に対してメッセージの配信(送信)を要求するパブリッシャとして機能する。以下、パブリッシャとして機能する端末装置200を、特に「パブリッシャ200P」という。なお、パブリッシュ処理部212は、配信条件判断部213と暗号化判断部214と暗号化処理部215とトピック処理部216とデータ配信部217と暗号変更判断部218と暗号ルール生成部219とを含む。これら各部の機能については、後述のパブリッシュ処理の説明に合わせて説明する。パブリッシャ200Pとして機能する端末装置200は、特許請求の範囲におけるパブリッシャの一例である。
【0033】
制御部210は、記憶部230からサブスクライブプログラムSPを読み出して実行することにより、サブスクライブ処理を実行するサブスクライブ処理部222として機能する。このとき、端末装置200は、ブローカ100に対してメッセージの購読(受信)を要求するサブスクライバとして機能する。以下、サブスクライバとして機能する端末装置200を、特に「サブスクライバ200S」という。なお、サブスクライブ処理部222は、購読条件判断部223とデータ振り分け部224と暗号取得部225と復号化処理部226とを含む。これら各部の機能については、後述のサブスクライブ処理の説明に合わせて説明する。サブスクライバ200Sとして機能する端末装置200は、特許請求の範囲におけるサブスクライバ、外部装置の一例である。
【0034】
A-2.パブ・サブ・モデルに関する各種処理:
A-2-1.ブローカ100において実行される処理:
ブローカ100において実行されるメッセージ管理処理について説明する。メッセージ管理処理は、パブリッシャ200Pとサブスクライバ200Sとの間のメッセージの配信および購読を仲介するための処理である。
【0035】
ブローカ100のメッセージ管理部112(
図2)は、トピック指定データとメッセージデータとを含むパブリッシュメッセージをパブリッシャ200Pから受信すると、受信したパブリッシュメッセージに含まれるメッセージデータを、トピック管理データTDにおいて、そのパブリッシュメッセージに含まれるトピック指定データにより指定されたトピックに登録する。一方、メッセージ管理部112は、トピックに登録されたメッセージデータを、そのトピックに予め申し込んでいたサブスクライバ200Sに送信する。これにより、サブスクライバ200Sは、パブリッシャ200Pが配信するメッセージデータのうち、予め申し込んでいたトピックに対応するものだけを購読することができる。
【0036】
A-2-2.パブリッシャ200Pにおいて実行される処理:
(パブリッシュ処理)
パブリッシャ200Pにおいて実行されるパブリッシュ処理について説明する。パブリッシュ処理は、ブローカ100に対して、メッセージの配信要求として、外部データを含むパブリッシュメッセージ(後述の暗号化パブリッシュメッセージPD1,非暗号化パブリッシュメッセージPD2)を配信する処理である。
図4は、パブリッシュ処理の内容を示すフローチャートである。パブリッシュ処理は、例えば、端末装置200の電源がオンされると、端末装置200とブローカ100とが通信可能に接続されることにより自動で開始され、端末装置200の電源オン中、常時実行される。なお、パブリッシュ処理は、特定ユーザPxが端末装置200の表示部252に表示されている画面に配置されたパブリッシュ用アイコン(図示しない)をタップすることにより手動で開始されてもよい。
【0037】
記憶部230には、予め、暗号情報QDと区切り文字WDとが記憶されているものとする。暗号情報QDは、復号化ルールと暗号鍵(「秘密鍵」ともいう)とを含む。区切り文字WDは、1または複数の文字列であり、例えばアルファベットと数字と記号との少なくとも2つの組み合わせでもよい。記憶部230への暗号情報QDおよび区切り文字WDの初期値の記憶方法は、暗号情報QDが外部機器からメール、ブルートゥース(登録商標)、ピアツーピア等の通信手段を介して端末装置200に送信されて記憶部230に記憶されてもよいし、暗号情報QDがユーザPによる入力操作や外部メモリからのデータ移動、QRコード(登録商標)やバーコード読み取りを介して端末装置200に入力されて記憶部230に記憶されてもよい。
【0038】
図4に示すように、パブリッシャ200Pの配信条件判断部213(
図3)が、外部データの配信条件が満たされるか否かを判断する(S110)。配信条件は、外部データを配信するための条件であり、例えば、予め定められた周期の繰り返しタイミングや所定の期限が到来することでもよいし、取得部254が外部データを取得したときでもよいし、取得部254が取得する外部データが変化したときなどでもよい。なお、取得部254は、複数種の外部データを、同時または互いに異なる時期に取得可能である。以下、取得部254が複数種の外部データを同時期に取得する場合を例に挙げて説明する。取得部254が外部データを取得する処理は、特許請求の範囲における取得処理の一例である。
【0039】
配信条件判断部213によって配信条件が満たされると判断された場合(S110:YES)、暗号化判断部214(
図3)が、取得された複数種の外部データのそれぞれについて、暗号化条件が満たされるか否かを判断する(S120)。暗号化条件は、取得部254が取得する外部データの少なくとも一部を暗号化するための条件であり、例えば、予め定められた周期の繰り返しタイミングや所定の期限が到来することでもよいし、取得部254が取得する外部データが変化したこと(例えば、異常性や緊急性を有する情報が含まれている、または、含まれていないこと、)でもよいし、外部データが相対的に機密性の高い(例えば個人情報、企業秘密情報)ことなどでもよい。暗号化条件は、複数種の外部データのそれぞれについて個別に設定されているものとする。暗号化判断部214は、複数種の外部データのうち、暗号化条件を満たす外部データが少なくとも1種存在する場合、暗号化条件が満たされると判断する。複数種の外部データには、常に暗号化条件が満たされずに暗号化されない外部データ(例えば機密性が低く、公開性が重視される外部データ)が含まれていてもよい。
【0040】
暗号化判断部214によって暗号化条件が満たされると判断した場合(S120:YES)、トピック処理部216(
図3)は、暗号化条件に応じたパターン識別データを含むトピック指定データを生成する(S130)。ここで生成されるトピック指定データは、トピック識別データとパターン識別データとを含む。トピック識別データは、ブローカ100で管理されるトピック名を示すデータである。
【0041】
パターン識別データは、サブスクライバ200Sにおいて、パブリッシュメッセージ(暗号化パブリッシュメッセージPD1,非暗号化パブリッシュメッセージPD2)における暗号文の配置パターンを識別するためのデータである。配置パターンは、メッセージデータにおける暗号文の有無と、メッセージデータにおける暗号文の位置とに応じたパターンである。例えば、メッセージデータが、複数種の外部データが区切り文字(例えばカンマ)で区切られたデータ列である場合、配置パターンは、複数種の外部データの全てが平文である全平文パターンと、暗号文である外部データを少なくとも1種含む暗号文パターンとを含む。平文とは、復号化せずにコンピュータ(ブローカ100や端末装置200)で解読可能なデータである。この暗号文パターンには、メッセージデータにおける暗号文の位置に応じた複数のパターンが含まれる。
【0042】
例えば、メッセージデータに、第1の外部データと第2の外部データとがこの順で含まれる場合、配置パターンには、次のパターンが含まれる。
「全平文パターン」:"第1の外部データ(平文),第2の外部データ(平文)"
「前半暗号文パターン」:"第1の外部データ(暗号文),第2の外部データ(平文)"
「後半暗号文パターン」:"第1の外部データ(平文),第2の外部データ(暗号文)"
「全暗号文パターン」:"第1の外部データ(暗号文),第2の外部データ(暗号文)"
なお、複数種の外部データ(第1の外部データ、第2の外部データ)を暗号化する場合、暗号化処理部215は、複数種の外部データのそれぞれを、暗号ルールおよび暗号鍵の少なくとも一方が互いに異なる方法により暗号化して、暗号メッセージデータを生成してもよい。
【0043】
次に、暗号化処理部215(
図3)は、複数種の外部データのうち、暗号化すべき外部データを暗号化して、暗号メッセージデータを生成する(S140~S170)。暗号化メッセージデータは、複数種の外部データの少なくとも1種が暗号化された暗号文を含むデータ列である。例えば、複数種の外部データが上述の第1の外部データおよび第2の外部データである場合、暗号化メッセージデータは、上述の前半暗号文パターンと後半暗号文パターンと全暗号文パターンとのいずれかのパターンのメッセージデータである。
【0044】
具体的には、暗号化処理部215は、複数種の外部データのそれぞれについて、次の処理を順次行う。まず、暗号化処理部215は、外部データXの暗号化が必要であるか否かを判断する(S140)。外部データXは、複数種の外部データのそれぞれを意味するものとする。暗号化処理部215は、上記S120での暗号化判断部214による暗号化判断の結果に基づき、外部データXの暗号化の要否を判断する。暗号化処理部215は、外部データXの暗号化が必要であると判断した場合(S140:YES)、その外部データXに対応する最新の暗号情報QDを記憶部230から読みだして、その暗号情報QDに基づき外部データXを暗号化し、メッセージデータにセットする(S150)。ここで、後述するように、最新の暗号情報QDは、トピックに登録しているサブスクライバ200Sでも把握されている。すなわち、この外部データXは、上記トピックに登録しているサブスクライバ200Sにて復号化可能な暗号化処理により暗号化されることになる。S150の処理は、特許請求の範囲における暗号化処理の一例である。
【0045】
暗号化処理部215は、外部データXの暗号化が不要であると判断した場合(S140:NO)、その外部データXを暗号化せずに平文のままメッセージデータにセットする(S160)。未処理の外部データXが残っている場合(S170:NO)、暗号化処理部215は、S140に戻り、次の順位の外部データXについてS140以降の処理を実行する。全ての外部データXの処理が終了した場合(S170:YES)、データ配信部217は、暗号化パブリッシュメッセージPD1を生成してブローカ100に配信する(S180)。暗号化パブリッシュメッセージPD1は、平文の上記トピック指定データと、暗号化メッセージデータとを含む配信用データである。パブリッシャ200Pの制御部210は、暗号化パブリッシュメッセージPD1の配信後、S110の処理に戻り待機状態となる。S180の処理は、特許請求の範囲におけるデータ生成処理およびデータ配信処理の一例である。
【0046】
暗号化判断部214によって暗号化条件が満たされないと判断した場合(S120:N)、非暗号化パブリッシュメッセージPD2を生成してブローカ100に配信する(S190)。すなわち、複数種の外部データはいずれも暗号化されずに平文のままセットされた上述の全平文パターンのメッセージデータが生成される。すなわち、非暗号化パブリッシュメッセージPD2は、平文のトピック指定データと、平文のメッセージデータとを含む配信用データである。パブリッシャ200Pの制御部210は、非暗号化パブリッシュメッセージPD2の配信後、S110の処理に戻り待機状態となる。なお、S110において、配信条件判断部213によって配信条件が満たされないと判断された場合(S110:NO)、S110の処理において待機状態となる。
【0047】
(暗号変更処理)
パブリッシャ200Pにおいて実行される暗号変更処理について説明する。暗号化変更処理とは、上記暗号化パブリッシュメッセージPD1の機密性の向上のために、暗号化パブリッシュメッセージPD1に含まれる暗号化メッセージデータをサブスクライバ200Sで復号化するための暗号情報QDを適宜変更するための処理である。
図5は、暗号変更処理の内容を示すフローチャートである。
【0048】
図5に示すように、パブリッシャ200Pの暗号変更判断部218(
図3)が、外部データXの暗号変更条件が満たされるか否かを判断する(S210)。暗号変更条件は、複数種の外部データXのそれぞれについて、外部データを暗号化および復号化する際に用いる暗号情報QDの少なくとも一部を変更するための条件である。暗号変更条件は、例えば、ユーザPによる所定の操作があったことでもよいし、外部データの暗号化処理の回数が所定回数に達したことでもよいし、予め定められた周期の繰り返しタイミングや所定の期限が到来することでもよい。
【0049】
暗号変更判断部218によって暗号変更条件が満たされると判断された場合(S210:YES)、暗号ルール生成部219(
図3)が、外部データXの最新の暗号ルールデータを生成する。暗号ルールデータは、暗号情報QDと区切り文字WDとを含む情報である。暗号ルール生成部219は、予め定められたアルゴリズムに従って、外部データXの新規の暗号情報QDを生成して記憶部230の記憶内容を更新する(S220)。新規の暗号情報QDは、すでに記憶部230に記憶されている暗号情報QDに対して、復号化ルールと暗号鍵との少なくとも一方が異なる。
【0050】
ここで、暗号変更判断部218は、
図5のS210とは別に、外部データXの区切り文字変更条件が満たされるか否かを判断し、区切り文字変更条件が満たされると判断した場合に、予め定められたアルゴリズムに従って、外部データXの新規の区切り文字WDを生成して記憶部230の記憶内容を更新する。区切り文字変更条件は、記憶部230に記憶されている区切り文字WDを変更するための条件であり、S210における上記暗号変更条件よりも条件を満たす頻度が高い条件である。区切り文字変更条件は、例えば、外部データXの暗号化処理の回数が、暗号変更条件よりも少ない所定回数に達したことでもよいし、暗号変更条件よりも短い周期の繰り返しタイミングや所定の期限が到来することでもよい。本実施形態では、例えば、ワンタイムパスワード(タイムスタンプ方式でもよいし、チャレンジレスポンス方式でもよい)を用いて所定時間(例えば5分程度)ごとに区切り文字WDを短時間で変更してもよい。
【0051】
従って、暗号ルール生成部219によって生成される暗号ルールデータは、最新の暗号情報QDと最新の区切り文字WDとを含む情報であり、区切り文字WDは、暗号情報QDよりも高い頻度で随時変更される。S210における暗号変更条件は、特許請求の範囲における第1の暗号変更条件の一例であり、区切り文字変更条件は、特許請求の範囲における第2の暗号変更条件の一例である。
【0052】
次に、データ配信部217は、外部データXの最新の暗号ルールデータから、外部データXの暗号ルールパブリッシュメッセージPD3を生成し、暗号ルールパブリッシュメッセージPD3をブローカ100に配信する(S230)。暗号ルールパブリッシュメッセージPD3は、平文のトピック指定データと、平文の暗号ルールデータとを含む配信用のデータ列である。平文のトピック指定データには、トピック識別データに加えて、暗号ルールの通知の有無を示す暗号ルール通知データが含まれる。暗号ルールデータは、平文の復号化ルールと平文の暗号鍵とが、平文の上記区切り文字WDによって区切られつつ、この順序で配列されたデータ列(メッセージデータ)である。なお、復号化ルールと暗号鍵との順序は互いに入れ替えてもよい。パブリッシャ200Pの制御部210は、暗号ルールパブリッシュメッセージPD3の配信後、S210の処理に戻り待機状態となる。S210において、暗号変更判断部218によって暗号変更条件が満たされないと判断された場合(S210:NO)もS210の処理において待機状態となる。
【0053】
A-2-3.サブスクライバ200Sにおいて実行される処理:
サブスクライバ200Sにおいて実行されるサブスクライブ処理について説明する。サブスクライブ処理は、ブローカ100に対して、メッセージの購読要求として、パブリッシュメッセージ(外部データを含むパブリッシュメッセージPD1,PD2、暗号ルールパブリッシュメッセージPD3)を購読する処理である。
図6は、サブスクライブ処理の内容を示すフローチャートである。サブスクライブ処理は、例えば端末装置200の電源がオンされると、端末装置200とブローカ100とが通信可能に接続されることにより自動で開始され、端末装置200の電源オン中、所定の時間間隔ごとに繰り返し実行される。なお、サブスクライブ処理は、特定ユーザPxが端末装置200の表示部252に表示されている画面に配置されたサブスクライブ用アイコン(図示しない)をタップすることにより手動で開始されてもよい。
【0054】
図6に示すように、サブスクライバ200Sの購読条件判断部223(
図3)は、ブローカ100にて登録されたトピックの購読条件が満たされるか否かを判断する(S310)。購読条件は、トピックに対応するパブリッシュメッセージを購読(受信)するための条件であり、例えば、予め定められた周期の繰り返しタイミングや所定の期限が到来することでもよい。
【0055】
購読条件判断部223によって購読条件が満たされると判断された場合(S310:YES)、データ振り分け部224(
図3)は、トピックに登録されているパブリッシュメッセージ(PD1からPD3のいずれか)を購読(受信)して、この購読が、暗号情報QDの購読であるか否かを判断する(S320)。このとき、データ振り分け部224は、特許請求の範囲におけるデータ購読部の一例である。データ振り分け部224は、パブリッシュメッセージに含まれるトピック指定データに上記暗号ルール通知データが含まれていれば、暗号情報QD(暗号ルールパブリッシュメッセージPD3)の購読であると判断し、トピック指定データに暗号ルール通知データが含まれていなければ、外部データ(暗号化パブリッシュメッセージPD1または非暗号化パブリッシュメッセージPD2)の購読であると判断する。
【0056】
データ振り分け部224によって暗号情報の購読であると判断された場合(S320:YES)、暗号取得部225は、現在、記憶部230に記憶されている区切り文字WDに一致する区切り文字が、暗号ルールデータに含まれるか否かを判断する(S330)。暗号取得部225は、一致する区切り文字が暗号ルールデータに含まれると判断した場合(S330:YES)、その区切り文字WDによって区切られた復号化ルールと暗号鍵とを取り出すことができる。そこで、暗号取得部225(
図3)は、暗号ルールデータから最新の暗号情報QDを取得して記憶部230に記憶して更新し(S340)、S310に戻る。これにより、サブスクライバ200Sは、パブリッシャ200Pにて随時変更される暗号情報QDに基づく暗号化される暗号メッセージデータを復号化することができる。
【0057】
暗号取得部225は、一致する区切り文字が暗号ルールデータに含まれないと判断した場合(S330:NO)、暗号ルールデータから最新の暗号情報QDを取得できないため、記憶部230に記憶している暗号情報QDは更新されずに、S310に戻る。このように、共通のトピックに登録した複数のサブスクライバ200Sについて、それぞれが把握する最新の区切り文字WDを互いに異ならせることにより、互いに異なるタイミングで個別に暗号ルールデータを変更することができる。
【0058】
データ振り分け部224によって暗号情報の購読でないと判断された場合(S320:NO)、復号化処理部226(
図3)は、メッセージデータが暗号化されているか、すなわち暗号化メッセージデータであるか否かを判断する(S350)。復号化処理部226は、パブリッシュメッセージのトピック指定データに含まれるパターン識別データが、上記暗号文パターンを示す場合、メッセージデータが暗号化されていると判断し、パターン識別データが、上記全平文パターンを示す場合、メッセージデータが暗号化されていないと判断する。
【0059】
データ振り分け部224によってメッセージデータが暗号化されていると判断された場合(S350:YES)、復号化処理部226は、現在、記憶部230に記憶されている暗号情報QDを用いて暗号化メッセージデータに含まれる暗号文を復号化できるか否かを判断する(S360)。なお、復号化処理部226は、パターン識別データに基づき、暗号化メッセージデータにおける暗号文の配置を把握できる。復号化処理部226は、復号化できると判断した場合(S360:YES)、暗号情報QDに従って、暗号化メッセージデータに含まれる暗号文を復号化する(S370)。これにより、暗号化メッセージデータに含まれる複数種の外部データの全てが平文で取得される。次に、サブスクライバ200Sの制御部210は、平文のメッセージデータに基づく処理を実行し(S380)、S310に戻る。
【0060】
復号化処理部226によって復号化できないと判断された場合(S360:NO)、サブスクライバ200Sの制御部210は、暗号化メッセージデータに含まれる平文だけを取得し、その平文に基づく処理を実行し(S380)、S310に戻る。
【0061】
データ振り分け部224によってメッセージデータが暗号化メッセージデータでないと判断された場合(S350:NO)、サブスクライバ200Sの制御部210は、メッセージデータに含まれる平文に基づく処理を実行し(S380)、S310に戻る。また、S310において、購読条件判断部223によって購読条件が満たされないと判断された場合(S310:NO)には待機状態になる。
【0062】
A-3.具体例:
次に上述した通信システム10の使用例を説明する。
図7は、通信システム10の使用例を示す説明図である。
図7に示すように、この説明では、次の点を前提とするものとする。通信システム10は、1台のパブリッシャ200Pと2台のサブスクライバ200Sとを備える。外部データは、温度データと位置データとの2種である。パブリッシャ200Pと第1のサブスクライバ200S1とのそれぞれの記憶部230には、共通の暗号情報QDおよび区切り文字WD("temp&gps 1")が記憶されている。一方、第2のサブスクライバ200S2の記憶部230には、共通の暗号情報QDおよび区切り文字WDが記憶されていない。
【0063】
A-3-1.暗号化パブリッシュメッセージPD1の配信および購読:
暗号化パブリッシュメッセージPD1の配信および購読について説明する。
図7には、次の内容の暗号化パブリッシュメッセージPD1が例示されている。
トピック(トピック指定データ):"温度&GPS/1"
なお、「/1」は、上記後半暗号文パターンを示すパターン識別データである。
メッセージ(メッセージデータ):"東京:21.3℃,nUumV5RUCB3ExetfJgmRzHT3vppFsdUjsQ6SjRaTAKfFh/JXTOLu85K6kgW1+6wK"
なお、「,」よりも前の文字列が温度データの平文であり、「,」よりも後ろの文字列が位置データ(緯度:35.681236 経度:139.767125)を後述の暗号鍵("Encryption key")で暗号化した暗号文である。
【0064】
例えば、パブリッシャ200Pでのパブリッシュ処理(
図4)において、温度データの暗号化条件は満たされず、位置データの暗号化条件が満たされる場合、S120において暗号化条件が満たされると判断される(S120:YES)。ここで、温度データは、公益性が高く、公開性を重視すべきデータであるため、温度データの暗号化条件は、常に満たされないとされている。一方、位置データは、パブリッシャ200Pを所有するユーザP1の位置を特定する個人情報であり、機密性を重視すべきデータであるため、位置データの暗号化条件は、例えば取得部254が取得する外部データが正常状態を示すデータであることとされている。正常状態とは、例えば温度データが正常範囲内(例えば所定の上限温度以下、所定の下限温度以上)である状態である。また、位置データの暗号化条件は、位置データの位置が所定の禁止領域外であることなどでもよい。
【0065】
次に、パブリッシャ200Pでは、後半暗号文パターンを示すパターン識別データ「/1」を含むトピック指定データ("温度&GPS/1")が作成される(S130)。また、平文の温度データ("東京:21.3℃")と暗号文の位置データ("nUumV5RUCB3Exet100JgmRzHT3vppFsdUjsQ6SjRaTAKPD1Fh/JXTOLu85K6kgW1+6wK")がメッセージデータにセットされ(S150,S160)、上記暗号化パブリッシュメッセージPD1が生成され、ブローカ100に配信される(S180)。
【0066】
第1のサブスクライバ200S1および第2のサブスクライバ200S2では、いずれも、サブスクライブ処理(
図6)において、購読条件が満たされると(S310:YES)、暗号化パブリッシュメッセージPD1がブローカ100から購読される。暗号化パブリッシュメッセージPD1のトピック指定データは、後半暗号文パターンを示すパターン識別データ("/1")を含んでいるため、暗号情報の購読でないと判断され(S320:NO)、メッセージデータは暗号化されていると判断される(S350:YES)。
【0067】
ここで、第1のサブスクライバ200S1の記憶部230には、パブリッシャ200Pと共通の暗号情報QDが記憶されている。このため、メッセージデータ中の暗号文の位置データが復号化される(S360:YES、S370)。すなわち、第1のサブスクライバ200S1では、温度データと位置データとの両方の外部データを平文として取得でき、これらの温度データ及び位置データに基づく処理が実行される(S380)。例えば、第1のサブスクライバ200S1の表示部252に、パブリッシャ200Pで取得された温度とパブリッシャ200Pの位置とに関する情報が表示される。これにより、第1のサブスクライバ200S1を所有するユーザP2は、ユーザP1の周囲温度と居場所との両方を知ることができる。
【0068】
一方、第2のサブスクライバ200S2の記憶部230には、パブリッシャ200Pと共通の暗号情報QDが記憶されていない。メッセージデータ中の暗号文の位置データは復号化されない(S360:NO)。すなわち、第2のサブスクライバ200S2では、温度データだけを平文として取得でき、この温度データに基づく処理が実行される(S380)。例えば、第2のサブスクライバ200S2の表示部252に、パブリッシャ200Pで取得された温度に関する情報が表示される。これにより、第2のサブスクライバ200S2を所有するユーザP3は、ユーザP1の周囲温度を知ることはできるが居場所を知ることはできない。
【0069】
以上のように、暗号化パブリッシュメッセージPD1の配信および購読により、公開性を重視すべきデータ(温度データ)を、トピック("温度&GPS/♯")に登録している全てのサブスクライバ200S(200S1,200S2)にて取得可能としつつ、機密性を重視すべきデータ(位置データ)を、一部のサブスクライバ200S(200S1)だけに取得可能とすることができる。
【0070】
A-3-2.非暗号化パブリッシュメッセージPD2の配信および購読:
非暗号化パブリッシュメッセージPD2の配信および購読について説明する。
図7には、次の内容の非暗号化パブリッシュメッセージPD2が例示されている。
トピック(トピック指定データ):"温度&GPS/emg"
なお、「/emg」は、「緊急」を意味するとともに、上記全平文パターンを示すパターン識別データである。
メッセージ(メッセージデータ):"緊急:緯度:35.681236 経度:139.767125 東京:38.1℃"
なお、メッセージデータは全て平文である。
【0071】
例えば、パブリッシャ200Pにおいて、取得部254が正常温度範囲を超える38.1℃を示す温度データを取得した場合、温度データの暗号化条件だけでなく位置データの暗号化条件も満たされなくなる。すると、パブリッシュ処理(
図4)において、暗号化条件が満たされないと判断される(S120:NO)。
【0072】
次に、パブリッシャ200Pでは、全平文パターンを示すパターン識別データ「/emg」を含むトピック指定データ("温度&GPS/emg")が作成され、上記非暗号化パブリッシュメッセージPD2が生成され、ブローカ100に配信される(S190)。
【0073】
第1のサブスクライバ200S1および第2のサブスクライバ200S2では、いずれも、サブスクライブ処理(
図6)において、購読条件が満たされると(S310:YES)、非暗号化パブリッシュメッセージPD2がブローカ100から購読される。非暗号化パブリッシュメッセージPD2のトピック指定データは、全平文パターンを示すパターン識別データ("/emg")を含んでいるため、暗号情報の購読でないと判断され(S320:NO)、メッセージデータは暗号化されていないと判断される(S350:NO)。
【0074】
この結果、第1のサブスクライバ200S1および第2のサブスクライバ200S2のいずれにおいても、温度データと位置データとの両方の外部データを平文として取得でき、これらの温度データ及び位置データに基づく処理が実行される(S380)。例えば、第1のサブスクライバ200S1および第2のサブスクライバ200S2の表示部252に、緊急とパブリッシャ200Pで取得された温度とパブリッシャ200Pの位置とに関する情報が表示される。これにより、第1のサブスクライバ200S1を所有するユーザP2だけでなく、第2のサブスクライバ200S2を所有するユーザP3も、ユーザP1の周囲温度と居場所との両方を知ることができる。
【0075】
以上のように、暗号化パブリッシュメッセージPD1および非暗号化パブリッシュメッセージPD2の配信および購読により、暗号化条件に基づいて、機密性を重視すべきデータ(位置データ)を、トピック("温度&GPS/♯")に登録している全てのサブスクライバ200S(200S1,200S2)に配信する公開配信形態と、一部のサブスクライバ200S(200S1)だけに配信する機密配信形態とを切り替えることができる。
【0076】
A-3-3.暗号ルールパブリッシュメッセージPD3の配信および購読:
暗号ルールパブリッシュメッセージPD3の配信および購読について説明する。
図7には、次の内容の暗号ルールパブリッシュメッセージPD3が例示されている。
トピック(トピック指定データ):"温度&GPS/key"
なお、「/key」は、暗号ルールの通知を意味する暗号ルール通知データである。
メッセージ(メッセージデータ):"CSV-2Columntemp&gps 1Encryption key"
なお、区切り文字("temp&gps 1")よりも前の文字列が復号化(暗号化)ルールの平文であり、区切り文字("temp&gps 1")よりも後ろの文字列が暗号鍵の平文である。「CSV-2Column」は、メッセージデータの2カラム目を復号化するというルールを意味する。
【0077】
例えば、パブリッシャ200Pでの暗号変更処理(
図5)において、位置データの暗号変更条件が満たされると判断された場合(S210:YES)、新規の暗号情報QDが生成されて記憶部230が記憶される(S220)。また、その新規の暗号情報QDが区切り文字("temp&gps 1")によって区切られた上記暗号ルールパブリッシュメッセージPD3がブローカ100に配信される(S230)。
【0078】
トピック("温度&GPS/♯")に登録している第1のサブスクライバ200S1には、共通の区切り文字WD("temp&gps 1")が記憶されているため、購読した暗号ルールパブリッシュメッセージPD3の暗号ルールデータにおける上記共通の区切り文字WDを特定し、最新の暗号情報QD(復号化ルールと暗号鍵)を取得することができる。一方、トピック("温度&GPS/♯")に登録している第2のサブスクライバ200S2には、共通の区切り文字WDが記憶されていないため、購読した暗号ルールパブリッシュメッセージPD3の暗号ルールデータから暗号情報QDを取得することができない。すなわち、パブリッシャ200P側で随時変更される暗号情報QDを、機密性を確保しつつ、パブ・サブ・モデルにより特定のサブスクライバ200S(200S1)だけに購読させることができる。しかも、パブリッシャ200Pと第1のサブスクライバ200S1とでは、例えばワンタイムパスワードによって時刻に同期して共通の区切り文字が逐次変更されていく。このため、暗号情報QDの機密性をより向上させることができる。
【0079】
A-4.使用例:
本実施形態の通信システム10を例えば以下の形態で使用することができる。
(条件付きオープン形態)
条件付きオープン形態は、所定のオープン条件が満たされない場合、パブリッシャ200Pが、機密性を重視する暗号化パブリッシュメッセージPD1を配信し、所定のオープン条件が満たされる場合、パブリッシャ200Pが、公開性を重視する非暗号化パブリッシュメッセージPD2を配信する形態である。
【0080】
条件付きオープン形態は、例えば次のような用途で使用可能である。
パブリッシャ200PのユーザP1:被保護者(子ども老人、要介護者等)
第1のサブスクライバ200S1のユーザP2:保護者(被保護者の家族や親族等)
第2のサブスクライバ200S2のユーザP3:非保護者(トピックに登録している契約者、周辺住民等)
所定のオープン条件:緊急を要する事態が発生したこと
暗号化パブリッシュメッセージPD1:機密性を重視すべき外部データ(例えば、体温、脈拍や発汗等の身体データなどの個人データや位置データ)の暗号文と、公開性を重視すべき外部データ(温度等の気象データなどの公共性の高いデータ)の平文とを含む。
なお、緊急事態の例としては、パブリッシャ200Pの緊急ボタンが押下されたこと、パブリッシャ200Pで所定の正常範囲外の値を示す外部データ(気象データ、身体データや位置データなど)が取得されたことなどが挙げられる。
【0081】
オープン条件が満たされない場合、パブリッシャ200Pから、機密性を重視する暗号化パブリッシュメッセージPD1が配信される。その結果、機密性を重視すべき外部データは、保護者(P2)に取得されるが、非保護者(P3)には取得されず、機密性を重視すべき外部データの機密性が確保される。一方、公開性を重視すべき外部データは、保護者(P2)だけでなく非保護者(P3)にも取得される。このように公開性を重視すべき外部データを広く配信することにより、条件付きオープン形態の契約者へのサービスの向上や、ビックデータの取得と活用に繋げることができる。
【0082】
オープン条件が満たされる場合、パブリッシャ200Pから、非暗号化パブリッシュメッセージPD2が配信される。その結果、機密性を重視すべき外部データは、保護者(P2)だけでなく非保護者(P3)にも取得される。これにより、例えば、被保護者(P1)を見つけた非保護者(P3)は、機密性を重視すべき外部データに基づき適切な対応を行うことができる。
【0083】
(位置発信形態)
位置発信形態は、パブリッシャ200Pが、個人の位置データの平文を含む暗号化パブリッシュメッセージPD1を配信する形態である。
【0084】
位置発信形態は、例えば次のような用途で使用可能である。
パブリッシャ200PのユーザP1:注意対象者(子ども老人、要介護者、ウイルス感染者等)
第1のサブスクライバ200S1のユーザP2:関係者(注意対象者の家族や親族等)
第2のサブスクライバ200S2のユーザP3:非関係者(トピックに登録している契約者、車両、自転車やバイク等のドライバ、周辺住民等)
暗号化パブリッシュメッセージPD1:特に機密性を重視すべき外部データ(例えば注意対象者(P1)を特定可能な個人データ)の暗号文と、その注意対象者(P1)の位置を特定するための位置データの平文とを含む。
【0085】
パブリッシャ200Pから、位置データの平文を含む暗号化パブリッシュメッセージPD1が配信される。この結果、注意対象者(P1)の位置データは、関係者(P2)だけでなく非関係者(P3)にも取得される。但し、注意対象者(P1)の個人データは、関係者(P2)に取得されるが、非関係者(P3)には取得されない。すなわち、関係者(P2)は、自分の保護対象の注意対象者(P1)がどこにいるかを常に把握することができる。一方、非関係者(P3)は、注意対象者(P1)が誰であるかは知らないが注意すべき注意対象者(P1)の位置を第2のサブスクライバ200S2の表示部252等を介して把握できる。これにより、例えば車両等に搭載されたカーナビゲーションシステムや所有の携帯電話等に表示される地図上に、注意対象者(P1)の位置を表示させることにより、注意対象者(P1)の近くを通るため、特に運転等に注意する必要があることを知ることができ、交通事故の抑制を期待することができる。
【0086】
A-5.本実施形態の効果:
以上説明したように、本実施形態のパブリッシャ200Pは、平文のトピック指定データと、外部データの少なくとも一部を暗号化した暗号メッセージデータとを含む暗号化パブリッシュメッセージPD1を、ブローカ100に配信することができる(
図4参照)。このため、ブローカ100では、暗号メッセージデータの復号化を要することなく、その暗号メッセージデータが指定されたトピックに登録される。これにより、本実施形態によれば、暗号メッセージデータの機密性を確保しつつ外部装置(サブスクライバ200S)に配信することが可能である。すなわち、トピックを暗号化しないことにより、メッセージデータの暗号化を実現しつつ、ブローカ100でのトピックによる振り分けが可能になる。
【0087】
本実施形態では、外部データは、第1の外部データと第2の外部データとを含んでおり、暗号化処理部215は、第1の外部データを平文のままとし、第2の外部データを暗号化して、平文と暗号文とを含む暗号メッセージデータを生成可能である(
図4参照)。これにより、本実施形態によれば、例えば、公開性を重視した平文の第1の外部データと、機密性を重視した暗号文の第2の外部データとを、暗号化パブリッシュメッセージPD1としてまとめて外部装置に配信可能である。
【0088】
本実施形態において、暗号化処理部215は、第1の外部データと第2の外部データとを、暗号ルールおよび暗号鍵の少なくとも一方が互いに異なる方法により暗号化して、暗号メッセージデータを生成してもよい。これにより、本実施形態によれば、互いに異なる暗号方法により暗号化された複数の外部データを、暗号化パブリッシュメッセージPD1としてまとめて外部装置に配信可能である。
【0089】
本実施形態では、暗号化判断部214によって暗号化条件が満たされると判断された場合(S120:YES)、暗号化処理部215は、暗号メッセージデータを生成し、データ配信部217は、暗号化パブリッシュメッセージPD1をブローカ100に配信し、暗号化条件が満たされないと判断された場合(S120:NO)、データ配信部217は、平文のトピック指定データと、平文のメッセージデータと、を含む非暗号化パブリッシュメッセージPD2をブローカ100に配信する。すなわち、本実施形態では、所定の暗号化条件が満たされるか否かに基づき、機密性を重視する暗号化パブリッシュメッセージをブローカに配信する機密配信形態(S180)と、公開性を重視する非暗号化パブリッシュメッセージをブローカに配信する公開配信形態(S190)とを使い分けることができる。これにより、本実施形態によれば、メッセージデータの機密性と公開性とを両立させたパブ・サブ・モデルを実現することが可能である。
【0090】
パブリッシャ200Pから配信される暗号化パブリッシュメッセージPD1と非暗号化パブリッシュメッセージPD2のトピック指定データには、パターン識別データが含まれている。このため、サブスクライバ200Sでは、このパターン識別データに基づき、暗号化パブリッシュメッセージPD1と非暗号化パブリッシュメッセージPD2とのそれぞれにおける暗号文の配置パターンを識別できる(
図6参照)。これにより、例えばパターン識別データをサブスクライバ200Sに伝達する手段を別途要することなく、暗号文の配置パターンが随時変わり得るパブリッシュメッセージに対する処理をサブスクライバ200Sに正常に行わせることができる。
【0091】
本実施形態では、パブリッシャ200P側で生成した暗号ルールおよび暗号鍵の少なくとも一方が、パブ・サブ・モデルに基づく通信によってサブスクライバ200Sに配信される。これにより、ブローカ100に制約されることなく、パブリッシャ200P側で暗号ルールや暗号鍵を定めつつ、別の通信手段を要することなく、暗号ルールや暗号鍵をサブスクライバ200Sに配信することができる。また、暗号化に関してブローカ100の処理負担が増大することを抑制することができる。
【0092】
本実施形態では、予め共通の区切り文字を把握している第1のサブスクライバ200S1だけが、ブローカ100から受信した暗号ルールパブリッシュメッセージPD3から暗号ルールデータを取得することができる(
図6参照)。これにより、特定のサブスクライバ200Sへの暗号ルールデータの配信の機密性を向上させることができる。パブ・サブ・モデルに基づく通信は、トピックに登録した全てのサブスクライバ200Sが、そのトピックのパブリッシュメッセージを購読可能なオープンな通信であるため、特に特定のサブスクライバ200Sへの暗号ルールデータの配信の機密性は重要である。
【0093】
本実施形態では、パブリッシャ200P側で暗号ルールと暗号鍵と区切り文字との少なくとも1つが変更される(
図5参照)。これにより、特定の外部装置への暗号ルールデータの配信の機密性を効果的に向上させることができる。
【0094】
本実施形態では、変更に伴う処理負担が比較的に小さい区切り文字の変更頻度が、暗号ルールや暗号鍵の変更頻度よりも高い。このため、暗号ルールデータの変更に伴う処理負担を抑制しつつ、特定の外部装置への暗号ルールデータの配信の機密性を、より効果的に向上させることができる。
【0095】
B.変形例:
本明細書で開示される技術は、上述の実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の形態に変形することができ、例えば次のような変形も可能である。
【0096】
上記実施形態における通信システム10、ブローカ100および端末装置200の構成は、あくまで一例であり、種々変更可能である。例えば、上記実施形態では、通信システム10は、複数のサブスクライバ200Sを備える構成であったが、パブリッシャ200Pとサブスクライバ200Sとを1つずつを備える構成でもよい。端末装置200は、表示部252と操作入力部256との少なくとも1つを備えない構成でもよい。また、ブローカ100は、複数の情報処理装置を備え、これらの複数の情報処理装置が協働して上記メッセージ管理処理を実行する構成でもよい。
【0097】
上記実施形態では、取得部254が複数種の外部データを同時期に取得可能な構成を例示したが、取得部254は、複数種の外部データを互いに異なる時期に取得可能な構成でもよいし、1種の外部データだけを取得可能な構成でもよいし、同種の複数の外部データ(例えば互いに検出位置が異なる複数の温度データなど)を取得可能な構成でもよい。
【0098】
上記実施形態における各処理の内容は、あくまで一例であり、種々変形可能である。例えば、上記実施形態では、端末装置200は、パブリッシャ200Pとサブスクライバ200Sとの両方として機能する汎用の装置であったが、パブリッシャ200Pとサブスクライバ200Sとのいずれか一方だけとして機能する専用の装置でもよい。
【0099】
上記実施形態において、暗号化パブリッシュメッセージPD1の暗号メッセージデータに含まれる1または複数の外部データの全てが暗号文であってもよい。また、パブリッシャ200Pにて、パブリッシュメッセージの全体を公知の暗号化方式(例えばTLS(Transport Layer Security)による標準の暗号化方式)によって暗号化してブローカ100に配信してもよい。また、ブローカ100にて、パブリッシュメッセージの全体を公知の暗号化方式によって暗号化してサブスクライバ200Sに購読させてもよい。
【0100】
暗号情報QDは、復号化ルールと暗号鍵とのいずれか一方だけを含んでもよい。区切り文字WDは、1文字の記号(例えばカンマや特殊記号)でもよいし、アルファベットと数字と記号との少なくとも2つの組み合わせを含む複数の文字からなる文字列でもよい。
【0101】
上記実施形態では、暗号変更処理(
図5)において、復号化ルールと暗号鍵との両方を変更する例を説明したが、復号化ルールと暗号鍵とのいずれか一方だけを変更してもよい。また、上記実施形態では、暗号情報QDと区切り文字WDとの両方を変更する例を説明したが、暗号情報QDと区切り文字WDとのいずれか一方だけを変更してもよい。
【0102】
上記実施形態では、1つのトピックに対する処理を説明したが、複数のトピックのそれぞれについて、上記各処理を実行してもよい。例えば、パブリッシャ200Pは、互いに異なる複数のトピックのそれぞれについて、ブローカ100に対してメッセージの送信要求を行うとともに
図4および
図5の処理を個別に実行する構成でもよい。サブスクライバ200Sは、互いに異なる複数のトピックのそれぞれについて、ブローカ100に対してメッセージの購読要求を行うとともに
図6の処理を個別に実行する構成でもよい。
【0103】
図4のパブリッシュ処理において、S120の処理を実行せずに、常にS130の処理を実行してもよい。また、パブリッシュメッセージにおける暗号文の配置パターンが不変である場合、S130の処理はなくてもよい。また、
図5の暗号変更処理を実行しなくてもよい。この場合、
図6のサブスクライブ処理において、S320の処理を実行せずに、S350の処理を実行してもよい。
【0104】
また、上記各実施形態において、ハードウェアによって実現されている構成の一部をソフトウェアに置き換えるようにしてもよく、反対に、ソフトウェアによって実現されている構成の一部をハードウェアに置き換えるようにしてもよい。
【符号の説明】
【0105】
10:通信システム 35:緯度: 100:ブローカ 110,210:制御部 112:メッセージ管理部 130,230:記憶部 139:681236 経度: 152,252:表示部 156,256:操作入力部 158,258:インターフェース部 190,290:バス 200:端末装置 200P:パブリッシャ 200S1:第1のサブスクライバ 200S2:第2のサブスクライバ 200S:サブスクライバ 212:パブリッシュ処理部 213:配信条件判断部 214:暗号化判断部 215:暗号化処理部 216:トピック処理部 217:データ配信部 218:暗号変更判断部 219:暗号ルール生成部 222:サブスクライブ処理部 223:購読条件判断部 224:データ振り分け部 225:暗号取得部 226:復号化処理部 254:取得部 NET:通信ネットワーク PD1:暗号化パブリッシュメッセージ PD2:非暗号化パブリッシュメッセージ PD3:暗号ルールパブリッシュメッセージ