JP4017149B2 - Processor with function for preventing unauthorized execution of programs - Google Patents
Processor with function for preventing unauthorized execution of programs Download PDFInfo
- Publication number
- JP4017149B2 JP4017149B2 JP2002288529A JP2002288529A JP4017149B2 JP 4017149 B2 JP4017149 B2 JP 4017149B2 JP 2002288529 A JP2002288529 A JP 2002288529A JP 2002288529 A JP2002288529 A JP 2002288529A JP 4017149 B2 JP4017149 B2 JP 4017149B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- program
- software
- execution
- instruction
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、コンピュータ・システムに提供されるソフトウェア・プログラムの不正な使用・実行を防止する技術に係り、特に、プログラムの不正実行防止機能を備えたプロセッサに関する。
【0002】
【従来の技術】
昨今の技術革新に伴い、コンピュータ・システムは、大学・研究機関の他、企業や一般家庭にも広範に浸透してきている。コンピュータ・システムには、ホスト/メインフレームやオフィス・コンピュータ以外に、比較的安価で一般ユーザも購入可能なワークステーション、パーソナル・コンピュータ(PC)などが挙げられる。特に、PCの急速な普及には目覚ましいものがある。
【0003】
このような技術動向下では、コンピュータ・システム上で稼働する各種ソフトウェアも開発・市販されており、ソフトウェア産業もハードウェア産業に匹敵しあるいは凌駕する隆盛を遂げている。ここで言うソフトウェアには、コンピュータ・システム全体の動作を制御するための「OS(オペレーティング・システム)」や、システム上で各ユーザの目的・業務に適った機能オペレーションを実現するための「アプリケーション」が含まれる。アプリケーション・プログラムは、ワープロ、スプレッドシート、データベース、通信など各種機能・用途のものが揃っている。
【0004】
ユーザは、自身のコンピュータ・システム上に導入したいソフトウェアを、例えばフレキシブル・ディスクやCD−ROMなどのリムーバブル・メディアの形態で購入し、これらメディアを適切なドライブ・ユニットに装填して用いるのが一般的である。また、最近では、インターネットなどの外部ネットワークを経由して、所望のソフトウェアを自身のローカル・ディスクにファイル転送(ダウンロード)する、という形態によってもソフトウェア・プログラムを導入することが可能となっている。
【0005】
但し、ソフトウェア・プログラムを格納したメディアの購入行為は、ソフトウェア・プログラムの限定的な使用権を得たことに過ぎず、購入者はソフトウェア・プログラムの著作権や複製権までも手に入れた訳ではない。ソフトウェア・プログラムの無制限な若しくは無断な複製は、著作権法上、厳に禁止されている行為である(周知)。(なお、ネットワーク経由でダウンロードしたソフトウェア・プログラムについても、その使用は限定的に解釈するのが妥当であろう。)
【0006】
また、ソフトウェア・プログラムを提供するソフトウェア・ベンダーの立場から言えば、有料でプログラム格納メディアを配布することによって収益をあげているのであり、無制限で無断な複製行為が横行していては、本来享受すべき利潤を担保することができない。ソフトウェア・プログラムの不正な使用行為は、ソフトウェア産業に従事する者の開発意欲をも減退させるものであり、ひいては当該産業界の活動自体を沈静化させかねない。このため、ソフトウェア・プログラムの不正使用や無断な複製を禁止する(あるいは未然に防止する)というプロテクションに関する技術が、従来より開発されている。
【0007】
プロテクションの一例は、不正使用を防止したいソフトウェア・プログラムを暗号化してしまうことである。すなわち、ソフトウェア・ベンダーは、暗号化した状態のプログラム格納メディアを有償若しくは無償で配布するとともに、正当なユーザに対してのみ、暗号を解くための鍵を与えることで、メディアに格納されたプログラムの使用を好適に限定することができる訳である。
【0008】
ここで、いかなる媒介によってユーザに鍵を与えるかが問題になる。例えばソフトウェア・ベンダーは、封書などの郵便物によってユーザに鍵を与えることも可能であるが、この場合は鍵の不正使用はいとも簡単である。
【0009】
さらに技術的に高度な方式として、いわゆる「セキュリティ・デバイス」を用いることが挙げられる。この場合、ソフトウェア・ベンダーは、セキュリティ・デバイスを添付してプログラム格納メディアを流通・配布する。セキュリティ・デバイスは、所定の認証手続に必要な識別情報などを含んでおり、例えばユーザのPCのシリアル・ポート又はパラレル・ポートに接続して用いられる。他方、メディアに格納されたプログラムの中には、プログラム自体の機能・用途に特化したオペレーションを行うための本ルーチンの他に、幾つかのチェック・ポイント(すなわち「認証ルーチン」)を含んでいる。
【0010】
認証ルーチンの一例は、各チェック・ポイントにおいて、プログラムを実行中のCPU(Central Processing Unit)がセキュリティ・デバイスにアクセスして識別情報を読み出し、これがプログラムの持つ識別情報と一致するかどうかを照合して、一致しているときのみCPUがプログラムを続行することを許可する、というものである。
【0011】
また、認証ルーチンの他の例は次の通りである。すなわち、プログラム実行中のCPUがある規則に従ったコードをセキュリティ・デバイスに書き込む。セキュリティ・デバイスでは、受け取ったコードを用いてスクランブル又は暗号化した識別情報を用意しておく。さらに、CPUはスクランブル又は暗号化された識別情報を読み出し、これをプログラムによってデスクランブル又は復号化してプログラムが所有する識別情報と照合する。照合が成功裡に終わったときのみ、CPUによるプログラムの続行が許可される。CPUとセキュリティ・デバイスの間は、CPUチップ外部のバスを介して接続されているので、スクランブルや暗号化を行うことによって、バス・スヌープによる認証ルーチンの解読を防止することができる。
【0012】
これらセキュリティ・デバイスを用いた2つの例は、プログラム実行中のCPUに対する命令(インストラクション)によって認証処理が行われる、という点では共通している。
【0013】
セキュリティ・デバイスを用いることにより、セキュリティ・レベルをかなりの程度向上させることができよう。また、ソフトウェア・プログラムの使用権をセキュリティ・デバイスを装着したただ1つのコンピュータ・システムのみに限定することができよう。しかしながら、この方式とて万全とは言い難い。例えば、ロジック・アナライザ(周知)を用いれば、バス・トランザクションを容易にモニタすることができるので、認証ルーチンを解析して、識別情報や暗号の鍵の正体を見破ることもできよう。
【0014】
さらにセキュリティ・レベルを向上させるために、セキュリティ・デバイスへの入力値を逐次変更する、という対策も採られている。しかしながら、ICE(InCircuitEmulator)/*/などの装置を用いればソフトウェアを比較的容易に逆アセンブルすることができ、そうなればセキュリティ・デバイスへのアクセス・ルーチン(すなわち認証ルーチン)を無条件ジャンプするようにプログラムを改ざんすることも可能である。
【0015】
本発明者の考察によれば、ソフトウェア・プログラムのプロテクションを強化するためには、まず第一に、セキュリティ動作がプログラム実行に必須であるようにデザインすることが好ましい。この意味において、メディアに格納されたプログラム自身が認証ルーチンを含んでいるという上記従来例は適合している。さらに、この認証ルーチンは、外部からのアクセス・変更が不可能な形態でなければならない。セキュリティ・デバイスを用いた上記従来例の場合、認証ルーチンはシステム・オペレーションの形態で実装され、外観には現れないが、技術的には判読が可能である(前述)。要言すれば、外部アクセス可能な従来のプロテクション方式では、プログラムの保護は万全とは言い難いのである。
【0016】
《注釈》
ICEは、通常はプログラムやハードウェア開発を支援するために使用される装置であり、CPUの代わりにCPUソケットに差すことによって、CPUと全く同じ動作をするようになっている。ICEは、CPUと違って、バスのアクセスやレジスタの値をインストラクション毎に読み出すことが可能である。このようなICEのインストラクション・トレース機能を用いれば、外部デバイスのアドレスをトリガにしてソフトウェア・プログラムの中から認証ルーチンを探し出すことができる。さらに、プログラム・アドレスに違法なパッチを当てれば、セキュリティ・デバイスにアクセスせずにプログラム実行を継続するように改ざんすることができる。
【0017】
【発明が解決しようとする課題】
本発明の目的は、コンピュータ・システムに提供されるソフトウェア・プログラムの不正な使用・実行を防止する優れた技術を提供することにある。
【0018】
本発明の更なる目的は、外部から監視・変更することができない、プログラムの不正実行防止機能を備えた優れたプロセッサを提供することにある。
【0019】
【課題を解決するための手段】
本発明は、上記課題を参酌してなされたものであり、その第1の側面は、メイン・メモリを管理する機能を持つメモリ管理ユニットを内蔵するとともに、自身を動作させるためのインストラクション・セットを有するタイプの、プログラムの不正実行防止機能付きプロセッサであって、前記インストラクション・セット中には前記メイン・メモリ上のプログラム・コードの実行を許可する実行許可インストランションが含まれ、前記実行許可インストラクションは、実行すべきプログラムの識別番号とアドレス情報・属性情報を前記メモリ管理ユニットに与える動作の他に、所定の認証動作を含む、ことを特徴とするプログラムの不正実行防止機能付きプロセッサである。
【0020】
ここで、前記所定の認証動作は、前記プロセッサ内部に格納された識別情報と前記プロセッサの外部から供給された識別情報との比較動作を含んでいてもよい。
【0021】
認証に用いられる識別情報は、前記プロセッサに固有のプロセッサIDとソフトウェア・プログラムに固有のソフトウェアIDとで構成されていてもよい。
【0022】
あるいは、識別情報は、前記プロセッサが内部的に発生した乱数とソフトウェア・プログラムに固有のソフトウェアIDとで構成されていてもよい。
【0023】
また、前記所定の認証動作が成功裡に終わったときには実行すべきプログラムの識別番号とアドレス情報・属性情報を前記メモリ管理ユニットに与える動作を許可するが、前記所定の認証動作が失敗したときには実行すべきプログラムの識別番号とアドレス情報・属性情報を前記メモリ管理ユニットに与える動作を禁止するようにしてもよい。
【0024】
第2の側面に係る不正実行防止機能付きプロセッサは、さらに、前記プロセッサIDを暗号化して前記バス・インターフェース経由で外部に出力する暗号化手段と、暗号化された識別情報を前記バス・インターフェース経由で外部から受け取るとともに復号化してプロセッサIDとソフトウェアIDを取り出す復号化手段とを含み、前記所定の認証動作は各ID同士の比較動作を含んでいてもよい。
【0025】
また、本発明の第2の側面は、メイン・メモリ上にプログラム・コードやデータを読み出し/書き込み動作しながら所定の処理を実行するタイプの、プログラムの不正実行防止機能付きプロセッサであって、前記プロセッサの外部とインストラクションやデータの授受を行うバス・インターフェースと、受け取ったインストラクションの解読を行うデコーダと、1以上のインストラクションについての手順を格納した内蔵メモリと、1以上のインストラクションについての手順を実装した論理回路と、前記内蔵メモリに格納された手順や前記論理回路に実装された手順に従ってインストラクションを実行する制御ユニットと、前記プロセッサに固有のプロセッサIDと、前記メイン・メモリを管理する機能を持つメモリ管理ユニットとを含み、前記内蔵メモリ又は前記論理回路のうちの1つは前記メイン・メモリ上のプログラム・コードの実行を許可する実行許可インストラクションの手順を格納しており、且つ、前記実行許可インストラクションの手順は、実行すべきプログラムの識別情報とアドレス情報・属性情報を前記メモリ管理ユニットに与える動作の他に、所定の認証動作を含む、ことを特徴とするプログラムの不正実行防止機能付きプロセッサ。
【0026】
第2の側面に係る不正実行防止機能付きプロセッサは、さらに、前記プロセッサIDを暗号化して前記バス・インターフェース経由で外部に出力する暗号化手段と、暗号化された識別情報を前記バス・インターフェース経由で外部から受け取るとともに復号化してプロセッサIDとソフトウェアIDを取り出す復号化手段とを含み、前記所定の認証動作は各ID同士の比較動作を含んでいてもよい。
【0027】
また、前記所定の認証動作が成功裡に終わったときには実行すべきプログラムの識別番号とアドレス情報・属性情報を前記メモリ管理ユニットに与える動作を許可するが、前記所定の認証動作が失敗したときには実行すべきプログラムの識別番号とアドレス情報・属性情報を前記メモリ管理ユニットに与える動作を禁止するようにしてもよい。
【0028】
また、本発明の第3の側面は、メイン・メモリ上にプログラム・コードやデータを読み出し/書き込み動作しながら所定の処理を実行するタイプの、プログラムの不正実行防止機能付きプロセッサであって、前記プロセッサの外部とインストラクションやデータの授受を行うバス・インターフェースと、受け取ったインストラクションの解読を行うデコーダと、1以上のインストラクションについての手順を格納した内蔵メモリと、1以上のインストラクションについての手順を実装した論理回路と、前記内蔵メモリに格納された手順や前記論理回路に実装された手順に従ってインストラクションを実行する制御ユニットと、乱数発生ユニットと、前記メイン・メモリを管理する機能を持つメモリ管理ユニットとを含み、前記内蔵メモリ又は前記論理回路のうちの1つは前記メイン・メモリ上のプログラム・コードの実行を許可する実行許可インストラクションの手順を格納しており、且つ、前記実行許可インストラクションの手順は、実行すべきプログラムの識別情報とアドレス情報・属性情報を前記メモリ管理ユニットに与える動作の他に、所定の認証動作を含む、ことを特徴とするプログラムの不正実行防止機能付きプロセッサである。
【0029】
第3の側面に係る不正実行防止機能付きプロセッサは、さらに、前記乱数発生ユニットが発生する乱数を前記バス・インターフェース経由で外部に出力する乱数出力手段と、暗号化された識別情報を前記バス・インターフェース経由で外部から受け取るとともに復号化して乱数とソフトウェアIDを取り出す復号化手段とを含み、前記所定の認証動作は乱数及びソフトウェアIDの比較動作を含んでいてもよい。
【0030】
また、前記所定の認証動作が成功裡に終わったときには実行すべきプログラムの識別番号とアドレス情報・属性情報を前記メモリ管理ユニットに与える動作を許可するが、前記所定の認証動作が失敗したときには実行すべきプログラムの識別番号とアドレス情報・属性情報を前記メモリ管理ユニットに与える動作を禁止するようにしてもよい。
【0031】
【作用】
本発明に係るプロセッサは、メイン・メモリ上のコード/データの格納動作を管理するためのメモリ管理ユニットを内蔵するタイプであり、且つ、インストラクション・セットの1つとして、メイン・メモリ上のプログラム・コード(アプリケーション)の実行を許可する実行許可インストラクションを含んでいる。
【0032】
この種の実行許可インストラクションは、一般には、実行すべきプログラムの識別番号と、プログラムの格納アドレス、プログラムの属性情報をメモリ管理ユニットにセットする、という手続(例えば"LOAD MMU …"というコードで記述される)を含んでいる。インストラクションの手続はマイクロプログラムによって定義される。
【0033】
本発明では、この実行許可インストラクションは、メモリ管理ユニットに所定のデータをセットする手続の他に、プログラムの使用権を認証するための認証手続を含んでいる。この認証動作は、例えば、プロセッサ内部で保持された識別情報と、プロセッサの外部(例えばソフトウェア・プログラムの供給者)から供給された識別情報との比較によって行われる。そして、この認証処理が成功裡に終わったときのみ、ソフトウェア・プログラムの実行が許可される。
【0034】
認証手続に用いる識別情報は、例えば、プロセッサに固有(例えば製造時に与えられる)プロセッサIDと、ソフトウェア・プログラムに固有に与えられるソフトウェアIDとで構成される。あるいは、識別情報は、プロセッサが時々刻々発生する乱数と、ソフトウェア・プログラムに固有に与えられるソフトウェアIDとで構成される。
【0035】
このような認証動作は、プロセッサ内部で実行されるので、外部から監視・検出することは殆ど不可能である。また、認証手続は、プログラムの実行許可を意味するインストラクションを記述したマイクロプログラムの中に含まれているので、そもそも認証手続の存在自体が外部から隠された格好となる。したがって、本発明によればプログラムの不正実行の防止を大幅に強化することができる。
【0036】
また、認証処理に用いる識別情報として、プロセッサ・チップが固有に持つプロセッサIDを使用することによって、ある特定のソフトウェア・プログラムの使用権を単一のプロセッサに限定することができる。この意味においても、プログラムの不正実行は強固に禁止されていると言えよう。
【0037】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【0038】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施例を詳解する。
【0039】
第1の実施の形態
図1には、本発明の第1の実施形態に係るコンピュータ・システム200及びプロセッサ100のハードウェア構成を模式的に示している。コンピュータ・システム200は、システム200の中核的な制御を行うプロセッサ100の外に、メイン・メモリ50や各種周辺装置を含んでいる。以下、各部について説明する。
【0040】
プロセッサ100の外部ピンに直結したプロセッサ・バス101は、ブリッジ回路60経由でシステム・バス70に接続されている。ブリッジ回路60は、プロセッサ・バス101とシステム・バス70間の動作速度の相違を吸収するためのデータ・バッファや、メイン・メモリ50へのアクセス動作を制御するためのメモリ・コントローラを含んでいる。
【0041】
メイン・メモリ50は、プロセッサ100が実行するプログラム・コードや処理データを一時格納するための読み書き可能メモリであり、通常は、1以上のDRAM(ダイナミックRAM)チップで構成される。メイン・メモリ50上で展開されるメモリ空間は、メモリ管理ユニット15(後述)によって管理される。
【0042】
システム・バス70には、PCI(Peripheral Component Interconnect)バスやISA(Industry Standard Architecture)バスが該当し、各種周辺装置が相互接続されている。周辺装置には、例えばキーボードやディスプレイなどのコンソール類(図示しない)、ハード・ディスク・ドライブ(HDD)81、フレキシブル・ディスク・ドライブ(FDD)82、CD−ROMドライブ83などの外部記憶装置類、外部ネットワークと接続するためのネットワーク・インターフェース・カード(NIC)90、シリアル・ポート経由でシリアル・データの入出力を行うためのシリアルI/Oコントローラ91などが含まれる。なお、バス70上の動作は、ロジック・アナライザなどを用いて解析することができる。
【0043】
ソフトウェア供給業者は、通常、フレキシブル・ディスクやCD−ROMなどの記憶媒体の形態でソフトウェア・プログラムを一般ユーザに配布する。各ユーザは、これら記憶媒体を所定のドライブ・ユニットに装填し、HDD81にコピーすることによって、ソフトウェア・プログラムをシステム200にインストールすなわち利用可能な状態に置くようになっている。また、最近では、インターネットなどの外部ネットワーク経由でソフトウェア・プログラムが配布されることも多くなってきている(周知)。
【0044】
プロセッサ100は、当業界においてCPU(Central Processing Unit)若しくはMPU(Micro Processing Unit)と呼ばれるものである。プロセッサ100は、通常はマザー・ボード(図示しない)上に搭載される回路チップであり、各入出力装置(図示しない)を制御してデータの授受を行ったり、データを演算処理し、処理結果をメイン・メモリ50上に記憶したりするなどのコンピュータ・システム200の中枢機能を果たしている。
【0045】
図1に示すように、本実施形態に係るプロセッサ100は、バス・インターフェース11と、デコーダ12と、制御ユニット13と、マイクロコードROM14と、メモリ管理ユニット15と、プロセッサID16と、暗号化復号化ユニット17とを含んでいる。
【0046】
バス・インターフェース11は、プロセッサ100外部のコンポーネントととの間でインストラクションやデータを授受するためのユニットである。バス・インターフェース11は、プロセッサ・バス101と直結している。なお、プロセッサ・バス101は、ブリッジ回路60を経由してメイン・メモリ50やシステム・バス70と相互接続されている。
【0047】
デコーダ12は、バス・インターフェース11経由で受け取ったインストラクションを解釈して、制御ユニット13が理解できる形式に変換するためのユニットである。
【0048】
制御ユニット13は、インストラクションを実行する手順を整えるユニットである。実行するインストラクションは、ワイヤード・ロジック(配線論理)で実行するタイプと、マイクロ・プログラムで実行するタイプの2つに大別される。前者の場合は、インストラクションの実行制御に必要な論理を直線的に実装した順序回路が用いられる。また、後者の場合には、インストラクションはマイクロコード(又はピココード)と呼ばれるさらに細かいコードの集合(すなわちマイクロプログラム)で構成されており、該当するマイクロプログラムをマイクロコードROM14から読み出して実行することになる。なお、1つのプロセッサで利用できるインストラクション全体を「インストラクション・セット」と呼ぶ。
【0049】
マイクロコードROM14は、インストラクションの実行に必要なマイクロコードを格納した読み出し専用メモリである。言い換えれば、マイクロコードROM14は、各インストラクションの実行手順を定義した不揮発メモリである。例えば、"LOAD"、"STORE"、"MOVE"などのインストラクションは、ある変数をプロセッサ100内のレジスタ(図示しない)に書き込むためのインストラクションであるが、これらの動作の詳細をマイクロコードROM14内で記述することによって定義することができる。
【0050】
メモリ管理ユニット(MMU)15は、プログラム・コードやデータをメイン・メモリ50上に展開するなど、プロセッサ100のメモリ空間を管理するためのユニットである。メモリ管理ユニット15は、通常、仮想記憶機能とメモリ保護機能という2つの機能を提供している。仮想記憶機能とは、論理アドレスを物理アドレスに変換したり、物理アドレスに該当するブロック(ページ)がメイン・メモリ上に存在しないときに外部記憶装置との間でブロック(ページ)の入れ替え(すなわち「スワッピング」)を行う機能のことである。また、メモリ保護機能とは、1つのプログラムで生じた障害が他のプログラムに影響を及ぼさないようにする機能のことである。
【0051】
また、メモリ管理ユニット15は、メモリ空間上に存在する各プログラムのアドレス情報や属性情報を管理するためのMMUテーブルを備えている。図2には、MMUテーブルの構造や機能を模式的に図解している。MMUテーブルの各エントリは、該当するプログラムのアドレスとフラグを格納する各フィールドを含んでいる。フラグはプログラムの属性情報(例えばプログラムが実行形式か、読み出し専用か、読み書き可能か)を示している。
【0052】
メモリ空間上の各プログラムは、夫々に固有のプログラムIDを有している。あるプログラムをプロセッサ100に実行させるためには、メモリ管理ユニット15にプログラムIDとそのアドレス情報・属性情報を与える旨のプログラム・コードを制御ユニット13に供給すればよい。メモリ管理ユニット15は、自身のMMUテーブルを参照して、該当するプログラムの実行を許可する仕組みとなっている。下式は、あるプログラムの実行を許可するための疑似コードを記述したものである。
【0053】
【数1】
Mov R1,Program_ID
(レジスタR1にプログラムIDをセットせよ)
Mov R2,Memory_Address_&Flag
(レジスタR2にアドレスとフラグをセットせよ)
Load MMU, R1,R2
(メモリ管理ユニットにレジスタR1とR2の内容をセットせよ)
Jmp Application
(アプリケーションにジャンプせよ)
【0054】
上記コード中の"Mov"や"Load"などは、プロセッサ100に対するインストラクションであり、レジスタへの変数のセット等を意味する。各インストランションの詳細な実行手順は、ワイヤード・ロジック又はマイクロコードROM14で定義されたマイクロプログラムのいずれかの形態で定義されている(上述)。
【0055】
上記疑似コードのうち"Load MMU …"なるステップは、実質上、アプリケーションの実行を許可するためのインストラクションである。本実施例では、この"Load MMU …"インストラクションは、マイクロプログラムという形態で実装され、メモリ管理ユニット15への変数セットの他に、所定の認証手続が含まれている。
【0056】
この認証手続は、マイクロプログラム中で記述されているので、プロセッサ100の外部からは認証手続の存在自体が見えない。認証手続は、プロセッサ・チップ100内部で完結的に実行されるので、この動作を外部から監視することは殆ど不可能である。したがって、"Load MMU …"インストラクションを発行した外部プログラムからは全く見えない状態で、プロセッサ100はこの認証手続を実行することができる。但し、認証手続の詳細は後述する。
【0057】
プロセッサID16は、プロセッサ100に固有の識別情報(通常はシリアルな番号で構成される)であり、例えば製造時に一義的に付与される。プロセッサID16の実体は、不揮発メモリ(図示しない)に書き込まれた数値・文字データであり、制御ユニット13によって適宜読み出される。
【0058】
暗号化復号化ユニット17は、所定のデータを暗号化したり、逆に暗号化されたデータを復号化するための演算ユニットである。例えば、プロセッサID16のような秘匿性の高いデータは、暗号化復号化ユニット17によって予め暗号化してから、バス・インターフェース11経由でプロセッサ100の外部に出力される。逆に、暗号化されたデータ(例えばソフトウェア供給者から渡されるKey:後述)の復号化も行う。
【0059】
暗号化及び復号化の方式は、共通鍵、公開鍵のうちいずれの方式を採用してもよい。後者の公開鍵方式は、公開鍵と秘密鍵という一組の暗号鍵が用いられ、一方の鍵で暗号化したときには他方の鍵でしか復号化できない。例えば、第3者が公開鍵で暗号化したデータは秘密鍵を持つ本人しか復号化できないので、秘密情報を安全に交換することができる(周知)。
【0060】
なお、プロセッサ100を構成するためには、図1に示した以外にも多くのユニット等が必要である。図1から省略されたユニットの例は、整数同士の算術演算と論理演算(AND,OR,NOT)を担当するALU(Arithmetic and Logic Unit)や、実数(浮動小数点等)演算を担当するFPU(Floating-Point Unit)、インストラクションの実行手順を直線的に実装した配線論理回路(PLA:Programmable Logic Array)、入出力用のレジスタなどである。但し、これらは当業者には周知であり、また、本発明の要旨を構成するものではないので、本明細書中では省略している。また、図面の錯綜を回避するため、図中の各ハードウェア・ブロック間の接続も一部しか図示していない点を了承されたい。
【0061】
次いで、プロセッサ100によるプログラム保護動作について、図3を参照しながら説明する。
【0062】
ソフトウェア供給業者は、保護対象たるソフトウェア・プログラムをフレキシブル・ディスク又はCD−ROMなどの記憶媒体に格納した形態で、市場に流通する。このソフトウェア・プログラムには、固有の識別情報すなわちソフトウェアID(通常はシリアルな番号で構成される)が付されている。ユーザは、フレキシブル・ディスク又はCD−ROMなどの記憶媒体をソフトウェア供給業者から購入するという形態で、ソフトウェア・プログラムの限定的な使用権を取得する(記憶媒体の購入は、ソフトウェァの著作権や無制限な使用権を全く意味しない点に充分留意されたい)。そして、ユーザは、記憶媒体を所定のドライブ・ユニット81/82に装填して、ソフトウェア・プログラムをシステム200のハード・ディスク81上にインストールする。
【0063】
このインストール作業には、プロセッサID16を共通鍵により暗号化する手続(ステップS100)と、暗号化したプロセッサIDをソフトウェア供給業者に送付する手続(ステップS102)を含んでいる。暗号化処理は、暗号化復号化ユニット17を用いて行われる。送付手続は、ソフトウェア業者に対するKey(後述)の要求を意味する。なお、送付手続は、郵送に依る他、NIC90で接続された外部ネットワーク経由での伝送という形態で行ってもよい。
【0064】
ソフトウェア供給業者は、受け取った暗号情報を復号化して、元のプロセッサIDを得る(ステップS104)。そして、このプロセッサIDと、業者自身が手元で管理しているソフトウェアIDとを一体化して、共通鍵により暗号化することによってKeyを生成する(ステップS106)。Keyは、プロセッサIDとソフトウェアIDとを1つのコードとして同時に暗号化したものであり、各々に切り離すことはできない。Keyは、ソフトウェアの使用不能状態を解く鍵としての性質を持ち、郵送あるいはネットワーク経由でユーザに返送される(ステップS108)。
【0065】
このKeyを取得した状態で、コンピュータ・システム200上でソフトウェア・プログラムの実行が促されたとする。これは、例えばOS(オペレーティング・システム)のような外部プログラムが"LOAD MMU…"のような実行許可インストラクションを発行して、メモリ管理ユニット15にプログラムIDとプログラムの格納番地/属性情報がセットすることにより、実現される。
【0066】
本実施例の実行許可インストラクションに該当する処理手続は、図3の破線ブロックで囲まれている。実行許可は、メモリ管理ユニット15への各変数のセット以外に所定の認証手続を含んでいる。
【0067】
当該インストラクションが発行されると、プロセッサ100は、まず、受け取っているKeyを復号化して、プロセッサIDとソフトウェアIDとを取得する(ステップS110)。復号化処理は、暗号化復号化ユニット17を用いて行われる。
【0068】
次いで、プロセッサ100は、復号化して得られたプロセッサIDとソフトウェアIDを、プロセッサ100自身に内蔵されたプロセッサID、及び装填した記憶媒体から得られたソフトウェアIDの各々と比較する(ステップS112)。
【0069】
この比較の結果、照合に失敗したならば、メモリ管理ユニット15によるプログラムの実行は拒否される(ステップS114)。他方、照合が成功裡に終わったならば、メモリ管理ユニット15によるプログラムの実行は肯定され(ステップS116)、プログラムが実行される(ステップS118)。
【0070】
このような実行許可インストラクションの手続は、例えばマイクロコードROM14中で、上述のようなインストラクションの処理手続を記述することによって実現可能である。
【0071】
ステップS110〜S116は、"Load MMU …"という単一のインストラクションで実行される。該インストラクションを記述した疑似マイクロプログラム・コードを、以下に示しておく。
【0072】
【数2】
【0073】
このようなマイクロプログラムに従った認証手続は、外部プログラムからは全く見えない状態で実行される。本実施例に係る認証手続は、プロセッサ・チップ100内部で完結されるので、プロセッサ100外部からの監視は殆ど不可能なのである。
【0074】
第2の実施の形態
本発明の第2の実施例は、図1に示したものと等価なハードウェア構成により具現される。但し、第1の実施例との相違点は、共通鍵ではなく公開鍵方式で暗号化する点にある。図4には、第2の実施例に係るプログラム保護動作をフローチャートにして示している。以下、図4を参照しながら説明する。
【0075】
ソフトウェア供給業者は、保護対象たるソフトウェア・プログラムをレキシブル・ディスク又はCD−ROMなどの記憶媒体に格納した形態で、市場に流通する。このソフトウェア・プログラムには、固有の識別情報すなわちソフトウェアID(通常はシリアルな番号で構成される)が付されている。ユーザは、フレキシブル・ディスク又はCD−ROMなどの記憶媒体をソフトウェア供給業者から購入するという形態で、ソフトウェア・プログラムの限定的な使用権を取得する(記憶媒体の購入は、ソフトウェァの著作権や無制限な使用権を全く意味しない点に充分留意されたい)。そして、ユーザは、記憶媒体を所定のドライブ・ユニット81/82に装填して、ソフトウェア・プログラムをシステム200のハード・ディスク81上にインストールする。
【0076】
このインストール作業には、プロセッサID16を暗号化する手続(ステップS200)と、暗号化したプロセッサID及びプロセッサ100に内蔵された公開鍵をソフトウェア供給業者に送付する手続(ステップS202)を含んでいる。暗号化処理は、暗号化復号化ユニット17が、ソフトウェア供給業者から与えられた公開鍵を用いて行われる。送付手続は、ソフトウェア供給業者に対するKey(後述)の要求を意味する。なお、送付手続は、郵送に依る他、NIC90で接続された外部ネットワーク経由での伝送という形態で行ってもよい。
【0077】
ソフトウェア供給業者は、受け取った暗号情報を、自分の秘密鍵を用いて復号化して、元のプロセッサIDを得る(ステップS204)。そして、このプロセッサIDと、業者自身が手元で管理しているソフトウェアIDとを一体化して、再びプロセッサ100の公開鍵を用いて暗号化して、Keyを生成する(ステップS206)。Keyは、プロセッサIDとソフトウェアIDとを1つのコードとして同時に暗号化したものであり、各々に切り離すことはできない。Keyは、ソフトウェアの使用不能状態を解く鍵としての性質を持ち、郵送あるいはネットワーク経由でユーザに返送される(ステップS208)。
【0078】
このKeyを取得した状態で、コンピュータ・システム200上でソフトウェア・プログラムの実行が促されたとする。これは、例えばOS(オペレーティング・システム)のような外部プログラムが"LOAD MMU…"のような実行許可インストラクションを発行して、メモリ管理ユニット15にプログラムIDとプログラムの格納番地/属性情報がセットすることにより、実現される。
【0079】
本実施例の実行許可インストラクションに該当する処理手続は、図4の破線ブロックで囲まれている。実行許可は、メモリ管理ユニット15への各変数のセット以外に所定の認証手続を含んでいる。
【0080】
当該インストラクションが発行されると、プロセッサ100は、受け取っているKeyを復号化して、プロセッサIDとソフトウェアIDとを取得する(ステップS210)。復号化処理は、暗号化復号化ユニット17が、プロセッサ100自身に内蔵された秘密鍵を用いて行う。
【0081】
次いで、プロセッサ100は、復号化して得られたプロセッサIDとソフトウェアIDを、プロセッサ100自身に内蔵されたプロセッサID、及び装填した記憶媒体から得られたソフトウェアIDの各々と比較する(ステップS212)。
【0082】
この比較の結果、照合に失敗したならば、メモリ管理ユニット15によるプログラムの実行は拒否される(ステップS214)。他方、照合が成功裡に終わったならば、メモリ管理ユニット15によるプログラムの実行は肯定され(ステップS216)、プログラムが実行される(ステップS218)。
【0083】
このような実行許可インストラクションの手続は、例えばマイクロコードROM14中で、上述のようなインストラクションの処理手続を記述することによって実現可能である。
【0084】
ステップS210〜S216は、"Load MMU …"という単一のインストラクションで実行される。該インストラクションを記述した疑似マイクロプログラム・コードを、以下に示しておく。
【0085】
【数3】
【0086】
このようなマイクロプログラムに従った認証手続は、外部プログラムからは全く見えない状態で実行される。本実施例に係る認証手続は、プロセッサ・チップ100内部で完結されるので、プロセッサ100外部からの監視は殆ど不可能なのである。
【0087】
第3の実施の形態
本発明の第3の実施例は、プロセッサ100が持つプロセッサIDを用いず、これに代わって時々刻々発生する乱数を用いるとともに、セキュリティ・デバイス95との協働的動作によってプログラム保護を行う点で、上述の第1及び第2の実施例とは相違する。
【0088】
図5には、本発明の第3の実施の形態に係るコンピュータ・システム200及びプロセッサ100のハードウェア構成を模式的に示している。以下、各部について説明する。
【0089】
プロセッサ100の外部ピンに直結したプロセッサ・バス101は、ブリッジ回路60経由でシステム・バス70に接続されている。ブリッジ回路60は、プロセッサ・バス101とシステム・バス70間の動作速度の相違を吸収するためのデータ・バッファや、メイン・メモリ50へのアクセス動作を制御するためのメモリ・コントローラを含んでいる。
【0090】
メイン・メモリ50は、プロセッサ100が実行するプログラム・コードや処理データを一時格納するための読み書き可能メモリであり、通常は、1以上のDRAM(ダイナミックRAM)チップで構成される。メイン・メモリ50上で展開されるメモリ空間は、メモリ管理ユニット15によって管理される。
【0091】
システム・バス70には、PCI(Peripheral Component Interconnect)バスやISA(Industry Standard Architecture)バスが該当し、各種周辺装置が相互接続されている。周辺装置には、例えばキーボードやディスプレイなどのコンソール類(図示しない)、ハード・ディスク・ドライブ(HDD)81、フレキシブル・ディスク・ドライブ(FDD)82、CD−ROMドライブ83などの外部記憶装置類、外部ネットワークと接続するためのネットワーク・インターフェース・カード(NIC)90、シリアル・ポート経由でシリアル・データの入出力を行うためのシリアルI/Oコントローラ91などが含まれる。なお、バス70上の動作は、ロジック・アナライザなどを用いて解析することができる。
【0092】
本実施例では、シリアル・ポートにはセキュリティ・デバイス95が外部接続されている。セキュリティ・デバイス95は、保護対象たるソフトウェア・プログラムに付随する性質を持ち、ソフトウェアIDを格納する他、共通鍵又は公開鍵いずれかの方式による暗号化ユニットを含んでいる。セキュリティ・デバイス95の動作については後述する。
【0093】
ソフトウェア供給業者は、通常、フレキシブル・ディスクやCD−ROMなどの記憶媒体の形態でソフトウェア・プログラムを配布する。各ユーザは、これら記憶媒体を所定のドライブ・ユニットに装填し、HDD81にコピーすることによって、ソフトウェア・プログラムをシステムにインストールすなわち利用可能な状態に置くようになっている。また、最近では、インターネットなどの外部ネットワーク経由でソフトウェア・プログラムが配布されることも多くなっている。
【0094】
プロセッサ100は、当業界においてCPU(Central Processing Unit)若しくはMPU(Micro Processing Unit)と呼ばれるものである。プロセッサ100は、通常はマザー・ボード(図示しない)上に搭載される回路チップであり、各入出力装置(図示しない)を制御してデータの授受を行ったり、データを演算処理し、処理結果をメイン・メモリ50上に記憶したりするなどのコンピュータ・システム(図示しない)の中枢機能を果たしている。
【0095】
図5に示すように、本実施形態に係るプロセッサ100は、バス・インターフェース11と、デコーダ12と、制御ユニット13と、マイクロコードROM14と、メモリ管理ユニット15と、暗号化復号化ユニット17と、乱数発生ユニット18とを含んでいる。
【0096】
バス・インターフェース11は、プロセッサ100外部のコンポーネントとの間でインストラクションやデータを授受するためのユニットである。バス・インターフェース11は、プロセッサ・バス17と直結している。なお、プロセッサ・バス17は、ブリッジ回路60を経由してメイン・メモリ50やシステム・バス70と相互接続されている。
【0097】
デコーダ12は、バス・インターフェースで受け取ったインストラクションを解釈して、制御ユニット13が理解できる形式に変換するためのユニットである。
【0098】
制御ユニット13は、インストラクションを実行する手順を整えるユニットである。実行するインストラクションは、ワイヤード・ロジック(配線論理)で実行するタイプと、マイクロ・プログラムで実行するタイプの2つに大別される。前者の場合は、インストラクションの実行制御に必要な論理を直線的に実装した順序回路が用いられる。また、後者の場合には、インストラクションはマイクロコード(又はピココード)と呼ばれるさらに細かいコードの集合(すなわちマイクロプログラム)で構成されており、該当するマイクロプログラムをマイクロコードROM14から読み出して実行することになる。なお、1つのプロセッサで利用できるインストラクション全体を「インストラクション・セット」と呼ぶ。
【0099】
マイクロコードROM14は、インストラクションの実行に必要なマイクロードを格納した読み出し専用メモリである。言い換えれば、マイクロコードROM14は、各インストラクションの実行手順を定義した不揮発メモリである。例えば、"LOAD"、"STORE"、"MOVE"などのインストラクションは、ある変数をプロセッサ100内のレジスタ(図示しない)に書き込むためのインストラクションであるが、これらの動作の詳細をマイクロコードROM14内で記述することによって定義することができる。
【0100】
メモリ管理ユニット(MMU)15は、プログラム・コードやデータをメイン・メモリ上に展開するなど、プロセッサ100のメモリ空間を管理するためのユニットである。メモリ管理ユニット15は、通常、仮想記憶機能とメモリ保護機能という2つの機能を提供している。仮想記憶機能とは、論理アドレスを物理アドレスに変換したり、物理アドレスに該当するブロック(ページ)がメイン・メモリ上に存在しないときに外部記憶装置との間でブロック(ページ)の入れ替え(すなわち「スワッピング」)を行う機能のことである。また、メモリ保護機能とは、1つのプログラムで生じた障害が他のプログラムに影響を及ぼさないようにする機能のことである。
【0101】
また、メモリ管理ユニット15は、メモリ空間上に存在する各プログラムのアドレス情報や属性情報を管理するためのMMUテーブルを備えている。MMUテーブルの構造や機能は図2を参照した上記説明と略同一なので、ここでは説明を省略する。
【0102】
あるプログラムをプロセッサ100に実行させるためには、メモリ管理ユニット15にプログラムIDとそのアドレス情報・属性情報を与える旨のプログラム・コードを制御ユニット13に供給すればよい。一般には、"Load MMU…"なるインストラクションによって、実質上、アプリケーションの実行が許可される。
【0103】
本実施例では、この"Load MMU …"インストラクションは、マイクロプログラムという形態で実装され、メモリ管理ユニット15への各変数セットの他に、所定の認証手続が含まれている。この認証手続は、マイクロプログラム中で記述されているので、プロセッサ100の外部からは認証手続の存在自体が見えない。認証手続は、プロセッサ・チップ100内部で完結的に実行されるので、この動作を外部から監視することは殆ど不可能である。したがって、"Load MMU …"インストラクションを発行した外部プログラムからは全く見えない状態で、プロセッサ100はこの認証手続を実行することができる。但し、認証手続の詳細は後述する。
【0104】
暗号化復号化ユニット17は、所定のデータを暗号化したり、逆に暗号化されたデータを復号化するための演算ユニットである。例えば、プロセッサ100が外部に出力する乱数のように秘匿性のあるデータは、暗号化復号化ユニット17によって予め暗号化してから、バス・インターフェース11経由でプロセッサ100の外部に出力される。逆に、暗号化されたデータ(例えばソフトウェア供給者から渡されるKey:後述)の復号化も行う。
【0105】
暗号化及び復号化の方式は、共通鍵、公開鍵のうちいずれの方式を採用してもよい。後者の公開鍵方式は、公開鍵と秘密鍵という一組の暗号鍵が用いられ、一方の鍵で暗号化したときには他方の鍵でしか復号化できない。例えば、第3者が公開鍵で暗号化したデータは秘密鍵を持つ本人しか復号化できないので、秘密情報を安全に送付することができる(周知)。
【0106】
乱数発生ユニット18は、時々刻々乱数を発生するためのユニットであり、本実施例ではプロセッサIDの代わりに用いられる。乱数を用いるのは、固定値を用いたのでは、認証手続を複数回重ねて動作を監視することで見破られてしまう虞があるからである。
【0107】
なお、プロセッサ100を構成するためには、図5に示した以外にも多くのユニット等が必要である。図5から省略されたユニットの例は、整数同士の算術演算と論理演算(AND,OR,NOT)を担当するALU(Arithmetic and Logic Unit)や、実数(浮動小数点等)演算を担当するFPU(Floating-Point Unit)、インストラクションの実行手順を直線的に実装した配線論理回路(PLA:Programmable Logic Array)、入出力用のレジスタなどである。但し、これらは当業者には周知であり、また、本発明の要旨を構成するものではないので、本明細書中では省略している。また、図面の錯綜を回避するため、図中の各ハードウェア・ブロック間の接続も一部しか図示していない点を了承されたい。
【0108】
次いで、プロセッサ100によるプログラム保護動作について、図6を参照しながら説明する。
【0109】
ソフトウェア供給業者は、保護対象たるソフトウェア・プログラムをフレキシブル・ディスク又はCD−ROMなどの記憶媒体に格納した形態で、市場に流通する。このソフトウェア・プログラムには、固有の識別情報すなわちソフトウェアID(通常はシリアルな番号で構成される)が付されている。ユーザは、フレキシブル・ディスク又はCD−ROMなどの記憶媒体をソフトウェア供給業者から購入するという形態で、ソフトウェア・プログラムの限定的な使用権を取得する(記憶媒体の購入は、ソフトウェァの著作権や無制限な使用権を全く意味しない点に充分留意されたい)。
【0110】
本実施例が、上記第1及び第2の実施例と相違するのは、ソフトウェア・プログラムを格納した記憶媒体と一緒にセキュリティ・デバイス95が配布される点である。ユーザは、ソフトウェア・プログラムをハード・ディスク81上にインストールするともに、セキュリティ・デバイス95をシリアル・ポートに外部接続する(ステップS300)。この実施例では、Keyの要求は、ソフトウェア供給業者ではなくセキュリティ・デバイス95に対して行われる(後述)。
【0111】
コンピュータ・システム200上でソフトウェア・プログラムの実行が促されたとする。これは、例えばOS(オペレーティング・システム)のような外部プログラムが"LOAD MMU…"のような実行許可インストラクションを発行して、メモリ管理ユニット15にプログラムIDとプログラムの格納番地/属性情報がセットすることにより、実現される。
【0112】
本実施例の実行許可インストラクションに該当する処理手続は、図6の破線ブロックで囲まれている。実行許可は、メモリ管理ユニット15への各変数のセット以外に所定の認証手続を含んでいる。
【0113】
当該インストラクションが発行されると、プロセッサ100は、まず、乱数発生ユニット18が発生した乱数をセキュリティ・デバイス95に送ることで、Keyの要求を行う(ステップS302)。乱数の送付はシステム・バス70経由で行われる。但し、乱数は時々刻々変化する性質を持ち、同じ乱数は一回しか使用しないので、バス70の動作をスヌープされてセキュリティが破られる可能性は極めて低い。
【0114】
セキュリティ・デバイス95は、受け取った乱数と、自身が格納するソフトウェアIDとを一体化して、共通鍵を用いて暗号化してKeyを生成し、システム・バス70経由でプロセッサ100に送り返す(ステップS304)。
【0115】
プロセッサ100は、共通鍵を用いてKeyを復号化して、乱数とソフトウェアIDとに分解する(ステップS306)。復号化処理は、暗号化復号化ユニット17を用いて行われる。
【0116】
次いで、プロセッサ100は、復号化して得られた乱数とソフトウェアIDを、プロセッサ100自身が保持する元の乱数、及び装填した記憶媒体から得られたソフトウェアIDの各々と比較する(ステップS308)。
【0117】
この比較の結果、照合に失敗したならば、メモリ管理ユニット15によるプログラムの実行は拒否される(ステップS310)。他方、照合が成功裡に終わったならば、メモリ管理ユニット15によるプログラムの実行は肯定され(ステップS312)、プログラムが実行される(ステップS314)。
【0118】
このような実行許可インストラクションの手続は、例えばマイクロコードROM14中で、上述のようなインストラクションの処理手続を記述することによって実現可能である。
【0119】
ステップS302〜S312は、"Load MMU …"という単一のインストラクションで実行される。該インストラクションを記述した疑似マイクロプログラム・コードを、以下に示しておく。
【0120】
【数4】
【0121】
このようなマイクロプログラムに従った認証手続は、外部プログラムからは全く見えない状態で実行される。本実施例に係る認証手続は、プロセッサ・チップ100内部で完結されるので、プロセッサ100外部からの監視は殆ど不可能なのである。
【0122】
第4の実施の形態
本発明の第4の実施例は、図5に示したものと等価なハードウェア構成により具現される。但し、第3の実施例との相違点は、共通鍵ではなく公開鍵方式で暗号化する点にある。図7には、第4の実施例に係るプログラム保護動作をフローチャートにして示している。以下、図7を参照しながら説明する。
【0123】
ソフトウェア供給業者は、保護対象たるソフトウェア・プログラムをフレキシブル・ディスク又はCD−ROMなどの記憶媒体に格納した形態で、市場に流通する。このソフトウェア・プログラムには、固有の識別情報すなわちソフトウェアID(通常はシリアルな番号で構成される)が付されている。ユーザは、フレキシブル・ディスク又はCD−ROMなどの記憶媒体をソフトウェア供給業者から購入するという形態で、ソフトウェア・プログラムの限定的な使用権を取得する(記憶媒体の購入は、ソフトウェァの著作権や無制限な使用権を全く意味しない点に充分留意されたい)。
【0124】
本実施例では、ソフトウェア・プログラムを格納した記憶媒体と一緒にセキュリティ・デバイス95に配布される。ユーザは、ソフトウェア・プログラムをハード・ディスク81上にインストールするともに、セキュリティ・デバイス95をシリアル・ポートに外部接続する(ステップS400)。Keyの要求は、ソフトウェア供給業者ではなくセキュリティ・デバイス95に対して行われる(後述)。
【0125】
コンピュータ・システム200上でソフトウェア・プログラムの実行が促されたとする。これは、例えばOS(オペレーティング・システム)のような外部プログラムが"LOAD MMU…"のような実行許可インストラクションを発行して、メモリ管理ユニット15にプログラムIDとプログラムの格納番地/属性情報がセットすることにより、実現される。
【0126】
本実施例の実行許可インストラクションに該当する処理手続は、図7の破線ブロックで囲まれている。実行許可は、メモリ管理ユニット15への各変数のセット以外に所定の認証手続を含んでいる。
【0127】
当該インストラクションが発行されると、プロセッサ100は、まず、乱数発生ユニット18が発生した乱数とプロセッサ100の公開鍵をセキュリティ・デバイス95に送ることで、Keyの要求を行う(ステップS402)。乱数の送付はシステム・バス70経由で行われる。但し、乱数は時々刻々変化する性質を持ち、同じ乱数は一回しか使用しないので、バス70の動作をスヌープされてセキュリティが破られる可能性は極めて低い。
【0128】
セキュリティ・デバイス95は、受け取った乱数と、自身が格納するソフトウェアIDとを一体化して、公開鍵を用いて暗号化してKeyを生成し、システム・バス70経由でプロセッサ100に送り返す(ステップS404)。
【0129】
プロセッサ100は、自身の秘密鍵を用いてKeyを復号化して、乱数とソフトウェアIDとに分解する(ステップS406)。復号化処理は、暗号化復号化ユニット17を用いて行われる。
【0130】
次いで、プロセッサ100は、復号化して得られた乱数とソフトウェアIDを、プロセッサ100自身が保持する元の乱数、及び装填した記憶媒体から得られたソフトウェアIDの各々と比較する(ステップS408)。
【0131】
この比較の結果、照合に失敗したならば、メモリ管理ユニット15によるプログラムの実行は拒否される(ステップS410)。他方、照合が成功裡に終わったならば、メモリ管理ユニット15によるプログラムの実行は肯定され(ステップS412)、プログラムが実行される(ステップS414)。
【0132】
このような実行許可インストラクションの手続は、例えばマイクロコードROM14中で、このようにインストラクションの処理手続を記述することによって実現可能である。
【0133】
ステップS402〜S412は、"Load MMU …"という単一のインストラクションで実行される。該インストラクションを記述した疑似マイクロプログラム・コードを、以下に示しておく。
【0134】
【数5】
【0135】
このようなマイクロプログラムに従った認証手続は、外部プログラムからは全く見えない状態で実行される。本実施例に係る認証手続は、プロセッサ・チップ100内部で完結されるので、プロセッサ100外部からの監視は殆ど不可能なのである。
【0136】
追補
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【0137】
【発明の効果】
以上詳記したように、本発明によれば、コンピュータ・システムに提供されるソフトウェア・プログラムの不正な使用・実行を防止する優れた技術を提供することができる。
【0138】
また、本発明によれば、プログラムの不正実行防止機能を備えた優れたプロセッサ、プログラムの不正実行を防止するためにプロセッサが実行するインストラクション、及びプログラムの不正実行防止方法を提供することができる。
【0139】
また、本発明によれば、外部から監視・変更することができないプログラムの不正実行防止機能付き優れたプロセッサ、プロセッサが実行するインストラクション、及びプログラムの不正実行防止方法を提供することにある。
【0140】
また、本発明によれば、ソフトウェア供給者がソフトウェア・プログラムの使用権をただ1つのプロセッサにのみ許可することができる、優れたプログラムの不正実行防止方法を提供することができる。
【図面の簡単な説明】
【図1】図1は、本発明の第1の実施の形態に係るコンピュータ・システム及びプロセッサ100のハードウェア構成を模式的に示した図である。
【図2】図2は、MMUテーブルの構造や機能を模式的に示した図である。
【図3】図3は、本発明の第1の実施の形態に係るプログラム保護動作を示したフローチャートである。
【図4】図4は、本発明の第2の実施の形態に係るプログラム保護動作を示したフローチャートである。
【図5】図5は、本発明の第3の実施の形態に係るコンピュータ・システム及びプロセッサ100のハードウェア構成を模式的に示した図である。
【図6】図6は、本発明の第4の実施の形態に係るプログラム保護動作を示したフローチャートである。
【図7】図7は、本発明の第5の実施の形態に係るプログラム保護動作を示したフローチャートである。
【符号の説明】
11…バス・インターフェース、12…デコーダ、13…制御ユニット、
14…マイクロコードROM、15…メモリ管理ユニット(MMU)、
16…プロセッサID、17…暗号化復号化ユニット、
50…メイン・メモリ、60…ブリッジ回路、70…システム・バス、
81…ハード・ディスク・ドライブ(HDD)、
82…フレキシブル・ディスク・ドライブ(FDD)、
83…CD−ROMドライブ、
90…ネットワーク・インターフェース・カード(NIC)、
91…シリアルI/Oコントローラ、95…セキュリティ・デバイス、
100…プロセッサ、200…コンピュータ・システム。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a technique for preventing unauthorized use / execution of a software program provided to a computer system, and more particularly to a processor having a function for preventing unauthorized execution of a program.
[0002]
[Prior art]
Along with recent technological innovations, computer systems have become widespread not only in universities and research institutes but also in companies and general households. Computer systems include workstations, personal computers (PCs), etc. that are relatively inexpensive and can be purchased by general users, in addition to host / mainframe and office computers. In particular, the rapid spread of PCs is remarkable.
[0003]
Under such technological trends, various software running on a computer system has been developed and marketed, and the software industry has risen to rival or exceed the hardware industry. The software mentioned here includes an “OS (operating system)” for controlling the operation of the entire computer system, and an “application” for realizing functional operations suitable for the purpose and business of each user on the system. Is included. Application programs include various functions and applications such as word processors, spreadsheets, databases, and communications.
[0004]
Users generally purchase software that they want to install on their computer systems in the form of removable media such as flexible disks and CD-ROMs, and then use these media by loading them into appropriate drive units. Is. Recently, it has become possible to introduce a software program by transferring (downloading) desired software to its own local disk via an external network such as the Internet.
[0005]
However, the act of purchasing media storing software programs is only a limited use right of the software program, and the purchaser also obtained the copyright and the copy right of the software program. is not. Unrestricted or unauthorized copying of software programs is strictly prohibited by copyright law (well-known). (Note that it is reasonable to interpret the use of software programs downloaded via the network in a limited way.)
[0006]
From the standpoint of software vendors that provide software programs, the company earns profits by distributing program storage media for a fee, and is inherently enjoyed if unlimited and unauthorized copying acts are rampant. We cannot secure the profits we should have. Unauthorized use of software programs also diminishes the willingness to develop for those engaged in the software industry, which in turn may calm down the activities of the industry itself. For this reason, a protection technology for prohibiting (or preventing) unauthorized use or unauthorized copying of software programs has been developed.
[0007]
An example of protection is to encrypt a software program that is desired to prevent unauthorized use. In other words, software vendors distribute encrypted program storage media for a fee or free of charge, and give a key for decryption only to legitimate users, so that the program stored on the media can be stored. The use can be suitably limited.
[0008]
Here, the problem is how to provide the user with the key. For example, a software vendor can give a user a key by mail such as a letter, but in this case, unauthorized use of the key is very easy.
[0009]
Furthermore, as a technically advanced method, so-called “security device” can be used. In this case, the software vendor distributes and distributes the program storage medium with the security device attached. The security device includes identification information necessary for a predetermined authentication procedure, and is used by being connected to a serial port or a parallel port of a user's PC, for example. On the other hand, the programs stored on the media include some check points (ie, “authentication routines”) in addition to this routine for performing operations specific to the functions and uses of the program itself. Yes.
[0010]
An example of an authentication routine is that at each check point, a CPU (Central Processing Unit) that is executing a program accesses the security device to read identification information, and checks whether this matches the identification information of the program. Thus, the CPU is allowed to continue the program only when they match.
[0011]
Another example of the authentication routine is as follows. In other words, a code according to a certain rule is written into the security device by the CPU executing the program. The security device prepares identification information scrambled or encrypted using the received code. Furthermore, the CPU reads the scrambled or encrypted identification information, descrambles or decrypts it with the program, and collates it with the identification information owned by the program. Only when the verification is successful is the CPU allowed to continue the program. Since the CPU and the security device are connected via a bus outside the CPU chip, the authentication routine can be prevented from being decrypted by the bus snoop by performing scrambling and encryption.
[0012]
The two examples using these security devices are common in that authentication processing is performed by an instruction (instruction) to the CPU that is executing the program.
[0013]
By using a security device, the level of security could be improved considerably. Also, the right to use a software program could be limited to only one computer system with a security device attached. However, this method is not perfect. For example, if a logic analyzer (well-known) is used, bus transactions can be easily monitored, so that the authentication routine can be analyzed to find out the identity information and the identity of the encryption key.
[0014]
In order to further improve the security level, a measure is taken of sequentially changing the input value to the security device. However, ICE (InCircuitEmulator)/ * /The software can be disassembled relatively easily using a device such as, and then the program can be altered to jump unconditionally to the access routine (ie, authentication routine) to the security device. is there.
[0015]
According to the inventor's consideration, in order to strengthen the protection of the software program, first of all, it is preferable to design the security operation to be indispensable for the program execution. In this sense, the above conventional example in which the program stored in the medium itself includes an authentication routine is suitable. Furthermore, this authentication routine must be in a form that cannot be accessed or changed from the outside. In the case of the above-described conventional example using a security device, the authentication routine is implemented in the form of system operation and does not appear in the appearance, but is technically readable (as described above). In short, it is hard to say that the protection of the program is perfect with the conventional protection method with external access.
[0016]
Annotation
The ICE is an apparatus that is usually used to support program and hardware development, and operates in exactly the same manner as the CPU by being inserted into a CPU socket instead of the CPU. Unlike the CPU, the ICE can read bus access and register values for each instruction. By using such an instruction trace function of ICE, an authentication routine can be found from a software program using an external device address as a trigger. Furthermore, if an illegal patch is applied to the program address, the program address can be tampered to continue without accessing the security device.
[0017]
[Problems to be solved by the invention]
An object of the present invention is to provide an excellent technique for preventing unauthorized use / execution of a software program provided to a computer system.
[0018]
It is a further object of the present invention to provide an excellent processor having a function for preventing illegal execution of programs, which cannot be monitored and changed from the outside.
[0019]
[Means for Solving the Problems]
The present invention has been made in consideration of the above-mentioned problems. The first aspect of the present invention incorporates a memory management unit having a function of managing a main memory and an instruction set for operating the memory. A processor with a function for preventing unauthorized execution of a program, wherein the instruction set includes an execution permission instruction that permits execution of a program code on the main memory, and the execution permission instruction is A processor with a function for preventing unauthorized execution of a program, including a predetermined authentication operation in addition to an operation for giving an identification number and address information / attribute information of a program to be executed to the memory management unit.
[0020]
Here, the predetermined authentication operation may include a comparison operation between identification information stored inside the processor and identification information supplied from outside the processor.
[0021]
The identification information used for authentication may be composed of a processor ID unique to the processor and a software ID unique to the software program.
[0022]
Alternatively, the identification information may be composed of a random number generated internally by the processor and a software ID unique to the software program.
[0023]
In addition, when the predetermined authentication operation is successfully completed, an operation of giving an identification number of the program to be executed and address information / attribute information to the memory management unit is permitted, but when the predetermined authentication operation fails, the operation is performed. The operation of giving the identification number of the program to be performed and the address information / attribute information to the memory management unit may be prohibited.
[0024]
The processor with an unauthorized execution preventing function according to the second aspect further includes an encryption means for encrypting the processor ID and outputting the encrypted processor ID to the outside via the bus interface, and the encrypted identification information via the bus interface. And decrypting means for retrieving the processor ID and the software ID from outside and decrypting the processor ID, and the predetermined authentication operation may include a comparison operation between the IDs.
[0025]
According to a second aspect of the present invention, there is provided a processor with a function for preventing unauthorized execution of a program, which executes a predetermined process while reading / writing a program code or data on a main memory. A bus interface that exchanges instructions and data with the outside of the processor, a decoder that decodes the received instructions, a built-in memory that stores procedures for one or more instructions, and a procedure for one or more instructions A logic circuit, a control unit that executes instructions according to a procedure stored in the built-in memory or a procedure implemented in the logic circuit, a processor ID unique to the processor, and a memory having a function of managing the main memory Including management unit One of the built-in memory and the logic circuit stores a procedure of an execution permission instruction that permits execution of a program code on the main memory, and the procedure of the execution permission instruction executes. A processor with a function for preventing unauthorized execution of a program, comprising: a predetermined authentication operation in addition to an operation for providing the memory management unit with identification information and address information / attribute information of a power program.
[0026]
The processor with an unauthorized execution preventing function according to the second aspect further includes an encryption means for encrypting the processor ID and outputting the encrypted processor ID to the outside via the bus interface, and the encrypted identification information via the bus interface. And decrypting means for retrieving the processor ID and the software ID from outside and decrypting the processor ID, and the predetermined authentication operation may include a comparison operation between the IDs.
[0027]
In addition, when the predetermined authentication operation is successfully completed, an operation of giving an identification number of the program to be executed and address information / attribute information to the memory management unit is permitted, but when the predetermined authentication operation fails, the operation is performed. The operation of giving the memory management unit the identification number of the program to be performed and the address information / attribute information may be prohibited.
[0028]
According to a third aspect of the present invention, there is provided a processor having a function for preventing unauthorized execution of a program, which executes a predetermined process while reading / writing a program code or data on a main memory. A bus interface that exchanges instructions and data with the outside of the processor, a decoder that decodes the received instructions, a built-in memory that stores procedures for one or more instructions, and a procedure for one or more instructions A logic circuit; a control unit that executes instructions according to a procedure stored in the built-in memory or a procedure implemented in the logic circuit; a random number generation unit; and a memory management unit having a function of managing the main memory. Including the internal memory or One of the logic circuits stores a procedure of an execution permission instruction for permitting execution of a program code on the main memory, and the procedure of the execution permission instruction is used to identify a program to be executed. A processor with a function for preventing unauthorized execution of a program, characterized by including a predetermined authentication operation in addition to an operation of giving information and address information / attribute information to the memory management unit.
[0029]
The processor with unauthorized execution prevention function according to the third aspect further includes random number output means for outputting a random number generated by the random number generation unit to the outside via the bus interface, and encrypted identification information as the bus The predetermined authentication operation may include a comparison operation between the random number and the software ID. The decryption unit receives the external value via the interface and decrypts the random number and the software ID.
[0030]
In addition, when the predetermined authentication operation is successfully completed, an operation of giving an identification number of the program to be executed and address information / attribute information to the memory management unit is permitted, but when the predetermined authentication operation fails, the operation is performed. The operation of giving the memory management unit the identification number of the program to be performed and the address information / attribute information may be prohibited.
[0031]
[Action]
The processor according to the present invention is of a type incorporating a memory management unit for managing code / data storage operations on the main memory, and as one of the instruction sets, a program program on the main memory. It includes an execution permission instruction that permits execution of code (application).
[0032]
This kind of execution permission instruction is generally described by a procedure (for example, "LOAD MMU ...") that sets the identification number of the program to be executed, the storage address of the program, and the attribute information of the program in the memory management unit. Included). Instruction procedures are defined by the microprogram.
[0033]
In the present invention, the execution permission instruction includes an authentication procedure for authenticating the right to use the program in addition to a procedure for setting predetermined data in the memory management unit. This authentication operation is performed, for example, by comparing the identification information held inside the processor with the identification information supplied from the outside of the processor (for example, the supplier of the software program). The execution of the software program is permitted only when the authentication process is successfully completed.
[0034]
The identification information used for the authentication procedure includes, for example, a processor ID unique to the processor (for example, given at the time of manufacture) and a software ID given to the software program. Alternatively, the identification information includes a random number that is generated from time to time by the processor and a software ID that is uniquely given to the software program.
[0035]
Since such an authentication operation is executed inside the processor, it is almost impossible to monitor and detect from the outside. In addition, since the authentication procedure is included in a microprogram that describes an instruction meaning permission to execute the program, the presence of the authentication procedure itself is hidden from the outside. Therefore, according to the present invention, prevention of unauthorized execution of a program can be greatly enhanced.
[0036]
Further, by using the processor ID inherent to the processor chip as the identification information used for the authentication process, the right to use a specific software program can be limited to a single processor. In this sense, it can be said that illegal execution of programs is strictly prohibited.
[0037]
Other objects, features, and advantages of the present invention will become apparent from a more detailed description based on embodiments of the present invention described later and the accompanying drawings.
[0038]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
[0039]
First embodiment
FIG. 1 schematically shows a hardware configuration of the
[0040]
A
[0041]
The
[0042]
The system bus 70 is a PCI (Peripheral Component Interconnect) bus or an ISA (Industry Standard Architecture) bus, and various peripheral devices are interconnected. Peripheral devices include, for example, consoles (not shown) such as a keyboard and a display, a hard disk drive (HDD) 81, a flexible disk drive (FDD) 82, a CD-
[0043]
Software suppliers usually distribute software programs to general users in the form of storage media such as flexible disks and CD-ROMs. Each user loads the storage medium into a predetermined drive unit and copies it to the
[0044]
The
[0045]
As shown in FIG. 1, the
[0046]
The bus interface 11 is a unit for exchanging instructions and data with components outside the
[0047]
The
[0048]
The
[0049]
The
[0050]
The memory management unit (MMU) 15 is a unit for managing the memory space of the
[0051]
The
[0052]
Each program on the memory space has a unique program ID. In order to cause the
[0053]
[Expression 1]
Mov R1, Program_ID
(Set the program ID in register R1)
Mov R2, Memory_Address_ & Flag
(Set the address and flag in register R2)
Load MMU, R1, R2
(Set the contents of registers R1 and R2 in the memory management unit)
Jmp Application
(Jump to the application)
[0054]
“Mov”, “Load”, and the like in the above code are instructions for the
[0055]
The step “Load MMU...” In the pseudo code is an instruction for substantially permitting execution of the application. In this embodiment, the “Load MMU...” Instruction is implemented in the form of a microprogram, and includes a predetermined authentication procedure in addition to a variable set to the
[0056]
Since this authentication procedure is described in the microprogram, the existence of the authentication procedure itself cannot be seen from the outside of the
[0057]
The
[0058]
The encryption /
[0059]
Either the common key or the public key may be adopted as the encryption and decryption method. In the latter public key method, a pair of encryption keys, a public key and a secret key, is used. When encryption is performed with one key, decryption can be performed only with the other key. For example, since the data encrypted by the third party with the public key can be decrypted only by the person having the secret key, the secret information can be exchanged safely (well known).
[0060]
In order to configure the
[0061]
Next, the program protection operation by the
[0062]
A software supplier distributes the software program to be protected in the form of being stored in a storage medium such as a flexible disk or a CD-ROM. This software program is given unique identification information, that is, a software ID (usually composed of a serial number). The user obtains a limited use right of the software program in the form of purchasing a storage medium such as a flexible disk or a CD-ROM from a software supplier. Note that it does not imply any use rights at all). Then, the user loads a storage medium into a
[0063]
This installation operation includes a procedure for encrypting the
[0064]
The software supplier decrypts the received encryption information and obtains the original processor ID (step S104). Then, a key is generated by integrating the processor ID and the software ID managed by the trader himself and encrypting them with a common key (step S106). The key is obtained by simultaneously encrypting the processor ID and the software ID as one code and cannot be separated from each other. The key has a property as a key for solving the unusable state of the software, and is returned to the user by mail or via the network (step S108).
[0065]
Assume that execution of a software program is prompted on the
[0066]
The processing procedure corresponding to the execution permission instruction of this embodiment is surrounded by a broken line block in FIG. The execution permission includes a predetermined authentication procedure in addition to the setting of each variable to the
[0067]
When the instruction is issued, the
[0068]
Next, the
[0069]
If the comparison fails as a result of the comparison, execution of the program by the
[0070]
Such an execution permission instruction procedure can be realized by, for example, describing the instruction processing procedure as described above in the
[0071]
Steps S110 to S116 are executed by a single instruction “Load MMU...”. The pseudo microprogram code describing the instructions is shown below.
[0072]
[Expression 2]
[0073]
The authentication procedure according to such a microprogram is executed in a state invisible to the external program. Since the authentication procedure according to the present embodiment is completed inside the
[0074]
Second embodiment
The second embodiment of the present invention is implemented by a hardware configuration equivalent to that shown in FIG. However, the difference from the first embodiment is that encryption is performed using a public key method instead of a common key. FIG. 4 is a flowchart showing the program protection operation according to the second embodiment. Hereinafter, a description will be given with reference to FIG.
[0075]
The software supplier distributes the software program to be protected in the form of being stored in a storage medium such as a rewritable disc or a CD-ROM. This software program is given unique identification information, that is, a software ID (usually composed of a serial number). The user obtains a limited use right of the software program in the form of purchasing a storage medium such as a flexible disk or a CD-ROM from a software supplier. Note that it does not imply any use rights at all). Then, the user loads a storage medium into a
[0076]
This installation operation includes a procedure for encrypting the processor ID 16 (step S200) and a procedure for sending the encrypted processor ID and the public key built in the
[0077]
The software supplier obtains the original processor ID by decrypting the received encryption information using its own secret key (step S204). Then, the processor ID and the software ID managed by the supplier are integrated, and encrypted using the public key of the
[0078]
Assume that execution of a software program is prompted on the
[0079]
The processing procedure corresponding to the execution permission instruction of this embodiment is surrounded by a broken line block in FIG. The execution permission includes a predetermined authentication procedure in addition to the setting of each variable to the
[0080]
When the instruction is issued, the
[0081]
Next, the
[0082]
If the comparison fails as a result of the comparison, execution of the program by the
[0083]
Such an execution permission instruction procedure can be realized by, for example, describing the instruction processing procedure as described above in the
[0084]
Steps S210 to S216 are executed by a single instruction “Load MMU...”. The pseudo microprogram code describing the instructions is shown below.
[0085]
[Equation 3]
[0086]
The authentication procedure according to such a microprogram is executed in a state invisible to the external program. Since the authentication procedure according to the present embodiment is completed inside the
[0087]
Third embodiment
The third embodiment of the present invention does not use the processor ID of the
[0088]
FIG. 5 schematically shows a hardware configuration of the
[0089]
A
[0090]
The
[0091]
The system bus 70 is a PCI (Peripheral Component Interconnect) bus or an ISA (Industry Standard Architecture) bus, and various peripheral devices are interconnected. Peripheral devices include, for example, consoles (not shown) such as a keyboard and a display, a hard disk drive (HDD) 81, a flexible disk drive (FDD) 82, a CD-
[0092]
In this embodiment, a
[0093]
Software suppliers usually distribute software programs in the form of storage media such as flexible disks and CD-ROMs. Each user loads these storage media into a predetermined drive unit and copies them to the
[0094]
The
[0095]
As shown in FIG. 5, the
[0096]
The bus interface 11 is a unit for exchanging instructions and data with components outside the
[0097]
The
[0098]
The
[0099]
The
[0100]
The memory management unit (MMU) 15 is a unit for managing the memory space of the
[0101]
The
[0102]
In order to cause the
[0103]
In this embodiment, this “Load MMU...” Instruction is implemented in the form of a microprogram, and includes a predetermined authentication procedure in addition to each variable set to the
[0104]
The encryption /
[0105]
Either the common key or the public key may be adopted as the encryption and decryption method. In the latter public key method, a pair of encryption keys, a public key and a secret key, is used. When encryption is performed with one key, decryption can be performed only with the other key. For example, since the data encrypted by the third party with the public key can be decrypted only by the person having the secret key, the secret information can be sent safely (well known).
[0106]
The random
[0107]
In order to configure the
[0108]
Next, the program protection operation by the
[0109]
A software supplier distributes the software program to be protected in the form of being stored in a storage medium such as a flexible disk or a CD-ROM. This software program is given unique identification information, that is, a software ID (usually composed of a serial number). The user obtains a limited use right of the software program in the form of purchasing a storage medium such as a flexible disk or a CD-ROM from a software supplier. Note that it does not imply any use rights at all).
[0110]
This embodiment is different from the first and second embodiments in that the
[0111]
Assume that execution of a software program is prompted on the
[0112]
The processing procedure corresponding to the execution permission instruction of the present embodiment is surrounded by a broken line block in FIG. The execution permission includes a predetermined authentication procedure in addition to the setting of each variable to the
[0113]
When the instruction is issued, the
[0114]
The
[0115]
The
[0116]
Next, the
[0117]
If the comparison fails as a result of the comparison, execution of the program by the
[0118]
Such an execution permission instruction procedure can be realized by, for example, describing the instruction processing procedure as described above in the
[0119]
Steps S302 to S312 are executed by a single instruction "Load MMU ...". The pseudo microprogram code describing the instructions is shown below.
[0120]
[Expression 4]
[0121]
The authentication procedure according to such a microprogram is executed in a state invisible to the external program. Since the authentication procedure according to the present embodiment is completed inside the
[0122]
Fourth embodiment
The fourth embodiment of the present invention is implemented by a hardware configuration equivalent to that shown in FIG. However, the difference from the third embodiment is that encryption is performed using a public key method instead of a common key. FIG. 7 is a flowchart showing the program protection operation according to the fourth embodiment. Hereinafter, a description will be given with reference to FIG.
[0123]
A software supplier distributes the software program to be protected in the form of being stored in a storage medium such as a flexible disk or a CD-ROM. This software program is given unique identification information, that is, a software ID (usually composed of a serial number). The user obtains a limited use right of the software program in the form of purchasing a storage medium such as a flexible disk or a CD-ROM from a software supplier. Note that it does not imply any use rights at all).
[0124]
In this embodiment, it is distributed to the
[0125]
Assume that execution of a software program is prompted on the
[0126]
The processing procedure corresponding to the execution permission instruction of this embodiment is surrounded by a broken line block in FIG. The execution permission includes a predetermined authentication procedure in addition to the setting of each variable to the
[0127]
When the instruction is issued, the
[0128]
The
[0129]
The
[0130]
Next, the
[0131]
If the comparison fails as a result of the comparison, execution of the program by the
[0132]
Such an execution-permitted instruction procedure can be realized, for example, by describing the instruction processing procedure in the
[0133]
Steps S402 to S412 are executed by a single instruction "Load MMU ...". The pseudo microprogram code describing the instructions is shown below.
[0134]
[Equation 5]
[0135]
The authentication procedure according to such a microprogram is executed in a state invisible to the external program. Since the authentication procedure according to the present embodiment is completed inside the
[0136]
Supplement
The present invention has been described in detail above with reference to specific embodiments. However, it is obvious that those skilled in the art can make modifications and substitutions of the embodiments without departing from the gist of the present invention. In other words, the present invention has been disclosed in the form of exemplification, and should not be interpreted in a limited manner. In order to determine the gist of the present invention, the claims section described at the beginning should be considered.
[0137]
【The invention's effect】
As described above in detail, according to the present invention, it is possible to provide an excellent technique for preventing unauthorized use / execution of a software program provided to a computer system.
[0138]
Further, according to the present invention, it is possible to provide an excellent processor having a function for preventing unauthorized execution of a program, instructions executed by the processor to prevent unauthorized execution of a program, and a method for preventing unauthorized execution of a program.
[0139]
Another object of the present invention is to provide an excellent processor with a function for preventing unauthorized execution of a program that cannot be monitored or changed from the outside, an instruction executed by the processor, and a method for preventing unauthorized execution of a program.
[0140]
Further, according to the present invention, it is possible to provide an excellent method for preventing illegal execution of a program, in which a software supplier can grant the right to use a software program to only one processor.
[Brief description of the drawings]
FIG. 1 is a diagram schematically showing a hardware configuration of a computer system and a
FIG. 2 is a diagram schematically showing the structure and function of an MMU table.
FIG. 3 is a flowchart showing a program protection operation according to the first embodiment of the present invention.
FIG. 4 is a flowchart showing a program protection operation according to a second embodiment of the present invention.
FIG. 5 is a diagram schematically illustrating a hardware configuration of a computer system and a
FIG. 6 is a flowchart showing a program protection operation according to a fourth embodiment of the present invention.
FIG. 7 is a flowchart showing a program protection operation according to a fifth embodiment of the present invention.
[Explanation of symbols]
11 ... Bus interface, 12 ... Decoder, 13 ... Control unit,
14 ... Microcode ROM, 15 ... Memory management unit (MMU),
16 ... processor ID, 17 ... encryption / decryption unit,
50 ... Main memory, 60 ... Bridge circuit, 70 ... System bus,
81 ... a hard disk drive (HDD),
82 ... Flexible disk drive (FDD),
83 ... CD-ROM drive,
90 ... Network interface card (NIC),
91 ... Serial I / O controller, 95 ... Security device,
100: processor, 200: computer system.
Claims (4)
前記インストラクション・セットは、前記メイン・メモリ上のプログラム・コードの実行を許可するインストラクションを含み、
前記プログラム・コードの実行は、実行されるべきソフトウェア・プログラムのソフトウェアIDとアドレス情報・属性情報を前記メモリ管理ユニットに与える動作の他に、前記プロセッサ内において所定の認証動作を含み、
前記所定の認証動作は、前記プロセッサ内部に格納された該プロセッサ固有のプロセッサIDとソフトウェア供給者からの暗号化データのうちのプロセッサIDとの比較、及び前記プロセッサ内部に格納され、前記プロセッサの外部から供給された、前記ソフトウェア・プログラムに固有のソフトウェアIDとソフトウェア供給者からの暗号化データのうちのソフトウェアIDとの比較を含み、それによって前記所定の認証動作が、外部プログラムからは全く見えない状態で実行されることを特徴とする、前記プロセッサ。A processor with a function for preventing unauthorized execution of a program, having a built-in memory management unit having a function of managing a main memory and having an instruction set for operating itself,
The instruction set includes instructions that allow execution of program code on the main memory;
The execution of the program code includes a predetermined authentication operation in the processor, in addition to the operation of giving the software ID and address information / attribute information of the software program to be executed to the memory management unit,
The predetermined authentication operation is performed by comparing the processor ID unique to the processor stored in the processor with the processor ID of the encrypted data from the software supplier, and stored in the processor and external to the processor. Including a comparison between the software ID unique to the software program supplied from the software ID and the software ID of the encrypted data from the software supplier, whereby the predetermined authentication operation is completely invisible to the external program The processor, wherein the processor is executed in a state.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002288529A JP4017149B2 (en) | 2002-10-01 | 2002-10-01 | Processor with function for preventing unauthorized execution of programs |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002288529A JP4017149B2 (en) | 2002-10-01 | 2002-10-01 | Processor with function for preventing unauthorized execution of programs |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13672498A Division JP3713141B2 (en) | 1998-05-19 | 1998-05-19 | How to prevent unauthorized execution of programs |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003162341A JP2003162341A (en) | 2003-06-06 |
JP4017149B2 true JP4017149B2 (en) | 2007-12-05 |
Family
ID=19197142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002288529A Expired - Fee Related JP4017149B2 (en) | 2002-10-01 | 2002-10-01 | Processor with function for preventing unauthorized execution of programs |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4017149B2 (en) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352724B2 (en) | 2003-07-23 | 2013-01-08 | Semiconductor Energy Laboratory Co., Ltd. | Microprocessor and grid computing system |
JP2005056408A (en) * | 2003-07-23 | 2005-03-03 | Semiconductor Energy Lab Co Ltd | Microprocessor and grid computing system |
US7484106B2 (en) | 2003-10-24 | 2009-01-27 | Microsoft Corporation | Pre-login data access |
JP4847221B2 (en) * | 2006-01-18 | 2011-12-28 | 株式会社Pfu | Information processing apparatus, information processing method, and program |
JP5090790B2 (en) * | 2006-06-07 | 2012-12-05 | 株式会社リコー | Device, License Management Method, License Management Program, and License Management System |
KR101041115B1 (en) | 2008-09-02 | 2011-06-13 | 주식회사 신한은행 | System and Method Using Website by Permission Control and Recording Medium |
CN114502309B (en) * | 2019-10-11 | 2024-10-11 | 松下知识产权经营株式会社 | Identifier management method, robot control device, and integrated control device |
-
2002
- 2002-10-01 JP JP2002288529A patent/JP4017149B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003162341A (en) | 2003-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3713141B2 (en) | How to prevent unauthorized execution of programs | |
KR100896625B1 (en) | System and method for authenticating software using hidden intermediate keys | |
KR101219819B1 (en) | Flexible licensing architecture for licensing digital application | |
TW550501B (en) | Apparatus, method, and system for an access transaction | |
US8065521B2 (en) | Secure processor architecture for use with a digital rights management (DRM) system on a computing device | |
US7010684B2 (en) | Method and apparatus for authenticating an open system application to a portable IC device | |
US7082615B1 (en) | Protecting software environment in isolated execution | |
US7139915B2 (en) | Method and apparatus for authenticating an open system application to a portable IC device | |
JP4822646B2 (en) | Generating a key hierarchy for use in an isolated execution environment | |
CA2333613C (en) | Method of controlling usage of software components | |
US6651171B1 (en) | Secure execution of program code | |
US7322042B2 (en) | Secure and backward-compatible processor and secure software execution thereon | |
US7475254B2 (en) | Method for authenticating software using protected master key | |
JP4498735B2 (en) | Secure machine platform that interfaces with operating system and customized control programs | |
US6996710B1 (en) | Platform and method for issuing and certifying a hardware-protected attestation key | |
US7194634B2 (en) | Attestation key memory device and bus | |
US6941458B1 (en) | Managing a secure platform using a hierarchical executive architecture in isolated execution mode | |
US20030041248A1 (en) | External locking mechanism for personal computer memory locations | |
KR20040097251A (en) | System and method for resetting a platform configuration register | |
JP2004038247A (en) | License management method, system, and program | |
JP4017149B2 (en) | Processor with function for preventing unauthorized execution of programs | |
JPS59173847A (en) | Method and device for protecting computer software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060613 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060718 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061012 Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20061012 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20061012 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20061012 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070713 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070806 Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20070806 |
|
TRDD | Decision of grant or rejection written | ||
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20070907 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20070907 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070907 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070914 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100928 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100928 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110928 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120928 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120928 Year of fee payment: 5 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120928 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S202 | Request for registration of non-exclusive licence |
Free format text: JAPANESE INTERMEDIATE CODE: R315201 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120928 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130928 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D02 |
|
LAPS | Cancellation because of no payment of annual fees |