説明

ロボット不正使用防止装置およびロボット不正使用防止方法

【課題】ロボットの不正使用を防止するロボット不正使用防止装置およびその方法を提供する。
【解決手段】不揮発性メモリ15に、暗号化したロボット制御プログラム23を記憶しておき、ブートローダ21がロボットの起動時に、入力されたプログラム復号用の復号鍵が正しい場合にのみ、暗号化したロボット制御プログラム23を復号して主記憶装置11内に展開する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット不正使用防止装置およびロボット不正使用防止方法に関する。
【背景技術】
【0002】
従来のロボットは、例えば工場などにおいて産業用ロボットとして様々な形態のものが使用されている。そして近年、その技術発展により警備用ロボットなど一般の人々の目に触れる場所での使用が広まりつつある。
【0003】
このようにロボットが多くの人の目に触れるようになると、ロボットが第三者に勝手に使用されたり、盗難などによって本来の使用者以外の人が操作したりすることが考えられるため、不正使用防止機能を設ける必要がある。また、盗難後のリバースエンジニアリングによる技術漏洩などに対する対策も必要となる。
【0004】
このような不正使用や技術漏洩の対策として、もっとも単純な方法としてはロボットに物理的な鍵をかけて盗難などに合わないようにすることである。しかし、単に物理的な鍵をかけただけでは、鍵が破壊されてしまうこともあり、不正使用防止に対する対策としては不十分である。
【0005】
そこで、従来から、半導体メモリを利用したICカード(特許文献1)やハードディスクなどに格納されたセキュリティデータ(特許文献2)をロボットに接続しないと、ロボット自体が動かないようにしたり、また、ロボットの制御プログラムにパスワード認証を実装して、パスワードがないとプログラムが開かないようにしたり(特許文献3、4)ということが行われている。
【特許文献1】特開2001−209773号公報
【特許文献2】特開2002−7216号公報
【特許文献3】特開平11−85498号公報
【特許文献4】特開2003−24184号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記のような従来の不正防止方法では、半導体メモリやハードディスクに入れたセキュリティデータを使用する場合、一緒に盗難や鹵獲されてしまえば不正行為を防止ことはできず、また、時間をかければ総当りでデータを入力するなどの手法により解読されてしまうおそれがある。一方、制御プログラムそのものがリバースエンジニアリングにより解析されてしまえば、技術漏洩だけでなく、パスワード認証のプログラムブロックを回避させて動作させるなどの方法によって、不正使用されるおそれがある。
【0007】
本発明は上記課題を解決するためになされたものであり、第1の目的は、物理的な鍵の破壊やリバースエンジニアリングによるロボットの不正使用を防止することができるロボット不正使用防止装置およびロボット不正使用防止方法を提供することにある。
【0008】
また、第2の目的は、上記第1の目的に加えて、時間をかけた解読によるロボットの不正使用を可及的に防止することができるロボット不正使用防止装置およびロボット不正使用防止方法を提供することにある。
【課題を解決するための手段】
【0009】
上記第1の目的を達成するための請求項1に係わるロボット不正使用防止装置は、揮発性記憶手段と、暗号化したロボット制御プログラムを記憶する不揮発性記憶手段と、前記暗号化したロボット制御プログラムを、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵に基づいて復号して前記揮発性記憶手段に展開する復号手段とを備えることを特徴とするものである。
【0010】
また、上記第1の目的を達成するための請求項2に係わるロボット不正使用防止装置は、揮発性記憶手段と、暗号化したロボット制御プログラムと共に、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵をさらに暗号化することで生成される暗号化した復号鍵を記憶する不揮発性記憶手段と、入力された鍵復号用の復号鍵に基づいて前記暗号化した復号鍵を復号してプログラム復号用の復号鍵を生成し、当該プログラム復号用の復号鍵に基づいて前記暗号化したロボット制御プログラムを復号して前記揮発性記憶手段に展開する復号手段とを備えることを特徴とするものである。
【0011】
また、上記第2の目的を達成するための請求項3に係わるロボット不正使用防止装置は、請求項2において、前記暗号化した復号鍵は、当該復号鍵を使用できる複数の期間ごとに設定された鍵復号用の復号鍵により暗号化され、前記期間ごとに関連付けられて前記不揮発性記憶手段に複数記憶され、前記復号手段は、前記鍵復号用の復号鍵が入力された日時と適合する前記暗号化した復号鍵を前記不揮発性記憶手段から取り出し、取り出した前記暗号化した復号鍵を用いてプログラム復号用の復号鍵を復号することを特徴とするものである。
【0012】
また、上記第2の目的を達成するための請求項4に係わるロボット不正使用防止装置は、請求項2または3において、前記暗号化した復号鍵が、前記プログラム復号用の復号鍵に、使用できる期間の日時を基にした変換処理を実施して中間データ復号鍵を生成し、当該中間データ復号鍵をさらに暗号化したものであることを特徴とするものである。
【0013】
また、上記第2の目的を達成するための請求項5に係わるロボット不正使用防止装置は、請求項3または4において、前記暗号化した復号鍵が、前記使用できる期間毎に前記不揮発性記憶手段に記憶されることを特徴とするものである。
【0014】
また、上記第2の目的を達成するための請求項6に係わるロボット不正使用防止装置は、請求項2乃至5のいずれか一項において、前記暗号化した復号鍵が、非対称暗号方式によって送信されて前記不揮発性記憶手段に記憶されることを特徴とするものである。
【0015】
一方、上記第1の目的を達成するための請求項7に係わるロボット不正使用防止方法は、揮発性記憶手段と、不揮発性記憶手段と、復号手段とを備えたロボット不正使用防止装置におけるロボット不正使用防止方法であって、前記不揮発性記憶手段には、暗号化したロボット制御プログラムが記憶され、前記復号手段が、ロボットの動作開始時に、前記暗号化したロボット制御プログラムを、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵に基づいて復号して前記揮発性記憶手段に展開することを特徴とするものである。
【0016】
また、上記第1の目的を達成するための請求項8に係わるロボット不正使用防止方法は、揮発性記憶手段と、不揮発性記憶手段と、復号手段とを備えたロボット不正使用防止装置におけるロボット不正使用防止方法であって、前記不揮発性記憶手段には、暗号化したロボット制御プログラムと共に、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵をさらに暗号化し、当該暗号化により生成される暗号化した復号鍵が記憶され、前記復号手段が、入力された鍵復号用の復号鍵に基づいて前記暗号化した復号鍵を復号してプログラム復号用の復号鍵を生成し、当該プログラム復号用の復号鍵に基づいて前記暗号化したロボット制御プログラムを復号して前記揮発性記憶手段に展開することを特徴とするものである。
【0017】
また、上記第2の目的を達成するための請求項9に係わるロボット不正使用防止方法は、請求項8において、前記暗号化した復号鍵が、前記プログラム復号用の復号鍵を当該復号鍵が使用できる期間の情報とともに暗号化したものであることを特徴とするものである。
【0018】
また、上記第2の目的を達成するための請求項10に係わるロボット不正使用防止方法は、前記暗号化した復号鍵が、前記プログラム復号用の復号鍵に、使用できる期間の日時を基にした変換処理を実施して中間データ復号鍵を生成し、当該中間データ復号鍵をさらに暗号化したものであることを特徴とするものである。
【0019】
また、上記第2の目的を達成するための請求項11に係わるロボット不正使用防止方法は、請求項9または10において、前記暗号化した復号鍵が、前記使用できる期間毎に前記不揮発性記憶手段に記憶されることを特徴とするものである。
【0020】
また、上記第2の目的を達成するための請求項12に係わるロボット不正使用防止方法は、請求項8乃至11のいずれか一項において、前記暗号化した復号鍵が、非対称暗号方式によって送信されて前記不揮発性記憶手段に記憶されることを特徴とするものである。
【発明の効果】
【0021】
上記請求項1に係わるロボット不正使用防止装置及び請求項7に係わるロボット不正使用防止方法によれば、ロボット制御プログラムを暗号化して不揮発性記憶手段に記憶しておき、ロボットを動作させる段階でプログラム復号用の復号鍵に基づいて復号して揮発性記憶手段に展開するようにしたので、物理的な鍵の破壊により動作中のロボットが盗難に遭った場合でも、ロボットの電源を止めた段階で、揮発性記憶手段に展開されていた復号したロボット制御プログラムは消えてしまうため、そのまま使用することはできなくなる。また、暗号化したロボット制御プログラムは復号鍵がないとプログラムの処理内容が一切分からないので、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止することができる。
【0022】
また、上記請求項2に係わるロボット不正使用防止装置及び請求項8に係わるロボット不正使用防止方法によれば、ロボットを動作させる段階で、暗号化した復号鍵を鍵復号用の復号鍵に基づいて復号してプログラム復号用の復号鍵を生成し、暗号化したロボット制御プログラムをこのプログラム復号用の復号鍵に基づいて復号して揮発性記憶手段に展開するようにしたので、物理的な鍵の破壊により動作中のロボットが盗難に遭った場合でも、ロボットの電源を止めた段階で、揮発性記憶手段に展開されていた復号したロボット制御プログラムは消えてしまうため、そのまま使用することはできなくなる。また、暗号化したロボット制御プログラムは復号鍵がないとプログラムの処理内容が一切分からないので、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止することができる。
【0023】
また、上記請求項3に係わるロボット不正使用防止装置及び請求項9に係わるロボット不正使用防止方法によれば、暗号化した復号鍵を使用できる期間毎に作成するようにしたので、仮に運転中のロボットが、その時点での鍵復号用の復号鍵とともに盗難されたとしても、運用期間が過ぎてしまえば、それ以上はロボットを使用されることがないので、不正使用による被害を限定することができる。また暗号化したロボット制御プログラム自体の解析もできなくなる。そして、現在動作中の期間を過ぎれば、暗号化した復号鍵そのものの効力もなくなるため、動作中に暗号化した復号鍵が解析されたとしても、その復号鍵は、運用期間を過ぎればそれ以降は使うことのできないものとなる。したがって、運用期間を短く設定しておけば、ロボットの盗難後に暗号化した復号鍵の解読に時間をかけても、運用期間を過ぎれば無駄になるため、不正使用が出来なくなる。また、仮に盗難直後に暗号化した復号鍵を解読されて不正使用されたとしても、不正使用の時間をごく短時間に抑えることが可能となるため、時間をかけた解読による不正使用を可及的に防止することができる。さらに、暗号化すべきロボット制御プログラムが多くある場合や、運用期間を時間単位で細分化した場合などにおいては、不揮発性記憶手段に記憶するデータ量を大幅に少なくすることができるので、不揮発性記憶手段の記憶容量を有効利用することができる。
【0024】
上記請求項4に係わるロボット不正使用防止装置及び請求項10に係わるロボット不正使用防止方法によれば、プログラム復号用の復号鍵に、使用できる期間の日時を基にした変換処理を実施して中間データ復号鍵を生成し、この中間データ復号鍵をさらに暗号化することにより暗号化した復号鍵を得るようにしたので、暗号化した復号鍵の解読をより困難なものにすることができる。
【0025】
上記請求項5に係わるロボット不正使用防止装置及び請求項11に係わるロボット不正使用防止方法によれば、暗号化した復号鍵を使用できる期間に応じて不揮発性記憶手段に記憶することにより、不揮発性記憶手段に記憶させておく暗号化した復号鍵は当面のロボットの動作に必要な分だけとすることができる。このため、仮に不揮発性記憶手段に記憶されている暗号化した復号鍵が解析されたとしても、解析される復号鍵の数を最小限に抑えることができる。
【0026】
上記請求項6に係わるロボット不正使用防止装置及び請求項12に係わるロボット不正使用防止方法によれば、ロボット側において、送信されてきた公開鍵によりプログラム復号用の復号鍵を復号できない場合には、正しくない送信元から送られてきたデータと判断することができるため、送信経路上での改鼠に対して安全なものとすることができる。
【発明を実施するための最良の形態】
【0027】
以下、本発明に係わるロボット不正使用防止装置を適用した実施形態について図面を参照しながら説明する。
【0028】
[実施形態1]
図1は、本発明に係るロボット不正使用防止装置を適用したロボット制御システムの構成を示すブロック図である。
【0029】
この実施形態1は、ブートローダを備えたロボット制御システムに本発明を適用した例である。
【0030】
図1に示すように、本実施形態のロボット制御システム1は、ロボットを動作させるときに必要なプログラムが展開される主記憶装置11(揮発性記憶手段)と、この主記憶装置11に展開(ロード)されたプログラムを実行してロボットを制御し、動作させるCPU13と、ロボットの動作に必要なプログラムを常時記憶している不揮発性メモリ15(不揮発性記憶手段)とを備えている。また、このシステムには、キーボードやネットワークなど25が接続されている。
【0031】
主記憶装置11内には、展開したブートローダ17と、復号したロボット制御プログラム19とが一時記憶される。この主記憶装置11は、例えばRAMなどの揮発性メモリであり、ロボットの動作が終了した時点または電源がオフとなった時点で、記憶されている内容はすべて消去される。
【0032】
一方、不揮発性メモリ15には、ブートローダ21と、暗号化したロボット制御プログラム23とが記憶されている。この暗号化したロボット制御プログラム23は、平文であるロボット制御プログラムを所定の復号鍵により暗号化して暗号文としたものであり、プログラム復号用の復号鍵により復号されるものである。
【0033】
ここで、プログラム復号用の暗号鍵は、例えば、DES(Data Encryption Standard)のような対称暗号方式であれば、暗号化の際に使用された暗号鍵と等しいものとなる。また、例えば、RSA(Rivest,Sharmir,Adleman’s Method)のような非対称暗号方式であれば、暗号化の際に使用された暗号鍵とは異なる秘密鍵となる。これらプログラム復号用の復号鍵は、ロボットを使用することができる使用者や組織により管理されている。このときに、ロボットの動作レベルに応じて権限の切り分けを行い、各レベル毎にプログラム復号用の復号鍵を設定するようにしてもよい。例えば、監視用ロボットを例とすると、Aレベルではロボットを使って特定領域を監視することしかできないが、Bレベルでは、監視に加えて侵入者への威嚇ができ、Cレベルでは監視、威嚇に加えてさらに侵入者への攻撃ができるというように権限の切り分けを行った場合、各レベルの動作に応じてロボット制御プログラムを分け、それぞれのプログラム毎にプログラム復号用の復号鍵を設定することにより、権限に応じてロボットの機能を制限することができる。上記監視用ロボットの例で言うと、監視のみを許可された使用者、監視+威嚇が許可された使用者、監視+威嚇+攻撃が許可された使用者というような権限の切り分けとなり、下位の権限をもつAレベルの使用者は監視用プログラムについてのみ実行することができ、中位の権限をもつBレベルの使用者は監視と威嚇ができるプログラムを実行することができ、上位の権限をもつCレベルの使用者は監視、威嚇及び攻撃ができるプログラムを実行することができるようになる。
【0034】
また、不揮発性メモリ15は、例えばフラッシュメモリなどの半導体メモリや、ハードディスクドライブ(HDD)などを用いたものである。そのほか、例えば、ICカード形状などの可搬式のメモリ装置として、ロボットを動作させるときに接続するようにしてもよい。
【0035】
不揮発性メモリ15に記憶されている、暗号化したロボット制御プログラム23は、動作させるロボットに応じて複数の制御ブロック毎に記憶されていてもよいし、一つでもよい。また、複数の制御ブロックに分けて記憶する場合はロボットの動作に関わる主要ブロックのみ暗号化されたものとしてもよい。
【0036】
この不揮発性メモリ15に記憶されているブートローダ21は復号手段を含み、ロボット起動時に主記憶装置11に展開される。そして、展開されたブートローダ21が起動して、使用者によってロボットに接続されたキーボードまたはネットワークを介してプログラム復号用の復号鍵が入力されることにより、展開したブートローダ17の復号手段が実行される。このとき、入力されたプログラム復号用の復号鍵に基づいて、暗号化したロボット制御プログラム23が復号されて、主記憶装置11内に展開される。
【0037】
次に、本実施形態のロボット制御システム1を動作させる際の処理手順について説明する。
【0038】
図2は、ロボット動作開始時の処理手順を示すフローチャートである。ロボットの動作開始の命令、コマンドがキーボードやネットワークなど25を介して入力されると、不揮発性メモリ15内のブートローダ21が読み込まれて、主記憶装置11内に展開される(ステップS101)。そして、展開したブートローダ17が起動される(ステップS102)。
【0039】
次に、展開したブートローダ17は、動作モードとプログラム復号用の復号鍵を受け付け(ステップS103)、暗号化したロボット制御プログラム23を一旦、主記憶装置11内に読み込む(ステップS104)。
【0040】
続いて、展開したブートローダ17は、入力されたプログラム復号用の復号鍵に基づいて、読み込んだ暗号化したロボット制御プログラム23を復号し(ステップS105)、復号したロボット制御プログラム19として主記憶装置11内の実行領域に展開する(ステップS106)。
【0041】
なお、後述する実施形態2のように、プログラム復号用の復号鍵自体が暗号化されている場合には、ステップS105において暗号化したロボット制御プログラム23を復号するのに先立って、暗号化した復号鍵の復号を行う。
【0042】
その後、復号処理が正常に行われたか否かを判断して(ステップS107)、正常に行われていればロボット制御プログラムが起動される(ステップS108)。ここで復号処理が正常に行われなかった場合には、ステップS103へ戻りプログラム復号用の復号鍵入力待ちになる。したがって、正しいプログラム復号用の復号鍵が入力されない限りロボットが動作することはない。
【0043】
なお、一定回数以上間違ったプログラム復号用の復号鍵が入力された場合は、それ以降動作を全く受け付けなくするようにしてもよい。
【0044】
本実施形態のロボット制御システム1によれば、ロボット制御プログラムを暗号化して記憶しておき、ロボットを動作させる段階でプログラム復号用の復号鍵に基づいて復号して、不揮発性記憶手段である主記憶装置11に展開するようにしたので、物理的な鍵の破壊により動作中のロボットが盗難に遭った場合でも、ロボットを停止させた段階で主記憶装置11に展開されていた復号したロボット制御プログラム19は消えてしまうため、そのまま使用することはできなくなる。また、暗号化したロボット制御プログラム23は復号鍵がないとプログラムの処理内容が一切分からないので、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止することができる。
【0045】
また、ロボット制御プログラム毎にプログラム復号用の復号鍵を変えることができるため、例えばロボットによる武器の使用など高い機密度を要する動作の実行に係わるプログラムについては、プログラム復号用の復号鍵を保持する使用者を限定することにより、細かい機密管理が可能となる。
【0046】
以上説明した実施形態1は、ブートローダ21を備えたロボットシステムの場合であるが、近年、ロボットの制御システムとして、汎用のコンピュータを使用したものが出てきており、それらはOSを備え、OS上でロボット制御プログラムを動作させている。
【0047】
次に、このようなOSを備えたロボット制御システムに本発明を適用した実施形態について説明する。
【0048】
図3は、OSを備えたロボット制御システムのブロック図であり、図4は、OSを備えたロボット制御システムにおけるロボット動作開始時の処理手順を示すフローチャートである。なお、図3において、図1と同じ機能、作用の部材には同じ符号を付している。
【0049】
図3に示すように、本システム2は、主記憶装置11(揮発性記憶手段)と、CPU13と、不揮発性メモリ15(不揮発性記憶手段)を備えている。また、このシステムには、キーボードやネットワークなど25に接続されている。
【0050】
不揮発性メモリ15には、OS27、ローダプログラム29、および暗号化したロボット制御プログラム23が記憶されている。OS27およびローダプログラム29は、起動時に主記憶装置11へ読み込まれる。これにより、主記憶装置11内に、OSおよびデバイスドライバ31などが展開され、また、ローダプログラム33が展開される。そして、展開したローダプログラム33の働きにより、主記憶装置11内に記憶領域としてRAMディスク(仮想ハードディスク)35が確保され、その中に、暗号化したロボット制御プログラム23が復号されて、復号したロボット制御プログラム19が展開される。
【0051】
図4のフローチャートに示す処理は、OSおよびローダプログラムの読み込みなどが異なるだけで、基本的な処理の手順は図2と同様である。
【0052】
まず、ロボットの動作開始が、使用者からキーボードやネットワークなど25を介して入力されると、OS27が読み込まれて、主記憶装置11内に展開されて起動される(ステップS201)。OS起動後、ローダプログラムが読み込まれて(ステップS202)、起動される(ステップS203)。
【0053】
そして、起動されたローダプログラムによって、まず、RAMディスク領域の確保が行われる(ステップS204)。
【0054】
その後は、実施形態1同様に、展開したローダプログラム33が実行されることで、動作モード、プログラム復号用の復号鍵入力(ステップS205)、暗号化したロボット制御プログラム23の読み込み(ステップS206)、読み込んだ暗号化したロボット制御プログラム23の復号(ステップS207)が行われる。ここで、復号化された制御プログラムはRAMディスクへ書き出される(ステップS208)。
【0055】
なお、後述する実施形態2のように、プログラム復号用の復号鍵自体が暗号化されている場合には、ステップS207において暗号化したロボット制御プログラム23を復号するのに先立って、暗号化した復号鍵の復号を行う。
【0056】
そして、復号処理が正常に行われたか否かを判断して(ステップS209)、正常に行われていればロボット制御プログラムが起動される(ステップS210)。ここで、復号処理が正常に行われなかった場合には、ステップS205へ戻り、動作モード、プログラム復号用の復号鍵の入力待ちになる。したがって、正しいプログラム復号用の復号鍵が入力されない限りロボットが動作することはない。なお、一定回数以上間違ったプログラム復号用の復号鍵が入力された場合は、それ以降動作を全く受け付けなくするようにしてもよい。
【0057】
このように、OSを備えたロボット制御システム2についても、本発明を適用することが可能であり、先に説明した実施形態と同様に、物理的な鍵の破壊による不正使用や、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止することができる。
【0058】
また、ロボット制御プログラム毎にプログラム復号用の復号鍵を変えることができるため、例えばロボットによる武器の使用など高い機密度を要する動作の実行に係わるプログラムについては、プログラム復号用の復号鍵を保持する使用者を限定することにより、細かい機密管理が可能となる。
【0059】
[実施形態2]
次に、実施形態2について説明する。ロボット制御プログラムの暗号化は、実施形態1に示したように、ロボット制御プログラムを暗号化して、それをプログラム復号用の復号鍵で解くようにしてもよい。しかし、さらに安全性を高めるために、ロボット制御プログラムを復号するためのプログラム復号用の復号鍵を、さらに暗号化して、暗号化した復号鍵をロボット内に保持するようにしてもよい。以下、不揮発性メモリ15に記憶されている「暗号化した復号鍵」に対して、この暗号化した復号鍵を復号するために使用者が入力する復号鍵を「鍵復号用の復号鍵」という。
【0060】
図5は、ブートローダ21を備えたロボット制御システム3において、プログラム復号用の復号鍵をさらに暗号化した場合のシステム構成を示すブロック図である。
【0061】
図5に示したシステムにおいて図1と異なるのは、不揮発性メモリ15内に、暗号化した復号鍵37を記憶していることにある。その他の構成は図1に示したシステムと同じである。
【0062】
図2に示したシステムでは、ロボット制御プログラムを復号するためのプログラム復号用の復号鍵をさらに暗号化し、この暗号化した複数の復号鍵37を不揮発性メモリ15に記憶させている。そして、展開したブートローダ17が機能した段階で、まず、この暗号化した復号鍵37を読み込み、その復号鍵を用いてプログラム復号用の復号鍵を復号し、さらにこのプログラム復号用の復号鍵を用いてロボット制御プログラム23を復号する。
【0063】
また、本実施形態では、プログラム復号用の復号鍵を暗号化する際に、使用できる複数の期間(以下、「運用期間」と称する)ごとに設定された複数の鍵復号用の復号鍵(暗号化鍵)を用いて暗号化している。これにより、運用期間と、暗号化した復号鍵37と、この暗号化した復号鍵37を復号するための鍵復号用の復号鍵との組み合わせが、運用期間ごとに複数得られることになる。そして、不揮発性メモリ15には、運用期間と、これに対応する暗号化した復号鍵37とを関連付けて複数記憶させておく。図5の不揮発性メモリ15において、暗号化した復号鍵37は、運用期間と関連付けられた暗号化した復号鍵の集まりを示している。
【0064】
ロボットの使用者は、運用期間ごとに配布された鍵復号用の復号鍵をシステムに入力して、プログラム復号用の復号鍵を復号する。
【0065】
ブートローダ21は、使用者により鍵復号用の復号鍵が入力されると、その鍵復号用の復号鍵が入力された日時と適合する暗号化した復号鍵37を、不揮発性メモリ15から取り出す。暗号化した復号鍵37は運用期間と関連付けられているため、鍵復号用の復号鍵が入力された日時と運用期間とを対比することによって、入力された日時と適合する暗号化した復号鍵37を特定することができる。例えば、鍵復号用の復号鍵が入力された日時を7月15日、8:00とすると、運用期間7月1日〜7月31と関連付けられた暗号化した復号鍵37が記憶されていれば、この暗号化した復号鍵37のみが取り出されることになる。
【0066】
そして、ブートローダ21は、取り出した暗号化した復号鍵37に対し、入力された鍵復号用の復号鍵を用いてプログラム復号用の復号鍵の復号を試みる。ここで、入力された鍵復号用の復号鍵に設定された運用期間と、取り出された暗号化した復号鍵37の運用期間とが適合していれば、暗号化した復号鍵37が正しく復号され、そのプログラム復号用の復号鍵により暗号化したロボット制御プログラム23を復号することができる。一方、入力された鍵復号用の復号鍵に設定された運用期間と、取り出された暗号化した復号鍵37の運用期間とが適合していなければ、暗号化した復号鍵37を正しく復号することができないため、そのプログラム復号用の復号鍵により暗号化したロボット制御プログラム23を復号することはできないことになる。
【0067】
このように、暗号化した復号鍵37を使用できる運用期間を予め定めておくことによって、使用者が入力した鍵復号用の復号鍵が、予め定められた運用期間以外の期間に対応している復号鍵である場合には、暗号化した復号鍵37を復号することができず、この結果、暗号化したロボット制御プログラム23も復号できないことになる。
【0068】
本実施形態において、暗号化した復号鍵37は、運用期間に応じて後から不揮発性メモリ15に追加記憶できるようにしておき、不揮発性メモリ15に記憶させておく暗号化した復号鍵37は当面のロボットの動作に必要な分だけとすることが好ましい。そして、当面の動作に不要なさらに先の期間分の暗号化した復号鍵37は、例えば、工場の管理室や本社管理部門など、ロボットから離れた場所で管理、保管しておき、ロボットの使用現場には必要な運用期間の分だけ鍵復号用の復号鍵を配布するようしておくことが好ましい。このように、不揮発性メモリ15に記憶させておく暗号化した復号鍵を、当面のロボットの動作に必要な分だけとすることにより、仮に不揮発性メモリ15に記憶されている暗号化した復号鍵が解析されたとしても、解析される復号鍵の数を最小限に抑えることができる。
【0069】
本実施形態のロボット制御システム3においても、ロボット制御プログラムを暗号化して不揮発性メモリ15記憶しておき、ロボットを動作させる段階でプログラム復号用の復号鍵に基づいて復号して主記憶装置11に展開するようにしたので、実施形態1と同様に、物理的な鍵の破壊による不正使用や、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止することができる。
【0070】
また、暗号化した復号鍵37を運用期間を予め定めておくことによって、例えば、運転中のロボットが、その時点での鍵復号用の復号鍵とともに盗難されたとしても(鍵復号用の復号鍵は盗み見、作業者の不正などにより盗難される)、運用期間が過ぎてしまえば、それ以上はロボットを使用されることがなく、不正使用による被害を限定することができる。また暗号化したロボット制御プログラム23自体の解析もできなくなる。
【0071】
そして、現在動作中の期間を過ぎれば、暗号化した復号鍵37そのものの効力もなくなるため、動作中に暗号化した復号鍵37が解析されたとしても、その復号鍵は、運用期間を過ぎればそれ以降は使うことのできないものとなる。したがって、運用期間を短く設定しておけば、ロボットの盗難後に暗号化した復号鍵の解読に時間をかけても、運用期間が過ぎれば無駄になるため、不正使用ができなくなる。また、仮に盗難直後に暗号化した復号鍵を解読されたとしても、不正使用の時間をごく短時間に抑えることができる。よって、時間をかけた復号鍵の解読による不正使用を可及的に防止することができる。
【0072】
さらに、暗号化した復号鍵37としては、例えばDESのような対称暗号方式で任意の復号鍵を選べる方式を使用することによって、複数のロボットがある場合にすべてのロボットで復号鍵を別々にするのか、または部署毎に共通の復号鍵とするのか、もしくは機種毎に同じ復号鍵とするのか、というような使用条件に応じた種々の使い分けを行うことができ、高い融通性をもった運用が可能となる。
【0073】
なお、本実施形態のように、暗号化した復号鍵に運用期間を予め定めておく手法は、実施形態1のシステムにも適用することができる。すなわち、平文のロボット制御プログラムを暗号化する際に、運用期間を決めた複数のプログラム復元用の暗号鍵を用いて暗号化するものである。この場合も、本実施形態と同様に、物理的な鍵の破壊による不正使用や、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止できるだけでなく、運用期間を短く設定しておくことにより、時間をかけた復号鍵の解読による不正使用を可及的に防止することができる。しかしながら、この場合は運用期間毎に暗号化したロボット制御プログラム23を不揮発性メモリ15に保持することになるため、メモリに記憶するデータ量が増大することになる。したがって、暗号化すべきロボット制御プログラムが多くある場合や、運用期間を時間単位で細分化した場合(例えば、使用者の勤務時間毎)などにおいては、本実施形態のように、プログラム復号用の復号鍵をさらに暗号化すると共に、暗号化した復号鍵の運用期間を定めておく手法を用いた方がメモリに記憶するデータ量が大幅に少なくなるので、メモリ容量を有効利用することができる。
【0074】
また、本実施形態ではブートローダを備えたロボット制御システムを例として説明したが、図3に示したようなOSを備えたロボット制御システムにも適用可能である。図6は、OSを備えたロボット制御システムにおいて、プログラム復号用の復号鍵を、さらに暗号化して、暗号化した復号鍵をロボット内に保持するようにした場合のシステム構成を示すブロック図である。なお、図6では、図5と同じ機能、作用の部材には同じ符号を付している。
【0075】
図6に示すロボット制御システム4のように、不揮発性メモリ15内に複数の暗号化した復号鍵37を備える場合には、主記憶装置11に展開したローダプログラム33が暗号化した復号鍵37を読み込み、その復号鍵を用いてプログラム復号用の復号鍵を復号し、さらにこのプログラム復号用の復号鍵を用いて暗号化したロボット制御プログラム23を復号する。そして、展開したローダプログラム33の働きにより、主記憶装置11内にRAMディスク35が確保され、その中に復号したロボット制御プログラム19が展開される。本システムのように構成した場合も、図5に示すシステムと同様の作用効果を得ることができる。
【0076】
[実施形態3]
次に、実施形態3について説明する。本実施形態は、暗号化した復号鍵の解読をより困難なものとするため、プログラム復号用の復号鍵に使用日時をキーとした変換を実施して中間データ復号鍵を生成し、その後、暗号化した復号鍵を作成するようにしたものである。この場合のシステム構成は図5に示したものと同じであるため、説明を省略する。
【0077】
本実施形態では、暗号化した復号鍵を作成する際に、それを運用する日時の値に基づいて、プログラム復号用の復号鍵の変換を実施して中間データ復号鍵を生成し、これを暗号化して復号鍵を得るものである。変換方法としては、日時を示す値(例えば、日にち)だけ文字列をローテーションさせる方法や、日時の値に応じた値を文字列にしたものをダミーとして挿入する方法や、日付を暗号化キーとして暗号化する方法などである。また、使用する暗号化キーは、一定期間毎に切られた有効期間の先頭時刻など、運用期間中から一意に決まる値を用いることが好ましい。
【0078】
次に、図7のフローチャートを参照して、本実施形態の手法によりプログラム復号用の復号鍵を暗号化する場合の処理手順について説明する。
【0079】
まず、平文のロボット制御プログラム41と、これを暗号化するための暗号化キー42とを用意する。そして、用意した暗号化キー42によってロボット制御プログラム41を暗号化する(ステップS301)。これにより、暗号化したロボット制御プログラム23が生成される。また、このときプログラム復号用の復号鍵43が生成される。
【0080】
なお、この段階で生成されたプログラム復号用の復号鍵43をそのまま使用する場合、すなわち、プログラム復号用の復号鍵43から中間データ復号鍵44を生成しないで使用する場合には、機密管理の観点から、これを司令室や工場など暗号化したロボット制御プログラム23から離れたところに保管することが好ましい。
【0081】
ここでは、生成されたプログラム復号用の復号鍵43を使用日時をキーとして中間データ復号鍵44とするために、続けて、運用期間の全日時を入力し(ステップS302)、実行日時(例えば運用期間の最初の日付や時刻など)による変換処理を行う(ステップS303)。これにより、中間データ復号鍵44が生成される。このとき、運用期間を細分化することで、複数の中間データ復号鍵44ができることになる。
【0082】
続いて、鍵復号用の復号鍵を生成して(ステップS304)、中間データ復号鍵44を暗号化する(ステップS305)。ここで鍵復号用の復号鍵45は、任意のものでよい。
【0083】
ここで生成した鍵復号用の復号鍵は運用期間が複数ある場合には、複数の鍵復号用の復号鍵45となる。同様に、暗号化した復号鍵37も運用期間が複数ある場合には、複数の暗号化した復号鍵37が生成されることになる。
【0084】
このようにして生成された、暗号化したロボット制御プログラム23は不揮発性メモリ15に記憶される。また、暗号化した復号鍵37は、当面のロボット動作に必要な運用期間の分だけ不揮発性メモリ15に記憶される。一方、暗号化した復号鍵37を解くための鍵復号用の復号鍵45は運用期間毎にロボット制御プログラム23から離れた場所に保管しておくか、使用者が運用期間毎に間違えないように覚えておくことになる。
【0085】
次に、図8のフローチャートを参照して、本実施形態の手法によりプログラム復号用の復号鍵を復号化する場合の処理手順について説明する。
【0086】
この復号処理は、展開したブートローダ17により実行される処理であって、上述した図2のステップS105のサブルーチンに相当する処理である。
【0087】
まず、鍵復号用の復号鍵45が入力され(ステップS401)、暗号化した復号鍵37が復号される(ステップS402)。これにより中間データ復号鍵44が生成される。
【0088】
そして、生成された中間データ復号鍵44を、入力された現在日時(ステップS403)に対応する運用期間を選択し、その運用期間の日時に基づいて中間データ生成時の変換(図7:ステップS303)の逆変換となる変換処理を行い(ステップS404)、整合性のチェックを行って(ステップS405)、暗号化したロボット制御プログラム23を復号するためのプログラム復号用の復号鍵43が生成される。
【0089】
そして展開したロータプログラム33は、不揮発性メモリ15から読み込んだ暗号化したロボット制御プログラム23を、プログラム復号用の復号鍵43により復号処理する(ステップS406)。これにより、復号したロボット制御プログラム19が主記憶装置11内に展開される。
【0090】
以上説明したように、本実施形態においては、プログラム復号用の復号鍵に使用日時をキーとした変換を実施して中間データ復号鍵を生成し、その後、暗号化した復号鍵を作成するようにしたので、暗号化した復号鍵の解読をより困難なものにすることができる。これは、同じ値を暗号化したデータがたくさんあると、それらを暗号化した際に解読しやすくなる傾向があるが、本実施形態のように、日時を加味することで同じ値の暗号化という現象を防いで、解読をより困難なものとすることができる。
【0091】
また、物理的な鍵の破壊により動作中のロボットが盗難に遭った場合でも、ロボットを停止させた段階で、主記憶装置11内のRAMディスク35に展開されている復号したロボット制御プログラム19は消えてしまうため、そのまま使用することができなくなる。したがって、物理的な鍵の破壊による不正使用を防止することができる。
【0092】
さらに、盗難された場合などに、不揮発性メモリ15上の暗号化した復号鍵37を、別の時間用に流用する操作を受けた場合について考察すると、中間データ復号鍵までは正しく復号できたとしても、その後の中間データ復号鍵からの復号においては、正しくない復号鍵となるため、リバースエンジニアリングなどの解析による技術漏洩や不正使用を防止することができる。
【0093】
[他の実施形態]
以下、暗号化したロボット制御プログラムを復号化する段階において、安全性をさらに高めるための実施形態について説明する。
【0094】
(1)暗号化した復号鍵の時間による自動消去
この場合のシステム構成は図1に示したものと同様であり、あらかじめブートローダ21内に消去機能を実装しておくことになる。
【0095】
具体的には、起動時のブートローダ21やロボット制御プログラムの切り替え中において、暗号化した復号鍵を復号する前に、現在時刻と比較して、有効期間が十分に昔の鍵(例えば12時間以上前)のデータを消去するものである。これにより、例えば、暗号化した復号鍵が漏れた場合に、過去に使用していた暗号化した復号鍵と、過去に暗号化した復号鍵を使って、復号鍵を割り出すというようなリバースエンジニアリングによる解析が困難なものとなる。
【0096】
(2)暗号化した復号鍵を復号する際の整合性チェック
この場合のシステム構成は図1に示したものと同様であり、あらかじめブートローダ21内に整合性のチェック機能を実装しておくことになる。
【0097】
具体的には、例えば、暗号化するデータ、すなわち、ロボット制御プログラムにあらかじめハッシュ値(RFC1321で提唱されたMD5など)やCRCコードを付加して、これを暗号化しておく。例えば、MD5の手法は、ハッシュ関数を使った暗号化/復号化アルゴリズムであり、データを送受信する際に、送信側と受信側でハッシュ値を比較することにより、データの完全性をチェックするものである。また、CRCコードは、同じファイルからは必ず同じコードが生成され、1バイトでもデータが異なると全く別のコードが生成されるという特徴を利用した誤りチェックの手法であり、元ファイルから生成されたCRCコードと、対象ファイルから生成されたCRCコードとを比較することにより、ファイルが正常かどうか、壊れていないかを調べるものである。
【0098】
或いは、前述した暗号化の際に用いた運用期間ごとの使用可能開始時間などでもよい。そして、暗号化した復号鍵を復号化の際に、これらコードが一致するかどうかを確認する。
【0099】
このようにすることで、間違ったプログラム復号用の復号鍵により、暗号化したロボット制御プログラムが復号された場合に、正しくないプログラムコードが生成され、これによりロボットが暴走することを防止することができる。なお、通常は間違った復号鍵を用いた場合、復号そのものが行われないため、このようなことが起こる可能性は低いと考えられる。
【0100】
(3)非対称暗号方式による送信
安全性を向上させるための他の手法としては、追加で暗号化した復号鍵を送信する際に、非対称暗号方式で送信することである。
【0101】
上述したように、運用期間毎に、暗号化した復号鍵と鍵復号用の復号鍵とを設定した場合、それらをロボットに入力する必要があるが、その際に、ネットワークを介して送信することが考えられる。例えば、工場の管理室や本社管理部門など、ロボットから離れた場所で復号鍵を管理している場合に、ロボットの稼動している現場にネットワークを介して復号鍵をデータ送信する場合などである。このようなネットワークを介して復号鍵などを送るとネットワークから復号鍵が漏洩するおそれがあり、改竄された誤った復号鍵が送られてくる可能性がある。このような不具合を解消するため、非対称暗号方式(例えばRSAなど)を用いてデータを送信するものである。
【0102】
この場合、ロボット側には、公開鍵、データ作成者(ここでは復号鍵の作成者)側は秘密鍵をもたせることになる。したがって、ロボット側の公開鍵で復号できるデータをもつためには、秘密鍵で暗号化する必要がある。
【0103】
このため、秘密鍵で暗号化できることをもって正しい送信元であることが保証されることになる。すなわち、ロボット側の公開鍵で復号できない場合には、正しくない送信元から送られてきたデータと判断することができる。このように、本手法を用いた場合には、送信経路上での改鼠に対して安全なものとなる。
【0104】
以上、本発明の好適な実施形態について説明したが、本発明はこれらの実施形態に限定されるものではなく、各実施形態を様々に組み合わせることも可能であるし、また、これら実施形態以外に当業者による様々な形態が可能である。
【図面の簡単な説明】
【0105】
【図1】ブートローダを備えたロボット制御システムの構成を示すブロック図である。
【図2】図1のシステムにおいてロボット動作開始時の処理手順を示すフローチャートである。
【図3】OSを備えたロボット制御システムの構成を示すブロック図である。
【図4】図3のシステムにおいてロボット動作開始時の処理手順を示すフローチャートである。
【図5】ブードローダを備えたロボット制御システムにおいてプログラム復号用の復号鍵をさらに暗号化した場合のシステム構成を示すブロック図である。
【図6】OSを備えたロボット制御システムにおいてプログラム復号用の復号鍵をさらに暗号化してロボット内に保持するようにした場合のシステム構成を示すブロック図である。
【図7】プログラム復号用の復号鍵を中間データを用いて暗号化する場合の処理手順を示すフローチャートである。
【図8】プログラム復号用の復号鍵を中間データを用いて復号化する場合の処理手順を示すフローチャートである。
【符号の説明】
【0106】
1、2、3、4…ロボット制御システム
11…主記憶装置(揮発性記憶手段)
13…CPU
15…不揮発性メモリ(不揮発性記憶手段)
17…展開したブートローダ
19…復号したロボット制御プログラム
21…ブートローダ
23…暗号化したロボット制御プログラム
27…OS
29…ローダプログラム
31…デバイスドライバ
33…展開したローダプログラム
35…RAMディスク(仮想ハードディスク)
37…暗号化した復号鍵
41…平文のロボット制御プログラム
42…暗号化キー
43…プログラム復号用の復号鍵
44…中間データ復号鍵
45…鍵復号用の復号鍵

【特許請求の範囲】
【請求項1】
揮発性記憶手段と、
暗号化したロボット制御プログラムを記憶する不揮発性記憶手段と、
前記暗号化したロボット制御プログラムを、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵に基づいて復号して前記揮発性記憶手段に展開する復号手段と、
を備えることを特徴とするロボット不正使用防止装置。
【請求項2】
揮発性記憶手段と、
暗号化したロボット制御プログラムと共に、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵をさらに暗号化することで生成される暗号化した復号鍵を記憶する不揮発性記憶手段と、
入力された鍵復号用の復号鍵に基づいて前記暗号化した復号鍵を復号してプログラム復号用の復号鍵を生成し、当該プログラム復号用の復号鍵に基づいて前記暗号化したロボット制御プログラムを復号して前記揮発性記憶手段に展開する復号手段と、
を備えることを特徴とするロボット不正使用防止装置。
【請求項3】
前記暗号化した復号鍵は、当該復号鍵を使用できる複数の期間ごとに設定された鍵復号用の復号鍵により暗号化され、前記期間ごとに関連付けられて前記不揮発性記憶手段に複数記憶され、
前記復号手段は、前記鍵復号用の復号鍵が入力された日時と適合する前記暗号化した復号鍵を前記不揮発性記憶手段から取り出し、取り出した前記暗号化した復号鍵を用いてプログラム復号用の復号鍵を復号すること、
を特徴とする請求項2に記載のロボット不正使用防止装置。
【請求項4】
前記暗号化した復号鍵は、前記プログラム復号用の復号鍵に、前記暗号化した復号鍵を使用できる期間の日時を基にした変換処理を実施して中間データ復号鍵を生成し、当該中間データ復号鍵をさらに暗号化したものであることを特徴とする請求項2または3に記載のロボット不正使用防止装置。
【請求項5】
前記暗号化した復号鍵は、前記使用できる期間毎に前記不揮発性記憶手段に記憶されることを特徴とする請求項3または4に記載のロボット不正使用防止装置。
【請求項6】
前記暗号化した復号鍵は、非対称暗号方式によって送信されて前記不揮発性記憶手段に記憶されることを特徴とする請求項2乃至5のいずれか一項に記載のロボット不正使用防止装置。
【請求項7】
揮発性記憶手段と、不揮発性記憶手段と、復号手段とを備えたロボット不正使用防止装置におけるロボット不正使用防止方法であって、
前記不揮発性記憶手段には、暗号化したロボット制御プログラムが記憶され、
前記復号手段が、ロボットの動作開始時に、前記暗号化したロボット制御プログラムを、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵に基づいて復号して前記揮発性記憶手段に展開することを特徴とするロボット不正使用防止方法。
【請求項8】
揮発性記憶手段と、不揮発性記憶手段と、復号手段とを備えたロボット不正使用防止装置におけるロボット不正使用防止方法であって、
前記不揮発性記憶手段には、暗号化したロボット制御プログラムと共に、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵をさらに暗号化し、当該暗号化により生成される暗号化した復号鍵が記憶され、
前記復号手段が、入力された鍵復号用の復号鍵に基づいて前記暗号化した復号鍵を復号してプログラム復号用の復号鍵を生成し、当該プログラム復号用の復号鍵に基づいて前記暗号化したロボット制御プログラムを復号して前記揮発性記憶手段に展開することを特徴とするロボット不正使用防止方法。
【請求項9】
前記暗号化した復号鍵は、当該復号鍵を使用できる複数の期間ごとに設定された鍵復号用の復号鍵により暗号化され、前記期間ごとに関連付けられて前記不揮発性記憶手段に複数記憶され、
前記復号手段が、前記鍵復号用の復号鍵が入力された日時と適合する前記暗号化した復号鍵を前記不揮発性記憶手段から取り出し、取り出した前記暗号化した復号鍵を用いてプログラム復号用の復号鍵を復号すること、
を特徴とする請求項8に記載のロボット不正使用防止方法。
【請求項10】
前記暗号化した復号鍵は、前記プログラム復号用の復号鍵に、使用できる期間の日時を基にした変換処理を実施して中間データ復号鍵を生成し、当該中間データ復号鍵をさらに暗号化したものであることを特徴とする請求項8または9に記載のロボット不正使用防止方法。
【請求項11】
前記暗号化した復号鍵は、前記使用できる期間毎に前記不揮発性記憶手段に記憶されることを特徴とする請求項9または10に記載のロボット不正使用防止方法。
【請求項12】
前記暗号化した復号鍵は、非対称暗号方式によって送信されて前記不揮発性記憶手段に記憶されることを特徴とする請求項8乃至11のいずれか一項に記載のロボット不正使用防止方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−104380(P2009−104380A)
【公開日】平成21年5月14日(2009.5.14)
【国際特許分類】
【出願番号】特願2007−275086(P2007−275086)
【出願日】平成19年10月23日(2007.10.23)
【出願人】(000000099)株式会社IHI (5,014)
【Fターム(参考)】