JP2005202663A - 制御用プログラム,コンパイラおよび変換プログラム - Google Patents
制御用プログラム,コンパイラおよび変換プログラム Download PDFInfo
- Publication number
- JP2005202663A JP2005202663A JP2004008030A JP2004008030A JP2005202663A JP 2005202663 A JP2005202663 A JP 2005202663A JP 2004008030 A JP2004008030 A JP 2004008030A JP 2004008030 A JP2004008030 A JP 2004008030A JP 2005202663 A JP2005202663 A JP 2005202663A
- Authority
- JP
- Japan
- Prior art keywords
- program
- encrypted
- encryption
- source
- password
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】 ユーザ側の都合に合わせた改良を容易にしながらプログラムの盗用を防止できるようにする。
【解決手段】 ソースプログラムA1の一部のノウハウ部P2を含むプログラム領域が暗号化プログラム部P4とされているので、プログラム提供業者は自社のノウハウを護ることができ、機密性を向上できるようになる。しかも、このソースプログラムA1を使用するユーザは、暗号化プログラム部P4以外の暗号化されていない非暗号化プログラム部P5については、開発用コンピュータによりロボット制御開発環境に合わせて改良することができる。
【選択図】 図5
【解決手段】 ソースプログラムA1の一部のノウハウ部P2を含むプログラム領域が暗号化プログラム部P4とされているので、プログラム提供業者は自社のノウハウを護ることができ、機密性を向上できるようになる。しかも、このソースプログラムA1を使用するユーザは、暗号化プログラム部P4以外の暗号化されていない非暗号化プログラム部P5については、開発用コンピュータによりロボット制御開発環境に合わせて改良することができる。
【選択図】 図5
Description
本発明は、制御装置を動作させるための制御用プログラム,このプログラムをコンパイルするコンパイラ,および制御用プログラムを作成するための変換プログラムに関する。
この種の制御用プログラムは、例えばロボット制御装置に組み込まれる場合、ロボット制御装置のCPUによりテキスト形式のソースプログラム(ソースコード)をバイナリ形式のオブジェクトプログラム(オブジェクトコード)に変換した後に実行される。このソースプログラムは、ユーザ側で制御環境に合わせて改良を容易にするため、プログラム提供業者からソースプログラムのままユーザ側に提供される。ユーザは当該プログラムを購入した後、ユーザ側の制御環境に合わせて改良を施し、ロボット制御装置に組み込まれることによりロボット制御装置は動作するようになる。尚、この分野の関連文献として例えば特許文献1もしくは2に開示される文献がある。
特開平6−110512号公報
特開2002−236668号公報
プログラム提供業者は、ユーザ側に改良されたくないプログラム部分や自社のノウハウとなる部分もテキスト形式のソースプログラムとしてユーザに提供する必要がある。近年、特にこれらのソースプログラムをネットワーク上で有償配布する要求が強まってきており、プログラム提供業者の競合他社等にノウハウ部が盗用されてしまう懸念を生じている。
本発明は、上記事情を鑑みてなされたもので、その目的は、ユーザ側の都合に合わせた改良を容易にしながらプログラムの盗用を防止することができる制御用プログラム,このプログラムをコンパイルするコンパイラ,および制御用プログラムを作成するための変換プログラムを提供することにある。
請求項1記載の発明によれば、一のソースプログラムは、暗号化プログラム部がその少なくとも一部が暗号化されているため、たとえこの制御用プログラムを公のネットワークで配布したとしても、暗号化プログラム部を第3者や競合他社に対して理解不能にすることができ、プログラムの盗用を防止することができる。しかも非暗号化プログラム部がユーザ書換設定可能に構成されているため、ユーザ側で改良を施すことができるようになる。
請求項2記載の発明によれば、請求項1記載の発明において、非暗号化プログラム部は、ユーザによりパスワード入力可能に構成され、暗号化プログラム部には、非暗号化プログラム部のパスワードの認証機能が構成されているため、暗号化プログラム部においてパスワードを認証することができ、ソースプログラムの保護を図ることができる。しかも例えばパスワードが所定の条件を満たさない場合には停止させる停止機能を暗号化プログラム部に付加することによりソースプログラムの利用停止を図ることができる。
請求項3記載の発明によれば、請求項1または2記載の発明において、非暗号化プログラム部は、ユーザによりパスワード入力可能に構成され、暗号化プログラム部には、非暗号化プログラム部のパスワードの認証機能が構成されると共に使用期限制限機能が構成されており、制御装置のCPUが暗号化プログラム部を実行し認証機能により非暗号化プログラムに入力されたパスワードが正しいことが判定されたことを条件として、CPUは使用期限制限機能を解除するため、プログラム提供業者は期限制限を設けてユーザに対してソースプログラムの使用権限を与えることができるようになる。
請求項4記載の発明によれば、請求項2または3記載の発明において、パスワードは制御装置に個々に割り当てられるシリアルナンバーで認証するため、例えばソースプログラムおよびパスワードをコピー入力使用しても、個々の制御装置がパスワード認証機能により入力されたパスワードを判別することができ、重複使用を回避することができるようになる。
また、請求項5記載の発明のように、制御装置のCPUが、請求項1ないし4の何れかに記載の制御用プログラムのソースプログラムを実行形式のオブジェクトプログラムに変換処理することが望ましい。
さらに、請求項6記載の発明のように、変換用コンピュータが、請求項1ないし4の何れかに記載の制御用プログラムの暗号化プログラム部をプログラム提供業者が認識可能な非暗号化状態から当該プログラム提供業者が認識不能な暗号化状態に変換実行するようにしても良い。
さらに、請求項6記載の発明のように、変換用コンピュータが、請求項1ないし4の何れかに記載の制御用プログラムの暗号化プログラム部をプログラム提供業者が認識可能な非暗号化状態から当該プログラム提供業者が認識不能な暗号化状態に変換実行するようにしても良い。
さらに、請求項7記載の発明のように、変換用コンピュータが、請求項1ないし4の何れかに記載の制御用プログラムの暗号化プログラム部をプログラム提供業者が認識可能な暗号化状態から当該プログラム提供業者が認識不能な非暗号化状態に変換実行するようにしても良い。
以下、本発明の第1の実施形態について、図1ないし図5を参照しながら説明する。
図1はロボット制御装置の電気的構成ブロック図、図2はロボット制御装置の外観斜視図を示している。
図2に示すように、ロボット制御装置1(本発明の制御装置に相当)は、ロボットコントローラ2にロボットアーム3を接続して構成されている。図1に示すように、ロボットコントローラ2は、CPU4にメモリ部5を接続して構成されており、メモリ部5には、不揮発性記憶部としてフラッシュメモリ6,揮発性記憶部としてDRAM7が設けられている。
図1はロボット制御装置の電気的構成ブロック図、図2はロボット制御装置の外観斜視図を示している。
図2に示すように、ロボット制御装置1(本発明の制御装置に相当)は、ロボットコントローラ2にロボットアーム3を接続して構成されている。図1に示すように、ロボットコントローラ2は、CPU4にメモリ部5を接続して構成されており、メモリ部5には、不揮発性記憶部としてフラッシュメモリ6,揮発性記憶部としてDRAM7が設けられている。
フラッシュメモリ6には、ロボットアーム3の制御用の複数のソースプログラムA1〜A3(図4および図5(b)参照)がテキスト形式で記憶されている。これら複数のロボット制御用のソースプログラムA1〜A3は、PACと称されるロボット制御用言語で記述されている。
これらのソースプログラムA1〜A3の作成方法および利用方法について図1ないし図5を参照しながら説明する。ロボット制御装置1のプログラム完成時には、当該制御装置1のプログラムを提供するプログラム提供業者は、作成したソースプログラムA1〜A3(ソースコード)をテキストファイルとしてフラッシュメモリ5に記憶させて製品化する。オブジェクトプログラム(目的プログラム:オブジェクトコード)に変換することなく、ソースプログラムA1〜A3のままフラッシュメモリ5に記憶させた状態で製品化する理由は、ユーザが開発用コンピュータ8によりロボット制御環境に合わせて改良を容易にするためである。すなわち、ソースプログラムA1〜A3のうちの一部(例えば複数箇所)をユーザにより書換可能にするためである。
これらのソースプログラムA1〜A3の作成方法および利用方法について図1ないし図5を参照しながら説明する。ロボット制御装置1のプログラム完成時には、当該制御装置1のプログラムを提供するプログラム提供業者は、作成したソースプログラムA1〜A3(ソースコード)をテキストファイルとしてフラッシュメモリ5に記憶させて製品化する。オブジェクトプログラム(目的プログラム:オブジェクトコード)に変換することなく、ソースプログラムA1〜A3のままフラッシュメモリ5に記憶させた状態で製品化する理由は、ユーザが開発用コンピュータ8によりロボット制御環境に合わせて改良を容易にするためである。すなわち、ソースプログラムA1〜A3のうちの一部(例えば複数箇所)をユーザにより書換可能にするためである。
これらのソースプログラムA1〜A3は、一般に複数のプログラム提供業者やロボット製造装置1を購入したユーザにより作成される。各提供業者が作成するソースプログラムは、ロボットアーム3およびロボットコントローラ2の入出力インタフェースドライバ,ロボットアーム3の軌道計算用プログラム,ロボット制御用コマンドを組み合わせたパレタイジング動作を記述したマクロモジュールプログラム等が挙げられる。
しかし各提供業者は、プログラムの作成ノウハウや一般に開示したくないデータ等を所持している場合がある。特に他の当業者が理解可能に記述されたソースプログラムBをインターネット等の公共のネットワークNを通じてサーバSに配布してしまうとノウハウ等が競合他社等に漏洩してしまう虞がある。
そこで、このノウハウ等を保護するため、本実施形態に係るロボット制御言語には、「#encryption」および「#endencryption」という暗号コマンドP1が用意されている。これらの暗号コマンドP1は、当該コマンドで囲まれたプログラム部分について暗号化するためのものである。
そこで、このノウハウ等を保護するため、本実施形態に係るロボット制御言語には、「#encryption」および「#endencryption」という暗号コマンドP1が用意されている。これらの暗号コマンドP1は、当該コマンドで囲まれたプログラム部分について暗号化するためのものである。
図5(a)には、これらの暗号コマンドP1を使用したソースプログラム(暗号化前)の一例を示している。プログラム提供業者は、ノウハウや秘匿データとして一般に開示したくないノウハウ部P2(図5(a)中5行目〜6行目)がソースプログラムB中に存在する場合、隠蔽したいノウハウ部P2をこれらの暗号コマンドP1で囲んで記述する。そして、プログラム提供業者は当該ソースプログラムBを作成した後、プログラム提供業者は、変換用コンピュータ9により暗号化状態に変換した状態(図5(b)参照)でソースプログラムA1をフラッシュメモリ6に記憶させる。
具体的には、変換用コンピュータ9は、記憶された変換プログラムにより予め定められた暗号化手法で、プログラム提供業者が認識可能な非暗号化状態(図5(a)の符号B参照)からプログラム提供業者が認識不能な暗号化状態(図5(b)の符号A1参照)に変換実行する。
そして、プログラム提供業者は、変換用コンピュータ9により暗号化された状態でフラッシュメモリ6に記憶させたり、当該ソースプログラムA1をライブラリ化してネットワークNを通じてサーバSに記憶させる(図1参照)。尚、プログラム提供業者の開発環境を良化するため、変換用コンピュータ9等には暗号化状態から非暗号化状態に変換実行する変換プログラムが記憶されていることが望ましい。
そして、プログラム提供業者は、変換用コンピュータ9により暗号化された状態でフラッシュメモリ6に記憶させたり、当該ソースプログラムA1をライブラリ化してネットワークNを通じてサーバSに記憶させる(図1参照)。尚、プログラム提供業者の開発環境を良化するため、変換用コンピュータ9等には暗号化状態から非暗号化状態に変換実行する変換プログラムが記憶されていることが望ましい。
この場合、たとえサーバSからソースプログラムA1が配信されたとしても、ソースプログラムA1は、ノウハウ部P2が暗号化され秘匿部P3とされているため、第3者がこのソースプログラムA1を受信したとしても理解できない。これにより秘匿性を向上できる。暗号化方式については本発明とは直接関係しないため説明を省略するが周知の暗号化方式を使用することができる。
図5(b)は、ソースプログラムの一部が暗号化されたソースプログラムA1の一例を示している。このプログラムA1を使用するユーザ側では、ロボットコントローラ2のフラッシュメモリ6に記憶されたソースプログラムA1をたとえ読み込んだとしても、暗号コマンドP1〜P1で囲まれた暗号化プログラム部P4については開示されないため、ノウハウ部P2も開示されずプログラム提供業者は自社のノウハウを護ることができる。しかも、ユーザはノウハウ部P2を含む暗号化プログラム部P4以外の暗号化されていない非暗号化プログラム部P5については、ユーザ側のロボット制御環境に合わせて改良することができる。
<ロボット制御装置の動作について>
ソースプログラムA1〜A3がフラッシュメモリ6に組み込まれると、ロボット制御装置1を動作させることができる。ここではロボット制御装置1のCPU4が行うプログラムのコンパイル動作やコントローラ2が行う駆動制御動作について概略的に説明する。
電源10がロボットコントローラ2やロボットアーム3に供給されると、ロボットコントローラ2は起動しCPU4等によりロボット制御用ソースプログラムA1〜A3をフラッシュメモリ6からDRAM7の動作プログラム領域に移す。図3には、CPU4の実行手順をフローチャートにより示している。
ソースプログラムA1〜A3がフラッシュメモリ6に組み込まれると、ロボット制御装置1を動作させることができる。ここではロボット制御装置1のCPU4が行うプログラムのコンパイル動作やコントローラ2が行う駆動制御動作について概略的に説明する。
電源10がロボットコントローラ2やロボットアーム3に供給されると、ロボットコントローラ2は起動しCPU4等によりロボット制御用ソースプログラムA1〜A3をフラッシュメモリ6からDRAM7の動作プログラム領域に移す。図3には、CPU4の実行手順をフローチャートにより示している。
CPU4は、メモリ部5のDRAM7からソースプログラムA1〜A3を読み出すと(ステップS1)、当該ソースプログラムA1〜A3に暗号化プログラム部P4が存在することを条件として(ステップS2:YES)、暗号化プログラム部P4を予め定められた復号化方法により復号化処理を行い(ステップS3)ステップS4に移行する。復号化方式は、本発明とは直接関係しないので説明を省略するが、前述した暗号化方式と対にして用いられる周知の手法を使用することができる。暗号化プログラム部P4が存在していなければ復号化処理を行うことなくコンパイル処理を行い(ステップS4)中間モジュールM1〜M3化する。これら中間モジュールM1〜M3は、バイナリ形式で表現されるものである。
このとき、もしユーザによりノウハウ部P2を含む暗号化プログラム部P4が改竄されていれば、CPU4は、コンパイル時にエラーを発生し(ステップS5:YES)、当該プログラムによる動作を停止する(ステップS6)。コンパイル時にエラーを発生しなければ(ステップS5:NO)、CPU4は、他のソースプログラムが存在しているか否かを判定し(ステップS7)、コンパイルが行われていない他のソースプログラムが存在する場合にはステップS1から繰り返し、終了すれば(ステップS7:NO)、複数のソースプログラムA1〜A3の各中間モジュールM1〜M3をリンクし(ステップS8)、1つの実行形式モジュール(オブジェクトプログラム)O1に変換する。この実行形式モジュールはバイナリ形式で表現される。
図4には、ロボット制御装置におけるCPUのプログラム実行動作を概略的に示している。すなわち、ソースプログラムA1が一部でも暗号化されていればこのソースプログラムA1を復号化した後コンパイルして中間モジュールM1とする。ソースプログラムA2〜A3が暗号化されていなければ復号化処理を行うことなくコンパイルしてそれぞれ中間モジュールM2〜M3に変換する。そして、これら中間モジュールM1〜M3をリンクし、オブジェクトプログラムO1に変換する。
この後、CPU4は、ロボットアーム3を図示しないモータにより駆動制御する。メモリ部5には、ロボットアーム3の停止位置情報や移動経路情報,もしくはロボットアーム3の作業順序情報等が記憶されているため、ロボット制御装置1のCPU4は、これらの情報を読み出してロボットアーム3を駆動制御することができる。
すなわち、ソースプログラムA1の一部のノウハウ部P2を含むプログラム領域が暗号化プログラム部P4とされているので、プログラム提供業者は自社のノウハウを護ることができ、機密性を向上できるようになる。つまり、プログラム提供業者の競合他社等がソースプログラムA1を所持していたとしても、プログラム提供業者が暗号化プログラム部A1の復号化方法を公開しなければノウハウ部P2が開示されることがなくなるため、機密性が向上する。
すなわち、ソースプログラムA1の一部のノウハウ部P2を含むプログラム領域が暗号化プログラム部P4とされているので、プログラム提供業者は自社のノウハウを護ることができ、機密性を向上できるようになる。つまり、プログラム提供業者の競合他社等がソースプログラムA1を所持していたとしても、プログラム提供業者が暗号化プログラム部A1の復号化方法を公開しなければノウハウ部P2が開示されることがなくなるため、機密性が向上する。
しかも、このソースプログラムA1を使用するユーザは、ノウハウ部P2を含む暗号化プログラム部P4以外の暗号化されていない非暗号化プログラム部P5については、ユーザ側の開発用コンピュータ8によりロボット制御開発環境に合わせて改良することができる。また、ユーザがたとえ暗号化されたソースプログラムA1のノウハウ部P2を改竄したとしても、コンパイル時にエラー状態で終了するため、ソースプログラムA1の保守性を向上することができる。
以下、この暗号化プログラム環境を用いたプログラム例を説明する。
<使用例:パスワード認証機能>
図5には、非暗号化プログラムP5内にユーザによりパスワードPaを入力可能とし、暗号化プログラム部P4内にパスワード認証機能を設け、ロボット制御装置1毎に割当てられたシリアルナンバーと合致しない場合には強制終了するソースプログラムB,A1を示している。このように構成することにより、複数のロボットコントローラ2での使用を防止することができる。以下、このプログラムについて説明する。
<使用例:パスワード認証機能>
図5には、非暗号化プログラムP5内にユーザによりパスワードPaを入力可能とし、暗号化プログラム部P4内にパスワード認証機能を設け、ロボット制御装置1毎に割当てられたシリアルナンバーと合致しない場合には強制終了するソースプログラムB,A1を示している。このように構成することにより、複数のロボットコントローラ2での使用を防止することができる。以下、このプログラムについて説明する。
◎ソースプログラムA1の詳細説明
1行目:「#define … 」 ユーザがパスワードを設定する定義領域
2行目:「Program pro1」 プログラム名
3行目:「#encryption」 暗号コマンド
4〜10行目:「if(PASSWD= … ){ … }else{ … }」
パスワードPaがシリアルナンバーに一致しているか否かを判定
尚、getKeyはシリアルナンバー取得用関数を示している
5〜6行目:「setio[100]」、「setio[101]」
4行目でパスワードがシリアルナンバーに一致していると判定された場合に実行されるプログラム部
入出力処理(インタフェースドライバ:プログラム提供業者のノウハウ部P2)
9行目:「stop」
4行目でパスワードがシリアルナンバーに一致していないと判定された場合に実行されるプログラム部
実行停止(強制終了)
11行目:「#endencryption] 暗号コマンド
12行目:「move p,j2」
ロボットアーム3の位置移動制御
図5(b)は、このソースプログラムBをプログラム提供業者側で暗号化したソースプログラムA1を示している。この図5(b)において、ユーザがこのソースプログラムA1を利用するためには、プログラム提供業者から示されたパスワード「1234」(例えばシリアルナンバー等)を入手し、このパスワード「1234」をソースプログラムA1の初頭(1行目)に定義入力する必要がある。
1行目:「#define … 」 ユーザがパスワードを設定する定義領域
2行目:「Program pro1」 プログラム名
3行目:「#encryption」 暗号コマンド
4〜10行目:「if(PASSWD= … ){ … }else{ … }」
パスワードPaがシリアルナンバーに一致しているか否かを判定
尚、getKeyはシリアルナンバー取得用関数を示している
5〜6行目:「setio[100]」、「setio[101]」
4行目でパスワードがシリアルナンバーに一致していると判定された場合に実行されるプログラム部
入出力処理(インタフェースドライバ:プログラム提供業者のノウハウ部P2)
9行目:「stop」
4行目でパスワードがシリアルナンバーに一致していないと判定された場合に実行されるプログラム部
実行停止(強制終了)
11行目:「#endencryption] 暗号コマンド
12行目:「move p,j2」
ロボットアーム3の位置移動制御
図5(b)は、このソースプログラムBをプログラム提供業者側で暗号化したソースプログラムA1を示している。この図5(b)において、ユーザがこのソースプログラムA1を利用するためには、プログラム提供業者から示されたパスワード「1234」(例えばシリアルナンバー等)を入手し、このパスワード「1234」をソースプログラムA1の初頭(1行目)に定義入力する必要がある。
このとき、当該ソースプログラムA1にパスワードPaが入力された状態でCPU4によりプログラムが動作したとき、4行目において正規のパスワード(シリアルナンバー)と一致するか否かが判定され、パスワードPaが正確であれば入出力処理が行われるが、パスワードPaが正確に入力されていなければ9行目において実行停止する。
すなわち、ソースプログラムA1の提供業者側がノウハウ部P2にこのパスワード認証を付加し当該パスワードPaとしてシリアルナンバー「1234」を設定することにより、複数のロボットコントローラ2における重複使用を防止することができる。また、一のソースプログラムA1毎にパスワードPaを設定可能になる。
すなわち、ソースプログラムA1の提供業者側がノウハウ部P2にこのパスワード認証を付加し当該パスワードPaとしてシリアルナンバー「1234」を設定することにより、複数のロボットコントローラ2における重複使用を防止することができる。また、一のソースプログラムA1毎にパスワードPaを設定可能になる。
このような実施形態によれば、非暗号化プログラム部P5に対して、ユーザによりパスワードPaが入力可能に構成されており、暗号化プログラム部P4には、非暗号化プログラム部P5のパスワードの認証機能が構成されているため、ユーザがパスワードPaを入手しなければソースプログラムA1を動作させることができなくなり、プログラム提供業者は許容したユーザにのみソースプログラムA1の実行権を与えることができる。
(第2の実施形態)
図6は、本発明の第2の実施形態を示すもので、第1の実施形態と異なるところは、暗号コマンドの適用例を変更して、使用期限制限機能を付加するようにしたところにある。第1の実施形態と同一部分について同一符号を付してその説明を省略し、以下異なる部分についてのみ説明する。
図6は、本発明の第2の実施形態を示すもので、第1の実施形態と異なるところは、暗号コマンドの適用例を変更して、使用期限制限機能を付加するようにしたところにある。第1の実施形態と同一部分について同一符号を付してその説明を省略し、以下異なる部分についてのみ説明する。
<使用例:お試し版機能>
図6には、暗号コマンドP1の使用例をプログラム内に示している。この例では、非暗号化プログラム部P4に、ユーザによるパスワードPaの入力を可能とし、暗号化プログラム部P4にパスワードの認証機能を設けると共に使用期限制限機能を構成したソースプログラムを示している。このように構成することにより、ソースプログラムがユーザ側の環境に適合しているか否かを試す試用期間を設けることができるようになり、利便性を向上することができる。
図6には、暗号コマンドP1の使用例をプログラム内に示している。この例では、非暗号化プログラム部P4に、ユーザによるパスワードPaの入力を可能とし、暗号化プログラム部P4にパスワードの認証機能を設けると共に使用期限制限機能を構成したソースプログラムを示している。このように構成することにより、ソースプログラムがユーザ側の環境に適合しているか否かを試す試用期間を設けることができるようになり、利便性を向上することができる。
以下、このプログラムについて概略的に説明する。このソースプログラムB2には設定用ファイルB3が付属しており、CPU4が当該設定用ファイルB3を読出/書込実行しながら図6(a)に示したソースプログラムB2の内容を実行する。この設定用ファイルB3には、この設定用ファイルB3の作成後の経過時間を示す経過時間データD1、ファイル名D2、このファイル名D2の初回起動時間データD3が書込まれている。
◎ソースプログラムB2の詳細説明
1行目:「define passwd=1234 」
ユーザがパスワードPaを設定する定義入力領域
2行目:「#encryption」 暗号コマンド
3行目:「#define USERPASSWD 1234」
パスワードPa認証用定数設定
4行目:「Program pro1」 プログラム名
5〜12行目:「if(passwd!= … ) … Else … Endif」
パスワードPaがUSERPASSWDに一致しているか否かを判定し、一致していなければ6行目から9行目を実行、一致していれば11行目を実行
6行目:「setLibTime」
試用中のソースプログラムのファイル名D2(pro1)をフルパスで現在時間を表す初回起動時間データD3と共に設定用ファイルB3に書替え。
1行目:「define passwd=1234 」
ユーザがパスワードPaを設定する定義入力領域
2行目:「#encryption」 暗号コマンド
3行目:「#define USERPASSWD 1234」
パスワードPa認証用定数設定
4行目:「Program pro1」 プログラム名
5〜12行目:「if(passwd!= … ) … Else … Endif」
パスワードPaがUSERPASSWDに一致しているか否かを判定し、一致していなければ6行目から9行目を実行、一致していれば11行目を実行
6行目:「setLibTime」
試用中のソースプログラムのファイル名D2(pro1)をフルパスで現在時間を表す初回起動時間データD3と共に設定用ファイルB3に書替え。
7行目〜9行目:「If(getLibTime … ) … Endif」
経過時間データD1と初回起動時間データD3の差を取得し、この値が所定値(1000)を超えたら実行停止(強制終了)
11行目:「deleteLibTime」
ファイル名D2と初回起動時間データD3を削除する(尚、ファイル名D2が設定用ファイルB3に存在しない場合には無視される。)
14行目:「Move p,p0」 ロボットアーム3の位置移動
15行目:「End」 終了
16行目:「#endencryption] 暗号コマンド
プログラム提供業者は、このソースプログラムB2を暗号化し、設定用ファイルB3と共にフラッシュメモリ6に記憶させて製品化する。そして、ユーザが当該プログラムを試用するためパスワードPaを暗号化されたソースプログラムB2内に書き込むことなくCPU4に実行させると、CPU4はファイル名D2(pro1)が設定用ファイルB3内に存在しないことを確認した場合には、ソースプログラムB2の6行目において設定用ファイルB3内にファイル名D2および初回起動時間データD3を書き込む。
経過時間データD1と初回起動時間データD3の差を取得し、この値が所定値(1000)を超えたら実行停止(強制終了)
11行目:「deleteLibTime」
ファイル名D2と初回起動時間データD3を削除する(尚、ファイル名D2が設定用ファイルB3に存在しない場合には無視される。)
14行目:「Move p,p0」 ロボットアーム3の位置移動
15行目:「End」 終了
16行目:「#endencryption] 暗号コマンド
プログラム提供業者は、このソースプログラムB2を暗号化し、設定用ファイルB3と共にフラッシュメモリ6に記憶させて製品化する。そして、ユーザが当該プログラムを試用するためパスワードPaを暗号化されたソースプログラムB2内に書き込むことなくCPU4に実行させると、CPU4はファイル名D2(pro1)が設定用ファイルB3内に存在しないことを確認した場合には、ソースプログラムB2の6行目において設定用ファイルB3内にファイル名D2および初回起動時間データD3を書き込む。
そして、CPU4は、ソースプログラムB2の7〜8行目において初回起動時間データD3と経過時間データD1との差が所定値を超えた場合には実行を停止する。設定用ファイルB3には、当該設定用ファイルB3を作成した後の経過時間データD1が記憶されており、CPU4は、CPU4に電源10からの電源供給が停止されたことを検出すると経過時間データD1を書き換える。
そして、ユーザが2回目以降に起動した時点で、設定用ファイルB3に書き込まれた各データを参照し、7から9行目において初回起動時間データD3と経過時間データD1との差が所定値を越えている場合にCPU4は実行を停止する。したがって、1回目から起動された当初は試用期間として使用することができるようになり、試用期間が経過した後に起動すると8行目において実行停止する。
実行停止した後でも、プログラム提供業者からパスワードPa「1234」を入手し、このパスワードPa「1234」が1行目に入力されると、CPU4は5行目においてパスワードが正しいことを判定し、6行目から9行目が実行されることなく11行目が実行されるようになり、設定用ファイルB3からファイル名D2および初回起動時間データD3を消去することにより使用期限制限機能が解除されることになり、ソースプログラムB2の使用期限制限機能を解除することができる。このとき、3行目から15行目が暗号化された状態でフラッシュメモリ6に記憶されているため、ユーザは、ソースプログラムB2の実行内容を知ることができない。このため、ユーザによるソースプログラムB2の暗号化プログラム部(図示せず)の改竄を防止することができる。
このような第2の実施形態によれば、CPU4は、暗号化プログラム部が実行され認証機能により非暗号化プログラム部P5に入力されたパスワードが正しいことを判定すると、CPU4は使用期限制限機能が解除するように動作するため、使用期限制限機能が解除されることになる。これにより、プログラム提供業者は期限制限を設けてユーザに対してソースプログラムの使用権限を与えられるようになり、利便性が向上する。
図面中、1はロボット制御装置(制御装置)、2はコントローラ、3はロボットアーム、4はCPU、5はメモリ部、8はユーザ側の開発用コンピュータ、9はプログラム提供業者側の変換用コンピュータ、Nはネットワーク、Sはサーバ、10は電源を示す。
Claims (7)
- プログラム提供業者により作成された少なくとも一のソースプログラムを備えて構成され、当該ソースプログラムがオブジェクトプログラムに変換された状態で制御装置に備えられたCPUに実行させるための制御用プログラムであって、
前記一のソースプログラムは、
その少なくとも一部が暗号化された暗号化プログラム部と、
この暗号化プログラム部以外についてユーザ書換設定可能に構成された非暗号化プログラム部とを備えて構成されていることを特徴とする制御用プログラム。 - 前記非暗号化プログラム部は、ユーザによりパスワード入力可能に構成され、
前記暗号化プログラム部には、前記非暗号化プログラム部のパスワードの認証機能が設けられていることを特徴とする請求項1記載の制御用プログラム。 - 前記非暗号化プログラム部は、ユーザによりパスワード入力可能に構成され、
前記暗号化プログラム部には、前記非暗号化プログラム部のパスワードの認証機能が設けられると共に使用期限制限機能が設けられ、
前記CPUにより前記暗号化プログラム部が実行され前記認証機能により前記非暗号化プログラムに入力されたパスワードが正しいことが判定されたことを条件として、前記CPUにより使用期限制限機能が解除されるように構成されていることを特徴とする請求項1または2記載の制御用プログラム。 - 前記暗号化プログラム部に構成されたパスワードの認証機能は、前記制御装置に個々に割り当てられるシリアルナンバーにより認証するものであることを特徴とする請求項2または3記載の制御用プログラム。
- 制御装置のCPUに、
請求項1ないし4の何れかに記載の制御用プログラムのソースプログラムを実行形式のオブジェクトプログラムに変換処理させることを特徴とするコンパイラ。 - 請求項1ないし4の何れかに記載の制御用プログラムの暗号化プログラム部を前記プログラム提供業者が認識可能な非暗号化状態から当該プログラム提供業者が認識不能な暗号化状態に、変換用コンピュータに変換実行させることを特徴とする変換プログラム。
- 請求項1ないし4の何れかに記載の制御用プログラムの暗号化プログラム部を前記プログラム提供業者が認識可能な暗号化状態から当該プログラム提供業者が認識不能な非暗号化状態に、変換用コンピュータに変換実行させることを特徴とする変換プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004008030A JP2005202663A (ja) | 2004-01-15 | 2004-01-15 | 制御用プログラム,コンパイラおよび変換プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004008030A JP2005202663A (ja) | 2004-01-15 | 2004-01-15 | 制御用プログラム,コンパイラおよび変換プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005202663A true JP2005202663A (ja) | 2005-07-28 |
Family
ID=34821512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004008030A Pending JP2005202663A (ja) | 2004-01-15 | 2004-01-15 | 制御用プログラム,コンパイラおよび変換プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005202663A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006092495A (ja) * | 2004-09-27 | 2006-04-06 | Toshiba Kyaria Kk | マイクロコンピュータのデータ記憶方法 |
JP2007226658A (ja) * | 2006-02-24 | 2007-09-06 | Nec Access Technica Ltd | 情報処理端末装置,情報処理方法及び情報処理用プログラム |
KR101328012B1 (ko) | 2013-08-12 | 2013-11-13 | 숭실대학교산학협력단 | 애플리케이션 코드 난독화 장치 및 그 방법 |
WO2021181801A1 (ja) * | 2020-03-13 | 2021-09-16 | オムロン株式会社 | ロボット制御システムおよび制御方法 |
-
2004
- 2004-01-15 JP JP2004008030A patent/JP2005202663A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006092495A (ja) * | 2004-09-27 | 2006-04-06 | Toshiba Kyaria Kk | マイクロコンピュータのデータ記憶方法 |
JP4669687B2 (ja) * | 2004-09-27 | 2011-04-13 | 東芝キヤリア株式会社 | マイクロコンピュータのデータ記憶方法 |
JP2007226658A (ja) * | 2006-02-24 | 2007-09-06 | Nec Access Technica Ltd | 情報処理端末装置,情報処理方法及び情報処理用プログラム |
KR101328012B1 (ko) | 2013-08-12 | 2013-11-13 | 숭실대학교산학협력단 | 애플리케이션 코드 난독화 장치 및 그 방법 |
WO2015023024A1 (ko) * | 2013-08-12 | 2015-02-19 | 숭실대학교 산학협력단 | 애플리케이션 코드 난독화 장치 및 그 방법 |
US9396313B2 (en) | 2013-08-12 | 2016-07-19 | Soongsil University Research Consortium Techno-Park | Apparatus for tamper protection of application code and method thereof |
WO2021181801A1 (ja) * | 2020-03-13 | 2021-09-16 | オムロン株式会社 | ロボット制御システムおよび制御方法 |
JP7452124B2 (ja) | 2020-03-13 | 2024-03-19 | オムロン株式会社 | ロボット制御システムおよび制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004528632A (ja) | プログラマブル携帯データ記憶媒体用プログラムの分散生成方法およびシステム | |
EP1901190A1 (en) | Method and system for managing access to add-on data files | |
US20030188187A1 (en) | Obfuscated source program, source program conversion method and apparatus, and source conversion program | |
CN101872404B (zh) | 一种保护Java软件程序的方法 | |
CN109992987B (zh) | 基于Nginx的脚本文件保护方法、装置及终端设备 | |
US8843766B2 (en) | Method and system for protecting against access to a machine code of a device | |
JPWO2007108127A1 (ja) | システムプログラムダウンロードシステム | |
JP4670585B2 (ja) | 設定装置および方法、並びにプログラム | |
US20080276087A1 (en) | Peripheral Device for Programmable Logic Controller | |
CN105279441A (zh) | 用于对数据进行加密和解密的方法和架构 | |
JP2009253783A (ja) | 携帯端末、データ保護方法およびデータ保護用プログラム | |
CN112270002B (zh) | 全盘加密方法、系统运行方法和电子设备 | |
WO2002003603A1 (en) | Method and apparatus for encrypted electronic file access control | |
JP5759827B2 (ja) | メモリシステム、情報処理装置、メモリ装置、およびメモリシステムの動作方法 | |
JP2008152551A (ja) | ソフトウェアオプション設定システム及び設定方法 | |
JP2005202663A (ja) | 制御用プログラム,コンパイラおよび変換プログラム | |
JP4678217B2 (ja) | 数値制御装置の管理方法及びその装置 | |
JP2007507020A (ja) | プログラミング可能な読出し専用メモリのブートセクタ内にソフトウェアをリロードするための方法 | |
JP4454280B2 (ja) | ライセンス認証方法およびライセンス認証システム | |
JP4420446B2 (ja) | 情報処理装置及びその制御方法 | |
JP2005165493A (ja) | シェアードコンピュータ、その制御プログラム、および記録媒体 | |
JP2006163896A (ja) | ライセンスキーデータ、ソフトウエアパッケージ制御プログラム、ライセンス確認プログラム、コンピュータ、ソフトウエアパッケージ制御方法 | |
CN110114772B (zh) | 梯形图程序非法利用防止系统、方法及工程工具 | |
CN113051532A (zh) | 软件授权方法与装置和计算机设备及存储介质 | |
JP2000099385A (ja) | ファイルを複数ユーザで共有するためのセキュリティ方法ならびにシステム及び同方法がプログラムされ記録される記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060214 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090512 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091006 |