(57)【特許請求の範囲】
【請求項１】
揮発性記憶手段と、
暗号化したロボット制御プログラムと共に、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵をさらに暗号化することで生成される暗号化した復号鍵を記憶する不揮発性記憶手段と、
入力された鍵復号用の復号鍵に基づいて前記暗号化した復号鍵を復号してプログラム復号用の復号鍵を生成し、当該プログラム復号用の復号鍵に基づいて前記暗号化したロボット制御プログラムを復号して前記揮発性記憶手段に展開する復号手段とを備え、
前記暗号化した復号鍵は、当該復号鍵を使用できる複数の期間ごとに設定された鍵復号用の復号鍵により暗号化され、前記期間ごとに関連付けられて前記不揮発性記憶手段に複数記憶され、
前記復号手段は、前記鍵復号用の復号鍵が入力された日時と適合する前記暗号化した復号鍵を前記不揮発性記憶手段から取り出し、取り出した前記暗号化した復号鍵を用いてプログラム復号用の復号鍵を復号する、
ことを特徴とするロボット不正使用防止装置。
【請求項２】
前記暗号化した復号鍵は、前記プログラム復号用の復号鍵に、前記暗号化した復号鍵を使用できる期間の日時を基にした変換処理を実施して中間データ復号鍵を生成し、当該中間データ復号鍵をさらに暗号化したものであることを特徴とする請求項１に記載のロボット不正使用防止装置。
【請求項３】
前記暗号化した復号鍵は、前記使用できる期間毎に前記不揮発性記憶手段に記憶されることを特徴とする請求項１または２に記載のロボット不正使用防止装置。
【請求項４】
前記暗号化した復号鍵は、非対称暗号方式によって送信されて前記不揮発性記憶手段に記憶されることを特徴とする請求項１乃至３のいずれか一項に記載のロボット不正使用防止装置。
【請求項５】
揮発性記憶手段と、不揮発性記憶手段と、復号手段とを備えたロボット不正使用防止装置におけるロボット不正使用防止方法であって、
前記不揮発性記憶手段には、暗号化したロボット制御プログラムと共に、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵をさらに暗号化し、当該暗号化により生成される暗号化した復号鍵が記憶され、
前記復号手段が、入力された鍵復号用の復号鍵に基づいて前記暗号化した復号鍵を復号してプログラム復号用の復号鍵を生成し、当該プログラム復号用の復号鍵に基づいて前記暗号化したロボット制御プログラムを復号して前記揮発性記憶手段に展開し、
前記暗号化した復号鍵は、当該復号鍵を使用できる複数の期間ごとに設定された鍵復号用の復号鍵により暗号化され、前記期間ごとに関連付けられて前記不揮発性記憶手段に複数記憶され、
前記復号手段が、前記鍵復号用の復号鍵が入力された日時と適合する前記暗号化した復号鍵を前記不揮発性記憶手段から取り出し、取り出した前記暗号化した復号鍵を用いてプログラム復号用の復号鍵を復号する、
ことを特徴とするロボット不正使用防止方法。
【請求項６】
前記暗号化した復号鍵は、前記プログラム復号用の復号鍵に、使用できる期間の日時を基にした変換処理を実施して中間データ復号鍵を生成し、当該中間データ復号鍵をさらに暗号化したものであることを特徴とする請求項５に記載のロボット不正使用防止方法。
【請求項７】
前記暗号化した復号鍵は、前記使用できる期間毎に前記不揮発性記憶手段に記憶されることを特徴とする請求項５または６に記載のロボット不正使用防止方法。
【請求項８】
前記暗号化した復号鍵は、非対称暗号方式によって送信されて前記不揮発性記憶手段に記憶されることを特徴とする請求項５乃至７のいずれか一項に記載のロボット不正使用防止方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット不正使用防止装置およびロボット不正使用防止方法に関する。
【背景技術】
【０００２】
従来のロボットは、例えば工場などにおいて産業用ロボットとして様々な形態のものが使用されている。そして近年、その技術発展により警備用ロボットなど一般の人々の目に触れる場所での使用が広まりつつある。
【０００３】
このようにロボットが多くの人の目に触れるようになると、ロボットが第三者に勝手に使用されたり、盗難などによって本来の使用者以外の人が操作したりすることが考えられるため、不正使用防止機能を設ける必要がある。また、盗難後のリバースエンジニアリングによる技術漏洩などに対する対策も必要となる。
【０００４】
このような不正使用や技術漏洩の対策として、もっとも単純な方法としてはロボットに物理的な鍵をかけて盗難などに合わないようにすることである。しかし、単に物理的な鍵をかけただけでは、鍵が破壊されてしまうこともあり、不正使用防止に対する対策としては不十分である。
【０００５】
そこで、従来から、半導体メモリを利用したＩＣカード（特許文献１）やハードディスクなどに格納されたセキュリティデータ（特許文献２）をロボットに接続しないと、ロボット自体が動かないようにしたり、また、ロボットの制御プログラムにパスワード認証を実装して、パスワードがないとプログラムが開かないようにしたり（特許文献３、４）ということが行われている。
【特許文献１】特開２００１−２０９７７３号公報
【特許文献２】特開２００２−７２１６号公報
【特許文献３】特開平１１−８５４９８号公報
【特許文献４】特開２００３−２４１８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記のような従来の不正防止方法では、半導体メモリやハードディスクに入れたセキュリティデータを使用する場合、一緒に盗難や鹵獲されてしまえば不正行為を防止ことはできず、また、時間をかければ総当りでデータを入力するなどの手法により解読されてしまうおそれがある。一方、制御プログラムそのものがリバースエンジニアリングにより解析されてしまえば、技術漏洩だけでなく、パスワード認証のプログラムブロックを回避させて動作させるなどの方法によって、不正使用されるおそれがある。
【０００７】
本発明は上記課題を解決するためになされたものであり、本発明の目的は、物理的な鍵の破壊やリバースエンジニアリングによるロボットの不正使用を防止することができるロボット不正使用防止装置およびロボット不正使用防止方法を提供することにある。
【０００８】
また、本発明の目的は、上記の目的に加えて、時間をかけた解読によるロボットの不正使用を可及的に防止することができるロボット不正使用防止装置およびロボット不正使用防止方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するための請求項１に係わるロボット不正使用防止装置は、揮発性記憶手段と、暗号化したロボット制御プログラムと共に、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵をさらに暗号化することで生成される暗号化した復号鍵を記憶する不揮発性記憶手段と、入力された鍵復号用の復号鍵に基づいて前記暗号化した復号鍵を復号してプログラム復号用の復号鍵を生成し、当該プログラム復号用の復号鍵に基づいて前記暗号化したロボット制御プログラムを復号して前記揮発性記憶手段に展開する復号手段とを備え、前記暗号化した復号鍵は、当該復号鍵を使用できる複数の期間ごとに設定された鍵復号用の復号鍵により暗号化され、前記期間ごとに関連付けられて前記不揮発性記憶手段に複数記憶され、前記復号手段は、前記鍵復号用の復号鍵が入力された日時と適合する前記暗号化した復号鍵を前記不揮発性記憶手段から取り出し、取り出した前記暗号化した復号鍵を用いてプログラム復号用の復号鍵を復号することを特徴とするものである。
【００１２】
また、上記目的を達成するための請求項２に係わるロボット不正使用防止装置は、請求項１において、前記暗号化した復号鍵が、前記プログラム復号用の復号鍵に、使用できる期間の日時を基にした変換処理を実施して中間データ復号鍵を生成し、当該中間データ復号鍵をさらに暗号化したものであることを特徴とするものである。
【００１３】
また、上記目的を達成するための請求項３に係わるロボット不正使用防止装置は、請求項１または２において、前記暗号化した復号鍵が、前記使用できる期間毎に前記不揮発性記憶手段に記憶されることを特徴とするものである。
【００１４】
また、上記目的を達成するための請求項４に係わるロボット不正使用防止装置は、請求項１乃至３のいずれか一項において、前記暗号化した復号鍵が、非対称暗号方式によって送信されて前記不揮発性記憶手段に記憶されることを特徴とするものである。
【００１７】
また、上記目的を達成するための請求項５に係わるロボット不正使用防止方法は、揮発性記憶手段と、不揮発性記憶手段と、復号手段とを備えたロボット不正使用防止装置におけるロボット不正使用防止方法であって、前記不揮発性記憶手段には、暗号化したロボット制御プログラムと共に、当該ロボット制御プログラムを復号するためのプログラム復号用の復号鍵をさらに暗号化し、当該暗号化により生成される暗号化した復号鍵が記憶され、前記復号手段が、入力された鍵復号用の復号鍵に基づいて前記暗号化した復号鍵を復号してプログラム復号用の復号鍵を生成し、当該プログラム復号用の復号鍵に基づいて前記暗号化したロボット制御プログラムを復号して前記揮発性記憶手段に展開し、前記暗号化した復号鍵は、当該復号鍵を使用できる複数の期間ごとに設定された鍵復号用の復号鍵により暗号化され、前記期間ごとに関連付けられて前記不揮発性記憶手段に複数記憶され、前記復号手段が、前記鍵復号用の復号鍵が入力された日時と適合する前記暗号化した復号鍵を前記不揮発性記憶手段から取り出し、取り出した前記暗号化した復号鍵を用いてプログラム復号用の復号鍵を復号することを特徴とするものである。
【００１８】
また、上記目的を達成するための請求項６に係わるロボット不正使用防止方法は、請求項５において、前記暗号化した復号鍵が、前記プログラム復号用の復号鍵に、使用できる期間の日時を基にした変換処理を実施して中間データ復号鍵を生成し、当該中間データ復号鍵をさらに暗号化したものであることを特徴とするものである。
【００１９】
また、上記目的を達成するための請求項７に係わるロボット不正使用防止方法は、請求項５または６において、前記暗号化した復号鍵が、前記使用できる期間毎に前記不揮発性記憶手段に記憶されることを特徴とするものである。
【００２０】
また、上記目的を達成するための請求項８に係わるロボット不正使用防止方法は、請求項５乃至７のいずれか一項において、前記暗号化した復号鍵が、非対称暗号方式によって送信されて前記不揮発性記憶手段に記憶されることを特徴とするものである。
【発明の効果】
【００２２】
上記請求項１に係わるロボット不正使用防止装置及び請求項５に係わるロボット不正使用防止方法によれば、ロボットを動作させる段階で、暗号化した復号鍵を鍵復号用の復号鍵に基づいて復号してプログラム復号用の復号鍵を生成し、暗号化したロボット制御プログラムをこのプログラム復号用の復号鍵に基づいて復号して揮発性記憶手段に展開するようにしたので、物理的な鍵の破壊により動作中のロボットが盗難に遭った場合でも、ロボットの電源を止めた段階で、揮発性記憶手段に展開されていた復号したロボット制御プログラムは消えてしまうため、そのまま使用することはできなくなる。また、暗号化したロボット制御プログラムは復号鍵がないとプログラムの処理内容が一切分からないので、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止することができる。
【００２３】
また、上記請求項１に係わるロボット不正使用防止装置及び請求項５に係わるロボット不正使用防止方法によれば、暗号化した復号鍵を使用できる期間毎に作成するようにしたので、仮に運転中のロボットが、その時点での鍵復号用の復号鍵とともに盗難されたとしても、運用期間が過ぎてしまえば、それ以上はロボットを使用されることがないので、不正使用による被害を限定することができる。また暗号化したロボット制御プログラム自体の解析もできなくなる。そして、現在動作中の期間を過ぎれば、暗号化した復号鍵そのものの効力もなくなるため、動作中に暗号化した復号鍵が解析されたとしても、その復号鍵は、運用期間を過ぎればそれ以降は使うことのできないものとなる。したがって、運用期間を短く設定しておけば、ロボットの盗難後に暗号化した復号鍵の解読に時間をかけても、運用期間を過ぎれば無駄になるため、不正使用が出来なくなる。また、仮に盗難直後に暗号化した復号鍵を解読されて不正使用されたとしても、不正使用の時間をごく短時間に抑えることが可能となるため、時間をかけた解読による不正使用を可及的に防止することができる。さらに、暗号化すべきロボット制御プログラムが多くある場合や、運用期間を時間単位で細分化した場合などにおいては、不揮発性記憶手段に記憶するデータ量を大幅に少なくすることができるので、不揮発性記憶手段の記憶容量を有効利用することができる。
【００２４】
上記請求項２に係わるロボット不正使用防止装置及び請求項６に係わるロボット不正使用防止方法によれば、プログラム復号用の復号鍵に、使用できる期間の日時を基にした変換処理を実施して中間データ復号鍵を生成し、この中間データ復号鍵をさらに暗号化することにより暗号化した復号鍵を得るようにしたので、暗号化した復号鍵の解読をより困難なものにすることができる。
【００２５】
上記請求項３に係わるロボット不正使用防止装置及び請求項７に係わるロボット不正使用防止方法によれば、暗号化した復号鍵を使用できる期間に応じて不揮発性記憶手段に記憶することにより、不揮発性記憶手段に記憶させておく暗号化した復号鍵は当面のロボットの動作に必要な分だけとすることができる。このため、仮に不揮発性記憶手段に記憶されている暗号化した復号鍵が解析されたとしても、解析される復号鍵の数を最小限に抑えることができる。
【００２６】
上記請求項４に係わるロボット不正使用防止装置及び請求項８に係わるロボット不正使用防止方法によれば、ロボット側において、送信されてきた公開鍵によりプログラム復号用の復号鍵を復号できない場合には、正しくない送信元から送られてきたデータと判断することができるため、送信経路上での改鼠に対して安全なものとすることができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明に係わるロボット不正使用防止装置を適用した実施形態について図面を参照しながら説明する。
【００２８】
［参考例］
図１は、本発明の参考例に係るロボット不正使用防止装置を適用したロボット制御システムの構成を示すブロック図である。
【００２９】
この参考例は、ブートローダを備えたロボット制御システムの例である。
【００３０】
図１に示すように、本参考例のロボット制御システム１は、ロボットを動作させるときに必要なプログラムが展開される主記憶装置１１（揮発性記憶手段）と、この主記憶装置１１に展開（ロード）されたプログラムを実行してロボットを制御し、動作させるＣＰＵ１３と、ロボットの動作に必要なプログラムを常時記憶している不揮発性メモリ１５（不揮発性記憶手段）とを備えている。また、このシステムには、キーボードやネットワークなど２５が接続されている。
【００３１】
主記憶装置１１内には、展開したブートローダ１７と、復号したロボット制御プログラム１９とが一時記憶される。この主記憶装置１１は、例えばＲＡＭなどの揮発性メモリであり、ロボットの動作が終了した時点または電源がオフとなった時点で、記憶されている内容はすべて消去される。
【００３２】
一方、不揮発性メモリ１５には、ブートローダ２１と、暗号化したロボット制御プログラム２３とが記憶されている。この暗号化したロボット制御プログラム２３は、平文であるロボット制御プログラムを所定の復号鍵により暗号化して暗号文としたものであり、プログラム復号用の復号鍵により復号されるものである。
【００３３】
ここで、プログラム復号用の暗号鍵は、例えば、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）のような対称暗号方式であれば、暗号化の際に使用された暗号鍵と等しいものとなる。また、例えば、ＲＳＡ（Ｒｉｖｅｓｔ，Ｓｈａｒｍｉｒ，Ａｄｌｅｍａｎ’ｓ  Ｍｅｔｈｏｄ）のような非対称暗号方式であれば、暗号化の際に使用された暗号鍵とは異なる秘密鍵となる。これらプログラム復号用の復号鍵は、ロボットを使用することができる使用者や組織により管理されている。このときに、ロボットの動作レベルに応じて権限の切り分けを行い、各レベル毎にプログラム復号用の復号鍵を設定するようにしてもよい。例えば、監視用ロボットを例とすると、Ａレベルではロボットを使って特定領域を監視することしかできないが、Ｂレベルでは、監視に加えて侵入者への威嚇ができ、Ｃレベルでは監視、威嚇に加えてさらに侵入者への攻撃ができるというように権限の切り分けを行った場合、各レベルの動作に応じてロボット制御プログラムを分け、それぞれのプログラム毎にプログラム復号用の復号鍵を設定することにより、権限に応じてロボットの機能を制限することができる。上記監視用ロボットの例で言うと、監視のみを許可された使用者、監視＋威嚇が許可された使用者、監視＋威嚇＋攻撃が許可された使用者というような権限の切り分けとなり、下位の権限をもつＡレベルの使用者は監視用プログラムについてのみ実行することができ、中位の権限をもつＢレベルの使用者は監視と威嚇ができるプログラムを実行することができ、上位の権限をもつＣレベルの使用者は監視、威嚇及び攻撃ができるプログラムを実行することができるようになる。
【００３４】
また、不揮発性メモリ１５は、例えばフラッシュメモリなどの半導体メモリや、ハードディスクドライブ（ＨＤＤ）などを用いたものである。そのほか、例えば、ＩＣカード形状などの可搬式のメモリ装置として、ロボットを動作させるときに接続するようにしてもよい。
【００３５】
不揮発性メモリ１５に記憶されている、暗号化したロボット制御プログラム２３は、動作させるロボットに応じて複数の制御ブロック毎に記憶されていてもよいし、一つでもよい。また、複数の制御ブロックに分けて記憶する場合はロボットの動作に関わる主要ブロックのみ暗号化されたものとしてもよい。
【００３６】
この不揮発性メモリ１５に記憶されているブートローダ２１は復号手段を含み、ロボット起動時に主記憶装置１１に展開される。そして、展開されたブートローダ２１が起動して、使用者によってロボットに接続されたキーボードまたはネットワークを介してプログラム復号用の復号鍵が入力されることにより、展開したブートローダ１７の復号手段が実行される。このとき、入力されたプログラム復号用の復号鍵に基づいて、暗号化したロボット制御プログラム２３が復号されて、主記憶装置１１内に展開される。
【００３７】
次に、本参考例のロボット制御システム１を動作させる際の処理手順について説明する。
【００３８】
図２は、ロボット動作開始時の処理手順を示すフローチャートである。ロボットの動作開始の命令、コマンドがキーボードやネットワークなど２５を介して入力されると、不揮発性メモリ１５内のブートローダ２１が読み込まれて、主記憶装置１１内に展開される（ステップＳ１０１）。そして、展開したブートローダ１７が起動される（ステップＳ１０２）。
【００３９】
次に、展開したブートローダ１７は、動作モードとプログラム復号用の復号鍵を受け付け（ステップＳ１０３）、暗号化したロボット制御プログラム２３を一旦、主記憶装置１１内に読み込む（ステップＳ１０４）。
【００４０】
続いて、展開したブートローダ１７は、入力されたプログラム復号用の復号鍵に基づいて、読み込んだ暗号化したロボット制御プログラム２３を復号し（ステップＳ１０５）、復号したロボット制御プログラム１９として主記憶装置１１内の実行領域に展開する（ステップＳ１０６）。
【００４１】
なお、後述する実施形態１のように、プログラム復号用の復号鍵自体が暗号化されている場合には、ステップＳ１０５において暗号化したロボット制御プログラム２３を復号するのに先立って、暗号化した復号鍵の復号を行う。
【００４２】
その後、復号処理が正常に行われたか否かを判断して（ステップＳ１０７）、正常に行われていればロボット制御プログラムが起動される（ステップＳ１０８）。ここで復号処理が正常に行われなかった場合には、ステップＳ１０３へ戻りプログラム復号用の復号鍵入力待ちになる。したがって、正しいプログラム復号用の復号鍵が入力されない限りロボットが動作することはない。
【００４３】
なお、一定回数以上間違ったプログラム復号用の復号鍵が入力された場合は、それ以降動作を全く受け付けなくするようにしてもよい。
【００４４】
本参考例のロボット制御システム１によれば、ロボット制御プログラムを暗号化して記憶しておき、ロボットを動作させる段階でプログラム復号用の復号鍵に基づいて復号して、揮発性記憶手段である主記憶装置１１に展開するようにしたので、物理的な鍵の破壊により動作中のロボットが盗難に遭った場合でも、ロボットを停止させた段階で主記憶装置１１に展開されていた復号したロボット制御プログラム１９は消えてしまうため、そのまま使用することはできなくなる。また、暗号化したロボット制御プログラム２３は復号鍵がないとプログラムの処理内容が一切分からないので、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止することができる。
【００４５】
また、ロボット制御プログラム毎にプログラム復号用の復号鍵を変えることができるため、例えばロボットによる武器の使用など高い機密度を要する動作の実行に係わるプログラムについては、プログラム復号用の復号鍵を保持する使用者を限定することにより、細かい機密管理が可能となる。
【００４６】
以上説明した参考例は、ブートローダ２１を備えたロボットシステムの場合であるが、近年、ロボットの制御システムとして、汎用のコンピュータを使用したものが出てきており、それらはＯＳを備え、ＯＳ上でロボット制御プログラムを動作させている。
【００４７】
次に、このようなＯＳを備えたロボット制御システムに適用した参考例について説明する。
【００４８】
図３は、ＯＳを備えたロボット制御システムのブロック図であり、図４は、ＯＳを備えたロボット制御システムにおけるロボット動作開始時の処理手順を示すフローチャートである。なお、図３において、図１と同じ機能、作用の部材には同じ符号を付している。
【００４９】
図３に示すように、本システム２は、主記憶装置１１（揮発性記憶手段）と、ＣＰＵ１３と、不揮発性メモリ１５（不揮発性記憶手段）を備えている。また、このシステムには、キーボードやネットワークなど２５に接続されている。
【００５０】
不揮発性メモリ１５には、ＯＳ２７、ローダプログラム２９、および暗号化したロボット制御プログラム２３が記憶されている。ＯＳ２７およびローダプログラム２９は、起動時に主記憶装置１１へ読み込まれる。これにより、主記憶装置１１内に、ＯＳおよびデバイスドライバ３１などが展開され、また、ローダプログラム３３が展開される。そして、展開したローダプログラム３３の働きにより、主記憶装置１１内に記憶領域としてＲＡＭディスク（仮想ハードディスク）３５が確保され、その中に、暗号化したロボット制御プログラム２３が復号されて、復号したロボット制御プログラム１９が展開される。
【００５１】
図４のフローチャートに示す処理は、ＯＳおよびローダプログラムの読み込みなどが異なるだけで、基本的な処理の手順は図２と同様である。
【００５２】
まず、ロボットの動作開始が、使用者からキーボードやネットワークなど２５を介して入力されると、ＯＳ２７が読み込まれて、主記憶装置１１内に展開されて起動される（ステップＳ２０１）。ＯＳ起動後、ローダプログラムが読み込まれて（ステップＳ２０２）、起動される（ステップＳ２０３）。
【００５３】
そして、起動されたローダプログラムによって、まず、ＲＡＭディスク領域の確保が行われる（ステップＳ２０４）。
【００５４】
その後は、参考例と同様に、展開したローダプログラム３３が実行されることで、動作モード、プログラム復号用の復号鍵入力（ステップＳ２０５）、暗号化したロボット制御プログラム２３の読み込み（ステップＳ２０６）、読み込んだ暗号化したロボット制御プログラム２３の復号（ステップＳ２０７）が行われる。ここで、復号化された制御プログラムはＲＡＭディスクへ書き出される（ステップＳ２０８）。
【００５５】
なお、後述する実施形態１のように、プログラム復号用の復号鍵自体が暗号化されている場合には、ステップＳ２０７において暗号化したロボット制御プログラム２３を復号するのに先立って、暗号化した復号鍵の復号を行う。
【００５６】
そして、復号処理が正常に行われたか否かを判断して（ステップＳ２０９）、正常に行われていればロボット制御プログラムが起動される（ステップＳ２１０）。ここで、復号処理が正常に行われなかった場合には、ステップＳ２０５へ戻り、動作モード、プログラム復号用の復号鍵の入力待ちになる。したがって、正しいプログラム復号用の復号鍵が入力されない限りロボットが動作することはない。なお、一定回数以上間違ったプログラム復号用の復号鍵が入力された場合は、それ以降動作を全く受け付けなくするようにしてもよい。
【００５７】
このように、ＯＳを備えたロボット制御システム２についても適用することが可能であり、先に説明した参考例と同様に、物理的な鍵の破壊による不正使用や、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止することができる。
【００５８】
また、ロボット制御プログラム毎にプログラム復号用の復号鍵を変えることができるため、例えばロボットによる武器の使用など高い機密度を要する動作の実行に係わるプログラムについては、プログラム復号用の復号鍵を保持する使用者を限定することにより、細かい機密管理が可能となる。
【００５９】
［実施形態１］
次に、本発明の実施形態１について説明する。ロボット制御プログラムの暗号化は、上述した参考例に示したように、ロボット制御プログラムを暗号化して、それをプログラム復号用の復号鍵で解くようにしてもよい。しかし、さらに安全性を高めるために、ロボット制御プログラムを復号するためのプログラム復号用の復号鍵を、さらに暗号化して、暗号化した復号鍵をロボット内に保持するようにしてもよい。以下、不揮発性メモリ１５に記憶されている「暗号化した復号鍵」に対して、この暗号化した復号鍵を復号するために使用者が入力する復号鍵を「鍵復号用の復号鍵」という。
【００６０】
図５は、ブートローダ２１を備えたロボット制御システム３において、プログラム復号用の復号鍵をさらに暗号化した場合のシステム構成を示すブロック図である。
【００６１】
図５に示したシステムにおいて図１と異なるのは、不揮発性メモリ１５内に、暗号化した復号鍵３７を記憶していることにある。その他の構成は図１に示したシステムと同じである。
【００６２】
図２に示したシステムでは、ロボット制御プログラムを復号するためのプログラム復号用の復号鍵をさらに暗号化し、この暗号化した複数の復号鍵３７を不揮発性メモリ１５に記憶させている。そして、展開したブートローダ１７が機能した段階で、まず、この暗号化した復号鍵３７を読み込み、その復号鍵を用いてプログラム復号用の復号鍵を復号し、さらにこのプログラム復号用の復号鍵を用いてロボット制御プログラム２３を復号する。
【００６３】
また、本実施形態では、プログラム復号用の復号鍵を暗号化する際に、使用できる複数の期間（以下、「運用期間」と称する）ごとに設定された複数の鍵復号用の復号鍵（暗号化鍵）を用いて暗号化している。これにより、運用期間と、暗号化した復号鍵３７と、この暗号化した復号鍵３７を復号するための鍵復号用の復号鍵との組み合わせが、運用期間ごとに複数得られることになる。そして、不揮発性メモリ１５には、運用期間と、これに対応する暗号化した復号鍵３７とを関連付けて複数記憶させておく。図５の不揮発性メモリ１５において、暗号化した復号鍵３７は、運用期間と関連付けられた暗号化した復号鍵の集まりを示している。
【００６４】
ロボットの使用者は、運用期間ごとに配布された鍵復号用の復号鍵をシステムに入力して、プログラム復号用の復号鍵を復号する。
【００６５】
ブートローダ２１は、使用者により鍵復号用の復号鍵が入力されると、その鍵復号用の復号鍵が入力された日時と適合する暗号化した復号鍵３７を、不揮発性メモリ１５から取り出す。暗号化した復号鍵３７は運用期間と関連付けられているため、鍵復号用の復号鍵が入力された日時と運用期間とを対比することによって、入力された日時と適合する暗号化した復号鍵３７を特定することができる。例えば、鍵復号用の復号鍵が入力された日時を７月１５日、８：００とすると、運用期間７月１日〜７月３１と関連付けられた暗号化した復号鍵３７が記憶されていれば、この暗号化した復号鍵３７のみが取り出されることになる。
【００６６】
そして、ブートローダ２１は、取り出した暗号化した復号鍵３７に対し、入力された鍵復号用の復号鍵を用いてプログラム復号用の復号鍵の復号を試みる。ここで、入力された鍵復号用の復号鍵に設定された運用期間と、取り出された暗号化した復号鍵３７の運用期間とが適合していれば、暗号化した復号鍵３７が正しく復号され、そのプログラム復号用の復号鍵により暗号化したロボット制御プログラム２３を復号することができる。一方、入力された鍵復号用の復号鍵に設定された運用期間と、取り出された暗号化した復号鍵３７の運用期間とが適合していなければ、暗号化した復号鍵３７を正しく復号することができないため、そのプログラム復号用の復号鍵により暗号化したロボット制御プログラム２３を復号することはできないことになる。
【００６７】
このように、暗号化した復号鍵３７を使用できる運用期間を予め定めておくことによって、使用者が入力した鍵復号用の復号鍵が、予め定められた運用期間以外の期間に対応している復号鍵である場合には、暗号化した復号鍵３７を復号することができず、この結果、暗号化したロボット制御プログラム２３も復号できないことになる。
【００６８】
本実施形態において、暗号化した復号鍵３７は、運用期間に応じて後から不揮発性メモリ１５に追加記憶できるようにしておき、不揮発性メモリ１５に記憶させておく暗号化した復号鍵３７は当面のロボットの動作に必要な分だけとすることが好ましい。そして、当面の動作に不要なさらに先の期間分の暗号化した復号鍵３７は、例えば、工場の管理室や本社管理部門など、ロボットから離れた場所で管理、保管しておき、ロボットの使用現場には必要な運用期間の分だけ鍵復号用の復号鍵を配布するようしておくことが好ましい。このように、不揮発性メモリ１５に記憶させておく暗号化した復号鍵を、当面のロボットの動作に必要な分だけとすることにより、仮に不揮発性メモリ１５に記憶されている暗号化した復号鍵が解析されたとしても、解析される復号鍵の数を最小限に抑えることができる。
【００６９】
本実施形態のロボット制御システム３においても、ロボット制御プログラムを暗号化して不揮発性メモリ１５記憶しておき、ロボットを動作させる段階でプログラム復号用の復号鍵に基づいて復号して主記憶装置１１に展開するようにしたので、上述した参考例と同様に、物理的な鍵の破壊による不正使用や、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止することができる。
【００７０】
また、暗号化した復号鍵３７を運用期間を予め定めておくことによって、例えば、運転中のロボットが、その時点での鍵復号用の復号鍵とともに盗難されたとしても（鍵復号用の復号鍵は盗み見、作業者の不正などにより盗難される）、運用期間が過ぎてしまえば、それ以上はロボットを使用されることがなく、不正使用による被害を限定することができる。また暗号化したロボット制御プログラム２３自体の解析もできなくなる。
【００７１】
そして、現在動作中の期間を過ぎれば、暗号化した復号鍵３７そのものの効力もなくなるため、動作中に暗号化した復号鍵３７が解析されたとしても、その復号鍵は、運用期間を過ぎればそれ以降は使うことのできないものとなる。したがって、運用期間を短く設定しておけば、ロボットの盗難後に暗号化した復号鍵の解読に時間をかけても、運用期間が過ぎれば無駄になるため、不正使用ができなくなる。また、仮に盗難直後に暗号化した復号鍵を解読されたとしても、不正使用の時間をごく短時間に抑えることができる。よって、時間をかけた復号鍵の解読による不正使用を可及的に防止することができる。
【００７２】
さらに、暗号化した復号鍵３７としては、例えばＤＥＳのような対称暗号方式で任意の復号鍵を選べる方式を使用することによって、複数のロボットがある場合にすべてのロボットで復号鍵を別々にするのか、または部署毎に共通の復号鍵とするのか、もしくは機種毎に同じ復号鍵とするのか、というような使用条件に応じた種々の使い分けを行うことができ、高い融通性をもった運用が可能となる。
【００７３】
なお、本実施形態のように、暗号化した復号鍵に運用期間を予め定めておく手法は、上述した参考例のシステムにも適用することができる。すなわち、平文のロボット制御プログラムを暗号化する際に、運用期間を決めた複数のプログラム復元用の暗号鍵を用いて暗号化するものである。この場合も、本実施形態と同様に、物理的な鍵の破壊による不正使用や、リバースエンジニアリグなどの解析による技術漏洩や不正使用を防止できるだけでなく、運用期間を短く設定しておくことにより、時間をかけた復号鍵の解読による不正使用を可及的に防止することができる。しかしながら、この場合は運用期間毎に暗号化したロボット制御プログラム２３を不揮発性メモリ１５に保持することになるため、メモリに記憶するデータ量が増大することになる。したがって、暗号化すべきロボット制御プログラムが多くある場合や、運用期間を時間単位で細分化した場合（例えば、使用者の勤務時間毎）などにおいては、本実施形態のように、プログラム復号用の復号鍵をさらに暗号化すると共に、暗号化した復号鍵の運用期間を定めておく手法を用いた方がメモリに記憶するデータ量が大幅に少なくなるので、メモリ容量を有効利用することができる。
【００７４】
また、本実施形態ではブートローダを備えたロボット制御システムを例として説明したが、図３に示したようなＯＳを備えたロボット制御システムにも適用可能である。図６は、ＯＳを備えたロボット制御システムにおいて、プログラム復号用の復号鍵を、さらに暗号化して、暗号化した復号鍵をロボット内に保持するようにした場合のシステム構成を示すブロック図である。なお、図６では、図５と同じ機能、作用の部材には同じ符号を付している。
【００７５】
図６に示すロボット制御システム４のように、不揮発性メモリ１５内に複数の暗号化した復号鍵３７を備える場合には、主記憶装置１１に展開したローダプログラム３３が暗号化した復号鍵３７を読み込み、その復号鍵を用いてプログラム復号用の復号鍵を復号し、さらにこのプログラム復号用の復号鍵を用いて暗号化したロボット制御プログラム２３を復号する。そして、展開したローダプログラム３３の働きにより、主記憶装置１１内にＲＡＭディスク３５が確保され、その中に復号したロボット制御プログラム１９が展開される。本システムのように構成した場合も、図５に示すシステムと同様の作用効果を得ることができる。
【００７６】
［実施形態２］
次に、実施形態２について説明する。本実施形態は、暗号化した復号鍵の解読をより困難なものとするため、プログラム復号用の復号鍵に使用日時をキーとした変換を実施して中間データ復号鍵を生成し、その後、暗号化した復号鍵を作成するようにしたものである。この場合のシステム構成は図５に示したものと同じであるため、説明を省略する。
【００７７】
本実施形態では、暗号化した復号鍵を作成する際に、それを運用する日時の値に基づいて、プログラム復号用の復号鍵の変換を実施して中間データ復号鍵を生成し、これを暗号化して復号鍵を得るものである。変換方法としては、日時を示す値（例えば、日にち）だけ文字列をローテーションさせる方法や、日時の値に応じた値を文字列にしたものをダミーとして挿入する方法や、日付を暗号化キーとして暗号化する方法などである。また、使用する暗号化キーは、一定期間毎に切られた有効期間の先頭時刻など、運用期間中から一意に決まる値を用いることが好ましい。
【００７８】
次に、図７のフローチャートを参照して、本実施形態の手法によりプログラム復号用の復号鍵を暗号化する場合の処理手順について説明する。
【００７９】
まず、平文のロボット制御プログラム４１と、これを暗号化するための暗号化キー４２とを用意する。そして、用意した暗号化キー４２によってロボット制御プログラム４１を暗号化する（ステップＳ３０１）。これにより、暗号化したロボット制御プログラム２３が生成される。また、このときプログラム復号用の復号鍵４３が生成される。
【００８０】
なお、この段階で生成されたプログラム復号用の復号鍵４３をそのまま使用する場合、すなわち、プログラム復号用の復号鍵４３から中間データ復号鍵４４を生成しないで使用する場合には、機密管理の観点から、これを司令室や工場など暗号化したロボット制御プログラム２３から離れたところに保管することが好ましい。
【００８１】
ここでは、生成されたプログラム復号用の復号鍵４３を使用日時をキーとして中間データ復号鍵４４とするために、続けて、運用期間の全日時を入力し（ステップＳ３０２）、実行日時（例えば運用期間の最初の日付や時刻など）による変換処理を行う（ステップＳ３０３）。これにより、中間データ復号鍵４４が生成される。このとき、運用期間を細分化することで、複数の中間データ復号鍵４４ができることになる。
【００８２】
続いて、鍵復号用の復号鍵を生成して（ステップＳ３０４）、中間データ復号鍵４４を暗号化する（ステップＳ３０５）。ここで鍵復号用の復号鍵４５は、任意のものでよい。
【００８３】
ここで生成した鍵復号用の復号鍵は運用期間が複数ある場合には、複数の鍵復号用の復号鍵４５となる。同様に、暗号化した復号鍵３７も運用期間が複数ある場合には、複数の暗号化した復号鍵３７が生成されることになる。
【００８４】
このようにして生成された、暗号化したロボット制御プログラム２３は不揮発性メモリ１５に記憶される。また、暗号化した復号鍵３７は、当面のロボット動作に必要な運用期間の分だけ不揮発性メモリ１５に記憶される。一方、暗号化した復号鍵３７を解くための鍵復号用の復号鍵４５は運用期間毎にロボット制御プログラム２３から離れた場所に保管しておくか、使用者が運用期間毎に間違えないように覚えておくことになる。
【００８５】
次に、図８のフローチャートを参照して、本実施形態の手法によりプログラム復号用の復号鍵を復号化する場合の処理手順について説明する。
【００８６】
この復号処理は、展開したブートローダ１７により実行される処理であって、上述した図２のステップＳ１０５のサブルーチンに相当する処理である。
【００８７】
まず、鍵復号用の復号鍵４５が入力され（ステップＳ４０１）、暗号化した復号鍵３７が復号される（ステップＳ４０２）。これにより中間データ復号鍵４４が生成される。
【００８８】
そして、生成された中間データ復号鍵４４を、入力された現在日時（ステップＳ４０３）に対応する運用期間を選択し、その運用期間の日時に基づいて中間データ生成時の変換（図７：ステップＳ３０３）の逆変換となる変換処理を行い（ステップＳ４０４）、整合性のチェックを行って（ステップＳ４０５）、暗号化したロボット制御プログラム２３を復号するためのプログラム復号用の復号鍵４３が生成される。
【００８９】
そして展開したロータプログラム３３は、不揮発性メモリ１５から読み込んだ暗号化したロボット制御プログラム２３を、プログラム復号用の復号鍵４３により復号処理する（ステップＳ４０６）。これにより、復号したロボット制御プログラム１９が主記憶装置１１内に展開される。
【００９０】
以上説明したように、本実施形態においては、プログラム復号用の復号鍵に使用日時をキーとした変換を実施して中間データ復号鍵を生成し、その後、暗号化した復号鍵を作成するようにしたので、暗号化した復号鍵の解読をより困難なものにすることができる。これは、同じ値を暗号化したデータがたくさんあると、それらを暗号化した際に解読しやすくなる傾向があるが、本実施形態のように、日時を加味することで同じ値の暗号化という現象を防いで、解読をより困難なものとすることができる。
【００９１】
また、物理的な鍵の破壊により動作中のロボットが盗難に遭った場合でも、ロボットを停止させた段階で、主記憶装置１１内のＲＡＭディスク３５に展開されている復号したロボット制御プログラム１９は消えてしまうため、そのまま使用することができなくなる。したがって、物理的な鍵の破壊による不正使用を防止することができる。
【００９２】
さらに、盗難された場合などに、不揮発性メモリ１５上の暗号化した復号鍵３７を、別の時間用に流用する操作を受けた場合について考察すると、中間データ復号鍵までは正しく復号できたとしても、その後の中間データ復号鍵からの復号においては、正しくない復号鍵となるため、リバースエンジニアリングなどの解析による技術漏洩や不正使用を防止することができる。
【００９３】
［他の実施形態］
以下、暗号化したロボット制御プログラムを復号化する段階において、安全性をさらに高めるための実施形態について説明する。
【００９４】
（１）暗号化した復号鍵の時間による自動消去
この場合のシステム構成は図１に示したものと同様であり、あらかじめブートローダ２１内に消去機能を実装しておくことになる。
【００９５】
具体的には、起動時のブートローダ２１やロボット制御プログラムの切り替え中において、暗号化した復号鍵を復号する前に、現在時刻と比較して、有効期間が十分に昔の鍵（例えば１２時間以上前）のデータを消去するものである。これにより、例えば、暗号化した復号鍵が漏れた場合に、過去に使用していた暗号化した復号鍵と、過去に暗号化した復号鍵を使って、復号鍵を割り出すというようなリバースエンジニアリングによる解析が困難なものとなる。
【００９６】
（２）暗号化した復号鍵を復号する際の整合性チェック
この場合のシステム構成は図１に示したものと同様であり、あらかじめブートローダ２１内に整合性のチェック機能を実装しておくことになる。
【００９７】
具体的には、例えば、暗号化するデータ、すなわち、ロボット制御プログラムにあらかじめハッシュ値（ＲＦＣ１３２１で提唱されたＭＤ５など）やＣＲＣコードを付加して、これを暗号化しておく。例えば、ＭＤ５の手法は、ハッシュ関数を使った暗号化／復号化アルゴリズムであり、データを送受信する際に、送信側と受信側でハッシュ値を比較することにより、データの完全性をチェックするものである。また、ＣＲＣコードは、同じファイルからは必ず同じコードが生成され、１バイトでもデータが異なると全く別のコードが生成されるという特徴を利用した誤りチェックの手法であり、元ファイルから生成されたＣＲＣコードと、対象ファイルから生成されたＣＲＣコードとを比較することにより、ファイルが正常かどうか、壊れていないかを調べるものである。
【００９８】
或いは、前述した暗号化の際に用いた運用期間ごとの使用可能開始時間などでもよい。そして、暗号化した復号鍵を復号化の際に、これらコードが一致するかどうかを確認する。
【００９９】
このようにすることで、間違ったプログラム復号用の復号鍵により、暗号化したロボット制御プログラムが復号された場合に、正しくないプログラムコードが生成され、これによりロボットが暴走することを防止することができる。なお、通常は間違った復号鍵を用いた場合、復号そのものが行われないため、このようなことが起こる可能性は低いと考えられる。
【０１００】
（３）非対称暗号方式による送信
安全性を向上させるための他の手法としては、追加で暗号化した復号鍵を送信する際に、非対称暗号方式で送信することである。
【０１０１】
上述したように、運用期間毎に、暗号化した復号鍵と鍵復号用の復号鍵とを設定した場合、それらをロボットに入力する必要があるが、その際に、ネットワークを介して送信することが考えられる。例えば、工場の管理室や本社管理部門など、ロボットから離れた場所で復号鍵を管理している場合に、ロボットの稼動している現場にネットワークを介して復号鍵をデータ送信する場合などである。このようなネットワークを介して復号鍵などを送るとネットワークから復号鍵が漏洩するおそれがあり、改竄された誤った復号鍵が送られてくる可能性がある。このような不具合を解消するため、非対称暗号方式（例えばＲＳＡなど）を用いてデータを送信するものである。
【０１０２】
この場合、ロボット側には、公開鍵、データ作成者（ここでは復号鍵の作成者）側は秘密鍵をもたせることになる。したがって、ロボット側の公開鍵で復号できるデータをもつためには、秘密鍵で暗号化する必要がある。
【０１０３】
このため、秘密鍵で暗号化できることをもって正しい送信元であることが保証されることになる。すなわち、ロボット側の公開鍵で復号できない場合には、正しくない送信元から送られてきたデータと判断することができる。このように、本手法を用いた場合には、送信経路上での改鼠に対して安全なものとなる。
【０１０４】
以上、本発明の好適な実施形態について説明したが、本発明はこれらの実施形態に限定されるものではなく、各実施形態を様々に組み合わせることも可能であるし、また、これら実施形態以外に当業者による様々な形態が可能である。
【図面の簡単な説明】
【０１０５】
【図１】ブートローダを備えたロボット制御システムの構成を示すブロック図である。
【図２】図１のシステムにおいてロボット動作開始時の処理手順を示すフローチャートである。
【図３】ＯＳを備えたロボット制御システムの構成を示すブロック図である。
【図４】図３のシステムにおいてロボット動作開始時の処理手順を示すフローチャートである。
【図５】ブードローダを備えたロボット制御システムにおいてプログラム復号用の復号鍵をさらに暗号化した場合のシステム構成を示すブロック図である。
【図６】ＯＳを備えたロボット制御システムにおいてプログラム復号用の復号鍵をさらに暗号化してロボット内に保持するようにした場合のシステム構成を示すブロック図である。
【図７】プログラム復号用の復号鍵を中間データを用いて暗号化する場合の処理手順を示すフローチャートである。
【図８】プログラム復号用の復号鍵を中間データを用いて復号化する場合の処理手順を示すフローチャートである。
【符号の説明】
【０１０６】
１、２、３、４…ロボット制御システム
１１…主記憶装置（揮発性記憶手段）
１３…ＣＰＵ
１５…不揮発性メモリ（不揮発性記憶手段）
１７…展開したブートローダ
１９…復号したロボット制御プログラム
２１…ブートローダ
２３…暗号化したロボット制御プログラム
２７…ＯＳ
２９…ローダプログラム
３１…デバイスドライバ
３３…展開したローダプログラム
３５…ＲＡＭディスク（仮想ハードディスク）
３７…暗号化した復号鍵
４１…平文のロボット制御プログラム
４２…暗号化キー
４３…プログラム復号用の復号鍵
４４…中間データ復号鍵
４５…鍵復号用の復号鍵
【図１】
0005052287.tif 000002
【図２】
0005052287.tif 000003
【図３】
0005052287.tif 000004
【図４】
0005052287.tif 000005
【図５】
0005052287.tif 000006
【図６】
0005052287.tif 000007
【図７】
0005052287.tif 000008
【図８】
0005052287.tif 000009