JPH1055273A - ソフトウェア保護装置 - Google Patents
ソフトウェア保護装置Info
- Publication number
- JPH1055273A JPH1055273A JP8313429A JP31342996A JPH1055273A JP H1055273 A JPH1055273 A JP H1055273A JP 8313429 A JP8313429 A JP 8313429A JP 31342996 A JP31342996 A JP 31342996A JP H1055273 A JPH1055273 A JP H1055273A
- Authority
- JP
- Japan
- Prior art keywords
- encryption key
- program
- circuit
- cpu
- decoding
- 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
Landscapes
- Storage Device Security (AREA)
Abstract
(57)【要約】
【課題】 CPU,メモリ,プログラマブル演算回路間
に流れる情報を暗号化することにより、ソフトウェアの
保護の向上を図る。 【解決手段】 CPUチップ11にデコード回路30,
暗号キー生成回路31,暗号化回路36,暗証番号照合
回路33,暗証番号生成回路34を設ける。プログラマ
ブル演算回路チップ12及びプログラム保存用メモリチ
ップ10に、夫々デコード回路40及び50、暗号キー
生成回路41及び51を設ける。これにより、時間によ
って変化する暗号キーで情報を暗号化する。こうすれば
暗号化された情報を容易に解読できなくなる。更にその
暗号化された情報がデコード回路30に入力される前
に、時間変化する暗証番号を照合する。こうすればデコ
ード回路の入出力特性を容易に解析できず、ソフトウェ
アの保護が確実となる。
に流れる情報を暗号化することにより、ソフトウェアの
保護の向上を図る。 【解決手段】 CPUチップ11にデコード回路30,
暗号キー生成回路31,暗号化回路36,暗証番号照合
回路33,暗証番号生成回路34を設ける。プログラマ
ブル演算回路チップ12及びプログラム保存用メモリチ
ップ10に、夫々デコード回路40及び50、暗号キー
生成回路41及び51を設ける。これにより、時間によ
って変化する暗号キーで情報を暗号化する。こうすれば
暗号化された情報を容易に解読できなくなる。更にその
暗号化された情報がデコード回路30に入力される前
に、時間変化する暗証番号を照合する。こうすればデコ
ード回路の入出力特性を容易に解析できず、ソフトウェ
アの保護が確実となる。
Description
【0001】
【発明の属する技術分野】本発明はCPUの制御プログ
ラムを保護するソフトウェア保護装置に関するものであ
る。
ラムを保護するソフトウェア保護装置に関するものであ
る。
【0002】
【従来の技術】従来のCPUのプログラムを保護するた
めには、データバス上のプログラムを暗号化する手法が
提案されている。例えば特開昭63―152241号公
報や特開平5―2278号公報に示すように、入出力特
性が入出力データとは独立したあるパラメータに依存し
ない関数で表現される暗号化手段を、CPUやプログラ
ム保存用メモリ内部に備えてプログラム保護が行われて
いた。
めには、データバス上のプログラムを暗号化する手法が
提案されている。例えば特開昭63―152241号公
報や特開平5―2278号公報に示すように、入出力特
性が入出力データとは独立したあるパラメータに依存し
ない関数で表現される暗号化手段を、CPUやプログラ
ム保存用メモリ内部に備えてプログラム保護が行われて
いた。
【0003】図7は特開昭63―152241号公報に
示されている保護装置である。図7においてマイクロプ
ロセッサ70はメモリ又は周辺LSIチップ80との間
がアドレスバス77,データバス78及びR/W信号ラ
イン79によって接続される。マイクロプロセッサ70
内にはCPU71のデータバス端に暗号化ROM72と
暗号をデコードするデコードROM73が接続され、そ
のいずれかがR/W信号によって択一的に動作するよう
にトライステートバッファ74,75とインバータ76
が接続される。メモリ又は周辺LSIチップ80内にも
同様に、暗号化されたデータをデコードするデコードR
OM82と出力するデータを暗号化する暗号化ROM8
3が設けられ、これを択一的に動作させるためのトライ
ステートバッファ84,85とインバータ86とがR/
W信号ライン79に接続されて構成される。この保護装
置によれば、マイクロプロセッサ70とメモリ又は周辺
LSIチップ80に、データの暗号化及び復号化の変換
用ROMを設けてデータバスを流れる情報を暗号化して
いる。これにより、例えロジックアナライザー等によっ
てこのデータを分析しても実行中のソフトウェア自体を
知ることはできず、又ファームウェアのROMを盗まれ
てもそのままではプログラムとしては意味をなさないの
でソフトウェアの保護が可能となる。しかし最近の暗号
技術ならびにデータ解析技術の進歩により、上記のよう
な暗号化手法ではソフトウェアの保護が十分に行えると
は言えなくなってきた。
示されている保護装置である。図7においてマイクロプ
ロセッサ70はメモリ又は周辺LSIチップ80との間
がアドレスバス77,データバス78及びR/W信号ラ
イン79によって接続される。マイクロプロセッサ70
内にはCPU71のデータバス端に暗号化ROM72と
暗号をデコードするデコードROM73が接続され、そ
のいずれかがR/W信号によって択一的に動作するよう
にトライステートバッファ74,75とインバータ76
が接続される。メモリ又は周辺LSIチップ80内にも
同様に、暗号化されたデータをデコードするデコードR
OM82と出力するデータを暗号化する暗号化ROM8
3が設けられ、これを択一的に動作させるためのトライ
ステートバッファ84,85とインバータ86とがR/
W信号ライン79に接続されて構成される。この保護装
置によれば、マイクロプロセッサ70とメモリ又は周辺
LSIチップ80に、データの暗号化及び復号化の変換
用ROMを設けてデータバスを流れる情報を暗号化して
いる。これにより、例えロジックアナライザー等によっ
てこのデータを分析しても実行中のソフトウェア自体を
知ることはできず、又ファームウェアのROMを盗まれ
てもそのままではプログラムとしては意味をなさないの
でソフトウェアの保護が可能となる。しかし最近の暗号
技術ならびにデータ解析技術の進歩により、上記のよう
な暗号化手法ではソフトウェアの保護が十分に行えると
は言えなくなってきた。
【0004】
【発明が解決しようとする課題】以上のように従来のソ
フトウェア保護装置においては、暗号化及び復号化時に
入出力データとは独立した暗号キー等のパラメータを用
いていなかった。このため、暗号化手段へのある入力値
に対する出力値は常に決まってしまう。一方CPUの動
作と入力されたプログラムやデータとは相関性を持って
おり、その動作から入力されたプログラムやデータ全て
を正しく類推することは困難であるが、一部分を正しく
類推することは容易である。即ちプログラム又はデータ
のある一部分において、第三者が暗号化前後の値を得る
ことは容易である。従ってある入力値に対する出力値は
常に決まってしまう暗号化手段を用いた従来のソフトウ
ェア保護装置の場合は、暗号化する際の入出力関係が容
易に正しく類推できるため、暗号化されたプログラムや
データ全てを第三者が不正に復号できるという問題点を
有していた。
フトウェア保護装置においては、暗号化及び復号化時に
入出力データとは独立した暗号キー等のパラメータを用
いていなかった。このため、暗号化手段へのある入力値
に対する出力値は常に決まってしまう。一方CPUの動
作と入力されたプログラムやデータとは相関性を持って
おり、その動作から入力されたプログラムやデータ全て
を正しく類推することは困難であるが、一部分を正しく
類推することは容易である。即ちプログラム又はデータ
のある一部分において、第三者が暗号化前後の値を得る
ことは容易である。従ってある入力値に対する出力値は
常に決まってしまう暗号化手段を用いた従来のソフトウ
ェア保護装置の場合は、暗号化する際の入出力関係が容
易に正しく類推できるため、暗号化されたプログラムや
データ全てを第三者が不正に復号できるという問題点を
有していた。
【0005】又従来のソフトウェア保護装置において
は、データバスからのデータが直接デコード手段に入力
される。このため、第三者があるデータを直接デコード
手段に入力してCPUの動作を観察することにより、デ
コード手段の入力値に対する出力値の特性を解析するこ
とができる。この解析によって、復号化する際の入出力
関係が容易に正しく類推できるため、暗号化されたプロ
グラムやデータ全てを第三者が不正に復号できるという
問題点を有していた。
は、データバスからのデータが直接デコード手段に入力
される。このため、第三者があるデータを直接デコード
手段に入力してCPUの動作を観察することにより、デ
コード手段の入力値に対する出力値の特性を解析するこ
とができる。この解析によって、復号化する際の入出力
関係が容易に正しく類推できるため、暗号化されたプロ
グラムやデータ全てを第三者が不正に復号できるという
問題点を有していた。
【0006】本発明はこのような従来の問題点に鑑みて
なされたものであって、暗号化されたプログラムやデー
タを第三者が容易に復号できないようにすることを目的
とする。
なされたものであって、暗号化されたプログラムやデー
タを第三者が容易に復号できないようにすることを目的
とする。
【0007】
【課題を解決するための手段】本発明の請求項1記載の
ソフトウェア保護装置は、CPUとプログラム保存用メ
モリ装置間のデータバスに流れる情報を暗号化して、前
記プログラムの保護を行うソフトウェア保護装置であっ
て、前記CPUは、暗号キーを用いて情報を暗号化する
第1の暗号化手段と、暗号キーを用いて暗号化された情
報を復号する第1のデコード手段と、前記第1の暗号化
手段及び前記第1のデコード手段で用いる暗号キーを暗
号キーパラメータに依存して生成する第1の暗号キー生
成手段と、を有するものであり、前記プログラム保存用
メモリ装置は、信号処理又は情報処理アルゴリズムを規
定するプログラムを保存するプログラム保存用のメモリ
と、暗号化された情報を暗号キーを用いて復号して前記
メモリに書込む第2のデコード手段と、前記第2のデコ
ード手段で用いる暗号キーを暗号キーパラメータに依存
して生成する第2の暗号キー生成手段と、を有すること
を特徴とするものである。
ソフトウェア保護装置は、CPUとプログラム保存用メ
モリ装置間のデータバスに流れる情報を暗号化して、前
記プログラムの保護を行うソフトウェア保護装置であっ
て、前記CPUは、暗号キーを用いて情報を暗号化する
第1の暗号化手段と、暗号キーを用いて暗号化された情
報を復号する第1のデコード手段と、前記第1の暗号化
手段及び前記第1のデコード手段で用いる暗号キーを暗
号キーパラメータに依存して生成する第1の暗号キー生
成手段と、を有するものであり、前記プログラム保存用
メモリ装置は、信号処理又は情報処理アルゴリズムを規
定するプログラムを保存するプログラム保存用のメモリ
と、暗号化された情報を暗号キーを用いて復号して前記
メモリに書込む第2のデコード手段と、前記第2のデコ
ード手段で用いる暗号キーを暗号キーパラメータに依存
して生成する第2の暗号キー生成手段と、を有すること
を特徴とするものである。
【0008】この装置によれば、第1,第2の暗号キー
生成手段によって暗号キーを変化させることができるた
め、例え第三者が暗号化手段又はデコード手段の入力値
に対する出力値の特性を不正に解析しようとしても、正
しく類推することは容易でなく、プログラムの秘匿性を
高めることができる。又暗号キーは外部からの参照は不
可能であり、暗号キーパラメータさえ秘密にしておけ
ば、例え暗号キー生成方法が知られても、暗号キーを容
易に正しく類推できないため、暗号キーの秘匿性も高め
ることができる。
生成手段によって暗号キーを変化させることができるた
め、例え第三者が暗号化手段又はデコード手段の入力値
に対する出力値の特性を不正に解析しようとしても、正
しく類推することは容易でなく、プログラムの秘匿性を
高めることができる。又暗号キーは外部からの参照は不
可能であり、暗号キーパラメータさえ秘密にしておけ
ば、例え暗号キー生成方法が知られても、暗号キーを容
易に正しく類推できないため、暗号キーの秘匿性も高め
ることができる。
【0009】次に本発明の請求項2記載のソフトウェア
保護装置は、CPUとプログラム保存用メモリ装置及び
前記CPUによって制御される信号処理手段を含んで構
成され、これらの間のデータバスに流れる情報を暗号化
して、前記プログラムの保護を行うソフトウェア保護装
置であって、前記CPUは、暗号キーを用いて情報を暗
号化する第1の暗号化手段と、暗号キーを用いて暗号化
された情報を復号する第1のデコード手段と、前記第1
の暗号化手段及び前記第1のデコード手段で用いる暗号
キーを暗号キーパラメータに依存して生成する第1の暗
号キー生成手段と、を有するものであり、前記プログラ
ム保存用メモリ装置は、信号処理又は情報処理アルゴリ
ズムを規定するプログラムを保存するプログラム保存用
のメモリと、暗号化された情報を暗号キーを用いて復号
して前記メモリに書込む第2のデコード手段と、前記第
2のデコード手段で用いる暗号キーを暗号キーパラメー
タに依存して生成する第2の暗号キー生成手段と、を有
するものであり、前記信号処理手段は、暗号化された情
報を暗号キーを用いて復号する第3のデコード手段と、
前記第3のデコード手段で用いる暗号キーを暗号キーパ
ラメータに依存して生成する第3の暗号キー生成手段
と、を有することを特徴とするものである。
保護装置は、CPUとプログラム保存用メモリ装置及び
前記CPUによって制御される信号処理手段を含んで構
成され、これらの間のデータバスに流れる情報を暗号化
して、前記プログラムの保護を行うソフトウェア保護装
置であって、前記CPUは、暗号キーを用いて情報を暗
号化する第1の暗号化手段と、暗号キーを用いて暗号化
された情報を復号する第1のデコード手段と、前記第1
の暗号化手段及び前記第1のデコード手段で用いる暗号
キーを暗号キーパラメータに依存して生成する第1の暗
号キー生成手段と、を有するものであり、前記プログラ
ム保存用メモリ装置は、信号処理又は情報処理アルゴリ
ズムを規定するプログラムを保存するプログラム保存用
のメモリと、暗号化された情報を暗号キーを用いて復号
して前記メモリに書込む第2のデコード手段と、前記第
2のデコード手段で用いる暗号キーを暗号キーパラメー
タに依存して生成する第2の暗号キー生成手段と、を有
するものであり、前記信号処理手段は、暗号化された情
報を暗号キーを用いて復号する第3のデコード手段と、
前記第3のデコード手段で用いる暗号キーを暗号キーパ
ラメータに依存して生成する第3の暗号キー生成手段
と、を有することを特徴とするものである。
【0010】この装置によれば、CPUと前記プログラ
ム保存用メモリと前記信号処理手段間のデータバスに流
れる情報を暗号化して、前記プログラムの保護を行うこ
とを特徴としたものであり、CPUによって制御される
信号処理回路を複数含んだシステムでも、プログラムの
秘匿性を高めることができる。
ム保存用メモリと前記信号処理手段間のデータバスに流
れる情報を暗号化して、前記プログラムの保護を行うこ
とを特徴としたものであり、CPUによって制御される
信号処理回路を複数含んだシステムでも、プログラムの
秘匿性を高めることができる。
【0011】次に本発明の請求項3記載のソフトウェア
保護装置は、CPUとプログラム保存用メモリ装置及び
前記プログラムによって制御されるプログラマブル演算
回路を含んで構成され、これらの間のデータバスに流れ
る情報を暗号化して、前記プログラムの保護を行うソフ
トウェア保護装置であって、前記CPUは、暗号キーを
用いて情報を暗号化する第1の暗号化手段と、暗号キー
を用いて暗号化された情報を復号する第1のデコード手
段と、前記第1の暗号化手段及び前記第1のデコード手
段で用いる暗号キーを暗号キーパラメータに依存して生
成する第1の暗号キー生成手段と、を有するものであ
り、前記プログラム保存用メモリ装置は、信号処理又は
情報処理アルゴリズムを規定するプログラムを保存する
プログラム保存用のメモリと、暗号化された情報を暗号
キーを用いて復号して前記メモリに書込む第2のデコー
ド手段と、前記第2のデコード手段で用いる暗号キーを
暗号キーパラメータに依存して生成する第2の暗号キー
生成手段と、を有するものであり、前記プログラマブル
演算回路は、暗号化された情報を暗号キーを用いて復号
する第4のデコード手段と、前記第4のデコード手段で
用いる暗号キーを1つあるいは複数の暗号キーパラメー
タに依存して生成する第4の暗号キー生成手段と、を有
することを特徴とするものである。
保護装置は、CPUとプログラム保存用メモリ装置及び
前記プログラムによって制御されるプログラマブル演算
回路を含んで構成され、これらの間のデータバスに流れ
る情報を暗号化して、前記プログラムの保護を行うソフ
トウェア保護装置であって、前記CPUは、暗号キーを
用いて情報を暗号化する第1の暗号化手段と、暗号キー
を用いて暗号化された情報を復号する第1のデコード手
段と、前記第1の暗号化手段及び前記第1のデコード手
段で用いる暗号キーを暗号キーパラメータに依存して生
成する第1の暗号キー生成手段と、を有するものであ
り、前記プログラム保存用メモリ装置は、信号処理又は
情報処理アルゴリズムを規定するプログラムを保存する
プログラム保存用のメモリと、暗号化された情報を暗号
キーを用いて復号して前記メモリに書込む第2のデコー
ド手段と、前記第2のデコード手段で用いる暗号キーを
暗号キーパラメータに依存して生成する第2の暗号キー
生成手段と、を有するものであり、前記プログラマブル
演算回路は、暗号化された情報を暗号キーを用いて復号
する第4のデコード手段と、前記第4のデコード手段で
用いる暗号キーを1つあるいは複数の暗号キーパラメー
タに依存して生成する第4の暗号キー生成手段と、を有
することを特徴とするものである。
【0012】この装置によれば、CPUと前記プログラ
ム保存用メモリと前記プログラマブル演算回路間のデー
タバスに流れる情報を暗号化して、前記プログラムの保
護を行うことを特徴としたものであり、プログラムによ
って制御されるプログラマブル演算回路を複数含んだシ
ステムでも、プログラムの秘匿性を高めることができ
る。
ム保存用メモリと前記プログラマブル演算回路間のデー
タバスに流れる情報を暗号化して、前記プログラムの保
護を行うことを特徴としたものであり、プログラムによ
って制御されるプログラマブル演算回路を複数含んだシ
ステムでも、プログラムの秘匿性を高めることができ
る。
【0013】次に本発明の請求項4に記載のソフトウェ
ア保護装置では、前記CPUが有する前記第1の暗号キ
ー生成手段を、暗号キーパラメータに依存して前記第1
の暗号化手段で用いる暗号キーを生成する第5の暗号キ
ー生成手段と、暗号キーパラメータに依存して前記第1
のデコード手段で用いる暗号キーを生成する第6の暗号
キー生成手段とに置き換えたことを特徴とするものであ
る。
ア保護装置では、前記CPUが有する前記第1の暗号キ
ー生成手段を、暗号キーパラメータに依存して前記第1
の暗号化手段で用いる暗号キーを生成する第5の暗号キ
ー生成手段と、暗号キーパラメータに依存して前記第1
のデコード手段で用いる暗号キーを生成する第6の暗号
キー生成手段とに置き換えたことを特徴とするものであ
る。
【0014】この装置によれば、前記第1の暗号化手段
で用いる暗号キーと前記第1のデコード手段で用いる暗
号キーの生成方法が異なる場合にも対応することができ
る。
で用いる暗号キーと前記第1のデコード手段で用いる暗
号キーの生成方法が異なる場合にも対応することができ
る。
【0015】次に本発明の請求項5記載のソフトウェア
保護装置では、前記暗号キー生成手段は、時間、前記メ
モリのアドレス値、生成タイミングを規定する信号の少
なくとも1つに対応して変化する暗号キーを生成するこ
とを特徴とするものである。
保護装置では、前記暗号キー生成手段は、時間、前記メ
モリのアドレス値、生成タイミングを規定する信号の少
なくとも1つに対応して変化する暗号キーを生成するこ
とを特徴とするものである。
【0016】この装置によれば、暗号キーを時間やメモ
リのアドレス値等の関数で表現することにより、前記C
PU内部、前記プログラム保存用メモリ内部、前記プロ
グラマブル演算回路内部及び前記信号処理手段内部に、
夫々独立に前記暗号キー生成手段を持っていても、同一
の暗号キーを生成することができ、暗号キーを外部のバ
スで伝送する必要がなくなるため、暗号キーの秘匿性を
高めることができる。
リのアドレス値等の関数で表現することにより、前記C
PU内部、前記プログラム保存用メモリ内部、前記プロ
グラマブル演算回路内部及び前記信号処理手段内部に、
夫々独立に前記暗号キー生成手段を持っていても、同一
の暗号キーを生成することができ、暗号キーを外部のバ
スで伝送する必要がなくなるため、暗号キーの秘匿性を
高めることができる。
【0017】次に本発明の請求項6に記載のソフトウェ
ア保護装置では、前記CPUは、前記CPUの命令が分
岐命令であるかどうかの判断を行い、分岐命令の情報を
抽出する分岐命令抽出手段と、前記分岐命令抽出手段か
ら供給される情報を基に暗号キー生成に用いる前記変数
の修正値を生成する暗号キー生成変数修正手段とを更に
有したことを特徴とするものである。
ア保護装置では、前記CPUは、前記CPUの命令が分
岐命令であるかどうかの判断を行い、分岐命令の情報を
抽出する分岐命令抽出手段と、前記分岐命令抽出手段か
ら供給される情報を基に暗号キー生成に用いる前記変数
の修正値を生成する暗号キー生成変数修正手段とを更に
有したことを特徴とするものである。
【0018】この装置によれば、CPUのプログラムに
分岐があっても、分岐命令抽出手段で分岐の情報を抽出
し、その情報を基に暗号キー生成変数修正手段と暗号キ
ー生成回路で分岐先のプログラム内容に対する暗号キー
を生成することができ、CPUのプログラムは正しくデ
コードされる。
分岐があっても、分岐命令抽出手段で分岐の情報を抽出
し、その情報を基に暗号キー生成変数修正手段と暗号キ
ー生成回路で分岐先のプログラム内容に対する暗号キー
を生成することができ、CPUのプログラムは正しくデ
コードされる。
【0019】次に本発明の請求項7に記載のソフトウェ
ア保護装置は、前記分岐命令抽出手段は、前記CPUの
命令、前記メモリのアドレス値の少なくとも1つを基に
前記CPUの命令が分岐命令であるかどうかの判断を行
い、分岐命令の情報を抽出することを特徴とするもので
ある。
ア保護装置は、前記分岐命令抽出手段は、前記CPUの
命令、前記メモリのアドレス値の少なくとも1つを基に
前記CPUの命令が分岐命令であるかどうかの判断を行
い、分岐命令の情報を抽出することを特徴とするもので
ある。
【0020】この装置によれば、前記CPU内部にある
情報だけで、分岐命令の情報を抽出することができる。
特にCPUの命令を基にする場合、CPUの命令が分岐
命令であるかどうかの判断を行い、分岐命令の情報を抽
出する処理をCPUコアで行うことができる。ここで言
うCPUコアとは、プログラムを受け取ってデータ処理
を行ったり、外部へ命令を出力する装置である。こうす
ればCPUコアとは別に分岐命令抽出手段を持たなくて
もよいので回路規模を小さくできる。
情報だけで、分岐命令の情報を抽出することができる。
特にCPUの命令を基にする場合、CPUの命令が分岐
命令であるかどうかの判断を行い、分岐命令の情報を抽
出する処理をCPUコアで行うことができる。ここで言
うCPUコアとは、プログラムを受け取ってデータ処理
を行ったり、外部へ命令を出力する装置である。こうす
ればCPUコアとは別に分岐命令抽出手段を持たなくて
もよいので回路規模を小さくできる。
【0021】次に本発明の請求項8記載のソフトウェア
保護装置は、前記CPU内部に、前記暗号キー及び前記
暗号キーパラメータを保持する第1の暗号キー保持手段
を備え、前記プログラム保存用メモリ内部に、前記暗号
キー及び前記暗号キーパラメータを保持する第2の暗号
キー保持手段を備えたことを特徴としたものであり、電
源OFF後も暗号キー及び暗号キーパラメータを保存で
きる。
保護装置は、前記CPU内部に、前記暗号キー及び前記
暗号キーパラメータを保持する第1の暗号キー保持手段
を備え、前記プログラム保存用メモリ内部に、前記暗号
キー及び前記暗号キーパラメータを保持する第2の暗号
キー保持手段を備えたことを特徴としたものであり、電
源OFF後も暗号キー及び暗号キーパラメータを保存で
きる。
【0022】次に、本発明の請求項9に記載のソフトウ
ェア保護装置は、前記暗号キー生成手段が、外部から暗
号キー又は暗号キーパラメータを入力できる入力手段を
備えたことを特徴としたものであり、暗号キー又は暗号
キーパラメータが外部入力できることにより、暗号キー
又は暗号キーパラメータが既知のプログラムを起動させ
ることができる。又、複数の者によって、夫々プログラ
ムを開発した場合、暗号キーパラメータを個々のプログ
ラムによって秘密に持っておくことができるので、プロ
グラム開発者間におけるプログラムの秘匿性の高さは保
持される。
ェア保護装置は、前記暗号キー生成手段が、外部から暗
号キー又は暗号キーパラメータを入力できる入力手段を
備えたことを特徴としたものであり、暗号キー又は暗号
キーパラメータが外部入力できることにより、暗号キー
又は暗号キーパラメータが既知のプログラムを起動させ
ることができる。又、複数の者によって、夫々プログラ
ムを開発した場合、暗号キーパラメータを個々のプログ
ラムによって秘密に持っておくことができるので、プロ
グラム開発者間におけるプログラムの秘匿性の高さは保
持される。
【0023】次に本発明の請求項10記載のソフトウェ
ア保護装置は、前記CPU内部に、暗証番号を生成する
暗証番号生成手段と、前記暗証番号生成手段から供給さ
れる前記暗証番号と前記プログラムが持つ暗証番号とを
比較する暗証番号照合手段、及び前記暗証番号を保持す
る暗証番号保持手段を備えたことを特徴としたものであ
り、暗証番号が一致しないとデコード回路にプログラム
が供給されないようにすることで、暗証番号を知らない
第三者が作成したプログラムを起動不能にし、デコード
回路の入出力特性を不正に解析することを防ぐことがで
きる。
ア保護装置は、前記CPU内部に、暗証番号を生成する
暗証番号生成手段と、前記暗証番号生成手段から供給さ
れる前記暗証番号と前記プログラムが持つ暗証番号とを
比較する暗証番号照合手段、及び前記暗証番号を保持す
る暗証番号保持手段を備えたことを特徴としたものであ
り、暗証番号が一致しないとデコード回路にプログラム
が供給されないようにすることで、暗証番号を知らない
第三者が作成したプログラムを起動不能にし、デコード
回路の入出力特性を不正に解析することを防ぐことがで
きる。
【0024】次に本発明の請求項11記載のソフトウェ
ア保護装置は、前記暗証番号生成手段が、初期設定値、
年月日、時間毎あるいは電源スイッチの少なくとも1つ
に対応して変化する前記暗証番号を、1つあるいは複数
個生成することを特徴としたものであり、暗証番号が時
間に依存して変化するので、暗証番号の秘匿性を高める
ことができる。
ア保護装置は、前記暗証番号生成手段が、初期設定値、
年月日、時間毎あるいは電源スイッチの少なくとも1つ
に対応して変化する前記暗証番号を、1つあるいは複数
個生成することを特徴としたものであり、暗証番号が時
間に依存して変化するので、暗証番号の秘匿性を高める
ことができる。
【0025】次に本発明の請求項12記載のソフトウェ
ア保護装置は、前記暗証番号生成手段が、前記メモリの
アドレスと、前記アドレスに記憶されているデータ値と
で前記暗証番号を生成することを特徴としたものであ
り、暗証番号の照合回路では、プログラムのあるアドレ
ス値との比較になり、プログラムは別に暗証番号を持つ
必要がないので、暗証番号の秘匿性を高めることができ
る。
ア保護装置は、前記暗証番号生成手段が、前記メモリの
アドレスと、前記アドレスに記憶されているデータ値と
で前記暗証番号を生成することを特徴としたものであ
り、暗証番号の照合回路では、プログラムのあるアドレ
ス値との比較になり、プログラムは別に暗証番号を持つ
必要がないので、暗証番号の秘匿性を高めることができ
る。
【0026】次に本発明の請求項13記載のソフトウェ
ア保護装置は、前記暗証番号生成手段が外部から暗証番
号を入力できる入力手段と、前記第1の暗号キー保持手
段に保持されている内容を消去できる消去手段とを備え
たことを特徴としたものであり、暗証番号が外部から設
定できることにより、暗証番号が既知のプログラムを起
動させることができる。そのため、複数の者によって、
夫々プログラムを開発した場合、暗証番号を個々のプロ
グラムによって秘密に持っておくことができるので、プ
ログラム開発者間におけるプログラムの秘匿性の高さは
保持される。又、暗証番号を外部から入力すると、暗号
キー保持手段の内容が消去される構成にすることによ
り、第三者が暗証番号が既知のデータを用いてデコード
回路の入出力特性を不正に解析することが不可能とな
る。
ア保護装置は、前記暗証番号生成手段が外部から暗証番
号を入力できる入力手段と、前記第1の暗号キー保持手
段に保持されている内容を消去できる消去手段とを備え
たことを特徴としたものであり、暗証番号が外部から設
定できることにより、暗証番号が既知のプログラムを起
動させることができる。そのため、複数の者によって、
夫々プログラムを開発した場合、暗証番号を個々のプロ
グラムによって秘密に持っておくことができるので、プ
ログラム開発者間におけるプログラムの秘匿性の高さは
保持される。又、暗証番号を外部から入力すると、暗号
キー保持手段の内容が消去される構成にすることによ
り、第三者が暗証番号が既知のデータを用いてデコード
回路の入出力特性を不正に解析することが不可能とな
る。
【0027】次に本発明の請求項14記載のソフトウェ
ア保護装置は、前記プログラム保存用メモリに書込みを
行うか否かの判断を行う書込み制御手段を備えたことを
特徴としたものであり、現在の暗号化されたプログラム
とは暗号キーが異なった暗号化された新しいプログラム
を、プログラム保存用メモリに書き換えることができる
ため、例えプログラム保存用メモリのプログラムを不正
にコピーしても、その暗号化されたプログラムに対する
暗号キーがわからない限りプログラムとして意味をなさ
ず、ソフトウェアの保護機能を高めることができる。
ア保護装置は、前記プログラム保存用メモリに書込みを
行うか否かの判断を行う書込み制御手段を備えたことを
特徴としたものであり、現在の暗号化されたプログラム
とは暗号キーが異なった暗号化された新しいプログラム
を、プログラム保存用メモリに書き換えることができる
ため、例えプログラム保存用メモリのプログラムを不正
にコピーしても、その暗号化されたプログラムに対する
暗号キーがわからない限りプログラムとして意味をなさ
ず、ソフトウェアの保護機能を高めることができる。
【0028】次に本発明の請求項15記載のソフトウェ
ア保護装置は、前記書込み制御手段が、年月日、時刻、
電源スイッチ、前記書込み制御手段を制御する外部スイ
ッチの少なくとも一つに同期して制御を行うことを特徴
としたものであり、書込むタイミングを制御することが
でき、プログラム保存用メモリの暗号化されたプログラ
ムの暗号キーと、前記暗号キー保持メモリが持つ暗号キ
ーを一致させることができる。
ア保護装置は、前記書込み制御手段が、年月日、時刻、
電源スイッチ、前記書込み制御手段を制御する外部スイ
ッチの少なくとも一つに同期して制御を行うことを特徴
としたものであり、書込むタイミングを制御することが
でき、プログラム保存用メモリの暗号化されたプログラ
ムの暗号キーと、前記暗号キー保持メモリが持つ暗号キ
ーを一致させることができる。
【0029】
(実施の形態1)以下、本発明の請求項1から3,5,
8〜13に記載された発明の実施の形態1について図1
を用いて説明する。図1は本発明の実施の形態1のソフ
トウェア保護装置の構成図である。図1において、プロ
グラム保存用メモリチップ10、CPUチップ11、プ
ログラマブル演算回路チップ12には、夫々その内部に
ソフトウェア保護手段25、ソフトウェア保護手段2
1、ソフトウェア保護手段23を備えている。又プログ
ラム保存用メモリチップ10、CPUチップ11、プロ
グラマブル演算回路チップ12はデータバス60を介し
て接続されている。図示しないアドレスバスもこれらの
ブロック間に接続されている。
8〜13に記載された発明の実施の形態1について図1
を用いて説明する。図1は本発明の実施の形態1のソフ
トウェア保護装置の構成図である。図1において、プロ
グラム保存用メモリチップ10、CPUチップ11、プ
ログラマブル演算回路チップ12には、夫々その内部に
ソフトウェア保護手段25、ソフトウェア保護手段2
1、ソフトウェア保護手段23を備えている。又プログ
ラム保存用メモリチップ10、CPUチップ11、プロ
グラマブル演算回路チップ12はデータバス60を介し
て接続されている。図示しないアドレスバスもこれらの
ブロック間に接続されている。
【0030】CPUチップ11内のソフトウェア保護手
段21は、図2に詳細なブロック図を示すように、デー
タバス60に接続されている暗証番号照合回路33、暗
証番号照合回路33に暗証番号を供給する暗証番号生成
回路34、暗証番号を保持する暗証番号保持メモリ35
を備えている。又暗証番号が一致するとき、CPUコア
20にデコードされたプログラムを供給するデコード回
路30、CPUコア20及びデコード回路30と接続さ
れ、CPUコア20の出力データを暗号化する第1の暗
号化手段である暗号化回路36、第1のデコード手段で
あるデコード回路30と暗号化回路36に暗号キーK2
を供給する暗号キー生成回路31、暗号キーを生成する
ための値、例えば暗号キーパラメータα2を保存する暗
号キー保持メモリ32を含んで構成されている。又暗号
キー生成回路31は外部入力端子38を備えている。外
部入力端子37は暗号キー保持メモリ消去回路39及び
暗証番号生成回路34に接続されている。暗証番号照合
回路33はメモリ24よりプログラムが読出されるとき
にそのアドレスを計数するカウンタを有しており、カウ
ンタの値が暗証番号生成回路34より入力されるアドレ
ス値と一致するときにそのデータをデータバスの出力と
比較するものである。
段21は、図2に詳細なブロック図を示すように、デー
タバス60に接続されている暗証番号照合回路33、暗
証番号照合回路33に暗証番号を供給する暗証番号生成
回路34、暗証番号を保持する暗証番号保持メモリ35
を備えている。又暗証番号が一致するとき、CPUコア
20にデコードされたプログラムを供給するデコード回
路30、CPUコア20及びデコード回路30と接続さ
れ、CPUコア20の出力データを暗号化する第1の暗
号化手段である暗号化回路36、第1のデコード手段で
あるデコード回路30と暗号化回路36に暗号キーK2
を供給する暗号キー生成回路31、暗号キーを生成する
ための値、例えば暗号キーパラメータα2を保存する暗
号キー保持メモリ32を含んで構成されている。又暗号
キー生成回路31は外部入力端子38を備えている。外
部入力端子37は暗号キー保持メモリ消去回路39及び
暗証番号生成回路34に接続されている。暗証番号照合
回路33はメモリ24よりプログラムが読出されるとき
にそのアドレスを計数するカウンタを有しており、カウ
ンタの値が暗証番号生成回路34より入力されるアドレ
ス値と一致するときにそのデータをデータバスの出力と
比較するものである。
【0031】又プログラマブル演算回路チップ12内の
ソフトウェア保護手段23は図3(a)に詳細なブロッ
ク図を示すように、データバス60により得られるプロ
グラムをデコードしてプログラマブル演算回路22にデ
コードされたプログラムを供給するデコード回路40、
デコード回路40に暗号キーK4を供給する暗号キー生
成回路41、暗号キーを生成するための値、例えば暗号
キーパラメータα4を保存する暗号キー保持メモリ42
を含んで構成されている。又暗号キー生成回路41は外
部入力端子43を備えている。
ソフトウェア保護手段23は図3(a)に詳細なブロッ
ク図を示すように、データバス60により得られるプロ
グラムをデコードしてプログラマブル演算回路22にデ
コードされたプログラムを供給するデコード回路40、
デコード回路40に暗号キーK4を供給する暗号キー生
成回路41、暗号キーを生成するための値、例えば暗号
キーパラメータα4を保存する暗号キー保持メモリ42
を含んで構成されている。又暗号キー生成回路41は外
部入力端子43を備えている。
【0032】又プログラム保存用メモリチップ10のソ
フトウェア保護手段25は図3(b)に示すように、デ
ータバス60に接続され、CPUからの命令をデコード
してプログラム保存用メモリ24に供給するデコード回
路50、デコード回路50に暗号キーK3を供給する暗
号キー生成回路51、暗号キーを生成するための値、例
えば暗号キーパラメータα3を保存する暗号キー保持メ
モリ52を含んで構成されている。又暗号キー生成回路
51は外部入力端子53を備えている。
フトウェア保護手段25は図3(b)に示すように、デ
ータバス60に接続され、CPUからの命令をデコード
してプログラム保存用メモリ24に供給するデコード回
路50、デコード回路50に暗号キーK3を供給する暗
号キー生成回路51、暗号キーを生成するための値、例
えば暗号キーパラメータα3を保存する暗号キー保持メ
モリ52を含んで構成されている。又暗号キー生成回路
51は外部入力端子53を備えている。
【0033】プログラム保存用メモリ24上には、時間
に依存する変数t1と暗号キーパラメータα1の関数で
表現される暗号化キーK1(t1,α1)によって暗号
化されたプログラムAがあり、プログラムAはデータバ
ス60を介してCPUチップ11の暗証番号照合回路3
3へ入力される。
に依存する変数t1と暗号キーパラメータα1の関数で
表現される暗号化キーK1(t1,α1)によって暗号
化されたプログラムAがあり、プログラムAはデータバ
ス60を介してCPUチップ11の暗証番号照合回路3
3へ入力される。
【0034】次に本実施の形態の動作について説明す
る。まずソフトウェア保持手段21の暗証番号照合回路
33では、プログラムAが持つ暗証番号と暗証番号生成
回路34から供給される暗証番号との照合を行う。暗証
番号は暗証番号メモリ35に保持されており、プログラ
ムAのあるアドレスのアドレス値Bとそのアドレス値B
に保持されたデータCによって構成される。こうすれば
暗証番号を独立してプログラムに含ませる必要はなくな
る。このアドレス値とそのデータは1つだけであっても
よく、又複数としてもよい。このアドレス値Bとデータ
Cとは暗証番号生成回路34を介して暗証番号照合回路
33に供給される。暗証番号照合回路33は図示しない
アドレスバスのアドレスをカウンタにより計数し、その
カウント値が与えられたアドレス値Bに一致するときに
データバス60上のデータC’と暗証番号生成回路から
供給されたアドレスBに対するデータCとを比較する。
これが一致する場合にはデコード回路30にプログラム
Aを供給する。この暗証番号の照合は、電源オン後、初
めて暗証番号照合回路33にプログラムAが入力された
時点から開始され、暗証番号が一致したとき初めてプロ
グラムAが先頭からデコード回路30へ供給される。複
数の暗証番号を有する場合には、その後も暗証番号の照
合を続け、暗証番号が不一致となったときプログラムA
の供給をやめる。暗証番号生成回路34では、アドレス
Bを初期値と時間に依存して変更し、Bの変化に応じて
プログラムAを参照してCを変更させることによって、
暗証番号を変化させる。もちろん年月日、電源オン・オ
フに応じて変化させてもよい。従って暗証番号を一致さ
せるには、CとC' を一致させる初期設定をあらかじめ
行っておく必要がある。
る。まずソフトウェア保持手段21の暗証番号照合回路
33では、プログラムAが持つ暗証番号と暗証番号生成
回路34から供給される暗証番号との照合を行う。暗証
番号は暗証番号メモリ35に保持されており、プログラ
ムAのあるアドレスのアドレス値Bとそのアドレス値B
に保持されたデータCによって構成される。こうすれば
暗証番号を独立してプログラムに含ませる必要はなくな
る。このアドレス値とそのデータは1つだけであっても
よく、又複数としてもよい。このアドレス値Bとデータ
Cとは暗証番号生成回路34を介して暗証番号照合回路
33に供給される。暗証番号照合回路33は図示しない
アドレスバスのアドレスをカウンタにより計数し、その
カウント値が与えられたアドレス値Bに一致するときに
データバス60上のデータC’と暗証番号生成回路から
供給されたアドレスBに対するデータCとを比較する。
これが一致する場合にはデコード回路30にプログラム
Aを供給する。この暗証番号の照合は、電源オン後、初
めて暗証番号照合回路33にプログラムAが入力された
時点から開始され、暗証番号が一致したとき初めてプロ
グラムAが先頭からデコード回路30へ供給される。複
数の暗証番号を有する場合には、その後も暗証番号の照
合を続け、暗証番号が不一致となったときプログラムA
の供給をやめる。暗証番号生成回路34では、アドレス
Bを初期値と時間に依存して変更し、Bの変化に応じて
プログラムAを参照してCを変更させることによって、
暗証番号を変化させる。もちろん年月日、電源オン・オ
フに応じて変化させてもよい。従って暗証番号を一致さ
せるには、CとC' を一致させる初期設定をあらかじめ
行っておく必要がある。
【0035】上記の例では、アドレスとそのアドレスに
対するデータとで構成された暗証番号を用いているが、
ある数値で構成された暗証番号を用いてもよい。この場
合、暗証番号はプログラムとは独立して持っておく必要
がある。この暗証番号を用いた場合の照合は、電源オン
後プログラムが読み出される前に行い、その後ある時間
毎に照合を行う。
対するデータとで構成された暗証番号を用いているが、
ある数値で構成された暗証番号を用いてもよい。この場
合、暗証番号はプログラムとは独立して持っておく必要
がある。この暗証番号を用いた場合の照合は、電源オン
後プログラムが読み出される前に行い、その後ある時間
毎に照合を行う。
【0036】又暗証番号照合回路33はアドレス値を計
数するカウンタを設けているが、アドレスバスに接続し
てそのアドレス値を直接デコードしてアドレス値Bと一
致する場合にそのデータを比較するようにしてもよい。
数するカウンタを設けているが、アドレスバスに接続し
てそのアドレス値を直接デコードしてアドレス値Bと一
致する場合にそのデータを比較するようにしてもよい。
【0037】暗号キー生成回路31では、時間に依存す
る変数t2と暗号キーパラメータから暗号キーK2(t
2,α2)を生成する。プログラムAを受け取ったデコ
ード回路30では、暗号キー生成回路31から供給され
る暗号キーK2(t2,α2)でプログラムAのデコー
ド処理を行い、デコードしたプログラムA' をCPUコ
ア20へ供給する。このときt1=t2且つα1=α2
であれば、暗号キーK2とK1は等しくなり、プログラ
ムAを正しくデコードすることができる。従ってプログ
ラムを正しくデコードするには、t1=t2且つα1=
α2となるような設定をあらかじめ行っておく必要があ
る。この暗号キーパラメータα2は暗号キー保持メモリ
32に保持しておく。もちろん暗号キーパラメータを複
数持ってもかまわない。t2は暗号キー生成回路31の
回路構成で決まる値であるので、t1=t2を実現する
には、t2の変化にt1を合わせておく必要がある。
る変数t2と暗号キーパラメータから暗号キーK2(t
2,α2)を生成する。プログラムAを受け取ったデコ
ード回路30では、暗号キー生成回路31から供給され
る暗号キーK2(t2,α2)でプログラムAのデコー
ド処理を行い、デコードしたプログラムA' をCPUコ
ア20へ供給する。このときt1=t2且つα1=α2
であれば、暗号キーK2とK1は等しくなり、プログラ
ムAを正しくデコードすることができる。従ってプログ
ラムを正しくデコードするには、t1=t2且つα1=
α2となるような設定をあらかじめ行っておく必要があ
る。この暗号キーパラメータα2は暗号キー保持メモリ
32に保持しておく。もちろん暗号キーパラメータを複
数持ってもかまわない。t2は暗号キー生成回路31の
回路構成で決まる値であるので、t1=t2を実現する
には、t2の変化にt1を合わせておく必要がある。
【0038】このt2は、ある周期で変化する変数であ
る。例えばプログラムAの先頭がデコード回路30に到
達した瞬間を初期値として、タイマー等を用いてt2を
変化させる。
る。例えばプログラムAの先頭がデコード回路30に到
達した瞬間を初期値として、タイマー等を用いてt2を
変化させる。
【0039】プログラムA' を受け取ったCPUコア2
0では、プログラムA' が正しくデコードされていれ
ば、CPUコア20は正常に動作する。CPUコア20
はCPU命令Dを暗号化回路36へ供給する。
0では、プログラムA' が正しくデコードされていれ
ば、CPUコア20は正常に動作する。CPUコア20
はCPU命令Dを暗号化回路36へ供給する。
【0040】暗号化回路36では、暗号キー生成回路3
1から供給される暗号キーK2(t2,α2)でCPU
命令DをCPU命令D' に暗号化する。この暗号化され
たCPU命令D' をデータバス60へ供給する。
1から供給される暗号キーK2(t2,α2)でCPU
命令DをCPU命令D' に暗号化する。この暗号化され
たCPU命令D' をデータバス60へ供給する。
【0041】プログラム保存用メモリ10のデコード回
路50では、CPU命令D' を受け取り、暗号キー生成
回路51から供給される暗号キーK3(t3,α3)で
CPU命令D' のデコード処理を行い、デコードされた
CPU命令D''をプログラム保存用メモリ24へ供給す
る。
路50では、CPU命令D' を受け取り、暗号キー生成
回路51から供給される暗号キーK3(t3,α3)で
CPU命令D' のデコード処理を行い、デコードされた
CPU命令D''をプログラム保存用メモリ24へ供給す
る。
【0042】暗号キー生成回路51では、暗号キーK3
(t3,α3)を生成する。この時t2=t3且つα2
=α3であればK2=K3となり、CPU命令D' を正
しくデコードできる。従ってCPU命令D' を正しくデ
コードするには、t2=t3且つα2=α3となるよう
な設定をあらかじめ行っておく必要がある。この暗号キ
ーパラメータα3は暗号キー保持メモリ52に保持して
おく。t3はt2と同様の変数であるが、暗号キー生成
回路51の回路をt2=t3となるように、暗号化回路
36からデコード回路50の遅延を補償してt3を変化
させるように構成しておく。
(t3,α3)を生成する。この時t2=t3且つα2
=α3であればK2=K3となり、CPU命令D' を正
しくデコードできる。従ってCPU命令D' を正しくデ
コードするには、t2=t3且つα2=α3となるよう
な設定をあらかじめ行っておく必要がある。この暗号キ
ーパラメータα3は暗号キー保持メモリ52に保持して
おく。t3はt2と同様の変数であるが、暗号キー生成
回路51の回路をt2=t3となるように、暗号化回路
36からデコード回路50の遅延を補償してt3を変化
させるように構成しておく。
【0043】一方プログラマブル演算回路チップ12に
おいて、暗号キー生成回路41では、時間に依存する変
数t4と暗号キーパラメータα4から暗号キーK4(t
4,α4)を生成する。デコード回路40では、プログ
ラムAを受け取り、暗号キー生成回路41から供給され
る暗号キーK4(t4,α4)でプログラムAのデコー
ド処理を行い、デコードプログラムA''をプログラマブ
ル演算回路22へ供給する。このときt1=t4且つα
1=α4であればK1=K4となり、プログラムAを正
しくデコードできる。従ってプログラムAを正しくデコ
ードするには、t1=t4且つα1=α4となるような
設定をあらかじめ行っておく必要がある。この暗号キー
パラメータα4は暗号キー保持メモリ42に保持してお
く。
おいて、暗号キー生成回路41では、時間に依存する変
数t4と暗号キーパラメータα4から暗号キーK4(t
4,α4)を生成する。デコード回路40では、プログ
ラムAを受け取り、暗号キー生成回路41から供給され
る暗号キーK4(t4,α4)でプログラムAのデコー
ド処理を行い、デコードプログラムA''をプログラマブ
ル演算回路22へ供給する。このときt1=t4且つα
1=α4であればK1=K4となり、プログラムAを正
しくデコードできる。従ってプログラムAを正しくデコ
ードするには、t1=t4且つα1=α4となるような
設定をあらかじめ行っておく必要がある。この暗号キー
パラメータα4は暗号キー保持メモリ42に保持してお
く。
【0044】このt4はt2と同様に、ある周期で変化
する変数である。例えばプログラムAの先頭がデコード
回路40に到達した瞬間を初期値として、タイマー等を
用いてt4を変化させる。
する変数である。例えばプログラムAの先頭がデコード
回路40に到達した瞬間を初期値として、タイマー等を
用いてt4を変化させる。
【0045】又CPU命令Dにより制御される回路を持
つ信号処理装置にCPU命令Dを入力するためには、ソ
フトウェア保護手段25と同様の回路をその装置内部に
持てばよい。
つ信号処理装置にCPU命令Dを入力するためには、ソ
フトウェア保護手段25と同様の回路をその装置内部に
持てばよい。
【0046】次に、上記の動作を行うための初期設定方
法について説明する。まず、暗号化キーK1(t1,α
1)で暗号化されたプログラムAをプログラム保存用メ
モリ24に記憶させる。次に、プログラム保存用メモリ
24のアドレス値BとBに対するデータ値Cを入力端子
37から暗証番号生成回路34へ入力し、暗証番号保持
メモリ35に記憶させる。このとき暗号キー保持メモリ
消去回路39によって、暗号キー保持メモリ32にそれ
まで保存されていたキーパラメータが消去される。暗証
番号生成回路34ではBを初期値と時間に応じて変化さ
せるが、この初期値はこのとき入力したBを用いても、
Bに依存しない別の値を入力端子37から入力させて用
いてもよい。最後に、暗号キーパラメータα1を入力端
子38,43,53から夫々暗号キー生成回路31,4
1,51へ入力し、暗号キー保持メモリ32,42,5
2に記憶させる。当然以上の設定は、暗号キーパラメー
タα1を知る者でしかできない。
法について説明する。まず、暗号化キーK1(t1,α
1)で暗号化されたプログラムAをプログラム保存用メ
モリ24に記憶させる。次に、プログラム保存用メモリ
24のアドレス値BとBに対するデータ値Cを入力端子
37から暗証番号生成回路34へ入力し、暗証番号保持
メモリ35に記憶させる。このとき暗号キー保持メモリ
消去回路39によって、暗号キー保持メモリ32にそれ
まで保存されていたキーパラメータが消去される。暗証
番号生成回路34ではBを初期値と時間に応じて変化さ
せるが、この初期値はこのとき入力したBを用いても、
Bに依存しない別の値を入力端子37から入力させて用
いてもよい。最後に、暗号キーパラメータα1を入力端
子38,43,53から夫々暗号キー生成回路31,4
1,51へ入力し、暗号キー保持メモリ32,42,5
2に記憶させる。当然以上の設定は、暗号キーパラメー
タα1を知る者でしかできない。
【0047】暗号キーの生成タイミングの決め方、即ち
t2 の変化のさせ方は、上記の実施の形態以外にも考え
られる。上記の実施の形態は、プログラムAの先頭がデ
コード回路30に到達した瞬間を開始時点として、タイ
マーを用いてある時間周期でt2を変化させているが、
電源スイッチ等を利用した生成タイミングを規定する信
号によって開始時点を決め、カウンターを用いてある設
定周期でt2 を変化させてもよい。又プログラム保存用
メモリのアドレス値の変化毎に変化させてもよい。この
ときt3,t4も同様の方法で夫々開始時点を定め、t
2と同じ周期で変化させる必要がある。従って、初期設
定で、プログラムAの暗号化キーはこれらに対応させて
おくと共に、暗号化キー生成回路の構成もこれらに対応
しておく必要がある。
t2 の変化のさせ方は、上記の実施の形態以外にも考え
られる。上記の実施の形態は、プログラムAの先頭がデ
コード回路30に到達した瞬間を開始時点として、タイ
マーを用いてある時間周期でt2を変化させているが、
電源スイッチ等を利用した生成タイミングを規定する信
号によって開始時点を決め、カウンターを用いてある設
定周期でt2 を変化させてもよい。又プログラム保存用
メモリのアドレス値の変化毎に変化させてもよい。この
ときt3,t4も同様の方法で夫々開始時点を定め、t
2と同じ周期で変化させる必要がある。従って、初期設
定で、プログラムAの暗号化キーはこれらに対応させて
おくと共に、暗号化キー生成回路の構成もこれらに対応
しておく必要がある。
【0048】又、暗号キーの生成方法は、上記以外にも
考えられる。暗号キーを生成する関数をK2(t2,α
2)=f(K2(t2―d,α2))とした場合、暗号
キー保持メモリ32は暗号キーパラメータα2のかわり
に、K2(t2―d,α2)を保持してもよい。ここ
で、dは任意の時間であり、fは任意の関数である。K
2(t2―d,α2)は、K2(t2,α2)に対して
時間dだけ前の暗号キーである。この時暗号キー生成回
路41,51についても暗号キー生成回路と同じ生成関
数を用いて暗号キーK3,K4を生成する。
考えられる。暗号キーを生成する関数をK2(t2,α
2)=f(K2(t2―d,α2))とした場合、暗号
キー保持メモリ32は暗号キーパラメータα2のかわり
に、K2(t2―d,α2)を保持してもよい。ここ
で、dは任意の時間であり、fは任意の関数である。K
2(t2―d,α2)は、K2(t2,α2)に対して
時間dだけ前の暗号キーである。この時暗号キー生成回
路41,51についても暗号キー生成回路と同じ生成関
数を用いて暗号キーK3,K4を生成する。
【0049】(実施の形態2)以下、本発明の請求項4
と6と7に記載された発明の実施の形態2について図4
を用いて説明する。図4は本発明の実施の形態2のCP
Uチップ内のソフトウェア保護手段21の構成を示すブ
ロック図である。図1と図4の同一の機能部分には同じ
符号を付してある。図4における構成は、実施の形態1
のCPUチップ内のソフトウェア保護手段21の構成を
以下のように変化させたものである。
と6と7に記載された発明の実施の形態2について図4
を用いて説明する。図4は本発明の実施の形態2のCP
Uチップ内のソフトウェア保護手段21の構成を示すブ
ロック図である。図1と図4の同一の機能部分には同じ
符号を付してある。図4における構成は、実施の形態1
のCPUチップ内のソフトウェア保護手段21の構成を
以下のように変化させたものである。
【0050】実施の形態1ではデコード回路30と暗号
化回路36に供給する暗号キーを暗号キー生成回路31
で生成していた。本実施の形態ではデコード回路30に
供給する暗号キーを第6の暗号キー生成手段である暗号
キー生成回路90で、暗号化回路36に供給する暗号キ
ーを第5の暗号キー生成手段である暗号キー生成回路9
1で別々に生成している。又暗号キー生成回路90と9
1は外部入力端子38を備えている。更に、CPUの命
令が分岐命令であるかどうかの判断を行い、分岐命令の
情報を抽出する分岐命令抽出回路92と、分岐命令抽出
回路92から供給される情報を基に暗号キー生成に用い
る変数の修正値を生成する暗号キー生成変数修正回路9
3とを有した構成となっている。
化回路36に供給する暗号キーを暗号キー生成回路31
で生成していた。本実施の形態ではデコード回路30に
供給する暗号キーを第6の暗号キー生成手段である暗号
キー生成回路90で、暗号化回路36に供給する暗号キ
ーを第5の暗号キー生成手段である暗号キー生成回路9
1で別々に生成している。又暗号キー生成回路90と9
1は外部入力端子38を備えている。更に、CPUの命
令が分岐命令であるかどうかの判断を行い、分岐命令の
情報を抽出する分岐命令抽出回路92と、分岐命令抽出
回路92から供給される情報を基に暗号キー生成に用い
る変数の修正値を生成する暗号キー生成変数修正回路9
3とを有した構成となっている。
【0051】次に本実施形態の動作について説明する。
まずソフトウェア保持手段21の暗証番号照合回路33
では、プログラムAが持つ暗証番号と暗証番号生成回路
34から供給される暗証番号との照合を行う。暗証番号
は暗証番号メモリ35に保持されており、プログラムA
のあるアドレスのアドレス値Bとそのアドレス値Bに保
持されたデータCによって構成される。こうすれば暗証
番号を独立してプログラムに含ませる必要はなくなる。
このアドレス値とそのデータは1つだけであってもよ
く、又複数としてもよい。このアドレス値BとデータC
とは暗証番号生成回路34を介して暗証番号照合回路3
3に供給される。暗証番号照合回路33は図示しないア
ドレスバスのアドレスをカウンタにより計数し、そのカ
ウント値が与えられたアドレス値Bに一致するときにデ
ータバス60上のデータC’と暗証番号生成回路から供
給されたアドレスBに対するデータCとを比較する。こ
れが一致する場合にはデコード回路30にプログラムA
を供給する。この暗証番号の照合は、電源オン後、初め
て暗証番号照合回路33にプログラムAが入力された時
点から開始され、暗証番号が一致したとき初めてプログ
ラムAが先頭からデコード回路30へ供給される。複数
の暗証番号を有する場合には、その後も暗証番号の照合
を続け、暗証番号が不一致となったときプログラムAの
供給をやめる。暗証番号生成回路34では、アドレスB
を初期値と時間に依存して変更し、Bの変化に応じてプ
ログラムAを参照してCを変更させることによって、暗
証番号を変化させる。もちろん年月日、電源オン・オフ
に応じて変化させてもよい。従って暗証番号を一致させ
るには、CとC’を一致させる初期設定をあらかじめ行
っておく必要がある。
まずソフトウェア保持手段21の暗証番号照合回路33
では、プログラムAが持つ暗証番号と暗証番号生成回路
34から供給される暗証番号との照合を行う。暗証番号
は暗証番号メモリ35に保持されており、プログラムA
のあるアドレスのアドレス値Bとそのアドレス値Bに保
持されたデータCによって構成される。こうすれば暗証
番号を独立してプログラムに含ませる必要はなくなる。
このアドレス値とそのデータは1つだけであってもよ
く、又複数としてもよい。このアドレス値BとデータC
とは暗証番号生成回路34を介して暗証番号照合回路3
3に供給される。暗証番号照合回路33は図示しないア
ドレスバスのアドレスをカウンタにより計数し、そのカ
ウント値が与えられたアドレス値Bに一致するときにデ
ータバス60上のデータC’と暗証番号生成回路から供
給されたアドレスBに対するデータCとを比較する。こ
れが一致する場合にはデコード回路30にプログラムA
を供給する。この暗証番号の照合は、電源オン後、初め
て暗証番号照合回路33にプログラムAが入力された時
点から開始され、暗証番号が一致したとき初めてプログ
ラムAが先頭からデコード回路30へ供給される。複数
の暗証番号を有する場合には、その後も暗証番号の照合
を続け、暗証番号が不一致となったときプログラムAの
供給をやめる。暗証番号生成回路34では、アドレスB
を初期値と時間に依存して変更し、Bの変化に応じてプ
ログラムAを参照してCを変更させることによって、暗
証番号を変化させる。もちろん年月日、電源オン・オフ
に応じて変化させてもよい。従って暗証番号を一致させ
るには、CとC’を一致させる初期設定をあらかじめ行
っておく必要がある。
【0052】上記の例では、アドレスとそのアドレスに
対するデータとで構成された暗証番号を用いているが、
ある数値で構成された暗証番号を用いてもよい。この場
合、暗証番号はプログラムとは独立して持っておく必要
がある。この暗証番号を用いた場合の照合は、電源オン
後プログラムが読み出される前に行い、その後ある時間
毎に照合を行う。
対するデータとで構成された暗証番号を用いているが、
ある数値で構成された暗証番号を用いてもよい。この場
合、暗証番号はプログラムとは独立して持っておく必要
がある。この暗証番号を用いた場合の照合は、電源オン
後プログラムが読み出される前に行い、その後ある時間
毎に照合を行う。
【0053】又暗証番号照合回路33はアドレス値を計
数するカウンタを設けているが、アドレスバスに接続し
てそのアドレス値を直接デコードしてアドレス値Bと一
致する場合にそのデータを比較するようにしてもよい。
以上までは実施の形態1と同様である。
数するカウンタを設けているが、アドレスバスに接続し
てそのアドレス値を直接デコードしてアドレス値Bと一
致する場合にそのデータを比較するようにしてもよい。
以上までは実施の形態1と同様である。
【0054】暗号キー生成回路90では、時間に依存す
る変数t2と暗号キーパラメータから暗号キーK2(t
2,α2)を生成する。プログラムAを受け取ったデコ
ード回路30では、暗号キー生成回路90から供給され
る暗号キーK2(t2,α2)でプログラムAのデコー
ド処理を行い、デコードしたプログラムA’をCPUコ
ア20へ供給する。この時t1=t2且つα1=α2で
あれば、暗号キーK2とK1は等しくなり、プログラム
Aを正しくデコードすることができる。従ってプログラ
ムを正しくデコードするには、t1=t2且つα1=α
2となるような設定をあらかじめ行っておく必要があ
る。この暗号キーパラメータα2は暗号キー保持メモリ
32に保持しておく。もちろん、暗号キーパラメータを
複数持ってもかまわない。t2は暗号キー生成回路90
の回路構成で決まる値であるので、t1=t2を実現す
るには、t2の変化にt1を合わせておく必要がある。
このt2は、ある周期で変化する変数である。例えばプ
ログラムAの先頭がデコード回路30に到達した瞬間を
初期値として、タイマー等を用いてt2 を変化させる。
る変数t2と暗号キーパラメータから暗号キーK2(t
2,α2)を生成する。プログラムAを受け取ったデコ
ード回路30では、暗号キー生成回路90から供給され
る暗号キーK2(t2,α2)でプログラムAのデコー
ド処理を行い、デコードしたプログラムA’をCPUコ
ア20へ供給する。この時t1=t2且つα1=α2で
あれば、暗号キーK2とK1は等しくなり、プログラム
Aを正しくデコードすることができる。従ってプログラ
ムを正しくデコードするには、t1=t2且つα1=α
2となるような設定をあらかじめ行っておく必要があ
る。この暗号キーパラメータα2は暗号キー保持メモリ
32に保持しておく。もちろん、暗号キーパラメータを
複数持ってもかまわない。t2は暗号キー生成回路90
の回路構成で決まる値であるので、t1=t2を実現す
るには、t2の変化にt1を合わせておく必要がある。
このt2は、ある周期で変化する変数である。例えばプ
ログラムAの先頭がデコード回路30に到達した瞬間を
初期値として、タイマー等を用いてt2 を変化させる。
【0055】ここで、プログラムA内のCPU命令に分
岐命令があった場合を考える。実施の形態1の構成で
は、タイマー等を用いて変数t2をある周期で変化させ
ている。この構成であると、分岐命令等があってt1の
周期性が崩れた場合にt1=t2を満たすt2を生成す
ることが困難である。
岐命令があった場合を考える。実施の形態1の構成で
は、タイマー等を用いて変数t2をある周期で変化させ
ている。この構成であると、分岐命令等があってt1の
周期性が崩れた場合にt1=t2を満たすt2を生成す
ることが困難である。
【0056】実施の形態2では、CPU命令に分岐命令
があって、t1の周期性が崩れた場合にもt1=t2を
満たすt2を生成できる構成となっている。以下にCP
U命令に分岐命令を含んだプログラムAをデコードする
際の動作を説明する。
があって、t1の周期性が崩れた場合にもt1=t2を
満たすt2を生成できる構成となっている。以下にCP
U命令に分岐命令を含んだプログラムAをデコードする
際の動作を説明する。
【0057】分岐命令抽出回路92はデコード回路30
からデコードされたプログラムA’を受け取り、常に分
岐命令であるかどうかの判断を行っている。分岐命令抽
出回路92で分岐命令であると判断されると、暗号キー
生成変数修正回路93に分岐情報が供給される。この分
岐情報は、例えば分岐先に対する相対アドレス値であ
る。分岐情報を受け取った暗号キー生成変数修正回路9
3では、この分岐命令の次の命令に対する暗号キーを生
成するために、変数t2の修正値を暗号キー生成回路9
0へ供給する。尚分岐情報を受け取らなかった場合、暗
号キー生成変数修正回路93は暗号キー生成回路90へ
0を供給する。暗号キー生成回路90では、変数t2の
修正値を用いて暗号キーを生成する。
からデコードされたプログラムA’を受け取り、常に分
岐命令であるかどうかの判断を行っている。分岐命令抽
出回路92で分岐命令であると判断されると、暗号キー
生成変数修正回路93に分岐情報が供給される。この分
岐情報は、例えば分岐先に対する相対アドレス値であ
る。分岐情報を受け取った暗号キー生成変数修正回路9
3では、この分岐命令の次の命令に対する暗号キーを生
成するために、変数t2の修正値を暗号キー生成回路9
0へ供給する。尚分岐情報を受け取らなかった場合、暗
号キー生成変数修正回路93は暗号キー生成回路90へ
0を供給する。暗号キー生成回路90では、変数t2の
修正値を用いて暗号キーを生成する。
【0058】ここで、分岐情報を基に変数t2を修正す
る方法について説明する。デコード回路30へ暗号キー
K1(tf1,α1)で暗号化された分岐命令Fが入力
され、デコード回路30が暗号キーK2(tf2,α
2)でデコードしたとする。当然、tf1=tf2且つ
α1=α2で、K1とK2は同じ入出力特性を持った関
数である。又、分岐先には暗号キーK1(tn1,α
1)で暗号化された命令Nが存在するとする。デコード
回路30でデコードされた分岐命令F’は分岐命令抽出
回路92へ入力される。尚この時、分岐命令抽出回路9
2は、図示していないアドレスバスから、分岐命令Fに
対するアドレス値Gを受け取っている。分岐命令抽出回
路92は分岐命令F’が分岐命令であると判断し、分岐
命令F’が持つ情報とアドレス値Gから相対アドレス値
Hを計算して、相対アドレス値Hを暗号キー生成変数修
正回路93へ出力する。暗号キー生成変数修正回路93
では、相対アドレス値Hを基に変数t2の修正値Iを生
成する。暗号キー生成回路90では、この修正値Iを受
け取り、暗号キーK2(tf2+I,α2)を作成す
る。
る方法について説明する。デコード回路30へ暗号キー
K1(tf1,α1)で暗号化された分岐命令Fが入力
され、デコード回路30が暗号キーK2(tf2,α
2)でデコードしたとする。当然、tf1=tf2且つ
α1=α2で、K1とK2は同じ入出力特性を持った関
数である。又、分岐先には暗号キーK1(tn1,α
1)で暗号化された命令Nが存在するとする。デコード
回路30でデコードされた分岐命令F’は分岐命令抽出
回路92へ入力される。尚この時、分岐命令抽出回路9
2は、図示していないアドレスバスから、分岐命令Fに
対するアドレス値Gを受け取っている。分岐命令抽出回
路92は分岐命令F’が分岐命令であると判断し、分岐
命令F’が持つ情報とアドレス値Gから相対アドレス値
Hを計算して、相対アドレス値Hを暗号キー生成変数修
正回路93へ出力する。暗号キー生成変数修正回路93
では、相対アドレス値Hを基に変数t2の修正値Iを生
成する。暗号キー生成回路90では、この修正値Iを受
け取り、暗号キーK2(tf2+I,α2)を作成す
る。
【0059】ここで、アドレス値の変化量に対する変数
t1の変化量が一意に決まる必要がある。暗号キー生成
変数修正回路93における変数t2の修正値Iの生成方
法が、このアドレス値の変化量と変数t1の変化量の関
係を満たしておけば、I=tn1−tf1を満たすIを
生成できる。そして、K2(tf2+I,α2)=K1
(tn1,α1)を満たすことができ、命令Nを正しく
デコードできる。このようにプログラムに分岐命令が存
在した場合でも正しいデコードが可能となる。
t1の変化量が一意に決まる必要がある。暗号キー生成
変数修正回路93における変数t2の修正値Iの生成方
法が、このアドレス値の変化量と変数t1の変化量の関
係を満たしておけば、I=tn1−tf1を満たすIを
生成できる。そして、K2(tf2+I,α2)=K1
(tn1,α1)を満たすことができ、命令Nを正しく
デコードできる。このようにプログラムに分岐命令が存
在した場合でも正しいデコードが可能となる。
【0060】上記は分岐命令抽出回路92の処理を分岐
命令を基に行ったものであるが、当然アドレス値を基に
して処理を行う場合も考えられる。以下にアドレス値を
基にして処理を行う場合について説明する。
命令を基に行ったものであるが、当然アドレス値を基に
して処理を行う場合も考えられる。以下にアドレス値を
基にして処理を行う場合について説明する。
【0061】分岐命令抽出回路92は図示されていない
アドレスバスから、CPUから出力されるメモリのアド
レス値を受け取り、そのアドレス値を基に分岐命令であ
るかどうかの判断を行っている。分岐命令抽出回路92
で分岐命令であると判断されると、暗号キー生成変数修
正回路93に分岐情報が供給される。この分岐情報は、
例えば分岐先に対する相対アドレス値である。分岐情報
を受け取った暗号キー生成変数修正回路93では、この
分岐命令の次の命令に対する暗号キーを生成するため
に、変数t2の修正値を暗号キー生成回路90へ供給す
る。尚分岐情報を受け取らなかった場合、暗号キー生成
変数修正回路93は暗号キー生成回路90へ0を供給す
る。暗号キー生成回路90では、変数t2の修正値を用
いて暗号キーを生成する。
アドレスバスから、CPUから出力されるメモリのアド
レス値を受け取り、そのアドレス値を基に分岐命令であ
るかどうかの判断を行っている。分岐命令抽出回路92
で分岐命令であると判断されると、暗号キー生成変数修
正回路93に分岐情報が供給される。この分岐情報は、
例えば分岐先に対する相対アドレス値である。分岐情報
を受け取った暗号キー生成変数修正回路93では、この
分岐命令の次の命令に対する暗号キーを生成するため
に、変数t2の修正値を暗号キー生成回路90へ供給す
る。尚分岐情報を受け取らなかった場合、暗号キー生成
変数修正回路93は暗号キー生成回路90へ0を供給す
る。暗号キー生成回路90では、変数t2の修正値を用
いて暗号キーを生成する。
【0062】さらに、分岐情報を基に変数t2を修正す
る方法について説明する。デコード回路30へ暗号キー
K1(tf1,α1)で暗号化された分岐命令Fが入力
され、デコード回路30が暗号キーK2(tf2,α
2)でデコードしたとする。当然、tf1=tf2且つ
α1=α2で、K1とK2は同じ入出力特性を持った関
数である。又、分岐先には暗号キーK1(tn1,α
1)で暗号化された命令Nが存在するとする。デコード
回路30でデコードされた分岐命令F’はCPUコア2
0へ入力され、CPUコア20からCPU命令と分岐先
のアドレス値Jが出力される時、分岐命令抽出回路92
は、図示していないアドレスバスから、分岐先のアドレ
ス値Jを受け取る。分岐命令抽出回路92はすでに受け
取っている分岐命令Fのアドレス値Gと分岐先のアドレ
ス値Jの差分をとって、その差分の絶対値がある所定の
値より大きければ、分岐命令F’が分岐命令であると判
断し、分岐命令Fのアドレス値Gと分岐先のアドレス値
Jから相対アドレス値Hを計算して、相対アドレス値H
を暗号キー生成変数修正回路93へ出力する。暗号キー
生成変数修正回路93では、相対アドレス値Hを基に変
数t2の修正値Iを生成する。暗号キー生成回路90で
は、この修正値Iを受け取り、暗号キーK2(tf2+
I,α2)を作成する。
る方法について説明する。デコード回路30へ暗号キー
K1(tf1,α1)で暗号化された分岐命令Fが入力
され、デコード回路30が暗号キーK2(tf2,α
2)でデコードしたとする。当然、tf1=tf2且つ
α1=α2で、K1とK2は同じ入出力特性を持った関
数である。又、分岐先には暗号キーK1(tn1,α
1)で暗号化された命令Nが存在するとする。デコード
回路30でデコードされた分岐命令F’はCPUコア2
0へ入力され、CPUコア20からCPU命令と分岐先
のアドレス値Jが出力される時、分岐命令抽出回路92
は、図示していないアドレスバスから、分岐先のアドレ
ス値Jを受け取る。分岐命令抽出回路92はすでに受け
取っている分岐命令Fのアドレス値Gと分岐先のアドレ
ス値Jの差分をとって、その差分の絶対値がある所定の
値より大きければ、分岐命令F’が分岐命令であると判
断し、分岐命令Fのアドレス値Gと分岐先のアドレス値
Jから相対アドレス値Hを計算して、相対アドレス値H
を暗号キー生成変数修正回路93へ出力する。暗号キー
生成変数修正回路93では、相対アドレス値Hを基に変
数t2の修正値Iを生成する。暗号キー生成回路90で
は、この修正値Iを受け取り、暗号キーK2(tf2+
I,α2)を作成する。
【0063】ここで、アドレス値の変化量に対する変数
t1の変化量が一意に決まる必要がある。暗号キー生成
変数修正回路93における変数t2の修正値Iの生成方
法が、このアドレス値の変化量と変数t1の変化量の関
係を満たしておけば、I=tn1−tf1を満たすIを
生成できる。そして、K2(tf2+I,α2)=K1
(tn1,α1)を満たすことができ、命令Nを正しく
デコードできる。このように分岐命令抽出回路92にお
いて、アドレス値を基にして処理を行った場合でも正し
いデコードが可能となる。
t1の変化量が一意に決まる必要がある。暗号キー生成
変数修正回路93における変数t2の修正値Iの生成方
法が、このアドレス値の変化量と変数t1の変化量の関
係を満たしておけば、I=tn1−tf1を満たすIを
生成できる。そして、K2(tf2+I,α2)=K1
(tn1,α1)を満たすことができ、命令Nを正しく
デコードできる。このように分岐命令抽出回路92にお
いて、アドレス値を基にして処理を行った場合でも正し
いデコードが可能となる。
【0064】プログラムA’を受け取ったCPUコア2
0では、プログラムA’が正しくデコードされていれ
ば、CPUコア20は正常に動作する。CPUコア20
はCPU命令Dを暗号化回路36へ供給する。暗号化回
路36では、暗号キー生成回路91から供給される暗号
キーK2(t2,α2)でCPU命令DをCPU命令
D' に暗号化する。この暗号化されたCPU命令D' を
データバス60へ供給する。暗号キー生成回路91で用
いられるt2は、プログラム内の分岐命令の存在によっ
て変化しない。
0では、プログラムA’が正しくデコードされていれ
ば、CPUコア20は正常に動作する。CPUコア20
はCPU命令Dを暗号化回路36へ供給する。暗号化回
路36では、暗号キー生成回路91から供給される暗号
キーK2(t2,α2)でCPU命令DをCPU命令
D' に暗号化する。この暗号化されたCPU命令D' を
データバス60へ供給する。暗号キー生成回路91で用
いられるt2は、プログラム内の分岐命令の存在によっ
て変化しない。
【0065】プログラム保存用メモリチップ10のデコ
ード回路50では、CPU命令D’を受け取り、暗号キ
ー生成回路51から供給される暗号キーK3(t3,α
3)でCPU命令D’のデコード処理を行い、デコード
されたCPU命令D''をプログラム保存用メモリ24へ
供給する。
ード回路50では、CPU命令D’を受け取り、暗号キ
ー生成回路51から供給される暗号キーK3(t3,α
3)でCPU命令D’のデコード処理を行い、デコード
されたCPU命令D''をプログラム保存用メモリ24へ
供給する。
【0066】暗号キー生成回路51では、暗号キーK3
(t3,α3)を生成する。この時t2=t3且つα2
=α3であればK2=K3となり、CPU命令D’を正
しくデコードできる。従ってCPU命令D’を正しくデ
コードするには、t2=t3且つα2=α3となるよう
な設定をあらかじめ行っておく必要がある。この暗号キ
ーパラメータα3は暗号キー保持メモリ52に保持して
おく。t3はt2と同様の変数であるが、暗号キー生成
回路51の回路をt2=t3となるように、暗号化回路
36からデコード回路50の遅延を補償してt3を変化
させるように構成しておく。
(t3,α3)を生成する。この時t2=t3且つα2
=α3であればK2=K3となり、CPU命令D’を正
しくデコードできる。従ってCPU命令D’を正しくデ
コードするには、t2=t3且つα2=α3となるよう
な設定をあらかじめ行っておく必要がある。この暗号キ
ーパラメータα3は暗号キー保持メモリ52に保持して
おく。t3はt2と同様の変数であるが、暗号キー生成
回路51の回路をt2=t3となるように、暗号化回路
36からデコード回路50の遅延を補償してt3を変化
させるように構成しておく。
【0067】一方プログラマブル演算回路チップ12に
おいて、暗号キー生成回路41では、時間に依存する変
数t4と暗号キーパラメータα4から暗号キーK4(t
4,α4)を生成する。デコード回路40では、プログ
ラムAを受け取り、暗号キー生成回路41から供給され
る暗号キーK4(t4,α4)でプログラムAのデコー
ド処理を行い、デコードプログラムA''をプログラマブ
ル演算回路22へ供給する。このときt1=t4且つα
1=α4であればK1=K4となり、プログラムAを正
しくデコードできる。従って、プログラムAを正しくデ
コードするには、t1=t4且つα1=α4となるよう
な設定をあらかじめ行っておく必要がある。この暗号キ
ーパラメータα4は暗号キー保持メモリ42に保持して
おく。
おいて、暗号キー生成回路41では、時間に依存する変
数t4と暗号キーパラメータα4から暗号キーK4(t
4,α4)を生成する。デコード回路40では、プログ
ラムAを受け取り、暗号キー生成回路41から供給され
る暗号キーK4(t4,α4)でプログラムAのデコー
ド処理を行い、デコードプログラムA''をプログラマブ
ル演算回路22へ供給する。このときt1=t4且つα
1=α4であればK1=K4となり、プログラムAを正
しくデコードできる。従って、プログラムAを正しくデ
コードするには、t1=t4且つα1=α4となるよう
な設定をあらかじめ行っておく必要がある。この暗号キ
ーパラメータα4は暗号キー保持メモリ42に保持して
おく。
【0068】このt4はt2と同様に、ある周期で変化
する変数である。例えばプログラムAの先頭がデコード
回路40に到達した瞬間を初期値として、タイマー等を
用いてt4を変化させる。
する変数である。例えばプログラムAの先頭がデコード
回路40に到達した瞬間を初期値として、タイマー等を
用いてt4を変化させる。
【0069】又CPU命令Dにより制御される回路を持
つ信号処理装置にCPU命令Dを入力するためには、ソ
フトウェア保護手段25と同様の回路をその装置内部に
持てばよい。
つ信号処理装置にCPU命令Dを入力するためには、ソ
フトウェア保護手段25と同様の回路をその装置内部に
持てばよい。
【0070】上記の動作を行うための初期設定方法、な
らびに暗号キーの生成タイミングの決め方は実施の形態
1と同様である。
らびに暗号キーの生成タイミングの決め方は実施の形態
1と同様である。
【0071】(実施の形態3)以下、本発明の請求項4
と6と7に記載された発明の実施の形態3について図5
を用いて説明する。図5は本発明の実施の形態3のCP
Uチップ内のソフトウェア保護手段21の構成を示すブ
ロック図である。図4と図5の同一の機能部分には同じ
符号を付してある。図5における構成は、実施の形態3
のCPUチップ内のソフトウェア保護手段21の構成を
以下のように変化させたものである。
と6と7に記載された発明の実施の形態3について図5
を用いて説明する。図5は本発明の実施の形態3のCP
Uチップ内のソフトウェア保護手段21の構成を示すブ
ロック図である。図4と図5の同一の機能部分には同じ
符号を付してある。図5における構成は、実施の形態3
のCPUチップ内のソフトウェア保護手段21の構成を
以下のように変化させたものである。
【0072】実施の形態2では、CPUの命令が分岐命
令であるかどうかの判断を行い、分岐命令の情報を抽出
する分岐命令抽出回路92を有していた。本実施の形態
では、分岐命令抽出回路92を削除し、暗号キー生成変
数修正回路93へ供給される分岐の情報をCPUコア2
0から出力させる構成となっている。
令であるかどうかの判断を行い、分岐命令の情報を抽出
する分岐命令抽出回路92を有していた。本実施の形態
では、分岐命令抽出回路92を削除し、暗号キー生成変
数修正回路93へ供給される分岐の情報をCPUコア2
0から出力させる構成となっている。
【0073】次に本実施形態の動作について説明する。
まずソフトウェア保持手段21の暗証番号照合回路33
では、プログラムAが持つ暗証番号と暗証番号生成回路
34から供給される暗証番号との照合を行う。暗証番号
は暗証番号メモリ35に保持されており、プログラムA
のあるアドレスのアドレス値Bとそのアドレス値Bに保
持されたデータCによって構成される。こうすれば暗証
番号を独立してプログラムに含ませる必要はなくなる。
このアドレス値とそのデータは1つだけであってもよ
く、又複数としてもよい。このアドレス値BとデータC
とは暗証番号生成回路34を介して暗証番号照合回路3
3に供給される。暗証番号照合回路33は図示しないア
ドレスバスのアドレスをカウンタにより計数し、そのカ
ウント値が与えられたアドレス値Bに一致するときにデ
ータバス60上のデータC’と暗証番号生成回路から供
給されたアドレスBに対するデータCとを比較する。こ
れが一致する場合にはデコード回路30にプログラムA
を供給する。この暗証番号の照合は、電源オン後、初め
て暗証番号照合回路33にプログラムAが入力された時
点から開始され、暗証番号が一致したとき初めてプログ
ラムAが先頭からデコード回路30へ供給される。複数
の暗証番号を有する場合には、その後も暗証番号の照合
を続け、暗証番号が不一致となったときプログラムAの
供給をやめる。暗証番号生成回路34では、アドレスB
を初期値と時間に依存して変更し、Bの変化に応じてプ
ログラムAを参照してCを変更させることによって、暗
証番号を変化させる。もちろん年月日、電源オン・オフ
に応じて変化させてもよい。従って暗証番号を一致させ
るには、CとC’を一致させる初期設定をあらかじめ行
っておく必要がある。
まずソフトウェア保持手段21の暗証番号照合回路33
では、プログラムAが持つ暗証番号と暗証番号生成回路
34から供給される暗証番号との照合を行う。暗証番号
は暗証番号メモリ35に保持されており、プログラムA
のあるアドレスのアドレス値Bとそのアドレス値Bに保
持されたデータCによって構成される。こうすれば暗証
番号を独立してプログラムに含ませる必要はなくなる。
このアドレス値とそのデータは1つだけであってもよ
く、又複数としてもよい。このアドレス値BとデータC
とは暗証番号生成回路34を介して暗証番号照合回路3
3に供給される。暗証番号照合回路33は図示しないア
ドレスバスのアドレスをカウンタにより計数し、そのカ
ウント値が与えられたアドレス値Bに一致するときにデ
ータバス60上のデータC’と暗証番号生成回路から供
給されたアドレスBに対するデータCとを比較する。こ
れが一致する場合にはデコード回路30にプログラムA
を供給する。この暗証番号の照合は、電源オン後、初め
て暗証番号照合回路33にプログラムAが入力された時
点から開始され、暗証番号が一致したとき初めてプログ
ラムAが先頭からデコード回路30へ供給される。複数
の暗証番号を有する場合には、その後も暗証番号の照合
を続け、暗証番号が不一致となったときプログラムAの
供給をやめる。暗証番号生成回路34では、アドレスB
を初期値と時間に依存して変更し、Bの変化に応じてプ
ログラムAを参照してCを変更させることによって、暗
証番号を変化させる。もちろん年月日、電源オン・オフ
に応じて変化させてもよい。従って暗証番号を一致させ
るには、CとC’を一致させる初期設定をあらかじめ行
っておく必要がある。
【0074】上記の例では、アドレスとそのアドレスに
対するデータとで構成された暗証番号を用いているが、
ある数値で構成された暗証番号を用いてもよい。この場
合、暗証番号はプログラムとは独立して持っておく必要
がある。この暗証番号を用いた場合の照合は、電源オン
後プログラムが読み出される前に行い、その後ある時間
毎に照合を行う。
対するデータとで構成された暗証番号を用いているが、
ある数値で構成された暗証番号を用いてもよい。この場
合、暗証番号はプログラムとは独立して持っておく必要
がある。この暗証番号を用いた場合の照合は、電源オン
後プログラムが読み出される前に行い、その後ある時間
毎に照合を行う。
【0075】又暗証番号照合回路33はアドレス値を計
数するカウンタを設けているが、アドレスバスに接続し
てそのアドレス値を直接デコードしてアドレス値Bと一
致する場合にそのデータを比較するようにしてもよい。
以上までは実施の形態1と同様である。
数するカウンタを設けているが、アドレスバスに接続し
てそのアドレス値を直接デコードしてアドレス値Bと一
致する場合にそのデータを比較するようにしてもよい。
以上までは実施の形態1と同様である。
【0076】暗号キー生成回路90では、時間に依存す
る変数t2と暗号キーパラメータから暗号キーK2(t
2,α2)を生成する。プログラムAを受け取ったデコ
ード回路30では、暗号キー生成回路90から供給され
る暗号キーK2(t2,α2)でプログラムAのデコー
ド処理を行い、デコードしたプログラムA’をCPUコ
ア20へ供給する。この時t1=t2且つα1=α2で
あれば、暗号キーK2とK1は等しくなり、プログラム
Aを正しくデコードすることができる。従ってプログラ
ムを正しくデコードするには、t1=t2且つα1=α
2となるような設定をあらかじめ行っておく必要があ
る。この暗号キーパラメータα2は暗号キー保持メモリ
32に保持しておく。もちろん、暗号キーパラメータを
複数持ってもかまわない。t2は暗号キー生成回路90
の回路構成で決まる値であるので、t1=t2を実現す
るには、t2の変化にt1を合わせておく必要がある。
このt2は、ある周期で変化する変数である。例えばプ
ログラムAの先頭がデコード回路30に到達した瞬間を
初期値として、タイマー等を用いてt2を変化させる。
る変数t2と暗号キーパラメータから暗号キーK2(t
2,α2)を生成する。プログラムAを受け取ったデコ
ード回路30では、暗号キー生成回路90から供給され
る暗号キーK2(t2,α2)でプログラムAのデコー
ド処理を行い、デコードしたプログラムA’をCPUコ
ア20へ供給する。この時t1=t2且つα1=α2で
あれば、暗号キーK2とK1は等しくなり、プログラム
Aを正しくデコードすることができる。従ってプログラ
ムを正しくデコードするには、t1=t2且つα1=α
2となるような設定をあらかじめ行っておく必要があ
る。この暗号キーパラメータα2は暗号キー保持メモリ
32に保持しておく。もちろん、暗号キーパラメータを
複数持ってもかまわない。t2は暗号キー生成回路90
の回路構成で決まる値であるので、t1=t2を実現す
るには、t2の変化にt1を合わせておく必要がある。
このt2は、ある周期で変化する変数である。例えばプ
ログラムAの先頭がデコード回路30に到達した瞬間を
初期値として、タイマー等を用いてt2を変化させる。
【0077】ここで、プログラムA内のCPU命令に分
岐命令があった場合を考える。実施の形態1の構成で
は、タイマー等を用いて変数t2をある周期で変化させ
ている。この構成であると、分岐命令等があってt1の
周期性が崩れた場合にt1=t2を満たすt2を生成す
ることが困難である。
岐命令があった場合を考える。実施の形態1の構成で
は、タイマー等を用いて変数t2をある周期で変化させ
ている。この構成であると、分岐命令等があってt1の
周期性が崩れた場合にt1=t2を満たすt2を生成す
ることが困難である。
【0078】実施の形態3でも実施の形態2と同様に、
CPU命令に分岐命令があって、t1の周期性が崩れた
場合にもt1=t2を満たすt2を生成できる構成とな
っている。以下にCPU命令に分岐命令を含んだプログ
ラムAをデコードする際の動作を説明する。
CPU命令に分岐命令があって、t1の周期性が崩れた
場合にもt1=t2を満たすt2を生成できる構成とな
っている。以下にCPU命令に分岐命令を含んだプログ
ラムAをデコードする際の動作を説明する。
【0079】CPUコア20はデコード回路30からデ
コードされたプログラムA’を受け取り、分岐命令を出
力する場合にのみ、暗号キー生成変数修正回路93に分
岐情報を供給する。この分岐情報は、例えば分岐先に対
する相対アドレス値である。分岐情報を受け取った暗号
キー生成変数修正回路93では、この分岐命令の次の命
令に対する暗号キーを生成するために、変数t2の修正
値を暗号キー生成回路90へ供給する。尚分岐情報を受
け取らなかった場合、暗号キー生成変数修正回路93は
暗号キー生成回路90へ0を供給する。暗号キー生成回
路90では、変数t2の修正値を用いて暗号キーを生成
する。
コードされたプログラムA’を受け取り、分岐命令を出
力する場合にのみ、暗号キー生成変数修正回路93に分
岐情報を供給する。この分岐情報は、例えば分岐先に対
する相対アドレス値である。分岐情報を受け取った暗号
キー生成変数修正回路93では、この分岐命令の次の命
令に対する暗号キーを生成するために、変数t2の修正
値を暗号キー生成回路90へ供給する。尚分岐情報を受
け取らなかった場合、暗号キー生成変数修正回路93は
暗号キー生成回路90へ0を供給する。暗号キー生成回
路90では、変数t2の修正値を用いて暗号キーを生成
する。
【0080】ここで、分岐情報を基に変数t2を修正す
る方法について説明する。デコード回路30へ暗号キー
K1(tf1,α1)で暗号化された分岐命令Fが入力
され、デコード回路30が暗号キーK2(tf2,α
2)でデコードしたとする。当然、tf1=tf2且つ
α1=α2で、K1とK2は同じ入出力特性を持った関
数である。又、分岐先には暗号キーK1(tn1,α
1)で暗号化された命令Nが存在するとする。デコード
回路30でデコードされた分岐命令F’はCPUコア2
0へ入力される。尚このときCPUコアは、図示してい
ないアドレスバスから、分岐命令Fに対するアドレス値
Gを受け取っている。CPUコア20は分岐命令F’が
持つ情報とアドレス値Gから相対アドレス値Hを計算し
て、相対アドレス値Hを暗号キー生成変数修正回路93
へ出力する。暗号キー生成変数修正回路93では、相対
アドレス値Hを基に変数t2の修正値Iを生成する。暗
号キー生成回路90では、この修正値Iを受け取り、暗
号キーK2(tf2+I,α2)を作成する。
る方法について説明する。デコード回路30へ暗号キー
K1(tf1,α1)で暗号化された分岐命令Fが入力
され、デコード回路30が暗号キーK2(tf2,α
2)でデコードしたとする。当然、tf1=tf2且つ
α1=α2で、K1とK2は同じ入出力特性を持った関
数である。又、分岐先には暗号キーK1(tn1,α
1)で暗号化された命令Nが存在するとする。デコード
回路30でデコードされた分岐命令F’はCPUコア2
0へ入力される。尚このときCPUコアは、図示してい
ないアドレスバスから、分岐命令Fに対するアドレス値
Gを受け取っている。CPUコア20は分岐命令F’が
持つ情報とアドレス値Gから相対アドレス値Hを計算し
て、相対アドレス値Hを暗号キー生成変数修正回路93
へ出力する。暗号キー生成変数修正回路93では、相対
アドレス値Hを基に変数t2の修正値Iを生成する。暗
号キー生成回路90では、この修正値Iを受け取り、暗
号キーK2(tf2+I,α2)を作成する。
【0081】ここで、アドレス値の変化量に対する変数
t1の変化量が一意に決まる必要がある。暗号キー生成
変数修正回路93における変数t2の修正値Iの生成方
法が、このアドレス値の変化量と変数t1の変化量の関
係を満たしておけば、I=tn1−tf1を満たすIを
生成できる。そして、K2(tf2+I,α2)=K1
(tn1,α1)を満たすことができ、命令Nを正しく
デコードできる。このようにプログラムに分岐命令が存
在した場合でも正しいデコードが可能となる。
t1の変化量が一意に決まる必要がある。暗号キー生成
変数修正回路93における変数t2の修正値Iの生成方
法が、このアドレス値の変化量と変数t1の変化量の関
係を満たしておけば、I=tn1−tf1を満たすIを
生成できる。そして、K2(tf2+I,α2)=K1
(tn1,α1)を満たすことができ、命令Nを正しく
デコードできる。このようにプログラムに分岐命令が存
在した場合でも正しいデコードが可能となる。
【0082】プログラムA’を受け取ったCPUコア2
0では、CPU命令Dを暗号化回路36へ供給すると共
に、分岐命令が存在する場合にのみ上記の動作を加えて
行う。
0では、CPU命令Dを暗号化回路36へ供給すると共
に、分岐命令が存在する場合にのみ上記の動作を加えて
行う。
【0083】暗号化回路36では、暗号キー生成回路9
1から供給される暗号キーK2(t2,α2)でCPU
命令DをCPU命令D' に暗号化する。この暗号化され
たCPU命令D' をデータバス60へ供給する。暗号キ
ー生成回路91で用いられるt2は、プログラム内の分
岐命令の存在によって変化しない。
1から供給される暗号キーK2(t2,α2)でCPU
命令DをCPU命令D' に暗号化する。この暗号化され
たCPU命令D' をデータバス60へ供給する。暗号キ
ー生成回路91で用いられるt2は、プログラム内の分
岐命令の存在によって変化しない。
【0084】プログラム保存用メモリ10のデコード回
路50では、CPU命令D’を受け取り、暗号キー生成
回路51から供給される暗号キーK3(t3,α3)で
CPU命令D’のデコード処理を行い、デコードされた
CPU命令D''をプログラム保存用メモリ24へ供給す
る。
路50では、CPU命令D’を受け取り、暗号キー生成
回路51から供給される暗号キーK3(t3,α3)で
CPU命令D’のデコード処理を行い、デコードされた
CPU命令D''をプログラム保存用メモリ24へ供給す
る。
【0085】暗号キー生成回路51では、暗号キーK3
(t3,α3)を生成する。この時t2=t3且つα2
=α3であればK2=K3となり、CPU命令D’を正
しくデコードできる。従ってCPU命令D’を正しくデ
コードするには、t2=t3且つα2=α3となるよう
な設定をあらかじめ行っておく必要がある。この暗号キ
ーパラメータα3は暗号キー保持メモリ52に保持して
おく。t3はt2と同様の変数であるが、暗号キー生成
回路51の回路をt2=t3となるように、暗号化回路
36からデコード回路50の遅延を補償してt3を変化
させるように構成しておく。
(t3,α3)を生成する。この時t2=t3且つα2
=α3であればK2=K3となり、CPU命令D’を正
しくデコードできる。従ってCPU命令D’を正しくデ
コードするには、t2=t3且つα2=α3となるよう
な設定をあらかじめ行っておく必要がある。この暗号キ
ーパラメータα3は暗号キー保持メモリ52に保持して
おく。t3はt2と同様の変数であるが、暗号キー生成
回路51の回路をt2=t3となるように、暗号化回路
36からデコード回路50の遅延を補償してt3を変化
させるように構成しておく。
【0086】一方プログラマブル演算回路チップ12に
おいて、暗号キー生成回路41では、時間に依存する変
数t4と暗号キーパラメータα4から暗号キーK4(t
4,α4)を生成する。デコード回路40では、プログ
ラムAを受け取り、暗号キー生成回路41から供給され
る暗号キーK4(t4,α4)でプログラムAのデコー
ド処理を行い、デコードプログラムA''をプログラマブ
ル演算回路22へ供給する。このときt1=t4且つα
1=α4であればK1=K4となり、プログラムAを正
しくデコードできる。従って、プログラムAを正しくデ
コードするには、t1=t4且つα1=α4となるよう
な設定をあらかじめ行っておく必要がある。この暗号キ
ーパラメータα4は暗号キー保持メモリ42に保持して
おく。
おいて、暗号キー生成回路41では、時間に依存する変
数t4と暗号キーパラメータα4から暗号キーK4(t
4,α4)を生成する。デコード回路40では、プログ
ラムAを受け取り、暗号キー生成回路41から供給され
る暗号キーK4(t4,α4)でプログラムAのデコー
ド処理を行い、デコードプログラムA''をプログラマブ
ル演算回路22へ供給する。このときt1=t4且つα
1=α4であればK1=K4となり、プログラムAを正
しくデコードできる。従って、プログラムAを正しくデ
コードするには、t1=t4且つα1=α4となるよう
な設定をあらかじめ行っておく必要がある。この暗号キ
ーパラメータα4は暗号キー保持メモリ42に保持して
おく。
【0087】このt4はt2と同様に、ある周期で変化
する変数である。例えばプログラムAの先頭がデコード
回路40に到達した瞬間を初期値として、タイマー等を
用いてt4を変化させる。
する変数である。例えばプログラムAの先頭がデコード
回路40に到達した瞬間を初期値として、タイマー等を
用いてt4を変化させる。
【0088】又CPU命令Dにより制御される回路を持
つ信号処理装置にCPU命令Dを入力するためには、ソ
フトウェア保護手段25と同様の回路をその装置内部に
持てばよい。上記の動作を行うための初期設定方法、な
らびに暗号キーの生成タイミングの決め方は実施の形態
1と同様である。
つ信号処理装置にCPU命令Dを入力するためには、ソ
フトウェア保護手段25と同様の回路をその装置内部に
持てばよい。上記の動作を行うための初期設定方法、な
らびに暗号キーの生成タイミングの決め方は実施の形態
1と同様である。
【0089】(実施の形態4)以下、本発明の請求項1
4と15に記載された発明の実施の形態4について図6
を用いて説明する。図4は本発明の実施の形態2のソフ
トウェア保護装置の構成図である。図1と図6の同一の
機能部分には同じ符号を付してある。
4と15に記載された発明の実施の形態4について図6
を用いて説明する。図4は本発明の実施の形態2のソフ
トウェア保護装置の構成図である。図1と図6の同一の
機能部分には同じ符号を付してある。
【0090】図6における構成は、実施の形態1,2又
は3のソフトウェア保護装置の構成に、プログラム保存
用メモリ24に書込むか否かを判断する書込み制御手段
を加えたものである。更に、書込み制御手段は書込み制
御回路61と外部スイッチ62とを備えている。又、暗
号化回路36はデコード回路30から直接入力できる構
成となっている。
は3のソフトウェア保護装置の構成に、プログラム保存
用メモリ24に書込むか否かを判断する書込み制御手段
を加えたものである。更に、書込み制御手段は書込み制
御回路61と外部スイッチ62とを備えている。又、暗
号化回路36はデコード回路30から直接入力できる構
成となっている。
【0091】書込み制御回路61において、プログラム
保存用メモリ24に書込まないとの判断を行っている場
合は、本発明の実施の形態1で説明した動作と同様であ
る。ある設定年月日,設定時刻,電源オフの瞬間又は外
部スイッチ62に同期して、書込み制御回路61がプロ
グラム保存用メモリ24に書込むとの判断を行うと、全
ての回路が現在の動作を中断する。
保存用メモリ24に書込まないとの判断を行っている場
合は、本発明の実施の形態1で説明した動作と同様であ
る。ある設定年月日,設定時刻,電源オフの瞬間又は外
部スイッチ62に同期して、書込み制御回路61がプロ
グラム保存用メモリ24に書込むとの判断を行うと、全
ての回路が現在の動作を中断する。
【0092】その後、プログラム保存用メモリ24から
暗号化キーK1(t1,α1)で暗号化されたプログラ
ムAを、データバス60を介して暗証番号照合回路33
へ供給する。暗証番号の照合後、デコード回路30に供
給されたプログラムAは暗号化キーK2(t2,α2)
を用いてデコードされ、暗号化回路36へデコードされ
たプログラムA' が供給される。暗号キー生成回路31
では、新しい暗号キー生成パラメータβを生成し、暗号
化回路36にのみ暗号化キーK2' (t2,β)を供給
する。このとき新しい暗号キー生成パラメータβは暗号
キー保持メモリ32に保持されている。暗号化回路36
では、暗号化キーK2' (t2,β)でプログラムA'
を暗号化する。暗号化キーK2' (t2,β)で暗号化
されたプログラムEは、データバス60,書込み制御回
路61を介してプログラム保存用メモリ24に書込まれ
る。又、暗証番号生成回路34にもプログラムEが供給
され、新しい暗証番号を生成し、暗証番号保持メモリ3
5に保持する。以上より、新しい暗号キーで暗号化され
たプログラムがプログラム保存用メモリに記憶できる。
暗号化キーK1(t1,α1)で暗号化されたプログラ
ムAを、データバス60を介して暗証番号照合回路33
へ供給する。暗証番号の照合後、デコード回路30に供
給されたプログラムAは暗号化キーK2(t2,α2)
を用いてデコードされ、暗号化回路36へデコードされ
たプログラムA' が供給される。暗号キー生成回路31
では、新しい暗号キー生成パラメータβを生成し、暗号
化回路36にのみ暗号化キーK2' (t2,β)を供給
する。このとき新しい暗号キー生成パラメータβは暗号
キー保持メモリ32に保持されている。暗号化回路36
では、暗号化キーK2' (t2,β)でプログラムA'
を暗号化する。暗号化キーK2' (t2,β)で暗号化
されたプログラムEは、データバス60,書込み制御回
路61を介してプログラム保存用メモリ24に書込まれ
る。又、暗証番号生成回路34にもプログラムEが供給
され、新しい暗証番号を生成し、暗証番号保持メモリ3
5に保持する。以上より、新しい暗号キーで暗号化され
たプログラムがプログラム保存用メモリに記憶できる。
【0093】
【発明の効果】以上のように、本発明のソフトウェア保
護装置によれば、プログラム保存用メモリ,CPU,プ
ログラマブル演算回路間のデータバスに流れる情報を、
暗号キーパラメータや時間に依存して変化する暗号キー
で暗号化するため、暗号化された情報を解析しても容易
に解読することはできなくなる。更に、その暗号化され
た情報がデコード回路に入力される前に、時間に依存し
て変化する暗証番号の照合を行っている。そのため第三
者が作成したデータを用いてデコード回路の入出力特性
を容易に解析できないようにすることができ、ソフトウ
ェアの保護が確実となるという効果が得られる。
護装置によれば、プログラム保存用メモリ,CPU,プ
ログラマブル演算回路間のデータバスに流れる情報を、
暗号キーパラメータや時間に依存して変化する暗号キー
で暗号化するため、暗号化された情報を解析しても容易
に解読することはできなくなる。更に、その暗号化され
た情報がデコード回路に入力される前に、時間に依存し
て変化する暗証番号の照合を行っている。そのため第三
者が作成したデータを用いてデコード回路の入出力特性
を容易に解析できないようにすることができ、ソフトウ
ェアの保護が確実となるという効果が得られる。
【図1】本発明の実施の形態1におけるソフトウェア保
護装置を示す構成図である。
護装置を示す構成図である。
【図2】本実施形態のCPUチップ内のソフトウェア保
護手段21の構成を示すブロック図である。
護手段21の構成を示すブロック図である。
【図3】プログラマブル演算回路チップ12内のソフト
ウェア保護手段23及びプログラム保存用メモリチップ
10内のソフトウェア保護手段25の構成を示すブロッ
ク図である。
ウェア保護手段23及びプログラム保存用メモリチップ
10内のソフトウェア保護手段25の構成を示すブロッ
ク図である。
【図4】本発明の実施の形態2のCPUチップ内のソフ
トウェア保護手段21の構成を示すブロック図である。
トウェア保護手段21の構成を示すブロック図である。
【図5】本発明の実施の形態3のCPUチップ内のソフ
トウェア保護手段21の構成を示すブロック図である。
トウェア保護手段21の構成を示すブロック図である。
【図6】本発明の実施の形態4におけるソフトウェア保
護装置を示す構成図である。
護装置を示す構成図である。
【図7】従来のソフトウェア保護装置を示す構成図であ
る。
る。
10 プログラム保存用メモリチップ 11 CPUチップ 12 プログラマブル演算回路チップ 20 CPUコア 21,23,25 ソフトウェア保護手段 22 プログラマブル演算回路 24 プログラム保存用メモリ 30,40,50 デコード回路 31,41,51,90,91 暗号キー生成回路 32,42,52 暗号キー保持メモリ 33 暗証番号照合回路 34 暗証番号生成回路 35 暗証番号保持メモリ 36 暗号化回路 37,38,43,53 外部入力端子 39 暗号キー保持メモリ消去回路 60,78 データバス 61 書込み制御回路 62 外部スイッチ 70 マイクロプロセッサ 71 マイクロプロセッサユニット 72,83 暗号化ROM 73,82 デコードROM 74 トライステートバッファ 75,84,85 トライステートバッファ 76,86 インバータ 77 アドレスバス 79 R/W信号 80 メモリ又は周辺LSIチップ 81 メモリ又は周辺LSI 92 分岐命令抽出回路 93 暗号キー生成変数修正回路
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 庁内整理番号 FI 技術表示箇所 H04L 9/16 H04L 9/00 643
Claims (15)
- 【請求項1】 CPUとプログラム保存用メモリ装置間
のデータバスに流れる情報を暗号化して、前記プログラ
ムの保護を行うソフトウェア保護装置であって、 前記CPUは、 暗号キーを用いて情報を暗号化する第1の暗号化手段
と、 暗号キーを用いて暗号化された情報を復号する第1のデ
コード手段と、 前記第1の暗号化手段及び前記第1のデコード手段で用
いる暗号キーを暗号キーパラメータに依存して生成する
第1の暗号キー生成手段と、を有するものであり、 前記プログラム保存用メモリ装置は、 信号処理又は情報処理アルゴリズムを規定するプログラ
ムを保存するプログラム保存用のメモリと、 暗号化された情報を暗号キーを用いて復号して前記メモ
リに書込む第2のデコード手段と、 前記第2のデコード手段で用いる暗号キーを暗号キーパ
ラメータに依存して生成する第2の暗号キー生成手段
と、を有するものであることを特徴とするソフトウェア
保護装置。 - 【請求項2】 CPUとプログラム保存用メモリ装置及
び前記CPUによって制御される信号処理手段を含んで
構成され、これらの間のデータバスに流れる情報を暗号
化して、前記プログラムの保護を行うソフトウェア保護
装置であって、 前記CPUは、 暗号キーを用いて情報を暗号化する第1の暗号化手段
と、 暗号キーを用いて暗号化された情報を復号する第1のデ
コード手段と、 前記第1の暗号化手段及び前記第1のデコード手段で用
いる暗号キーを暗号キーパラメータに依存して生成する
第1の暗号キー生成手段と、を有するものであり、 前記プログラム保存用メモリ装置は、 信号処理又は情報処理アルゴリズムを規定するプログラ
ムを保存するプログラム保存用のメモリと、 暗号化された情報を暗号キーを用いて復号して前記メモ
リに書込む第2のデコード手段と、 前記第2のデコード手段で用いる暗号キーを暗号キーパ
ラメータに依存して生成する第2の暗号キー生成手段
と、を有するものであり、 前記信号処理手段は、 暗号化された情報を暗号キーを用いて復号する第3のデ
コード手段と、 前記第3のデコード手段で用いる暗号キーを暗号キーパ
ラメータに依存して生成する第3の暗号キー生成手段
と、を有するものであることを特徴とするソフトウェア
保護装置。 - 【請求項3】 CPUとプログラム保存用メモリ装置及
び前記プログラムによって制御されるプログラマブル演
算回路を含んで構成され、これらの間のデータバスに流
れる情報を暗号化して、前記プログラムの保護を行うソ
フトウェア保護装置であって、 前記CPUは、 暗号キーを用いて情報を暗号化する第1の暗号化手段
と、 暗号キーを用いて暗号化された情報を復号する第1のデ
コード手段と、 前記第1の暗号化手段及び前記第1のデコード手段で用
いる暗号キーを暗号キーパラメータに依存して生成する
第1の暗号キー生成手段と、を有するものであり、 前記プログラム保存用メモリ装置は、 信号処理又は情報処理アルゴリズムを規定するプログラ
ムを保存するプログラム保存用のメモリと、 暗号化された情報を暗号キーを用いて復号して前記メモ
リに書込む第2のデコード手段と、 前記第2のデコード手段で用いる暗号キーを暗号キーパ
ラメータに依存して生成する第2の暗号キー生成手段
と、を有するものであり、 前記プログラマブル演算回路は、 暗号化された情報を暗号キーを用いて復号する第4のデ
コード手段と、 前記第4のデコード手段で用いる暗号キーを1つあるい
は複数の暗号キーパラメータに依存して生成する第4の
暗号キー生成手段と、を有するものであることを特徴と
するソフトウェア保護装置。 - 【請求項4】 前記CPUが有する前記第1の暗号キー
生成手段を、暗号キーパラメータに依存して前記第1の
暗号化手段で用いる暗号キーを生成する第5の暗号キー
生成手段と、暗号キーパラメータに依存して前記第1の
デコード手段で用いる暗号キーを生成する第6の暗号キ
ー生成手段とに置き換えたことを特徴とする請求項1〜
3のいずれか1項記載のソフトウェア保護装置。 - 【請求項5】 前記暗号キー生成手段は、時間、前記メ
モリのアドレス値、生成タイミングを規定する信号の少
なくとも1つに対応して変化する暗号キーを生成するこ
とを特徴とする請求項1〜4のいずれか1項記載のソフ
トウェア保護装置。 - 【請求項6】 前記CPUは、 前記CPUの命令が分岐命令であるかどうかの判断を行
い、分岐命令の情報を抽出する分岐命令抽出手段と、 前記分岐命令抽出手段から供給される情報を基に暗号キ
ー生成に用いる前記変数の修正値を生成する暗号キー生
成変数修正手段とを更に有することを特徴とする請求項
5記載のソフトウェア保護装置。 - 【請求項7】 前記分岐命令抽出手段は、 前記CPUの命令、前記メモリのアドレス値の少なくと
も1つを基に前記CPUの命令が分岐命令であるかどう
かの判断を行い、分岐命令の情報を抽出するものである
ことを特徴とする請求項6記載のソフトウェア保護装
置。 - 【請求項8】 前記CPUは、前記暗号キー及び前記暗
号キーパラメータを保持する第1の暗号キー保持手段を
備えたものであり、 前記プログラム保存用メモリ装置は、前記暗号キー及び
前記暗号キーパラメータを保持する第2の暗号キー保持
手段を備えたことを特徴とする請求項1〜7のいずれか
1項記載のソフトウェア保護装置。 - 【請求項9】 前記暗号キー生成手段は、外部から暗号
キー又は暗号キーパラメータを入力できる入力手段を備
えたことを特徴とする請求項1〜7のいずれか1項記載
のソフトウェア保護装置。 - 【請求項10】 前記CPUは、 暗証番号を生成する暗証番号生成手段と、 前記暗証番号生成手段から供給される前記暗証番号と前
記プログラムが持つ暗証番号とを比較する暗証番号照合
手段と、 前記暗証番号を保持する暗証番号保持手段とを更に備え
たことを特徴とする請求項1〜9のいずれか1項記載の
ソフトウェア保護装置。 - 【請求項11】 前記暗証番号生成手段は、初期設定
値、年月日、所定時間毎及び電源スイッチ投入時の少な
くとも1つに対応して変化する少なくとも1つの暗証番
号を生成することを特徴とする請求項10記載のソフト
ウェア保護装置。 - 【請求項12】 前記暗証番号生成手段は、前記メモリ
のアドレスと、前記アドレスに記憶されているデータ値
とで前記暗証番号を生成することを特徴とする請求項1
0記載のソフトウェア保護装置。 - 【請求項13】 前記暗証番号生成手段は、 外部から暗証番号を入力できる入力手段と、 前記第1の暗号キー保持手段に保持されている内容を消
去できる消去手段とを備えたことを特徴とする請求項1
0記載のソフトウェア保護装置。 - 【請求項14】 前記プログラム保存用メモリに書込み
を行うか否かの判断を行う書込み制御手段を更に備えた
ことを特徴とする請求項1〜13のいずれか1項記載の
ソフトウェア保護装置。 - 【請求項15】 前記書込み制御手段は、年月日、時
刻、電源スイッチ、前記書込み制御手段を制御する外部
スイッチの少なくとも一つに同期して制御を行うことを
特徴とする請求項14記載のソフトウェア保護装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8313429A JPH1055273A (ja) | 1996-06-05 | 1996-11-25 | ソフトウェア保護装置 |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP16684196 | 1996-06-05 | ||
| JP8-166841 | 1996-06-05 | ||
| JP8313429A JPH1055273A (ja) | 1996-06-05 | 1996-11-25 | ソフトウェア保護装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH1055273A true JPH1055273A (ja) | 1998-02-24 |
Family
ID=26491081
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8313429A Pending JPH1055273A (ja) | 1996-06-05 | 1996-11-25 | ソフトウェア保護装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH1055273A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7036017B2 (en) | 1999-12-02 | 2006-04-25 | Infineon Technologies Ag | Microprocessor configuration with encryption |
| WO2006095891A1 (ja) * | 2005-03-08 | 2006-09-14 | N-Crypt, Inc. | データ処理装置 |
| KR20100069588A (ko) * | 2008-12-15 | 2010-06-24 | 톰슨 라이센싱 | 명령어 레벨의 소프트웨어 암호화를 위한 방법 및 디바이스 |
| WO2014049830A1 (ja) * | 2012-09-28 | 2014-04-03 | 富士通株式会社 | 情報処理装置および半導体装置 |
-
1996
- 1996-11-25 JP JP8313429A patent/JPH1055273A/ja active Pending
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7036017B2 (en) | 1999-12-02 | 2006-04-25 | Infineon Technologies Ag | Microprocessor configuration with encryption |
| WO2006095891A1 (ja) * | 2005-03-08 | 2006-09-14 | N-Crypt, Inc. | データ処理装置 |
| KR20100069588A (ko) * | 2008-12-15 | 2010-06-24 | 톰슨 라이센싱 | 명령어 레벨의 소프트웨어 암호화를 위한 방법 및 디바이스 |
| JP2010140473A (ja) * | 2008-12-15 | 2010-06-24 | Thomson Licensing | 命令レベルのソフトウェア暗号化のための方法及び装置 |
| US8341426B2 (en) | 2008-12-15 | 2012-12-25 | Thomson Licensing | Methods and devices for instruction level software encryption |
| WO2014049830A1 (ja) * | 2012-09-28 | 2014-04-03 | 富士通株式会社 | 情報処理装置および半導体装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3774260B2 (ja) | メモリカードのセキュリティシステム装置及びそのメモリカード | |
| US7389536B2 (en) | System and apparatus for limiting access to secure data through a portable computer to a time set with the portable computer connected to a base computer | |
| US20040177257A1 (en) | Data processing device and data processing method | |
| KR19980080678A (ko) | 인증 시스템과 방법, 및 인증 장치와 방법 | |
| JPH09114946A (ja) | Icカード及び情報処理装置の認証方法 | |
| JPH11272561A (ja) | 記憶媒体のデータ保護方法、その装置及びその記憶媒体 | |
| WO1996034334A1 (en) | Device for executing enciphered program | |
| US7076667B1 (en) | Storage device having secure test process | |
| JP2001005731A (ja) | 情報処理装置、カード部材および情報処理システム | |
| CN101685425A (zh) | 移动存储设备及实现移动存储设备加密的方法 | |
| CN113343215A (zh) | 嵌入式软件的授权和认证方法及电子设备 | |
| WO2023240866A1 (zh) | 密码卡及其根密钥保护方法、计算机可读存储介质 | |
| CN101770559A (zh) | 数据保护装置和方法 | |
| JP4119882B2 (ja) | メモリ情報保護システム、メモリ情報の保護方法、および半導体メモリ | |
| JPH1055273A (ja) | ソフトウェア保護装置 | |
| JPH1115738A (ja) | 暗号化機能付きデータ蓄積装置 | |
| JP4592337B2 (ja) | データ記憶装置 | |
| JPH1139156A (ja) | 暗号化データ復号装置 | |
| KR20010054151A (ko) | 휴대용 카드에서의 일회용 패스워드 생성방법 및 이를기록한 기록매체 | |
| KR20030087874A (ko) | 컴퓨팅 장치의 등급별 데이터 보안 방법 | |
| JP2015211383A (ja) | 暗号処理装置、暗号処理システム、および暗号処理方法 | |
| JPH11224189A (ja) | 復号鍵データの書き込みシステム | |
| JPWO2006046484A1 (ja) | 認証方法 | |
| JP3646482B2 (ja) | アクセス制御装置、アクセス制御プログラムを記録したコンピュータ読み取り可能な記録媒体及びアクセス制御方法 | |
| JP3797531B2 (ja) | ディジタルデータの不正コピー防止システム |