(57)【要約】【課題】ソフトウェア処理の迅速な実行を確保しつつ、あるいはソフトウェア自体の暗号化を伴わずにソフトウェアを保護するためのソフトウェア保護装置等を提供することである。【解決手段】制御部１１は、保護対象のソフトウェアをＲＯＭ２５より取得し、圧縮領域情報、ハッシュテーブル、及び識別子をＳＩＭカード２２より取得して、保護対象のソフトウェアのうち、圧縮領域情報により指定される一部とハッシュテーブルとに基づいて識別子を生成し、ＳＩＭカード２２より取得した識別子と自ら生成した識別子とが合致するか否かを判別して、合致しないと判別したとき、保護対象のソフトウェアの処理を中止する。【選択図】図１
2008171365.tif 000002
【特許請求の範囲】
【請求項１】
保護対象のソフトウェアを記憶する第１の記憶手段と、
前記保護対象のソフトウェアの一部を指定する領域指定情報、ハッシュ関数を特定するハッシュ関数特定情報、及び、前記保護対象のソフトウェアのうち前記領域指定情報により指定される一部を前記ハッシュ関数に代入して得られるハッシュ値を表す第１のプログラム識別子を記憶する第２の記憶手段と、
前記保護対象のソフトウェアを前記第１の記憶手段より取得して処理に供するソフトウェア処理手段と、を備え、
前記ソフトウェア処理手段は、
前記保護対象のソフトウェアを前記第１の記憶手段より取得し、前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を前記第２の記憶手段より取得する手段と、
当該保護対象のソフトウェアのうち、当該領域指定情報により指定される一部を当該ハッシュ関数特定情報が特定するハッシュ関数に代入して得られるハッシュ値を表す第２のプログラム識別子を生成する手段と、
当該第１及び第２のプログラム識別子が合致するか否かを判別して、合致しないと判別したとき、当該保護対象のソフトウェアの処理を中止する手段と、を備える、
ことを特徴とするソフトウェア保護装置。
【請求項２】
前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を前記第２の記憶手段より取得して暗号化する暗号化手段と、
前記暗号化手段が暗号化した前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を復号化して前記ソフトウェア処理手段に供給する復号化手段と、を更に備え、
前記ソフトウェア処理手段は、前記暗号化手段及び前記復号化手段を介して、前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を前記第２の記憶手段より取得する、
ことを特徴とする請求項１に記載のソフトウェア保護装置。
【請求項３】
第３の記憶手段を更に備え、
前記ソフトウェア処理手段は、
所定の第１のタイミングが到来したか否かを判別し、到来したと判別する毎に、前記第２のプログラム識別子を生成して前記第３の記憶手段に記憶させ、
所定の第２のタイミングが到来したか否かを判別し、到来したと判別する毎に、前記第２のプログラム識別子のうち前記第３の記憶手段が記憶する最新のものと前記第１のプログラム識別子とが合致するか否かを判別する、
ことを特徴とする請求項１又は２に記載のソフトウェア保護装置。
【請求項４】
前記ハッシュ関数特定情報は、ハッシュテーブルより構成される、
ことを特徴とする請求項１、２又は３に記載のソフトウェア保護装置。
【請求項５】
前記第２の記憶手段は、互いに異なるハッシュ関数を特定する複数の前記ハッシュ関数特定情報を記憶し、且つ、各々の当該ハッシュ関数につき、前記保護対象のソフトウェアのうち前記領域指定情報により指定される一部を当該ハッシュ関数に代入して得られるハッシュ値を表す第１のプログラム識別子を記憶するものであり、
前記ソフトウェア処理手段は、
前記第１の記憶手段より取得した保護対象のソフトウェアのうち、前記領域指定情報により指定される一部を、前記複数のハッシュ関数特定情報が特定するハッシュ関数のいずれかに代入して得られるハッシュ値を表す第２のプログラム識別子を生成するものであり、
当該第１のプログラム識別子と、前記第２のプログラム識別子のうち当該第１のプログラム識別子の生成に用いたハッシュ関数と同一のハッシュ関数を用いて生成されたものとが合致するか否かを判別して、合致しないと判別したとき、当該保護対象のソフトウェアの処理を中止するものである、
ことを特徴とする請求項１乃至４のいずれか１項に記載のソフトウェア保護装置。
【請求項６】
保護対象のソフトウェアを記憶する第１の記憶ステップと、
前記保護対象のソフトウェアの一部を指定する領域指定情報、ハッシュ関数を特定するハッシュ関数特定情報、及び、前記保護対象のソフトウェアのうち前記領域指定情報により指定される一部を前記ハッシュ関数に代入して得られるハッシュ値を表す第１のプログラム識別子を記憶する第２の記憶ステップと、
前記保護対象のソフトウェアを前記第１の記憶ステップより取得して処理に供するソフトウェア処理ステップと、より構成され、
前記ソフトウェア処理ステップは、
前記第１の記憶ステップで記憶されている前記保護対象のソフトウェアを取得し、前記第２の記憶ステップで記憶されている前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を取得するステップと、
当該保護対象のソフトウェアのうち、当該領域指定情報により指定される一部を当該ハッシュ関数特定情報が特定するハッシュ関数に代入して得られるハッシュ値を表す第２のプログラム識別子を生成するステップと、
当該第１及び第２のプログラム識別子が合致するか否かを判別して、合致しないと判別したとき、当該保護対象のソフトウェアの処理を中止するステップと、を含む、
ことを特徴とするソフトウェア保護方法。
【請求項７】
コンピュータを、
保護対象のソフトウェアを記憶する第１の記憶手段と、前記保護対象のソフトウェアの一部を指定する領域指定情報、ハッシュ関数を特定するハッシュ関数特定情報、及び、前記保護対象のソフトウェアのうち前記領域指定情報により指定される一部を前記ハッシュ関数に代入して得られるハッシュ値を表す第１のプログラム識別子を記憶する第２の記憶手段と、に接続され、前記保護対象のソフトウェアを前記第１の記憶手段より取得して処理に供する機能を有するコンピュータを、
前記保護対象のソフトウェアを前記第１の記憶手段より取得し、前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を前記第２の記憶手段より取得する手段と、
当該保護対象のソフトウェアのうち、当該領域指定情報により指定される一部を当該ハッシュ関数特定情報が特定するハッシュ関数に代入して得られるハッシュ値を表す第２のプログラム識別子を生成する手段と、
当該第１及び第２のプログラム識別子が合致するか否かを判別して、合致しないと判別したとき、当該保護対象のソフトウェアの処理を中止する手段と、
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア保護装置、ソフトウェア保護方法及びプログラムに関する。
【背景技術】
【０００２】
プロセッサ等によるアクセスが可能な状態に置かれたプログラム等のソフトウェアの不正な利用を阻止する手法として、従来、例えば特許文献１に開示されているものがあった。
特許文献１に開示されている技術は、例えば図４に示すように、プログラム保存用メモリ１０１とこれにアクセスするＣＰＵ（Central Processing Unit）コア１０３及びプログラマブル演算回路１０５のそれぞれにソフトウェア保護手段（ソフトウェア保護手段１０２、１０４及び１０６）を接続し、プログラム保存用メモリ１０１がプログラムを暗号化された状態で記憶し、プログラム保護手段１０４又は１０６がこの暗号化されたプログラムを復号化してＣＰＵコア１０３又はプログラマブル演算回路１０５に供給するようにすることで、プログラムのバス上での伝送が常に暗号化された状態で行われるようにする、というものである。
【特許文献１】特開平１０−５５２７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、上述の手法では、暗号化された状態のプログラムを利用可能とするために復号化する動作が介在するため、プログラムの迅速な実行が困難である。また、プログラムの復号化に用いる暗号キーが漏洩するとプログラムの保護は図れない。
【０００４】
本発明は、このような問題点に鑑みてなされたもので、ソフトウェア処理の迅速な実行を確保しつつ、あるいはソフトウェア自体の暗号化を伴わずにソフトウェアを保護するためのソフトウェア保護装置、ソフトウェア保護方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
この目的を達成するため、本発明の第１の観点に係るソフトウェア保護装置は、
保護対象のソフトウェアを記憶する第１の記憶手段と、
前記保護対象のソフトウェアの一部を指定する領域指定情報、ハッシュ関数を特定するハッシュ関数特定情報、及び、前記保護対象のソフトウェアのうち前記領域指定情報により指定される一部を前記ハッシュ関数に代入して得られるハッシュ値を表す第１のプログラム識別子を記憶する第２の記憶手段と、
前記保護対象のソフトウェアを前記第１の記憶手段より取得して処理に供するソフトウェア処理手段と、を備え、
前記ソフトウェア処理手段は、
前記保護対象のソフトウェアを前記第１の記憶手段より取得し、前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を前記第２の記憶手段より取得する手段と、
当該保護対象のソフトウェアのうち、当該領域指定情報により指定される一部を当該ハッシュ関数特定情報が特定するハッシュ関数に代入して得られるハッシュ値を表す第２のプログラム識別子を生成する手段と、
当該第１及び第２のプログラム識別子が合致するか否かを判別して、合致しないと判別したとき、当該保護対象のソフトウェアの処理を中止する手段と、を備える、
ことを特徴とする。
【０００６】
前記ソフトウェア保護装置は、
前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を前記第２の記憶手段より取得して暗号化する暗号化手段と、
前記暗号化手段が暗号化した前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を復号化して前記ソフトウェア処理手段に供給する復号化手段と、を更に備えていてもよく、
この場合、前記ソフトウェア処理手段は、前記暗号化手段及び前記復号化手段を介して、前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を前記第２の記憶手段より取得するものであってもよい。
【０００７】
前記ソフトウェア保護装置は、第３の記憶手段を更に備えていてもよく、
この場合、前記ソフトウェア処理手段は、
所定の第１のタイミングが到来したか否かを判別し、到来したと判別する毎に、前記第２のプログラム識別子を生成して前記第３の記憶手段に記憶させ、
所定の第２のタイミングが到来したか否かを判別し、到来したと判別する毎に、前記第２のプログラム識別子のうち前記第３の記憶手段が記憶する最新のものと前記第１のプログラム識別子とが合致するか否かを判別するものであってもよい。
【０００８】
前記ハッシュ関数特定情報は、例えばハッシュテーブルより構成されていればよい。
【０００９】
前記第２の記憶手段は、互いに異なるハッシュ関数を特定する複数の前記ハッシュ関数特定情報を記憶し、且つ、各々の当該ハッシュ関数につき、前記保護対象のソフトウェアのうち前記領域指定情報により指定される一部を当該ハッシュ関数に代入して得られるハッシュ値を表す第１のプログラム識別子を記憶するものであってもよい。
この場合、前記ソフトウェア処理手段は、
前記第１の記憶手段より取得した保護対象のソフトウェアのうち、前記領域指定情報により指定される一部を、前記複数のハッシュ関数特定情報が特定するハッシュ関数のいずれかに代入して得られるハッシュ値を表す第２のプログラム識別子を生成するものであってもよく、また、
当該第１のプログラム識別子と、前記第２のプログラム識別子のうち当該第１のプログラム識別子の生成に用いたハッシュ関数と同一のハッシュ関数を用いて生成されたものとが合致するか否かを判別して、合致しないと判別したとき、当該保護対象のソフトウェアの処理を中止するものであってもよい。
【００１０】
また、本発明の第２の観点に係るソフトウェア保護方法は、
保護対象のソフトウェアを記憶する第１の記憶ステップと、
前記保護対象のソフトウェアの一部を指定する領域指定情報、ハッシュ関数を特定するハッシュ関数特定情報、及び、前記保護対象のソフトウェアのうち前記領域指定情報により指定される一部を前記ハッシュ関数に代入して得られるハッシュ値を表す第１のプログラム識別子を記憶する第２の記憶ステップと、
前記保護対象のソフトウェアを前記第１の記憶ステップより取得して処理に供するソフトウェア処理ステップと、より構成され、
前記ソフトウェア処理ステップは、
前記第１の記憶ステップで記憶されている前記保護対象のソフトウェアを取得し、前記第２の記憶ステップで記憶されている前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を取得するステップと、
当該保護対象のソフトウェアのうち、当該領域指定情報により指定される一部を当該ハッシュ関数特定情報が特定するハッシュ関数に代入して得られるハッシュ値を表す第２のプログラム識別子を生成するステップと、
当該第１及び第２のプログラム識別子が合致するか否かを判別して、合致しないと判別したとき、当該保護対象のソフトウェアの処理を中止するステップと、を含む、
ことを特徴とする。
【００１１】
また、本発明の第３の観点に係るプログラムは、
コンピュータを、
保護対象のソフトウェアを記憶する第１の記憶手段と、前記保護対象のソフトウェアの一部を指定する領域指定情報、ハッシュ関数を特定するハッシュ関数特定情報、及び、前記保護対象のソフトウェアのうち前記領域指定情報により指定される一部を前記ハッシュ関数に代入して得られるハッシュ値を表す第１のプログラム識別子を記憶する第２の記憶手段と、に接続され、前記保護対象のソフトウェアを前記第１の記憶手段より取得して処理に供する機能を有するコンピュータを、
前記保護対象のソフトウェアを前記第１の記憶手段より取得し、前記領域指定情報、前記ハッシュ関数特定情報、及び、前記第１のプログラム識別子を前記第２の記憶手段より取得する手段と、
当該保護対象のソフトウェアのうち、当該領域指定情報により指定される一部を当該ハッシュ関数特定情報が特定するハッシュ関数に代入して得られるハッシュ値を表す第２のプログラム識別子を生成する手段と、
当該第１及び第２のプログラム識別子が合致するか否かを判別して、合致しないと判別したとき、当該保護対象のソフトウェアの処理を中止する手段と、
して機能させるためのものであることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ソフトウェア処理の迅速な実行を確保しつつ、あるいはソフトウェア自体の暗号化を伴わずにソフトウェアを保護するためのソフトウェア保護装置、ソフトウェア保護方法及びプログラムが実現される。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を、通信装置を例とし、図面を参照して説明する。
本発明の実施の形態に係る通信装置の構成を図１に示す。図示するように、この通信装置は、送受信回路部１０と、制御部１１と、保護部１２と、表示部１３と、ＬＣＤ（Liquid Crystal Display: 液晶ディスプレイ）ドライバ１４と、操作キー１５と、音声処理部１６と、タイマ１７と、フォントＲＯＭ（Read Only Memory）１８と、スピーカ１９と、マイクロホン２０と、保護部２１と、ＳＩＭ（Subscriber Identity Module）カード２２と、保護部２３と、ＥＥＰＲＯＭ（Electronically Erasable and Programmable ROM）２４と、ＲＯＭ２５と、ＲＡＭ（Random Access Memory）２６と、ＲＡＭ２７とより構成されている。
【００１４】
送受信回路部１０は、変調回路、復調回路、高周波増幅回路及びアンテナなどより構成されている。送受信回路部１０は、送信の動作として、搬送波を生成し、制御部１１より供給されたデータを用いてこの搬送波を公知の手法により変調し、得られた変調波を増幅して、外部の装置へと無線送信する。一方、送受信回路部１０は、受信の動作として、外部の装置が送信した変調波を受信し、受信した変調波を増幅して復調し、復調により得られたデータを制御部１１へと供給する。
【００１５】
ＬＣＤドライバ１４は、制御部１１より供給されたデータが表す文字あるいは画像を表示部１３が表示するよう、表示部１３を制御する。
フォントＲＯＭ１８は、文字の形状を表すフォントデータを記憶するＲＯＭからなっており、ＬＣＤドライバ１４はフォントＲＯＭ１８にアクセスしてこのフォントデータを取得することにより、表示部１３に表示させるべき文字の形状の情報を取得する。
表示部１３は、ＬＣＤなどより構成されており、ＬＣＤドライバ１４の制御に従って文字や画像を表示する。
【００１６】
操作キー１５は、パワーオンスイッチを含む複数のスイッチ等より構成されており、操作者の入力操作に従ったデータを制御部１１へと供給する。
【００１７】
音声処理部１６は、Ｄ／Ａ（Digital-to-Analog）コンバータ、ＡＦ（Audio Frequency）増幅器及びＡ／Ｄ（Analog-to-Digital）コンバータ等より構成されており、制御部１１より供給された、音声を表すデジタル信号をアナログ信号へと変換し、増幅して、増幅されたアナログ信号を用いてスピーカ１９を駆動する。
また、マイクロホン２０が集音した音声を表すアナログ信号を生成して音声処理部１６に供給すると、音声処理部１６は、このアナログ信号を増幅し、デジタル信号へと変換して制御部１１へと供給する。
【００１８】
タイマ１７は、例えば発振器及びカウンタ回路より構成されており、起動の指示が供給されると、この指示に応答して、指示が供給された時点からの経過時間を示すデータを生成し、制御部１１へと連続的に供給する。
【００１９】
制御部１１は、ＣＰＵ（Central Processing Unit）等のプロセッサと、パワーオン待機用の電気回路とより構成されており、後述する処理を実行する。ＲＡＭ２７が備える記憶領域は、制御部１１のワークエリアとして用いられる。
【００２０】
保護部１２、保護部２１及び保護部２３は、それぞれ、ＣＰＵ等のプロセッサあるいは専用の電子回路より構成されている。
保護部１２は、制御部１１がＳＩＭカード２２にアクセスするために供給したデータを暗号化して保護部２１へと供給する。また、制御部１１がＲＡＭ２６にアクセスするために供給したデータを暗号化して保護部２３へと供給する。一方、保護部１２は、保護部２１又は保護部２３より供給された暗号化済みのデータを復号化して、制御部１１へと供給する。
保護部２１は、ＳＩＭカード２２より供給されたデータを暗号化して保護部１２へと供給する。また、保護部１２より供給された暗号化済みのデータを復号化して、ＳＩＭカード２２へと供給する。
保護部２３は、ＲＡＭ２６より供給されたデータを暗号化して保護部１２へと供給する。また、保護部１２より供給された暗号化済みのデータを復号化して、ＲＡＭ２６へと供給する。
【００２１】
従って、制御部１１、ＳＩＭカード２２及びＲＡＭ２６の三者間では、アクセスのための制御データやその他のデータの受け渡しは、保護部１２、保護部２１及び保護部２３を媒介して行われ、保護部１２、保護部２１及び保護部２３の三者間では、データの受け渡しは、受け渡しの対象であるデータが暗号化された状態で行われる。以下では、制御部１１、ＳＩＭカード２２及びＲＡＭ２６の三者間でのデータの受け渡しについては、保護部１２、保護部２１及び保護部２３による上述の媒介を省略して説明を行う。
【００２２】
ＳＩＭカード２２は、複数のハッシュテーブルと、圧縮領域情報と、識別子とを記憶しており、保護部２１に着脱可能に接続される。ＲＡＭ２６は、後述する処理に従って、ＳＩＭカード２２が記憶するハッシュテーブル及び圧縮領域情報を、後述する処理に従って一時記憶する。
【００２３】
ハッシュテーブルは、後述する認証の処理の対象であるプログラムを構成する文字列と、この文字列のハッシュ値とを互いに対応付けて格納するテーブルであり、制御部１１により、識別子の生成のために用いられる。
【００２４】
圧縮領域情報は、認証の処理の対象であるプログラムのうち識別子の生成に用いるべき部分（圧縮領域）を指定する情報からなる。
【００２５】
識別子は、認証対象のプログラムのうち、圧縮領域情報が示す部分のハッシュ値を、１個のハッシュテーブルを参照して特定することにより生成される情報である。識別子には、当該識別子の作成に用いられたハッシュテーブルを識別する情報が付されているものとする。
【００２６】
ＥＥＰＲＯＭ２４は、この通信装置が送受信する変調波の周波数や、通信の相手方の氏名などを示すデータを、制御部１１の書き込みアクセスに従って、自己の記憶領域に記憶する。そして、記憶したこれらのデータを、制御部１１の読み出しアクセスに従って読み出し、また、制御部１１による消去のアクセスに従って、当該記憶領域より消去する。
【００２７】
ＲＯＭ２５は、制御部１１が実行するプログラムを記憶する。ＲＯＭ２５が記憶するプログラムには、認証プログラム、圧縮プログラム及びその他のプログラムがあり、これらのプログラムのうち、認証プログラム及び圧縮プログラムを除いたプログラムは、認証プログラムに従って行われる後述の認証の処理の対象となり、認証に成功した場合のみ、制御部１１により実行される。
【００２８】
次に、この通信装置の動作を、図２を参照して説明する。なお、以下では、保護部２１には、複数のハッシュテーブルと圧縮領域情報とを記憶した状態のＳＩＭカード２２が接続されているものとする。
【００２９】
操作キー１５のパワーオンスイッチが押下されると、この押下があったか否かを繰り返し判別する動作（図２、ステップＳ１）を行っているパワーオン待機用の電気回路は、この押下に応答して、パワーオンの処理を行う（ステップＳ２）。すなわち、図示しない主電源とこの通信装置の各部との間の電流路を接続し、当該各部への電力の供給を開始させる。
【００３０】
パワーオン後まず、制御部１１はＲＯＭ２５より認証プログラムを読み出して、認証プログラムの実行を開始する。
認証プログラムの処理を行う制御部１１はまず、ＳＩＭカード２２へアクセスして、ＳＩＭカード２２が記憶するハッシュテーブル及び圧縮領域情報を取得する。そして、取得したハッシュテーブル及び圧縮領域情報をＲＡＭ２６へと転送し、ＲＡＭ２６に一時記憶させる（ステップＳ３）。
【００３１】
次に制御部１１は、ＲＯＭ２５より圧縮プログラムを読み出して実行することにより、圧縮処理を行う（ステップＳ４）。具体的には、制御部１１は、以下（ａ）〜（ｄ）として示す処理を行う。すなわち、
（ａ）  ステップＳ３でＲＡＭ２６に一時記憶させたハッシュテーブル及び圧縮領域情報をＲＡＭ２６から読み出し、
（ｂ）  ＲＯＭ２５が記憶するプログラムのうち、上記（ａ）の処理で読み出した圧縮領域情報が示す部分をＲＯＭ２５より読み出し、
（ｃ）  一方、ＳＩＭカード２２が記憶する複数のハッシュテーブルのうちいずれを用いるかを、疑似乱数を発生する等の手法により決定し、
（ｄ）  上記（ｂ）の処理で読み出した部分のハッシュ値からなる識別子を、上記（ｃ）の処理で決定したハッシュテーブルを参照して生成する。
【００３２】
次に制御部１１は、生成した識別子に、圧縮処理で当該識別子の生成に用いたハッシュテーブルを識別する情報を付した上でＲＡＭ２６へと転送し、ＲＡＭ２６に記憶させる（ステップＳ５）。ステップＳ５において、ＲＡＭ２６に古い識別子がすでに記憶されている場合は、当該古い識別子を、ステップＳ５で新たに生成した識別子により上書き更新する。
【００３３】
次に制御部１１は、タイマ１７に、起動を指示する。タイマ１７はこの指示に応答して起動する。すなわち、この指示が供給された時点からの経過時間を示すデータを生成して制御部１１へと連続的に供給する動作を開始する（ステップＳ６）。
【００３４】
タイマが起動すると、制御部１１は、タイマが起動した時点又は所定の時間が到来したとステップＳ７で最後に判別した時点のうち最新の時点から起算して、所定の時間が経過したか否かを、タイマが供給するデータに基づいて判別する（ステップＳ７）。そして、経過したと判別すると、ステップＳ４及びＳ５の処理と実質的に同一の処理を行い（ステップＳ８及びＳ９）、次いで、操作キー１５を用いたパワーオフの操作が行われたか否かを判別する（ステップＳ１０）。
【００３５】
ステップＳ１０で、パワーオフの操作が行われていないと判別すると、制御部１１は処理をステップＳ７に戻し、一方、パワーオフの操作が行われたと判別すると、制御部１１は、この操作に応答して、パワーオフの処理を行う（ステップＳ１１）。すなわち、主電源とこの通信装置の各部との間の電流路を切断する。この結果、この通信装置は駆動を停止する（ステップＳ１２）。
【００３６】
一方、ステップＳ７で、所定の時間が経過していないと判別すると、制御部１１は、操作キー１５を用いて所定の制御の要求がなされたか否かを判別する（ステップＳ１３）。ここで「所定の制御」とは、具体的には、例えば「ＲＯＭ２５が記憶するプログラムの実行を必要とする処理」を意味するものとする。ステップＳ１３で、所定の制御の要求がないと判別すると、制御部１１は処理をステップＳ７に戻す。
【００３７】
ステップＳ１３で、所定の制御の要求があったと判別すると、制御部１１は、ＳＩＭカード２２から識別子（当該識別子の作成に用いたハッシュテーブルを識別する情報を含む）を読み出し、また、ＲＡＭ２６からも識別子（当該識別子の作成に用いたハッシュテーブルを識別する情報を含む）を読み出す。そして、ＲＡＭ２６から読み出した識別子が、ＳＩＭカード２２から読み出した識別子のうち、ＲＡＭ２６から読み出した識別子の生成に用いたものと同一のハッシュテーブルを用いて生成された識別子に合致するか否かを判別する（ステップＳ１４）。
そして、合致すると判別すると、制御部１１は、要求があった所定の制御のために実行すべきプログラムをＲＯＭ２５から読み出して実行し（ステップＳ１５）、処理をステップＳ１０に移す。一方、合致しないと判別すると、制御部１１は、ＲＯＭ２５が記憶するプログラムが不正に変更されているものと判断して、処理をステップＳ１１に移す。この結果、この通信装置は駆動を停止する（ステップＳ１２）。
【００３８】
以上説明した動作を行うことにより、この通信装置は、ＲＯＭ２５が記憶するプログラムが不正に変更されているとき、このプログラムが実行されることを阻止する。
ＲＯＭ２５が記憶するプログラムが正規に変更された場合は、当該プログラムの識別子を、ＳＩＭカード２２が記憶するものと同一の各ハッシュテーブルを用いて生成し、ＳＩＭカード２２に記憶させることとすれば、このプログラムの実行は阻止されない。
【００３９】
この通信装置では、ＲＯＭ２５がプログラムを暗号化されていない状態で記憶しており、また、制御部１１とＲＯＭ２５の間でのプログラムの転送も暗号化されていない状態で行われるため、ＲＯＭ２５が記憶するプログラムの認証及び実行を行うにあたり、当該プログラムを復号化する処理は不要であり、従ってプログラムの実行が迅速に行われる。また、ＥＥＰＲＯＭ２４が記憶するデータも暗号化されていないため、当該データを復号化する処理は不要である。
【００４０】
また、保護部１２、保護部２１及び保護部２３の相互間ではプログラム自体の受け渡しは行われないので、これらの保護部により暗号化されたデータが解読されても、プログラムの不正な変更が行われる危険は直ちには生じない。
また、保護部１２、保護部２１及び保護部２３が実行する暗号化及び復号化の処理に際して暗証番号ないし暗号鍵が用いられるとしても、これらの暗証番号ないし暗号鍵は外部からの入力が不要であって、この通信装置の利用者自身もこれらを知る必要はない。従って、暗号化されたデータの不正な解読が行われにくい。
【００４１】
なお、この通信装置の構成は、上述のものに限られない。例えば、この通信装置は、必ずしもデータの無線による送受信を行う装置である必要はなく、プログラムを実行する任意の装置であってよい。また、認証の対象となるプログラムは必ずしもＲＯＭに記憶されている必要はなく、例えばハードディスク装置あるいはその他任意の記憶装置に記憶されていてよい。また、認証の対象となるソフトウェアはプログラムには限られず、制御部１１が実行する処理に供されるデータベースその他任意のソフトウェアが認証の対象となり得る。
【００４２】
また、ステップＳ１３あるいはステップＳ１４の処理を行うタイミングは任意であり、必ずしもタイマ１７が供給するデータに基づいてステップＳ１３の処理を行うか否かを決定する必要はない。
従って、例えば制御部１１が消費電力を低減させるスリープモードに入る機能を有している場合は、図３に示すように、ステップＳ５の処理の後、ステップＳ６の処理を経ることなく直ちに、制御部１１自身がスリープモードに入っているか否かを判別する処理（図３、ステップＳ７Ｂ）を、図２のステップＳ７の処理に代えて行えばよい。そして、スリープモードに入っていると判別したときはステップＳ８へ、一方、スリープモードに入っていないと判別したときはステップＳ１３へと処理を移すようにすればよい。
【００４３】
また、ＲＯＭ２５が認証プログラム及び圧縮プログラム以外のプログラムを複数記憶している場合、プログラムの認証はプログラム別におこなってもよい。この場合、ＳＩＭカード２２は、例えば、認証対象のプログラム別に複数の圧縮領域情報を記憶していればよく、制御部１１は、ステップＳ４及びＳ８では、認証対象のプログラムに対応付けられた圧縮領域情報を、識別子の生成に用いればよい。
【００４４】
また、ＳＩＭカード２２は必ずしもハッシュテーブルを記憶する必要はなく、ハッシュ関数を特定する任意のデータを記憶していればよい。そして、このデータをハッシュテーブルに代えて取得した制御部１１は、当該ハッシュテーブルを参照する処理に代えて、当該データが特定するハッシュ関数に、ＲＯＭ２５が記憶するプログラムのうち圧縮領域情報が指定する部分を代入する処理を実行することにより、識別子を生成すればよい。
【００４５】
以上、この発明の実施の形態を説明したが、この発明にかかるソフトウェア保護装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。
例えば、送信機及び受信機に接続されたコンピュータに上述の通信装置の動作を実行させるためのプログラムを格納した記録媒体（ＣＤ−ＲＯＭ、フレキシブルディスク等）から該プログラムをインストールすることにより、上述の処理を実行する通信装置を構成することができる。
【００４６】
また、例えば、通信回線のＢＢＳにこれらのプログラムをアップロードし、これらを通信回線を介して配信してもよく、また、これらのプログラムを表す信号により搬送波を変調し、得られた変調波を伝送し、この変調波を受信した装置が変調波を復調して該プログラムを復元するようにしてもよい。
そして、これらのプログラムを起動し、ＯＳの制御下に、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
【００４７】
なお、ＯＳが処理の一部を分担する場合、あるいは、ＯＳが本願発明の１つの構成要素の一部を構成するような場合には、記録媒体には、その部分を除いたプログラムを格納してもよい。この場合も、この発明では、その記録媒体には、コンピュータが実行する各機能又はステップを実行するためのプログラムが格納されているものとする。
【図面の簡単な説明】
【００４８】
【図１】本発明の実施形態に係る通信装置の構成を示すブロック図である。
【図２】プログラムの認証の処理の流れを示すフローチャートである。
【図３】プログラムの認証の処理の流れの変形例を示すフローチャートである。。
【図４】従来の技術に係るソフトウェア保護装置の構成を示すブロック図である。
【符号の説明】
【００４９】
１０    送受信回路部
１１    制御部
１２    保護部
１３    表示部
１４    ＬＣＤドライバ
１５    操作キー
１６    音声処理部
１７    タイマ
１８    フォントＲＯＭ
１９    スピーカ
２０    マイクロホン
２１    保護部
２２    ＳＩＭカード
２３    保護部
２４    ＥＥＰＲＯＭ
２５    ＲＯＭ
２６    ＲＡＭ
２７    ＲＡＭ
【図１】
2008171365.tif 000003
【図２】
2008171365.tif 000004
【図３】
2008171365.tif 000005
【図４】
2008171365.tif 000006