以下に添付図面を参照して、この発明にかかる暗号化装置、復号化装置、および経路探索システムの実施の形態を詳細に説明する。
(第1の実施の形態)
図1は、第1の実施の形態における地図データ配信システム1の概略を示す構成図である。図1において、点線はデータの流れの概略を表している。地図データ配信システム1は、地図暗号化装置101、地図格納装置102と、鍵管理装置103と、地図配信装置104と、地図閲覧装置105と、地図復号装置106とを含んで構成され、これらの各装置がネットワーク100を介して接続されている。
地図暗号化装置101は、暗号化定義情報生成部110と、暗号化処理部111とを含んで構成されている。暗号化定義情報生成部110は、暗号化される前の地図データである平文地図データ120から暗号化定義情報121を生成し、暗号化処理部111は、暗号化定義情報121、平文地図データ120と暗号化鍵122から、暗号化地図データ124を生成するものである。なお、暗号化定義情報121の具体的な内容については後述する。
地図格納装置102は、データベース処理部112を有し、暗号化地図データ124を格納する。ここで、データベース処理部112は、例えば、SQL(Structured Query Langage)やGIS製品(Geographic Information System)のAPI(Application Program Interface)を用いて、地図配信装置104からの要求に応じて、検索や登録、削除、変更など、暗号化地図データ124に関する種々の処理を行う。
鍵管理装置103は、鍵生成部113を含んで構成される。鍵生成部113は、暗号化に利用する暗号化鍵122と対応する復号鍵123を生成する。ここで、鍵生成部1113が生成する暗号化鍵122、復号鍵123は、RSAなどの公開鍵暗号技術における公開鍵、秘密鍵であってもよいし、AES(Advanced Encryption Standard)などの共通鍵暗号技術における共有鍵であってもよい。
地図配信装置104は、クエリ処理部117を含んで構成されている。クエリ処理部117は、地図閲覧装置105内のクエリ要求部115からの要求を受け付け、クエリの解析を行い、地図復号装置106の表示用イメージ生成部1142が生成した表示用地図データを受けると、地図閲覧装置105へ返信して表示させるための地図データを作成する。
地図閲覧装置105は、クエリ要求部115と、表示処理部118とを含んで構成されている。ここで、クエリ要求部115は、地図配信装置104へ、地図データの検索などのクエリを送信し、地図配信装置104から返信された地図データを受信して、表示処理部118が地図データを表示する。地図閲覧装置105が受信した地図データは、後述するように、地図復号装置106の復号処理部116が復号鍵123を用いて復号処理を行ったものである。
地図復号装置106は、経路探索処理部1141と、表示用地図イメージ生成部1142と、復号処理部116とを含んで構成される。表示用地図イメージ生成部1142は、復号処理部116が地図配信装置104のクエリ処理部117から表示用地図データを復号する要求を受けて復号した表示用地図データを送る。経路探索処理部1142は、地図配信装置104から経路探索用データを受信した場合に、経路探索を行う。経路探索の具体的な処理については後述する。復号処理部116は、復号鍵123を用いて、暗号化地図データ124の復号を行う。なお、以下の説明では、地図復号装置106を単独の装置として説明を行うが、地図復号装置106は地図配信装置104の一部であってもよいし、地図復号装置106は、地図閲覧装置105の一部として構成されていてもよい。
図2は、図1に示した地図データ配信システム1を構成する各装置の構成図である。図2に示すように、図1に示した地図データ配信システム1を構成する各装置は、CPU(Central Processor Unit)201、RAM(Random Access Memory)202、入力装置203、表示装置204、通信装置205、読書装置206、及び、外部記憶装置207がインターフェイス205を介して接続された、一般的な構成を有するコンピュータ(電子計算機)200として構成される。
入力装置203は、例えば、キーボードやマウスなどであり、表示装置204は、表示用ディスプレイ、外部記憶装置207は、HDD(Hard Disk Drive)などである。また、通信装置205はネットワークを介して他の装置と通信を行うための通信インターフェイスである。さらに、読書装置206は、FD(Floppy(登録商標) Disk)やUSBメモリ、或いは、CD−Rといった外部記憶媒体208から、データの読込み、或いは、書込みを行うための装置である。
CPU201は、RAM202上にロードしたプログラムを実行することによって、図1に示した各装置の各処理部(暗号化処理部111など)をプロセスとして具現化する。また、インターフェイス209は、装置内の各構成要素間のデータを送受信する内部パスである。
図3および図4は、地図データ配信システム1において行われる処理のシーケンス図である。まず、図3について説明する。図3は、地図閲覧装置105から経路探索要求があった場合に、利用者の種別に応じて経路探索を行って、その種別に応じた地図データを地図閲覧装置105に表示させるための暗号化地図データ124を登録する処理(以下、登録処理と呼ぶ。)の処理手順を示すフローチャートである。
この登録処理は、地図データ配信システム1が行う処理のうち、地図閲覧装置105に地図データを配信する前に、例えば、地図データ配信システム1を利用するユーザを登録するタイミングで、あらかじめ管理者等によって行われるものである。登録処理では、鍵管理装置103での鍵生成と、地図暗号化装置101、地図閲覧装置105への送信、及び、平文地図データの暗号化、暗号化された地図データの地図格納装置102での格納までの処理を行う。
図3に示すように、登録処理が開始されると(ステップS300)、鍵管理装置103は、利用者に応じた暗号化鍵122、復号鍵123を生成し(ステップS301)、生成した復号鍵123を地図復号装置106に送信する(ステップS302)。
地図復号装置106は、復号鍵123を受信すると、受信したその復号鍵123を、外部記憶装置207等の記憶装置に格納し(ステップS303)、その後、鍵管理装置103は、暗号化鍵122を地図暗号化装置101に送信する(ステップS304)。
暗号化鍵122を受信すると、地図暗号化装置101は、受信した暗号化鍵122を外部記憶装置207等の記憶装置に格納し(ステップS305)、暗号化定義情報生成部110は、平文地図データ120を用いて、暗号化定義情報121を生成する(ステップS306)。
ここで、暗号化定義情報121とは、後述するノード、およびノード間の関係を表すリンクから構成される経路探索用データを、開示対象となる利用者(あるいは利用者の種別)を、ノードと対応付けて記憶するものである。
なお、この暗号化定義情報121は、地図データ配信システム1が取り扱う平文地図データ120に対して作成されるものであり、具体的な内容については図6を用いて後述する。また、暗号化定義情報121として記述されるデータの内容(例えば、どのノードをどの利用者に対して開示させるのか)については、あらかじめ管理者等によって定められ、その設定にしたがって暗号化定義情報121が生成されるものとする。
そして、地図暗号化装置101の暗号化処理部111は、暗号化定義情報121と平文地図データ120、暗号化鍵122から暗号化地図データ124を生成し、生成した暗号化地図データ124を地図格納装置102に送信する(ステップS307)。このステップS307の具体的な処理(暗号化処理)については、図7を用いて後述する。
地図格納装置102は、地図暗号化装置101から暗号化地図データ124を受信して、その暗号化地図データ124を格納し(ステップS308)、図3に示す登録処理が終了する(ステップS309)。この登録処理が終了すると、利用者毎の暗号化鍵122および復号鍵123と、暗号化地図データ124と、暗号化定義情報121とが生成される。
ここで、ステップS302において、鍵管理装置103が復号鍵123を地図復号装置106に送信する場合、および暗号化鍵122、復号鍵123として共通鍵暗号技術における共有鍵を用いたこれらの鍵を生成し、ステップS304において、鍵管理装置103が地図暗号化装置101に暗号化鍵122を送信する場合、外部記憶媒体を利用して直接配送するか、あるいは暗号化通信を用いて送信することが望ましい。また、公開鍵暗号技術における秘密鍵や共通鍵暗号技術における共有鍵は、例えばICカードやHSM(Hardware Security Module)などの耐タンパ性を有するデバイス内に格納しておくことが望ましい。
一方、公開鍵暗号技術における公開鍵は、一般に公開することが可能であるので、HTTP(Hyper Text Transfer Protocol)などの一般的な通信路を用いてもよい。ただし、例えば、鍵管理装置103が公開鍵に対して公開鍵証明書を発行し、暗号化装置101で使用する暗号化鍵122に誤りや改ざんがないことを、公開鍵証明書を用いて確認することが望ましい。
図4は、地図データ配信システム1が、利用者から地図の経路探索要求を受け付けて、その結果を利用者に表示するための処理(以下、経路処理と呼ぶ。)の処理手順を示すフローチャートである。図4では、地図配信装置104から地図閲覧装置105に地図データを配信し、地図閲覧装置105で表示するまでの処理フローを表している。なお、本処理フローにおいては、主に、地図閲覧装置105からの経路探索要求の送信、地図配信装置104でのクエリ解析、地図格納装置102を利用した検索の実行と地図閲覧装置105への送信、及び、地図閲覧装置105での復号、表示処理が行われる。
図4に示すように、地図データ配信システム1が、利用者から地図データの経路探索要求を受け付け、経路処理が開始されると(ステップS400)、地図閲覧装置105のクエリ要求部115は、地図配信装置104に、受け付けられた経路探索要求を送信する(ステップS401)。
そして、地図配信装置104のクエリ処理部117は、地図閲覧装置105から送信された経路探索要求を構成しているクエリを解析し、解析した結果に従って、地図格納装置102に対して経路探索用データの検索要求を送信する(ステップS402)。
地図格納装置102のデータベース処理部112は、地図配信装置104から検索要求を受信し、その検索要求に従って、図3に示した登録処理によって登録された暗号化地図データ124あるいは地図暗号化装置101の平文地図データ120にアクセスして検索処理を実行し、検索結果(例えば、出発地、目的地、および途中のノードの座標データやノードIDを含む情報)を経路探索用データとして地図配信装置104に返信する(ステップS403)。
続いて、地図配信装置104のクエリ処理部117は、地図格納装置102から経路探索用データを受信し、受信した経路探索用データを、地図復号装置106に送信し(ステップS404)、地図復号装置106の経路探索処理部1141および復号処理部116は、受信した経路探索用データを参照して経路探索を実行し、経路探索結果を地図配信装置104に送信する(ステップS405)。なお、ステップS405の具体的な処理(復号化処理)については、図8を用いて後述する
そして、地図配信装置104のクエリ処理部117は、経路探索結果を受信し、受信した経路探索結果を参照して表示用地図データの検索要求を地図格納装置102に送信し(ステップS406)、地図格納装置102のデータベース処理部112は、表示用地図データの検索要求にしたがって表示用地図データの検索を行い、その検索結果を地図配信装置104に送信する(ステップS407)。
地図配信装置104のクエリ処理部117は、表示用地図データの生成要求を地図復号装置106に送信し(ステップS408)、地図復号装置106の表示用地図イメージ生成部1142および復号処理部116が暗号化地図データ124を復号化した表示用地図イメージを生成し、地図配信装置104に送信する(ステップS409)。
その後、地図配信装置104のクエリ処理部117は、表示用地図イメージを地図閲覧装置105に送信し(ステップS410)、地図閲覧装置105のクエリ要求部115は、表示用地図イメージを受信し、表示処理部118が、地図閲覧装置105の表示装置204に表示用地図イメージを表示させ(ステップS411)、図4に示す検索処理が終了する(ステップS412)。
る。
ステップS401において、地図閲覧装置105から地図配信装置104への経路探索要求の送信に先立ち、後述するように、暗号化鍵122と復号鍵123とが利用者ごとに定められているため、利用者とこれらの鍵とを対応させるため、地図配信装置104は地図閲覧装置105のユーザ認証を行うことが望ましい。このため、地図配信装置104のクエリ処理部117が、地図閲覧装置105の装置固有の装置ID(例えば、MACアドレス(Media Access Control Address)等)を利用し、地図閲覧装置105からの認証用の情報を受け付けることによってユーザ認証を行えばよい。或いは、地図閲覧装置105を利用するユーザのID/PW(Password)の入力を求め、これを利用してユーザ認証を行ってもよいし、SSL(Secure Sockets Layer)などの暗号技術を用いた認証や生体情報を利用したユーザ認証を利用してもよい。
また、上記のユーザ認証の結果、地図閲覧装置105に開示すべきでない情報が明らかな場合(ある利用者に対して非開示とする範囲が明らかな場合)には、ステップS402における地図格納装置102への経路探索用データの検索要求において、開示すべきでない情報を含む範囲を除いた検索要求を行い、開示可能な範囲のみの検索要求を行ってもよい。例えば、上記のユーザ認証の結果、ユーザが非開示領域すべてに対して閲覧権限を持たない場合には、ステップS403の地図格納装置102からの検索結果の送信には、開示範囲のみの経路探索用データを含めればよい。
ステップS401における経路探索要求の送信では、例えば、現在位置(出発地)と目的地の座標情報(以下、単に位置情報と呼ぶこともある。)が地図配信装置104に送信される。ステップS402およびS403においては、地図配信装置104のクエリ処理部117は、その位置情報を元に地図格納装置102に対し検索処理を行い、現在位置および目的地に最も近いノードを出発地ノードおよび目的地ノードとし、経路探索に必要な経路探索用データと対応する暗号化データを地図格納装置102から取得する。このとき、経路探索に必要なデータは、例えば、探索範囲が建物の1階のみや町内など、限られた範囲であることが明らかである場合には、特定の範囲のみを探索に用いる経路探索用データとして取得すればよい。
また、ステップS402およびS403の処理は対話的に行ってもよい。例えば、ステップS401から送信された経路探索要求の出発地や目的地が地名や部屋の名称などである場合には、地図配信装置104が地図格納装置102に問い合わせを行い、名称から地物を特定し、地物に関連づけられたノード、或いは、地物の位置からノードを特定すればよい。
或いは、出発地ノード、または、目的地ノードが暗号化されている場合には、地図配信装置104が、経路探索要求に含まれる位置情報から地物を特定し、特定された地物に関連する暗号化データを地図格納装置102から取得し、地図配信装置104が地図復号装置106にその暗号化データを送信し、地図復号装置106が暗号化データを復号して地物のノードを取得すればよい。なお、経路探索用データの詳細については後述する。
或いは、上記の地名や部屋名称から出発地、或いは、目的地を特定する場合においても、地物そのもの、或いは、地物の属性情報が暗号化されている等の理由により、直接地物を特定できない場合がある。この場合には、例えば、地図格納装置102が、暗号化地図データ124以外に、上記地名や部屋の名称等を含むキーワードリストを、暗号化された地物、或いは属性情報に対応付けて記憶し、これらを管理するようにしてもよい。このようなキーワードリストを作成することによって、上記の地名や部屋名称といったキーワード検索に対応することが可能となる。
また、キーワードリストには、キーワードそのものを保管するのではなく、例えば、SHA−1などの暗号学的ハッシュ関数を用いることによって、ハッシュ値を生成し、これを保管してもよい。暗号学的ハッシュ関数の一方向性の性質から、キーワードリストに格納されたハッシュ値からもとのキーワードを知ることが困難になる。さらに、各キーワードは、上述したようなユーザ認証によって利用可能なキーワードを制限することが望ましい。なお、キーワードリストの作成方法については、上記に限らず、他の方法を利用してもよい。
また、地図復号装置106の復号処理において、暗号化データが復号できなかった等の理由により、以上に示したいずれかの方法で、出発地ノード、目的地ノードが得られなかった場合には、「目的地が見つかりません」などのエラーを地図閲覧装置105に送信し、処理を終了する。
なお、ステップS405までの処理によって経路探索が終了する。経路探索の結果は、上述したノードとリンクの集合である。ステップS406では、経路探索結果によって得られるノードの座標情報、或いは、関連付けられた地物を元に再度地図格納装置102に検索要求を送信し、経路探索結果を記載した周辺地図画像を作成する。なお、ステップS407から検索結果に暗号化データが含まれている(経路探索用データ以外の地図データそのものが暗号化されている)場合には、ステップS409内で復号処理を行い、地図データの復元を行ってもよい。
上記のステップS402からステップS405の処理は、繰り返し行ってもよい。例えば、経路探索の範囲が大きい場合や地図送信装置105からの経路探索要求の送信(ステップS401)が経由地を指定している場合には、経由地を目的地ノード、或いは、出発地ノードとして、ステップS402からステップS405までの処理を複数回繰り返して処理を行ってもよい。
ステップS410の地図閲覧装置105への表示用地図イメージの送信においては、上記ステップS409で生成された経路探索結果を表示した周辺地図画像だけではなく、例えば、タイトルやコスト(例えば、移動時間や料金)などをHTML(Hypertext Markup Language)で成形して送信してもよい。なお、この処理は、ステップS409内で行ってもよい。
次に、地図暗号化装置101が記憶する平文地図データ120のデータ構造について説明する。図5は、平文地図データ120のデータ構造の一部とその表示イメージ510を示す図である。
図5に示すように、平文地図データ120は、地図データ格納部500と、経路探索用データ格納部501とを含んで構成され、経路探索用データ格納部501には、ノード格納部502およびリンク格納部503が格納されている。ここで、ノード格納部502とリンク格納部503は、経路探索の際に用いられるデータを格納しており、ノード格納部502には経路探索用データのノードと各ノードの地図上の対応位置座標、或いは、対応地物の情報が格納される。また、リンク格納部503には、ノード格納部502内に格納されたノード間を接続するリンク情報とその移動コストの情報が格納される。ここで、移動コストとは移動に要する時間、直線距離、或いは、経費などである。なお、ノード格納部502とリンク格納部503のデータ構造については、図9を用いて後述する。
図5に示したように、地図データ格納部500には地図上の各地物の種類、名称などの属性情報とその地物の地図上での位置(座標)、形状を表すジオメトリが対応付けて構成される。なお、属性情報のうち、地図データ格納部500のFID(Feature ID)は、各地物を一意に識別するための識別子である。
また、図5の下部には、経路探索の結果、地図閲覧装置105に表示される表示イメージ510を示している。表示イメージ510は、地図データ格納部500内に格納された地物のオメトリ、属性情報、および、ノード格納部502、リンク格納部503内に格納された位置情報とノード間の接続情報にしたがって作成される。
なお、図5に示した平文地図データ120の地図データ格納部500は、上述した各種のデータが表形式で表現されているが、これに限らずともよい。例えば、GIS(Geographic Information System)には、単純な表形式ではなく、例えば地物を最小単位(オブジェクト、フィーチャなどと呼ぶ)とし、同一の性質、或いは、場所に存在する複数のフィーチャをまとめてコンテナと呼ばれる単位にまとめ、管理し、コンテナを地図の構造(例えば、建物の構造等)に応じて配置することによって、木構造を用いて表現するものもある。このような場合でも、図5の表の各行を上記のフィーチャとして扱うことによって、同様に適用可能である。
続いて、暗号化定義情報121について説明する。図6は、暗号化定義情報121の一例を示す図である。図6に示すように、暗号化定義情報121には、暗号化対象となるノードと、経路探索要求を行う利用者とが対応付けて記述されている。なお、以下では、これらの情報がXML(eXtensible Markup Language)をもちいて記述されているものとして説明している。
暗号化定義情報121は、経路を検索するための要素として、暗号化対象ノード要素から構成される。暗号化対象ノード要素内には、暗号化対象となるノードを指定するノードリスト要素と、開示先を設定するための開示先リスト要素がある。ノード要素には暗号化対象となるノードIDを記述し、開示先要素に開示先の利用者、或いは、利用者の種別を一意に特定する識別子等を記述することによって、それぞれ、ノード、利用者を特定する。図6に示した例では、暗号化対象ノードとして、ノードID(NID)が「N01」および「N02」のノードが記述され、開示先リストとして、「ユーザA」および「ユーザB」が記述され、これらのノードは、ユーザAおよびユーザBにのみ開示することを示している。
ここで、利用者を一意に識別するための識別子とは、例えば、社員番号や会員番号、e−mailアドレス等を用いればよい。なお、ノード要素、開示先要素を同一の暗号化対象ノード要素内で複数指定する理由は、開示先が同一であるノードをまとめ、開示先を複数指定可能とするためである。このように、暗号化対象ノードを複数指定することで、開示先の異なる複数のノードリストを設定することが可能である。
本実施例では、暗号技術、すなわち、復号鍵123の有無に応じて開示先の制限を行うため、開示先要素には利用者、或いは、利用者の種別を特定する識別子ではなく、復号鍵に対応する暗号化鍵122の識別子、或いは、参照先を記述するようにしてもよい。上記の開示先要素に利用者、或いは、利用者の識別子を記述した場合には、記述された識別子から暗号化鍵122、或いは、その参照先を特定し、暗号化処理時に暗号化鍵122を利用する。
なお、図6に示した暗号化定義情報121は、開示先リストや開示先などの要素名は異なるものであってもよい。また、ASN.1など、XML以外の他のデータ表現を用いてもよい。また、例えば地物そのもの、或いは、地物の属性情報、ジオメトリなど、経路探索用データ以外のデータの開示先を制限する場合には、暗号化定義情報要素内に暗号化対象ノードとは異なる子要素を追加し、開示先の設定を行えばよい。
続いて、図3に示したステップS307(暗号化処理)、図4に示したステップS405(復号化処理)、および暗号化処理前後でのデータ構造の変化について説明する。まず、暗号化処理の前後におけるデータ構造の変化を、図9を用いて説明する。なお、図9は、図5に例示した表示イメージ510の経路探索用データ格納部501の一部を例示した図である。前述の通り、経路探索用データ格納部501は、経路探索用データを構成するノードとリンクのうち、ノードに関する情報を格納するノード格納部502と、リンクに関する情報を格納するリンク格納部503から構成される。
図9は経路探索用データ格納部501の例を示す図である。図9に示すように、経路探索用データ格納部501aのノード格納部502aには、各ノード情報を格納するため、ノードを一意に識別する識別子であるNIDと、ノードの地図上の位置情報を表す座標と、暗号化処理後に隣接ノードが暗号化されているか否かを表す復号フラグと、を含んで構成される。また、リンク格納部503aは、リンクを一意に識別するための識別子、接続関係のうち始点側のノードを特定するための始点NIDと、終点側のノードを特定するための終点NIDと、ノード間の移動コストを表すコストと、を含んで構成される。
なお、始点NIDおよび終点NIDは、ノード間の一方向への移動を表すためのものであり、ノード間の接続関係が全て両方向である場合には、始点NID、終点NIDの区別は不要である。また、始点NID、終点NIDの区別がある場合に、双方向での移動コストを表現する場合には、始点NIDと終点NIDを入れ替えたデータを別途入力する、或いは、リンク格納部503aに双方向であることを表すためのデータを新たに追加するなどすればよい。また、図9に示したリンク格納部503aは、コストの一例として移動時間のみを格納しているが、これ以外にも複数のコストを格納してもよい。例えば、車や自転車、徒歩など利用者の移動方法などに応じて、移動距離や時間等の複数のコストを格納するようにしてもよい。以下では、コストがひとつである場合について説明を行うが、複数格納されている場合でも、同様の手順で暗号化を行うことが可能である。
図9に示したノード格納部502a、リンク格納部503aには、例えば、名称や補足説明、或いは、関連する地物のFIDなどの情報を含んでもよい。なお、ノード格納部502a内の復号フラグは暗号化後に必要となるデータであるため、経路探索用データ格納部501aにはなくてもよい。
暗号化経路探索用データ504aは、経路探索用データ501aのうち、NIDがN5のノードを暗号化した場合の暗号化結果を表している。暗号化経路探索用データ504aは、ノード格納部502aと、リンク格納部503aと、暗号化データ部505aと、を含んで構成されている。
暗号化データ部505aは、ノード、及びリンクを暗号化した結果を格納する暗号化データと、暗号化データを一意に識別するための識別子であるCIDと、復号時に復号すべき暗号化データを特定するためのFIDとNIDとを含む関連データと、を含んで構成される。
本実施例で説明するように、地図暗号化装置101の暗号化処理部111が行う経路探索データの暗号化では、暗号化対象となるノード、及びそのノードに接続された全てのリンク(例えば、図9に示した太枠部分)を、暗号化後のノード格納部502a、およびリンク格納部503aから削除し、暗号化対象のノードの全ての隣接ノードの復号フラグをT(TRUE)に設定する。なお、復号フラグがTでないノードには、F(FALSE)を設定する。
暗号化対象となるノードとそれに接続された全リンク(以下、これら暗号化を行うデータを暗号化対象データと呼ぶ。)は、暗号化定義情報121の開示先要素の設定に従い暗号化を行い、その暗号化結果のBASE64符号化した結果を暗号化データに格納する。なお、暗号化データには、ノードとリンクに関する全てのデータの暗号化結果を格納することが必要となるが、これには例えばXMLなどを用いてNID、座標などの各データを構造化した結果をBASE64符号化した結果を格納すればよい。
上記の暗号化対象データの暗号化にあたっては、暗号化対象データを開示先ごとに暗号化鍵122を用いて個別に暗号化し、その結果を、XMLなどを用いて整形し、暗号化データ部505aに書き込んでもよいし、例えば、以下のようにしてもよい。
まず、鍵管理装置103の鍵生成部113が共通鍵暗号技術におけるランダムな共有鍵(以下、セッション鍵と呼ぶ。)を暗号化対象ノードごとに別々に生成し、地図暗号化装置101に送信する。次に、地図暗号化装置101の暗号化処理部111は、暗号化対象ノードごとに生成されたセッション鍵を暗号化定義情報121内の開示先ごとに以下のように暗号化する。
まず、各暗号化対象ノードに設定された開示先に、現在処理を行っている開示先と一致する開示先が存在すれば、現在処理を行っている暗号化対象ノードのセッション鍵をセッション鍵暗号化リストに加える。これを全ての暗号化対象ノードに対して繰り返すことにより、現在処理中の開示先が復号可能な暗号化対象ノードのセッション鍵のセッション鍵暗号化リストが作成される。次に生成されたセッション鍵暗号化リストを集約し、その開示先の暗号化鍵122を用いて暗号化する。以下、同様の処理を全ての開示先に対して繰り返し、その結果を、XMLなどを用いて整形し、暗号化データ部505aに書き込めばよい。上記では、暗号化対象ノードごと暗号化しているが、前述のようにノード格納部503aが複数のコストを含む場合には、個々のコストごとにセッション鍵を割り当てるようにしてもよい。
なお、上記のセッション鍵暗号化リストの暗号化鍵122による暗号化において、復号時に暗号化対象ノードの完全性を保証するための暗号化対象ノードのハッシュ値や、MAC(Message Authentication Code)などを含めてもよい。上記の暗号化処理は、選択的開示型暗号と呼ばれ、特開2009−499731などで公開されているものである。
経路探索では、ダイクストラ法、或いはダイクストラ法を改良した経路探索アルゴリズムが用いられる。これらの経路探索アルゴリズムでは、あるノードを起点(起点ノードと呼ぶ)として、その隣接ノードを探索し、出発地ノードから隣接ノードへの合計コストの評価を繰り返すことによって、目的地ノードまでの合計コストを求め、最終的な出発点から目的地への経路探索が行われる。ダイクストラ法は、出発地ノードから目的地ノードまでの経路を、上記の手順を中核処理として、これを繰り返して探索を行う幅優先探索の経路探索アルゴリズムである。ダイクストラ法におけるコスト評価や探索の打切り条件等を改良することによって効率的な経路探索を行うアルゴリズムが知られている(例えばA*法など)。
そして、地図復号装置106の復号処理部116が復号化処理を行う際には、上記の隣接ノードの探索の際に、まず復号すべきデータの有無を起点ノードの復号フラグによって判断する。そして、復号フラグがTであった場合には、暗号化データ部505aの関連データを参照し、復号すべき暗号化データを取得する。次に、復号処理を実行し、暗号化データが復号された場合には、復号データからノード、リンクを復元し、経路探索を継続する。
以下に、上述した暗号化処理、復号化処理の具体的な処理手順を図7、図8を用いて説明する。本実施例では、上記のダイクストラ法の中核処理の中で復号処理を行う方法を説明するが、経路探索アルゴリズムはダイクストラ法に限定されるものではなく、ダイクストラ法を拡張した他の経路探索アルゴリズムにも適用可能である。
本実施例における暗号化後には、暗号化対象ノードの全ての隣接ノードの復号フラグにはTが設定されている。経路探索アルゴリズム内で、起点ノードの復号フラグがTに設定されている場合には、暗号化データ部505a内から復号すべき暗号化データを検索し、復号処理部116に与えられた復号鍵123を用いて暗号化データを復号する。この復号によって暗号化データが復号できた場合には、ノード格納部502a、リンク格納部503aに復号されたデータを復元する。なお、暗号化データ部505a内からの復号すべき暗号化データの検索には、暗号化データ部505aの関連データを利用する。
以下、本実施例における具体的な暗号化処理、復号化処理について説明する。図7は、本実施例における暗号化処理の処理手順を示すフローチャートである。
図7に示すように、暗号化処理が開始されると(ステップS700)、地図暗号化装置101の暗号化処理部111は、平文地図データ120を構成している経路探索用データ格納部501aを暗号化経路探索用データ格納部504aにコピーし、一度、復号フラグをFにセットする(ステップS701)。
そして、暗号化処理部111は、暗号化定義情報121を参照し、暗号化すべき暗号化対象ノードの有無を判定する(ステップS702)。そして、暗号化処理部111は、暗号化すべき暗号化対象ノードがあると判定した場合(ステップS702;Yes)、ステップS703に進み、暗号化すべき暗号化対象ノードがないと判定した場合(ステップS702;No)、図7に示す暗号化処理を終了させる(ステップS710)。
暗号化すべき暗号化対象ノードがあると判定すると(ステップS702;Yes)、暗号化処理部111は、暗号化定義情報121に記述されている暗号化対象ノードを取得し(ステップS703)、リンク格納部503aを参照し、取得した暗号化対象ノードに接続された接続リンク内に未操作のリンクがあるか否かを判定する(ステップS704)。
そして、暗号化処理部111は、取得した暗号化対象ノードに接続された接続リンク内に未操作のリンクがあると判定した場合(ステップS704;Yes)、その接続リンクを関連リンクとして取得し(ステップS705)、取得した暗号化対象ノードに接続された接続リンクから暗号化対象ノードの隣接ノードを特定し、復号フラグをTに変更する(ステップS706)。そして、暗号化処理部111は、ステップS704〜S706までの処理を繰り返し行う。
一方、暗号化対象ノードに接続された接続リンク内に未操作のリンクがないと判定した場合(ステップS704;No)、暗号化処理部111は、暗号化対象ノード、及びステップS705で取得した関連リンクを暗号化し(ステップS707)、暗号化対象ノード、及びステップS705で取得した関連リンクを暗号化経路探索用データ504a内のノード格納部502a、リンク格納部503aから削除する(ステップS708)。
その後、暗号化処理部111は、ステップS707の暗号化結果を暗号化データ格納部504aに格納し(ステップS709)、ステップS702へ戻る。そして、暗号化処理部111は、暗号化定義情報121に記述された全ての暗号化対象ノードについて、繰り返しステップS702〜S709までの処理を行う。
なお、上記の暗号化処理におけるステップ702では、例えば図6に例示した暗号化定義情報121の暗号化対象ノード要素を逐次処理し、暗号化対象ノードがなくなるまで繰り返せばよい。このような逐次処理は、例えばXMLのSAX(Simple API for XML)を用いて実現すればよい。
また、図9の例では、暗号化対象ノード(N5)に接続されているノードは一つ(N6、リンクはL14)のみであるが(表示イメージは図5参照)、ステップS704〜S706に示した通り、暗号化対象ノードに隣接ノードが複数ある場合には、これら全ての隣接ノードに対して同様の処理を行う。
なお、ステップS708における暗号化処理はノード一つずつ行うのではなく、複数のノードをまとめて処理してもよい。この場合には、ステップS709における暗号化データの暗号化データ部505aへの書き込みは、これらをまとめて暗号化した1つの暗号化データとして行い、関連データに関連した地物、隣接ノードのNIDを全て書き込むようにしてもよい。
また、複数のノードをまとめて処理する場合において、暗号化対象となるノードが同一の領域内にある場合には、領域内の境界線にあるノードの隣接ノードに対してのみステップS705、ステップS706を実行すればよい。その理由は、暗号化データの復号によってノード、リンクが復元された場合、領域の中にあるノード、リンクがまとめて復号されるため、領域内の境界以外にあるノード、リンクに対して復号すべきか否かを調べる必要がないためである。
上記の暗号化処理によって、暗号化対象のノード、及びそれに接続されるリンク情報は、すべて暗号化経路探索用データ504aのノード格納部502a、リンク格納部503aから削除され、その暗号化結果が関連データとともに暗号化データ部505aに格納される。
なお、経路探索では、始点ノードから隣接ノードまでの検索を行ってコストを算出し、算出したコストから出発地ノードからのコスト評価を行うが、上記の暗号化処理では、暗号化されたノードの隣接ノード全ての復号フラグがTに設定される。従って、経路探索の隣接ノードの検索時に復号フラグがTであるかどうかを調べることによって、復号すべき暗号化データの有無を知ることができ、経路探索アルゴリズム内の必要箇所で復号することが可能となる。続いて、復号化処理について説明する。
図8は、本実施例における復号化処理の処理手順を示すフローチャートである。図8は、経路探索アルゴリズムにおける復号化処理を行うための処理フローを示したものであり、経路探索アルゴリズムそのものの処理については、その手順の概略のみを示している。なお、図8内の点線内が経路探索アルゴリズムの中核処理である。以下、図8に示す復号化処理について説明する。
図8に示すように、復号化処理が開始されると(ステップS800)、地図復号装置106の復号処理部116は、まず、出発地ノードを始点ノードに設定する(ステップS801)。
そして、復号処理部116は、経路探索が終了しているか否かを判定し(ステップS802)、経路探索が終了していると判定した場合(ステップS802;Yes)、図8に示す復号化処理を終了させる(ステップS810)。
一方、復号処理部116は、経路探索が終了していないと判定した場合(ステップS802;No)、始点ノードの復号フラグがTであるか否かを判定し(ステップS803)、始点ノードの復号フラグがTであると判定した場合(ステップS803;Yes)、暗号化データ部505aから暗号化データを取得し、取得した暗号化データを復号する(ステップS804)。一方、復号処理部116は、始点ノードの復号フラグがTではない(Fである)と判定した場合(ステップS803;No)、ステップS807に進む。
復号処理部116は、ステップS804で取得した暗号化データの復号に成功したか否かを判定し(ステップS805)、復号に成功したと判定した場合(ステップS805;Yes)、ステップS804における復号結果からノード、リンクを復元し、復元したノード、リンクをノード格納部502a、リンク格納部503aに追加する(ステップS806)。一方、復号処理部116は、復号に成功していない(失敗した)と判定した場合(ステップS805;No)、ステップS807に進む。
そして、復号処理部116は、ノード格納部502aとリンク格納部503aとを参照し、始点ノードの接続リンク(隣接ノード)を検索し(ステップS807)、未探索の隣接ノードがあるか否かを判定する(ステップS808)。
復号処理部116は、未探索の隣接ノードがあると判定した場合(ステップS808;Yes)、リンク格納部503a内のコスト欄を参照し、始点ノードから隣接ノードまでのコストを算出し、出発地ノードから隣接ノードまでのコスト評価を行う(ステップS809)。
一方、復号処理部116は、未探索の隣接ノードがないと判定した場合(ステップS808;No)、ステップS802に戻る。そして、復号処理部116は、ステップS802からS810の処理を経路探索が終了するまで繰り返し行う。
なお、上記のステップS804において、例えば、復号結果が正しいノードやリンクではないなどの復号が異常停止した場合には処理を停止することが望ましい。また、経路探索の過程において、目的地ノードにたどりつかないなど、経路探索が一定時間以上終了しない場合や非現実的なコスト(例えば、徒歩での移動に100年以上かかるなど)であった場合には、ステップS802において処理を停止してもよい。
上記のステップS804における復号、ステップS806におけるノードおよびリンクの復元は、単一のノードに対してではなく、複数のノード、リンクに対して行ってもよい。例えば、前述の暗号化処理時に複数のノードをまとめて暗号化した場合には、ステップS804における復号の結果には、複数のノードおよびリンクが含まれるため、ステップS806は復号されたノードおよびリンクを全て復元することになる。
なお、上記の復号処理では、経路探索アルゴリズム内で逐次復号を行っているが、事前に復号すべきデータが少ない場合(例えば、ステップ403における地図格納装置102からの応答に暗号化データが一つしか含まれていない場合など)には、図8の処理の前に復号処理をまとめて実施してもよい。
また、経路探索においては、データ管理、或いは、経路探索を効率に行うため、ビルのフロア等の階層、或いは領域ごとにデータ管理を行っている場合がある。この場合、経路探索についても、領域ごと、或いは階層別に経路探索アルゴリズムを実行し、これらの結果を繋ぎ合わせることで経路探索を実行し、図8の処理を階層、或いは領域ごとに経路探索してもよい。
このように、記憶部(あるいは地図格納装置102)が、地図上の位置を示すノードおよびノードとノードに隣接するノードとの関連性を示すリンク情報を含む経路探索用データ格納部501が格納するデータ(経路探索用データ)とノードにある地物を表示させるための地図データ格納部500が格納するデータ(表示用データ)とが対応付けられた平文地図データ120と、ノードと表示用データを開示させる利用者である開示先ユーザとが対応付けられた暗号化定義情報121と、経路探索用データを暗号化するための暗号化鍵122を格納し、暗号化処理部111が、経路探索用データと、暗号化鍵122と、暗号化定義情報121とに基づいて、利用者ごとに、暗号化すべきノードを特定し、特定したノードおよび特定したノードに隣接するノードの経路探索用データを暗号化し、暗号化した経路探索用データと表示用データとを対応付けた暗号化地図データ124を生成する。
また、復号処理部116が、利用者から地図上の位置のある地点から他の地点までの経路を探索するを実行する場合に、暗号化された地図上の位置を示すノードおよびノードとノードに隣接するノードとの関連性を示すリンク情報を含む経路探索用データ格納部501が格納するデータ(経路探索用データ)を復号化する復号化鍵123に基づいて、経路探索用データと、ノードにある地物を表示させるための地図データ格納部500が格納するデータ(表示用データ)とが対応付けられた暗号化地図データ124を復号化し、経路探索部処理部1141が、ある地点から他の地点までの経路を、復号処理部116による暗号化地図データ124の復号化結果を用いて、経路探索用データに含まれるノードとリンク情報とに基づいて繰り返し探索する。
したがって、利用者ごとに適切な経路探索を行うことができる。すなわち、利用者の種別に応じて開示可能な経路探索データのみを利用した経路探索を行い、利用者の種別ごとに適切な経路探索結果を提供することができる。
なお、経路探索においては、データ管理、或いは、経路探索を効率に行うため、ビルのフロア等の階層、或いは領域ごとにデータ管理を行っている場合がある。この場合、経路探索についても、領域ごと、或いは階層別に経路探索アルゴリズムを実行し、これらの結果を繋ぎ合わせることで経路探索を実行する場合がある。その場合には、図8の処理を階層、或いは、領域ごとの経路探索を行い、これらの探索結果を組み合わせて、最終的な出発地ノードから目的地ノードまでの経路探索を行ってもよい。
続いて、地図データ配信システム1の管理者等からの操作を受け付けて、地図暗号化装置101が暗号化定義情報121の登録や変更等を行う場合について説明する。
図10は、暗号化定義情報121を生成するためのアプリケーション画面(GUI:Graphic User Interface)の実現イメージの一例を示す図である。なお、以下では、図10を用いて経路探索用データを暗号化する場合のGUIについて説明を行うが、地物そのものの、或いは、その属性、ジオメトリを暗号化する場合には、本GUIを拡張し、これらもまとめて暗号化できるようにしてもよい。
図10に示すように、本GUIは地図表示エリア1と、設定エリア1001と、を含んで構成される。なお、GUI上部のファイルメニュー1002、データベースメニュー1003、鍵読込メニュー1004は、アプリケーション画面に対する操作を切り替えるためのメニュータグを表す。それぞれのメニュータグが選択された場合、以下の操作を行う(図10では、「メニュー」は省略した)。
地図暗号化装置101は、ファイルメニュー1002がアクティブになっている場合、作成済みの暗号化定義情報121の読込、或は、作成途中の暗号化定義情報121の保存を行う。また、地図暗号化装置101は、データベースメニュー1003がアクティブになっている場合、平文地図データ120を格納してあるデータベースへの接続を行い、平文地図データ120の読み込み、および、格納先の暗号化地図データ124の指定を行う。また、開示設定を終了し、暗号化定義情報121を生成する。さらに、地図暗号化装置101は、鍵読込メニュー1004がアクティブになっている場合、暗号化定義情報121の設定に必要な暗号化鍵122を読み込む。
なお、上記ではメニューとして、データベースメニュー1003を配置し、平文地図データ120、および暗号化地図データ124が、データベースシステム上にあることを想定しているが、必ずしも、地図データ120や暗号化地図データ124は、データベースシステム上にある必要はなく、例えば、CSV(Comma Separeted Values)などの形式で、ファイルとして存在してもよい。
図10に示すGUIにおいて、地図表示エリア1000は、平文地図データ120を描画した結果を表示し、マウスなどの入力装置203からの入力に従い、暗号化対象となるノードを指定する。なお、指定にあたっては、図10に例示したようにマウスの入力に従い矩形領域内に含まれるすべてのノードを暗号化対象ノードとしてもよいし、多角形や円などを利用してもよい。或は、マウスを用いてノードを直接を選択し、選択されたノードを暗号化対象ノードとしてもよいし、マウスによって地物を選択し、地物内に含まれる前ノードを暗号化対象ノードとしてもよい。
以下では、図10に示したマウスカーソル1005で選択された領域の開示先を制限し、領域内に含まれるノードを設定する場合を例として、図10に例示したGUIの動作を説明する。
設定エリア1001は、平文地図データ120を非開示とする領域を指定するための非開示エリアと、非開示エリアに含まれる地物を示す関連地物と、非開示エリアに含まれるノードを示す対象ノードと、開示先のユーザを示す開示先と、を含んでいる。
管理者等によってマウスカーソル1005で領域が選択されると、設定エリア1001の非開示エリア項目に新たな項目(図10内のエリア2とする)が登録される。また、エリア2内に含まれる地物の一覧が関連する地物の一覧が、また、対象ノード欄にエリア2内に含まれるノードの一覧が表示される(図10に示す例では、N5(機械室))。
次に、管理者等によってマウスなどの入力装置203を用いて対象地物一覧の中から設定を行う地物やエリアが選択されると(図10ではエリアを選択している)、選択した地物内の全ての属性がサブ画面(不図示)に表示される。また、このとき、選択された地物が地図上のどの地物であるかを明示するため、地図表示エリア906の対応する地物の表示色を変更する、或は、境界線を太くするなどしてもよい。
次に、開示先を設定するノードを、対象ノードから、あるは関連地物欄内の地物を選択することによって指定する。そして、地図暗号化装置101は、開示先欄から開示先として指定するユーザの選択を受け付け、開示先設定ボタンの押下を受け付けると、一つのエリアに対する設定を完了する。このように設定された情報(例えば、図6に示したAの部分)が、暗号化定義情報121として出力される。なお、地物内に含まれる全ノードを選択するために、関連地物欄内の地物を選択するようにしてもよい。上記によって、同一の開示先を持つ複数のノードが設定される。さらに、異なる開示先を持つノードを設定する場合には、上記の処理を繰り返せばよい。
このように、地図暗号化装置101が、GUIによって暗号化定義情報121の設定や変更を受け付けるので、地図データ配信システム1の図管理者等は、その設定や変更を容易に行うことができる。
(第2の実施の形態)
第1の実施の形態では、暗号化対象ノードと暗号化対象ノードに接続された接続リンクを、暗号化後にノード格納部502とリンク格納部503から削除する方法について述べた。第2の実施の形態では、暗号化対象ノードと接続ノード内のデータを変更することによって暗号化、復号を行う方法について述べる。第1の実施の形態と比較し、第2の実施の形態では、経路探索用データの構造を崩す必要がないという特徴がある。
第1の実施の形態と第2の実施の形態との違いは暗号処理と復号化処理のみであるため、以下では暗号化処理、復号化処理について、第1の実施の形態におけるとの違いを説明する。
図11および図12は、第2の実施の形態における暗号化処理、復号化処理の処理手順を示すフローチャートである。また、図13は、暗号化処理前後でのデータ構造の変化の一例を示す図である。以下に、これらの図面を参照して、暗号化処理および復号化処理について説明する。
まず、暗号化処理の前後におけるデータ構造の変化を、図13を用いて説明する。なお、図13は、図9と同様、図5に例示した表示イメージ510の経路探索用データ格納部501の一部を例示した図である。
第1の実施の形態の場合と同様、暗号化経路探索用データ格納部504bは、ノード格納部502bと、リンク格納部503bと、暗号化データ部505bと、を含んで構成される。ノード格納部502bは、ノードを一意に識別するための識別子であるNIDと、ノードの地図上の位置を表す座標を含み、リンク格納部503bは、リンクを一意に識別する識別子であるLIDと、ノードの始点と終点のノードを表す始点NIDと、終点NIDと、リンクを移動するために必要となるコストとを含んでいる。
なお、リンク格納部503bが始点NIDと終点NIDから構成されている理由は、移動経路が一方向であることを表すためであり、第1の実施の形態の場合と同様に、双方向のデータ構造を用いてもよい。また、第1の実施の形態と同様に、ノード格納部502b、リンク格納部503bは、上記以外の項目を含んでもよい。
第1の実施の形態では、暗号化対象ノードとそれに接続した接続リンクをノード格納部502a、リンク格納部503aから削除し、隣接ノードの暗号化フラグをT(TRUE)と設定することによって、経路探索時に復号すべきデータの特定を行った。第2の実施の形態では、図13に示した通り、ノード格納部502b、リンク格納部503bからデータの削除は行わず、代わりに各格納部に格納された情報を、他のノードやリンクとは区別しうる属性や値となるような情報に書き換えを行う。
図13に示した例では、第1の実施の形態と同様、暗号化対象ノードとしてN5のノードを暗号化した場合について示している。図13に示した通り、暗号化対象となるノード(N5)の座標情報を、暗号化されていることを表す記号「ENC」で書き換え、さらに暗号化対象ノード(N5)の接続リンクのコストを最大値(図13に示す例では「99」)に設定する。暗号化対象ノードのもとの座標情報と接続リンクのコストは、第1の実施の形態と同様の方法で暗号化を行い、暗号化データ部505bに格納する。
なお、データベース、或いはGIS製品の制約上の問題で座標情報に座標以外の情報を格納することができない場合には、上記の「ENC」への書き換えは、「ENC」を意味する代替値であってもよいし、座標情報を別の座標に書き換えてもよい。なお、ノードの位置そのものを非開示にするためには、ランダムな座標位置を用いてもよいが、暗号化後の地図データ(暗号化地図データ124)の利用に影響を与えないようにするためは、平文地図データ120内の管理外の座標情報を格納する方が望ましい。
また、例えば、同一の地物内に複数のノードが存在する場合には、地物の中心座標などで座標情報を置き換えてもよい。これによって、本来のノードの座標位置をある程度非開示にすることができる。また、複数のノードを暗号化する場合には、第1の実施の形態のように、代表点のみ残し、後のノード、リンクは、ノード格納部502b、リンク格納部503bから削除してもよい。なお、座標情報を書き変えなくてもよいが、この場合には、コストのみが暗号化され、ノードが地図上のどの位置に配置されているかがわかってしまうため、注意が必要である。
復号時には、復号処理部116が、ノード格納部502bの座標情報が「ENC」である場合、或いは、リンク格納部503bのコストが最大値である場合に暗号化データ部505bの関連データを基に復号すべき暗号化データを取得、復号する。この復号処理によって、ノード、リンクが復号された場合には、復号結果からノードの座標、及び、リンクのコストを復元することにより、元の地図データ(平文地図データ120)を用いた経路探索が実行できる。一方で、復号できなかった場合にはコストは最大値のままとなっているため、経路探索のコスト評価の際、他の最適な経路と比較した場合に削除可能、或いは、非現実的な経路として削除することができる。
以下、図11および図12を用いて、第2の実施の形態における暗号化、復号化処理の具体的な処理手順を説明する。まず、第2の実施の形態における暗号化処理について説明する。図11は、第2の実施の形態における暗号化処理の処理手順を示すフローチャートである。
図11に示すように、第2の実施の形態における暗号化処理が開始されると(ステップS1100)、暗号化処理部111は、経路探索用データ格納部501aを暗号化経路探索用データ格納部504aにコピーする(ステップS1101)。
そして、暗号化処理部111は、暗号化定義情報121を参照し、暗号化すべき暗号化対象ノードの有無を判定する(ステップS1102)。そして、暗号化処理部111は、暗号化すべき暗号化対象ノードがあると判定した場合(ステップS1102;Yes)、暗号化定義情報121に記述されている暗号化対象ノードを取得し(ステップS1103)、その暗号化対象ノードを変更する(ステップS1104)。一方、暗号化処理部111は、暗号化すべき暗号化対象ノードがないと判定した場合(ステップS1102;No)、図11に示す暗号化処理を終了させる(ステップS1110)。
そして、暗号化処理部111は、変更した暗号化対象ノードに接続された接続リンク内に未操作のリンクがあるか否かを判定し(ステップS1105)、変更した暗号化対象ノードに接続された接続リンク内に未操作のリンクがあると判定した場合(ステップS1105;Yes)、その接続リンクのコストを取得し(ステップS1106)、取得したコストを最大値に設定する(ステップS107)。そして、暗号化処理部111は、ステップS1105〜S1107までの処理を繰り返し行う。
一方、暗号化処理部111は、暗号化対象ノードに接続された接続リンク内に未操作のリンクがないと判定した場合(ステップS1105;No)、ステップS1103において取得した座標情報と、ステップS1106において取得したコストとを暗号化し(ステップS1108)、その暗号化結果を暗号化データ格納部504aに格納し(ステップS1109)、ステップS1102へ戻る。そして、暗号化処理部111は、暗号化定義情報121に記述された全ての暗号化対象ノードについて、繰り返しステップS1102〜S1109までの処理を行う。
なお、ステップS1102では、例えば、図6に例示した暗号化定義情報121の暗号化対象ノード要素を逐次処理し、暗号化対象ノード要素がなくなるまで繰り返せばよい。また、図9に示した例では、暗号化対象ノード(N5)に接続されているノードは一つ(N6、リンクはL14)のみであるが、ステップS1105〜S1107に示した通り、接続リンクが複数ある場合には、全ての接続リンクに対して同様の処理を行う。
第1の実施の形態と同様、ステップS1108における暗号化処理は、ノードを一つずつ行うのではなく、複数のノードをまとめて暗号化してもよい。また、複数ノードを暗号化する場合には、以下のようにしてもよい。例えば、座標情報の書き換えに際して「ENC」の代わりに、暗号化対象となるノードが同一の領域内にある場合には、ステップ1104の処理を領域の中心座標などを格納するようにしてもよい。また、この場合に第1の実施の形態と同様に、代表点となるノードのみを残し、他のノードリンクをノード格納部502b、リンク格納部503bから削除してもよい。なお、この場合、削除したノードに合わせて、リンク格納部503bの始点NID、終点NIDも書き換える必要があることに注意が必要である。
続いて、第2の実施の形態における復号化処理について説明する。図12は、第2の実施の形態における復号化処理の処理手順を示すフローチャートである。なお、第1の実施の形態と同様、図12は、経路探索アルゴリズムにおける復号処理を行うための処理フローを示したものであり、経路探索アルゴリズムそのものの処理は、その手順の概略のみを示している。経路探索アルゴリズムの中核処理は、図12内の点線で示した部分である。以下、図12に示す復号化処理について説明する。
図12に示すように、復号化処理が開始されると(ステップS1200)、地図復号装置106の復号処理部116は、まず、出発地ノードを始点ノードに設定する(ステップS1201)。
そして、復号処理部116は、経路探索が終了しているか否かを判定し(ステップS1202)、経路探索が終了していると判定した場合(ステップS1202;Yes)、図8に示す復号化処理を終了させる(ステップS1210)。
一方、復号処理部116は、経路探索が終了していないと判定した場合(ステップS1202;No)、ノード格納部502aとリンク格納部503aとを参照し、始点ノードの接続リンク(隣接ノード)を検索し(ステップS1203)、未探索の隣接ノードがあるか否かを判定する(ステップS1204)。
そして、復号処理部116は、未探索の隣接ノードがあると判定した場合(ステップS1204;Yes)、さらにその未探索の隣接ノードを関連データとして有する暗号化データが暗号化データ部505bにあるか否かを判定し(ステップS1205)、暗号化データが暗号化データ部505bにあると判定した場合(ステップS1205;Yes)、暗号化データ部505aから暗号化データを取得し、取得した暗号化データを復号する(ステップS1206)。一方、復号処理部116は、暗号化データが暗号化データ部505bにないと判定した場合(ステップS1205;No)、ステップS1209に進む。
復号処理部116は、ステップS1206で取得した暗号化データの復号に成功したか否かを判定し(ステップS1207)、復号に成功したと判定した場合(ステップS1207;Yes)、ステップS1206における復号結果からノード、リンクを復元し、復元したノード、リンクをノード格納部502b、リンク格納部503bに追加する(ステップS1208)。一方、復号処理部116は、復号に成功していない(失敗した)と判定した場合(ステップS1207;No)、ステップS1209に進む。
そして、復号処理部116は、ステップS1205またはステップS1207またはステップS1208のいずれかの処理が終了すると、リンク格納部503a内のコスト欄を参照し、始点ノードから隣接ノードまでのコストを算出し、出発地ノードから隣接ノードまでのコスト評価を行い(ステップS1209)、ステップS1202に戻る。そして、復号処理部116は、ステップS1202からS1209までの処理を経路探索が終了するまで繰り返し行う。
第2の実施の形態では、暗号化時に暗号化対象ノードの接続リンクのコストを最大にする。これにより、暗号化データが復号できなかった場合には、ステップS1209において、コスト最大として出発点ノードから該当ノードまでのコスト評価が行われるため、非現実的なコストとなり、他の最適なコストを有する経路があった場合に、暗号化ノードを含む経路を排除することができる。したがって、図5に示したように、最終的に利用者には、そのような経路を含まない表示イメージ510が表示されることとなる。
なお、上記のステップS1206において、例えば復号結果がノード、リンクでないなどの復号が異常停止した場合には処理を停止することが望ましい。また、経路探索の家庭において、目的地ノードにたどりつかないなど、経路探索が一定時間以上終了しない場合や非現実的なコスト(例えば、徒歩での移動に100年以上かかるなど)であった場合には、ステップS1202において処理を停止してもよい。
上記のステップS1206における復号、ステップS1208におけるノード、リンクの復元は、単一のノードに対してではなく、複数のノード、リンクに対して行ってもよい。例えば、前述の暗号化処理時に複数のノードをまとめて暗号化した場合には、ステップS1206における復号の結果には、複数のノード、リンクが含まれるため、ステップS1208は復号されたノード、リンクを全て復元することになる。
なお、上記の復号処理では、経路探索アルゴリズム内で逐次復号を行っているが、事前に復号すべきデータが少ない場合(例えば、ステップS403における地図格納装置102からの応答に暗号化データが一つしか含まれていない場合など)には、復号処理部116は、図12の処理の前に復号処理をまとめて実施してもよい。
また、第1の実施の形態と同様、経路探索においては、データ管理、或いは、経路探索を効率に行うため、ビルのフロア等の階層、或いは領域ごとにデータ管理を行っている場合がある。この場合、経路探索についても、領域ごと、或いは階層別に経路探索アルゴリズムを実行し、これらの結果を繋ぎ合わせることで経路探索を実行する場合がある。その場合には、図12の処理を階層、或いは、領域ごとの経路探索を行い、これらの探索結果を組み合わせて、最終的な出発地ノードから目的地ノードまでの経路探索を行ってもよい。
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。