(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-09-20
(45)【発行日】2022-09-29
(54)【発明の名称】情報処理方法、サーバ、及びプログラム
(51)【国際特許分類】
H04L 9/32 20060101AFI20220921BHJP
【FI】
H04L9/32 200A
(21)【出願番号】P 2022094474
(22)【出願日】2022-06-10
【審査請求日】2022-06-16
【早期審査対象出願】
(73)【特許権者】
【識別番号】516196440
【氏名又は名称】株式会社GFS
(73)【特許権者】
【識別番号】592135203
【氏名又は名称】キヤノンITソリューションズ株式会社
(73)【特許権者】
【識別番号】390002761
【氏名又は名称】キヤノンマーケティングジャパン株式会社
(74)【代理人】
【識別番号】100166006
【氏名又は名称】泉 通博
(74)【代理人】
【識別番号】100154070
【氏名又は名称】久恒 京範
(74)【代理人】
【識別番号】100153280
【氏名又は名称】寺川 賢祐
(72)【発明者】
【氏名】高橋 敬明
(72)【発明者】
【氏名】上原 敏幸
(72)【発明者】
【氏名】亀田 達也
【審査官】松平 英
(56)【参考文献】
【文献】特開2020-182215(JP,A)
【文献】国際公開第2019/234850(WO,A1)
【文献】米国特許出願公開第2021/0021642(US,A1)
【文献】童 磊 他,スマートデバイスとサーバによるイメージデータ保存/復旧システム,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2018年09月27日,Vol.118 No.231,pp. 1-6,ISSN: 2432-6380
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14
21/00-21/88
G06Q10/00-40/08
50/00-50/20
50/26-99/00
G09C 1/00-5/00
G16Z99/00
H04K 1/00-3/00
H04L 9/00-9/40
(57)【特許請求の範囲】
【請求項1】
複数の端末と、前記複数の端末それぞれとの間で通信データを送受信するサーバとを備える通信システムにおいて実行される情報処理方法であって、
前記複数の端末のうちのいずれか1つの端末が、
通信データを前記サーバに送信するステップを実行し、
前記サーバが、
前記いずれか1つの端末から、前記通信データを受信するステップと、
前記通信データと当該通信データを一意に特定するためのデータ識別子とを含む通信記録データを記憶装置に格納させるステップと、
前記通信データと、ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を新たなハッシュチェーン作成用ハッシュ値として生成するステップと、
前記新たなハッシュチェーン作成用ハッシュ値に由来する端末保持用情報と前記データ識別子とを前記いずれか1つの端末にあらかじめ関連付けられている端末に送信するステップと、を実行し、
前記いずれか1つの端末にあらかじめ関連付けられている端末が、
前記サーバから前記端末保持用情報と前記データ識別子とを受信するステップを実行し、
前記ハッシュチェーン作成用ハッシュ値として生成するステップにおいて、あらかじめ定められた初期ハッシュを前記ハッシュチェーン作成用ハッシュ値の初期値とし、前記通信データを受信した順に前記通信データと前記通信データの受信時における前記ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を前記新たなハッシュチェーン作成用ハッシュ値として更新する、
情報処理方法。
【請求項2】
前記複数の端末それぞれは、データの暗号化及び暗号化されたデータの復号に用いるためのそれぞれ異なる秘密鍵である通信用秘密鍵を保持し、
前記サーバは、前記複数の端末それぞれが保持する通信用秘密鍵に対応する公開鍵である複数の通信用公開鍵を保持しており、
前記いずれか1つの端末が、
通信目的のデータのハッシュ値を生成するステップと、
前記ハッシュ値を前記端末が保持する通信用秘密鍵を用いて暗号化して署名データを生成するステップと、
前記署名データと前記通信目的のデータとを並べたデータを前記通信データとして生成するステップと、をさらに実行する、
請求項1に記載の情報処理方法。
【請求項3】
前記サーバが、新たな前記ハッシュチェーン作成用ハッシュ値を前記記憶装置に格納させるステップをさらに実行する、
請求項1又は2に記載の情報処理方法。
【請求項4】
前記端末に送信するステップにおいて、前記サーバが、新たな前記ハッシュチェーン作成用ハッシュ値そのものを前記端末保持用情報として前記端末に送信する、
請求項1又は2に記載の情報処理方法。
【請求項5】
前記サーバが、
前記サーバの署名を生成するための署名用秘密鍵を用いて新たな前記ハッシュチェーン作成用ハッシュ値に対する前記サーバの署名を生成するステップをさらに実行し、
前記端末に送信するステップにおいて、前記サーバの署名を前記端末保持用情報として前記端末に送信する、
請求項1又は2に記載の情報処理方法。
【請求項6】
前記サーバが、
複数の前記端末から各端末に送信した前記端末保持用情報と前記データ識別子とを受信して回収するステップと、
回収された前記データ識別子それぞれについて、前記記憶装置に格納されている通信記録データのうち回収された前記データ識別子に対応する通信記録データに基づいて生成された前記端末保持用情報と、前記端末から回収された前記端末保持用情報とが一致するか否かを検証するステップと、
前記検証するステップにおいてすべての前記端末保持用情報が一致する場合、前記記憶装置に格納されている通信記録データの信頼性を出力するステップと、
前記検証するステップにおいていずれかの前記端末保持用情報が一致しない場合、当該端末保持用情報に対応する前記データ識別子を出力するステップと、をさらに実行する、
請求項1又は2に記載の情報処理方法。
【請求項7】
複数の前記端末のうちの少なくともいずれか一つの端末が、
前記サーバから、前記記憶装置に格納されている通信記録データを受信するステップと、
複数の前記端末それぞれから各端末が保持する端末保持用情報と前記データ識別子とを受信して回収するステップと、
前記通信記録データに基づいて、回収された前記データ識別子に対応する通信記録データを再生成するステップと、
通信記録データに基づいて再生成された前記端末保持用情報と、前記端末から回収された前記端末保持用情報とが一致するか否かを検証するステップと、
前記検証するステップにおいてすべての前記端末保持用情報が一致する場合、前記記憶装置に格納されている通信記録データの信頼性を出力するステップと、
前記検証するステップにおいていずれかの前記端末保持用情報が一致しない場合、当該端末保持用情報に対応する前記データ識別子を出力するステップと、をさらに実行する、
請求項1又は2に記載の情報処理方法。
【請求項8】
端末から通信データを受信する受信部と、
前記通信データと当該通信データを一意に特定するためのデータ識別子とを含む通信記録データを記憶装置に格納させる通信データ管理部と、
前記通信データと、ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を新たなハッシュチェーン作成用ハッシュ値として生成するハッシュ生成部と、を備え、
前記通信データ管理部は、前記新たなハッシュチェーン作成用ハッシュ値に由来する端末保持用情報と前記データ識別子とを前記通信データを送信した端末にあらかじめ関連付けられている端末に送信し、
前記ハッシュ生成部は、あらかじめ定められた初期ハッシュを初期値とし、前記通信データを受信した順に前記通信データと、前記通信データの受信時における前記ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を、前記新たなハッシュチェーン作成用ハッシュ値として更新する、
サーバ。
【請求項9】
コンピュータに、
端末から通信データを受信する機能と、
前記通信データと当該通信データを一意に特定するためのデータ識別子とを含む通信記録データを記憶装置に格納させる機能と、
前記通信データと、ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を新たなハッシュチェーン作成用ハッシュ値として生成する機能と、
前記新たなハッシュチェーン作成用ハッシュ値に由来する端末保持用情報と前記データ識別子とを前記通信データを送信した端末にあらかじめ関連付けられている端末に送信する機能と、を実現させ、
前記生成する機能は、あらかじめ定められた初期ハッシュを初期値とし、前記通信データを受信した順に前記通信データと、前記通信データの受信時における前記ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を、前記新たなハッシュチェーン作成用ハッシュ値として更新する、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理方法、サーバ、及びプログラムに関する。
【背景技術】
【0002】
従来、装置間でやりとりされたデータの正当性を検証するために、そのデータのハッシュ値を利用した署名技術が利用されている。例えば特許文献1には、ネットワークを介した電子契約システムにおいて、契約の当事者の一方が契約内容データのハッシュ値を求めて署名を生成し、他方の当事者がその署名を検証することで契約内容データを検証する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記の技術を用いることにより、送信元のデータと送信先のデータとの一致を検証することができる。このため、複数の端末とデータをやり取りするサーバにおいて上記技術を適用することにより、個々の通信それぞれでデータ改変があったか否かを検知することは可能となる。
【0005】
一方で、複数の端末とデータをやり取りするサーバにおいては、データの改変の有無のみならず、サーバと端末とのいずれのデータが改変されたのか、及びいつ頃に改変が発生したのかを調べる、いわゆるデジタル・フォレンジックが望まれている。
【0006】
本発明はこれらの点に鑑みてなされたものであり、通信データの改変を調査するための技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第1の態様は、複数の端末と、前記複数の端末それぞれとの間で通信データを送受信するサーバとを備える通信システムにおいて実行される情報処理方法である。この方法において、前記複数の端末のうちのいずれか1つの端末が、通信データを前記サーバに送信するステップを実行し、前記サーバが、前記いずれか1つの端末から、前記通信データを受信するステップと、前記通信データと当該通信データを一意に特定するためのデータ識別子とを含む通信記録データを記憶装置に格納させるステップと、前記通信データと、ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を新たなハッシュチェーン作成用ハッシュ値として生成するステップと、前記新たなハッシュチェーン作成用ハッシュ値に由来する端末保持用情報と前記データ識別子とを前記いずれか1つの端末にあらかじめ関連付けられている端末に送信するステップと、を実行し、前記いずれか1つの端末にあらかじめ関連付けられている端末が、前記サーバから前記端末保持用情報と前記データ識別子とを受信するステップを実行し、前記ハッシュチェーン作成用ハッシュ値として生成するステップにおいて、あらかじめ定められた初期ハッシュを前記ハッシュチェーン作成用ハッシュ値の初期値とし、前記通信データを受信した順に前記通信データと前記通信データの受信時における前記ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を前記新たなハッシュチェーン作成用ハッシュ値として更新する。
【0008】
前記複数の端末それぞれは、データの暗号化及び暗号化されたデータの復号に用いるためのそれぞれ異なる秘密鍵である通信用秘密鍵を保持してもよく、前記サーバは、前記複数の端末それぞれが保持する通信用秘密鍵に対応する公開鍵である複数の通信用公開鍵を保持してもよく、前記いずれか1つの端末が、通信目的のデータのハッシュ値を生成するステップと、前記ハッシュ値を前記端末が保持する通信用秘密鍵を用いて暗号化して署名データを生成するステップと、前記署名データと前記通信目的のデータとを並べたデータを前記通信データとして生成するステップと、をさらに実行してもよい。
【0009】
前記サーバが、新たな前記ハッシュチェーン作成用ハッシュ値を前記記憶装置に格納させるステップをさらに実行してもよい。
【0010】
前記端末に送信するステップにおいて、前記サーバが、新たな前記ハッシュチェーン作成用ハッシュ値そのものを前記端末保持用情報として前記端末に送信してもよい。
【0011】
前記サーバが、前記サーバの署名を生成するための署名用秘密鍵を用いて新たな前記ハッシュチェーン作成用ハッシュ値に対する前記サーバの署名を生成するステップをさらに実行してもよく、前記端末に送信するステップにおいて、前記サーバの署名を前記端末保持用情報として前記端末に送信してもよい。
【0012】
前記サーバが、複数の前記端末から各端末に送信した前記端末保持用情報と前記データ識別子とを受信して回収するステップと、回収された前記データ識別子それぞれについて、前記記憶装置に格納されている通信記録データのうち回収された前記データ識別子に対応する通信記録データに基づいて生成された前記端末保持用情報と、前記端末から回収された前記端末保持用情報とが一致するか否かを検証するステップと、前記検証するステップにおいてすべての前記端末保持用情報が一致する場合、前記記憶装置に格納されている通信記録データの信頼性を出力するステップと、前記検証するステップにおいていずれかの前記端末保持用情報が一致しない場合、当該端末保持用情報に対応する前記データ識別子を出力するステップと、をさらに実行してもよい。
【0013】
複数の前記端末のうちの少なくともいずれか一つの端末が、前記サーバから、前記記憶装置に格納されている通信記録データを受信するステップと、複数の前記端末それぞれから各端末が保持する端末保持用情報と前記データ識別子とを受信して回収するステップと、前記通信記録データに基づいて、回収された前記データ識別子に対応する通信記録データを再生成するステップと、通信記録データに基づいて再生成された前記端末保持用情報と、前記端末から回収された前記端末保持用情報とが一致するか否かを検証するステップと、前記検証するステップにおいてすべての前記端末保持用情報が一致する場合、前記記憶装置に格納されている通信記録データの信頼性を出力するステップと、前記検証するステップにおいていずれかの前記端末保持用情報が一致しない場合、当該端末保持用情報に対応する前記データ識別子を出力するステップと、をさらに実行してもよい。
【0014】
本発明の第2の態様は、サーバである。このサーバは、端末から通信データを受信する受信部と、前記通信データと当該通信データを一意に特定するためのデータ識別子とを含む通信記録データを記憶装置に格納させる通信データ管理部と、前記通信データと、ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を新たなハッシュチェーン作成用ハッシュ値として生成するハッシュ生成部と、を備え、前記通信データ管理部は、前記新たなハッシュチェーン作成用ハッシュ値に由来する端末保持用情報と前記データ識別子とを前記通信データを送信した端末にあらかじめ関連付けられている端末に送信し、前記ハッシュ生成部は、あらかじめ定められた初期ハッシュを初期値とし、前記通信データを受信した順に前記通信データと、前記通信データの受信時における前記ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を、前記新たなハッシュチェーン作成用ハッシュ値として更新する。
【0015】
本発明の第3の態様は、プログラムである。このプログラムは、コンピュータに、端末から通信データを受信する機能と、前記通信データと当該通信データを一意に特定するためのデータ識別子とを含む通信記録データを記憶装置に格納させる機能と、前記通信データと、ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を新たなハッシュチェーン作成用ハッシュ値として生成する機能と、前記新たなハッシュチェーン作成用ハッシュ値に由来する端末保持用情報と前記データ識別子とを前記通信データを送信した端末にあらかじめ関連付けられている端末に送信する機能と、を実現させ、前記生成する機能は、あらかじめ定められた初期ハッシュを初期値とし、前記通信データを受信した順に前記通信データと、前記通信データの受信時における前記ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を、前記新たなハッシュチェーン作成用ハッシュ値として更新する。
【0016】
このプログラムを提供するため、あるいはプログラムの一部をアップデートするために、このプログラムを記録したコンピュータ読み取り可能な記録媒体が提供されてもよく、また、このプログラムが通信回線で伝送されてもよい。
【0017】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0018】
本発明によれば、通信データの改変を調査するための技術を提供することができる。
【図面の簡単な説明】
【0019】
【
図1】実施の形態に係る通信システムの概要を説明するための図である。
【
図2】実施の形態に係るサーバの機能構成と端末の機能構成とを模式的に示す図である。
【
図3】実施の形態に係る通信ログデータベースのデータ構造を模式的に示す図である。
【
図4】実施の形態に係るサーバが実行する情報処理の流れを説明するためのフローチャートである。
【
図5】実施の形態に係る通信データの受信処理を説明するためのフローチャートである。
【
図6】実施の形態に係るサーバが実行する信頼性の出力処理を説明するためのフローチャートである。
【発明を実施するための形態】
【0020】
<実施の形態の概要>
図1は、実施の形態に係る通信システムSの概要を説明するための図である。以下、
図1を参照しながら、実施の形態の概要を述べる。
【0021】
実施の形態に係る通信システムSは、複数の端末2と、複数の端末2それぞれとの間でネットワークNを介して通信データを送受信するサーバ1と、記憶装置3とを備える。
図1においては、第1端末2a、第2端末2b、第3端末2cとの3台の端末2が例示されているが、通信システムSは2台、又は4台以上の端末2を備えていてもよい。以下、それぞれの端末2を特に区別しない場合には、単に端末2と記載する。ネットワークNは、例えばインターネットである。
【0022】
実施の形態に係るサーバ1は、複数の端末2との間における通信データの記録を管理するログ管理機能を有する。サーバ1は、端末2から通信データを受信する度に、各通信データを特定するためのデータ識別子(以下、「データID」と記載する。)を割り当てて記憶装置3に格納する。詳細は後述するが、サーバ1は、端末2から通信データを受信する度に、受信した通信データを使って再帰的に計算することで得られるハッシュ値を更新し、更新後のハッシュ値を記憶装置3に格納する。
【0023】
サーバ1は、受信した通信データを用いて更新したハッシュ値又はそのハッシュ値からさらに生成したサーバ1の署名とを端末2に送信する。ここで、サーバ1が情報を送信する端末2は、通信データを送信した端末2と端末2に関連付けられた他の端末2との少なくともいずれか一方の端末2である。以下、本明細書において、サーバ1が端末2に送信する「ハッシュ値又はそのハッシュ値からさらに生成したサーバ1の署名」を「端末保持用情報」と記載する。端末保持用情報はハッシュ値又はそのハッシュ値からさらに生成した情報であり、いわばハッシュ値に由来する情報と言える。
【0024】
ハッシュ値は、サーバ1が端末2から通信データを受信する度に、その受信データを使って再帰的に更新される。これは、あるハッシュ値を再現するためには、それよりも過去にサーバ1が受信したすべての通信データが必要となることを意味している。ここで、記憶装置3は、サーバ1がいずれの端末2からも通信データを受信する前から保持しているハッシュ値、言い換えるとハッシュ値の初期値も格納している。このため、サーバ1は、ハッシュの初期値と各通信データとを用いることにより、歴代のハッシュ値を再現することができる。
【0025】
サーバ1が端末保持用情報を端末2に送信することにより、歴代のハッシュ値はそれぞれ複数の異なる端末2側によって保管されることになる。サーバ1が生成した歴代のハッシュ値と、各端末2から集めたハッシュ値とが一致するか否かを確認することにより、一致しない場合はサーバ1が生成したハッシュ値と端末2が保管したハッシュ値との少なくともどちらか一方のハッシュ値が改変されたという事実を検知することができる。
【0026】
以下、通信システムSにおいて実行される情報処理の流れの概要を(1)から(6)の順に説明するが、その数字は
図1における(1)から(6)と対応する。
【0027】
まず前提として、記憶装置3は、サーバ1が過去に受信したN個(Nは自然数)の通信データを格納しているとする。このとき、i番目(iは1≦i≦Nを満たす自然数)のデータIDを、iをインデックスとしてDIDiと記載し、対応するi番目の通信データをデータiと記載することとする。
【0028】
(1)複数の端末2のうちのいずれかの端末2(
図1に示す例では第3端末2c)は、N+1番目の通信データであるデータ
N+1をサーバ1に送信する。
(2)サーバ1は、端末2からデータ
N+1を受信する。
(3)サーバ1は、記憶装置3から最新のハッシュ値であるハッシュ
Nを読み出す。データID及び通信データと同様に、i番目のハッシュ値をハッシュ
iと記載する。なお、上述したハッシュの初期値は「0」番目のハッシュ値に対応するため、便宜的にハッシュ
0と記載する。
【0029】
(4)サーバ1は、受信した最新の通信データであるデータN+1と、受信時点での最新のハッシュ値であるハッシュNとを少なくとも並べたデータのハッシュ値をハッシュN+1として生成する。具体的には、サーバ1は、以下の式(1)にしたがってハッシュN+1を生成する。
ハッシュN+1=Hash(データN+1+ハッシュN) (1)
【0030】
式(1)において、Hash(x)はxを引数とするハッシュ関数であり、SHA-2(Secure Hash Algorithm 2)等の既知のハッシュ関数によって実現できる。式(1)に示すように、サーバ1はハッシュ値を更新するためにその時点の最新のハッシュ値を用いる再帰的な計算手法によってハッシュ値を更新する。最新のハッシュ値を生成するためには歴代のハッシュ値をすべて利用する必要があるという意味において、サーバ1が生成するハッシュ値はハッシュチェーンであり、その時点における歴代のハッシュ値の情報が“数珠つなぎ的に含まれている”とも言える。サーバ1が生成するハッシュ値は、次のハッシュを生成するために必要な情報であるから、以下本明細書では「ハッシュチェーン作成用ハッシュ値」と記載することがある。
【0031】
(5)サーバ1は、更新した最新のハッシュチェーン作成用ハッシュ値であるハッシュN+1を記憶装置3に格納する。ここでサーバ1は、記憶装置3に既に格納されているハッシュNをハッシュN+1で上書きしてもよいし、ハッシュNを残したままハッシュN+1を追加してもよい。後者の場合、サーバ1が再計算することなく歴代のハッシュチェーン作成用ハッシュ値を取得することができる。
【0032】
(6)サーバ1は、通信データを送信した端末2についてあらかじめ関連付けられている端末2に、端末保持用情報とデータID(DID
N+1)とを送信する。例えば、
図1に示す例では、データ
N+1の送信元の端末である第3端末2cの端末IDはTID
Mであり、その送信先の端末IDとしてTID
1とTID
Mとが関連付けられている。このため、サーバ1は、端末IDがTID
1である第1端末2aと、端末IDがTID
Mである第3端末2cとに、端末保持用情報とデータIDとを送信する。これにより、ハッシュ
N+1又はそれに由来するサーバ1の署名は、サーバ1の管理下から外れて端末2に分配される。
【0033】
以上より、記憶装置3に格納された通信データの改変を検証するためのハッシュチェーンに由来する端末保持用情報が、サーバ1とは異なる複数の端末2に拡散されることになる。各端末2に拡散された端末保持用情報をすべて収集することができれば、記憶装置3又はいずれかの端末2が保持しているデータが改変されたかを検証することができる。また、仮に各端末2に拡散された端末保持用情報をすべて収集することができなくても、収集できた端末保持用情報を用いて記憶装置3が格納している通信データから生成したハッシュチェーンとの一致不一致を検証することにより、記憶装置3が格納している通信データが改変されていないことの統計的な信頼度を算出したり、改変が有った場合にその時期を推定したりすることができる。このように、実施の形態に係る通信システムSは、通信データの改変を調査するための仕組みを提供することができる。
【0034】
<実施の形態に係るサーバ1の機能構成>
図2は、実施の形態に係るサーバ1の機能構成と端末2の機能構成とを模式的に示す図である。サーバ1は、記憶部10と通信部11と制御部12とを備える。また、端末2は、記憶部20と通信部21と制御部22とを備える。
図2において、矢印は主なデータの流れを示しており、
図2に示していないデータの流れがあってもよい。
図2において、各機能ブロックはハードウェア(装置)単位の構成ではなく、機能単位の構成を示している。そのため、
図2に示す機能ブロックは単一の装置内に実装されてもよく、あるいは複数の装置内に分かれて実装されてもよい。機能ブロック間のデータの授受は、データバス、ネットワーク、可搬記憶媒体等、任意の手段を介して行われてもよい。
【0035】
記憶部10は、サーバ1を実現するコンピュータのBIOS(Basic Input Output System)等を格納するROM(Read Only Memory)やサーバ1の作業領域となるRAM(Random Access Memory)、OS(Operating System)やアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するHDD(Hard Disk Drive)やSSD(Solid State Drive)等の大容量記憶装置である。
【0036】
通信部11は、サーバ1が端末2等の外部の装置とやり取りするためのインタフェースであり、既知のLAN(Local Area Network)モジュールやWi-Fi(登録商標)モジュールで実現される。サーバ1が外部の装置からデータを受信する場合、通信部11はサーバ1の受信部として機能する。また、サーバ1が外部の装置にデータを送信する場合、通信部11はサーバ1の送信部として機能する。
【0037】
制御部12は、サーバ1のCPU(Central Processing Unit)やGPU(Graphics Processing Unit)等のプロセッサであり、記憶部10に記憶されたプログラムを実行することによって通信データ管理部120、ハッシュ生成部121、署名部122、検証部123、及び信頼性出力部124として機能する。
【0038】
なお、
図1は、サーバ1が単一の装置で構成されている場合の例を示している。しかしながら、サーバ1は、例えばクラウドコンピューティングシステムのように複数のプロセッサやメモリ等の計算リソースによって実現されてもよい。この場合、制御部12を構成する各部は、複数の異なるプロセッサの中の少なくともいずれかのプロセッサがプログラムを実行することによって実現される。
【0039】
記憶部20は、端末2を実現するコンピュータのBIOS等を格納するROMやの作業領域となるRAM、OSやアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するHDDやSSD等の大容量記憶装置である。通信部21は、端末2がサーバ1等の外部の装置とやり取りするためのインタフェースであり、既知のLANモジュールやWi-Fiモジュールで実現される。端末2が外部の装置からデータを受信する場合、通信部21は端末2の受信部として機能する。また、端末2が外部の装置にデータを送信する場合、通信部21は端末2の送信部として機能する。
【0040】
制御部22は、通信部21のCPUやGPU等のプロセッサであり、記憶部20に記憶されたプログラムを実行することによってハッシュ生成部220、署名部221、及び通信データ生成部222として機能する。
【0041】
図1に示すように、サーバ1はネットワークNを介して複数の端末2それぞれとの間で通信データを送受信する。複数の端末2のうちのいずれか1つの端末2の通信部21は、通信データをサーバ1に送信する。ここで「通信データ」は、端末2がサーバ1に送信するデータであればどのようなデータであってもよい。
【0042】
サーバ1の通信部11は、上述したいずれか1つの端末2から通信データを受信する。通信データ管理部120は、通信データとその通信データを一意に特定するためのデータIDとを含む通信記録データを記憶装置3に格納させる。
【0043】
ハッシュ生成部121は、記憶装置3から最新のハッシュチェーン作成用ハッシュ値を読み出す。ハッシュ生成部121は、通信記録データと、ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を新たなハッシュチェーン作成用ハッシュ値として生成する。
【0044】
具体的には、ハッシュ生成部121は、上述した式(1)に基づいて新たなハッシュチェーン作成用ハッシュ値を生成する。さらに具体的には、ハッシュ生成部121は、受信した通信データと、その通信データの受信時における最新のハッシュチェーン作成用ハッシュ値を並べたデータのハッシュ値を、通信データを受信した順に生成した新たなハッシュチェーン作成用ハッシュ値として更新する。なお、ハッシュチェーン作成用ハッシュ値の初期値は初期ハッシュであるハッシュ0であり、あらかじめ記憶装置3に格納されている。
【0045】
通信部21は、通信データ管理部120の制御の下、ハッシュ生成部121が生成した新たなハッシュチェーン作成用ハッシュ値に由来する端末保持用情報とデータIDとを、通信データを送信したいずれか1つの端末2にあらかじめ関連付けられている端末2に送信する。
【0046】
上述したように、実施の形態に係るサーバ1は、複数の端末2との間でやり取りされる通信データを記録するログ管理サーバとしての機能を有する。ここて、例えば複数の端末2のユーザがそれぞれ特定の組織に属している場合、部下であるユーザの端末2が送信した履歴を、そのユーザの上司や専門の管理部門のユーザが確認するためにそれらの者が使用する端末2に送信することが望まれる場合もある。このため、
図1を参照して説明したように、サーバ1は、通信データの送信元の端末2を特定するための端末IDである送信元IDと、送信元の端末2がサーバ1に通信データを送信した場合に端末保持用情報を送信すべき端末2を示す端末IDある送信先IDとをあらかじめ関連付けて記憶している。サーバ1の通信データ管理部120は、送信元IDに対応する送信先IDを読み出す。ハッシュ生成部121は、送信先IDに対応する端末2に対して端末保持用情報とデータIDとを通信部21に送信させる。
【0047】
いずれか1つの端末にあらかじめ関連付けられている端末2、すなわち送信先IDに対応する端末2の通信部21が、サーバ1から端末保持用情報とデータIDとを受信する。端末保持用情報は、端末保持用情報の作成時において記憶装置3に格納された通信記録データのハッシュチェーンに由来する情報であり、その時点における通信記録データの検証に用いることができる情報である。さらに、端末保持用情報は、端末2が通信データをサーバ1に送信する度に生成される情報である。
【0048】
したがって、端末保持用情報は、端末2がサーバ1に送信データを送信した回数と同等の数だけ異なるものが存在する。これらの端末保持用情報は複数の異なる端末2に分配されるため、悪意のある者がすべての端末保持用情報にアクセスして奪取したり改変したりすることは極めて困難である。サーバ1や記憶装置3の管理者であっても、端末保持用情報を改変することは実質的にできない。また、端末保持用情報を生成するためには、その時点より過去にサーバ1に送信された改変されていない通信データと初期ハッシュとが必要である。
【0049】
ここで、サーバ1や記憶装置3の管理者と特定の端末2のユーザとが共謀して、記憶装置3に記憶されている過去の通信記録データを改変したと仮定する。このとき、改変後の通信記録データに含まれる通信データに基づいて再生成されたハッシュチェーン作成用ハッシュ値と、改変前の通信記録データに含まれる通信データに基づいて生成されたハッシュチェーン作成用ハッシュ値、すなわち既に別の端末2に送信された端末保持用情報の元になったハッシュ値とは一致しないことになる。
【0050】
このため、サーバ1や記憶装置3の管理者と特定の端末2のユーザとが共謀したとしても、他の端末2のユーザの協力がない限り、通信記録データの改変は検知されることになる。このように、実施の形態に係る通信システムSによる通信記録データの管理手法は、改変に対する検知能力が高く、通信データの改変を調査するための有効な技術である。
【0051】
サーバ1の通信データ管理部120は、ハッシュ生成部121が生成した新たなハッシュチェーン作成用ハッシュ値を記憶装置3に格納させる。
図3は、実施の形態に係る通信ログデータベースのデータ構造を模式的に示す図である。通信ログデータベースは記憶装置3に格納されており、通信データ管理部120によって管理されている。
【0052】
図3に示すように、通信ログデータベースは、通信データに割り当てられたデータIDと関連付けて通信データを格納している。
図3に示す通信ログデータベースの例では、歴代のハッシュチェーン作成用ハッシュ値をその生成に用いたデータIDに関連付けて格納している。このように、通信ログデータベースが歴代のハッシュチェーン作成用ハッシュ値を格納している場合には、通信データの改変の有無を検証する際にハッシュチェーン作成用ハッシュ値を再計算する手間を省略することができる。
【0053】
図2の説明に戻り、端末2がサーバ1に送信する通信データについて説明する。
【0054】
複数の端末2それぞれの記憶部20は、データの暗号化及び暗号化されたデータの復号に用いるためのそれぞれ異なる秘密鍵である通信用秘密鍵を保持している。また、サーバ1の記憶部10は、複数の端末2それぞれが保持する通信用秘密鍵に対応する公開鍵である複数の通信用公開鍵を保持している。具体的には、記憶部10は、複数の端末2それぞれの端末IDと、各端末2の通信用公開鍵とを対応づけて記憶している。
【0055】
端末2のハッシュ生成部220は、通信目的のデータのハッシュ値を生成する。ハッシュ生成部220は、SHA-2等の既知のハッシュ関数を用いて通信目的のデータのハッシュ値を生成すればよい。署名部221は、ハッシュ生成部220が生成したハッシュ値を端末2の記憶部20が保持する通信用秘密鍵を用いて暗号化して署名データを生成する。通信データ生成部222は、署名データと通信目的のデータとを並べたデータを通信データとして生成する。このように、通信データに端末2の署名を含めることにより、第三者が通信目的のデータを改変したことを検知できるようになる。
【0056】
上述したように、端末保持用情報は、ハッシュチェーン作成用ハッシュ値そのものか、又はそのハッシュ値からさらに生成した署名である。前者の場合、サーバ1の通信データ管理部120は、ハッシュ生成部121が生成した新たなハッシュチェーン作成用ハッシュ値そのものを端末保持用情報として端末2に送信すればよい。この場合、通信データの改変の有無を検証しようとする者は、端末2が保持する端末保持用情報(すなわち、チェーン作成用ハッシュ値)と、通信ログデータベースの情報に基づいて生成したハッシュチェーン作成用ハッシュ値とを直接比較すればよい。
【0057】
後者の場合、サーバ1の署名部122は、サーバ1の署名を生成するための署名用秘密鍵を用いて、新たなハッシュチェーン作成用ハッシュ値に対するサーバ1の署名を生成する。なお、署名用秘密鍵は記憶部10に格納されている。
【0058】
通信部11は、通信データ管理部120の制御の下、署名部122が生成したサーバ1の署名を端末保持用情報として端末2に送信する。この場合、通信データの改変の有無を検証しようとする者は、端末2が保持する端末保持用情報(すなわち、サーバ1の署名)と、通信ログデータベースの情報に基づいて生成したハッシュチェーン作成用ハッシュ値からさらに生成した署名とを比較すればよい。
【0059】
続いて、記憶装置3に格納されている通信データが改変されているか否かの検証について説明する。この検証を実行する主体は、以下の3つのケースが考えられる。1つ目は、サーバ1の管理者がユーザそれぞれに依頼して端末2に分配された端末保持用情報を収集して検証する場合である。この場合、サーバ1が通信ログデータベースを参照して歴代のハッシュチェーン作成用ハッシュ値を取得し、端末2から収集した端末保持用情報との一致を調べればよい。なお、複数の端末2のうちのいずれかの端末2のユーザからの依頼によって、サーバ1の管理者がデータ改変の有無を調べる場合も本ケースに当てはまる。
【0060】
2つ目は、複数の端末2のうちのいずれかの端末2のユーザが、その他の端末2のユーザ及びサーバ1の管理者に問い合わせて、各端末2に分配された端末保持用情報の収集と通信ログデータベースを参照して取得した歴代のハッシュチェーン作成用ハッシュ値との一致の検証を実行する場合である。端末保持用情報がサーバ1の署名である場合、端末2のユーザは、サーバ1の管理者に問い合わせて歴代のハッシュチェーン作成用ハッシュ値から生成した歴代の署名を集めればよい。
【0061】
3つ目は、複数の端末2それぞれのユーザとサーバ1の管理者とのいずれとも異なる第三者(例えば、中立的な立場でデータ改変の検証を実行する監査者)が、各端末2のユーザから端末保持用情報を収集するとともに、サーバ1の管理者から歴代のハッシュチェーン作成用ハッシュ値を収集して一致を調べる。
【0062】
上述した1つ目のケースのようにサーバ1がデータ改変の有無を調べる場合、まず、通信部11は、複数の端末2から各端末2に送信した端末保持用情報とデータIDとを受信して回収する。サーバ1の検証部123は、回収されたデータIDそれぞれについて、記憶装置3に格納されている通信記録データのうち回収されたデータIDに対応する通信記録データに基づいて生成された端末保持用情報と、端末2から回収された端末保持用情報とが一致するか否かを検証する。
【0063】
信頼性出力部124は、収集したすべての端末保持用情報が一致する場合、記憶装置3に格納されている通信記録データの信頼性を出力する。具体的には、もし、通信ログデータベースに格納されているすべてのデータIDに対応する端末保持用情報を収集でき、かつすべての端末保持用情報が一致する場合は、通信ログデータベース中の通信記録データと、各端末2に分配された端末保持用情報とがともに改変されていない蓋然性が高いと言える。この場合信頼性出力部124は、記憶装置3に格納されている通信データは信頼できることを示す情報を出力する。
【0064】
また、通信ログデータベースに格納されている一部のデータIDに対応する端末保持用情報のみ収集でき、かつ収集した端末保持用情報についてはすべて一致する場合、信頼性出力部124は、例えば既知のサンプリング調査と同様の手法によってデータ改変がないことの信頼度を出力する。
【0065】
信頼性出力部124は、収集した端末保持用情報のうちいずれかの端末保持用情報が一致しない場合、記憶装置3に格納されている通信データと、端末2に分配された端末保持用情報との、少なくともいずれか一方が改変されていることを示す。そこで、信頼性出力部124は、収集した端末保持用情報のうちいずれかの端末保持用情報が一致しない場合、その端末保持用情報に対応するデータIDを出力する。
【0066】
例えば、出力されたデータIDに対応する通信データよりも後に生成された複数の端末保持用情報について一致する場合は記憶装置3に格納されている通信データは改変されていないことを示唆し、端末2に分配された端末保持用情報が改変された蓋然性が高いことを意味する。反対に、対応するデータIDに対応する通信データよりも後に生成された複数の端末保持用情報がいずれも一致しない場合、記憶装置3に格納されている通信データが改変された蓋然性が高いことを意味する。このように、信頼性出力部124は、収集した端末保持用情報のうちいずれかの端末保持用情報が一致しない場合に出力するデータIDは、データ改変を特定するための資する情報となる。
【0067】
<サーバ1が実行する情報処理方法の処理フロー>
図4は、実施の形態に係るサーバ1が実行する情報処理の流れを説明するためのフローチャートである。本フローチャートにおける処理は、例えばサーバ1が起動したときに開始する。
【0068】
通信部11は、端末2から通信データを受信する(S2)。通信データ管理部120は、通信データを一意に特定するためのデータIDを生成する(S4)。ハッシュ生成部121は、最新のハッシュチェーン作成用ハッシュ値を記憶装置3から読み出して取得する(S6)。ハッシュ生成部121は、通信データと、ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を新たなハッシュチェーン作成用ハッシュ値として生成する(S8)。
【0069】
通信データ管理部120は、通信データを記憶装置3に格納されている通信ログデータベースに格納する(S10)。通信データ管理部120は、通信データを送信した端末2にあらかじめ関連付けられている送信先の端末2を特定する(S12)。通信部11は、新たなハッシュチェーン作成用ハッシュ値に由来する端末保持用情報とデータIDとを、通信データ管理部120が特定した送信先の端末2に送信する(S14)。
【0070】
図5は、実施の形態に係る通信データの受信処理を説明するためのフローチャートであり、
図4におけるステップ2の処理をより詳細に説明するための図である。サーバ1は端末2から通信データを受信するので、
図4は、サーバ1が端末2から通信データを受理するまでのやり取りを示している。
【0071】
端末2のハッシュ生成部121は、サーバ1に送信すべき通信目的のデータのハッシュ値を生成する(S200)。ハッシュ生成部121は、例えばSHA-2等の既知のハッシュ関数を用いて通信目的のデータのハッシュ値を生成する。続いて、署名部122は、ハッシュ生成部121が生成したハッシュ値と、生成時刻と、通信目的のデータとを含むデータを通信用秘密鍵で暗号化した署名データを生成する(S202)。ここで「生成時刻」は端末2の内部時計の時刻であり、署名データの生成時の時刻である。
【0072】
通信部11は、通信データ管理部120の管理の下、署名部122が生成した署名と通信目的のデータとを含むデータを通信データとしてサーバ1に送信する(S204)。サーバ1の通信部11は、端末2から通信データを受信する(S206)。通信データ管理部120は、端末2から受信した通信データ中の署名データを、通信用秘密鍵に対応する通信用公開鍵で復号し(S208)、通信データに含まれる生成時刻と、サーバ1の内部時刻とが乖離しているか否かを検証する(S210)。
【0073】
ここで、通信データ管理部120は、端末2が通信データを生成してから送信するまでのタイムラグと、端末2からサーバ1に通信データを送信する際の通信時間等を考慮して、サーバ1の内部時刻とが乖離しているか否かを検証する。具体的には、通信データ管理部120は、通信データに含まれる生成時刻と、サーバ1の内部時刻との差が所定の閾時間以上である場合、両者が乖離していると判断する。所定の閾時間は、端末2が置かれる通信環境や通信に用いるネットワークNの帯域の広さ等を考慮して実験により定めればよいが、例えば数分から数十分であり、さらに具体的には10分である。
【0074】
通信データに含まれる生成時刻とサーバ1の内部時刻とが乖離している場合(S212のYes)、通信データ管理部120は端末2に対してサーバ1の内部時計による現在時刻と通信データの再生成要求とを送信する(S214)。端末2は、サーバ1の現在時刻と通信データの再生成要求とを受信する(S216)。
【0075】
署名部122は、ハッシュ値と、サーバの内部時計との差分を加味した生成時刻と、通信目的のデータを含むデータを通信用秘密鍵で暗号化した署名データを生成し(S218)、端末2はステップS204の送信処理に戻る。
【0076】
通信データに含まれる生成時刻とサーバ1の内部時刻とが乖離していない場合(S212のNo)、通信データ管理部120は端末2から送信された通信データを受理する(S220)。
【0077】
図6は、実施の形態に係るサーバ1が実行する信頼性の出力処理を説明するためのフローチャートである。
【0078】
通信部11は、複数の端末2からそれぞれ端末保持用情報とデータIDとを受信する(S14)。ハッシュ生成部121は、受信されたデータIDそれぞれについて、記憶装置3に格納されている通信記録データのうち回収されたデータIDに対応する端末保持用情報を生成する(S16)。
【0079】
検証部123は、通信部11が受信した端末保持用情報と、ハッシュ生成部121が記憶装置3に格納されている通信記録データから生成した端末保持用情報との一致を検証する(S18)。通信部11が受信した端末保持用情報と、ハッシュ生成部121が記憶装置3に格納されている通信記録データから生成した端末保持用情報とがすべて一致する場合(S20のYes)、信頼性出力部124は、データ改変がないことの信頼度を出力する(S22)。
【0080】
通信部11が受信した端末保持用情報と、ハッシュ生成部121が記憶装置3に格納されている通信記録データから生成した端末保持用情報とに不一致が存在する場合(S20のNo)、信頼性出力部124は、不一致のデータIDを出力する(S24)。
【0081】
<実施の形態に係る通信システムSの利用シーン>
続いて、実施の形態に係る通信システムSの利用シーンの一例として、通信システムSによる投票の管理について説明する。まず、端末保持用情報はハッシュチェーン作成用ハッシュ値そのものである場合について説明する。
【0082】
例えば、通信システムSが、複数の候補者の中から何らかの代表者を決めるための選挙の投票を管理する場合、複数の端末2それぞれのユーザが投票者となり、通信データが投票の内容(候補者の名前)となる。サーバ1は、ユーザによる投票を集計する選挙管理サーバとなり、記憶装置3はユーザによる投票結果を集約して記憶することになる。サーバ1は、端末2から通信データを受信する度に、端末保持用情報を生成して端末2に分配する。
【0083】
複数の端末2のユーザのうちの少なくとも1人のユーザ(以下、「検証ユーザ」と記載する。)」が投票の正当性を確認する場合、検証ユーザは自身の端末2(以下、「検証端末」と記載する。)を用いて、記憶装置3に格納されている投票に係るすべての通信記録データと初期ハッシュとをサーバ1を介して取得する。また、検証ユーザは検証端末を用いて、複数の端末2のユーザそれぞれに依頼し、各端末2が保持する端末保持用情報とデータ識別子とを受信して回収する。
【0084】
検証ユーザは、検証端末を用いて、サーバ1から取得した通信記録データに基づいて、回収されたデータ識別子に対応する通信記録データを再生成する。検証ユーザは、検証端末を用いて、通信記録データに基づいて再生成された端末保持用情報と、端末2から回収された端末保持用情報とが一致するか否かを検証する。すべての端末保持用情報が一致する場合、検証端末2は、記憶装置3に格納されている通信記録データの信頼性を出力する。検証するステップにおいていずれかの端末保持用情報が一致しない場合、検証端末は、その端末保持用情報に対応するデータ識別子を出力する。
【0085】
なお、端末保持用情報がハッシュチェーン作成用ハッシュ値に対するサーバ1の署名である場合、検証ユーザは、あらかじめ署名用秘密鍵に対応する公開鍵を取得して検証端末に格納しておく。検証ユーザは、検証端末を用いて、署名用秘密鍵に対応する公開鍵で署名からハッシュチェーン作成用ハッシュ値に変換することにより、通信記録データに基づいて再生成されたハッシュ値と、端末2から回収されたハッシュ値とが一致するか否かを検証すればよい。
【0086】
これにより、検証ユーザは、選挙管理サーバであるサーバ1と独立して、自身が保持する端末2を用いて通信記録データ(すなわち、投票)の信頼性を検証ことができる。
【0087】
<実施の形態に係る通信システムSが奏する効果>
以上説明したように、実施の形態に係る通信システムSによれば、通信データの改変を調査するための技術を提供することができる。
【0088】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、装置の全部又は一部は、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果をあわせ持つ。
【0089】
<変形例>
上記では、ハッシュ生成部121が、式(1)に基づいて、受信した通信データと、その通信データの受信時における最新のハッシュチェーン作成用ハッシュ値を並べたデータのハッシュ値を、通信データを受信した順に生成した新たなハッシュチェーン作成用ハッシュ値として更新する場合について説明した。これに替えて、ハッシュ生成部121は、受信した通信データに割り当てられたデータIDと、通信データと、その通信データの受信時における最新のハッシュチェーン作成用ハッシュ値を並べたデータのハッシュ値を、通信データを受信した順に生成した新たなハッシュチェーン作成用ハッシュ値として更新してもよい。
【0090】
具体的には、ハッシュ生成部121は、以下の式(2)に基づいてハッシュチェーン作成用ハッシュ値を更新してもよい。
ハッシュN+1=Hash(DIDN+1+データN+1+ハッシュN) (2)
【0091】
ハッシュ生成部121がハッシュチェーン作成用ハッシュ値の更新にデータIDも用いることにより、ハッシュチェーン作成用ハッシュ値の生成の難易度が上がり、改変の検知力をより高めることができる。
【符号の説明】
【0092】
1・・・サーバ
10・・・記憶部
11・・・通信部
12・・・制御部
120・・・通信データ管理部
121・・・ハッシュ生成部
122・・・署名部
123・・・検証部
124・・・信頼性出力部
124・・・場合信頼性出力部
2・・・端末
20・・・記憶部
21・・・通信部
22・・・制御部
220・・・ハッシュ生成部
221・・・署名部
222・・・通信データ生成部
3・・・記憶装置
N・・・ネットワーク
S・・・通信システム
【要約】
【課題】通信データの改変を調査するための技術を提供する。
【解決手段】通信データ管理部120は、端末2から受信した通信データと当該通信データを一意に特定するためのデータ識別子とを含む通信記録データを記憶装置に格納させる。ハッシュ生成部121は、通信データと、ハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を新たなハッシュチェーン作成用ハッシュ値として生成する。通信データ管理部120は、新たなハッシュチェーン作成用ハッシュ値に由来する端末保持用情報とデータ識別子とを端末2に送信する。ハッシュ生成部121は、あらかじめ定められた初期ハッシュを初期値とし、通信部11が通信データを受信した順に通信データと、通信データの受信時におけるハッシュチェーン作成用ハッシュ値とを並べたデータのハッシュ値を、新たなハッシュチェーン作成用ハッシュ値として更新する。
【選択図】
図2