説明

プログラムのコピー防止方法

【課題】
保護継電器や監視制御装置などのシステムに提供されるプログラムの不正コピーや実行を防止する。
【解決手段】
上記課題を解決するために、本発明のプログラムコピー防止方法は、システム固有の入力コードとシステムごとにばらつきがある値を補正する補正値とをメモリに保存する。プログラムは、システム立ち上げ時やリセット時など、最初にプログラムを実行するときは、まずこのメモリから補正値を読み出し、暗号化処理により、識別コードを作成する。次にメモリから入力コードを読出し、入力コードと識別コードを比較し、同じ場合は、プログラムを実行し、入力コードと識別コードが異なる場合は、プログラムの実行を行わないようにした。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えばCPUに実行させるためにROM等のメモリに記憶されたプログラムが、不正にコピーされて、他の機器で使用されるのを防止するプログラムのコピー防止方法の技術に関するものである。
【背景技術】
【0002】
保護継電器、計測器、監視制御機器などの電子機器においては、ROMなどのメモリに記録されたプログラムを読み込んで、プログラムに記載された所定の処理を実行するCPUが設けられている。しかしながら、これらのプログラムが記載されたROMなどのメモリからは、そのプログラムデータを容易に読み出すことが出来るため、不正にコピーされて他の機器に使われれば、莫大な開発費を投入して作成したプログラムの開発費が回収できないことになる。そのため不正なコピーを防止する対策が必要とされている。
【0003】
特開昭63−132336号には、プログラム媒体をある指定のハードウェアにセットしたとき、該プログラム媒体の固有情報として、上記ハードウェアに内蔵されたタイマによりカウントされる年月日・時分秒からなる乱数値、およびプログラム媒体内の各プログラム毎のプログラム登録情報を、上記ハードウェ内の電池付バックアップRAMおよび上記プログラム媒体に書込むことにより、上記指定以外のハードウェアによるプログラムの実行を禁止する方式が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開昭63−132336号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記特許文献では、固有情報として、タイマを用いているので、時計機能を持つシステムにしか適応することができない。また、バックアッププログラムRAMの固有情報をプログラム媒体の固有情報に一致するように書き換えられた場合は、本方式ではプログラムの実行を防止できない。そこで、タイマのないシステムにおいても使用することが出来る、不正なプログラムコピーを防止するための対策が要求されている。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明のプログラムコピー防止方法は、システム固有の入力コードとシステムごとにばらつきがある値を補正する補正値とをメモリに保存する。プログラムは、システム立ち上げ時やリセット時など、最初にプログラムを実行するときは、まずこのメモリから補正値を読み出し、暗号化処理により、識別コードを作成する。次にメモリから入力コードを読出し、入力コードと識別コードを比較し、同じ場合は、プログラムを実行し、入力コードと識別コードが異なる場合は、プログラムの実行を行わないようにした。
【発明の効果】
【0007】
本発明によれば、システム固有の値をプログラム内に書き込んでいるので、同一システムの他のハードウェアでは、ハードウェアの固有情報が異なるため、不正にコピーしたプログラムの実行を禁止することができる。またメモリの内容を書き換えようとしてもシステムの特性に影響する補正値を書き換えることになる為、不正に書き換えコピーしたプログラムでは、実用に耐えうるシステムとならないので、実質的にはプログラムコピーを防止したのと同等の効果を有することになる。
【図面の簡単な説明】
【0008】
【図1】図1は、今回発明の構成図
【図2】図2は、今回発明のフローチャート
【発明を実施するための形態】
【実施例】
【0009】
図1、図2、を用いて本発明のプログラムの不正コピー防止方法の実施例を説明する。まず前段階として、本システム固有の入力コードの求め方を説明する。ハードウェア特有の固有値である補正値(アナログ回路5のゲイン・オフセットなど、システムによりばらつきがある値を、アナログ回路5が動作する上で最適な条件になるようにあらかじめ補正した値)を、実際のアナログ回路5を動作させて表示装置3で値を確認して、入力装置2より補正値を入力する。入力された補正値は、メモリ4に保存する。演算回路1は、この補正値をメモリ4から読出し、暗号化処理を行って識別コードを作成する。この識別コードが、本システム固有の入力コードとして、入力装置2より入力されて、メモリ4に保存される。これらの値を保存するメモリは電源を供給しなくても、データを保持する不揮発性メモリを使用することが好ましい。入力コードと補正値を保存するメモリは、本実施例では同一メモリであるが、個別メモリでもよい。
【0010】
次に、プログラムが起動したときの動きを説明する。演算回路1は、まずメモリ4に保存された、ハードウェア特有の固有値である補正値を読み出して(S1)、前記補正値から識別コードを生成する(S2)。識別コードの生成方法は、暗号化処理を用いて基の補正値を連想しにくい識別コードを生成するとよい。次に、演算回路1は、メモリ4より入力コードを読み込む(S3)。演算回路1は、入力コードと識別コードを比較し(S4)、一致した場合には正常処理、すなわち、保護継電器であれば保護リレー処理、計測機器であれば計測処理を行う。不一致の場合には、正常処理を行わない。不正コピーではなく、単なる入力コードの入力ミスの可能性もあるので、再度入力コードを読み込み、正しい入力コードに更新された瞬間から、正常処理を行うようにしている。あるいは、別途処理停止のルーチンを設けて、表示画面に認証エラー等の表示を行いプログラムの実行を終了するようにしてもよいし、入力コードの再入力を求め、規定回数までは、処理を繰り返すようにすることもできる。演算回路1は、例えばCPUやFPGAで構成するとよい。
【0011】
前述のように、補正値および入力コードは、システム固有の値を入力するようにし、その値が正しいかどうかを確認しているので、この値を未入力にすることはできない。入力コード、補正値とも、システムごとに異なるため、他のシステムではプログラムが動作しない。仮に入力コード、補正値がもれたとする。この場合、他の機器でこのプログラムを不正コピーして、入力コードと補正値をいれれば、プログラムとしては処理をしてしまうが、そのシステムが本来持っている補正値ではないので、不正コピーのプログラムの処理では、システム全体としては、最適な動きができないので、実質的には、プログラムの不正コピー防止を行えたのと同等の効果を有する。
【産業上の利用可能性】
【0012】
この発明は、たとえば、保護継電器や監視制御装置などのシステムに提供されるプログラムの不正コピーの防止に適応できる。
【符号の説明】
【0013】
1 演算回路
2 入力装置
3 表示装置
4 メモリ
5 アナログ回路

【特許請求の範囲】
【請求項1】
システムに内在する固有のばらつきを補正する補正値を暗号化処理した値を入力コードとして入力するステップと、入力コードをメモリに保存するステップと、前記補正値を入力するステップと、前記補正値をメモリに保存するステップを備え、プログラムを起動した時に前記補正値を読み出して、暗号化処理をして識別コードを作成するステップと、前記メモリから入力コードを読出し識別コードと比較するステップを備え、入力コードと識別コードが一致した場合には正常処理を行い、一致しない場合には正常処理を行わないことを特徴とするプログラムの不正コピー防止方法。

【図1】
image rotate

【図2】
image rotate