図1は、本発明の一実施態様に係る測定装置の内部構成を示すブロック図である。
本発明の一実施態様に係る測定装置は、第1の生体データをk回(k≧2)以上測定することにより、k個の第1の測定値を求める第1の測定部101と、互いに異なるk個の分散署名鍵が揃った場合にのみ署名生成鍵を復元することが可能な前記k個の分散署名鍵を用いて、前記k個の第1の測定値に対して署名演算をそれぞれ施すことにより、k個の分散署名を生成する分散署名生成部104と、前記k個の分散署名を合成することにより、署名を復元する署名合成部106と、前記署名生成鍵に対応する署名検証鍵を用いて、前記署名合成部106が復元した前記署名が、前記k個の第1の測定値が等しいことを示す正しい署名か否かを検証する定常状態検証部107とを備える。
本態様によると、本来暗号化技術に用いられる鍵分散の技術を、ユーザが安静な状態で第1の生体データを測定したか否かを判断するために用いる。ユーザが安静な状態であることを検知するためのセンサーなどを設けることなく、k個の分散署名から復元した署名が正しいか否かを判断することにより、第1の生体データが安静な状態で測定されたか否かを判断するので、簡易な構成で、第1の生体データが安静な状態で測定されたものであることを判断できる。
また、復元した署名が正しくない場合は、第1の測定値が測定時間によって異なることを意味するので、第1の生体データが不安静な状態で測定されたとみなすことができる。その結果、簡易な方法で、不安静な状態で求められた第1の測定値を排除できる。
また、署名演算に用いる演算要素として第1の測定値自身を用いることにより、第1の測定値は本来の第1の生体データの測定値としての機能と署名演算の演算要素としての機能との2つの機能を果たすことができる。このため、第1の生体データが安静な状態で測定されたか否かを判断する構成を簡素化できる。
好ましくは、前記署名生成鍵と前記署名検証鍵との積は所定の値であり、前記署名演算は、前記分散署名鍵又は前記署名生成鍵を指数とするべき乗演算であり、前記署名生成鍵は、前記k個の分散署名鍵のそれぞれに所定の係数を乗じた値を加算することにより得られ、前記分散署名生成部は、前記k個の第1の測定値のそれぞれについて、当該第1の測定値を底とし、当該第1の測定値に対応する分散署名鍵を指数とするべき乗演算の結果を分散署名として算出することにより、前記k個の分散署名を生成し、前記署名合成部は、前記k個の分散署名に前記所定の係数をそれぞれべき乗し、k個のべき乗結果の積を、前記署名として算出し、前記定常状態検証部は、前記署名を底とし前記署名検証鍵を指数とするべき乗を左辺とし、前記k個の第1の測定値のうちの着目する第1の測定値を右辺とする所定の検証式が成立する場合に前記署名合成部が復元した前記署名が正しい署名であると判断する。
本態様は、復元した署名が所定の検証式を満たす場合に正しい署名であると判断するものである。つまり、本態様によると、署名演算を上記べき乗演算としている。また、署名生成鍵と分散署名との関係は上述した関係を有する。このため、k個の第1の測定値が等しければ、k個の分散署名の積は、第1の測定値を署名生成鍵で署名した結果と等しくなる。また、署名生成鍵と署名検証鍵との積が1であるとの関係より、署名を署名検証鍵で検証した結果は、第1の測定値と等しくなる。このため、k個の第1の測定値を用いて、k個の第1の測定値が等しいか否か、すなわちユーザが安静な状態で第1の生体データを測定したか否かを判断することができる。
なお、上述の測定装置は、さらに、前記第1の測定部が求めた前記k個の第1の測定値を量子化する量子化部を備え、前記分散署名生成部は、前記k個の分散署名鍵を用いて前記量子化部で量子化された後の前記k個の第1の測定値に対して署名演算をそれぞれ施すことにより、前記k個の分散署名を生成してもよい。
本態様によると、量子化部が、第1の測定部が求めた各第1の生体データの誤差を吸収することができる。このため、僅かな誤差が原因となり、第1の生体データが安静な状態で測定されたものではないと誤判断されるのを防止できる。
また、上述の測定装置は、さらに、前記定常状態検証部において前記署名合成部が復元した前記署名が正しい署名であると判断された場合に、前記k個の第1の測定値のうちの着目する第1の測定値を前記署名合成部において復元された前記署名とともに外部のサーバに送信する送信部を備えていてもよい。
本態様によると、復元された署名とともに第1の測定値を外部のサーバに送信することができる。
また、上述の測定装置は、さらに、前記第1の測定部における前記第1の生体データの測定と並行して、前記第1の生体データとは異なる第2の生体データを測定することにより第2の測定値を求める第2の測定部を備え、前記定常状態検証部は、さらに、前記署名合成部が復元した前記署名が正しい署名であると判断した場合に、前記第2の測定部が求めた前記第2の測定値を外部に出力することを許可してもよい。
本態様によると、署名演算に用いる演算要素として測定する第1の生体データと、実際に測定する第2の生体データとを異なる生体データとすることもできる。この場合、例えば、上の値(最高血圧)と下の値(最低血圧)とからなる血圧データのように、実際に測定する第2の生体データが複数のデータからなるタイプの生体データであっても、脈拍のように単一のデータからなるタイプの生体データを第1の生体データとして用いることにより、ユーザが安静な状態で第2の生体データを測定したか否かを判断することができる。そのため、簡易な構成で、第2の生体データが安静な状態で測定されたものであることを判断できる。
また、一定の値とならない心電図データのように、実際に測定する第2の生体データが安静な状態で測定したか否かの判断に用いるには相応しくないタイプの生体データであっても、第1の測定値を用いて第2の生体データを安静な状態で測定したか否かを判断できる。
また、上述の測定装置は、さらに、前記第1の測定値の基準となる基準値を、参照値として格納している第1の参照値格納部を備え、前記分散署名生成部は、前記k個の分散署名鍵を用いて、前記参照値と(k−1)個の第1の測定値とに対して署名演算をそれぞれ施すことにより、前記k個の分散署名を生成してもよい。
本態様によると、第1の測定値の基準となる基準値である参照値と(k−1)個の第1の測定値とからk個の分散署名を生成している。参照値の分散署名を含めたk個の分散署名から署名を復元することにより、第1の生体データを(k−1)回測定して算出された(k−1)個の分散署名が、参照値の分散署名と一致しない場合には、復元した署名が正しい署名であると判断されない。このため、署名演算に用いる演算要素として測定した第1の生体データと、実際に測定する第2の生体データとを異なる生体データとした場合において、第2の生体データが安静な状態で測定され、且つ第2の生体データが第1の生体データのユーザと同一ユーザの生体データであることを判断できる。
また、上述の測定装置は、さらに、前記署名合成部で復元された前記署名を署名生成鍵として用いて、前記第2の測定値の署名を生成する第2の署名生成部と、前記定常状態検証部が前記第2の測定値を外部に出力することを許可した場合に、前記第2の測定値を前記第2の測定値の署名とともに外部のサーバに送信する送信部とを備えていてもよい。
本態様によると、署名合成部で復元された署名を署名生成鍵として、第2の計測値の署名を生成している。これにより、第2の計測値の署名及び第2の計測値を受信した外部のサーバでは、第2の計測値が第1の生体データのユーザと同一ユーザの第2の生体データの計測値であることを判断できる。
また、上述の測定装置は、さらに、前記署名合成部で復元された前記署名を暗号鍵として用いて、前記第2の測定値を暗号化する第2の暗号化部と、前記定常状態検証部が前記第2の測定値を外部に出力することを許可した場合に、暗号化された前記第2の測定値を外部のサーバに送信する送信部とを備えていてもよい。
本態様によると、署名合成部で復元された署名を暗号鍵として、第2の計測値を暗号化している。これにより、簡易な構成で、外部のサーバに送信する第2の計測値の秘匿性を保証できるので、ユーザのプライバシーを保護できる。
また、前記第1の生体データは脈拍データであり、前記第2の測定値は心電図データであってもよい。
本態様によると、第1の生体データを脈拍データとし、第2の生体データを心電図データとすることができる。
また、前記第1の測定部は、前記第1の生体データを時間的に連続してk回測定することにより、前記k個の第1の測定値を求めてもよい。
本態様によると、署名合成部は、連続する所定回数の分散署名を集めて署名を復元することができる。これにより、安静な状態が継続した状態で第1の生体データが測定されたものであることを判断できる。
本発明の他の実施態様に係る測定装置の測定装置は、第1の生体データをk回(k≧2)以上測定することにより、k個の第1の測定値を求め、互いに異なるk個の分散署名鍵が揃った場合にのみ署名生成鍵を復元することが可能な前記k個の分散署名鍵を用いて、前記k個の第1の測定値に対して署名演算をそれぞれ施すことにより、k個の分散署名を生成し、前記k個の分散署名を合成することにより、署名を復元し、前記署名生成鍵に対応する署名検証鍵を用いて、復元した前記署名が、前記k個の第1の測定値が等しいことを示す正しい署名か否かを検証する。
本発明のさらに他の実施態様に係るプログラムは、コンピュータに、第1の生体データをk回(k≧2)以上測定することにより、k個の第1の測定値を求めさせ、互いに異なるk個の分散署名鍵が揃った場合にのみ署名生成鍵を復元することが可能な前記k個の分散署名鍵を用いて、前記k個の第1の測定値に対して署名演算をそれぞれ施すことにより、k個の分散署名を生成させ、前記k個の分散署名を合成することにより、署名を復元させ、前記署名生成鍵に対応する署名検証鍵を用いて、復元した前記署名が、前記k個の第1の測定値が等しいことを示す正しい署名か否かを検証させる。
本発明のさらに他の実施態様に係る集積回路は、第1の生体データをk回(k≧2)以上測定することにより、k個の第1の測定値を求める第1の測定部と、互いに異なるk個の分散署名鍵が揃った場合にのみ署名生成鍵を復元することが可能な前記k個の分散署名鍵を用いて、前記k個の第1の測定値に対して署名演算をそれぞれ施すことにより、k個の分散署名を生成する分散署名生成部と、前記k個の分散署名を合成することにより、署名を復元する署名合成部と、前記署名生成鍵に対応する署名検証鍵を用いて、前記署名合成部が復元した前記署名が、前記k個の第1の測定値が等しいことを示す正しい署名か否かを検証する定常状態検証部とを備える。
(実施の形態1)
以下、本発明の一実施の形態である測定装置及び測定装置の制御方法について、図面を参照しながら説明する。図2は、本発明の実施の形態1に係る測定装置及び測定装置の制御方法が用いられる生体データ管理システムを示すシステム構成図である。図2において、本実施の形態に係る生体データ管理システムは、測定装置100とサーバ200と鍵発行サーバ600とを含み、測定装置100とサーバ200と鍵発行サーバ600とは互いにネットワーク300を介して接続されている。なお、サーバ200は病院又は保険会社等の医療機関に設置される。鍵発行サーバ600は、署名生成鍵及び署名検証鍵を発行する鍵発行センターに設置される。なお、鍵発行サーバ600と測定装置100又はサーバ200とは、インターネットなどのネットワーク300を介してデータのやり取りを行うが、LAN(Local Area Network)などのネットワーク300を介してデータのやり取りを行ってもよいし、USB(Universal Serial Bus)メモリなどの記録媒体を介してデータのやり取りを行ってもよい。
測定装置100は、脈拍、血圧又は血糖値などの生体データを測定する機能、ユーザが安静な状態であるか否かを判断する機能、及びユーザが安静な状態で生体データを測定したことを示す署名を生成する機能を有する。また、測定装置100は、サーバ200と通信する機能を有し、測定結果及び署名をサーバ200に送信する。また、測定装置100は、鍵発行サーバ600から署名生成鍵及び署名検証鍵を受信する。
サーバ200は、測定装置100から測定結果及び署名を収集し、署名が正しいものであるか否かを判断する機能を有する。また、サーバ200は、収集した測定結果をユーザごとにデータベースとして管理する。
ネットワーク300は、インターネット又は病院内のイントラネットワークのようなローカルネットワーク等で構成される。なお、ネットワーク300は有線又は無線のいずれでもよい。
図3は、本発明の実施の形態1に係る測定装置100の内部構成を示すブロック図である。測定装置100は、生体データの測定中にユーザが安静な状態であるか否かを検知し、ユーザが安静な状態で生体データを測定したことを示す署名を生成する。安静状態を検知するために、測定装置100は一つの測定結果を得るにあたって複数回数の生体データの測定を行う。測定装置100は、複数回数のうち所定回数分の生体データの測定値が定常値、即ち同一の値になると、ユーザが安静な状態であると判断し、測定値が安静状態で測定されたことを示す署名を生成する。
測定装置100は、所定回数分の測定値が同一の値であることの判断と、測定値に対する署名の生成とを、秘密分散法を用いて同時に行う。この秘密分散法とは、ある秘密データをn個に分割し、そのうちの互いに異なるk個が揃ったら初めて元のデータが復元できるといった手法である。なお、k、nはそれぞれ2以上の整数でk≦nを満たす(例えば、非特許文献1、非特許文献2参照)。
ブルース・シュナイアー(Bruce Schneier)著、「アプライド クリプトグラフィ(APPLIED CRYPTOGRAPHY)」、改定第2版、(米国)、ウィリー(WILEY)出版、1996年、P528−529
岡本龍明、山本博資著、「現代暗号」、産業図書出版、1997年、P214−215
ここで、本実施の形態において、前記所定回数がkに対応する。測定装置100は、所定の署名生成鍵を秘密分散法で分割した分散署名鍵を用いて、所定回数と等しいk個の測定値それぞれに署名(以下、「分散署名」という)を施す。測定装置100は、このk個の分散署名を合成して署名を生成し、これを上記署名生成鍵に対応する署名検証鍵を用いて検証する。もし、正しい署名が生成されていれば、k個の測定値が同一の値であることが分かる。なお、本実施の形態においては、k=3の場合について説明するが、kはそれ以外の値であってもよい。
以下、測定装置100を構成する各ブロックについて述べる。
測定装置100は、第1の測定部101と、量子化部102と、分散署名鍵生成部103と、分散署名生成部104と、分散署名格納部105と、署名合成部106と、定常状態検証部107と、ID格納部108と、測定関連情報格納部109と、送信部110と、制御部111と、受信部112とを含む。
第1の測定部101は、制御部111から測定開始の指示を受け付けると、測定対象である生体データを測定する。
量子化部102は、第1の測定部101から出力される各測定値を量子化する。これにより、各測定値間に所定の範囲内で誤差や変動が生じる場合、この誤差や変動を吸収することができる。
分散署名鍵生成部103は、測定タイミング「i」(i=1,2,・・・)ごとに、予め初期設定で測定装置100に設定される署名生成鍵を分散し、分散署名鍵「d(i)」を生成する。なお、分散署名鍵「d(i)」は、測定タイミング「i」ごとに異なる。なお、本実施の形態では、分散署名鍵生成部103は、測定タイミング「i」ごとに逐次、分散署名鍵「d(i)」を生成することを想定している。なお、分散署名鍵生成部103は、生体データの測定前に予め分散署名鍵「d(i)」を生成しておき、測定タイミング「i」ごとに順番に出力してもよい。初期設定の概要については、図7を用いて後述する。
分散署名生成部104は、測定タイミング「i」ごとに、量子化部102から出力される生体データの測定値「m(i)」を、分散署名鍵生成部103から出力される分散署名鍵「d(i)」で署名することにより、分散署名「M(i)」を生成する。例えば、「i=1」の場合、分散署名生成部104は、測定値「m(1)」を分散署名鍵「d(1)」で署名することにより分散署名「M(1)」を生成する。このように、分散署名生成部104は、測定タイミング「i」ごとに分散署名「M(i)」を生成し、「i=2」となれば分散署名「M(2)」を、「i=3」となれば分散署名「M(3)」を順次生成する。
分散署名格納部105は、測定タイミング「i」ごとに生成される分散署名「M(i)」を格納する。なお、分散署名格納部105は、少なくとも3つの分散署名を格納する。そのため、シフトレジスタで実装してもよい。
署名合成部106は、分散署名「M(1)」から分散署名「M(n)」までのn個の分散署名のうち、所定回数「k」個の分散署名を合成して署名を復元する。本実施の形態では、所定回数「k」個の分散署名を合成する際、各測定タイミング「i」で生成される分散署名「M(i)」を基準とする。即ち、署名合成部106は、この基準となる分散署名「M(i)」までの所定回数「k」個の分散署名「M(i)、M(i−1)、・・・、M(i−(k−1))」を合成する。例えば、所定回数「k」の値が「k=3」、即ち3個の分散署名を合成する場合、測定タイミング「i=n」において分散署名「M(n)」が生成されると、署名合成部106は、この分散署名「M(n)」を基準として、分散署名「M(n)」、分散署名「M(n−1)」及び分散署名「M(n−2)」の3つの分散署名を合成して署名を復元する。
定常状態検証部107は、所定の署名検証鍵を用いて、復元された署名が正しい署名であるか否かを検証する。具体的には、定常状態検証部107は、復元された署名が、後述する所定の検証式を満たす場合に、復元された署名が正しい署名であると判断し、所定回数「k」個の測定値が定常値であると判断する。例えば、所定回数「k」の値が「k=3」の場合、定常状態検証部107は、分散署名「M(n)」、分散署名「M(n−1)」及び分散署名「M(n−2)」の3つの分散署名を合成することにより復元される署名が所定の検証式を満たすか否かを検証する。そして、定常状態検証部107は、復元された署名が検証式を満たす場合に、署名が正しい署名であると判断し、測定値「m(n)」、測定値「m(n−1)」、及び測定値「m(n−2)」の3つの測定値が同一の値、即ち「m(n)=m(n−1)=m(n−2)」と判断する。なお、所定の署名検証鍵は、初期設定時に定常状態検証部107に設定される。
ID格納部108は、当該測定装置100を識別するためのID(識別子)を格納する。
測定関連情報格納部109は、測定に関する情報(以下、「測定関連情報」という)、例えば測定日時やGPSから得られる測定装置100使用時の位置情報などを格納する。
送信部110は、定常状態検証部107において測定値が同一の値であると検知された時の測定値及び署名、前記ID、及び前記測定関連情報を含む所定フォーマットのデータを生成し、サーバ200に送信する。
制御部111は、測定装置100の各動作を制御する。例えば、制御部111は、サーバ200から送信される測定開始指示を受信部112が受信すると、生体データの測定を開始するよう制御する。また、制御部111は、定常状態検証部107で定常状態が検知されない場合に、生体データの再測定を行うよう制御する。
図4は、本発明の実施の形態1に係るサーバ200の内部構成を示すブロック図である。
サーバ200は、測定開始指示部201と、送信部202と、受信部203と、署名検証鍵格納部204と、署名検証鍵取得部205と、署名確認部206と、測定値格納部207とを含む。
測定開始指示部201は、測定装置100に対して生体データの測定を開始するよう指示する。この測定開始の指示を行うタイミングは、医療機関の医師等によって設定され、「30分に1度」又は「1時間に1度」など所定のタイミングでもよいし、ランダムなタイミングでもよい。
送信部202は、前記測定開始の指示を測定装置100に送信する。
受信部203は、測定装置100より、測定値、署名、ID、及び測定関連情報を含む所定フォーマットのデータを受信する。
署名検証鍵格納部204は、測定装置100から収集した署名を検証するための署名検証鍵を、測定装置100のIDと対応付けて格納する。署名検証鍵は、予め初期設定時に署名検証鍵格納部204に設定される。この署名検証鍵格納部204の詳細については図5を用いて後述する。
署名検証鍵取得部205は、測定装置100から収集したIDに対応する署名検証鍵を署名検証鍵格納部204より取得し、署名確認部206に出力する。
署名確認部206は、署名検証鍵格納部204より取得した署名検証鍵を用いて、測定装置100から収集した署名を検証する。具体的には、署名確認部206は、署名が所定の検証式を満たす場合に、署名が正しい署名であると判断する。
測定値格納部207は、測定値と測定関連情報とを、IDと対応付けて格納する。なお、これらの情報は、署名確認部206において検証された署名が正しい署名である場合、署名確認部206により測定値格納部207に書き込まれる。この測定値格納部207の詳細については図6を用いて後述する。
図5は、図4に示す署名検証鍵格納部204のメモリ構成図である。図5において、署名検証鍵格納部204には、項目「ID」と項目「署名検証鍵」とが設けられ、署名検証鍵格納部204は、測定装置100のIDと署名検証鍵とを対応付けて管理している。項目「ID」には、測定装置100を識別するためのIDが格納される。項目「署名検証鍵」には、測定装置100から送信される署名を検証するための署名検証鍵が格納される。
例えば、図5の場合、署名検証鍵格納部204は、IDが「12345」の測定装置100及びIDが「12346」の測定装置100の各々について、対応する署名検証鍵を格納している。IDが「12345」の測定装置100には、署名検証鍵「54321」が対応付けられ、IDが「12346」の測定装置100には、署名検証鍵「43210」が対応付けられている。
図6は、図4に示す測定値格納部207のメモリ構成図である。ここでは、測定の対象である生体データを、例えば脈拍とした場合について説明する。図6において、測定値格納部207には、項目「ID」、項目「測定日時」及び項目「脈拍(回/分)」が設けられ、測定値格納部207は、測定装置100のIDと、測定日時及び脈拍の測定値とを対応付けて管理している。項目「ID」には、測定装置100を識別するためのIDが格納される。項目「測定日時」には、脈拍の測定日時が記録される。項目「脈拍(回/分)」には、脈拍の測定値が記録される。
例えば、図6の場合、測定値格納部207は、IDが「12345」の測定装置100で行われた2回の測定に関して、その測定日時及び脈拍の測定値を記録している。具体的には、IDが「12345」の測定装置100は、「2008年12月1日の午前9時」に脈拍の測定を行い、そのときの測定値が「65」であったことを示している。同様に、IDが「12345」の測定装置100は、「2008年12月1日の午後12時5分」に脈拍の測定を行い、そのときの測定値が「70」であったことを示している。
以下、以上のように構成された測定装置100及び測定装置100の制御方法について、図面を用いてその動作を説明する。
図7は、本発明の実施の形態1に係る測定装置100及び測定装置100の制御方法が用いられる生体データ管理システムにおいて、初期設定時の測定装置100、サーバ200及び鍵発行サーバ600の動作を示すシーケンス図である。この初期設定では、測定装置100にID、署名生成鍵、及び署名検証鍵が設定され、サーバ200に測定装置100のID及び署名検証鍵が設定される。
事前に、鍵発行サーバ600は、測定装置100のIDに対応する一対の署名生成鍵及び署名検証鍵を生成する(S701)。そして、鍵発行サーバ600は、測定装置100にID、署名生成鍵及び署名検証鍵を配布し(S702)、サーバ200にID及び署名検証鍵を配布する(S703)。
ここで、署名生成鍵及び署名検証鍵は、例えばRSA(Rivest Shamir Adleman)署名を用いた場合、次のように生成される。
(1)大きな素数p、qを生成する。
(2)n=p×qを計算する。
(3)e×d=1 modλ(ここで、λ=LCM(p−1、q−1))を満たす、e、dを任意に求める。
この「e」が署名検証鍵に相当し、「d」が署名生成鍵に相当する。鍵発行サーバ600は、このようにして前記IDに対応する一対の署名検証鍵「e」及び署名生成鍵「d」を生成する。
測定装置100は、鍵発行サーバ600よりID、署名生成鍵「d」及び署名検証鍵「e」を受けとると、IDをID格納部108に、署名生成鍵「d」を分散署名鍵生成部103に、署名検証鍵「e」を定常状態検証部107に各々設定する(S704)。なお、この測定装置100への署名生成鍵「d」及び署名検証鍵「e」の設定は、例えば市場に出荷する前に工場で行ってもよいし、市場に出荷した後に店頭で行ってもよい。
サーバ200は、鍵発行サーバ600よりID及び署名検証鍵を受けとると、IDと署名検証鍵とを対応付けて署名検証鍵格納部204に設定する(S705)。例えば、IDの値が「12345」で、署名検証鍵「e」の値が「54321」の場合、図5で示した署名検証鍵格納部204の項目「ID」にIDの値「12345」を設定し、項目「署名検証鍵」に署名検証鍵の値「54321」を設定する。
図8は、本発明の実施の形態1に係る測定装置100及び測定装置100の制御方法が用いられる生体データ管理システムにおいて、生体データ測定時の測定装置100とサーバ200の動作を示すシーケンス図である。
まず、サーバ200は、ネットワーク300を介して測定開始の指示を測定装置100に送信する(S401)。
測定装置100は、測定開始の指示に従って、測定対象である生体データを測定する。このとき、測定装置100は、一つの測定値を得るに当たって所定回数の測定を行う。そして、測定装置100は、前記所定回数の測定値より、生体データの測定中にユーザが安静な状態であることを検知し、ユーザが安静な状態で生体データを測定したことを示す署名を生成する。また、測定装置100は、ユーザが安静な状態であることを検知すると、このときの測定値及び署名、測定装置100のID、並びに測定関連情報を含む所定フォーマットのデータを生成し、サーバ200に送信する(S402)。このS402の処理の詳細については、図9を用いて後述する。
サーバ200は、測定値、署名、ID及び測定関連情報を含む所定フォーマットのデータを受信すると、署名検証鍵を用いて署名が正しい署名であるか否かを検証する。署名が正しい署名である場合、サーバ200は測定値及び測定関連情報を測定値格納部207に格納する(S403)。このS403の処理の詳細については、図13を用いて後述する。
図9は、図8のS402の動作を示すフローチャートである。この処理では、測定装置100は、生体データを複数回数測定し、複数回数のうちの所定回数と等しいk個の測定値より、生体データの測定中にユーザが安静な状態であることを検知し、ユーザが安静な状態で生体データを測定したことを示す署名を生成する。測定装置100は、この安静な状態で測定された時の測定値及び署名をサーバ200に送信する。ここでは、前記所定回数であるkを「k=3」とした場合を例に本処理を説明する。なお、以下の説明では、iは各測定タイミングを示す。また、量子化された後の測定値をm(i)、分散署名鍵をd(i)として表す。なお、前記所定回数は連続した回数であってもよいし、連続しない回数であってもよい。
事前に、制御部111、初期設定として変数iに「1」を設定して「i=1」とする。ここで、1回目の測定時に分散署名「M(1)」が生成された際、分散署名「M(−1)」及び分散署名「M(0)」に値が存在しないので、測定装置100は、分散署名「M(1)」を基準として3個の分散署名「M(1)」、「M(0)」、及び「M(−1)」を合成できない。そのため、制御部111は、この初期設定時の分散署名「M(−1)」及び分散署名「M(0)」の各々に初期値である「0」を代入し、「M(−1)=0」及び「M(0)=0」とする(S410)。この初期設定を行った後、測定装置100は前記安静な状態の検知及び前記安静状態を示す署名の生成を行う。
まず、第1の測定部101は、i回目の生体データの測定を行う(S411)。そして、量子化部102は、この測定値を量子化する(S412)。量子化を行うことにより、各測定値間に所定の範囲内で誤差や変動が生じる場合、この誤差や変動を吸収することができる。
次に、分散署名鍵生成部103は、i番目の分散署名鍵d(i)を生成する(S413)。
ここで、図10A及び図10Bを用いて、分散署名鍵d(i)の生成方法について説明する。図10A及び図10Bは、図3で述べた秘密分散法を用いて分散署名鍵d(i)の生成方法を説明するための図である。
図10Aは、分散署名鍵d(i)の生成方法の原理を説明するための図である。一方、図10Bは、図10Aに示した関数f(x)の詳細を表した図である。図10Bは、k=3の場合における分散署名鍵d(i)の生成方法の一例を表している。図10Aに示すように、分散署名鍵生成部103は、任意の関数f(x)に各測定タイミングiの値を入力することにより分散署名鍵d(i)を生成する。
具体的には、「k=3」の場合、図10Bに示すように、分散署名鍵生成部103は、定数項(図10Bの切片)を署名生成鍵dとした任意の2次多項式「f(x)=ax2+bx+d」(a,bは任意の定数)を定める。なお、以降では、この演算はmodλの演算をさらに施すことにより行う。また、署名生成鍵dは、図7で述べた初期値設定のS702において、鍵発行サーバから送付されたものである。このとき、i番目の分散署名鍵d(i)は、この2次多項式のxにiを設定したf(i)の値、つまり、図10Bの座標図では、x座標にiを設定したときのy座標値に相当する。例えば、「i=1」の場合、分散署名鍵d(1)は「d(1)=f(1)=a+b+d」として算出され、「i=2」の場合、分散署名鍵d(2)は「d(2)=f(2)=4a+2b+d」として算出される。
このように、分散署名鍵生成部103は、予め任意の2次多項式f(x)を定め、測定タイミングiごとに2次多項式f(i)の値を求めることにより分散署名鍵d(i)を生成する。
なお、2次多項式は、多項式上の任意の3点が揃えば決定されるため、その切片である署名生成鍵dが復元される。ここで、この署名生成鍵dの復元には、ラグランジェの補間法を用いることができる。ラグランジェの補間法は所定のいくつかの点を通る多項式を求める手法である(例えば、非特許文献3参照)。
ディー・イー・クヌース(D.E.KNUTH)著、中川圭介訳、「4 準数値算法/算術演算」、改定第2版、サイエンス社出版、1981年、P334−335
このラグランジェの補間法を用いると、例えば3点を(x1,y1)、(x2,y2)、(x3,y3)としたとき、前記2次多項式f(x)は、式(1)を用いて復元することができる。
式(1) f(x)=[{(x−x2)×(x−x3)}/{(x1−x2)×(x1−x3)}]×y1
+[{(x−x1)×(x−x3)}/{(x2−x1)×(x2−x3)}]×y2
+[{(x−x1)×(x−x2)}/{(x3−x1)×(x3−x2)}]×y3
署名生成鍵dは切片であるため、上記2次多項式「f(x)」のxに0を代入した値、即ち「d=f(0)」になる。なお、ここでは、分散署名鍵をi回目のiに対応したf(i)のy座標としているが、多項式上の点(x座標とy座標とのペア)であってもよい。
このような分散署名鍵d(i)の生成方法を用いることにより、測定装置100は、署名生成鍵dを時系列に分散する。本実施の形態では、この方法を用いて、測定装置100は3個の測定値「m(i)」、「m(i−1)」、及び「m(i−2)」が定常値であるか否かを判断する。
以下、図9の説明に戻る。S413の処理後、分散署名生成部104は、測定値m(i)及び分散署名鍵d(i)を用いて分散署名「M(i)」を生成し、分散署名格納部105に格納する(S414)。このとき、上述の秘密分散法によると、分散署名「M(i)」は、測定値m(i)及び分散署名鍵d(i)を用いて「M(i)=m(i)d(i) modn」と表すことができる。
次に、署名合成部106は、分散署名「M(i)」を基準として3個の分散署名「M(i)」、「M(i−1)」、及び「M(i−2)」を合成して署名S(i)を生成する(S415)。この合成の方法は、式(2)に従う。
式(2) S(i)={M(i−2)Li(i-2)×M(i−1)Li(i-1)
×M(i)Li(i)} modn
なお、上式の指数Li(i−2)、Li(i−1)、Li(i)は、(i−2,d(i−2))、(i−1,d(i−1))、(i,d(i))の3点を通る2次多項式の切片を求める式を、上記ラグランジェの補間法を用いて立てたときの各係数に対応する。具体的には、式(3)のようになる。
式(3) Li(i−2)={(0−(i−1))×(0−i)}/
{((i−2)−(i−1))×((i−2)−i)}
=[{i×(i−1)}/2] modλ
Li(i−1)={(0−(i−2))×(0−i)}/
{((i−1)−(i−2))×((i−1)−i)}
=−[{i×(i−2)}] modλ
Li(i)={(0−(i−2))×(0−(i−1))}/
{(i−(i−2))×(i−1)}
=[{(i−1)×(i−2)}/2] modλ
この式(3)を用いると、式(4)が成り立つ。
式(4) d(i−2)×Li(i−2)+d(i−1)×Li(i−1)+d(i)×Li(i)=d modλ
次に、定常状態検証部107は、図7のS702で設定された署名検証鍵eを用いて署名S(i)を検証し(S416)、署名S(i)が所定の検証式を満たすか否か判断する(S417)。具体的には、定常状態検証部107は、署名検証鍵eを用いて検証式(式(5))が成り立つか否か確認する。
式(5) S(i)e=m(i) modn
そして、定常状態検証部107は、上記検証式(式(5))が成り立っていれば、3つの測定値「m(i)」、「m(i−1)」、及び「m(i−2)」は定常値、即ち「m(i)=m(i−1)=m(i−2)」であると判断する。上記検証式で3つの測定値が同一の値であるか否かを判断できる理由は次の通りである。
即ち、もし3個の測定値が定常値、即ち「m(i−2)=m(i−1)=m(i)」が成り立っていれば、式(4)より、式(6)が成り立つ。
式(6) S(i)=M(i−2)Li(i-2)×M(i−1)Li(i-1)×M(i)Li(i) modn
=(m(i)d(i-2))Li(i-2)×(m(i)d(i-1))Li(i-1)×(m(i)d(i))Li(i) modn
=m(i)d(i-2)×Li(i-2)+d(i-1)×Li(i-1)+d(i)×Li(i) modn
=m(i)d modn
式(6)のS(i)を底とし、署名検証鍵eを指数とするべき乗を計算すると、図7を用いて述べたe×d=1 modλの関係式より、式(7)、即ち、検証式(5)が成り立つ。
式(7) S(i)e=m(i)e×d modn=m(i) modn
逆に、3つの測定値が定常値でない場合は、上記検証式(式(5))は成立しない。
なお、ここではRSA暗号の構成にあわせ、e×d=1 modλの関係式を用いているが、cを所定の定数としたととき、e×d=c modλとしてもよい。この場合、式(7)の検証式では、S(i)e=m(i)c modnを満たす事を確認すればよい。
なお、分散署名鍵d(i)の生成方法としては、上記多項式を用いる方法以外に、例えば以下の方法もある。
まず、RSA署名の署名生成鍵dを、次の式を満たす3つの分散署名鍵「d1」、「d2」、及び「d3」に任意に分割する。
d=(d1+d2+d3) modλ
そして、この3つの分散署名鍵を順繰りにi番目の分散署名鍵d(i)として用いる。例えば、「d(1)=d1、d(2)=d2、d(3)=d3」、「d(4)=d1、d(5)=d2、d(6)=d3」、「d(7)=d1、d(8)=d2、d(9)=d3」・・・といった具合に、分散署名鍵d(i)に3つの分散署名鍵「d1」、「d2」、「d3」というように順繰りに用いる。
この場合、分散署名生成部104において分散署名「M(i)=m(i)d(i) modn」が求められると、署名合成部106は、分散署名「M(i−1)=m(i−1)d(i-1) modn」、及び分散署名「M(i−2)=m(i−2)d(i-2) modn」を乗算して署名S(i)を生成する。
式(8) S(i)=M(i)×M(i−1)×M(i−2) modn
さらに、定常状態検証部107は、図7のS702で設定された署名検証鍵eを用いて
式(5) S(i)e=m(i) modn
が成り立つか否かを確認する。定常状態検証部107は、上記検証式(式(5))が成り立っていれば、3つの測定値「m(i)」、「m(i−1)」、及び「m(i−2)」は定常値、即ち「m(i)=m(i−1)=m(i−2)」であると判断する。上記検証式(式(5))で3つの測定値が同一の値であるか否かを判断できる理由は次の通りである。
即ち、もし3個の測定値が定常値、即ち「m(i−2)=m(i−1)=m(i)」が成り立っていれば、式(8)より、式(9)が成り立つ。
式(9) S(i)=M(i−2)×M(i−1)×M(i)
=m(i)d(i-2)×m(i)d(i-1)×m(i)d(i) modn
=m(i)d(i-2)+d(i-1)+d(i) modn
=m(i)d modn
式(9)のS(i)を底とし、署名検証鍵eを指数とするべき乗を計算すると、図7で述べたe×d=1 modλの関係式より、式(10)、即ち、検証式(5)が成り立つ。
式(10) S(i)e=m(i)e×d modn=m(i) modn
逆に、3つの測定値が定常値でない場合は、上記検証式(式(5))は成立しない。
以下、図9の説明に戻る。このように、S417において、署名S(i)が上記検証式(式(5))を満たすと判断された場合、3つの測定値「m(i)」、「m(i−1)」、及び「m(i−2)」は同一の値であることを示す。この場合(S417でYes)、定常状態検証部107は、このときの測定値m(i)及び署名S(i)を送信部110に出力する。そして、送信部110は、測定値m(i)及び署名S(i)に加え、測定装置100のID及び測定関連情報を含めた図11のような所定フォーマットのデータを生成し、サーバ200に送信する(S419)。
一方、S417において、署名S(i)が上記検証式(式(5))を満たさないと判断された場合、3つの測定値「m(i)」、「m(i−1)」、及び「m(i−2)」は同一の値でなかったことを示す。この場合(S417でNo)、制御部111は、変数iに1を加算し(S418)、第1の測定部101は、再度、生体データの測定を行う(S418→S411)。そして、測定装置100は、署名S(i)が上記検証式(式(5))を満たすまで、即ち、3つの測定値「m(i)」、「m(i−1)」、及び「m(i−2)」が同一の値になるまで上記S411〜S418の処理を繰り返す。
ここで、図12を用いて、S415〜S418における定常状態の検証方法を具体的に説明する。図12は、各測定タイミングiでの署名の合成方法及び署名の検証方法を示す概念図である。なお、ここで述べる測定値は、量子化された測定値とする。
まず、測定装置100はi=1において1回目の測定を実施する。このとき得られた測定値をAとすると、先のS414で説明したとおり、分散署名「M(1)」は「Ad(1) modn」となる。このとき、S415において分散署名の合成は、この分散署名「M(1)」に加え、初期設定の「M(−1)=0」及び「M(0)=0」の3つの分散署名を用いて行われる。この場合、分散署名の合成時に底の値が一致しないので(M(−1)及びM(0)の底は「0」、M(1)の底は「A」)、S417において上記検証式(式(5))は成立しない。したがって、測定装置100は、変数iに1を加算してi=2と設定し、再度、生体データの測定を行う(S418→S411)。
次に、測定装置100は2回目の測定を実施する。このとき得られた測定値をBとすると、分散署名「M(2)」は「Bd(2) modn」となる。このとき、S415において分散署名の合成は、この分散署名「M(2)」を基準として、「M(2)=Bd(2) modn」、「M(1)=Ad(1) modn」、及び初期設定の「M(0)=0」の3つ分散署名を用いて行われる。この場合、3つの測定値が「B」、「A」、「0」と同一の値ではないので、分散署名の合成時に底の値が一致せず、S417において上記検証式(式(5))は成立しない。したがって、測定装置100は、変数iに1を加算してi=3と設定し、再度、生体データの測定を行う(S418→S411)。
次に、測定装置100は3回目の測定を実施する。このとき得られた測定値をCとすると、分散署名「M(3)」は「Cd(3) modn」となる。このとき、S415において分散署名の合成は、この分散署名「M(3)」を基準として、「M(3)=Cd(3) modn」、「M(2)=Bd(2) modn」、及び「M(1)=Ad(1) modn」の3つの分散署名を用いて行われる。この場合、3つの測定値が「C」、「B」、「A」と同一の値ではないので、分散署名の合成時に底の値が一致せず、S417において上記検証式(式(5))は成立しない。したがって、測定装置100は、変数iに1を加算してi=4と設定し、再度、生体データの測定を行う(S418→S411)。
次に、測定装置100は4回目の測定を実施する。このとき得られた測定値をDとすると、分散署名「M(4)」は「Dd(4) modn」となる。このとき、S415において分散署名の合成は、この分散署名「M(4)」を基準として、「M(4)=Dd(4) modn」、「M(3)=Cd(3) modn」、及び「M(2)=Bd(2) modn」の3つの分散署名を用いて行われる。この場合、3つの測定値が「D」、「C」、「B」と同一の値ではないので、分散署名の合成時に底の値が一致せず、S417において上記検証式(式(5))は成立しない。したがって、測定装置100は、変数iに1を加算してi=5と設定し、再度、生体データの測定を行う(S418→S411)。
次に、測定装置100は5回目の測定を実施する。このとき得られた測定値をDとすると、分散署名「M(5)」は「Dd(5) modn」となる。このとき、S415において分散署名の合成は、この分散署名「M(5)」を基準として、「M(5)=Dd(5) modn」、「M(4)=Dd(4) modn」、及び「M(3)=Cd(3) modn」の3つの分散署名を用いて行われる。この場合、3つの測定値が「D」、「D」、「C」と同一の値ではないので、分散署名の合成時に底の値が一致せず、S417において上記検証式(式(5))は成立しない。したがって、測定装置100は、変数iに1を加算してi=6と設定し、再度、生体データの測定を行う(S418→S411)。
次に、測定装置100は6回目の測定を実施する。このとき得られる測定値をDとすると、分散署名「M(6)」は「Dd(6) modn」となる。このとき、S415において分散署名の合成は、この分散署名「M(6)」を基準として、「M(6)=Dd(6) modn」、「M(5)=Dd(5) modn」、及び「M(4)=Dd(4) modn」の3つの分散署名を用いて行われる。この場合、3つの測定値が「D」と一致する。そのため、分散署名の合成時に底の値が一致し、かつ、指数において署名生成鍵dが復元されるので、S417において検証式(式(5))が成立する。したがって、この場合、測定装置100は計測を終了し、このときの測定値「D」及び対応する署名「Dd modn」をサーバ200に送信する。このとき、測定装置100は、量子化後の測定値の代わりに量子化前の測定値をサーバ200に送付してもよい。
本態様によると、測定装置100は、連続する所定回数の分散署名を合成して署名を復元する。これにより、ユーザの安静状態が継続した状態で生体データが測定されたものであることを判断できる。
図13は、図8のS403の動作を示すフローチャートである。この処理では、サーバ200は、測定装置100から測定値及び署名を受信し、受信した署名を検証する。署名が正しい署名である場合、サーバ200は、受信した測定値を測定値格納部207に格納する。
まず、受信部203は、測定値、署名、ID、及び測定関連情報を含む所定フォーマットのデータ(図11)を受信する(S431)。
次に、署名検証鍵取得部は、受信したIDに対応する署名検証鍵eを署名検証鍵格納部204より取得する(S432)。例えば、測定装置100から受信したIDが「12345」であれば、署名検証鍵取得部205は図5で示した署名検証鍵格納部204より署名検証鍵「54321」を取得する。なお、この署名検証鍵eは、図7で述べた初期設定時(S705)に署名検証鍵格納部204に保存されたものである。
次に、署名検証鍵取得部205は、IDに対応する署名検証鍵eを取得できたか否かを判断する(S433)。署名検証鍵eを取得できなかった場合(S433でNo)、サーバ200はエラー処理を行う(S437)。例えば、サーバ200は、署名検証鍵を取得できなかった旨を表示部に表示するようにしても良い。
一方、IDに対応する署名検証鍵eを取得できた場合(S433でYes)、署名確認部206は、署名検証鍵eを用いて署名の検証を行い(S434)、署名が上記検証式(式(5))を満たすか否か確認する(S435)。署名が上記検証式(式(5))を満たさない場合(S435でNo)、サーバ200はエラー処理を行う(S437)。例えば、サーバ200は、署名が所定の検証式を満たさない旨を表示部に表示するようにしても良い。
署名が上記検証式(式(5))を満たす場合(S435でYes)、署名確認部206は、署名が正しい署名であると判断して、IDごとに測定値及び測定関連情報を測定値格納部207に記録する(S436)。例えば、図6の場合、サーバ200は、IDが「12345」の測定装置100への2回分(例えば、9時と12時の2回分)の測定開始指示に対応して、脈拍の測定値及び測定日時を各々IDと対応付けて測定値格納部207に記録している。なお、署名も同様に記録してもよい。
本態様によると、測定装置100は、所定の鍵分散方法を用いて、測定された生体データが安静な状態で測定されたものか否かを判断し、同時にユーザが安静な状態で生体データを測定したことを示す署名を復元する。これにより、署名生成とは別に安静状態の検知を行う構成を設ける必要が無く、署名生成と一体化して安静状態の検知を行うことができる。そのため、簡易な構成で生体データが安静な状態で測定されたものであるか否かを判断することができる。
また、復元された署名が正しい署名でない場合は、生体データの測定値が測定時間によって異なることを意味するので、生体データは不安静な状態で測定されたものとみなすことができる。そのため、不安静な状態で測定された生体データを容易に排除できる。
(実施の形態2)
実施の形態1では、測定装置100は、測定対象である生体データを用いてユーザが安静な状態であるか否かを判断した。例えば、生体データが脈拍などの場合、ユーザの安静時には、その測定値が「90」、「89」、「91」、・・・と所定の誤差内で一定になる。したがって、測定値に量子化を施して誤差を排除することにより測定値は一定値となるので、測定装置100は測定対象である脈拍の測定値を用いてユーザが安静な状態であるか否かを判断することができる。例えば、測定値89、測定値90、及び測定値91を量子化して測定値90とすることで、誤差が排除される。
ここで、例えば、生体データが血圧などの場合、測定値は下の値が「70」、上の値が「120」と、上の値と下の値との両方の値が必要である。この場合、上の値と下の値とのいずれか一方ではなく、上の値と下の値とのそれぞれについて、安静な状態であるか否かを判断する必要がある。
そこで、実施の形態2では、測定対象が血圧のような生体データである場合に、脈拍のように、一つの測定値から安静状態を判断できる生体データの測定を、測定対象の生体データの測定とは別に並行して行う。これにより、測定装置はユーザが安静な状態であるか否かを検知する。本実施の形態によれば、測定対象である生体データを用いてユーザが安静な状態であるか否かを判断することが複雑な場合において、測定装置は別の単一の生体データからユーザが安静な状態であることを示す署名を生成することができる。なお、生体データが血圧の場合のほか、心電図のようにその測定値が一定値とならないタイプの生体データの場合にも、本実施の形態は有効である。
本発明の実施の形態2に係る測定装置及び測定装置の制御方法が用いられる生体データ管理システムは、図2に示した実施の形態1における生体データ管理システムの構成において、測定装置100及びサーバ200の代わりに、測定装置100B及びサーバ200Bをそれぞれ用いたものである。
図14は、本発明の実施の形態2に係る測定装置100Bの内部構成を示すブロック図である。本実施の形態において、測定装置100Bは2つの生体データを並行して測定する。具体的には、測定装置100Bは、ユーザが安静な状態であるか否かを判断するための生体データ、及び測定対象の生体データの2つの生体データを測定する。以下では、ユーザが安静な状態であるか否かを判断するための生体データを「第1の生体データ」とし、測定対象である生体データを「第2の生体データ」とする。なお、実施の形態2では、実施の形態1と異なり、あらかじめ第1の測定値の安静時のデータを第1の参照値として設定しておいて(第1の参照値を「D」とする)、この設定した値に、所定回数の測定が定常化されることにより、安静であることを判定する。
測定装置100Bは、実施の形態1で述べた秘密分散法を用いて、第1の測定値よりユーザが安静な状態であることを検知し、安静な状態であることを示す第1の署名を生成する。そして、測定装置100Bは、第1の署名を第2の署名生成鍵として用いて第2の測定値に署名し、第2の生体データが安静な状態で測定されたことを示す第2の署名を生成する。この後、測定装置100Bは、第2の測定値及び第2の署名をサーバ200Bに送信する。
以下、測定装置100Bを構成する各ブロックについて述べる。
測定装置100Bは、量子化部102と、分散署名鍵生成部103と、分散署名生成部104と、分散署名格納部105と、署名合成部106と、定常状態検証部107と、ID格納部108と、測定関連情報格納部109と、送信部110と、制御部111と、受信部112と、第1の測定部113と、第2の測定部120と、第1の参照値格納部121と、第2の署名生成部122とを含む。
図14に示す量子化部102から測定関連情報格納部109までの各ブロックは、図3で述べた各ブロックと同一の機能を有するので、ここでは説明を省略する。
第1の測定部113は、ユーザが安静な状態であるか否かを判断するための第1の生体データを測定する。第1の生体データは、例えば脈拍など、生体データの測定値からユーザの安静状態を検知できる生体データが対象となる。
第1の参照値格納部121は、第1の測定値が安静な状態で測定されているか否かを判断するための基準となる第1の参照値を格納する。この第1の参照値には、例えば、過去にユーザの安静時に測定された第1の生体データの測定値が設定される。
分散署名生成部104は、測定タイミング「i」ごとに、量子化部102から出力される生体データの測定値「m(i)」を分散署名鍵生成部103から出力される分散署名鍵「d(i)」で署名することにより、分散署名「M(i)」を生成する。また、本実施の形態では、分散署名生成部104は、予め初期設定時に分散署名鍵「d(0)」を用いて第1の参照値「D」に署名し、分散署名「M(−1)」(「M(−1)」=Dd(0) modn)を生成して分散署名格納部105に格納する。
署名合成部106は、第1の参照値「D」の分散署名「M(−1)」(M(−1)=Dd(0)) modn)を基準として、この基準となる分散署名「M(−1)」を含めて前記所定回数と等しいk個の分散署名を合成する。即ち、測定タイミングiで分散署名M(i)が生成されると、署名合成部106は、基準となる分散署名「M(−1)」に加え、分散署名「M(i)」までのk−1個の分散署名「M(i)」、「M(i−1)」、・・・「M(i−(k−2))」のk個の分散署名を合成する。
第2の測定部120は、測定対象である第2の生体データを測定する。本実施の形態では、この第2の生体データの測定値がサーバ200Bに送信される。
第2の署名生成部122は、署名合成部106においてユーザが安静な状態であることを示す第1の署名が生成されると、第1の署名を第2の署名生成鍵として用いて第2の測定値に署名し、第2の生体データが安静な状態で測定されたことを示す第2の署名を生成する。
送信部110は、ユーザが安静な状態であることを示す第1の署名が生成された時に測定された第2の測定値、前記第2の署名、測定装置100BのID、及び前記測定関連情報を含む所定フォーマットのデータを生成し、サーバ200Bに送信する。
図15は、本発明の実施の形態2に係るサーバ200Bの内部構成を示すブロック図である。
サーバ200Bは、測定開始指示部201と、送信部202と、受信部203と、測定値格納部207と、第2の署名検証鍵格納部220と、第2の署名検証鍵取得部221と、第2の署名確認部222とを含む。
図15に示す測定開始指示部201及び送信部202の各ブロックは、図4で述べた各ブロックと同一の機能を有するので、ここでは説明を省略する。
受信部203は、測定装置100Bより、第2の測定値、第2の署名、ID、及び測定関連情報を含む所定フォーマットのデータを受信する。
第2の署名検証鍵格納部220は、測定装置100Bから収集した第2の署名を検証するための第2の署名検証鍵を、測定装置100BのIDと対応付けて格納する。第2の署名検証鍵は、予め初期設定時に第2の署名検証鍵格納部220に設定される。この第2の署名検証鍵格納部220の詳細については図16を用いて後述する。
第2の署名検証鍵取得部221は、測定装置100Bから収集したIDに対応する第2の署名検証鍵を第2の署名検証鍵格納部220より取得し、第2の署名確認部222に出力する。
第2の署名確認部222は、第2の署名検証鍵格納部220より取得した第2の署名検証鍵を用いて、測定装置100Bから収集した第2の署名を検証する。具体的には、第2の署名確認部222は、第2の署名が所定の検証式を満たす場合に、第2の署名が正しい署名であると判断する。
測定値格納部207は、第2の測定値と測定関連情報とを、IDと対応付けて格納する。なお、これらの情報は、第2の署名確認部222において検証された第2の署名が正しい署名である場合、第2の署名確認部222により測定値格納部207に書き込まれる。この測定値格納部207の詳細については図17を用いて後述する。
図16は、図15に示す第2の署名検証鍵格納部220のメモリ構成図である。図16において、第2の署名検証鍵格納部220には、項目「ID」と項目「第2の署名検証鍵」とが設けられ、第2の署名検証鍵格納部220は、測定装置100BのIDと第2の署名検証鍵とを対応付けて管理している。項目「ID」には、測定装置100Bを識別するためのIDが格納される。項目「第2の署名検証鍵」には、測定装置100Bから送信される第2の署名を検証するための第2の署名検証鍵が格納される。
例えば、図16の場合、第2の署名検証鍵格納部220は、IDが「12345」の測定装置100B及びIDが「12346」の測定装置100Bの各々について、対応する第2の署名検証鍵を格納している。IDが「12345」の測定装置100Bには、第2の署名検証鍵「54321」が対応付けられ、IDが「12346」の測定装置100Bには、第2の署名検証鍵「43210」が対応付けられている。
図17は、図15に示す測定値格納部207のメモリ構成図である。ここでは、測定対象である第2の生体データを、例えば血圧とした場合について説明する。図17において、測定値格納部207には、項目「ID」、項目「測定日時」及び項目「第2の測定値:血圧(mmHG)」が設けられ、測定値格納部207は、測定装置100BのIDと、測定日時及び第2の生体データである血圧の測定値とを対応付けて管理している。項目「ID」には、測定装置100Bを識別するためのIDが格納される。項目「測定日時」には、血圧の測定日時が記録される。項目「第2の測定値:血圧(mmHG)」には、第2の生体データである血圧の測定値が記録される。
例えば、図17の場合、測定値格納部207は、IDが「12345」の測定装置100Bで行われた2回の測定に関して、その測定日時及び血圧の測定値を記録している。具体的には、IDが「12345」の測定装置100Bは、「2008年12月1日の午前9時」に血圧の測定を行い、そのときの測定値は「上の値が125、下の値が80」であったことを示している。同様に、IDが「12345」の測定装置100Bは、「2008年12月1日の午後12時5分」に血圧の測定を行い、そのときの測定値は、「上の値が135、下の値が75」であったことを示している。
以下、以上のように構成された測定装置100B及び測定装置100Bの制御方法について、図面を用いてその動作を説明する。
図18は、本発明の実施の形態2に係る測定装置100B及び測定装置100Bの制御方法が用いられる生体データ管理システムにおいて、初期設定時の測定装置100B、サーバ200B及び鍵発行サーバ600の動作を示すシーケンス図である。この初期設定では、測定装置100BにID、第1の参照値、第1の署名生成鍵、及び第1の署名検証鍵が設定され、サーバ200BにID及び第2の署名検証鍵が設定される。なお、第1の署名生成鍵及び第1の署名検証鍵は、第1の生体データの測定値から安静な状態であることを示す第1の署名の生成及び検証に用いられ、それぞれ実施の形態1で述べた署名生成鍵「d」及び署名検証鍵「e」に対応する。
ここで、第1の参照値は、第1の測定値が安静な状態で測定されているか否かを判断するための基準となる値である。本実施の形態では、第1の参照値は、図14に示す第1の参照値格納部121に設定されている。第1の参照値として、例えば、過去にユーザの安静時に測定された第1の生体データの測定値などが用いられる。
事前に、鍵発行サーバ600は、測定装置100BのIDに対応する第1の署名生成鍵「d」及び第1の署名検証鍵「e」の対を生成する(S711)。次に、鍵発行サーバ600は、第1の署名生成鍵「d」を用いて第1の参照値「D」に署名し、署名「Dd modn」を生成する。鍵発行サーバ600はこの署名「Dd modn」を第2の署名生成鍵として用いる(S712)。そして、鍵発行サーバ600は、第2の署名生成鍵に対応する第2の署名検証鍵を生成する(S713)。本実施の形態によると、測定装置100Bは、第1の署名検証鍵を用いて第1の参照値に署名し、この署名を第2の署名検証鍵とする。
次に、鍵発行サーバ600は、測定装置100BにID、第1の参照値「D」、第1の署名生成鍵「d」及び第1の署名検証鍵「e」を配布し(S714)、サーバ200BにID及び第2の署名検証鍵を配布する(S715)。
測定装置100Bは、鍵発行サーバ600よりID、第1の参照値「D」、第1の署名生成鍵「d」及び第1の署名検証鍵「e」を受けとると、IDをID格納部108に、第1の参照値「D」を第1の参照値格納部121に、第1の署名生成鍵「d」を分散署名鍵生成部103に、第1の署名検証鍵「e」を定常状態検証部107に各々設定する。また、測定装置100Bは、予め分散署名鍵生成部103において分散署名鍵「d(0)」を生成し、これを用いて第1の参照値「D」に署名して分散署名「M(−1)」(M(−1)=Dd(0) modn)を生成する。そして、この分散署名「M(−1)」(M(−1)=Dd(0) modn)を分散署名格納部105に設定する(S716)。
このように、本実施の形態において、第1の参照値は、鍵発行サーバ600から測定装置100Bに配布され、図14に示す第1の参照値格納部121に設定される。そして、測定装置100Bは、予め第1の参照値に対応する分散署名を生成し、この分散署名を図14に示す分散署名格納部105に初期値として設定する。
サーバ200Bは、鍵発行サーバ600よりID及び第2の署名検証鍵を受けとると、IDと第2の署名検証鍵とを対応付けて第2の署名検証鍵格納部220に設定する(S717)。例えば、IDの値が「12345」で、第2の署名検証鍵の値が「54321」の場合、サーバ200Bは、図16で示した第2の署名検証鍵格納部220の項目「ID」にIDの値「12345」を設定し、項目「第2の署名検証鍵」に第2の署名検証鍵の値「54321」を設定する。
図19は、本発明の実施の形態2に係る測定装置100B及び測定装置100Bの制御方法が用いられる生体データ管理システムにおいて、第1の生体データ及び第2の生体データ測定時の測定装置100Bとサーバ200Bの動作を示すシーケンス図である。
まず、サーバ200Bは、ネットワーク300を介して測定開始の指示を測定装置100Bに送信する(S501)。
測定装置100Bは、測定開始の指示に従って、ユーザが安静な状態であるか否かを判断するための第1の生体データ、及び測定対象である第2の生体データを測定する。測定装置100Bは、第1の測定値よりユーザが安静な状態であることを検知し、ユーザが安静な状態であることを示す第1の署名を生成する。本実施の形態では、この第1の署名を第2の署名生成鍵として用いる。そして、測定装置100Bは、第2の署名生成鍵を用いて第2の測定値に署名し、第2の生体データが安静な状態で測定されたことを示す第2の署名を生成する。この後、測定装置100Bは、ユーザが安静な状態であることを示す第1の署名が生成された時に測定された第2の測定値、第2の署名、測定装置100BのID、及び測定関連情報を含む所定フォーマットのデータを生成し、サーバ200Bに送信する(S502)。このS502の処理の詳細については、図20を用いて後述する。
サーバ200Bは、第2の測定値、第2の署名、ID及び測定関連情報を含む所定フォーマットのデータを受信すると、第2の署名検証鍵を用いて第2の署名が正しい署名であるか否かを検証する。第2の署名が正しい署名である場合、サーバ200Bは第2の測定値及び測定関連情報を測定値格納部207に格納する(S503)。このS503の処理の詳細については、図22を用いて後述する。
本態様によると、測定対象である第2の生体データが、例えば、上の値と下の値とからなる血圧データのように複数のデータからなるタイプの生体データであっても、脈拍のようにその測定値から安静状態を判断できる生体データの測定を、測定対象である生体データの測定とは別に並行して行う。これにより、測定装置100Bは簡易な構成でユーザが安静な状態であることを判断することができる。
また、一定の値とならない心電図データのように、測定対象である第2の生体データが安静な状態で測定したか否かの判断に用いるには相応しくないタイプの生体データであっても、第1の生体データを用いて安静な状態で測定したか否かを判断できる。このため、第2の生体データが安静な状態で測定されたものであることを判断できる。
図20は、図19のS502の動作を示すフローチャートである。本処理において、測定装置100Bは、その測定値から安静状態を判断できる第1の生体データの測定を、実際の測定対象である第2の生体データとは別に並行して行う。そして、測定装置100Bは、上述の秘密分散法を用いて、第1の測定値よりユーザが安静な状態であることを示す第1の署名を生成する。ここでは、前記所定回数であるkを「k=3」として説明する。測定装置100Bは、第1の署名を用いて、第2の測定値が安静な状態で測定されたことを示す第2の署名を生成する。なお、以下の説明では、量子化された後の第1の測定値をm1(i)、第2の測定値をm2(i)として説明する。
ここで、本実施の形態では、上述の秘密分散法を用いて第1の測定値よりユーザが安静な状態であることを検知する際、予め分散署名鍵「d(0)」を用いて第1の参照値「D」に署名し、分散署名「M(−1)」(M(−1)=Dd(0) modn)を生成する。そして、分散署名「M(−1)」を基準の分散署名として、この基準の分散署名「M(−1)」を含めて前記所定回数である3個の分散署名を合成する。即ち、測定タイミングiで分散署名M(i)が生成されると、署名合成部106は、前記基準となる分散署名「M(−1)」に加え、分散署名「M(i)」までの2個の分散署名「M(i)」及び「M(i−1)」の3つの分散署名を合成する。
以下、本処理について説明する。
事前に、制御部111は、初期設定として変数iに「1」を設定して「i=1」とする。このとき、分散署名生成部104は、図19のS716で述べたように、予め分散署名鍵「d(0)」を用いて前記第1の参照値「D」に署名し、分散署名「M(−1)」(M(−1)=Dd(0) modn)を生成する。また、測定開始後に分散署名「M(1)」(「M(1)=m1(1)d(1) modn」)が生成された際、分散署名「M(0)」に値が存在しないので、測定装置100Bは3個の分散署名「M(−1)」、「M(0)」、及び「M(1)」を合成できない。このような状況を回避するために、この初期設定時の分散署名「M(0)」を「M(0)=0」とする(S510)。この初期設定を行った後、測定装置100Bは、第1の測定値からユーザが安静な状態であることを検知し、第2の測定値が安静な状態で測定されたことを示す第2の署名を生成する処理を行う。
まず、第1の測定部113及び第2の測定部120は、i回目の第1の生体データ及び第2の生体データをそれぞれ測定する(S511)。さらに、量子化部102は、第1の測定値を量子化する(S512)。
次に、分散署名鍵生成部103は、i番目の分散署名鍵d(i)を生成する(S513)。そして、分散署名生成部104は、量子化された第1の測定値m1(i)及び分散署名鍵d(i)を用いて分散署名M(i)を生成し、分散署名格納部105に格納する(S514)。
次に、署名合成部106は、分散署名「M(−1)」を基準として、この基準の分散署名「M(−1)」を含めて前記所定回数である3個の分散署名「M(−1)」、「M(i)」、及び「M(i−1)」を合成し、署名S1(i)を生成する(S515)。そして、定常状態検証部107は、第1の署名検証鍵「e」を用いて署名S1(i)を検証し(S516)、署名S1(i)が所定の検証式(式(5))を満たすか否か判断する(S517)。S517において、署名S(i)が所定の検証式(式(5))を満たさないと判断された場合、測定値m1(i)及びm1(i−1)は第1の参照値「D」と同一の値でなかったことを示す。この場合(S517でNo)、制御部111は変数iに1を加算し(S518)、測定装置100Bは、再度、生体データの測定を行う(S518→S511)。
一方、S517において、署名S1(i)が所定の検証式(式(5))を満たすと判断された場合、第1の測定値m1(i)及びm1(i−1)は第1の参照値「D」と同一の値であることを示すため、ユーザは安静な状態であると判断することができる。署名合成部106は、このときの署名S1(i)をユーザが安静な状態であることを示す第1の署名として第2の署名生成部122に出力する(S517でYes、S519)。
上述のS515〜S518の処理の詳細については、図21を用いて後述する。
次に、第2の署名生成部122は、第1の署名S1(i)を第2の署名生成鍵として用いる。そして、第2の署名生成部122は、第2の署名生成鍵を用いて第2の測定値m2(i)に署名し、第2の測定値m2(i)が安静な状態で測定されたことを示す第2の署名S2(i)を生成する(S520)。
その後、送信部110は、第2の測定値m2(i)、第2の署名S2(i)、測定装置100BのID、及び測定関連情報を含む所定フォーマットのデータを生成し、サーバ200Bに送信する(S521)。
ここで、図21を用いて、S515〜S518における定常状態の検証方法を具体的に説明する。図21は、各測定タイミングiでの署名の合成方法及び署名の検証方法を示す概念図である。なお、ここで述べる第1の測定値は、量子化された測定値とする。
本実施の形態では、予め初期設定時に、分散署名鍵「d(0)」を用いて第1の参照値「D」に署名し、分散署名「M(−1)」(M(−1)=Dd(0) modn)を設定する。そして、測定タイミングiにおいて、第1の測定値m1(i)及び分散署名鍵「d(i)」から分散署名「M(i)」(M(i)=m1(i)d(i) modn)が生成されると、署名合成部106は、分散署名「M(−1)」を基準の分散署名として、この基準の分散署名「M(−1)」を含めて分散署名「M(i)」及び分散署名「M(i−1)」の3個の分散署名を合成する。
まず、測定装置100Bはi=1において1回目の測定を実施する。このとき得られた第1の測定値m1(1)をAとすると、分散署名「M(1)」は「Ad(1) modn」となる。このとき、S515において分散署名の合成は、基準となる分散署名「M(−1)=Dd(0) modn」を含め、分散署名「M(1)=Ad(1) modn」、及び分散署名「M(0)=0」の3つの分散署名を用いて行われる。この場合、基準である第1の参照値「D」と、初期値「0」及び1回目の測定で得られた第1の測定値「A」とを時系列で比較すると、第1の参照値「D」と、2つの測定値「0」、「A」とは同一の値ではない。そのため、分散署名の合成時に底の値が一致せず、S517において上記検証式(式(5))は成立しない。したがって、測定装置100Bは、変数iに1を加算してi=2と設定し、再度、生体データの測定を行う(S518→S511)。
次に、測定装置100Bはi=2において2回目の測定を実施する。このとき得られた第1の測定値m1(2)をBとすると、分散署名「M(2)」は「Bd(2) modn」となる。このとき、S515において分散署名の合成は、基準となる分散署名「M(−1)=Dd(0) modn」を含め、分散署名「M(2)=Bd(2) modn」、及び分散署名「M(1)=Ad(1) modn」の3つの分散署名を用いて行われる。この場合、基準である第1の参照値「D」と、1回目の測定で得られた第1の測定値「A」及び2回目の測定で得られた第1の測定値「B」とを時系列で比較すると、第1の参照値「D」と、2つの測定値「A」、「B」とは同一の値ではない。そのため、分散署名の合成時に底の値が一致せず、S517において上記検証式(式(5))は成立しない。したがって、測定装置100Bは、変数iに1を加算してi=3と設定し、再度、生体データの測定を行う(S518→S511)。
次に、測定装置100Bはi=3において3回目の測定を実施する。このとき得られた第1の測定値m1(3)をCとすると、分散署名「M(3)」は「Cd(3) modn」となる。このとき、S515において分散署名の合成は、基準となる分散署名「M(−1)=Dd(0) modn」を含め、分散署名「M(3)=Cd(3) modn」、及び分散署名「M(2)=Bd(2) modn」の3つの分散署名を用いて行われる。この場合、基準である第1の参照値「D」と、2回目の測定で得られた第1の測定値「B」及び3回目の測定で得られた第1の測定値「C」とを時系列で比較すると、第1の参照値「D」と、2つの測定値「B」、「C」とは同一の値ではない。そのため、分散署名の合成時に底の値が一致せず、S517において上記検証式(式(5))は成立しない。したがって、測定装置100Bは、変数iに1を加算してi=4と設定し、再度、生体データの測定を行う(S518→S511)。
次に、測定装置100Bはi=4において4回目の測定を実施する。このとき得られた第1の測定値m1(4)をDとすると、分散署名「M(4)」は「Dd(4) modn」となる。このとき、S515において分散署名の合成は、基準となる分散署名「M(−1)=Dd(0) modn」を含め、分散署名「M(4)=Dd(4) modn」、及び分散署名「M(3)=Cd(3) modn」の3つの分散署名を用いて行われる。この場合、基準である第1の参照値「D」と、3回目の測定で得られた第1の測定値「C」及び4回目の測定で得られた第1の測定値「D」とを時系列で比較すると、第1の参照値「D」と、2つの測定値「C」、「D」とは同一の値ではない。そのため、分散署名の合成時に底の値が一致せず、S517において上記検証式(式(5))は成立しない。したがって、測定装置100Bは、変数iに1を加算してi=5と設定し、再度、生体データの測定を行う(S518→S511)。
次に、測定装置100Bはi=5において5回目の測定を実施する。このとき得られた第1の測定値m1(5)をDとすると、分散署名「M(5)」は「Dd(5) modn」となる。このとき、S515において分散署名の合成は、基準となる分散署名「M(−1)=Dd(0) modn」を含め、分散署名「M(5)=Dd(5) modn」、及び分散署名「M(4)=Dd(4) modn」の3つの分散署名を用いて行われる。この場合、基準である第1の参照値「D」と、4回目の測定で得られた第1の測定値「D」及び5回目の測定で得られた第1の測定値「D」とを時系列で比較すると、第1の参照値「D」と、2つの測定値「D」とが一致する。そのため、分散署名の合成時に底の値が一致し、かつ、指数において署名生成鍵dが復元されるので、S517において検証式(式(5))が成立する。したがって、この場合、測定装置100Bは計測を終了し、このときの署名「Dd modn」を第1の署名として第2の署名生成部122に送信する。
本態様によると、測定対象である生体データが、例えば、上の値と下の値とからなる血圧データのように複数のデータからなるタイプの生体データである場合、脈拍のようにその測定値から安静状態を判断できる生体データの測定を、測定対象である生体データの測定とは別に並行して行う。これにより、測定装置100Bは簡易な構成でユーザが安静な状態であるか否かを判断することができる。
また、一定の値とならない心電図データのように、実際に測定する第2の生体データが安静な状態で測定したか否かの判断に用いるには相応しくないタイプの生体データであっても、第1の生体データを用いて安静な状態で測定したか否かを判断できるので、第2の生体データが安静な状態で測定されたものであることを判断できる。
さらに、第1の生体データを所定回数測定して得られる分散署名が前記基準の分散署名と一致しない場合には、復元された署名が正しい署名であると判断されない。そのため、医療機関側では、測定の対象である第2の生体データの測定値が安静な状態で測定されたことを判断できると同時に、第2の生体データが、第1の生体データのユーザと同一のユーザであることを判断できる。
図22は、図19のS503の動作を示すフローチャートである。この処理では、サーバ200Bは、測定装置100Bから第2の測定値及び第2の署名を受信し、受信した第2の署名を検証する。そして、第2の署名が正しい署名である場合、サーバ200Bは第2の測定値を測定値格納部207に格納する。
まず、受信部203は、第2の測定値、第2の署名、ID、及び測定関連情報を含む所定フォーマットのデータを受信する(S541)。
次に、第2の署名検証鍵取得部221は、受信したIDに対応する第2の署名検証鍵を第2の署名検証鍵格納部220より取得する(S542)。例えば、測定装置100Bから受信したIDが「12345」であれば、第2の署名検証鍵取得部221は図16で示した第2の署名検証鍵格納部220より第2の署名検証鍵「54321」を取得する。この第2の署名検証鍵は、図18で述べた初期設定時に鍵発行サーバ600において生成され、第2の署名検証鍵格納部220に設定される。
次に、第2の署名検証鍵取得部221は、IDに対応する第2の署名検証鍵を取得できたか否かを判断する(S543)。第2の署名検証鍵を取得できなかった場合(S543でNo)、サーバ200Bは所定のエラー処理を行う(S547)。例えば、サーバ200Bは、第2の署名検証鍵を取得できなかった旨を表示部に表示するようにしても良い。
一方、IDに対応する第2の署名検証鍵を取得できた場合(S543でYes)、第2の署名確認部222は、第2の署名検証鍵を図13の署名検証鍵eとして用いて第2の署名の検証を行い(S544)、第2の署名をS(i)として、図13と同様の検証式(式(5))を満たすか否か確認する(S545)。第2の署名が所定の検証式を満たさない場合(S545でNo)、サーバ200Bはエラー処理を行う(S547)。例えば、サーバ200Bは、第2の署名が所定の検証式を満たさない旨を表示部に表示するようにしても良い。
第2の署名が検証式(式(5))を満たす場合(S545でYes)、署名確認部206は、第2の署名が正しい署名であると判断して、IDごとに第2の測定値及び測定関連情報を測定値格納部207に記録する(S546)。例えば、図17では、測定対象である第2の生体データが血圧の場合を例に示している。サーバ200Bは、IDが「12345」の測定装置100Bで行われた2回の血圧の測定結果に関して、血圧の測定値及び測定日時を各々IDと対応付けて測定値格納部207に記録している。
本態様によると、サーバ200Bは、予め、ユーザが安静な状態のときに測定された第1の参照値に基づいて生成された第2の署名検証鍵を所持している。そして、サーバ200Bは、測定装置100Bから第2の測定値及び第2の署名を受信すると、第2の署名を第2の署名検証鍵を用いて検証する。
これにより、サーバ200Bは、第1の参照値を元に生成された第2の署名検証鍵を用いて第2の署名を検証するので、第2の測定値が安静な状態で測定されたか否かを判断することができる。そのため、測定対象の生体データが、複数のデータからなるタイプの生体データ、又は安静な状態で測定したか否かの判断に用いるには相応しくないタイプの生体データであっても、サーバ200Bは、生体データの測定値が安静な状態で測定されたと判断することができる。
(実施の形態3)
実施の形態2では、測定装置100Bは、測定対象の生体データが、複数のデータからなるタイプの生体データ、又は安静な状態で測定したか否かの判断に用いるには相応しくないタイプの生体データである場合に、ユーザが安静な状態であるか否かを判断するための生体データ(前記第1の生体データ)及び測定対象の生体データ(前記第2の生体データ)の2つの生体データを並行して測定した。そして、測定装置100Bは、第1の生体データからユーザが安静な状態であることを示す第1の署名を生成し、第1の署名を第2の署名生成鍵として用いて第2の測定値が安静な状態で測定されたことを示す第2の署名を生成した。これにより、サーバ200B側ではユーザが安静な状態で測定を行ったか否かを判断することができた。
一方、実施の形態3では、実施の形態2と同様に、測定装置は、まず、ユーザが安静な状態であるか否かを判断するための生体データ(前記第1の生体データ)及び測定対象の生体データ(前記第2の生体データ)の2つの生体データを並行して測定する。さらに、測定装置は、第1の測定値よりユーザが安静な状態であることを示す第1の署名を生成し、これを暗号鍵として用いて測定対象である第2の測定値を暗号化する。これにより、測定対象の生体データが安静な状態で測定されたことを判断できるとともに、外部のサーバ200に送信する生体データの秘匿性を保証して、ユーザのプライバシーを保護することができるものである。
本発明の実施の形態3に係る測定装置及び測定装置の制御方法が用いられる生体データ管理システムは、図2に示した実施の形態1における生体データ管理システムの構成において、測定装置100及びサーバ200の代わりに、測定装置100C及びサーバ200Cをそれぞれ用いたものである。
図23は、本発明の実施の形態3に係る測定装置100Cの内部構成を示すブロック図である。
測定装置100Cは、量子化部102と、分散署名鍵生成部103と、分散署名生成部104と、分散署名格納部105と、署名合成部106と、定常状態検証部107と、ID格納部108と、測定関連情報格納部109と、送信部110と、制御部111と、受信部112と、第1の測定部113と、第2の測定部120と、第1の参照値格納部121と、第2の暗号化部130とを含む。
測定装置100Cは、図14に示した測定装置100Bの構成のうち、第2の署名生成部122に代えて第2の暗号化部130を配置したものである。したがって、図23の第2の暗号化部130を除いた他のブロックについては、図14で述べた各ブロックと同一の機能を有するため、ここでは説明を省略する。
第2の暗号化部130は、署名合成部106においてユーザが安静な状態であることを示す第1の署名が生成されると、第1の署名を暗号鍵として用いて第2の測定値を暗号化する。
送信部110は、暗号化された第2の測定値、測定装置100CのID、及び前記測定関連情報を含む所定フォーマットのデータを生成し、サーバ200Cに送信する。
図24は、本発明の一実施の形態であるサーバ200Cの内部構成を示すブロック図である。
サーバ200Cは、測定開始指示部201と、送信部202と、受信部203と、測定値格納部207と、第2の復号鍵格納部230と、第2の復号鍵取得部231と、第2の復号部232とを含む。
なお、図24に示す測定開始指示部201及び送信部202の各ブロックは、図15で述べた各ブロックと同一の機能を有するので、ここでは説明を省略する。
受信部203は、測定装置100Cより、暗号化された第2の測定値、ID、及び測定関連情報を含む所定フォーマットのデータを受信する。
第2の復号鍵格納部230は、暗号化された第2の署名を検証するための第2の復号鍵を、測定装置100CのIDと対応付けて格納する。第2の復号鍵は、予め初期設定時に第2の復号鍵格納部230に設定される。この第2の復号鍵格納部230の詳細については図25を用いて後述する。
第2の復号鍵取得部231は、測定装置100Cから収集したIDに対応する第2の復号鍵を第2の復号鍵格納部230より取得し、第2の復号部232に出力する。
第2の復号部232は、第2の復号鍵取得部231において取得した第2の復号鍵を用いて、暗号化された第2の測定値を復号する。
測定値格納部207は、復号された第2の測定値と測定関連情報とを、IDと対応付けて格納する。この測定値格納部207の詳細については図26を用いて後述する。
図25は、図24に示す第2の復号鍵格納部230のメモリ構成図である。図25において、第2の復号鍵格納部230には、項目「ID」と項目「第2の復号鍵」とが設けられ、第2の復号鍵格納部230は、測定装置100CのIDと第2の復号鍵とを対応付けて管理している。項目「ID」には、測定装置100Cを識別するためのIDが格納される。項目「第2の復号鍵」には、暗号化された第2の測定値を復号するための第2の復号鍵が格納される。
例えば、図25の場合、第2の復号鍵格納部230は、IDが「12345」の測定装置100C及びIDが「12346」の測定装置100Cの各々について、対応する第2の復号鍵を格納している。IDが「12345」の測定装置100Cには、第2の復号鍵「5555」が対応付けられ、IDが「12346」の測定装置100Cには、第2の復号鍵「3332」が対応付けられている。
図26は、図24に示す測定値格納部207のメモリ構成図である。ここでは、測定対象である第2の生体データを、例えば心電図データとした場合について説明する。図26において、測定値格納部207には、項目「ID」、項目「測定日時」及び項目「第2の測定値:心電図ファイル(ファイル名)」が設けられ、測定値格納部207は、測定装置100CのIDと、測定日時と、第2の生体データである心電図のファイル名とを対応付けて管理している。項目「ID」には、測定装置100Cを識別するためのIDが格納される。項目「測定日時」には、血圧の測定日時が記録される。項目「第2の測定値:心電図ファイル(ファイル名)」には、第2の生体データである心電図データのファイル名が記録される。
例えば、図26の場合、測定値格納部207は、IDが「12345」の測定装置100Cで行われた2回の測定に関して、その測定日時及び心電図データのファイル名を記録している。具体的には、IDが「12345」の測定装置100Cは、「2008年12月1日の午前9時」に心電図の測定を行い、この心電図データのファイル名が「¥12345¥081201¥0900」であることを示している。同様に、IDが「12345」の測定装置100Cは、「2008年12月1日の午後12時5分」に心電図の測定を行い、この心電図データのファイル名が、「¥12345¥081201¥1205」であることを示している。
以下、以上のように構成された測定装置100C及び測定装置100Cの制御方法について、図面を用いてその動作を説明する。
図27は、本発明の実施の形態3に係る測定装置100C及び測定装置100Cの制御方法が用いられる生体データ管理システムにおいて、初期設定時の測定装置100C、サーバ200C及び鍵発行サーバ600の動作を示すシーケンス図である。この初期設定では、測定装置100Cには、図18と同様に測定装置100CのID、第1の参照値、第1の署名生成鍵、第1の署名検証鍵が設定される。一方、サーバ200Cには、前記ID及び第2の復号鍵が設定される。
事前に、鍵発行サーバ600は、測定装置100CのIDに対応する第1の署名生成鍵「d」及び第1の署名検証鍵「e」の対を生成する(S721)。さらに、鍵発行サーバ600は、第1の署名生成鍵「d」を用いて第1の参照値「D」に署名し、署名「Dd modn」を生成する。鍵発行サーバ600はこの署名「Dd modn」を第2の復号鍵として用いる(S722)。
次に、鍵発行サーバ600は、測定装置100CにID、第1の参照値「D」、第1の署名生成鍵「d」及び第1の署名検証鍵「e」を配布し(S723)、サーバ200CにID及び第2の復号鍵を配布する(S724)。
測定装置100Cは、鍵発行サーバ600よりID、第1の参照値「D」、第1の署名生成鍵「d」及び第1の署名検証鍵「e」を受けとると、IDをID格納部108に、第1の参照値「D」を第1の参照値格納部121に、第1の署名生成鍵「d」を分散署名鍵生成部103に、第1の署名検証鍵「e」を定常状態検証部107に各々設定する。また、測定装置100Cは、予め分散署名鍵生成部103において分散署名鍵「d(0)」を生成し、これを用いて第1の参照値「D」に署名して分散署名「M(−1)」(M(−1)=Dd(0) modn)を生成する。そして、この分散署名「M(−1)」(M(−1)=Dd(0) modn)を分散署名格納部105に設定する(S725)。
サーバ200Cは、鍵発行サーバ600よりID及び第2の復号鍵を受けとると、IDと第2の復号鍵とを対応付けて第2の復号鍵格納部230に設定する(S726)。例えば、IDの値が「12345」で、第2の復号鍵の値が「5555」の場合、図25で示した第2の復号鍵格納部230の項目「ID」にIDの値「12345」を設定し、項目「第2の復号鍵」に第2の復号鍵の値「5555」を設定する。
図28は、本発明の実施の形態3に係る測定装置100C及び測定装置100Cの制御方法が用いられる生体データ管理システムにおいて、第1の生体データ及び第2の生体データ測定時の測定装置100Cとサーバ200Cの動作を示すシーケンス図である。
まず、サーバ200Cは、ネットワーク300を介して測定開始の指示を測定装置100Cに送信する(S601)。
測定装置100Cは、測定開始の指示に従って、ユーザが安静な状態であるか否かを判断するための第1の生体データ、及び測定対象である第2の生体データを測定する。測定装置100Cは、第1の測定値よりユーザが安静な状態であることを検知し、ユーザが安静な状態であることを示す第1の署名を生成する。さらに、測定装置100Cは、第1の署名を暗号鍵として用い、第2の測定値を暗号化する。この後、測定装置100Cは、暗号化された第2の測定値、測定装置100CのID、及び測定関連情報を含む所定フォーマットのデータを生成し、サーバ200Cに送信する(S602)。このS602の処理の詳細については、図29を用いて後述する。
サーバ200Cは、暗号化された第2の測定値、ID及び測定関連情報を含む所定フォーマットのデータを受信すると、第2の復号鍵を用いて暗号化された第2の測定値を復号する。さらに、サーバ200Cは復号された第2の測定値及び測定関連情報を測定値格納部207に格納する(S603)。このS603の処理の詳細については、図30を用いて後述する。
図29は、図28のS602の動作を示すフローチャートである。本処理において、測定装置100Cは、実施の形態2(図20)と同様に、まず、ユーザが安静な状態であるか否かを判断するための生体データである第1の生体データ及び測定対象の生体データである第2の生体データの2つの生体データを並行して測定する。さらに、測定装置100Cは、第1の測定値よりユーザが安静な状態であることを示す第1の署名を生成し、これを暗号鍵として用いて測定対象である第2の測定値を暗号化する。
なお、本処理において、図29のS510〜S519までの各処理は、図20で述べたS510〜S510までの処理と同じ処理を行うため、ここでは詳細な説明を省略する。
事前に、制御部111は、図20と同様に初期設定を行う(S510)。この初期設定を行った後、まず、第1の測定部113及び第2の測定部120は、i回目の第1の生体データ及び第2の生体データの測定をそれぞれ行い(S511)、量子化部102は、第1の測定値を量子化する(S512)。そして、測定装置100Cは、上述の秘密分散法を用いて、量子化された第1の測定値からユーザが安静な状態であることを示す第1の署名を生成する(S512〜S519)。なお、本処理において、この第1の測定値からユーザが安静な状態であるか否かを判断する方法は、図20のS513〜S518及び図21で説明した方法と同様である。
次に、S519において第1の署名が生成された後の処理について詳細に説明する。第2の暗号化部130は、S519において第1の署名が生成されると、この第1の署名を暗号鍵として用い、このとき測定されたi番目の第2の測定値を暗号化する(S560)。そして、送信部110は、この暗号化された第2の測定値、測定装置100CのID、及び測定関連情報を含む所定フォーマットのデータを生成し、サーバ200Cに送信する(S561)。
本態様によると、第1の測定値よりユーザが安静な状態であることを示す第1の署名を生成し、これを暗号鍵として用いて測定対象である第2の測定値を暗号化する。これにより、測定対象の生体データが安静な状態で測定されたことを判断できるとともに、外部のサーバ200Cに送信する生体データの秘匿性を保証して、ユーザのプライバシーを保護することができる。
図30は、図28のS603の動作を示すフローチャートである。この処理では、サーバ200Cは、測定装置100Cから暗号化された第2の測定値を受信し、第2の復号鍵を用いてこの暗号化された測定値を復号化する。
まず、受信部203は、暗号化された第2の測定値、ID、及び測定関連情報を含む所定フォーマットのデータを受信する(S581)。
次に、第2の復号鍵取得部231は、第2の復号鍵格納部230より前記IDに対応する第2の復号鍵を取得する(S582)。例えば、測定装置100Cから受信したIDが「12345」であれば、第2の復号鍵取得部231は図25で示した第2の復号鍵格納部230より第2の復号鍵「5555」を取得する。この第2の復号鍵は、図18で述べた初期設定時に鍵発行サーバ600において生成され、第2の復号鍵格納部230に設定される。
次に、第2の復号鍵取得部231は、IDに対応する第2の復号鍵を取得できたか否かを判断する(S583)。第2の復号鍵を取得できなかった場合(S583でNo)、サーバ200Cはエラー処理を行う(S586)。例えば、サーバ200Cは、第2の署名検証鍵を取得できなかった旨を表示部に表示するようにしても良い。
一方、IDに対応する第2の復号鍵を取得できた場合(S583でYes)、第2の復号部232は、第2の復号鍵を用いて暗号化された第2の測定値を復号する(S584)。さらに、第2の復号部232は、IDごとに復号された第2の測定値及び測定関連情報を測定値格納部207に記録する(S585)。例えば、図26では、サーバ200Cは、IDが「12345」の測定装置100Cで行われた2回の心電図の測定結果に関して、心電図データのファイル名及び測定日時を各々IDと対応付けて測定値格納部207に記録した例を示している。
本態様によると、サーバ200Cは、予め、ユーザが安静な状態のときに測定された第1の参照値に基づいて生成された第2の復号鍵を所持している。そして、サーバ200Cは、測定装置100Cから暗号化された第2の測定値を受信すると、第2の復号鍵を用いてこの暗号化された第2の測定値を復号する。これにより、サーバ200Cは、第1の参照値を元に生成された第2の復号鍵を用いて暗号化された第2の測定値を検証するので、第2の測定値が安静な状態で測定されたか否かを判断することができる。また、測定装置100Cから送信される生体データの秘匿性を保証して、ユーザのプライバシーを保護することができる。
<変形例>
(1)上述の実施の形態1〜3では、例えば血圧計などの測定装置を常時装着して、医療機関側サーバの指示に従って、都度生体データを測定し、安定した測定情報を自動送信するようにしているが、測定装置は常時装着していなくてもよい。また、自動送信ではなく、ユーザが意識して送信ボタンを押すなどの形態であってもよい。
(2)上述の実施の形態1〜3では、医療機関側サーバからの指示により、測定装置が測定を開始するとしているが、例えば測定装置にタイマーが装備されており、ある一定の時間ごとに測定を開始してもよい。また、別途センサーがあり、例えばGPSで外出を感知し、測定開始としてもよい。
(3)上述の実施の形態2及び3では、第2の測定値から直接安静状態を検知できない場合に、第1の測定値で安静状態を検知しているが、その場合に限定されない。安静状態における第2の測定値を第三者から秘密にしたい場合や、第1の測定値による安静状態の検知のほうが妥当である場合にも利用できる。
(4)上述の実施の形態1及び2では、医療機関側に設けられるサーバは、署名検証した結果、測定値と測定関連情報を記録しているが、受信した署名も記録しておいてもよい。これにより、記録後に再度測定値の署名を確認することができる。
(5)上述の実施の形態1〜3では、分散署名鍵生成部において、分散署名鍵を都度求めているが、あらかじめ分散署名鍵を作成して記憶しておき、順次、分散署名生成部に入力する構成であってもよい。
(6)上述の実施の形態1〜3で用いる秘密分散法は、上記述べた2方法に限定されない。その他の秘密分散法を適用してもよい。
(7)上述の実施の形態1〜3では、血圧、脈拍、又は心電図といった生体データの測定を例に挙げているが、これに限定されるものではない。例えば、生体データが呼吸数又は体温であってもよい。
(8)上述の実施の形態1〜3では、連続したk回の測定値を入力として、署名合成を行い、合成された署名を用いて、生体データが一定であること、すなわち安静状態を判定しているが、署名合成に用いる測定値は、連続したk個でなくてもよい。計測回数をLとして、L個の測定値のうちの任意のk個を取り出して、署名合成を行い、安静状態を判定するのであってもよい。
(9)上述の実施の形態2及び3では、第1の生体データを用いて安静状態を検知し、第2の生体データの署名又は暗号化を行っている。第2の生体データとしては、それ単体では安静状態を検知しにくいもの(例えば心電図など)としているが、それに限定されるわけではなく、任意のものが選択できる。
(10)上述の実施の形態1〜3において、ある一定時間内又はある一定計測回数内に測定値が安定しない場合には、測定装置がサーバにエラーを通知してもよい。通知方法としては、例えば次のような方法であってもよい。
− 測定値が安定しない旨のみを通知
− 測定値が安定しない旨と、そのときの複数の測定値(署名なし)
(11)上述の実施の形態1〜3において、測定値が安定しない状態が一定時間又は一定回数続いた場合には、測定装置はユーザに対してアラートを出しても良い。
(12)上述の実施の形態1〜3における量子化部による量子化の方法は、ユーザによってレベルを選択できてもよい。比較的測定値が安定している人は、小さい差でも異なる出力となるような量子化にしてもよいし、測定値が不安定な人は、大きな差でも同じ出力となるような量子化にしてもよい。このレベルは、初期設定時に設定できても良いし、年齢などを入力することにより、自動的にレベルが選択されてもよい。この場合、署名データに量子化レベルを示す情報を付加してもよい。
(13)上述の実施の形態1〜3における量子化部による量子化の方法は、計測回数によってレベルが変わってもよい。計測の初期段階は、小さい差でも異なる出力となるような量子化にして、計測が安定しない場合、大きな差でも同じ出力となるような量子化に変化していくようにしてもよい。この場合、署名データに量子化レベルを示す情報を付加してもよい。
(14)上述の実施の形態2及び3では、第1の参照値格納部121に第1の参照値を格納し、分散署名生成部104が分散署名鍵「d(0)」を用いて第1の参照値に分散署名することにより得られる分散署名「M(−1)」をしている。しかし、第1の参照値格納部121に、予め、この分散署名「M(−1)」が格納されていてもよい。この場合には、第1の参照値格納部121は、署名合成部106に接続され、署名合成部106が、第1の参照値格納部121から分散署名「M(−1)」を読み出し、分散署名「M(−1)」とk−1個の分散署名「M(i)」、「M(i−1)」、・・・「M(i−(k−2))」とからなるk個の分散署名を合成するようにしてもよい。
(15)上述の実施の形態1〜3の各装置は、具体的には、それぞれ個別のコンピュータプログラムであってもよいし、オペレーティングシステムに組み込まれるモジュールであってもよいし、オペレーティングシステムから呼ばれるドライバであってもよいし、アプリケーションプログラムであってもよい。
(16)上述の実施の形態1〜3の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。RAM又はハードディスクユニットには、コンピュータプログラムが記憶されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(17)上述の実施の形態1〜3の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。RAMには、コンピュータプログラムが記憶されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全てを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(18)上述の実施の形態1〜3の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。ICカード又はモジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。ICカード又はモジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、ICカード又はモジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(19)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、コンピュータプログラム又はデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されているデジタル信号であるとしてもよい。
また、本発明は、コンピュータプログラム又はデジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、上記コンピュータプログラムを記憶しており、マイクロプロセッサは、コンピュータプログラムにしたがって動作するとしてもよい。
また、プログラム若しくはデジタル信号を記録媒体に記録して移送することにより、又はプログラム若しくはデジタル信号をネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(20)上述の実施の形態1〜3及び上記変形例をそれぞれ組み合わせるとしてもよい
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。