以下、本発明による検針システム、検針方法および検針プログラムの好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明による検針システムおよび検針方法について説明するが、かかる検針方法をコンピュータにより実行可能なプログラムとして実施するようにしても良いし、あるいは、該プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。また、以下の各図面に付した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではないことも言うまでもない。
(本発明の特徴)
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明は、
需要者への供給量の検針を行う検針メータと、該検針メータにより検針された検針値を管理する検針サーバと、前記検針メータと前記検針サーバとの間を転送するデータの中継を行う中継装置とを含んで構成され、
前記検針メータは、当該検針メータを特定するメータIDと、需要者に対する供給量を示す検針値と、前記検針値とあらかじめ設定したメータセッションIDとに基づいて計算したハッシュ値と、を含む検針データを作成して、前記中継装置に対して送信し、
前記検針データを受け取った前記中継装置は、受け取った前記検針データをあらかじめ保持している秘密鍵を用いて暗号化して前記検針サーバに対して送信し、
暗号化された前記検針データを受け取った前記検針サーバは、暗号化された前記検針データを、あらかじめ保持している公開鍵を用いて復号し、さらに、暗号化された前記検針データを復号して得られた検針値とあらかじめ設定したサーバセッションIDとに基づいてハッシュ値を検証値として計算し、該検証値として計算した該ハッシュ値を、暗号化された前記検針データを復号して得られたハッシュ値と比較し、両者が一致した場合、暗号化された前記検針データを復号して得られた検針値が、前記検針メータが検針した正しい検針値であるものと判定する
ことを主要な特徴としている。
而して、需要者への供給量の検針結果である検針値を管理する検針サーバにおいて、検針メータから受け取った検針値が正しいか否かの検証を行うことでき、検針メータからの検針データの転送ルートに介在する中継装置や公衆回線網において、該検針データに対する不正な改ざんの発生の有無を確認することができるという効果が得られる。
本発明の概要を、図を用いてさらに詳細に説明する。図1は、本発明による検針システムの検証のためのデータの流れと処理とを説明する説明図である。図1の図中および図1の説明に使う記号の意味について以下にまず説明する。
(1)‘ハッシュ値(データ)’とは、カッコ内の‘データ’のハッシュ値を意味する。例えばハッシュ値(検針値)と書かれている場合は、検針値のハッシュ値を意味する。
(2)記号‘|’は、左右に記載したデータの連結を意味する。例えばA|Bと書かれている場合は、データAとデータBとを連結することを意味する。
(3)関数‘E(key, data)’は、カッコ内の第1番目に記載の暗号化鍵すなわちkeyを使用して、カッコ内の第2番目に記載のデータすなわちdataを暗号化、復号する関数を意味する。本来、暗号化と復号とは、反対の処理を表す言葉であるが、本発明においては、対称暗号化方式を用いることを前提にするため、前述の同じ関数‘E(key, data)’を用いて暗号化または復号の処理を行う。
(4)秘密鍵は、検針データを中継する中継装置において暗号化のために用いる鍵である。
(5)公開鍵は、検針データを収集する検針サーバにおいて復号のために用いる鍵である。
(6)メータIDは、1ないし複数の検針メータそれぞれが検針する検針システムにおいて、検針サーバが個々の検針メータを識別するための識別情報である。
(7)検針値は、供給者が供給した供給量、言い換えると、需要者が使用した使用量を数値化したものである。例えば、検針メータが電力メータである場合には、検針値は、電力使用量である。また、電気料金のように使用時間帯に応じて電気料金が変わる場合、検針値は、使用時間帯と電気使用量とをまとめた数値となる。また、駐車場料金のように占有時間帯に応じて使用料金が変わるサービスの場合、検針値は、占有した時間帯および占有した時間をまとめた数値となる。
(8)セッションIDは、中継装置は知らない値であって、検針メータおよび検針サーバの2つの装置が知る値であり、検針メータおよび検針サーバのそれぞれにあらかじめ設定して記憶しておく。また、セッションIDの解読性を難しくするために、検針メータおよび検針サーバにおいて、あらかじめ決められた規則(例えば、あらかじめ定めた時間間隔ごとに更新するという規則)に基づき、セッションIDを更新する。なお、以下の説明においては、説明し易くするために、検針メータ側で記憶するセッションIDは、メータセッションID、検針サーバ側で記憶するセッションIDは、サーバセッションIDと記載することにする。検針メータ側の記憶領域に設定したメータセッションIDと、検針サーバ側の当該検針メータ用の記憶領域に設定したサーバセッションIDとは、原則として、同一の値に設定されるものである。
(9)なお、図1の実線の四角ボックス内の文字列は、本検針システムを構成する装置の装置名を示す。また、破線の四角ボックス内の文字列は、各装置内で行われる処理の内容を示す。また、実線の矢印は、データの流れを示し、破線の矢印は、処理の流れを示している。
次に、図1の説明図について概要を説明する。まず、図1に示すように、本発明による検針システムは、検針メータ1、中継装置2、検針サーバ3の3つの装置を少なくとも含んで構成される。
検針メータ1は、検針データを生成する。検針データは、図1に示すように、メータIDと検針値とハッシュ値とから構成される。ここで、ハッシュ値は、検針値とメータセッションIDとの結合値から求めた値である。該ハッシュ値は、図1のステップS1に示すように、検針メータ1においてハッシュ値計算を行って求められる。検針メータ1は、中継装置2に対し、前記検針データを送信する。
中継装置2は、暗号化処理を行う。該暗号化処理は、図1のステップS2に示すように、あらかじ保持している既知の秘密鍵を用い、かつ、暗号化関数‘E(秘密鍵、検針データ)’を用いて、検針メータ1から受け取った前記検針データの暗号化データを生成する。すなわち、以下の演算を行う。
暗号化データ
=E(秘密鍵、検針データ)
=E(秘密鍵、メータID|検針値|ハッシュ値(検針値|メータセッションID)
中継装置2は、検針サーバ3に対し、暗号化した前記暗号化データを送信する。
検針サーバ3は、復号処理において、中継装置2から受け取った前記暗号化データの復号処理を行い、復号データを得る。該復号処理は、図1のステップS3に示すように、あらかじめ保持している既知の公開鍵を用い、以下の計算式に従って行う。
復号データ
=E(公開鍵、E(秘密鍵、検針データ))
=E(公開鍵、E(秘密鍵、メータID|検針値|ハッシュ値(検針値|メータセッションID))
=メータID|検針値|ハッシュ値(検針値|メータセッションID)
検針サーバ3において該復号処理が成功することにより、検針サーバ3が期待する中継装置2からの暗号化データであることが証明される。正当な暗号化データが得られたことが証明されると、検針サーバ3は、次に、前記復号処理より得られた検針値の検証を行う。
まず、前記復号処理より得られたハッシュ値(検針値|メータセッションID)を被検証値とする。次に、検針サーバ3は、前記復号処理より得られたメータIDを用いて、検針サーバ3の記憶領域から、該メータIDに対応したサーバセッションIDを読み出す。次いで、検針サーバ3は、ハッシュ値計算を行う。検針サーバ3におけるハッシュ値計算は、図1のステップS4に示すように、復号結果の検針値とサーバセッションIDとを用いて、ハッシュ値(検針値|サーバセッションID)を計算する。そして、計算結果として得られたハッシュ値(検針値|サーバセッションID)を検証値とする。
次に、検針サーバ3は、被検証値のハッシュ値(検針値|メータセッションID)と検証値のハッシュ値(検針値|サーバセッションID)とを用いた検証処理を行う。ここで、該検証処理は、図1のステップS5に示すように、被検証値と検証値とを比較し、検証結果を得る処理である。
該検証処理において、被検証値=検証値の場合、復号結果の検針値に関する検証結果は真として得られる。一方、被検証値≠検証値の場合は、該検証結果は偽として得られる。以上が、本発明による検針システムの動作の概要である。
次に、図2を用いて、検針値に改ざんが行われていた場合についてさらに説明する。図2は、図1に示した検針システムの中継装置2において検針値の改ざんが行われて、偽の検針値が検針サーバ3に送信された場合について説明するための説明図である。
図2の説明図のステップS2Aに示すように、中継装置2において、検針メータ1から受け取っていた検針値の改ざんが行われた場合、暗号化処理が行われる検針値が偽の検針値に書き換えられてしまう。つまり、次の式に示す暗号化処理が行われる。
E(秘密鍵、メータID|偽の検針値|ハッシュ値(検針値|メータセッションID)
ここで、中継装置2は、暗号化前のハッシュ値から、該ハッシュ値を算出するための検針値およびメータセッションIDを逆算することはできないため、暗号化前の偽の検針値の検証用としてのハッシュ値を生成して、偽の検針値に改ざんされているか否かを検証することは不可能である。
中継装置2から偽の検針値を含む暗号化データを受け取った検針サーバ3は、復号処理後のハッシュ値計算処理において、図2のステップS4Aに示すように、復号結果の偽の検針値とサーバセッションIDとを用いて、ハッシュ値(偽の検針値|サーバセッションID)を計算する。そして、計算結果として得られたハッシュ値(偽の検針値|サーバセッションID)を検証値とする。
その結果、検針サーバ3は、図2のステップS5Aに示すように、復号結果として得られた被検証値のハッシュ値(検針値|メータセッションID)と検証値のハッシュ値(偽の検針値|サーバセッションID)とを用いた検証処理を行うことになる。該検証処理においては、被検証値≠検証値の検証結果になるので、検針サーバ3が受け取った検針値は偽であることが検証される。以上が、検針値を改ざんした場合の本発明による検針システムの動作の概要である。
(実施形態の構成例)
次に、本発明による検針システムのシステム構成の一例(本発明の実施形態の構成例)について、図3を参照して説明する。図3は、本発明による検針システムのシステム構成の一例を示すシステム構成図である。図3のシステム構成図に示すように、本発明による検針システムは、検針メータ1、中継装置2、公衆回線網4、検針サーバ3を少なくとも含んで構成される。
検針メータ1は、需要者への供給量の検針を行う装置であって、供給者によりあらかじめ定めた一定期間の供給量を計測するための装置を指す。例えば、検針メータ1は、電気、ガス、水道等の供給量を計測する装置である。中継装置2は、検針メータ1と検針サーバ3との間を転送するデータの中継を行う装置であって、検針メータ1と検針サーバ3との間の通信を中継するための装置を指す。中継装置2は、例えば、検針メータ1からの検針値を読み取って、検針サーバ3に送信する機能を有する。なお、中継装置2の具体例としては、検針者6または設定作業者(図1には図示していない)が所有する携帯電話端末、スマートフォン等が挙げられる。
また、公衆回線網4は、一般の公衆通信において利用される通信回線を指し、例えば、携帯電話回線やインターネット回線と呼ばれるデータ通信のための通信回線である。公衆回線網4は、それらの通信回線を複合した回線網でもよい。
検針サーバ3は、検針メータ1により検針された検針値を管理する装置であって、あらかじめ定めた周期で、定期的に、検針者6が検針値を収集するための装置を指す。
前述のように、検針者6は、中継装置2を使用して、検針作業を行う者を意味する。検針者6は、例えば、供給に対する対価を支払う需要者や、供給者が雇用する検針作業員等である。また、マンションや賃貸住宅の場合は、管理者が検針者6となる場合もある。なお、設定作業者(図3には図示していない)は、供給者が雇用する要員であり、中継装置2を使用して、セッションIDの初期値の設定動作を起動する作業を行う者を指す。セッションIDの初期値の設定動作を起動する作業を行う際に使用する中継装置2は、供給者または設定作業者が所有する装置である場合を含み、厳密には図3の検針者が所持する中継装置とは異なる。
検針メータ1と中継装置2との間の通信方法としては、一般に、近距離無線通信と呼ばれる無線技術を使用する。近距離無線通信とは、例えば、RFID(Radio Frequency Identifier)やNFC(Near Field Communication)と称される無線技術のことであり、互いの装置のアンテナ部を数cmの近距離まで近づけることにより無線通信を行うことが可能な通信などを指す。あるいは、検針メータ1と中継装置2との間の通信方法として、Bluetooth(登録商標)や無線LAN(Local Area Network)と称される数十mの距離まで無線通信を可能とする通信を用いても良い。
中継装置2を公衆回線網4に接続する手段としては、例えば、携帯電話通信回線が使用でき、また、無線LANも使用できる。
また、検針サーバ3を公衆回線網4に接続する手段としては、例えば、有線LANを使用する。無線通信技術を使用することも可能であるが、通信の安定性が高い方が良いので、有線LANの方が望ましい。
(実施形態の動作の説明)
次に、図3のシステム構成図に一例として示した本発明による検針システム(本発明の一実施形態)の動作の一例について説明する。まず、該検針システムの基本動作の概要を、図4のフローチャートを参照して説明する。図4は、図3に一例として示した本発明による検針システムの基本動作の一例を示すフローチャートである。
図4のフローチャートに示すように、本発明による検針システムの基本動作は、セッションID初期化シーケンス(シーケンスSeq1)、鍵交付シーケンス(シーケンスSeq2)および検針シーケンス(シーケンスSeq3)の3つのシーケンスにより構成される。このうち、検針シーケンス(シーケンスSeq3)が本発明の特徴である検針値の検証を行うシーケンスである。セッションID初期化シーケンス(シーケンスSeq1)と秘密鍵交付シーケンス(シーケンスSeq2)とは、本発明に係る検針動作の特徴を実現するための前処理を行う重要なシーケンスである。
次に、本発明による検針システムにおいて検針に至るまでの全体の動作の概要について、図5のフローチャートを参照して説明する。図5は、図3に一例として示した本発明による検針システムの検針に至るまでの全体の動作の一例を説明するフローチャートである。
図5のフローチャートに示すように、本発明による検針システムの検針に至るまでの動作は、図4のフローチャートと同様の構成からなっており、セッションID初期化シーケンス(シーケンスSeq11)、鍵交付シーケンス(シーケンスSeq12)および検針シーケンス(シーケンスSeq13)の3つの工程を経ることにより、検針メータ1で検針した検針値が、検針サーバ3に受け渡されて、正しい検針値であるか否かが検証される。
シーケンスSeq11のセッションID初期化シーケンスにおいては、あらかじめ定めた一定時間内に、検針メータ1および検針サーバ3に‘セッションID’と称する同じ値を設定する。ここで、‘セッションID’は、検針サーバ3が、検針メータ1から中継装置2、公衆回線網4を経由して受信した検針値の真偽検証を行うためのデータである。したがって、‘セッションID’は秘匿性を維持することが重要であるので、外部への漏洩を確実に防止することが必要である。
シーケンスSeq12の鍵交付シーケンスにおいては、まず、検針サーバ3が秘密鍵と公開鍵とを生成し、しかる後、検針サーバ3は、生成した秘密鍵を中継装置2に受け渡す。秘密鍵とは、秘密鍵暗号方式と呼ばれる方式で用いられる鍵であり、秘密鍵と公開鍵とが、暗号化と復号および復号と暗号化のそれぞれに使用することができる対称暗号化方式にて採用される鍵であることを意味している。
シーケンスSeq13の検針シーケンスにおいては、検針メータ1が計測した検針値を検針サーバ3に送信する。また、ここで言う検針値としては、供給を受けた日時、曜日、時間帯などの情報と紐付けされた情報のデータ群である場合もある。
次に、以下に詳細に説明する検針シーケンスにおいて使用する記号および名称について説明する。
(1)‘ハッシュ値(データ)’とは、前述したように、カッコ内の‘データ’のハッシュ値を意味する。例えばハッシュ値(検針値)と書かれている場合は、検針値のハッシュ値を意味する。
(2)記号‘|’は、前述したように、左右に記載したデータの連結を意味する。例えばA|Bと書かれている場合は、データAとデータBとを連結することを意味する。
(3)関数‘E(key, data)’は、前述したように、カッコ内の第1番目に記載の暗号化鍵すなわちkeyを使用して、カッコ内の第2番目に記載のデータすなわちdataを暗号化、復号する関数を意味する。本来、暗号化と復号とは、反対の処理を表す言葉であるが、本発明においては、前述したように、対称暗号化方式を用いることを前提にするため、前述の同じ関数‘E(key, data)’を用いて暗号化または復号の処理を行う。
(4)秘密鍵は、前述したように、データを中継する中継装置2において暗号化のために用いる鍵である。
(5)公開鍵は、前述したように、検針データを収集する検針サーバ3において復号のために用いる鍵である。
(6)メータIDは、前述したように、複数の検針メータ1それぞれが検針する検針システムにおいて、検針サーバ3が個々の検針メータ1を識別するための識別情報である。
(7)検針値は、前述したように、供給者が供給した供給量、言い換えると、需要者が使用した使用量を数値化したものである。例えば、検針メータ1が電力メータである場合には、検針値は、電力使用量である。また、電気料金のように使用時間帯に応じて電気料金が変わる場合、検針値は、使用時間帯と電気使用量とをまとめた数値となる。また、駐車場料金のように占有時間帯に応じて使用料金が変わるサービスの場合、検針値は、占有した時間帯および占有した時間をまとめた数値となる。
(8)セッションIDは、前述したように、秘匿性を維持するために、中継装置2は知らない値であって、検針メータ1および検針サーバ3が知る値であり、検針メータ1および検針サーバ3のそれぞれにあらかじめ設定して記憶しておく。また、セッションIDの解読性を難しくするために、検針メータ1および検針サーバ3において、あらかじめ決められた規則に基づき、セッションIDを更新する。なお、以下の説明においては、説明し易くするために、前述したように、検針メータ1側で記憶するセッションIDは、メータセッションID、検針サーバ3側で記憶するセッションIDは、サーバセッションIDと記載することにする。検針サーバ3側のサーバセッションIDは、対応する検針メータ1ごとに割り当てられた検針サーバ3の記憶領域それぞれに設定されて記憶される。ここで、検針メータ1側の記憶領域に設定したメータセッションIDと、検針サーバ3側の当該検針メータ用の記憶領域に設定したサーバセッションIDとは、原則として、同一の値に設定されるものである。
次に、以下の説明において、各種データの表示に使用する記号について説明する。
(a)MIDは、検針メータ1を特定するメータIDを表す。
(b)MID’は、検針サーバ3が中継装置2を介して検針メータ1から受信した受信メータID(メータID(MID)に対応するデータ)を表す。
(c)SIDMは、検針メータ1が管理するセッションIDすなわちメータセッションIDの値を表す。
(d)SIDSは、検針サーバ3が管理するセッションIDすなわちサーバセッションIDの値を表す。
(e)Hmは、検針メータ1が計算した被検証用ハッシュ値(すなわち、図1にて説明したように、検針サーバ3における検証処理時の被検証値に該当するハッシュ値)を表す。
(f)Hm’は、検針サーバ3が中継装置2を介して検針メータ1から受信した受信被検証用ハッシュ値(被検証用ハッシュ値(Hm)に対応するデータ)を表す。
(g)Hsは、検針サーバ3が計算した検証用ハッシュ値(すなわち、図1にて説明したように、検針サーバ3における検証処理時の検証値に該当するハッシュ値)を表す。
(h)MVは、検針メータ1が計測したメータ値すなわち検針値を表す。
(i)MV’は、検針サーバ3が検針メータ1から受信した受信メータ値すなわち受信検針値(メータ値(MV)に対応するデータ)を表す。
(j)Erepは、中継装置2において検針メータ1から受信した検針データを暗号化した暗号化データを表す。
(k)E’repは、検針サーバ3が中継装置2から受信した受信暗号化データ(暗号化データ(Erep)に対応するデータ)を表す。
(l)KeySは、検針サーバ3が生成する秘密鍵を意味する。
(m)KeyPは、検針サーバ3が生成する公開鍵を意味する。
次に、図5のフローチャートのシーケンスSeq11に示したセッションID初期化シーケンスにおけるセッションID初期値生成動作の流れの一例について、図6のシーケンスチャートを用いて説明する。図6は、セッションID初期化シーケンスにおけるセッションID初期値生成動作の流れの一例を示すシーケンスチャートであり、検針メータ1においてセッションIDの初期値を生成している場合についてその一例を示している。なお、図6には、検針システムを構成する公衆回線網4の記載は省略し、検針メータ1、中継装置2、検針サーバ3および設定作業者5それぞれにおける動作および作業の一例を示している。ここで、設定作業者5は、前述したように、供給者が雇用する要員であり、中継装置2を使用して、セッションIDの初期値の設定動作を起動する作業を行う者を指す。また、セッションIDの初期値の設定動作を起動する作業を行う際に使用する中継装置2は、前述したように、供給者または設定作業者が所有する装置である場合を含み、厳密には検針者が所持する中継装置とは異なる。
セッションID初期化シーケンスの目的は、前述したように、あらかじめ定めた一定時間内において、検針メータ1と検針サーバ3とのそれぞれにおいて管理する‘セッションID’と称する変数に同じ値を設定して、而して、検針値を検証することを可能にすることにある。また、‘セッションID’は、検針メータ1と検針サーバ3との2つの装置以外には知られてはならない値であるため、セッションIDの初期値設定の作業は、前述のように、供給者が管理する設定作業者5が実施する。また、セッションID初期化シーケンスにおいて設定作業者5が使用する中継装置は、検針に使用する中継装置2と同等の機能を有する装置を指す。
図6のシーケンスチャートにおいて、設定作業者5が、セッションID初期化起動を中継装置2に指示すると(シーケンスSeq21)、中継装置2は、セッションID初期化プログラムを起動する。セッションID初期化プログラムとは、図6の以下の動作の流れを制御するプログラムのことを言う。なお、起動とは、セッションID初期化プログラムの動作の契機を与えることを意味し、セッションID初期化プログラムは、例えば、中継装置2のCPU(Central Processing Unit)上で動作するアプリケーションなどにより実行される。
中継装置2は、セッションID初期化プログラムの動作にしたがい、まず、検針メータ1に対して、セッションID初期化要求を送信する(シーケンスSeq22)。該セッションID初期化要求は、検針メータ1における次の動作となるセッションID初期値生成処理、メータセッションID初期化処理、メータセッションID初期化応答を行うきっかけとなる情報である。
中継装置2からのセッションID初期化要求を受け取った検針メータ1は、セッションID初期値生成において、セッションIDの初期値を生成する(シーケンスSeq23)。セッションIDの初期値の生成方法としては、例えば、検針メータ1に備えられているCPU等の演算部において乱数値を発生させ、発生した乱数値をセッションIDの初期値とするなどの方法がある。
しかる後、検針メータ1は、メータセッションID初期化において、前記セッションID初期値生成において生成されたセッションIDの初期値をセッションID変数として設定する(シーケンスSeq24)。この結果、該セッションIDの初期値は、メータセッションIDの初期値として記憶される。
メータセッションID初期化の動作を終了すると、検針メータ1は、メータセッションID初期化応答において、検針メータ1から中継装置2に対して、前記セッションID初期値の動作により生成したセッションIDの初期値を送信する(シーケンスSeq25)。
中継装置2は、検針メータ1からメータセッションID初期化応答としてセッションID初期値を受け取ると、サーバセッションID初期化要求において、検針サーバ3に対して前記メータセッションID初期化応答として受信したセッションIDの初期値を送信する(シーケンスSeq26)。ここで、中継装置2は、前記メータセッションID初期化応答に含まれているセッションIDの初期値を該サーバセッションID初期化要求内に設定する動作を行うが、該セッションIDの初期値を中継装置2内に記憶して保持するような動作は行わない。
検針サーバ3は、中継装置2からサーバセッションID初期化要求としてセッションIDの初期値を受け取ると、サーバセッションID初期化を起動する。検針サーバ3は、サーバセッションID初期化において、前記サーバセッションID初期化要求で受信したセッションIDの初期値をセッションID変数として設定する(シーケンスSeq27)。この結果、該セッションIDの初期値は、サーバセッションIDの初期値として記憶される。つまり、検針サーバ3は、検針メータ1において記憶されているメータセッションIDの初期値の値と同一の値を、サーバセッションIDの初期値として保持する。また、該セッションIDの初期値の値は、検針メータ1と検針サーバ3との2つの装置が知っている値であるが、中継装置2等の他の装置には、全く判らない値である。
しかる後、検針サーバ3は、サーバセッションID初期化応答において、中継装置2に対して、前記サーバセッションID初期化の動作完了を通知する(シーケンスSeq28)。該サーバセッションID初期化応答には、中継装置2が、検針サーバ3側のサーバセッションIDの初期化の動作が正しく実行されたか否かを判定するための情報を含んでいる。
ここで、図6に示すように、中継装置2は、シーケンスSeq22において、検針メータ1に対して、セッションID初期化要求を送信した際に、セッションIDタイマを起動している(シーケンスSeq29)。該セッションIDタイマは、中継装置2により管理されるタイマであり、メータセッションID初期化処理およびサーバセッションID初期化処理の双方があらかじめ定めた一定時間内に完了したか否かを判定するためのタイマである。
中継装置2は、前記一定時間内に、検針サーバ3からサーバセッションID初期化応答を受け取ると、セッションIDタイマの計時動作を停止させる(シーケンスSeq30)。中継装置2は、メータセッションID初期化応答およびサーバセッションID初期化応答により、メータセッションID初期化処理およびサーバセッションID初期化処理が、前記一定時間内に正しく完了したこと確認できた場合、設定作業者5に対して、セッションID初期化完了通知を通知する(シーケンスSeq31)。該通知を行う方法としては、例えば、中継装置2に実装されるディスプレイやLED(Light Emitting Diode)等への出力を用いて視覚により確認する方法、スピーカへの音声出力を用いて聴覚により認識する方法、振動機能を用いて振動覚により認識する方法等が可能である。
次に、検針メータ1および検針サーバ3それぞれに記憶されているセッションID(メータセッションIDおよびサーバセッションID)を更新する動作についてその一例を、図7の説明図を用いて説明する。
図7は、検針メータ1および検針サーバ3それぞれに記憶されているセッションIDの更新動作の一例を説明する説明図である。ここで、セッションIDとは、前述したように、検針メータ1側においてはメータセッションIDとして、検針サーバ3側においてはサーバセッションIDとして、更新可能な状態で記憶している変数のことを言う。
図7に示すように、検針メータ1は、当該検針メータ1に内蔵する時計を用いて、更新期間としてあらかじめ設定される時間(T)が経過する都度、記憶しているメータセッションIDをあらかじめ定めた値ずつ更新する(シーケンスSeq42、Seq43)。一方、検針サーバ3は、当該検針サーバ3に内蔵する時計を用いて、更新期間としてあらかじめ設定される時間(T:検針メータ1側と同じ時間)が経過する都度、記憶しているメータセッションIDをあらかじめ定めた値ずつ更新する(シーケンスSeq52、Seq53)。ここで、該更新期間については、検針メータ1と検針サーバ3とで同じ時間として設定されている。例えば、該更新期間は、検針メータ1と検針サーバ3との双方で、午前0時や毎時0分などと、同じ時刻を更新期間として設定するようにすれば良い。他には、例えば、1時間毎や12時間毎のように、同じ時間間隔を更新期間として設定するようにしても良い。また、更新期間ごとに更新する値(あらかじめ定めた値)は、検針メータ1と検針サーバ3との双方で、同一の値を用いる。
次に、図5のフローチャートのシーケンスSeq12に示した鍵交付シーケンスにおける鍵交付動作の流れの一例について、図8のシーケンスチャートを用いて説明する。図8は、鍵交付シーケンスにおける鍵交付動作の流れの一例を示すシーケンスチャートであり、検針業務を司る検針者からの中継装置2に対する鍵交付指示に基づいて起動される。図8のフローチャートは、検針サーバ3において鍵(秘密鍵、公開鍵)を生成して、中継装置2に対して、生成した秘密鍵を交付する場合についてその一例を示している。なお、図8には、検針システムを構成する検針メータ1、公衆回線網4の記載は省略し、中継装置2、検針サーバ3および検針業務を司る検針者6それぞれにおける作業および動作の一例を示している。
図8のシーケンスチャートにおいて、検針者6が、鍵交付起動を中継装置2に指示すると(シーケンスSeq61)、中継装置2は、鍵交付プログラムを起動する。鍵交付プログラムとは、図8の以下の動作の流れ(すなわち鍵要求から鍵記憶、鍵交付完了通知までの流れ)を制御するプログラムのことを言う。なお、起動とは、鍵交付プログラムの動作の契機を与えることを意味し、鍵交付プログラムは、例えば、中継装置2のCPU上で動作するアプリケーションなどにより実行される。
中継装置2は、鍵交付プログラムの動作にしたがい、まず、検針サーバ3に対して、鍵交付要求を送信する(シーケンスSeq62)。該鍵交付要求は、検針サーバ3における次の動作となる鍵生成、鍵交付応答のきっかけとなる情報である。
中継装置2からの鍵交付要求を受け取った検針サーバ3は、鍵生成処理を行う(シーケンスSeq63)。該鍵生成処理とは、鍵交付要求を送信した中継装置2に対応する公開鍵(KeyP)と秘密鍵(KeyS)とを生成する処理のことである。
検針サーバ3は、生成した公開鍵(KeyP)を記憶して保持するとともに、中継装置2に対して、鍵交付応答を送信する(シーケンスSeq64)。該鍵交付応答は、生成した秘密鍵(KeyS)を含む情報である。検針サーバ3からの鍵交付応答を受け取った中継装置2は、鍵記憶処理において、検針サーバ3から受け取った鍵交付応答に含まれている秘密鍵(KeyS)を記憶して保持する(シーケンスSeq65)。
しかる後、中継装置2は、検針者6に対して、鍵交付完了通知を通知する(シーケンスSeq66)。該通知を行う方法としては、例えば、中継装置2に実装されるディスプレイやLED等への出力を用いて視覚により確認する方法、スピーカへの音声出力を用いて聴覚により認識する方法、振動機能を用いて振動覚により認識する方法等が可能である。
次に、図5のフローチャートのシーケンスSeq13に示した検針シーケンスにおける検針動作の流れの一例について、図9のシーケンスチャートを用いて説明する。図9は、検針シーケンスにおける検針動作の流れの一例を示すシーケンスチャートである。なお、図9には、検針システムを構成する公衆回線網4の記載は省略し、検針メータ1、中継装置2、検針サーバ3および検針業務を司る検針者6それぞれにおける作業および動作の一例を示している。また、図9において、実線矢印は、装置間の信号の流れを示し、破線矢印は、中継装置2と検針者6との間の情報の流れを示している。
図9のシーケンスチャートにおいて、検針者6が、検針プログラム起動を中継装置2に指示すると(シーケンスSeq71)、中継装置2は、検針プログラムを起動する。検針プログラムとは、図9の以下の動作の流れ(すなわち検針要求から検針検証、検針完了通知までの流れ)を制御するプログラムのことを言う。なお、起動とは、検針プログラムの動作の契機を与えることを意味し、検針プログラムは、例えば、中継装置2のCPU上で動作するアプリケーションなどにより実行される。
中継装置2は、検針プログラムの動作にしたがい、まず、検針メータ1に対して、検針要求を送信する(シーケンスSeq72)。該検針要求は、検針メータ1における次の動作となるサーバ検証用データ生成処理のきっかけとなる情報である。
中継装置2からの検証要求を受け取った検針メータ1は、サーバ検証用データ生成処理において、対象とする情報(すなわち検針値)の計測を行うとともに、サーバ検証用の被検証値として被検証用ハッシュ値(Hm)を生成する(シーケンスSeq73)。検針メータ1が計測した情報(すなわち検針値)は、メータ値(MV)として取得される。また、サーバ検証用の被検証値として生成した被検証用ハッシュ値(Hm)は、メータ値(MV)と検針メータ1が管理するセッションIDすなわちメータセッションID(SIDM)とを、ハッシュ計算(Hash Calculation)関数(H)を用いて、ハッシュ化することにより生成する。つまり、被検証用ハッシュ値(Hm)の算出式は、次の式(1)により与えられる。
Hm=H(SIDM|MV) …(1)
被検証用ハッシュ値(Hm)は、検針サーバ3が、検針メータ1から中継装置2、公衆回線網4を介して受信した検針データに不正なデータが含まれていないことを検証するときに使用される値(すなわち被検証値として用いられる値)である。また、ハッシュ計算(Hash Calculation)には、MD5(Message Digest 5)やSHA(Secure Hash Algorithm)シリーズと称されるハッシュ関数アルゴリズム等を用いる。
検針メータ1は、被検証用ハッシュ値(Hm)を生成すると、検針結果であるメータ値(MV)と生成した被検証用ハッシュ値(Hm)とを含んで構成される検針応答を、中継装置2に対して送信する(シーケンスSeq74)。つまり、該検針応答に含まれる検針データのデータ構成としては、次の式(2)に示すように、検針メータ1を特定するメータID(MID)、サーバ検証用の被検証値である被検証用ハッシュ値(Hm)、および、検針結果の検針値であるメータ値(MV)を少なくとも含んで構成される。
検針データ=MID|Hm|MV …(2)
中継装置2は、検針メータ1からの検針応答を受け取ると、検針者6に対して、検針結果である検針値の承認を求めるための検針値承認要求を通知する(シーケンスSeq75)。つまり、該検針値承認要求は、検針値であるメータ値(MV)を通知するものである。該通知を行う方法としては、例えば、中継装置2に実装されるディスプレイやLED等への出力を用いて視覚により確認する方法、スピーカへの音声出力を用いて聴覚により認識する方法、振動機能を用いて振動覚により認識する方法等が可能である。
検針者6は、中継装置2からの検針値承認要求を受け取ると、該検針値承認要求により通知されてきたメータ値(MV)を確認し、中継装置2に備えられた入力インタフェースを使用して、検針値承認応答を中継装置2に対して入力することにより、メータ値(MV)の承認を行う(シーケンスSeq76)。
検針者6からの検針値承認応答を受け取ることにより、検針値の承認を得た中継装置2は、検針メータ1から送信されてきた検針応答に含まれる検針データの暗号化処理を行う(シーケンスSeq77)。該暗号化処理において、暗号化される検針データは、メータID(MID)、被検証用ハッシュ値(Hm)、メータ値(MV)を結合したデータであり、図5のシーケンスSeq12の鍵交付シーケンスにおいて記憶した秘密鍵(KeyS)を用いて暗号化される。すなわち、該暗号化処理により得られる暗号化データ(Erep)の算出式は、次の式(3)により与えられる。
Erep=E(KeyS,MID|Hm|MV) …(3)
なお、メータID(MID)は、検針メータ1を特定するデータであり、被検証用ハッシュ値(Hm)は、前述したように、検針値とメータセッションIDとの結合データのハッシュ化データであり、メータ値(MV)は、検針値である。
しかる後、中継装置2は、検針サーバ3に対して、暗号化処理を行うことにより生成された暗号化データ(Erep)を含む検針通知を送信する(シーケンスSeq78)。つまり、該検針通知に含まれるデータは、メータID(MID)、被検証用ハッシュ値(Hm)、メータ値(MV)を暗号化した暗号化データ(Erep)である。
検針サーバ3は、中継装置2からの暗号化データ(Erep)を含む前記検針通知を、受信暗号化データ(E’rep)を含む受信検針通知として受け取ると、復号処理において、受信した該受信検針通知に含まれている受信暗号化データ(E’rep)の復号を行う(シーケンスSeq79)。ここで、復号処理においては、当該検針サーバ3において作成してあらかじめ保存している公開鍵(KeyP)を用いて、受信暗号化データ(E’rep)の復号を行う。その結果、検針サーバ3における受信検針データとして、受信メータID(MID’)、受信被検証用ハッシュ値(Hm’)、受信メータ値(MV’)を得る。復号したそれぞれのデータは、中継装置2が暗号化データとして暗号化する前の検針データを構成するデータに対応している。すなわち、復号したそれぞれのデータは、メータID(MID)、被検証用ハッシュ値(Hm)、メータ値(MV)にそれぞれ対応したデータである。
つまり、かくのごとき検針サーバ3の復号処理は、次の式(4)の計算式を用いて表すことができる。
E(KeyP,E’rep)=MID’|Hm’|MV’ …(4)
検針サーバ3は、受信暗号化データ(E’rep)の復号処理を完了すると、次に、検証事前計算処理において、復号処理により得られた受信メータID(MID’)に対応するサーバセッションID(SIDS)を、検針サーバ3内の記憶領域から読み出す。さらに、検針サーバ3は、検証事前計算処理において、読み出したサーバセッションID(SIDS)と復号処理により得られた受信メータ値(MV’)とを結合し、その結合値のハッシュ化を行うことにより、サーバ検証用の検証値として検証用ハッシュ値(Hs)を求める(シーケンスSeq80)。検証用ハッシュ値(Hs)を求める計算式は、次の式(5)により与えられる。
Hs=H(SIDS|MV’) …(5)
しかる後、検針サーバ3は、検針値検証処理において、受信検針値である受信メータ値(MV’)の正常性の検証処理を行う(シーケンスSeq81)。該検証処理は、復号処理により得られた受信被検証用ハッシュ値(Hm’)と検証事前計算処理により得られた検証用ハッシュ値(Hs)とを比較することにより行われる。
該比較により求められた比較結果に基づいて、以下の判定を行う。
(1)Hs=Hm’の場合
受信した受信メータ値(MV’)すなわち受信検針値は正しい検針値であると判定する。
(2)Hs≠Hm’の場合
受信した受信メータ値(MV’)すなわち受信検針値は不正な検針値であると判定する。
ここで、正しい検針値とは、期待される検針メータ1から送信されてきた検針値すなわちメータ値(MV)であることを意味する。また、受信した受信メータ値(MV’)すなわち受信検針値が正しい検針値であることが検証された場合には、検針サーバ3は、受信検針値すなわち受信メータ値(MV’)を受理する。一方、受信した受信メータ値(MV’)すなわち受信検針値が不正な検針値であることが検証された場合には、検針サーバ3は、受信検針値すなわち受信メータ値(MV’)を受理しない。ここで、受理とは、例えば、供給者が、需要者に対する料金徴収のための検針値として受信検針値すなわち受信メータ値(MV’)を使用することを意味している。
次に、シーケンスSeq80およびシーケンスSeq81それぞれの検証事前計算処理および検針値検証処理の運用上の処理に関して、さらに、補足説明を行う。検針メータ1におけるメータセッションIDと検針サーバ3におけるサーバセッションIDとは、前述したように、本来、同じ値で変化することを前提にしているが、偶々、両者の値が一致しない場合が存在する。
両者の値が一致しない第1番目の場合としては、検針メータ1におけるメータセッションIDと検針サーバ3におけるサーバセッションIDとの設定のタイミングのずれのために、メータセッションIDとサーバセッションIDとの更新のタイミングがずれてしまい、偶々、両者でずれている時間帯において、検針シーケンスが動作した場合である。
両者の値が一致しない第2番目の場合としては、検針メータ1および検針サーバ3それぞれの装置の内部時計が刻む時間に小さな誤差が累積し、メータセッションIDとサーバセッションIDとの更新間隔の誤差が、メータセッションIDとサーバセッションIDとの値のずれとして影響する場合である。
このため、両者の値が一致しない場合があることを前提にして、検針サーバ3は対処する必要がある。まず、シーケンスSeq80の検証事前計算処理においては、記憶領域に記憶しているサーバセッションIDの他に、時間ずれを考慮したサーバセッションIDをあらかじめ定めた生成アルゴリズムに基づいて別途生成し、複数のサーバセッションIDそれぞれを用いて、サーバ検証用の検証値として複数の検証用ハッシュ値(Hs)を求める。
次に、シーケンスSeq81の検針値検証処理においては、シーケンスSeq80の検証事前計算処理において得られた複数の検証用ハッシュ値(Hs)それぞれに対して受信被検証用ハッシュ値(Hm’)を比較する処理を行う。そして、複数の比較結果のうち、Hs=Hm’の関係が成立する検証用ハッシュ値(Hs)が存在する場合には、受信した受信メータ値(MV’)すなわち受信検針値は正しい検針値であると判定する。かかる処理を行うことにより、メータセッションIDとサーバセッションIDとの値が一致していない期間であっても、検針値の検証を行うことが可能になる。
また、Hs=Hm’の関係が成立する場合の検証用ハッシュ値(Hs)の生成に使用したサーバセッションIDを、時間ずれを補正したサーバセッションIDとして、該当するサーバセッションIDの記憶領域に再設定すれば良い。
検針サーバ3は、シーケンスSeq81の検針値検証処理を完了すると、中継装置2に対して、検針通知応答を送信する(シーケンスSeq82)。該検針通知応答は、検針サーバ3における検針データの検証結果を通知するものである。中継装置2は、検針サーバ3からの検針通知応答を受け取ると、検針完了通知において、検針者6に対して、検針サーバ3から受け取った検証結果を通知する(シーケンスSeq83)。
(実施形態の効果の説明)
以上に詳細に説明したように、本実施形態による検針システムにおいては、次のような効果が得られる。
まず、本実施形態による検針システムにおいては、検針サーバ3において、検針値が正しいか否かの検証を行うことができるという効果が得られる。その理由は、図1のステップS1の検針メータ1におけるハッシュ値計算に示すように、検針メータ1において検針値とあらかじめ設定したメータセッションIDとからハッシュ値を生成するからである。そして、図1の検針メータ1が送信する検針データに示すように、検針メータ1から検針サーバ3に受け渡す検針データを、検針メータ1を特定するメータID、検針値の他に、生成した前記ハッシュ値を含む構成としているからである。さらに補足すれば、検針サーバ3は、前記検針データを受け取った際に、検針メータ1から送られてきた前記ハッシュ値を、検針メータ1から送られてきた検索値とあらかじめ設定したサーバセッションIDとに基づいて生成したハッシュ値と比較し、両者が一致するか否かを検証しているからである。
次に、検針データの暗号化処理を実施する装置に関して、検針システムの初期構築時の費用について検討を行う。検針者への応答性を損なうことなく、暗号アルゴリズムを実行するためには、高速な演算装置が必要であるが、一般的に、高速な演算装置は高価である。なお、検針者への応答性とは、検針者の操作に対する装置の応答性能を意味する。
例えば、本実施形態の場合とは異なり、検針メータ1側において暗号アルゴリズムを実行する場合、検針メータ1に高価な演算処理用の部品を使用することが必要になるので、検針メータ1の価格が高価になる。
一方、本実施形態の場合のように、中継装置2において暗号アルゴリズムを実行する場合、携帯電話、スマートフォン等の装置からなる中継装置2には、既に高速な演算装置が備わっているので、暗号アルゴリズムの実行に高速な該演算装置を使用することが可能であり、検針システムの構築に関わる余分の費用は発生しない。なお、前記演算装置とは、CPU(Central Processing Unit)やFPGA(Field Programmable Gate Array)等の暗号化のための数値演算処理を実行することができる装置を意味する。
以上より、検針システムの初期構築時において、本実施形態の場合のように、中継装置2に暗号アルゴリズムを担当させる方が安価に検針システムを構築することができるという効果が得られる。
次に、暗号化のアルゴリズム更新時の費用について検討を行う。将来、暗号化のアルゴリズムに脆弱性が見つかり、暗号アルゴリズムの更新が必要になる可能性がある。
例えば、本実施形態の場合とは異なり、検針メータ1に暗号アルゴリズムのプログラムが実装されている場合、次のような問題がある。すなわち、検針システムの供給者または該供給者が管理する作業者が、各検針メータ1の設置場所に赴いて、その設置場所で、検針メータ1の暗号アルゴリズムに関わるファームウェアの書き換え作業を行うことが必要になる。
一方、本実施形態の場合のように、中継装置2において暗号アルゴリズム処理を行う場合は、中継装置2が新たな暗号アルゴリズムのプログラムを公衆回線網4経由でダウンロードしてインストールすれば、暗号アルゴリズムの更新を行うことが可能である。
以上より、中継装置2において暗号アルゴリズム処理を実施する方が、検針メータ1よりも暗号アルゴリズムの更新の容易性を高くすることができるという効果が得られる。
検針データの暗号化処理を実施する装置に関する以上の検討結果より、本実施形態による検針システムにおいては、次のような2つの効果が同時に得られる。すなわち、中継装置2に暗号化処理を担当させる方が、検針メータ1に担当させるよりも、検針システムの初期構築コストを安価にし、かつ、暗号化処理の更新容易性が高いという2つの効果が得られる。
さらには、一般的には、現状における最適な仕組みとして適用した信頼性対策であっても、将来的に脆弱性が高まってくる場合も想定され、機器やプログラムの更新を行う必要性が発生することもある。かくのごとき更新を行う際の費用は、供給者および需要者の負担となる。よって、本実施形態においては、検針システムに適用する検針プログラムをはじめとする中継装置2および検針サーバ3内の各プログラムについても、公衆回線網4経由で、新たなプログラムをダウンロードして入れ替えることにより、容易に更新することを可能にしている。
[本発明の他の実施形態]
次に、本発明による検針システムの他の実施形態について説明する。以下に記載の他の実施形態においては、検針システムのシステム構成は、前述した図3のシステム構成図と全く同様であり、図6に示したセッションID初期化シーケンスにおけるセッションID初期値生成動作に関する他の動作例について説明している。
(第1の他の実施形態)
まず、セッションID初期化シーケンスにおけるセッションID初期値生成動作に関する第1の他の動作例について、図10のシーケンスチャートを用いて説明する。図10は、セッションID初期化シーケンスにおけるセッションID初期値生成動作の流れの図6とは異なる第1の他の例を示すシーケンスチャートである。図10に示す動作例は、図6の場合とは異なり、セッションID初期値生成を中継装置2において行う場合の具体例を示している。なお、図6の場合と同様、図10には、検針システムを構成する公衆回線網4の記載は省略し、検針メータ1、中継装置2、検針サーバ3およびセッションID初期化作業を行う設定作業者5それぞれにおける作業および動作を示している。
図10のシーケンスチャートにおいて、設定作業者5が、セッションID初期化起動を中継装置2に指示すると(シーケンスSeq21A)、中継装置2は、図6の場合と同様、セッションID初期化プログラムを起動する。セッションID初期化プログラムとは、図10の以下の動作の流れを制御するプログラムのことを言う。なお、起動とは、図6の場合と同様、セッションID初期化プログラムの動作の契機を与えることを意味し、セッションID初期化プログラムは、例えば、中継装置2のCPU上で動作するアプリケーションなどにより実行される。
中継装置2は、セッションID初期化プログラムの動作にしたがい、まず、セッションID初期値生成において、セッションIDの初期値を生成する(シーケンスSeq22A)。セッションIDの初期値の生成方法としては、例えば、中継装置2に備えられているCPU等の演算部において乱数値を発生させ、発生した乱数値をセッションIDの初期値とするなどの方法がある。
しかる後、中継装置2は、検針メータ1に対して、メータセッションID初期化要求を送信する(シーケンスSeq23A)。該メータセッションID初期化要求は、セッションID初期値生成処理において生成したセッションIDの初期値を、メータセッションIDの初期値として通知するものである。ここで、中継装置2は、前記セッションID初期化生成処理において生成したセッションIDの初期値を該メータセッションID初期化要求内および後述のサーバセッションID初期化要求内に設定する動作を行うが、その後は廃棄してしまい、該セッションIDの初期値を中継装置2内に記憶して保持するような動作は行わない。
中継装置2からのメータセッションID初期化要求を受け取った検針メータ1は、メータセッションID初期値において、中継装置2から受け取ったセッションIDの初期値を、セッションID変数として設定する(シーケンスSeq24A)。この結果、該セッションIDの初期値は、メータセッションIDの初期値として記憶される。
メータセッションID初期化の動作を終了すると、検針メータ1は、メータセッションID初期化応答を中継装置2に対して送信する(シーケンスSeq25A)。該メータセッションID初期化応答には、中継装置2において、検針メータ1側のメータセッションID初期化の動作が正しく実行されたか否かを判定するための情報が含まれている。
中継装置2は、検針メータ1からメータセッションID初期化応答を受け取ると、メータセッション初期化の動作が正しく実行されたことを確認した後、サーバセッションID初期化要求において、検針サーバ3に対して前記セッションID初期値生成において生成したセッションIDの初期値を送信する(シーケンスSeq26A)。
検針サーバ3は、中継装置2からサーバセッションID初期化要求としてセッションIDの初期値を受け取ると、図6の場合と同様、サーバセッションID初期化を起動する。検針サーバ3は、サーバセッションID初期化において、図6の場合と同様、前記サーバセッションID初期化要求で受信したセッションIDの初期値をセッションID変数として設定する(シーケンスSeq27A)。この結果、該セッションIDの初期値は、サーバセッションIDの初期値として記憶される。つまり、検針サーバ3は、検針メータ1において記憶されているメータセッションIDの初期値の値と同一の値を、サーバセッションIDの初期値として保持する。また、該セッションIDの初期値の値は、検針メータ1と中継装置2と検針サーバ3との3つの装置が知っている値であるが、セッションID初期化シーケンス以外で使用される中継装置2およびその他の装置には、全く判らない値である。
しかる後、検針サーバ3は、図6の場合と同様、サーバセッションID初期化応答において、中継装置2に対して、前記サーバセッションID初期化の動作完了を通知する(シーケンスSeq28A)。該サーバセッションID初期化応答には、中継装置2が、検針サーバ3側のサーバセッションIDの初期化の動作が正しく実行されたか否かを判定するための情報を含んでいる。
ここで、図10に示すように、中継装置2は、シーケンスSeq22Aにおいて、セッションID初期値生成の動作を完了した際に、セッションIDタイマを起動している(シーケンスSeq29A)。該セッションIDタイマは、図6の場合と同様、中継装置2により管理されるタイマであり、メータセッションID初期化処理およびサーバセッションID初期化処理の双方があらかじめ定めた一定時間内に完了したか否かを判定するためのタイマである。
中継装置2は、前記一定時間内に、検針サーバ3からサーバセッションID初期化応答を受け取ると、図6の場合と同様、セッションIDタイマの計時動作を停止させる(シーケンスSeq30A)。中継装置2は、メータセッションID初期化応答およびサーバセッションID初期化応答により、メータセッションID初期化処理およびサーバセッションID初期化処理が、前記一定時間内に正しく完了したことを確認することができた場合、図6の場合と同様、設定作業者5に対して、セッションID初期化完了通知を通知する(シーケンスSeq31A)。該通知を行う方法としては、例えば、中継装置2に実装されるディスプレイやLED等への出力を用いて視覚により確認する方法、スピーカへの音声出力を用いて聴覚により認識する方法、振動機能を用いて振動覚により認識する方法等が可能である。
(第2の他の実施形態)
次に、セッションID初期化シーケンスにおけるセッションID初期値生成動作に関する第2の他の動作例について、図11のシーケンスチャートを用いて説明する。図11は、セッションID初期化シーケンスにおけるセッションID初期値生成動作の流れの図6とは異なる第2の他の例を示すシーケンスチャートである。図11に示す動作例は、図6の場合とは異なり、セッションID初期値生成を検針サーバ3において行う場合の具体例を示している。なお、図6の場合と同様、図11には、検針システムを構成する公衆回線網4の記載は省略し、検針メータ1、中継装置2、検針サーバ3およびセッションID初期化作業を行う設定作業者5それぞれにおける作業および動作を示している。
図11のシーケンスチャートにおいて、設定作業者5が、セッションID初期化起動を中継装置2に指示すると(シーケンスSeq21B)、中継装置2は、図6の場合と同様、セッションID初期化プログラムを起動する。セッションID初期化プログラムとは、図11の以下の動作の流れを制御するプログラムのことを言う。なお、起動とは、図6の場合と同様、セッションID初期化プログラムの動作の契機を与えることを意味し、セッションID初期化プログラムは、例えば、中継装置2のCPU上で動作するアプリケーションなどにより実行される。
中継装置2は、セッションID初期化プログラムの動作にしたがい、まず、検針サーバ3に対して、サーバセッションID初期化要求を送信する(シーケンスSeq22B)。該セッションID初期化要求は、検針サーバ3における次の動作となるサーバセッションID初期値生成処理、サーバセッションID初期化処理、サーバセッションID初期化応答を行うきっかけとなる情報である。
検針サーバ3は、中継装置2からのセッションID初期化要求を受け取ると、サーバセッションID初期値生成において、セッションIDの初期値を生成する(シーケンスSeq23B)。セッションIDの初期値の生成方法としては、例えば、検針サーバ3に備えられているCPU等の演算部において乱数値を発生させ、発生した乱数値をセッションIDの初期値とするなどの方法がある。
しかる後、検針サーバ3は、サーバセッションID初期化において、サーバセッションID初期値生成において生成したセッションIDの初期値を、セッションID変数の初期値として設定する(シーケンスSeq24B)。この結果、該セッションIDの初期値は、サーバセッションIDの初期値として記憶される。
検針サーバ3は、サーバセッションID初期化の動作が完了すると、中継装置2に対して、サーバセッションID初期化応答を送信する(シーケンスSeq25B)。該サーバセッションID初期化応答は、サーバセッションID初期値生成において生成したセッションIDの初期値(すなわち、サーバセッションIDの初期値)を含む情報である。
検針サーバ3からのサーバセッションID初期化応答を受け取った中継装置2は、検針メータ1に対して、メータセッションID初期化要求を送信する(シーケンスSeq26B)。該メータセッションID初期化要求は、検針サーバ3から受け取ったサーバセッションID初期化応答により通知されたセッションIDの初期値を含む情報である。ここで、中継装置2は、前記サーバセッションID初期化応答に含まれているセッションIDの初期値を該メータセッションID初期化要求内に設定する動作を行うが、該セッションIDの初期値を中継装置2内に記憶するような動作は行わない。
中継装置2からのメータセッションID初期化要求を受け取った検針メータ1は、図10の場合と同様、メータセッションID初期化において、中継装置2から受け取ったセッションIDの初期値を、セッションID変数として設定する(シーケンスSeq27B)。この結果、該セッションIDの初期値は、メータセッションIDの初期値として記憶される。つまり、検針メータ1は、検針サーバ3において記憶されているサーバセッションIDの初期値の値と同一の値を、メータセッションIDの初期値として保持する。また、該セッションIDの初期値の値は、検針サーバ3と検針メータ1との2つの装置が知っている値であるが、中継装置2等の他の装置には、全く判らない値である。
メータセッションID初期化の動作を終了すると、検針メータ1は、図10の場合と同様、メータセッションID初期化応答を中継装置2に対して送信する(シーケンスSeq28B)。該メータセッションID初期化応答には、中継装置2において、検針メータ1側のメータセッションID初期化の動作が正しく実行されたか否かを判定するための情報が含まれている。
中継装置2は、検針メータ1からメータセッションID初期化応答を受け取ると、検針サーバ3に対してメータセッションID初期値完了通知を送信する(シーケンスSeq29B)。該メータセッションID初期値完了通知には、検針メータ1から受け取ったメータセッションID初期化応答に含まれていた、検針メータ1側のメータセッションID初期化の動作が正しく実行されたか否かを判定するための情報が含まれている。
ここで、図11に示すように、検針サーバ3は、シーケンスSeq23Bにおいて、サーバセッションID初期値生成の動作を完了した際に、セッションIDタイマを起動している(シーケンスSeq30B)。該セッションIDタイマは、図6の場合とは異なり、検針サーバ3により管理されるタイマであり、サーバセッションID初期化処理およびメータセッションID初期化処理の双方があらかじめ定めた一定時間内に完了したか否かを判定するためのタイマである。
検針サーバ3は、前記一定時間内に、中継装置2からメータセッションID初期化完了通知を受け取ると、セッションIDタイマの計時動作を停止させる(シーケンスSeq31B)。
さらに、検針サーバ3は、サーバセッションID初期化処理およびメータセッションID初期化処理の双方があらかじめ定めた一定時間内に完了したことを確認することができた場合、中継装置2に対して、メータセッションID初期化完了通知応答を送信する(シーケンスSeq32B)。
中継装置2は、検針サーバ3からメータセッションID初期化完了通知応答を受け取ると、設定作業者5に対して、セッションID初期化完了通知を通知する(シーケンスSeq33B)。該通知を行う方法としては、例えば、中継装置2に実装されるディスプレイやLED等への出力を用いて視覚により確認する方法、スピーカへの音声出力を用いて聴覚により認識する方法、振動機能を用いて振動覚により認識する方法等が可能である。
(第3の他の実施形態)
次に、セッションID初期化シーケンスにおけるセッションID初期値生成動作に関する第3の他の動作例について、図12のシーケンスチャートを用いて説明する。図12は、セッションID初期化シーケンスにおけるセッションID初期値生成動作の流れの図6とは異なる第3の他の例を示すシーケンスチャートである。図12に示す動作例は、図6の場合とは異なり、メータセッションID初期化およびサーバセッション初期化の処理を検針メータ1および検針サーバ3それぞれにおいてあらかじめ定めた既知の値を用いて行う場合の具体例を示している。なお、図6の場合と同様、図12には、検針システムを構成する公衆回線網4の記載は省略し、検針メータ1、中継装置2、検針サーバ3およびセッションID初期化作業を行う設定作業者5それぞれにおける作業および動作を示している。
図12のシーケンスチャートにおいて、設定作業者5が、セッションID初期化起動を中継装置2に指示すると(シーケンスSeq21C)、中継装置2は、図6の場合と同様、セッションID初期化プログラムを起動する。セッションID初期化プログラムとは、図12の以下の動作の流れを制御するプログラムのことを言う。なお、起動とは、図6の場合と同様、セッションID初期化プログラムの動作の契機を与えることを意味し、セッションID初期化プログラムは、例えば、中継装置2のCPU上で動作するアプリケーションなどにより実行される。
中継装置2は、セッションID初期化プログラムの動作にしたがい、まず、検針サーバ3に対して、サーバセッションID初期化要求を送信する(シーケンスSeq22C)。該サーバセッションID初期化要求は、検針サーバ3において次の動作となるサーバセッションID初期化処理、サーバセッションID初期化応答を行うきっかけとなる情報である。
検針サーバ3は、中継装置2からのサーバセッションID初期化要求を受け取ると、サーバセッションID初期化において、セッションIDの初期値としてあらかじめ定めた既知の値を、セッションID変数の初期値として設定する(シーケンスSeq23C)。この結果、該セッションIDの初期値は、サーバセッションIDの初期値として記憶される。
検針サーバ3は、サーバセッションID初期化の動作が完了すると、中継装置2に対して、サーバセッションID初期化応答を送信する(シーケンスSeq24C)。該サーバセッションID初期化応答は、検針サーバ3においてサーバセッション初期化の動作が正常に実施されたか否かを中継装置2に対して通知するための情報を含んでいる。
中継装置2は、検針サーバ3から正常にサーバセッション初期化の動作が実施されたことを示すサーバセッションID初期化応答を受け取った場合、次に、検針メータ1に対して、メータセッションID初期化要求を送信する(シーケンスSeq25C)。該メータセッションID初期化要求は、検針メータ1において次の動作となるメータセッションID初期化処理、メータセッションID初期化応答を行うきっかけとなる情報である。
検針メータ1は、中継装置2からのメータセッションID初期化要求を受け取ると、メータセッションID初期化において、セッションIDの初期値としてあらかじめ定めた既知の値を、セッションID変数の初期値として設定する(シーケンスSeq26C)。この結果、該セッションIDの初期値は、メータセッションIDの初期値として記憶される。
検針サーバ3は、メータセッションID初期化の動作が完了すると、中継装置2に対して、メータセッションID初期化応答を送信する(シーケンスSeq27C)。該メータセッションID初期化応答は、検針メータ1においてメータセッション初期化の動作が正常に実施されたか否かを中継装置2に対して通知するための情報を含んでいる。ここで、検針メータ1における前記既知の値は、検針サーバ3における前記既知の値と同一の値であり、メータセッションIDの初期値の値とサーバセッションIDの初期値の値とは、同一の値である。また、該既知の値、すなわち、メータセッションIDの初期値の値とサーバセッションIDの初期値の値とは、検針サーバ3と検針メータ1とのそれぞれの装置が知っている値であるが、中継装置2等の他の装置には、全く判らない値である。
ここで、図12に示すように、中継装置2は、シーケンスSeq22Cにおいて、サーバセッションID初期値要求の動作を完了した際に、セッションIDタイマを起動している(シーケンスSeq28C)。該セッションIDタイマは、図6の場合と同様、中継装置2により管理されるタイマであり、サーバセッションID初期化処理およびメータセッションID初期化処理の双方があらかじめ定めた一定時間内に完了したか否かを判定するためのタイマである。
中継装置2は、前記一定時間内に、検針メータ1からメータセッションID初期化応答を受け取ると、図6の場合と同様、セッションIDタイマの計時動作を停止させる(シーケンスSeq29C)。中継装置2は、サーバセッションID初期化応答およびメータセッションID初期化応答により、サーバセッションID初期化処理およびメータセッションID初期化処理が、前記一定時間内に正しく完了したことを確認することができた場合、図6の場合と同様、設定作業者5に対して、セッションID初期化完了通知を通知する(シーケンスSeq30C)。該通知を行う方法としては、例えば、中継装置2に実装されるディスプレイやLED等への出力を用いて視覚により確認する方法、スピーカへの音声出力を用いて聴覚により認識する方法、振動機能を用いて振動覚により認識する方法等が可能である。
以上、本発明の好適な実施形態の構成を説明した。しかし、かかる実施形態は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。