以下、本発明の好適な実施形態につき説明する。
<実施例>
<ライフサイクル>
図1は、組み込み機器のライフサイクルの一例を示す。組み込み機器のライフサイクル状態には、ユーザが単にその組み込み機器を利用する過程だけでなく、工場で組み込み機器を製造する生産ステージ1、販売するためにトラックなどの輸送手段で運搬する物流ステージ2、販売店で組み込み機器を販売する販売ステージ3がある。さらに、組み込み機器のライフサイクル状態には、ユーザが利用している最中に組み込み機器が故障した場合などに修理を行うなどのサービスを提供するサービスステージ4、環境保護の観点から組み込み機器を回収し、リサイクルする回収リサイクルステージ5がある。組み込み機器によっては、回収リサイクル過程とともに、またはその代わりに組み込み機器を廃棄する廃棄ステージがあるものもある。
図1に示されるライフサイクルは、国や地域などの仕向けによって異なることがあるが、本実施例では、一例としてこれらの各ステージを通じて組み込み機器を運用することを総称してライフサイクルという。例えば、環境保護の観点から確実に回収を行いリサイクルすることや、廃棄後に悪用されないために、正規のルートで(正規のステージを通じて)ライフサイクルが運用されるように制御するとともに、運用されていることを証明する。
<組み込み機器>
ライフサイクル状態管理機能を搭載した機器の一例として、ライフサイクル状態管理機能を備えた車両などの組み込み機器(以下、「機器」という)について説明する。つまり、機器の一例は、組み込み機器である。
図2は、ライフサイクル状態管理機能を備えた車両の制御モジュール構成の一実施例を示す。本実施例に係る車両は、車両全体のライフサイクルの各ステージ(状態)を管理するライフサイクル状態管理モジュール100、およびライフサイクルの各ステージに応じてアクセス制御ポリシーが定義されたデータを格納する1または複数の制御モジュールによって構成される。ライフサイクル状態管理モジュール100、および1または複数の制御モジュールのいくつかは、バス50によって接続されることによってCAN(Controller Area Network)、LIN(Local Interconnect Network)、イーサネット(Ethernet)(登録商標)、LAN(Local Area Network)などのネットワークを構成する。これらのネットワークに限らず、ライフサイクル状態管理モジュール100、および1または複数の制御モジュールをFlexRayによって接続することもできる。図2に示される例では、ライフサイクル状態管理モジュール100、および複数の制御モジュールのいくつかは、バス50によって接続される。図2には、複数の制御モジュールの例として、駆動制御モジュール200、エンジン制御モジュール300、ナビゲーションモジュール400、および車載カメラモジュール500が示される。
ライフサイクル状態管理モジュール100は、機器全体に対して、唯一つのライフサイクルの各ステージを管理するとともに、機器利用者の認証情報を管理する。ライフサイクル状態管理モジュール100は、機器の1または複数の制御モジュールの構成を把握し、その1または複数の制御モジュールに制御指示を与える。ライフサイクルの各ステージに応じて、機器の1または複数の制御モジュールのライフサイクルの各ステージに応じて設定されるアクセス制御ポリシー(以下、「状態アクセス制御ポリシー」という)がライフサイクル状態管理モジュール100に格納される。ライフサイクル状態管理モジュール100は、ライフサイクルの各ステージにおいて、制御の対象となる制御モジュールの状態アクセス制御ポリシーをベースに制御指示を行ったり、各制御の対象となる制御モジュールからの要求を受け付ける。ライフサイクル状態管理モジュール100は、各制御モジュールからの要求に従い、バス50を介して機器のライフサイクル状態と、機器を利用するためにアクセスした者(以下、「アクセス者」という)の持つロールを通知する。ここで、ロールはアクセス者の役割を示し、アクセス者がアクセスする権限があるか否かを判断する際に利用される。ロールは人に対して設定することができるし、会社における部署、工場などの人以外のものにも設定できる。
例えば、ライフサイクルの販売ステージ3において営業がアクセス可能な制御モジュールへの制御指示およびデータと、ライフサイクルのサービスステージ4において修理が必要な場合に整備士がアクセス可能な制御モジュールへの制御指示およびデータとはその内容が異なることが想定される。ライフサイクル状態管理モジュール100は、車両のアクセス者(営業、整備士)の認証情報を管理し、車両のアクセス者と状態アクセス制御ポリシーと関連づける。これにより、営業が修理の際に必要な情報にアクセスしてしまうことによって、整備士が修理の際にアクセスする制御モジュールの情報を壊してしまうことなどを防止できる。
駆動制御モジュール200は、車両の駆動制御を行う。エンジン制御モジュール300は、車両のエンジンを制御する。ナビゲーションモジュール400は、車両を目的地まで導くナビゲーションを行う。車載カメラモジュール500は、車両に搭載されたカメラを制御する。
駆動制御モジュール200、エンジン制御モジュール300、ナビゲーションモジュール400、および車載カメラモジュール500には、状態アクセス制御ポリシーが定義されたデータが格納される。状態アクセス制御ポリシーには、ライフサイクルの各ステージに応じてアクセス可能なロールが記載されている。つまり、ライフサイクルにおけるステージが変更されることによって、アクセス可能なロールが変更されうる。
駆動制御モジュール200、エンジン制御モジュール300、ナビゲーションモジュール400、および車載カメラモジュール500は、必要に応じて、ライフサイクル状態管理モジュール100から、その時点でのライフサイクルにおけるステージ、およびアクセス者の持つロールを受け取り、データへのアクセス可否の判定を行う。ライフサイクルにおけるステージに基づいて車両に搭載された全制御モジュールの各々に対して一斉にアクセス可能なロールが変更されることによって、個別に変更することによる変更忘れ、変更誤りなどを防止できる。
また、ライフサイクル状態管理モジュール100にアクセス制御ポリシーが定義されたデータが格納される場合、ライフサイクル状態管理モジュール100のライフサイクルにおけるステージ、およびアクセス者の持つロールを受けてデータへのアクセス可否の判定を行う場合もある。
ライフサイクル状態管理モジュール100と各制御モジュールとの間の接続は、ライフサイクル状態管理モジュール100、駆動制御モジュール200、ナビゲーションモジュール400、および車載カメラモジュール500のようにバス50を介して直接データをやり取りできるように接続することもできる。また、駆動制御モジュール200、およびエンジン制御モジュール300のように、ライフサイクル状態管理モジュール100が特定の制御モジュールを介して、間接的にデータをやりとりできるように接続することもできる。また、バス50を介して接続することに加え、ネットワークケーブルなどの有線によって接続することもできるし、無線ネットワークによって接続することもできる。いずれにしても、特定のプロトコルに従って、各制御モジュール間で通信ができるように設定することが求められる。
上述したように、駆動制御モジュール200、エンジン制御モジュール300、ナビゲーションモジュール400、および車載カメラモジュール500は、状態アクセス制御ポリシーを持ち、データに対するアクセス権の確認を各制御モジュールが個別に行うことができる。アクセス権の確認を各制御モジュールが個別に行う方法以外に、ライフサイクル状態管理モジュール100に各制御モジュールの持つデータの識別子、およびそのデータに対する状態アクセス制御ポリシーを紐付けることによって対応付けたものを備えることもできる。この場合、ライフサイクル状態管理モジュール100は、各制御モジュールの持つデータに対して紐付けられた状態アクセス制御ポリシーに基づいてアクセス権の有無を判定し、各制御モジュールに判定結果を通知する。各制御モジュールはライフサイクル状態管理モジュール100から送信される判定結果を取得し、判定結果にしたがってデータへのアクセスを許可するなどの動作をすることができる。
ライフサイクル状態管理機能を搭載する対象である機器は、共通のライフサイクルにより制御される制御モジュール群全てを指す。つまり、車両を同一のライフサイクルで管理する場合は車両がライフサイクルを持つ機器になるし、ある商材に積まれたボード上の制御モジュールを同一のライフサイクルで管理する場合は、そのボードがライフサイクルを持つ機器になる。特に、機器に搭載される制御モジュールの各々に格納されるデータの寿命と、機器の寿命とが一致する場合に有効である。
<ライフサイクル状態管理モジュール100のハードウェア構成>
図3は、本実施例に係るライフサイクル状態管理モジュール100のハードウェア構成図である。図3に示されているように、本実施例のライフサイクル状態管理モジュール100は、バスライン150により互いに接続されたCPU(Central Processing Unit)102とメモリアクセスコントローラ107とバスI/F108と認証装置110とを備えている。ROM(Read Only Memory)104とRAM(Random Access Memory)106はメモリアクセスコントローラ107を介してバスライン150に接続されている。また、ライフサイクル状態管理モジュール100は、認証装置110と接続される位置管理装置111と時刻管理装置112とを備えている。認証装置110は、外部の認証局600とも通信を行う。
CPU102は、ROM104、およびRAM106のいずれかまたは両方に展開されている、ユーザデータ、状態データ、制御対象データ、ライフサイクル状態管理モジュール用のプログラムなどを読み込み、実行することで、プログラムされた機能を提供する。ユーザデータ、状態データ、制御対象データ、およびライフサイクル状態管理モジュール用のプログラムについては後述する。
認証装置110は、バスI/F108から入力されるアクセス者の認証情報に基づいてアクセス者を認証する。認証装置110は、バスI/F108から入力される認証情報のアクセスID、およびパスワードと、ユーザデータに基づいて、認証情報を入力したアクセス者を認証する。また、認証装置110は、認証局600に保管される運用計画情報に基づいて、位置管理装置111の管理する位置と時刻管理装置112の管理する時刻について認証を行い、メモリアクセスコントローラ107の制御を行う。運用計画情報に従った運用であればメモリアクセスコントローラ107にROM104およびRAM106へのアクセスを許可し、不正が検出された場合はメモリアクセスコントローラ107をロック状態にする。認証局600の保有する運用計画情報の内容、位置管理装置111および時刻管理装置112の詳細構成、運用計画情報に基づく制御の内容については後述する。
認証装置110は、上述したパスワード認証以外にも、チャレンジレスポンス認証、ワンタイムパスワード、指紋、声紋、虹彩などの人間の生体情報を用いたバイオメトリクス認証、PKI(Public Key Infrastructure)によって、アクセス者にアクセス権があるか否かを確認することもできる。PKIによってアクセス者にアクセス権があるか否かを確認する際には、アクセス者は、認証局に対して公開鍵を提出して証明書の発行を依頼する。認証局は、提出された申請書類などに基づき公開鍵の所有者であるアクセス者を審査し、デジタル証明書を発行する。デジタル証明書には公開鍵の所有者情報などとともに、認証局のデジタル署名が付加されている。アクセス者は、ライフサイクル状態管理モジュール100に対し、デジタル証明書を送付する。ライフサイクル状態管理モジュール100の認証装置110はデジタル証明書を認証局の公開鍵で復号し、デジタル証明書中のアクセス者の情報と認証局の署名を確認すると同時にアクセス者の公開鍵を入手することができる。アクセス者の情報と認証局の署名を確認できることによって、アクセス者にアクセス権があるか否かを確認できる。
認証装置110によってアクセス者がアクセス許可されていると認証できた場合、CPU102は、ROM104に格納されているデータをRAM106に展開し、そのデータを読み込み実行することによってROM104に格納されたプログラムされた機能を提供する。認証装置110によってアクセス者がアクセス許可されていないと判断した場合、認証装置110からの指示に基づいて、CPU102は、機器全体(車両全体)を利用できない状態に設定することができる。
バスI/F108は、機器の外部からアクセス者が機器を操作することによって入力される操作信号や、ライフサイクル状態の変更要求などの制御信号を入力する。また、バスI/F108は、バス50に接続された他の制御モジュールからのライフサイクル状態の通知要求や、アクセス者の認証結果で得られたロールの通知要求を受け付ける。なお、バスI/F108以外にも、ネットワークI/Fを接続することもできる。バスI/F108は単独で接続されている場合もあれば、バスI/F108とネットワークI/Fのように複数存在する場合もありうる。また、バスI/F108をネットワーク装置によって構成し、スマートフォンなどの携帯端末からネットワーク装置へデータを無線送信することもできる。
なお、上記ライフサイクル状態管理モジュール用のプログラムは、インストール可能な形式または実行可能な形式のファイルで、記録メディアやCD−ROM等のコンピュータで読み取り可能な記録媒体に記録して流通させるようにしてもよい。
<駆動制御モジュール200のハードウェア構成>
図4は、本実施例に係る駆動制御モジュール200のハードウェア構成図である。図4に示されているように、本実施例の駆動制御モジュール200は、駆動制御モジュール200全体の動作を制御するCPU202、およびIPL等のCPU202の駆動に用いられるプログラムを記憶したROM204を備える。さらに、駆動制御モジュール200は、CPU202のワークエリアとして使用されるRAM206、およびバス50との間のI/Fであり、駆動制御モジュール200から各制御モジュールへ出力する操作信号(制御信号)や、制御の対象となる制御モジュールからのアクセスを受け付けるバスI/F208を備える。さらに、駆動制御モジュール200は、上記各構成要素を図4に示されているように電気的に接続するためのアドレスバスやデータバスなどのバスライン250を備える。駆動制御モジュール200に、他のハードウェアブロックを含めて構成することもできる。
CPU202は、ROM204に格納されているデータをRAM206に展開するとともに、そのデータを読み込み、実行することで、ROM204内に格納される駆動制御モジュール用にプログラムされた機能を提供する。このプログラムは、CPU202にライフサイクル状態に基づいてアクセス制御を行わせる。
バスI/F208は、駆動制御モジュール200の外部へ、ライフサイクルにおけるステージを通知することを要求するライフサイクル状態通知要求を出力する出力手段として使われるとともに、ライフサイクル状態通知要求に応じてライフサイクル状態管理モジュール100から送信されるライフサイクルにおけるステージ、およびアクセス者の持つロールの通知を入力する入力手段として使われる。
また、駆動制御モジュール200にアクセス者の認証情報の入力を受け付けるI/Fを備えるように構成することによって、バスI/F208は、その認証情報をライフサイクル状態管理モジュール100に通知する出力手段としても用いることもできる。
なお、バスI/F208以外にも、ネットワークI/Fを接続することもできる。また、駆動制御モジュール200にバスI/F208を単独で接続することもできるし、バスI/F208に加え、ネットワークI/Fを接続することによって、複数接続することもできる。
なお、上記駆動制御モジュール用のプログラムは、インストール可能な形式または実行可能な形式のファイルで、記録メディアやCD−ROM等のコンピュータで読み取り可能な記録媒体に記録して流通させるようにしてもよい。
<エンジン制御モジュール300のハードウェア構成>
エンジン制御モジュール300は、上述した駆動制御モジュール200と同様のハードウェア構成を適用できる。但し、ROM204には、エンジン制御モジュール300を制御するためのエンジン制御モジュール用プログラムが記録されている。この場合も、エンジン制御モジュール用プログラムは、インストール可能な形式または実行可能な形式のファイルで、記録メディアやCD−ROM等のコンピュータで読み取り可能な記録媒体に記録して流通させるようにしてもよい。
<ナビゲーションモジュール400のハードウェア構成>
ナビゲーションモジュール400は、上述した駆動制御モジュール200と同様のハードウェア構成を適用できる。但し、ROM204には、ナビゲーションモジュール400を制御するためのナビゲーションモジュール用プログラムが記録されている。この場合も、ナビゲーションモジュール用プログラムは、インストール可能な形式または実行可能な形式のファイルで、記録メディアやCD−ROM等のコンピュータで読み取り可能な記録媒体に記録して流通させるようにしてもよい。
<車載カメラモジュール500のハードウェア構成>
車載カメラモジュール500は、上述した駆動制御モジュール200と同様のハードウェア構成を適用できる。但し、ROM204には、車載カメラモジュール500を制御するための車載カメラモジュール用プログラムが記録されている。この場合も、車載カメラモジュール用プログラムは、インストール可能な形式または実行可能な形式のファイルで、記録メディアやCD−ROM等のコンピュータで読み取り可能な記録媒体に記録して流通させるようにしてもよい。
なお、着脱可能な記録媒体の他の例として、CD−R(Compact Disc Recordable)、DVD(Digital Versatile Disk)、ブルーレイディスク等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
<実施例の機能構成>
次に、本実施例の機能構成について説明する。図5は、本実施例の機器を構成するライフサイクル状態管理モジュール100の機能ブロック図である。図5には、ライフサイクル状態管理モジュール100の機能ブロック図とともに、ROM104、およびRAM106のいずれかまたは両方に格納されるデータについても記載される。
<ライフサイクル状態管理モジュール100の機能構成>
ライフサイクル状態管理モジュール100は、利用者認証部160、アクセス制御部162、および状態管理部164を有している。これら各部は、図3に示されている各構成要素のいずれかが、ROM104からRAM106上に展開されたライフサイクル状態管理モジュール用プログラムである、利用者認証プログラム、アクセス制御プログラム、および状態管理プログラムに従ったCPU102からの命令によって動作することで実現される機能、または機能する手段である。
つまり、利用者認証部160は、ROM104からRAM106上に展開された利用者認証プログラムに従ったCPU102からの命令によって動作することで実現される機能、または機能する手段である。また、アクセス制御部162は、ROM104からRAM106上に展開されたアクセス制御プログラムに従ったCPU102からの命令によって動作することで実現される機能、または機能する手段である。また、状態管理部164は、ROM104からRAM106上に展開された状態管理プログラムに従ったCPU102からの命令によって動作することで実現される機能、または機能する手段である。なお、プログラムの依存関係は一例であり、異なる依存関係を有するプログラムでも同様にライフサイクル状態管理機能を実現できる。
(ライフサイクル状態管理モジュール100の各機能構成)
次に、図3および図5を用いて、ライフサイクル状態管理モジュール100の各機能構成について詳細に説明する。なお、以下では、ライフサイクル状態管理モジュール100の各機能構成部を説明するにあたって、図3に示されている各構成要素のうち、ライフサイクル状態管理モジュール100の各機能構成部を実現させるための主な構成要素との関係も説明する。
図5に示されているライフサイクル状態管理モジュール100の利用者認証部160は、図3に示されているCPU102からの命令、図3に示されているバスI/F108、およびROM104に格納されるユーザデータ1001−100N(Nは、N>0の整数)によって実現される。ユーザデータ1001−100Nは、予め登録することができ、Nはユーザ数を表す。さらに、ROM104には、ユーザデータ1001−100Nの各々について、認証データ1101−110N、およびロール1201−120Nがそれぞれ格納される。
利用者認証部160は、バスI/F108からアクセス者の認証情報が入力されることによって動作し、その認証情報と、ユーザデータ1001−100Nのいずれかの認証データに基づいて、アクセス者にアクセス権があることを確認する。利用者認証部160は、アクセス者の認証結果と、アクセス者にアクセス権があることを確認できた場合にはそのアクセス者のロールを出力する。具体的には、利用者認証部160は、バスI/F108から入力されるアクセス者の認証情報に含まれるアクセスIDを、ユーザデータ1001−100Nの認証データ1101−110Nから検索し、認証できるユーザがいるか否かを判断する。認証できるユーザがいる場合には、利用者認証部160は、認証情報に含まれるパスワードが、検索の結果特定されたユーザデータの認証データと一致するか否かを判断することによって、アクセス者にアクセス権があるか否かを確認することによって認証する。利用者認証部160は、アクセス者にアクセス権があることを確認できた場合には、アクセス制御部162に、アクセス者にアクセス権があることを表す情報と、アクセス者のロールを出力する。
図5に示されているライフサイクル状態管理モジュール100のアクセス制御部162は、図3に示されるCPU102からの命令、およびROM104に格納される制御対象データ1301−130M(Mは、M>0の整数)よって実現される。さらに、ROM104には、制御対象データ1301−130Mの各々について、状態アクセス制御ポリシー1401−140Mがそれぞれ格納される。ここで、制御対象データ1301−130Mは、車両に搭載される、駆動制御モジュール200、エンジン制御モジュール300、ナビゲーションモジュール400、車載カメラモジュール500などの各制御モジュールと紐付けることによって対応付けることもできる。つまり、車両に搭載される制御モジュールの各々が制御データを有する。
アクセス制御部162は、特定のライフサイクル状態において、アクセス者が制御対象データ1301−130Mにアクセス可能であるか否かを判定する。制御対象データ1301−130Mには、それぞれ状態アクセス制御ポリシー1401−140Mが含まれ、状態アクセス制御ポリシー1401−140Mには、特定のライフサイクル状態においてアクセス可能なユーザ情報、およびアクセス可能なロール情報が格納される。アクセス制御部162は、状態アクセス制御ポリシー1401−140Mを参照することによって、アクセス者が制御対象データにアクセス権があるか否かを判断する。状態アクセス制御ポリシー1401−140Mの詳細については後述する。
具体的には、アクセス制御部162は、状態管理部164を呼び出すことによってライフサイクル状態情報を取得し、利用者認証部160を呼び出すことによって該当するアクセス者のロールを取得する。アクセス制御部162は、制御対象データ1301−130Mの状態アクセス制御ポリシー1401−140Mを参照することで、各制御対象データについて、状態管理部164から取得したライフサイクルのステージにおけるアクセス可能なロールを特定し、その特定したロールにアクセス者のロールが含まれるか否かを判定することによってアクセス者がアクセス可能であるか否かを判定する。
図5に示されているライフサイクル状態管理モジュール100の状態管理部164は、図3に示されるCPU102からの命令、およびROM104に格納される状態データ1501−150K(Kは、K>0の整数)よって実現される。ここで、状態データ1501−150Kは、車両に搭載される、駆動制御モジュール200、エンジン制御モジュール300、ナビゲーションモジュール400、車載カメラモジュール500などの各制御モジュールと紐付けることによって対応付けることもできる。また、状態データ1501−150Kは、制御対象データ1301−130Kと紐付けることによって対応付けることもできる。状態データ1501−150Kには、状態遷移の要求があった場合の処理内容を規定する。さらに、ROM104には、状態データ1501−150Kの各々について、遷移条件1601−160K、エントリ(Entry)動作1701−170K、およびエグジット(Exit)動作1801−180Kがそれぞれ格納される。
遷移条件1601−160Kには、特定のデータが存在していることや、あるデータが特定の形式を満たす場合にライフサイクルにおけるステージを遷移させることなどの条件が定義される。Entry動作1701−170Kには、セキュリティ情報の初期設定などの状態遷移の後のライフサイクルを安全に使うための処理が定義される。例えば、Entry動作1701−170Kには、通信に使用する秘密鍵などを設定する処理などが定義される。Exit動作1801−180Kには、ライフサイクルにおける状態を変更する上で、次の状態へ移行する際に残しておくことがセキュリティ上の脆弱性につながるような情報の消去、もしくはそのようなセキュリティ上の脆弱性につながるような情報を書き換える処理が定義される。例えば、Exit動作1701−170Kには、前のライフサイクル状態における機器の主要な利用者の個人情報につながるログデータの削除、秘密鍵の改ざん防止のために書き込みを不可とする設定が定義される。
状態管理部164は、アクセス制御部162からのアクセス要求に応じて、ライフサイクル状態データ166を参照し、そのアクセス要求時点のライフサイクルにおけるステージを取得し、アクセス制御部162へ通知する。ここで、ライフサイクル状態データ166は、機器全体における、その時点でのライフサイクルにおけるステージを示すデータであり、機器全体を通して唯一つ管理されている。ライフサイクル状態データ166は、ライフサイクルにおけるステージが変更される状態遷移の度に変更される。例えば、ライフサイクルにおける各ステージにおいて、ステージを変更する人によって変更させるようにしてもよい。状態管理部164は、状態遷移が要求された場合に、状態データ1501−150Kに規定される処理を実行する。
<駆動制御モジュール200の機能構成>
次に、本実施例の機能構成について説明を続ける。図6は、本実施例の機器を構成する駆動制御モジュール200の機能ブロック図である。図6には、駆動制御モジュール200の機能ブロック図とともに、ROM204、およびRAM206のいずれかまたは両方に格納されるデータについても記載される。
駆動制御モジュール200は、アクセス制御部262を有し、このアクセス制御部262は、図4に示されている各構成要素のいずれかが、ROM204からRAM206上に展開された駆動制御モジュール用プログラムである、アクセス制御プログラムに従ったCPU202からの命令によって動作することで実現される機能、または機能する手段である。
つまり、アクセス制御部262は、ROM204からRAM206上に展開されたアクセス制御プログラムに従ったCPU202からの命令によって動作することで実現される機能、または機能する手段である。
<駆動制御モジュール200の各機能構成>
次に、図4および図6を用いて、駆動制御モジュール200の各機能構成について詳細に説明する。なお、以下では、駆動制御モジュール200の各機能構成部を説明するにあたって、図4に示されている各構成要素のうち、駆動制御モジュール200の各機能構成部を実現させるための主な構成要素との関係も説明する。
図6に示されている駆動制御モジュール200のアクセス制御部262は、図4に示されるCPU202からの命令、およびROM204に格納される制御対象データ2301−230L(Lは、L>0の整数)よって実現される。さらに、ROM204には、制御対象データ2301−230Lの各々について、状態アクセス制御ポリシー2401−240Lがそれぞれ格納される。ここで、制御対象データ2301−230Lは、車両に搭載される、エンジン制御モジュール300、ナビゲーションモジュール400、車載カメラモジュール500などの各制御モジュールと紐付けることによって対応付けることもできる。つまり、車両に搭載される制御モジュールの各々が制御データを有する。
アクセス制御部262は、特定のライフサイクル状態において、アクセス者が制御対象データ2301−230Lにアクセス可能であるか否かを判定する。制御対象データ2301−230Lには、それぞれ状態アクセス制御ポリシー2401−240Mが含まれ、状態アクセス制御ポリシー2401−240Lには、特定のライフサイクル状態においてアクセス可能なユーザ情報、およびアクセス可能なロール情報が格納される。アクセス制御部262は、状態アクセス制御ポリシー2401−240Lを参照することによって、アクセス者が制御対象データにアクセス権があるか否かを判断する。
具体的には、アクセス制御部262は、バスI/F208を介して、ライフサイクル状態管理モジュール100に、ライフサイクル状態の通知と、アクセス者のロールの通知を要求する。アクセス制御部262は、バスI/F208から、ライフサイクル状態管理モジュール100から送信されるライフサイクル状態と、アクセス者のロールを取得する。アクセス制御部262は、制御対象データ2301−230Lの状態アクセス制御ポリシー2401−240Lを参照することで、各制御対象データについて、ライフサイクル状態管理モジュール100から取得したライフサイクルのステージにおけるアクセス可能なロールを特定し、その特定したロールにアクセス者のロールが含まれるか否かを判定することによってアクセス者がアクセス可能であるか否かを判定する。
<ライフサイクル状態が変更される処理>
図7は、ライフサイクル状態が変更される処理について示す。図7では、製造状態、市場運用状態、廃棄状態の順に機器のライフサイクルのステージが変更され、ライフサイクルのステージの変更にともなって、制御対象データへのアクセス権の内容と、アクセス権を設定できる対象者が変更される。製造状態、市場運用状態、廃棄状態の順にライフサイクルのステージが変更されるのは一例であり、ライフサイクルに他のステージ(状態)を含めることもできる。例えば、ライフサイクルに、リサイクルのために市場運用状態から製造状態に戻すようなライフサイクルを含めることもできる。
製造状態は、市場運用状態に移行する前の状態であり、機器に対して必要な設定が行われる。図7に示される例では、機器製造者は、機器に、機器固体を識別するための情報として「機器固有情報」、機器製造者を認証するための情報として「製造者公開情報」および「製造者秘密情報」を生成し、導入することができる。製造状態では、「機器固有情報」、「製造者公開情報」、および「製造者秘密情報」に対して、機器製造者は読み出し書き出し(生成)可能(READ、WRITE可能)に設定される。
製造状態から市場運用状態への遷移が可能になったら、状態遷移を行い、市場運用状態に移行する。図7に示される例では、製造状態から市場運用状態に移行することによって、主の利用者が機器製造者から機器利用者へ変化するため、機器利用者が設定した認証情報を用いて管理される。機器利用者は、機器に、機器利用者の個人情報として「機器利用者個人情報」、機器利用者の公開情報として「利用者公開情報」を生成し、導入することができる。市場運用状態では、「利用者個人情報」、および「利用者公開情報」に対して機器利用者は読み出し書き出し(生成)可能(READ、WRITE可能)に設定され、さらに、「利用者公開情報」については機器利用者以外の者に対しても読み出し可能(READ可能)に設定される。
市場運用状態では、機器製造者は「利用者個人情報」を読み出すことができないため、機器利用者は機器製造者を信頼しなくても、機器の安全性を確保することができる。逆に、機器利用者は、「製造者秘密情報」を読み出すことができないため、機器製造者は機器利用者を信頼しなくても、機器製造者の安全性も確保することができる。
また、市場運用状態では、「機器固有情報」については機器製造者、および機器利用者は読み出し可能(READ可能)に設定され、「製造者公開情報」については全てのアクセス者に対して読み出し可能(READ可能)に設定され、「製造者秘密情報」については機器製造者は読み出し可能(READ可能)に設定される。さらに、「製造者秘密情報」については、機器が実行できるように設定される。つまり、市場運用状態では「製造者秘密情報」を書き出す(生成する)ことができないように設定されることによって、機器製造者に対して否認防止の義務を負わせることができる。
市場運用状態から廃棄状態への遷移が可能になったら状態遷移を行い、廃棄状態に移行する。図7に示される例では、市場運用状態から廃棄状態へライフサイクル状態が変化する際のEntry処理として、全データを破棄することが設定される例が示される。これによって、機器の廃棄後に、その機器に格納されている秘密情報や、個人情報が盗まれるのを防止できる。例えば、機器の廃棄後に、その機器に格納されている秘密情報や、個人情報が盗まれるのを防止するために、機器に格納されている情報を「新しいデータ」で上書きすることによって全データを消去することによって廃棄する。
ライフサイクルの各ステージに基づいて、機器の全データを管理することができるため、機器の個々のデータについて個別に管理する場合に生じうる特定のデータを破棄し忘れるような状況が発生しない。また、ライフサイクルに関して関連するデータをまとめて状態変更するため、特定のデータのアクセス権の変更ミスなどで発生しうるアクセス権限が昇格するなどのリスクを下げることができる。
<状態アクセス制御ポリシー>
図8は、ライフサイクル状態管理モジュール100の制御対象データ1301−130Mに格納される状態アクセス制御ポリシー1401−140Mの一例を示す。駆動制御モジュール200、エンジン制御モジュール300、ナビゲーションモジュール400、車載カメラモジュール500の制御対象データ2301−230Lに格納される状態アクセス制御ポリシー2401−240Lについても、図8を適用できる。
ライフサイクル状態管理モジュール100によって管理対象とされる制御対象データ1301−130Mは、それぞれが状態アクセス制御ポリシー1401−140Mを有する。状態アクセス制御ポリシー1401−140Mの一例は、アクセス者のロール、および機器のライフサイクルの各ステージと紐付けられるアクセス内容から構成されるマトリクス表で表される。
ただし、アクセス者のロールの代わりに特定の利用者の識別情報(ID)を利用することもできる。これによって、利用者とアクセス内容とを紐付けることができるため、特定の利用者に、他の利用者とは異なるアクセス内容を付与することができる。具体的には、特定の利用者に、多くのアクセスを可能とするなどの強いアクセス権限を与えることができる。また、アクセス者のロールをまとめることによってアクセス者のグループを作成することもできる。アクセス者のグループを利用することで、アクセス者のグループとアクセス内容とを紐付けることができるため、特定のアクセス者のグループに多くのアクセスを可能とするなどの強いアクセス権限を与えることができる。
以下詳細に説明する。
各アクセス者のロールに対して割り当てるアクセス権限のアクセス内容の種類とその説明の一例を以下に示す。
(1)「Read」:対象の制御対象データを読み出せる
(2)「Write」:対象の制御対象データを書き出せる(生成できる)
(3)「Exec」:対象の制御対象データを利用できる
(4)「Delete」:対象の制御対象データを削除できる
(5)「ReWrite」:対象の制御対象データを変更できる
各制御対象データに対する状態アクセス制御ポリシーは、制御対象データ毎に作成される。
図8に示される例では、アクセス者のロールの一例として機器製造者、機器管理者、機器利用者を想定し、ライフサイクルのステージの一例として製造状態、市場運用状態、廃棄状態を想定する。さらに、制御対象データとして、各アクセス者のロールにおける秘密情報のアクセス制御ポリシー、および各アクセス者のロールにおける公開情報のアクセス制御ポリシーの設定例について示す。
図8には、(1)機器製造者の秘密情報に関する状態アクセス制御ポリシー、(2)機器管理者の秘密情報に関する状態アクセス制御ポリシー、(3)機器利用者の秘密情報に関する状態アクセス制御ポリシーが示される。さらに、図8には、(4)機器製造者の公開情報に関する状態アクセス制御ポリシー、(5)機器管理者の公開情報に関する状態アクセス制御ポリシー、(6)機器利用者の公開情報に関する状態アクセス制御ポリシーが示される。
図8の(1)、(4)に示されるように、機器製造者が所有する情報は、「製造者秘密情報」、および「製造者公開情報」である。つまり、機器製造者は、製造状態で「製造者秘密情報」、および「製造者公開情報」を生成し、機器に導入することができる。
「製造者秘密情報」について説明する。
製造状態では、機器製造者は「製造者秘密情報」の読み出し(「Read」)、書き出し(「Write」)、利用(「Exec」)、および変更(「ReWrite」)が可能であり、機器管理者、および機器利用者は「製造者秘密情報」の利用(「Exec」)が可能である。
製造状態から市場運用状態に移行したとき、ライフサイクル状態管理モジュール100は、機器製造者が「製造者秘密情報」の書き出し(「Write」)、および変更(「ReWrite」)をできないようにアクセス制御を実施する。これによって、市場運用状態に移行した後に、機器製造者が機器内の秘密情報を無断で改竄することを防止できるため、秘密情報を用いて実行した処理の否認を防止することができる。
市場運用状態では、機器管理者、および機器利用者は、「製造者秘密情報」の利用(「Exec」)ができる。ただし、「製造者秘密情報」には、機器製造者の署名用の秘密鍵などの機器製造者自身しか利用(「Exec」)権限を持たないものも含まれる。
市場運用状態から廃棄状態への遷移が可能になったら状態遷移を行い、廃棄状態に移行する。ライフサイクル状態管理モジュール100は、機器製造者が「製造者秘密情報」の読み出し(「Read」)、および利用(「Exec」)をできないようにアクセス制御を実施するとともに削除(「Delete」)をできるようにアクセス制御を実施する。機器製造者は、「製造者秘密情報」を削除(「Delete」)などを実施することによって廃棄できる。これによって、機器の廃棄後に、その機器に格納されている「製造者秘密情報」が盗まれることを防止できる。さらに、安全性の観点から廃棄状態においてはライフサイクル状態管理モジュール100は、機器管理者が「製造者秘密情報」の削除(「Delete」)をできるようにアクセス制御を実施できる。
「製造者公開情報」について説明する。
製造状態では、機器製造者は「製造者公開情報」の読み出し(「Read」)、書き出し(「Write」)、利用(「Exec」)、および変更(「ReWrite」)が可能であり、機器管理者、および機器利用者は「製造者公開情報」の読み出し(「Read」)、および利用(「Exec」)が可能である。
製造状態から市場運用状態に移行したとき、ライフサイクル状態管理モジュール100は、機器製造者が「製造者公開情報」の書き出し(「Write」)、および変更(「ReWrite」)をできないようにアクセス制御を実施する。これによって、市場運用状態に移行した後に、機器製造者が機器内の公開情報を無断で改竄することを防止できるため、公開情報を用いて実行した処理の否認を防止することができる。
市場運用状態では、機器管理者、および機器利用者は、「製造者公開情報」の読み出し(「Read」)、および利用(「Exec」)ができる。
市場運用状態から廃棄状態への遷移が可能になったら状態遷移を行い、廃棄状態に移行する。ライフサイクル状態管理モジュール100は、機器製造者が「製造者公開情報」の読み出し(「Read」)、および利用(「Exec」)をできないようにアクセス制御を実施するとともに削除(「Delete」)をできるようにアクセス制御を実施する。機器製造者は、「製造者公開情報」を削除(「Delete」)などを実施することによって廃棄できる。これによって、機器の廃棄後に、その機器に格納されている「製造者公開情報」が盗まれることを防止できる。さらに、安全性の観点から廃棄状態においてはライフサイクル状態管理モジュール100は、機器管理者が「製造者公開情報」の削除(「Delete」)をできるようにアクセス制御を実施できる。
図8の(2)、(5)に示されるように、機器管理者が所有する情報は、「管理者秘密情報」、および「管理者公開情報」である。つまり、機器管理者は、市場運用状態で「管理者秘密情報」、および「管理者公開情報」を生成し、機器に導入することができる。
「管理者秘密情報」について説明する。
市場運用状態では、機器管理者は「管理者秘密情報」の読み出し(「Read」)、書き出し(「Write」)、および利用(「Exec」)が可能であり、機器製造者、および機器利用者は「管理者秘密情報」の利用(「Exec」)が可能である。「管理者秘密情報」には、機器管理者の署名用の秘密鍵などの機器管理者自身しか利用(「Exec」)権限を持たない情報が含まれる。これにより、「管理者秘密情報」を機器製造者などの機器管理者以外の他の利用者から保護することができるため、安全にライフサイクル状態管理モジュール100を利用することができる。
市場運用状態から廃棄状態への遷移が可能になったら状態遷移を行い、廃棄状態に移行する。ライフサイクル状態管理モジュール100は、機器管理者が「管理者秘密情報」の読み出し(「Read」)、書き出し(「Write」)、および利用(「Exec」)をできないようにアクセス制御を実施するとともに削除(「Delete」)をできるようにアクセス制御を実施する。機器管理者は、「管理者秘密情報」を削除(「Delete」)などを実施することによって廃棄できる。これによって、機器の廃棄後に、その機器に格納されている「管理者秘密情報」が盗まれることを防止できる。さらに、安全性の観点から廃棄状態においてはライフサイクル状態管理モジュール100は、機器製造者が「管理者秘密情報」の削除(「Delete」)をできるようにアクセス制御を実施できる。
「管理者公開情報」について説明する。
市場運用状態では、機器管理者は「管理者公開情報」の読み出し(「Read」)、書き出し(「Write」)、および利用(「Exec」)が可能であり、機器製造者、および機器利用者は「管理者公開情報」の読み出し(「Read」)、および利用(「Exec」)が可能である。
市場運用状態から廃棄状態への遷移が可能になったら状態遷移を行い、廃棄状態に移行する。ライフサイクル状態管理モジュール100は、機器利用者が「管理者公開情報」の読み出し(「Read」)、書き出し(「Write」)、および利用(「Exec」)をできないようにアクセス制御を実施するとともに削除(「Delete」)をできるようにアクセス制御を実施する。機器管理者は、「管理者公開情報」を削除(「Delete」)などを実施することによって廃棄できる。これによって、機器の廃棄後に、その機器に格納されている「管理者公開情報」が盗まれることを防止できる。さらに、安全性の観点から廃棄状態においてはライフサイクル状態管理モジュール100は、機器製造者が「管理者公開情報」の削除(「Delete」)をできるようにアクセス制御を実施できる。
図8の(3)、(6)に示されるように、機器利用者が所有する情報は、「利用者秘密情報」、および「利用者公開情報」である。つまり、機器利用者は、市場運用状態で「利用者秘密情報」、および「利用者公開情報」を生成し、機器に導入することができる。
「利用者秘密情報」について説明する。
市場運用状態では、機器利用者、および機器管理者は「利用者秘密情報」の読み出し(「Read」)、書き出し(「Write」)、および利用(「Exec」)が可能であり、機器製造者は「利用者秘密情報」の利用(「Exec」)が可能である。「利用者秘密情報」には、機器利用者の署名用の秘密鍵などの機器利用者自身しか利用(「Exec」)権限を持たない情報が含まれる。これにより、「利用者秘密情報」を機器製造者などの機器管理者、および機器利用者以外の他の利用者から保護することができるため、安全にライフサイクル状態管理モジュール100を利用することができる。
ここで、機器管理者が、「利用者秘密情報」の読み出し(「Read」)、書き出し(「Write」)をできるようにするか否かは、ライフサイクル状態管理モジュール100の運用によって設定できる。例えば、機器管理者が強いアクセス権限を有する場合には、機器管理者は「利用者秘密情報」を読み出し(「Read」)できるように設定し、そうではなく機器管理者と機器利用者のアクセス権限が近く、類似している場合には、機器管理者は「利用者秘密情報」を読み出し(「Read」)できないように設定する。
市場運用状態から廃棄状態への遷移が可能になったら状態遷移を行い、廃棄状態に移行する。ライフサイクル状態管理モジュール100は、機器利用者、および機器管理者が「利用者秘密情報」の読み出し(「Read」)、書き出し(「Write」)、および利用(「Exec」)をできないようにアクセス制御を実施するとともに削除(「Delete」)をできるようにアクセス制御を実施する。機器利用者、および機器管理者は、「利用者秘密情報」を削除(「Delete」)などを実施することによって廃棄できる。これによって、機器の廃棄後に、その機器に格納されている「利用者秘密情報」が盗まれることを防止できる。さらに、安全性の観点から廃棄状態においてはライフサイクル状態管理モジュール100は、機器製造者が「利用者秘密情報」の削除(「Delete」)をできるようにアクセス制御を実施できる。
「利用者公開情報」について説明する。
市場運用状態では、機器利用者、および機器管理者は「利用者公開情報」の読み出し(「Read」)、書き出し(「Write」)、および利用(「Exec」)が可能であり、機器製造者は「利用者公開情報」の利用(「Exec」)が可能である。
ここで、機器管理者が、「利用者公開情報」の読み出し(「Read」)、書き出し(「Write」)をできるようにするか否かは、ライフサイクル状態管理モジュール100の運用によって設定できる。例えば、機器管理者が強いアクセス権限を有する場合には、機器管理者は「利用者公開情報」を読み出し(「Read」)、書き出し(「Write」)をできるように設定し、そうではなく機器管理者と機器製造者のアクセス権限が近く、類似している場合には、機器管理者は「利用者公開情報」を読み出し(「Read」)、書き出し(「Write」)をできないように設定する。
市場運用状態から廃棄状態への遷移が可能になったら状態遷移を行い、廃棄状態に移行する。ライフサイクル状態管理モジュール100は、機器利用者、および機器管理者が「利用者公開情報」の読み出し(「Read」)、書き出し(「Write」)、および利用(「Exec」)をできないようにアクセス制御を実施するとともに削除(「Delete」)をできるようにアクセス制御を実施する。機器利用者、および機器管理者は、「利用者公開情報」を削除(「Delete」)などを実施することによって廃棄できる。これによって、機器の廃棄後に、その機器に格納されている「利用者公開情報」が盗まれることを防止できる。さらに、安全性の観点から廃棄状態においてはライフサイクル状態管理モジュール100は、機器製造者が「利用者公開情報」の削除(「Delete」)をできるようにアクセス制御を実施できる。
<制御対象データへのアクセス処理>
図9は、制御対象データへのアクセス処理を示す。
制御対象データへのアクセスを要求された場合、ライフサイクル状態管理モジュール100のアクセス制御部162は、その制御対象データへのアクセスを認可するか、却下するかの結論を出す。なお、種々のプログラムも制御対象データとしてROM104に格納されるため、制御対象データへのアクセス、種々のプログラムを実行する操作によるアクセスは原則的に全て制御対象データへのアクセス処理が要求される。ただし、アクセス制御プログラム、状態管理プログラム、利用者認証プログラムなどのデータアクセスシーケンスの実行に関係するものについてはこの限りでなく、任意のアクセス者によって利用可能とすることができる。
ここでは、アクセス者が、制御対象データ130Mへのアクセスを要求した場合について説明する。
ステップS902では、制御対象データ130Mへのアクセス要求があった場合、アクセス制御部162は、現在のライフサイクル状態を確認するために、状態管理部164を呼び出す。状態管理部164は、アクセス制御部162からの呼び出しに応じて、ライフサイクル状態データ166からライフサイクル状態情報を取得し、アクセス制御部162へ送信する。アクセス制御部162は、状態管理部164からのライフサイクル状態情報を取得することによって、現在のライフサイクル状態を確認できる。
ステップS904では、アクセス制御部162は、制御対象データ130Mの状態アクセス制御ポリシー140Mの現在のライフサイクル状態の部分を参照する。
ステップS906では、アクセス制御部162は、制御対象データ130Mの状態アクセス制御ポリシー140Mの現在のライフサイクル状態の部分に、アクセス可能な権限が設定されている情報があるか否かを判断する。
ステップS908では、制御対象データ130Mの状態アクセス制御ポリシー140Mの現在のライフサイクル状態の部分に、アクセス可能な権限が設定されている情報がある場合、アクセス制御部162は、制御対象データ130Mに権限がなくてもアクセス可能であるか否かを判定する。
ステップS910では、ステップS908によって制御対象データ130Mには権限がないとアクセス不可能であると判定された場合、利用者認証部160は、アクセス者を認証する。つまり、アクセス制御部162によって、状態アクセス制御ポリシー140Mに制御対象データ130Mへのアクセスにロールによるアクセス制御が設定され、ロールの確認が必要であると判定された場合は、利用者認証部160は、アクセス者の認証を実施する。利用者認証部160は、アクセス者を認証する際に、アクセス者の識別情報、およびアクセス者の認証情報を要求し、アクセス者の識別情報、およびアクセス者の認証情報は、バスI/F108から入力される。例えば、バスI/F108に入力装置を接続し、ユーザID、およびパスワードを入力することによってパスワード認証を適用することができる。
ステップS912では、利用者認証部160は、アクセス者の認証が成功したか否かを判定する。
ステップS914では、利用者認証部160によってアクセス者の認証が成功したと判定した場合、利用者認証部160は、アクセス者のロールをアクセス制御部162に入力する。アクセス制御部162は、アクセス者のロールに基づいて、アクセス者は制御対象データ130Mにアクセスする権限を有するか否かを判定する。アクセス制御部162は、状態管理部164から取得したライフサイクルのステージにおけるアクセス可能なロールを特定し、その特定したロールにアクセス者のロールが含まれるか否かを判定することによってアクセス者がアクセス可能であるか否かを判定する。
ステップS916では、ステップS914においてアクセス者がアクセス可能であると判定した場合、またはステップS908において制御対象データ130Mに権限がない場合でもアクセス可能であると判定した場合、アクセス制御部162は、アクセス者にデータアクセスを認可する。
ステップS918では、ステップS906で制御対象データ130Mの状態アクセス制御ポリシー140Mにアクセス可能な権限が設定されていないと判定した場合、アクセス者の認証を行う前に、アクセス制御部162は、そのアクセス者がデータへアクセスすることを拒否する。一例として、製造者の公開鍵情報などの書き込みが許されていないファイルなどの製造者秘密情報が存在する場合、アクセス制御部162は、その製造者秘密情報に書き込むためのアクセス要求を却下する。
また、ステップS918では、ステップS912で利用者認証部160によってアクセス者の認証が成功したと判定されない場合、利用者認証部160は、認証が失敗したことを示す結果をアクセス制御部162に入力する。アクセス制御部162、利用者認証部160から認証が失敗したことを示す結果を取得した場合、そのアクセス者がデータへのアクセスすることを拒否する。
また、ステップS918では、ステップS914においてアクセス者がアクセス可能でないと判定した場合、アクセス制御部162は、そのアクセス者がデータへのアクセスすることを拒否する。
図9に示されるフローチャートに示される処理の順序は、この限りでなく適宜変更可能である。例えば、ステップS910の処理は、ステップS902の前に実施することも可能である。
また、図9に示されるフローチャートに示される処理の一部は、駆動制御モジュール200の処理にも適用できる。つまり、ライフサイクル状態管理モジュール100は、ステップS902の処理の後に、駆動制御モジュール200にライフサイクル状態を通知する。
駆動制御モジュール200のアクセス制御部262は、ライフサイクル状態管理モジュール100から通知されるライフサイクル状態に基づいて、ステップS904−S908の処理を実施する。駆動制御モジュール200のアクセス制御部262は、制御対象データが権限なしにアクセス可能である場合には制御対象データへのアクセスを許可し、制御対象データが権限なしにアクセス可能でない場合にはライフサイクル状態管理モジュール100に通知する。
ライフサイクル状態管理モジュール100は、制御対象データは権限なしにアクセス可能でないことが通知された場合に、ステップS910−S912の処理を実施する。ライフサイクル状態管理モジュール100は、認証が失敗した場合にはアクセスを却下し、成功した場合には駆動制御モジュール200に通知する。
駆動制御モジュール200のアクセス制御部262は、認証が成功したことが通知された場合、認証者が制御対象データにアクセス権限を有する否かを判断し、ステップS916またはS918の処理を実施する。
また、図9に示されるフローチャートに示される処理の一部は、駆動制御モジュール200と同様に、エンジン制御モジュール300、ナビゲーションモジュール400、および車載カメラモジュール500の処理にも適用できる。
<ライフサイクル状態の変更処理>
図10は、ライフサイクル状態の変更が行われる際の処理を示す。
ステップS1002では、ライフサイクル状態管理モジュール100のアクセス制御部162は、ライフサイクル状態を変更する要求(以下、「状態変更要求」という)を受け付ける。
ステップS1004では、ライフサイクル状態管理モジュール100のアクセス制御部162は、状態変更要求を行ったアクセス者は、アクセスが許可された者であるか否かを判断する。アクセス制御部162は、データへのアクセス制御の後に、状態変更要求にしたがって、ライフサイクル状態を変更する処理を行う。具体的には、アクセス制御部162は、状態変更要求を受け付けた際に、図9に示される制御対象データへのアクセス処理を実行する。アクセス制御部162は、制御対象データへのアクセスが認可された場合にはライフサイクル状態を変更する処理を行い、アクセスが認可されない場合にはライフサイクル状態を変更する処理を却下する。
ステップS1006では、ステップS1004で状態変更要求を行ったアクセス者がアクセスを許可された者である場合、状態管理部164は、遷移条件を検索する。状態変更要求を受け付けたとき、アクセス制御部162は、状態管理部164を呼び出し、状態変更要求が行われた状態における遷移条件の通知を要求する。状態管理部164は、アクセス制御部162からの遷移条件の通知の要求にしたがって、遷移条件を通知する。遷移条件は、特定のデータが存在していること、あるデータが特定の形式を満たすことなどである。ここでは、一例として、遷移条件は、ROM104に格納された全データのハッシュ値を取り、データの改ざんを受けていないことを確認することである場合について説明する。
ステップS1008では、アクセス制御部162は、状態管理部164から通知される遷移条件に基づいて、状態変更のための遷移条件を満たしているか否かを判断する。ここでは、ROM104に格納された全データのハッシュ値を取り、データの改ざんを受けていないことを確認することが遷移条件であるため、アクセス制御部162は、制御対象データ1301−130MなどのROM104に格納された全データのハッシュ値を取り、データの改ざんを受けているかいないかを判断することによって、状態変更の遷移条件を満たしているか否かを判断する。
ステップS1010では、ステップS1008でデータの改ざんを受けていないと判断した場合、つまり、状態変更条件を満たしている場合、アクセス制御部162は、状態変更前の状態からExitする処理を行う。状態変更条件を満たしている場合、アクセス制御部162は、状態管理部164を呼び出し、状態管理部164に状態遷移前の状態データのExit動作を通知するように要求する。状態管理部164は、アクセス制御部162からのExit動作の通知要求にしたがって、状態遷移前の状態データのExit動作を通知する。アクセス制御部162は、状態管理部164から通知されるExit動作にしたがってExit処理を実施する。Exit処理を実施することによって、ライフサイクル状態を変更する上で、次の状態に移行する際に残しておくことがセキュリティ上の脆弱性につながるような情報の消去、もしくは、そのような情報の書き換えを実施できる。Exit処理の一例は、前回のライフサイクル状態における機器の主要な利用者の個人情報につながるログデータの削除、秘密鍵の改ざん防止のための書き込み不可設定などである。
ステップS1012では、ステップS1010においてExit処理が実施された後、アクセス制御部162は、状態変更を実施する。アクセス制御部162は、状態管理部164に状態の変更を通知する。状態管理部164は、アクセス制御部162から状態の変更が通知されると、現在の状態として記憶している内容を要求された状態に入れ替えることによって、管理対象の状態を遷移させる。
ステップS1014では、状態変更後の状態へのEntry処理を実施する。状態変更後、アクセス制御部162は、状態管理部164を呼び出し、Entry動作を要求する。状態管理部164は、アクセス制御部162からのEntry動作の通知の要求にしたがって、Entry動作を通知する。アクセス制御部162は、状態管理部164から通知されるEntry動作にしたがって、Entry動作を実施する。Entry動作では、状態変更後のライフサイクルを安全に使うための処理として、セキュリティ情報の初期設定などを実施する。一例として、通信のための鍵の設定が必要になる場合に、機器が鍵を自動生成するなどの処理を実施する。
ステップS1016では、ステップS1014によって、Entry処理が実施された後、状態変更を完了する。
ステップS1018では、ステップS1004で状態変更要求を行ったアクセス者がアクセスを許可された者でない場合、またはステップS1008でデータの改ざんを受けていると判断した場合、アクセス制御部162は、状態変更要求を却下する。
図10に示されるフローチャートに示される処理の順序は、この限りでなく適宜変更可能である。
<運用計画情報に基づく制御>
図11は認証局600が保有する運用計画情報の例を示す図である。図11において、運用計画情報は、ライフサイクルのステージに対応付けて、緯度、経度、開始時刻、完了時刻を保持している。緯度・経度は、位置管理装置111が位置登録情報として扱う。開始時刻・完了時刻は、時刻管理装置112がカレンダー情報として扱う。
また、ライフサイクルのステージとしては、各ステージの遷移中の管理も行うため、"生産−>販売","販売−>保守"といった中間的な状態も含めている。これは、ライフサイクル状態管理モジュール100が状態アクセス制御ポリシーを適用する上では不要な情報であるなお、このような中間的な状態も、機器からのアクセスを制御するために用いてもよい。
運用計画情報において、位置登録情報(緯度・経度)とカレンダー情報(開始時刻・完了時刻)の両者を常に設定しなければならないわけではなく、位置登録情報のみの場合も可能であり、カレンダー情報のみの場合も可能である。図11は、生産段階で決まっている情報を示しており、ステージを進むことによって情報を更新することは可能である。例えば、保守のステージであれば、お客様に販売した時刻からサービスが開始されるため、開始時刻は生産段階では不明であるので"−"となっている。この情報は、販売業者のみ更新できる情報として扱え、販売時に納品までの計画を元に更新するなどの手段を設けてもよい。
図示したのは基本的なデータ構成であり、必要に応じて、位置情報をより詳細に特定するために情報を追加することや、位置の範囲を指定すること、複数の時刻情報を扱うことなども可能である。
図12は位置管理装置111の構成例を示す図である。位置管理装置111は、位置認証部1111と位置登録情報蓄積部1112と位置情報取得部1113とを備えている。
位置認証部1111は、位置登録情報蓄積部1112に保存されている次ステージの位置情報を参照し、位置情報取得部1113が取得した現在地の位置情報と比較し、その結果を認証装置110へ送る。認証装置110は、位置管理装置111が本物であることを認証するために、署名付きの情報を認証局600へ送る。認証局600は、署名検証を行い、位置管理装置111の入れ替えが行われていないかの確認を行う。これらの認証を行うための別の手段を設けてもよい。
位置登録情報蓄積部1112は、少なくとも次ステージの位置登録情報を管理する。次ステージの位置登録情報のみを管理することで、運用計画情報の全ての情報を管理させないようにし、省メモリ化かつ位置情報の悪用によるなりすましの可能性を防ぐことができる。後述する処理例では、次ステージの位置登録情報のみを管理するものとしている。
位置情報取得部1113は、GPS(Global Positioning System)などの汎用的な技術を使って現在地の位置情報を取得する。また、現在地の位置情報を特定するために、GPS以外にも、携帯電話やPHSの基地局やWiFiアクセスポイントの情報などを使って現在の位置情報を取得してもよい。
図13は位置管理装置111の位置登録情報蓄積部1112が保持する位置登録情報の例を示す図である。図13では、位置登録情報蓄積部1112が、認証局600から取得した次ステージ「販売」の緯度・経度からなる位置登録情報を保持している状態を示している。なお、次ステージに該当する全ての緯度・経度に限らず、認証局600の取り決めに従い、一部の緯度・経度を位置登録情報として取得し保持するようにしてもよい。
図14は時刻管理装置112の構成例を示す図である。時刻管理装置112は、時刻認証部1121とカレンダー情報蓄積部1122とを備えている。
時刻認証部1121は、カレンダー情報蓄積部1122に保存されている次ステージのカレンダー情報を参照し、認証装置110から取得した現在の時刻情報と比較し、その結果を認証装置110へ送る。認証装置110は、時刻管理装置112が本物であることを認証するために、署名付きの情報を認証局600へ送る。認証局600は署名検証を行い、時刻管理装置112の入れ替えが行われていないかの確認を行う。これらの認証を行うための別の手段を設けてもよい。
カレンダー情報蓄積部1122は、少なくとも次ステージのカレンダー情報を管理する。次ステージのカレンダー情報のみを管理することで、運用計画情報の全ての情報を管理させないようにし、省メモリ化かつカレンダー情報の悪用によるなりすましの可能性を防ぐ。後述する処理例では、次ステージのカレンダー情報のみを管理するものとしている。
図15は時刻管理装置112のカレンダー情報蓄積部1122が保持するカレンダー情報の例を示す図である。図15では、カレンダー情報蓄積部1122が、認証局600から取得した次ステージ「販売」の開始時刻・完了時刻からなるカレンダー情報を保持している状態を示している。
図16は運用計画情報を用いた認証装置110の通常制御の処理例を示すフローチャートである。なお、位置管理装置111と時刻管理装置112には、生産段階において、位置登録情報とカレンダー情報が初期値として設定されているものとする。
図16のステップS101、S104において、認証装置110は、定常時に位置管理装置111と時刻管理装置112から次ステージのアクセス権の適用が可能であることの通知を受けられる状態となっている。
そして、通知を受けると、ステップS102、S105において、それぞれの装置がニセモノに入れ替えられていないかの判定を行うため、認証装置110は認証局600へ認証を要求する。
ステップS103、S106において、いずれかの認証がOKであれば、認証装置110は、ステップS107において、運用計画情報に基づいて、位置登録情報とカレンダー情報のどちらも利用しているのか否か判断する。両方とも利用している場合、認証装置110は、ステップS108〜S110において、通知を受け取っていない側の装置に、次ステージのアクセス権の適用が可能であるか確認を行う。なお、ステップS109の詳細は図23で、ステップS110の詳細は図24で説明する。
ここまでの処理の中で認証または確認がNGの場合は、不正があるものとし、ステップS111において、認証装置110はメモリアクセスコントローラ107を全てのデータにアクセスできないようにロックし、ステップS112において、認証局600へ不正情報を送信する。
認証または確認がNGとされる場合を除き、認証装置110は、ステップS113において、メモリアクセスコントローラ107に次ステージのアクセス権を適用するよう指示する。
その後、認証装置110は、次々ステージの管理を行うため、ステップS114において、認証局600へ次々ステージの運用計画情報を要求し取得する。そして、認証装置110は、ステップS115において、運用計画情報から位置登録情報のみを扱うのか、カレンダー情報のみを扱うのか、それとも両方を扱うのかを判断し、判断に応じて、ステップS116〜S119において、必要な情報を各装置へ送る。
図17は認証装置110が位置管理装置111または時刻管理装置112から不正情報を受け取った場合の処理例を示すフローチャートである。
図17のステップS121またはステップS122において、認証装置110は、位置管理装置111または時刻管理装置112から異常が検知されたことの通知を受け取った場合、次の処理を行う。すなわち、認証装置110は、ライフサイクル状態管理モジュール100が管理するデータに不正なアクセスが行われることを防止するため、ステップS123において、メモリアクセスコントローラ107に対し、すべてのデータにアクセスできないようにロックするよう指示する。その後、認証装置110は、ステップS124において、認証局600へ不正情報を送信する。
図18は位置管理装置111の通常制御の処理例を示すフローチャートである。
図18において、位置管理装置111は、ステップS131において、認証装置110から運用計画情報の次ステージの位置登録情報を取得すると、ステップS132において、取得した位置登録情報を位置登録情報蓄積部1112へ記録する。
次いで、位置管理装置111は、ステップS133において、位置情報取得部1113により現在地の位置情報を取得し、ステップS134において、前回取得時の位置情報と今回取得した位置情報に違いがあるか判断し、違いがない場合はステップS133に戻る。なお、違いがあるか否かの判断には、許容範囲(どのくらい違っても同じと判断するかの幅)を持たせることができる。
前回取得時の位置情報と今回取得した位置情報に違いがあると判断した場合、位置管理装置111は、ステップS135において、位置認証部1111により、今回取得した位置情報と位置登録情報蓄積部1112に登録されている位置登録情報とが一致するか判断する。
そして、一致する場合、位置管理装置111は、ステップS136において、認証装置110へ次ステージのアクセス権の適用が可能であることを通知する。一致しない場合、位置管理装置111は、ステップS137において、認証装置110へ不正な位置情報を検知したことを通知する。
図19は位置管理装置111の通常制御に伴う周辺との通信の例を示す図であり、図20は対応するシーケンス図である。
図19および図20において、認証装置110は認証局600に運用計画情報を要求する(ステップS11、S21)。
位置管理装置111は、認証局600から認証装置110を介して運用計画情報を取得し、位置登録情報蓄積部1112へ位置登録情報を登録する(ステップS12、S22〜S24)。
位置認証部1111は、位置情報取得部1113により、前回と異なる現在地の位置情報を検出する(ステップS13、S25〜S27)。
位置認証部1111は、位置登録情報に基づいて認証を行い、認証装置110に認証結果を通知する(ステップS14、S28〜S29)。
認証装置110は、認証結果に合わせ、メモリアクセスコントローラ107を制御する(ステップS15、S30)。
図21は時刻管理装置112の通常制御の処理例を示すフローチャートである。
図21において、時刻管理装置112は、ステップS141において、認証装置110から運用計画情報の次ステージのカレンダー情報を取得すると、ステップS142において、取得したカレンダー情報をカレンダー情報蓄積部1122へ記録する。
次いで、時刻管理装置112は、ステップS143において、運用計画情報により指定された時刻(カレンダー情報の開始時刻と完了時刻)になると、認証装置110に時刻を問い合わせる。認証装置110に時刻を問い合わせるのは、時刻管理装置112における時刻が改ざんされている可能性があるためである。認証装置110を経由して取得する時刻情報は、認証局600との時刻誤差がNTP(Network Time Protocol)やRTP(Real-time Transport Protocol)等により保証されていることとする。
次いで、時刻管理装置112は、ステップS144において、時刻認証部1121により、認証装置110から送られた時刻情報とカレンダー情報蓄積部1122のカレンダー情報が一致するか判断する。この処理は、時刻管理装置112における時刻が正確か否かを判断することになる。
一致すると判断した場合、時刻管理装置112は、ステップS145において、認証装置110へ次ステージのアクセス権の適用が可能であることを通知する。一致しない場合、時刻管理装置112は、ステップS146において、認証装置110へ運用計画を逸脱していることを通知する。
図22は認証装置110が時刻管理装置112から時刻問い合わせを受けた場合の処理例を示すフローチャートである。
図22において、認証装置110は、ステップS151において、時刻管理装置112から時刻問い合わせの要求を受けると、ステップS152において、時刻管理装置112の認証を認証局600へ要求する。
ステップS153において、認証がOKであれば、ステップS154において、認証局600へ時刻問い合わせを行い、ステップS155において、認証局600から受信した時刻情報(認証局600が発行する時刻情報)を時刻管理装置112へ送る。
認証がNGであれば、ステップS156において、認証装置110はメモリアクセスコントローラ107を全てのデータにアクセスできないようにロックし、ステップS157において、認証局600へ不正情報を送信する。
図23は時刻管理装置112が認証装置110から問い合わせを受けた場合の処理例を示すフローチャートである。すなわち、位置登録情報とカレンダー情報を元に次ステージの遷移の管理を行っている際に、位置が先に認証された場合に、時刻管理が正しく行われているか、認証装置110が時刻管理装置112へ問い合わせを行った場合の処理である。
図23において、時刻管理装置112は、ステップS161において、認証装置110から時刻問い合わせの要求と時刻情報を取得すると、ステップS162において、取得した時刻情報がカレンダー情報蓄積部1122のカレンダー情報に収まっているか判断する。時刻情報がカレンダー情報の完了時刻より前にステージ遷移する可能性もあるため、現在時刻が完了時刻内に収まっているか確認する。
そして、収まっている場合、時刻管理装置112は、ステップS163において、認証装置110へ次ステージのアクセス権の適用が可能であることを通知する。
収まっていない場合、すなわち、明らかにおかしな時刻を示している場合も含めてカレンダー情報と一致しない場合は、時刻管理装置112は、ステップS164において、認証装置110へ運用計画を逸脱していることを通知する。
図24は位置管理装置111が認証装置110から問い合わせを受けた場合の処理例を示すフローチャートである。すなわち、位置登録情報とカレンダー情報を元に次ステージの遷移の管理を行っている際に、時刻が先に認証された場合に位置管理が正しく行われているか、認証装置110が位置管理装置111へ問い合わせを行った場合の処理である。
図24において、位置管理装置111は、ステップS171において、認証装置110から位置問い合わせの要求を取得すると、ステップS172において、位置情報取得部1113により現在地の位置情報を取得する。
そして、位置管理装置111は、ステップS173において、位置認証部1111により、今回取得した位置情報と位置登録情報蓄積部1112に登録されている位置登録情報が一致するか判断する。
そして、一致する場合、位置管理装置111は、ステップS174において、認証装置110へ次ステージのアクセス権の適用が可能であることを通知する。
一致しない場合、位置管理装置111は、ステップS175において、認証装置110へ不正な位置情報であることを通知する。
図25は運用計画情報に基づく制御を行わない場合の具体例を示す図であり、図25(a)は正常時の処理、図25(b)は不正が試みられた場合の処理を示している。
図25(a)では、出荷時に物流担当者がユーザ認証の手順を完了した後に、ステップS41において、"販売ステージ移行指示"を与えると、ライフサイクル状態管理モジュール100は、ライフサイクルのステージが"生産"から"販売"に遷移する。
ライフサイクル状態管理モジュール100が搭載された製品を受け取った販売業者は、販売業者のアクセス権に基づいて、ステップS42において、"販売データアクセス"を行うことができる。
こうした場合、例えば物流担当者と販売業者が悪巧みをおこない、図25(b)に示すように、ステップS43において、通常時とは異なる"サービスステージ移行指示"を行い、販売業者はサービスユーザのアクセス権を得た上で、ステップS44において、"部品データアクセス"を行うことが可能となる。
そうすることで、本来アクセス権を与えてはいけないユーザに権限を与えてしまうため、部品転売や不適合品の交換、部品データの改ざんなどが可能となってしまう。これは、人が介在してアクセス権をコントロールしていることで問題が起きているためであり、これを解消するために、運用計画情報に基づく制御が有効である。
なお、上述した処理において、認証装置110は、位置管理装置111または時刻管理装置112との間で処理を行うに際し、認証局600による認証を行うものとしているが、認証装置110にタイマーを設け、認証装置110の稼働開始から所定の期間(認証有効期間)内は認証局600による認証を省略することができる。すなわち、位置管理装置111または時刻管理装置112との間で処理を行うに際し、予め決められたタイマーの閾値と比較し、閾値を超えない場合は、位置管理装置111または時刻管理装置112とのアクセスを可能とし、閾値を超えた場合は、認証局600による認証を行うようにすることができる。
また、不正検出によりメモリアクセスコントローラ107がロックしたデータについて、特別な権限を持つユーザのみが、データアクセスが可能となるような機能をアクセス制御部162に設けるようにすることができる。これにより、救出すべきデータを安全に取り出すことができる。
また、機器が管理するライフサイクル状態を認証局600に入力することで、認証局600がライフサイクルのステージ間の状態を自動で抽出し、ユーザが位置登録情報およびカレンダー情報を登録できるようにすることができる。これにより、運用計画情報の作成効率を向上させることができる。
また、認証局600には、認証装置110から送信された不正情報をロギングする機能を備えることで、不正アクセスの追跡が可能となる。
図26は運用計画情報に基づく制御を行う場合の具体例を示す図であり、図26(a)は正常時の処理、図26(b)は不正が試みられた場合の処理を示している。
図26では、認証局600に、ステージ毎に認定されている場所・時刻が保存されている"ライフサイクル計画書(運用計画情報)"と、位置管理装置111と時刻管理装置112が正しいことを証明する"ライフサイクル状態管理モジュールの機器情報"が存在する。これらの情報をライフサイクル状態管理モジュール100は相互認証を行うことで、人が介在しないライフサイクルのステージ遷移を実現する。
図26(a)において、物流担当者がユーザ認証の手順を完了した後に、ステップS51において、"販売ステージ移行指示"を与えると、ライフサイクル状態管理モジュール100は、運用計画情報に適合することを条件に、ライフサイクルのステージが"生産"から"販売"に遷移する。これにより、ライフサイクル状態管理モジュール100が搭載された製品を受け取った販売業者は、販売業者のアクセス権に基づいて、ステップS52において、"販売データアクセス"を行うことができる。
図26(b)において、例えば、物流担当者と販売業者が悪巧みを行い、ステップS53において、意図的にライフサイクルのステージの遷移を指示しようとしても、その位置と時刻は運用計画情報に適合しないため、ライフサイクルのステージ遷移が行えない。従って、ステップS54において、部品データにアクセスすることはできない。
<総括>
以上、説明したように、本実施形態によれば、ライフサイクルの次ステージへ遷移する際のなりすましを防ぐことができる。
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
<実施形態の用語と請求項の用語の対応>
状態管理部164は「状態管理手段」の一例である。利用者認証部160は「利用者認証手段」の一例である。アクセス制御部162は「アクセス制御手段」の一例である。認証装置110およびメモリアクセスコントローラ107は「アクセス禁止手段」の一例である。