JP2003162341A - プログラムの不正実行防止機能付きプロセッサ - Google Patents

プログラムの不正実行防止機能付きプロセッサ

Info

Publication number
JP2003162341A
JP2003162341A JP2002288529A JP2002288529A JP2003162341A JP 2003162341 A JP2003162341 A JP 2003162341A JP 2002288529 A JP2002288529 A JP 2002288529A JP 2002288529 A JP2002288529 A JP 2002288529A JP 2003162341 A JP2003162341 A JP 2003162341A
Authority
JP
Japan
Prior art keywords
processor
program
execution
software
management unit
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.)
Granted
Application number
JP2002288529A
Other languages
English (en)
Other versions
JP4017149B2 (ja
Inventor
Takayuki Okada
高幸 岡田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2002288529A priority Critical patent/JP4017149B2/ja
Publication of JP2003162341A publication Critical patent/JP2003162341A/ja
Application granted granted Critical
Publication of JP4017149B2 publication Critical patent/JP4017149B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 ソフトウェア・プログラムの不正な使用・実
行を防止する技術の提供。 【解決手段】 プロセッサは、メモリ管理ユニットを内
蔵し、且つ、メイン・メモリ上のプログラム・コードの
実行を許可する実行許可インストラクションを含んでい
る。実行許可インストラクションの手続はマイクロプロ
グラムによって定義され、メモリ管理ユニットに所定の
データをセットする手続の他に、プログラムの使用権を
認証する認証手続を含む。認証処理の成功時のみ、ソフ
トウェア・プログラムの実行が許可される。認証動作
は、プロセッサ内部で実行されるので、外部から監視・
検出することは殆ど不可能である。また、認証処理に用
いる識別情報として、プロセッサ・チップが固有に持つ
プロセッサIDを使用することによって、ある特定のソ
フトウェア・プログラムの使用権を単一のプロセッサに
限定することができる。

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】さらにセキュリティ・レベルを向上させる
ために、セキュリティ・デバイスへの入力値を逐次変更
する、という対策も採られている。しかしながら、IC
E(InCircuitEmulator)/*/などの装置を用いればソフ
トウェアを比較的容易に逆アセンブルすることができ、
そうなればセキュリティ・デバイスへのアクセス・ルー
チン(すなわち認証ルーチン)を無条件ジャンプするよ
うにプログラムを改ざんすることも可能である。
【0015】本発明者の考察によれば、ソフトウェア・
プログラムのプロテクションを強化するためには、まず
第一に、セキュリティ動作がプログラム実行に必須であ
るようにデザインすることが好ましい。この意味におい
て、メディアに格納されたプログラム自身が認証ルーチ
ンを含んでいるという上記従来例は適合している。さら
に、この認証ルーチンは、外部からのアクセス・変更が
不可能な形態でなければならない。セキュリティ・デバ
イスを用いた上記従来例の場合、認証ルーチンはシステ
ム・オペレーションの形態で実装され、外観には現れな
いが、技術的には判読が可能である(前述)。要言すれ
ば、外部アクセス可能な従来のプロテクション方式で
は、プログラムの保護は万全とは言い難いのである。
【0016】《注釈》ICEは、通常はプログラムやハ
ードウェア開発を支援するために使用される装置であ
り、CPUの代わりにCPUソケットに差すことによっ
て、CPUと全く同じ動作をするようになっている。I
CEは、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を取り出す復号化手段と
を含み、前記所定の認証動作は乱数及びソフトウェアI
Dの比較動作を含んでいてもよい。
【0030】また、前記所定の認証動作が成功裡に終わ
ったときには実行すべきプログラムの識別番号とアドレ
ス情報・属性情報を前記メモリ管理ユニットに与える動
作を許可するが、前記所定の認証動作が失敗したときに
は実行すべきプログラムの識別番号とアドレス情報・属
性情報を前記メモリ管理ユニットに与える動作を禁止す
るようにしてもよい。
【0031】
【作用】本発明に係るプロセッサは、メイン・メモリ上
のコード/データの格納動作を管理するためのメモリ管
理ユニットを内蔵するタイプであり、且つ、インストラ
クション・セットの1つとして、メイン・メモリ上のプ
ログラム・コード(アプリケーション)の実行を許可す
る実行許可インストラクションを含んでいる。
【0032】この種の実行許可インストラクションは、
一般には、実行すべきプログラムの識別番号と、プログ
ラムの格納アドレス、プログラムの属性情報をメモリ管
理ユニットにセットする、という手続(例えば"LOAD MM
U …"というコードで記述される)を含んでいる。イン
ストラクションの手続はマイクロプログラムによって定
義される。
【0033】本発明では、この実行許可インストラクシ
ョンは、メモリ管理ユニットに所定のデータをセットす
る手続の他に、プログラムの使用権を認証するための認
証手続を含んでいる。この認証動作は、例えば、プロセ
ッサ内部で保持された識別情報と、プロセッサの外部
(例えばソフトウェア・プログラムの供給者)から供給
された識別情報との比較によって行われる。そして、こ
の認証処理が成功裡に終わったときのみ、ソフトウェア
・プログラムの実行が許可される。
【0034】認証手続に用いる識別情報は、例えば、プ
ロセッサに固有(例えば製造時に与えられる)プロセッ
サIDと、ソフトウェア・プログラムに固有に与えられ
るソフトウェアIDとで構成される。あるいは、識別情
報は、プロセッサが時々刻々発生する乱数と、ソフトウ
ェア・プログラムに固有に与えられるソフトウェアID
とで構成される。
【0035】このような認証動作は、プロセッサ内部で
実行されるので、外部から監視・検出することは殆ど不
可能である。また、認証手続は、プログラムの実行許可
を意味するインストラクションを記述したマイクロプロ
グラムの中に含まれているので、そもそも認証手続の存
在自体が外部から隠された格好となる。したがって、本
発明によればプログラムの不正実行の防止を大幅に強化
することができる。
【0036】また、認証処理に用いる識別情報として、
プロセッサ・チップが固有に持つプロセッサIDを使用
することによって、ある特定のソフトウェア・プログラ
ムの使用権を単一のプロセッサに限定することができ
る。この意味においても、プログラムの不正実行は強固
に禁止されていると言えよう。
【0037】本発明のさらに他の目的、特徴や利点は、
後述する本発明の実施例や添付する図面に基づくより詳
細な説明によって明らかになるであろう。
【0038】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施例を詳解する。
【0039】第1の実施の形態 図1には、本発明の第1の実施形態に係るコンピュータ
・システム200及びプロセッサ100のハードウェア
構成を模式的に示している。コンピュータ・システム2
00は、システム200の中核的な制御を行うプロセッ
サ100の外に、メイン・メモリ50や各種周辺装置を
含んでいる。以下、各部について説明する。
【0040】プロセッサ100の外部ピンに直結したプ
ロセッサ・バス101は、ブリッジ回路60経由でシス
テム・バス70に接続されている。ブリッジ回路60
は、プロセッサ・バス101とシステム・バス70間の
動作速度の相違を吸収するためのデータ・バッファや、
メイン・メモリ50へのアクセス動作を制御するための
メモリ・コントローラを含んでいる。
【0041】メイン・メモリ50は、プロセッサ100
が実行するプログラム・コードや処理データを一時格納
するための読み書き可能メモリであり、通常は、1以上
のDRAM(ダイナミックRAM)チップで構成され
る。メイン・メモリ50上で展開されるメモリ空間は、
メモリ管理ユニット15(後述)によって管理される。
【0042】システム・バス70には、PCI(Periph
eral Component Interconnect)バスやISA(Industr
y Standard Architecture)バスが該当し、各種周辺装
置が相互接続されている。周辺装置には、例えばキーボ
ードやディスプレイなどのコンソール類(図示しな
い)、ハード・ディスク・ドライブ(HDD)81、フ
レキシブル・ディスク・ドライブ(FDD)82、CD
−ROMドライブ83などの外部記憶装置類、外部ネッ
トワークと接続するためのネットワーク・インターフェ
ース・カード(NIC)90、シリアル・ポート経由で
シリアル・データの入出力を行うためのシリアルI/O
コントローラ91などが含まれる。なお、バス70上の
動作は、ロジック・アナライザなどを用いて解析するこ
とができる。
【0043】ソフトウェア供給業者は、通常、フレキシ
ブル・ディスクやCD−ROMなどの記憶媒体の形態で
ソフトウェア・プログラムを一般ユーザに配布する。各
ユーザは、これら記憶媒体を所定のドライブ・ユニット
に装填し、HDD81にコピーすることによって、ソフ
トウェア・プログラムをシステム200にインストール
すなわち利用可能な状態に置くようになっている。ま
た、最近では、インターネットなどの外部ネットワーク
経由でソフトウェア・プログラムが配布されることも多
くなってきている(周知)。
【0044】プロセッサ100は、当業界においてCP
U(Central Processing Unit)若しくはMPU(Micro
Processing Unit)と呼ばれるものである。プロセッサ
100は、通常はマザー・ボード(図示しない)上に搭
載される回路チップであり、各入出力装置(図示しな
い)を制御してデータの授受を行ったり、データを演算
処理し、処理結果をメイン・メモリ50上に記憶したり
するなどのコンピュータ・システム200の中枢機能を
果たしている。
【0045】図1に示すように、本実施形態に係るプロ
セッサ100は、バス・インターフェース11と、デコ
ーダ12と、制御ユニット13と、マイクロコードRO
M14と、メモリ管理ユニット15と、プロセッサID
16と、暗号化復号化ユニット17とを含んでいる。
【0046】バス・インターフェース11は、プロセッ
サ100外部のコンポーネントととの間でインストラク
ションやデータを授受するためのユニットである。バス
・インターフェース11は、プロセッサ・バス101と
直結している。なお、プロセッサ・バス101は、ブリ
ッジ回路60を経由してメイン・メモリ50やシステム
・バス70と相互接続されている。
【0047】デコーダ12は、バス・インターフェース
11経由で受け取ったインストラクションを解釈して、
制御ユニット13が理解できる形式に変換するためのユ
ニットである。
【0048】制御ユニット13は、インストラクション
を実行する手順を整えるユニットである。実行するイン
ストラクションは、ワイヤード・ロジック(配線論理)
で実行するタイプと、マイクロ・プログラムで実行する
タイプの2つに大別される。前者の場合は、インストラ
クションの実行制御に必要な論理を直線的に実装した順
序回路が用いられる。また、後者の場合には、インスト
ラクションはマイクロコード(又はピココード)と呼ば
れるさらに細かいコードの集合(すなわちマイクロプロ
グラム)で構成されており、該当するマイクロプログラ
ムをマイクロコードROM14から読み出して実行する
ことになる。なお、1つのプロセッサで利用できるイン
ストラクション全体を「インストラクション・セット」
と呼ぶ。
【0049】マイクロコードROM14は、インストラ
クションの実行に必要なマイクロコードを格納した読み
出し専用メモリである。言い換えれば、マイクロコード
ROM14は、各インストラクションの実行手順を定義
した不揮発メモリである。例えば、"LOAD"、"ST
ORE"、"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は、所定のデー
タを暗号化したり、逆に暗号化されたデータを復号化す
るための演算ユニットである。例えば、プロセッサID
16のような秘匿性の高いデータは、暗号化復号化ユニ
ット17によって予め暗号化してから、バス・インター
フェース11経由でプロセッサ100の外部に出力され
る。逆に、暗号化されたデータ(例えばソフトウェア供
給者から渡されるKey:後述)の復号化も行う。
【0059】暗号化及び復号化の方式は、共通鍵、公開
鍵のうちいずれの方式を採用してもよい。後者の公開鍵
方式は、公開鍵と秘密鍵という一組の暗号鍵が用いら
れ、一方の鍵で暗号化したときには他方の鍵でしか復号
化できない。例えば、第3者が公開鍵で暗号化したデー
タは秘密鍵を持つ本人しか復号化できないので、秘密情
報を安全に交換することができる(周知)。
【0060】なお、プロセッサ100を構成するために
は、図1に示した以外にも多くのユニット等が必要であ
る。図1から省略されたユニットの例は、整数同士の算
術演算と論理演算(AND,OR,NOT)を担当する
ALU(Arithmetic and Logic Unit)や、実数(浮動
小数点等)演算を担当するFPU(Floating-Point Uni
t)、インストラクションの実行手順を直線的に実装し
た配線論理回路(PLA:Programmable Logic Arra
y)、入出力用のレジスタなどである。但し、これらは
当業者には周知であり、また、本発明の要旨を構成する
ものではないので、本明細書中では省略している。ま
た、図面の錯綜を回避するため、図中の各ハードウェア
・ブロック間の接続も一部しか図示していない点を了承
されたい。
【0061】次いで、プロセッサ100によるプログラ
ム保護動作について、図3を参照しながら説明する。
【0062】ソフトウェア供給業者は、保護対象たるソ
フトウェア・プログラムをフレキシブル・ディスク又は
CD−ROMなどの記憶媒体に格納した形態で、市場に
流通する。このソフトウェア・プログラムには、固有の
識別情報すなわちソフトウェアID(通常はシリアルな
番号で構成される)が付されている。ユーザは、フレキ
シブル・ディスク又はCD−ROMなどの記憶媒体をソ
フトウェア供給業者から購入するという形態で、ソフト
ウェア・プログラムの限定的な使用権を取得する(記憶
媒体の購入は、ソフトウェァの著作権や無制限な使用権
を全く意味しない点に充分留意されたい)。そして、ユ
ーザは、記憶媒体を所定のドライブ・ユニット81/8
2に装填して、ソフトウェア・プログラムをシステム2
00のハード・ディスク81上にインストールする。
【0063】このインストール作業には、プロセッサI
D16を共通鍵により暗号化する手続(ステップS10
0)と、暗号化したプロセッサIDをソフトウェア供給
業者に送付する手続(ステップS102)を含んでい
る。暗号化処理は、暗号化復号化ユニット17を用いて
行われる。送付手続は、ソフトウェア業者に対するKe
y(後述)の要求を意味する。なお、送付手続は、郵送
に依る他、NIC90で接続された外部ネットワーク経
由での伝送という形態で行ってもよい。
【0064】ソフトウェア供給業者は、受け取った暗号
情報を復号化して、元のプロセッサIDを得る(ステッ
プS104)。そして、このプロセッサIDと、業者自
身が手元で管理しているソフトウェアIDとを一体化し
て、共通鍵により暗号化することによってKeyを生成
する(ステップS106)。Keyは、プロセッサID
とソフトウェアIDとを1つのコードとして同時に暗号
化したものであり、各々に切り離すことはできない。K
eyは、ソフトウェアの使用不能状態を解く鍵としての
性質を持ち、郵送あるいはネットワーク経由でユーザに
返送される(ステップS108)。
【0065】このKeyを取得した状態で、コンピュー
タ・システム200上でソフトウェア・プログラムの実
行が促されたとする。これは、例えばOS(オペレーテ
ィング・システム)のような外部プログラムが"LOA
D 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は、"Loa
d MMU …"という単一のインストラクションで実
行される。該インストラクションを記述した疑似マイク
ロプログラム・コードを、以下に示しておく。
【0072】
【数2】 mtspr IBAT0, Rs1, Rs2 (Rs1にプログラムのアドレスとフラグを、 Rs2にソフト供給業者から得たキーを、夫々セットする) ld temp_reg1, Rs2 (キーを取得する) decrypt temp_reg1 (プロセッサ100に内蔵された共通鍵で復号化する) cmp temp_reg1, temp_reg3 (IDどうしを比較照合する) jne unmatched ld temp_reg1, Rs (Rsにプログラムのアドレスとフラグをセットする) st IBAT0, temp_reg1 set flag_good end_of_instruction unmatched; set flag_bad end_of_instruction
【0073】このようなマイクロプログラムに従った認
証手続は、外部プログラムからは全く見えない状態で実
行される。本実施例に係る認証手続は、プロセッサ・チ
ップ100内部で完結されるので、プロセッサ100外
部からの監視は殆ど不可能なのである。
【0074】第2の実施の形態 本発明の第2の実施例は、図1に示したものと等価なハ
ードウェア構成により具現される。但し、第1の実施例
との相違点は、共通鍵ではなく公開鍵方式で暗号化する
点にある。図4には、第2の実施例に係るプログラム保
護動作をフローチャートにして示している。以下、図4
を参照しながら説明する。
【0075】ソフトウェア供給業者は、保護対象たるソ
フトウェア・プログラムをレキシブル・ディスク又はC
D−ROMなどの記憶媒体に格納した形態で、市場に流
通する。このソフトウェア・プログラムには、固有の識
別情報すなわちソフトウェアID(通常はシリアルな番
号で構成される)が付されている。ユーザは、フレキシ
ブル・ディスク又はCD−ROMなどの記憶媒体をソフ
トウェア供給業者から購入するという形態で、ソフトウ
ェア・プログラムの限定的な使用権を取得する(記憶媒
体の購入は、ソフトウェァの著作権や無制限な使用権を
全く意味しない点に充分留意されたい)。そして、ユー
ザは、記憶媒体を所定のドライブ・ユニット81/82
に装填して、ソフトウェア・プログラムをシステム20
0のハード・ディスク81上にインストールする。
【0076】このインストール作業には、プロセッサI
D16を暗号化する手続(ステップ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(オペレーテ
ィング・システム)のような外部プログラムが"LOA
D 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は、"Loa
d MMU …"という単一のインストラクションで実
行される。該インストラクションを記述した疑似マイク
ロプログラム・コードを、以下に示しておく。
【0085】
【数3】 mtspr IBAT0, Rs1, Rs2 (Rs1にプログラムのアドレスとフラグを、 Rs2にソフト供給業者から得たキーを、夫々セットする) ld temp_reg1 (キーを取得する) decrypt temp_reg1 (プロセッサ100に内蔵された秘密鍵で復号化する) cmp temp_reg1, temp_reg3 (IDどうしを比較照合する) jne unmatched ld temp_reg1, Rs (Rsにプログラムのアドレスとフラグをセットする) st IBAT0, temp_reg1 set flag_good end_of_instruction unmatched; set flag_bad end_of_instruction
【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(Periph
eral Component Interconnect)バスやISA(Industr
y Standard Architecture)バスが該当し、各種周辺装
置が相互接続されている。周辺装置には、例えばキーボ
ードやディスプレイなどのコンソール類(図示しな
い)、ハード・ディスク・ドライブ(HDD)81、フ
レキシブル・ディスク・ドライブ(FDD)82、CD
−ROMドライブ83などの外部記憶装置類、外部ネッ
トワークと接続するためのネットワーク・インターフェ
ース・カード(NIC)90、シリアル・ポート経由で
シリアル・データの入出力を行うためのシリアルI/O
コントローラ91などが含まれる。なお、バス70上の
動作は、ロジック・アナライザなどを用いて解析するこ
とができる。
【0092】本実施例では、シリアル・ポートにはセキ
ュリティ・デバイス95が外部接続されている。セキュ
リティ・デバイス95は、保護対象たるソフトウェア・
プログラムに付随する性質を持ち、ソフトウェアIDを
格納する他、共通鍵又は公開鍵いずれかの方式による暗
号化ユニットを含んでいる。セキュリティ・デバイス9
5の動作については後述する。
【0093】ソフトウェア供給業者は、通常、フレキシ
ブル・ディスクやCD−ROMなどの記憶媒体の形態で
ソフトウェア・プログラムを配布する。各ユーザは、こ
れら記憶媒体を所定のドライブ・ユニットに装填し、H
DD81にコピーすることによって、ソフトウェア・プ
ログラムをシステムにインストールすなわち利用可能な
状態に置くようになっている。また、最近では、インタ
ーネットなどの外部ネットワーク経由でソフトウェア・
プログラムが配布されることも多くなっている。
【0094】プロセッサ100は、当業界においてCP
U(Central Processing Unit)若しくはMPU(Micro
Processing Unit)と呼ばれるものである。プロセッサ
100は、通常はマザー・ボード(図示しない)上に搭
載される回路チップであり、各入出力装置(図示しな
い)を制御してデータの授受を行ったり、データを演算
処理し、処理結果をメイン・メモリ50上に記憶したり
するなどのコンピュータ・システム(図示しない)の中
枢機能を果たしている。
【0095】図5に示すように、本実施形態に係るプロ
セッサ100は、バス・インターフェース11と、デコ
ーダ12と、制御ユニット13と、マイクロコードRO
M14と、メモリ管理ユニット15と、暗号化復号化ユ
ニット17と、乱数発生ユニット18とを含んでいる。
【0096】バス・インターフェース11は、プロセッ
サ100外部のコンポーネントとの間でインストラクシ
ョンやデータを授受するためのユニットである。バス・
インターフェース11は、プロセッサ・バス17と直結
している。なお、プロセッサ・バス17は、ブリッジ回
路60を経由してメイン・メモリ50やシステム・バス
70と相互接続されている。
【0097】デコーダ12は、バス・インターフェース
で受け取ったインストラクションを解釈して、制御ユニ
ット13が理解できる形式に変換するためのユニットで
ある。
【0098】制御ユニット13は、インストラクション
を実行する手順を整えるユニットである。実行するイン
ストラクションは、ワイヤード・ロジック(配線論理)
で実行するタイプと、マイクロ・プログラムで実行する
タイプの2つに大別される。前者の場合は、インストラ
クションの実行制御に必要な論理を直線的に実装した順
序回路が用いられる。また、後者の場合には、インスト
ラクションはマイクロコード(又はピココード)と呼ば
れるさらに細かいコードの集合(すなわちマイクロプロ
グラム)で構成されており、該当するマイクロプログラ
ムをマイクロコードROM14から読み出して実行する
ことになる。なお、1つのプロセッサで利用できるイン
ストラクション全体を「インストラクション・セット」
と呼ぶ。
【0099】マイクロコードROM14は、インストラ
クションの実行に必要なマイクロードを格納した読み出
し専用メモリである。言い換えれば、マイクロコードR
OM14は、各インストラクションの実行手順を定義し
た不揮発メモリである。例えば、"LOAD"、"STO
RE"、"MOVE"などのインストラクションは、ある
変数をプロセッサ100内のレジスタ(図示しない)に
書き込むためのインストラクションであるが、これらの
動作の詳細をマイクロコードROM14内で記述するこ
とによって定義することができる。
【0100】メモリ管理ユニット(MMU)15は、プ
ログラム・コードやデータをメイン・メモリ上に展開す
るなど、プロセッサ100のメモリ空間を管理するため
のユニットである。メモリ管理ユニット15は、通常、
仮想記憶機能とメモリ保護機能という2つの機能を提供
している。仮想記憶機能とは、論理アドレスを物理アド
レスに変換したり、物理アドレスに該当するブロック
(ページ)がメイン・メモリ上に存在しないときに外部
記憶装置との間でブロック(ページ)の入れ替え(すな
わち「スワッピング」)を行う機能のことである。ま
た、メモリ保護機能とは、1つのプログラムで生じた障
害が他のプログラムに影響を及ぼさないようにする機能
のことである。
【0101】また、メモリ管理ユニット15は、メモリ
空間上に存在する各プログラムのアドレス情報や属性情
報を管理するためのMMUテーブルを備えている。MM
Uテーブルの構造や機能は図2を参照した上記説明と略
同一なので、ここでは説明を省略する。
【0102】あるプログラムをプロセッサ100に実行
させるためには、メモリ管理ユニット15にプログラム
IDとそのアドレス情報・属性情報を与える旨のプログ
ラム・コードを制御ユニット13に供給すればよい。一
般には、"Load MMU…"なるインストラクション
によって、実質上、アプリケーションの実行が許可され
る。
【0103】本実施例では、この"Load MMU
…"インストラクションは、マイクロプログラムという
形態で実装され、メモリ管理ユニット15への各変数セ
ットの他に、所定の認証手続が含まれている。この認証
手続は、マイクロプログラム中で記述されているので、
プロセッサ100の外部からは認証手続の存在自体が見
えない。認証手続は、プロセッサ・チップ100内部で
完結的に実行されるので、この動作を外部から監視する
ことは殆ど不可能である。したがって、"Load M
MU …"インストラクションを発行した外部プログラ
ムからは全く見えない状態で、プロセッサ100はこの
認証手続を実行することができる。但し、認証手続の詳
細は後述する。
【0104】暗号化復号化ユニット17は、所定のデー
タを暗号化したり、逆に暗号化されたデータを復号化す
るための演算ユニットである。例えば、プロセッサ10
0が外部に出力する乱数のように秘匿性のあるデータ
は、暗号化復号化ユニット17によって予め暗号化して
から、バス・インターフェース11経由でプロセッサ1
00の外部に出力される。逆に、暗号化されたデータ
(例えばソフトウェア供給者から渡されるKey:後
述)の復号化も行う。
【0105】暗号化及び復号化の方式は、共通鍵、公開
鍵のうちいずれの方式を採用してもよい。後者の公開鍵
方式は、公開鍵と秘密鍵という一組の暗号鍵が用いら
れ、一方の鍵で暗号化したときには他方の鍵でしか復号
化できない。例えば、第3者が公開鍵で暗号化したデー
タは秘密鍵を持つ本人しか復号化できないので、秘密情
報を安全に送付することができる(周知)。
【0106】乱数発生ユニット18は、時々刻々乱数を
発生するためのユニットであり、本実施例ではプロセッ
サIDの代わりに用いられる。乱数を用いるのは、固定
値を用いたのでは、認証手続を複数回重ねて動作を監視
することで見破られてしまう虞があるからである。
【0107】なお、プロセッサ100を構成するために
は、図5に示した以外にも多くのユニット等が必要であ
る。図5から省略されたユニットの例は、整数同士の算
術演算と論理演算(AND,OR,NOT)を担当する
ALU(Arithmetic and Logic Unit)や、実数(浮動
小数点等)演算を担当するFPU(Floating-Point Uni
t)、インストラクションの実行手順を直線的に実装し
た配線論理回路(PLA:Programmable Logic Arra
y)、入出力用のレジスタなどである。但し、これらは
当業者には周知であり、また、本発明の要旨を構成する
ものではないので、本明細書中では省略している。ま
た、図面の錯綜を回避するため、図中の各ハードウェア
・ブロック間の接続も一部しか図示していない点を了承
されたい。
【0108】次いで、プロセッサ100によるプログラ
ム保護動作について、図6を参照しながら説明する。
【0109】ソフトウェア供給業者は、保護対象たるソ
フトウェア・プログラムをフレキシブル・ディスク又は
CD−ROMなどの記憶媒体に格納した形態で、市場に
流通する。このソフトウェア・プログラムには、固有の
識別情報すなわちソフトウェアID(通常はシリアルな
番号で構成される)が付されている。ユーザは、フレキ
シブル・ディスク又はCD−ROMなどの記憶媒体をソ
フトウェア供給業者から購入するという形態で、ソフト
ウェア・プログラムの限定的な使用権を取得する(記憶
媒体の購入は、ソフトウェァの著作権や無制限な使用権
を全く意味しない点に充分留意されたい)。
【0110】本実施例が、上記第1及び第2の実施例と
相違するのは、ソフトウェア・プログラムを格納した記
憶媒体と一緒にセキュリティ・デバイス95が配布され
る点である。ユーザは、ソフトウェア・プログラムをハ
ード・ディスク81上にインストールするともに、セキ
ュリティ・デバイス95をシリアル・ポートに外部接続
する(ステップS300)。この実施例では、Keyの
要求は、ソフトウェア供給業者ではなくセキュリティ・
デバイス95に対して行われる(後述)。
【0111】コンピュータ・システム200上でソフト
ウェア・プログラムの実行が促されたとする。これは、
例えばOS(オペレーティング・システム)のような外
部プログラムが"LOAD MMU…"のような実行許可
インストラクションを発行して、メモリ管理ユニット1
5にプログラムIDとプログラムの格納番地/属性情報
がセットすることにより、実現される。
【0112】本実施例の実行許可インストラクションに
該当する処理手続は、図6の破線ブロックで囲まれてい
る。実行許可は、メモリ管理ユニット15への各変数の
セット以外に所定の認証手続を含んでいる。
【0113】当該インストラクションが発行されると、
プロセッサ100は、まず、乱数発生ユニット18が発
生した乱数をセキュリティ・デバイス95に送ること
で、Keyの要求を行う(ステップS302)。乱数の
送付はシステム・バス70経由で行われる。但し、乱数
は時々刻々変化する性質を持ち、同じ乱数は一回しか使
用しないので、バス70の動作をスヌープされてセキュ
リティが破られる可能性は極めて低い。
【0114】セキュリティ・デバイス95は、受け取っ
た乱数と、自身が格納するソフトウェアIDとを一体化
して、共通鍵を用いて暗号化してKeyを生成し、シス
テム・バス70経由でプロセッサ100に送り返す(ス
テップS304)。
【0115】プロセッサ100は、共通鍵を用いてKe
yを復号化して、乱数とソフトウェアIDとに分解する
(ステップS306)。復号化処理は、暗号化復号化ユ
ニット17を用いて行われる。
【0116】次いで、プロセッサ100は、復号化して
得られた乱数とソフトウェアIDを、プロセッサ100
自身が保持する元の乱数、及び装填した記憶媒体から得
られたソフトウェアIDの各々と比較する(ステップS
308)。
【0117】この比較の結果、照合に失敗したならば、
メモリ管理ユニット15によるプログラムの実行は拒否
される(ステップS310)。他方、照合が成功裡に終
わったならば、メモリ管理ユニット15によるプログラ
ムの実行は肯定され(ステップS312)、プログラム
が実行される(ステップS314)。
【0118】このような実行許可インストラクションの
手続は、例えばマイクロコードROM14中で、上述の
ようなインストラクションの処理手続を記述することに
よって実現可能である。
【0119】ステップS302〜S312は、"Loa
d MMU …"という単一のインストラクションで実
行される。該インストラクションを記述した疑似マイク
ロプログラム・コードを、以下に示しておく。
【0120】
【数4】 mtspr IBAT0, Rs1, Rs2 (Rs1にプログラムのアドレスとフラグを、 Rs2にソフト供給業者から得たキーを、夫々セットする) ld temp_reg1,Rs2 (IDを取得する) gen temp_reg2 (乱数を発生する) end Cokey, temp_reg2 (共通鍵と乱数をセキュリティ・デバイスに送信する) receive Encrypteddata, temp_reg2 (暗号化されたIDをセキュリティ・デバイスから受信する) decrypt temp_reg3 (IDを共通鍵で復号化する) cmp temp_reg1, temp_reg3 (IDどうしを比較照合する) jne unmatched cmp temp_reg2, temp_reg3 (乱数どうしを比較照合する) jne unmatch ld temp_reg1, Rs (Rsにプログラムのアドレスとフラグをセットする) st IBAT0, temp_reg1 set flag_good end_of_instruction unmatched; set flag_bad end_of_instruction
【0121】このようなマイクロプログラムに従った認
証手続は、外部プログラムからは全く見えない状態で実
行される。本実施例に係る認証手続は、プロセッサ・チ
ップ100内部で完結されるので、プロセッサ100外
部からの監視は殆ど不可能なのである。
【0122】第4の実施の形態 本発明の第4の実施例は、図5に示したものと等価なハ
ードウェア構成により具現される。但し、第3の実施例
との相違点は、共通鍵ではなく公開鍵方式で暗号化する
点にある。図7には、第4の実施例に係るプログラム保
護動作をフローチャートにして示している。以下、図7
を参照しながら説明する。
【0123】ソフトウェア供給業者は、保護対象たるソ
フトウェア・プログラムをフレキシブル・ディスク又は
CD−ROMなどの記憶媒体に格納した形態で、市場に
流通する。このソフトウェア・プログラムには、固有の
識別情報すなわちソフトウェアID(通常はシリアルな
番号で構成される)が付されている。ユーザは、フレキ
シブル・ディスク又はCD−ROMなどの記憶媒体をソ
フトウェア供給業者から購入するという形態で、ソフト
ウェア・プログラムの限定的な使用権を取得する(記憶
媒体の購入は、ソフトウェァの著作権や無制限な使用権
を全く意味しない点に充分留意されたい)。
【0124】本実施例では、ソフトウェア・プログラム
を格納した記憶媒体と一緒にセキュリティ・デバイス9
5に配布される。ユーザは、ソフトウェア・プログラム
をハード・ディスク81上にインストールするともに、
セキュリティ・デバイス95をシリアル・ポートに外部
接続する(ステップS400)。Keyの要求は、ソフ
トウェア供給業者ではなくセキュリティ・デバイス95
に対して行われる(後述)。
【0125】コンピュータ・システム200上でソフト
ウェア・プログラムの実行が促されたとする。これは、
例えばOS(オペレーティング・システム)のような外
部プログラムが"LOAD MMU…"のような実行許可
インストラクションを発行して、メモリ管理ユニット1
5にプログラム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の各々と比較する(ステップS
408)。
【0131】この比較の結果、照合に失敗したならば、
メモリ管理ユニット15によるプログラムの実行は拒否
される(ステップS410)。他方、照合が成功裡に終
わったならば、メモリ管理ユニット15によるプログラ
ムの実行は肯定され(ステップS412)、プログラム
が実行される(ステップS414)。
【0132】このような実行許可インストラクションの
手続は、例えばマイクロコードROM14中で、このよ
うにインストラクションの処理手続を記述することによ
って実現可能である。
【0133】ステップS402〜S412は、"Loa
d MMU …"という単一のインストラクションで実
行される。該インストラクションを記述した疑似マイク
ロプログラム・コードを、以下に示しておく。
【0134】
【数5】 mtspr IBAT0, Rs1, Rs2 (Rs1にプログラムのアドレスとフラグを、 Rs2にソフト供給業者から得たキーを、夫々セットする) ld temp_reg1,Rs2 (IDを取得する) gen temp_reg2 (乱数を発生する) end Pubkey, temp_reg2 (公開鍵と乱数をセキュリティ・デバイスに送信する) receive Encrypteddata, temp_reg2 (暗号化されたIDをセキュリティ・デバイスから受信する) decrypt temp_reg3 (IDを秘密鍵で復号化する) cmp temp_reg1, temp_reg3 (IDどうしを比較照合する) jne unmatched cmp temp_reg2, temp_reg3 (乱数どうしを比較照合する) jne unmatched ld temp_reg1, Rs (Rsにプログラムのアドレスとフラグをセットする) st IBAT0, temp_reg1 set flag_good end_of_instruction unmatched; set flag_bad end_of_instruction
【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…プロセッサI
D、17…暗号化復号化ユニット、50…メイン・メモ
リ、60…ブリッジ回路、70…システム・バス、81
…ハード・ディスク・ドライブ(HDD)、82…フレ
キシブル・ディスク・ドライブ(FDD)、83…CD
−ROMドライブ、90…ネットワーク・インターフェ
ース・カード(NIC)、91…シリアルI/Oコント
ローラ、95…セキュリティ・デバイス、100…プロ
セッサ、200…コンピュータ・システム。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 岡田 高幸 滋賀県野洲郡野洲町大字市三宅800番地 日本アイ・ビー・エム株式会社 野洲事業 所内 Fターム(参考) 5B017 AA07 BB10 CA15 5B033 BE00 FA27 5B076 FB02 FC00

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】メイン・メモリを管理する機能を持つメモ
    リ管理ユニットを内蔵するとともに、自身を動作させる
    ためのインストラクション・セットを有するタイプの、
    プログラムの不正実行防止機能付きプロセッサであっ
    て、 前記インストラクション・セット中には前記メイン・メ
    モリ上のプログラム・コードの実行を許可する実行許可
    インストランションが含まれ、 前記実行許可インストラクションは、実行すべきプログ
    ラムの識別番号とアドレス情報・属性情報を前記メモリ
    管理ユニットに与える動作の他に、所定の認証動作を含
    む、ことを特徴とするプログラムの不正実行防止機能付
    きプロセッサ。
  2. 【請求項2】前記所定の認証動作は、前記プロセッサ内
    部に格納された識別情報と前記プロセッサの外部から供
    給された識別情報との比較動作を含むことを特徴とする
    請求項1に記載のプログラムの不正実行防止機能付きプ
    ロセッサ。
  3. 【請求項3】前記識別情報は、前記プロセッサに固有の
    プロセッサIDとソフトウェア・プログラムに固有のソ
    フトウェアIDとで構成されることを特徴とする請求項
    2に記載のプログラムの不正実行防止機能付きプロセッ
    サ。
  4. 【請求項4】前記識別情報は、前記プロセッサが内部的
    に発生した乱数とソフトウェア・プログラムに固有のソ
    フトウェアIDとで構成されることを特徴とする請求項
    2に記載のプログラムの不正実行防止機能付きプロセッ
    サ。
  5. 【請求項5】前記所定の認証動作が成功裡に終わったと
    きには実行すべきプログラムの識別番号とアドレス情報
    ・属性情報を前記メモリ管理ユニットに与える動作を許
    可するが、前記所定の認証動作が失敗したときには実行
    すべきプログラムの識別番号とアドレス情報・属性情報
    を前記メモリ管理ユニットに与える動作を禁止すること
    を特徴とする請求項1に記載のプログラムの不正実行防
    止機能付きプロセッサ。
  6. 【請求項6】メイン・メモリ上にプログラム・コードや
    データを読み出し/書き込み動作しながら所定の処理を
    実行するタイプの、プログラムの不正実行防止機能付き
    プロセッサであって、 前記プロセッサの外部とインストラクションやデータの
    授受を行うバス・インターフェースと、 受け取ったインストラクションの解読を行うデコーダ
    と、 1以上のインストラクションについての手順を格納した
    内蔵メモリと、 1以上のインストラクションについての手順を実装した
    論理回路と、 前記内蔵メモリに格納された手順や前記論理回路に実装
    された手順に従ってインストラクションを実行する制御
    ユニットと、 前記プロセッサに固有のプロセッサIDと、 前記メイン・メモリを管理する機能を持つメモリ管理ユ
    ニットとを含み、 前記内蔵メモリ又は前記論理回路のうちの1つは前記メ
    イン・メモリ上のプログラム・コードの実行を許可する
    実行許可インストラクションの手順を格納しており、 且つ、前記実行許可インストラクションの手順は、実行
    すべきプログラムの識別情報とアドレス情報・属性情報
    を前記メモリ管理ユニットに与える動作の他に、所定の
    認証動作を含む、ことを特徴とするプログラムの不正実
    行防止機能付きプロセッサ。
  7. 【請求項7】さらに、前記プロセッサIDを暗号化して
    前記バス・インターフェース経由で前記プロセッサの外
    部に出力する暗号化手段と、暗号化された識別情報を前
    記バス・インターフェース経由で前記プロセッサの外部
    から受け取るとともに復号化してプロセッサIDとソフ
    トウェアIDを取り出す復号化手段とを含み、 前記所定の認証動作は各ID同士の比較動作を含むこと
    を特徴とする請求項6に記載のプログラムの不正実行防
    止機能付きプロセッサ。
  8. 【請求項8】前記所定の認証動作が成功裡に終わったと
    きには実行すべきプログラムの識別番号とアドレス情報
    ・属性情報を前記メモリ管理ユニットに与える動作を許
    可するが、前記所定の認証動作が失敗したときには実行
    すべきプログラムの識別番号とアドレス情報・属性情報
    を前記メモリ管理ユニットに与える動作を禁止すること
    を特徴とする請求項6に記載のプログラムの不正実行防
    止機能付きプロセッサ。
  9. 【請求項9】メイン・メモリ上にプログラム・コードや
    データを読み出し/書き込み動作しながら所定の処理を
    実行するタイプの、プログラムの不正実行防止機能付き
    プロセッサであって、 前記プロセッサの外部とインストラクションやデータの
    授受を行うバス・インターフェースと、 受け取ったインストラクションの解読を行うデコーダ
    と、 1以上のインストラクションについての手順を格納した
    内蔵メモリと、 1以上のインストラクションについての手順を実装した
    論理回路と、 前記内蔵メモリに格納された手順や前記論理回路に実装
    された手順に従ってインストラクションを実行する制御
    ユニットと、 乱数発生ユニットと、 前記メイン・メモリを管理する機能を持つメモリ管理ユ
    ニットとを含み、 前記内蔵メモリは前記メイン・メモリ上のプログラム・
    コードの実行を許可する実行許可インストラクションの
    手順を格納しており、 且つ、前記実行許可インストラクションの手順は、実行
    すべきプログラムの識別情報とアドレス情報・属性情報
    を前記メモリ管理ユニットに与える動作の他に、所定の
    認証動作を含む、ことを特徴とするプログラムの不正実
    行防止機能付きプロセッサ。
  10. 【請求項10】さらに、前記乱数発生ユニットが発生す
    る乱数を前記バス・インターフェース経由で前記プロセ
    ッサの外部に出力する乱数出力手段と、暗号化された識
    別情報を前記バス・インターフェース経由で前記プロセ
    ッサの外部から受け取るとともに復号化して乱数とソフ
    トウェアIDを取り出す復号化手段とを含み、 前記所定の認証動作は乱数及びソフトウェアIDの比較
    動作を含むことを特徴とする請求項9に記載のプログラ
    ムの不正実行防止機能付きプロセッサ。
  11. 【請求項11】前記所定の認証動作が成功裡に終わった
    ときには実行すべきプログラムの識別番号とアドレス情
    報・属性情報を前記メモリ管理ユニットに与える動作を
    許可するが、前記所定の認証動作が失敗したときには実
    行すべきプログラムの識別番号とアドレス情報・属性情
    報を前記メモリ管理ユニットに与える動作を禁止するこ
    とを特徴とする請求項9に記載のプログラムの不正実行
    防止機能付きプロセッサ。
JP2002288529A 2002-10-01 2002-10-01 プログラムの不正実行防止機能付きプロセッサ Expired - Fee Related JP4017149B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002288529A JP4017149B2 (ja) 2002-10-01 2002-10-01 プログラムの不正実行防止機能付きプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002288529A JP4017149B2 (ja) 2002-10-01 2002-10-01 プログラムの不正実行防止機能付きプロセッサ

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP13672498A Division JP3713141B2 (ja) 1998-05-19 1998-05-19 プログラムの不正実行防止方法

Publications (2)

Publication Number Publication Date
JP2003162341A true JP2003162341A (ja) 2003-06-06
JP4017149B2 JP4017149B2 (ja) 2007-12-05

Family

ID=19197142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002288529A Expired - Fee Related JP4017149B2 (ja) 2002-10-01 2002-10-01 プログラムの不正実行防止機能付きプロセッサ

Country Status (1)

Country Link
JP (1) JP4017149B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056408A (ja) * 2003-07-23 2005-03-03 Semiconductor Energy Lab Co Ltd マイクロプロセッサ及びグリッドコンピューティングシステム
JP2007220071A (ja) * 2006-01-18 2007-08-30 Pfu Ltd 情報処理装置、情報処理方法およびプログラム
JP2008016013A (ja) * 2006-06-07 2008-01-24 Ricoh Co Ltd 画像形成装置、ライセンス管理方法及びライセンス管理プログラム
KR101041115B1 (ko) 2008-09-02 2011-06-13 주식회사 신한은행 권한제어에 의한 웹사이트 이용방법 및 시스템과 이를 위한기록매체
KR101183369B1 (ko) 2003-10-24 2012-09-17 마이크로소프트 코포레이션 프리-로그인 데이터 액세스
US8352724B2 (en) 2003-07-23 2013-01-08 Semiconductor Energy Laboratory Co., Ltd. Microprocessor and grid computing system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056408A (ja) * 2003-07-23 2005-03-03 Semiconductor Energy Lab Co Ltd マイクロプロセッサ及びグリッドコンピューティングシステム
US8352724B2 (en) 2003-07-23 2013-01-08 Semiconductor Energy Laboratory Co., Ltd. Microprocessor and grid computing system
KR101183369B1 (ko) 2003-10-24 2012-09-17 마이크로소프트 코포레이션 프리-로그인 데이터 액세스
JP2007220071A (ja) * 2006-01-18 2007-08-30 Pfu Ltd 情報処理装置、情報処理方法およびプログラム
US8555074B2 (en) 2006-01-18 2013-10-08 Pfu Limited Method and apparatus for processing information, and computer program product
JP2008016013A (ja) * 2006-06-07 2008-01-24 Ricoh Co Ltd 画像形成装置、ライセンス管理方法及びライセンス管理プログラム
KR101041115B1 (ko) 2008-09-02 2011-06-13 주식회사 신한은행 권한제어에 의한 웹사이트 이용방법 및 시스템과 이를 위한기록매체

Also Published As

Publication number Publication date
JP4017149B2 (ja) 2007-12-05

Similar Documents

Publication Publication Date Title
JP3713141B2 (ja) プログラムの不正実行防止方法
US8065521B2 (en) Secure processor architecture for use with a digital rights management (DRM) system on a computing device
CN100424678C (zh) 使用隐含中间密钥来认证软件的系统和方法
TW550501B (en) Apparatus, method, and system for an access transaction
JP4073913B2 (ja) 開放型汎用耐攻撃cpu及びその応用システム
US6363486B1 (en) Method of controlling usage of software components
US6760441B1 (en) Generating a key hieararchy for use in an isolated execution environment
US7900252B2 (en) Method and apparatus for managing shared passwords on a multi-user computer
US7082615B1 (en) Protecting software environment in isolated execution
US6609199B1 (en) Method and apparatus for authenticating an open system application to a portable IC device
JP4610557B2 (ja) データ管理方法、そのプログラム及びプログラムの記録媒体
US20050060561A1 (en) Protection of data
US7194634B2 (en) Attestation key memory device and bus
US20050060568A1 (en) Controlling access to data
US20070055892A1 (en) Concealment of information in electronic design automation
US8266449B2 (en) Security for storage devices
JPH0260009B2 (ja)
US20060259978A1 (en) Secure exchange of information in electronic design automation with license-related key generation
JP4017149B2 (ja) プログラムの不正実行防止機能付きプロセッサ
KR101043255B1 (ko) Usb 허브 보안 장치 및 이를 이용한 데이터 보안 방법
CN110837627A (zh) 一种基于硬盘序列号的软件版权认证方法、系统和设备
JP3289656B2 (ja) プログラムの実行制御方式
KR20000025501A (ko) 키록 장치 및 그 방법

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