JP3713141B2 - プログラムの不正実行防止方法 - Google Patents
プログラムの不正実行防止方法 Download PDFInfo
- Publication number
- JP3713141B2 JP3713141B2 JP13672498A JP13672498A JP3713141B2 JP 3713141 B2 JP3713141 B2 JP 3713141B2 JP 13672498 A JP13672498 A JP 13672498A JP 13672498 A JP13672498 A JP 13672498A JP 3713141 B2 JP3713141 B2 JP 3713141B2
- Authority
- JP
- Japan
- Prior art keywords
- software
- processor
- program
- execution
- user processor
- 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
- 238000000034 method Methods 0.000 claims description 104
- 230000008569 process Effects 0.000 claims description 11
- 238000012795 verification Methods 0.000 claims description 9
- 238000007726 management method Methods 0.000 description 36
- 230000006870 function Effects 0.000 description 22
- 238000012545 processing Methods 0.000 description 21
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Remote Sensing (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Radar, Positioning & Navigation (AREA)
- Storage Device Security (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータ・システムに提供されるソフトウェア・プログラムの不正な使用・実行を防止する技術に係り、特に、プログラムの不正実行防止方法に関する。更に詳しくは、本発明は、外部から監視・変更することができない、プログラムの不正実行防止方法に関する。
【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】
本発明の更なる目的は、外部から監視・変更することができない、プログラムの不正実行防止方法を提供することにある。
【0020】
【課題を解決するための手段】
本発明は、上記課題を参酌してなされたものであり、その第1の側面は、ソフトウェア供給者がソフトウェア・プログラムの使用権をただ1つのプロセッサにのみ許可するための、プログラムの不正実行防止方法であって、この方法は、
(a)ソフトウェアIDが付されたソフトウェア・プログラムを実行するユーザ・プロセッサ内において、前記ユーザ・プロセッサ自身が保持する固有のプロセッサIDを暗号化し、該暗号化されたプロセッサIDを前記ソフトウェア供給者へ送付するステップと、
(b)ソフトウェア供給者において、前記暗号化されたプロセッサIDを一旦復号化し、ソフトウェア供給者自身が管理するソフトウェアID及び前記復号化されたプロセッサIDを一体化して暗号化し、暗号化データを生成するステップであって、前記暗号化データは、前記ソフトウェアIDと復号化されたプロセッサIDとを1つのコードとして同時に暗号化したものである、前記生成するステップと、
(c)ステップ(b)で得られた暗号化データを前記ユーザ・プロセッサ内に供給するステップと、
(d)前記ユーザ・プロセッサ内において、前記暗号化データを復号化してプロセッサID及びソフトウェアIDを取り出すステップと、
(e)前記ユーザ・プロセッサ内において、前記ユーザ・プロセッサが保持するプロセッサID及び前記ソフトウェア・プログラムに付されたソフトウェアIDを、ステップ(d)で得られたプロセッサID及びソフトウェアIDの各々と照合するステップと、
(f)前記照合処理が成功裡に終わったときのみ、前記ユーザ・プロセッサが前記ソフトウェア・プログラムを実行することを許可するステップとを含み、
前記ステップ(d)、(e)および(f)の実行手順は、前記ユーザ・プロセッサ内のワイヤード・ロジック又はマイクロコードROMのマイクロプログラムによって定義され、該実行手順は、外部プログラムからは全く見えない状態で実行される。
【0021】
また、本発明の第2の側面は、ソフトウェア供給者がソフトウェア・プログラムの使用権をただ1つのプロセッサにのみ許可するための、プログラムの不正実行防止方法であって、この方法は、
(a)ソフトウェアIDが付されたソフトウェア・プログラムを実行するユーザ・プロセッサ内において乱数を発生し、該発生した乱数を前記ソフトウェア供給者へ送付するステップと、
(b)ソフトウェア供給者において、ソフトウェア供給者自身が管理するソフトウェアID及び前記乱数を一体化して暗号化し、暗号化データを生成するステップであって、前記暗号化データは、前記ソフトウェアIDと復号化されたプロセッサIDとを1つのコードとして同時に暗号化したものである、前記生成するステップと、
(c)ステップ(b)で得られた暗号化データを前記ユーザ・プロセッサ内に供給するステップと、
(d)前記ユーザ・プロセッサ内において、前記暗号化データを復号化して乱数及びソフトウェアIDを取り出すステップと、
(e)前記ユーザ・プロセッサ内において、前記ユーザ・プロセッサが保持する乱数及び前記ソフトウェア・プログラムに付されたソフトウェアIDを、ステップ(d)で得られた乱数及びソフトウェアIDの各々と照合するステップと、
(f)前記照合処理が成功裡に終わったときのみ、前記ユーザ・プロセッサが前記ソフトウェア・プログラムを実行することを許可するステップとを含み、
前記ステップ(d)、(e)および(f)の実行手順は、前記ユーザ・プロセッサ内のワイヤード・ロジック又はマイクロコードROMのマイクロプログラムによって定義され、該実行手順は、外部プログラムからは全く見えない状態で実行される。
【0038】
【作用】
本発明に係るプロセッサは、メイン・メモリ上のコード/データの格納動作を管理するためのメモリ管理ユニットを内蔵するタイプであり、且つ、インストラクション・セットの1つとして、メイン・メモリ上のプログラム・コード(アプリケーション)の実行を許可する実行許可インストラクションを含んでいる。
【0039】
この種の実行許可インストラクションは、一般には、実行すべきプログラムの識別番号と、プログラムの格納アドレス、プログラムの属性情報をメモリ管理ユニットにセットする、という手続(例えば"LOAD MMU …"というコードで記述される)を含んでいる。インストラクションの手続はマイクロプログラムによって定義される。
【0040】
本発明では、この実行許可インストラクションは、メモリ管理ユニットに所定のデータをセットする手続の他に、プログラムの使用権を認証するための認証手続を含んでいる。この認証動作は、例えば、プロセッサ内部で保持された識別情報と、プロセッサの外部(例えばソフトウェア・プログラムの供給者)から供給された識別情報との比較によって行われる。そして、この認証処理が成功裡に終わったときのみ、ソフトウェア・プログラムの実行が許可される。
【0041】
認証手続に用いる識別情報は、例えば、プロセッサに固有(例えば製造時に与えられる)プロセッサIDと、ソフトウェア・プログラムに固有に与えられるソフトウェアIDとで構成される。あるいは、識別情報は、プロセッサが時々刻々発生する乱数と、ソフトウェア・プログラムに固有に与えられるソフトウェアIDとで構成される。
【0042】
このような認証動作は、プロセッサ内部で実行されるので、外部から監視・検出することは殆ど不可能である。また、認証手続は、プログラムの実行許可を意味するインストラクションを記述したマイクロプログラムの中に含まれているので、そもそも認証手続の存在自体が外部から隠された格好となる。したがって、本発明によればプログラムの不正実行の防止を大幅に強化することができる。
【0043】
また、認証処理に用いる識別情報として、プロセッサ・チップが固有に持つプロセッサIDを使用することによって、ある特定のソフトウェア・プログラムの使用権を単一のプロセッサに限定することができる。この意味においても、プログラムの不正実行は強固に禁止されていると言えよう。
【0044】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【0045】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施例を詳解する。
【0046】
第1の実施の形態
図1には、本発明の第1の実施形態に係るコンピュータ・システム200及びプロセッサ100のハードウェア構成を模式的に示している。コンピュータ・システム200は、システム200の中核的な制御を行うプロセッサ100の外に、メイン・メモリ50や各種周辺装置を含んでいる。以下、各部について説明する。
【0047】
プロセッサ100の外部ピンに直結したプロセッサ・バス101は、ブリッジ回路60経由でシステム・バス70に接続されている。ブリッジ回路60は、プロセッサ・バス101とシステム・バス70間の動作速度の相違を吸収するためのデータ・バッファや、メイン・メモリ50へのアクセス動作を制御するためのメモリ・コントローラを含んでいる。
【0048】
メイン・メモリ50は、プロセッサ100が実行するプログラム・コードや処理データを一時格納するための読み書き可能メモリであり、通常は、1以上のDRAM(ダイナミックRAM)チップで構成される。メイン・メモリ50上で展開されるメモリ空間は、メモリ管理ユニット15(後述)によって管理される。
【0049】
システム・バス70には、PCI(Peripheral Component Interconnect)バスやISA(Industry Standard Architecture)バスが該当し、各種周辺装置が相互接続されている。周辺装置には、例えばキーボードやディスプレイなどのコンソール類(図示しない)、ハード・ディスク・ドライブ(HDD)81、フロッピー・ディスク・ドライブ(FDD)82、CD−ROMドライブ83などの外部記憶装置類、外部ネットワークと接続するためのネットワーク・インターフェース・カード(NIC)90、シリアル・ポート経由でシリアル・データの入出力を行うためのシリアルI/Oコントローラ91などが含まれる。なお、バス70上の動作は、ロジック・アナライザなどを用いて解析することができる。
【0050】
ソフトウェア供給業者は、通常、フロッピー・ディスクやCD−ROMなどの記憶媒体の形態でソフトウェア・プログラムを一般ユーザに配布する。各ユーザは、これら記憶媒体を所定のドライブ・ユニットに装填し、HDD81にコピーすることによって、ソフトウェア・プログラムをシステム200にインストールすなわち利用可能な状態に置くようになっている。また、最近では、インターネットなどの外部ネットワーク経由でソフトウェア・プログラムが配布されることも多くなってきている(周知)。
【0051】
プロセッサ100は、当業界においてCPU(Central Processing Unit)若しくはMPU(Micro Processing Unit)と呼ばれるものである。プロセッサ100は、通常はマザー・ボード(図示しない)上に搭載される回路チップであり、各入出力装置(図示しない)を制御してデータの授受を行ったり、データを演算処理し、処理結果をメイン・メモリ50上に記憶したりするなどのコンピュータ・システム200の中枢機能を果たしている。
【0052】
図1に示すように、本実施形態に係るプロセッサ100は、バス・インターフェース11と、デコーダ12と、制御ユニット13と、マイクロコードROM14と、メモリ管理ユニット15と、プロセッサID16と、暗号化復号化ユニット17とを含んでいる。
【0053】
バス・インターフェース11は、プロセッサ100外部のコンポーネントととの間でインストラクションやデータを授受するためのユニットである。バス・インターフェース11は、プロセッサ・バス101と直結している。なお、プロセッサ・バス101は、ブリッジ回路60を経由してメイン・メモリ50やシステム・バス70と相互接続されている。
【0054】
デコーダ12は、バス・インターフェース11経由で受け取ったインストラクションを解釈して、制御ユニット13が理解できる形式に変換するためのユニットである。
【0055】
制御ユニット13は、インストラクションを実行する手順を整えるユニットである。実行するインストラクションは、ワイヤード・ロジック(配線論理)で実行するタイプと、マイクロ・プログラムで実行するタイプの2つに大別される。前者の場合は、インストラクションの実行制御に必要な論理を直線的に実装した順序回路が用いられる。また、後者の場合には、インストラクションはマイクロコード(又はピココード)と呼ばれるさらに細かいコードの集合(すなわちマイクロプログラム)で構成されており、該当するマイクロプログラムをマイクロコードROM14から読み出して実行することになる。なお、1つのプロセッサで利用できるインストラクション全体を「インストラクション・セット」と呼ぶ。
【0056】
マイクロコードROM14は、インストラクションの実行に必要なマイクロードを格納した読み出し専用メモリである。言い換えれば、マイクロコードROM14は、各インストラクションの実行手順を定義した不揮発メモリである。例えば、"LOAD"、"STORE"、"MOVE"などのインストラクションは、ある変数をプロセッサ100内のレジスタ(図示しない)に書き込むためのインストラクションであるが、これらの動作の詳細をマイクロコードROM14内で記述することによって定義することができる。
【0057】
メモリ管理ユニット(MMU)15は、プログラム・コードやデータをメイン・メモリ50上に展開するなど、プロセッサ100のメモリ空間を管理するためのユニットである。メモリ管理ユニット15は、通常、仮想記憶機能とメモリ保護機能という2つの機能を提供している。仮想記憶機能とは、論理アドレスを物理アドレスに変換したり、物理アドレスに該当するブロック(ページ)がメイン・メモリ上に存在しないときに外部記憶装置との間でブロック(ページ)の入れ替え(すなわち「スワッピング」)を行う機能のことである。また、メモリ保護機能とは、1つのプログラムで生じた障害が他のプログラムに影響を及ぼさないようにする機能のことである。
【0058】
また、メモリ管理ユニット15は、メモリ空間上に存在する各プログラムのアドレス情報や属性情報を管理するためのMMUテーブルを備えている。図2には、MMUテーブルの構造や機能を模式的に図解している。MMUテーブルの各エントリは、該当するプログラムのアドレスとフラグを格納する各フィールドを含んでいる。フラグはプログラムの属性情報(例えばプログラムが実行形式か、読み出し専用か、読み書き可能か)を示している。
【0059】
メモリ空間上の各プログラムは、夫々に固有のプログラムIDを有している。あるプログラムをプロセッサ100に実行させるためには、メモリ管理ユニット15にプログラムIDとそのアドレス情報・属性情報を与える旨のプログラム・コードを制御ユニット13に供給すればよい。メモリ管理ユニット15は、自身のMMUテーブルを参照して、該当するプログラムの実行を許可する仕組みとなっている。下式は、あるプログラムの実行を許可するための疑似コードを記述したものである。
【0060】
【数1】
Mov R1,Program_ID
(レジスタR1にプログラムIDをセットせよ)
Mov R2,Memory_Address_&Flag
(レジスタR2にアドレスとフラグをセットせよ)
Load MMU, R1,R2
(メモリ管理ユニットにレジスタR1とR2の内容をセットせよ)
Jmp Application
(アプリケーションにジャンプせよ)
【0061】
上記コード中の"Mov"や"Load"などは、プロセッサ100に対するインストラクションであり、レジスタへの変数のセット等を意味する。各インストランションの詳細な実行手順は、ワイヤード・ロジック又はマイクロコードROM14で定義されたマイクロプログラムのいずれかの形態で定義されている(上述)。
【0062】
上記疑似コードのうち"Load MMU …"なるステップは、実質上、アプリケーションの実行を許可するためのインストラクションである。本実施例では、この"Load MMU …"インストラクションは、マイクロプログラムという形態で実装され、メモリ管理ユニット15への変数セットの他に、所定の認証手続が含まれている。
【0063】
この認証手続は、マイクロプログラム中で記述されているので、プロセッサ100の外部からは認証手続の存在自体が見えない。認証手続は、プロセッサ・チップ100内部で完結的に実行されるので、この動作を外部から監視することは殆ど不可能である。したがって、"Load MMU …"インストラクションを発行した外部プログラムからは全く見えない状態で、プロセッサ100はこの認証手続を実行することができる。但し、認証手続の詳細は後述する。
【0064】
プロセッサID16は、プロセッサ100に固有の識別情報(通常はシリアルな番号で構成される)であり、例えば製造時に一義的に付与される。プロセッサID16の実体は、不揮発メモリ(図示しない)に書き込まれた数値・文字データであり、制御ユニット13によって適宜読み出される。
【0065】
暗号化復号化ユニット17は、所定のデータを暗号化したり、逆に暗号化されたデータを復号化するための演算ユニットである。例えば、プロセッサID16のような秘匿性の高いデータは、暗号化復号化ユニット17によって予め暗号化してから、バス・インターフェース11経由でプロセッサ100の外部に出力される。逆に、暗号化されたデータ(例えばソフトウェア供給者から渡されるKey:後述)の復号化も行う。
【0066】
暗号化及び復号化の方式は、共通鍵、公開鍵のうちいずれの方式を採用してもよい。後者の公開鍵方式は、公開鍵と秘密鍵という一組の暗号鍵が用いられ、一方の鍵で暗号化したときには他方の鍵でしか復号化できない。例えば、第3者が公開鍵で暗号化したデータは秘密鍵を持つ本人しか復号化できないので、秘密情報を安全に交換することができる(周知)。
【0067】
なお、プロセッサ100を構成するためには、図1に示した以外にも多くのユニット等が必要である。図1から省略されたユニットの例は、整数同士の算術演算と論理演算(AND,OR,NOT)を担当するALU(Arithmetic and Logic Unit)や、実数(浮動小数点等)演算を担当するFPU(Floating-Point Unit)、インストラクションの実行手順を直線的に実装した配線論理回路(PLA:Programmable Logic Array)、入出力用のレジスタなどである。但し、これらは当業者には周知であり、また、本発明の要旨を構成するものではないので、本明細書中では省略している。また、図面の錯綜を回避するため、図中の各ハードウェア・ブロック間の接続も一部しか図示していない点を了承されたい。
【0068】
次いで、プロセッサ100によるプログラム保護動作について、図3を参照しながら説明する。
【0069】
ソフトウェア供給業者は、保護対象たるソフトウェア・プログラムをフロッピー・ディスク又はCD−ROMなどの記憶媒体に格納した形態で、市場に流通する。このソフトウェア・プログラムには、固有の識別情報すなわちソフトウェアID(通常はシリアルな番号で構成される)が付されている。ユーザは、フロッピー・ディスク又はCD−ROMなどの記憶媒体をソフトウェア供給業者から購入するという形態で、ソフトウェア・プログラムの限定的な使用権を取得する(記憶媒体の購入は、ソフトウェァの著作権や無制限な使用権を全く意味しない点に充分留意されたい)。そして、ユーザは、記憶媒体を所定のドライブ・ユニット81/82に装填して、ソフトウェア・プログラムをシステム200のハード・ディスク81上にインストールする。
【0070】
このインストール作業には、プロセッサID16を共通鍵により暗号化する手続(ステップS100)と、暗号化したプロセッサIDをソフトウェア供給業者に送付する手続(ステップS102)を含んでいる。暗号化処理は、暗号化復号化ユニット17を用いて行われる。送付手続は、ソフトウェア業者に対するKey(後述)の要求を意味する。なお、送付手続は、郵送に依る他、NIC90で接続された外部ネットワーク経由での伝送という形態で行ってもよい。
【0071】
ソフトウェア供給業者は、受け取った暗号情報を復号化して、元のプロセッサIDを得る(ステップS104)。そして、このプロセッサIDと、業者自身が手元で管理しているソフトウェアIDとを一体化して、共通鍵により暗号化することによってKeyを生成する(ステップS106)。Keyは、プロセッサIDとソフトウェアIDとを1つのコードとして同時に暗号化したものであり、各々に切り離すことはできない。Keyは、ソフトウェアの使用不能状態を解く鍵としての性質を持ち、郵送あるいはネットワーク経由でユーザに返送される(ステップS108)。
【0072】
このKeyを取得した状態で、コンピュータ・システム200上でソフトウェア・プログラムの実行が促されたとする。これは、例えばOS(オペレーティング・システム)のような外部プログラムが"LOAD MMU…"のような実行許可インストラクションを発行して、メモリ管理ユニット15にプログラムIDとプログラムの格納番地/属性情報がセットすることにより、実現される。
【0073】
本実施例の実行許可インストラクションに該当する処理手続は、図3の破線ブロックで囲まれている。実行許可は、メモリ管理ユニット15への各変数のセット以外に所定の認証手続を含んでいる。
【0074】
当該インストラクションが発行されると、プロセッサ100は、まず、受け取っているKeyを復号化して、プロセッサIDとソフトウェアIDとを取得する(ステップS110)。復号化処理は、暗号化復号化ユニット17を用いて行われる。
【0075】
次いで、プロセッサ100は、復号化して得られたプロセッサIDとソフトウェアIDを、プロセッサ100自身に内蔵されたプロセッサID、及び装填した記憶媒体から得られたソフトウェアIDの各々と比較する(ステップS112)。
【0076】
この比較の結果、照合に失敗したならば、メモリ管理ユニット15によるプログラムの実行は拒否される(ステップS114)。他方、照合が成功裡に終わったならば、メモリ管理ユニット15によるプログラムの実行は肯定され(ステップS116)、プログラムが実行される(ステップS118)。
【0077】
このような実行許可インストラクションの手続は、例えばマイクロコードROM14中で、上述のようなインストラクションの処理手続を記述することによって実現可能である。
【0078】
ステップS110〜S116は、"Load MMU …"という単一のインストラクションで実行される。該インストラクションを記述した疑似マイクロプログラム・コードを、以下に示しておく。
【0079】
【数2】
【0080】
このようなマイクロプログラムに従った認証手続は、外部プログラムからは全く見えない状態で実行される。本実施例に係る認証手続は、プロセッサ・チップ100内部で完結されるので、プロセッサ100外部からの監視は殆ど不可能なのである。
【0081】
第2の実施の形態
本発明の第2の実施例は、図1に示したものと等価なハードウェア構成により具現される。但し、第1の実施例との相違点は、共通鍵ではなく公開鍵方式で暗号化する点にある。図4には、第2の実施例に係るプログラム保護動作をフローチャートにして示している。以下、図4を参照しながら説明する。
【0082】
ソフトウェア供給業者は、保護対象たるソフトウェア・プログラムをフロッピー・ディスク又はCD−ROMなどの記憶媒体に格納した形態で、市場に流通する。このソフトウェア・プログラムには、固有の識別情報すなわちソフトウェアID(通常はシリアルな番号で構成される)が付されている。ユーザは、フロッピー・ディスク又はCD−ROMなどの記憶媒体をソフトウェア供給業者から購入するという形態で、ソフトウェア・プログラムの限定的な使用権を取得する(記憶媒体の購入は、ソフトウェァの著作権や無制限な使用権を全く意味しない点に充分留意されたい)。そして、ユーザは、記憶媒体を所定のドライブ・ユニット81/82に装填して、ソフトウェア・プログラムをシステム200のハード・ディスク81上にインストールする。
【0083】
このインストール作業には、プロセッサID16を暗号化する手続(ステップS200)と、暗号化したプロセッサID及びプロセッサ100に内蔵された公開鍵をソフトウェア供給業者に送付する手続(ステップS202)を含んでいる。暗号化処理は、暗号化復号化ユニット17が、ソフトウェア供給業者から与えられた公開鍵を用いて行われる。送付手続は、ソフトウェア供給業者に対するKey(後述)の要求を意味する。なお、送付手続は、郵送に依る他、NIC90で接続された外部ネットワーク経由での伝送という形態で行ってもよい。
【0084】
ソフトウェア供給業者は、受け取った暗号情報を、自分の秘密鍵を用いて復号化して、元のプロセッサIDを得る(ステップS204)。そして、このプロセッサIDと、業者自身が手元で管理しているソフトウェアIDとを一体化して、再びプロセッサ100の公開鍵を用いて暗号化して、Keyを生成する(ステップS206)。Keyは、プロセッサIDとソフトウェアIDとを1つのコードとして同時に暗号化したものであり、各々に切り離すことはできない。Keyは、ソフトウェアの使用不能状態を解く鍵としての性質を持ち、郵送あるいはネットワーク経由でユーザに返送される(ステップS208)。
【0085】
このKeyを取得した状態で、コンピュータ・システム200上でソフトウェア・プログラムの実行が促されたとする。これは、例えばOS(オペレーティング・システム)のような外部プログラムが"LOAD MMU…"のような実行許可インストラクションを発行して、メモリ管理ユニット15にプログラムIDとプログラムの格納番地/属性情報がセットすることにより、実現される。
【0086】
本実施例の実行許可インストラクションに該当する処理手続は、図4の破線ブロックで囲まれている。実行許可は、メモリ管理ユニット15への各変数のセット以外に所定の認証手続を含んでいる。
【0087】
当該インストラクションが発行されると、プロセッサ100は、受け取っているKeyを復号化して、プロセッサIDとソフトウェアIDとを取得する(ステップS210)。復号化処理は、暗号化復号化ユニット17が、プロセッサ100自身に内蔵された秘密鍵を用いて行う。
【0088】
次いで、プロセッサ100は、復号化して得られたプロセッサIDとソフトウェアIDを、プロセッサ100自身に内蔵されたプロセッサID、及び装填した記憶媒体から得られたソフトウェアIDの各々と比較する(ステップS212)。
【0089】
この比較の結果、照合に失敗したならば、メモリ管理ユニット15によるプログラムの実行は拒否される(ステップS214)。他方、照合が成功裡に終わったならば、メモリ管理ユニット15によるプログラムの実行は肯定され(ステップS216)、プログラムが実行される(ステップS218)。
【0090】
このような実行許可インストラクションの手続は、例えばマイクロコードROM14中で、上述のようなインストラクションの処理手続を記述することによって実現可能である。
【0091】
ステップS210〜S216は、"Load MMU …"という単一のインストラクションで実行される。該インストラクションを記述した疑似マイクロプログラム・コードを、以下に示しておく。
【0092】
【数3】
【0093】
このようなマイクロプログラムに従った認証手続は、外部プログラムからは全く見えない状態で実行される。本実施例に係る認証手続は、プロセッサ・チップ100内部で完結されるので、プロセッサ100外部からの監視は殆ど不可能なのである。
【0094】
第3の実施の形態
本発明の第3の実施例は、プロセッサ100が持つプロセッサIDを用いず、これに代わって時々刻々発生する乱数を用いるとともに、セキュリティ・デバイス95との協働的動作によってプログラム保護を行う点で、上述の第1及び第2の実施例とは相違する。
【0095】
図5には、本発明の第3の実施の形態に係るコンピュータ・システム200及びプロセッサ100のハードウェア構成を模式的に示している。以下、各部について説明する。
【0096】
プロセッサ100の外部ピンに直結したプロセッサ・バス101は、ブリッジ回路60経由でシステム・バス70に接続されている。ブリッジ回路60は、プロセッサ・バス101とシステム・バス70間の動作速度の相違を吸収するためのデータ・バッファや、メイン・メモリ50へのアクセス動作を制御するためのメモリ・コントローラを含んでいる。
【0097】
メイン・メモリ50は、プロセッサ100が実行するプログラム・コードや処理データを一時格納するための読み書き可能メモリであり、通常は、1以上のDRAM(ダイナミックRAM)チップで構成される。メイン・メモリ50上で展開されるメモリ空間は、メモリ管理ユニット15によって管理される。
【0098】
システム・バス70には、PCI(Peripheral Component Interconnect)バスやISA(Industry Standard Architecture)バスが該当し、各種周辺装置が相互接続されている。周辺装置には、例えばキーボードやディスプレイなどのコンソール類(図示しない)、ハード・ディスク・ドライブ(HDD)81、フロッピー・ディスク・ドライブ(FDD)82、CD−ROMドライブ83などの外部記憶装置類、外部ネットワークと接続するためのネットワーク・インターフェース・カード(NIC)90、シリアル・ポート経由でシリアル・データの入出力を行うためのシリアルI/Oコントローラ91などが含まれる。なお、バス70上の動作は、ロジック・アナライザなどを用いて解析することができる。
【0099】
本実施例では、シリアル・ポートにはセキュリティ・デバイス95が外部接続されている。セキュリティ・デバイス95は、保護対象たるソフトウェア・プログラムに付随する性質を持ち、ソフトウェアIDを格納する他、共通鍵又は公開鍵いずれかの方式による暗号化ユニットを含んでいる。セキュリティ・デバイス95の動作については後述する。
【0100】
ソフトウェア供給業者は、通常、フロッピー・ディスクやCD−ROMなどの記憶媒体の形態でソフトウェア・プログラムを配布する。各ユーザは、これら記憶媒体を所定のドライブ・ユニットに装填し、HDD81にコピーすることによって、ソフトウェア・プログラムをシステムにインストールすなわち利用可能な状態に置くようになっている。また、最近では、インターネットなどの外部ネットワーク経由でソフトウェア・プログラムが配布されることも多くなっている。
【0101】
プロセッサ100は、当業界においてCPU(Central Processing Unit)若しくはMPU(Micro Processing Unit)と呼ばれるものである。プロセッサ100は、通常はマザー・ボード(図示しない)上に搭載される回路チップであり、各入出力装置(図示しない)を制御してデータの授受を行ったり、データを演算処理し、処理結果をメイン・メモリ50上に記憶したりするなどのコンピュータ・システム(図示しない)の中枢機能を果たしている。
【0102】
図5に示すように、本実施形態に係るプロセッサ100は、バス・インターフェース11と、デコーダ12と、制御ユニット13と、マイクロコードROM14と、メモリ管理ユニット15と、暗号化復号化ユニット17と、乱数発生ユニット18とを含んでいる。
【0103】
バス・インターフェース11は、プロセッサ100外部のコンポーネントとの間でインストラクションやデータを授受するためのユニットである。バス・インターフェース11は、プロセッサ・バス17と直結している。なお、プロセッサ・バス17は、ブリッジ回路60を経由してメイン・メモリ50やシステム・バス70と相互接続されている。
【0104】
デコーダ12は、バス・インターフェースで受け取ったインストラクションを解釈して、制御ユニット13が理解できる形式に変換するためのユニットである。
【0105】
制御ユニット13は、インストラクションを実行する手順を整えるユニットである。実行するインストラクションは、ワイヤード・ロジック(配線論理)で実行するタイプと、マイクロ・プログラムで実行するタイプの2つに大別される。前者の場合は、インストラクションの実行制御に必要な論理を直線的に実装した順序回路が用いられる。また、後者の場合には、インストラクションはマイクロコード(又はピココード)と呼ばれるさらに細かいコードの集合(すなわちマイクロプログラム)で構成されており、該当するマイクロプログラムをマイクロコードROM14から読み出して実行することになる。なお、1つのプロセッサで利用できるインストラクション全体を「インストラクション・セット」と呼ぶ。
【0106】
マイクロコードROM14は、インストラクションの実行に必要なマイクロードを格納した読み出し専用メモリである。言い換えれば、マイクロコードROM14は、各インストラクションの実行手順を定義した不揮発メモリである。例えば、"LOAD"、"STORE"、"MOVE"などのインストラクションは、ある変数をプロセッサ100内のレジスタ(図示しない)に書き込むためのインストラクションであるが、これらの動作の詳細をマイクロコードROM14内で記述することによって定義することができる。
【0107】
メモリ管理ユニット(MMU)15は、プログラム・コードやデータをメイン・メモリ上に展開するなど、プロセッサ100のメモリ空間を管理するためのユニットである。メモリ管理ユニット15は、通常、仮想記憶機能とメモリ保護機能という2つの機能を提供している。仮想記憶機能とは、論理アドレスを物理アドレスに変換したり、物理アドレスに該当するブロック(ページ)がメイン・メモリ上に存在しないときに外部記憶装置との間でブロック(ページ)の入れ替え(すなわち「スワッピング」)を行う機能のことである。また、メモリ保護機能とは、1つのプログラムで生じた障害が他のプログラムに影響を及ぼさないようにする機能のことである。
【0108】
また、メモリ管理ユニット15は、メモリ空間上に存在する各プログラムのアドレス情報や属性情報を管理するためのMMUテーブルを備えている。MMUテーブルの構造や機能は図2を参照した上記説明と略同一なので、ここでは説明を省略する。
【0109】
あるプログラムをプロセッサ100に実行させるためには、メモリ管理ユニット15にプログラムIDとそのアドレス情報・属性情報を与える旨のプログラム・コードを制御ユニット13に供給すればよい。一般には、"Load MMU…"なるインストラクションによって、実質上、アプリケーションの実行が許可される。
【0110】
本実施例では、この"Load MMU …"インストラクションは、マイクロプログラムという形態で実装され、メモリ管理ユニット15への各変数セットの他に、所定の認証手続が含まれている。この認証手続は、マイクロプログラム中で記述されているので、プロセッサ100の外部からは認証手続の存在自体が見えない。認証手続は、プロセッサ・チップ100内部で完結的に実行されるので、この動作を外部から監視することは殆ど不可能である。したがって、"Load MMU …"インストラクションを発行した外部プログラムからは全く見えない状態で、プロセッサ100はこの認証手続を実行することができる。但し、認証手続の詳細は後述する。
【0111】
暗号化復号化ユニット17は、所定のデータを暗号化したり、逆に暗号化されたデータを復号化するための演算ユニットである。例えば、プロセッサ100が外部に出力する乱数のように秘匿性のあるデータは、暗号化復号化ユニット17によって予め暗号化してから、バス・インターフェース11経由でプロセッサ100の外部に出力される。逆に、暗号化されたデータ(例えばソフトウェア供給者から渡されるKey:後述)の復号化も行う。
【0112】
暗号化及び復号化の方式は、共通鍵、公開鍵のうちいずれの方式を採用してもよい。後者の公開鍵方式は、公開鍵と秘密鍵という一組の暗号鍵が用いられ、一方の鍵で暗号化したときには他方の鍵でしか復号化できない。例えば、第3者が公開鍵で暗号化したデータは秘密鍵を持つ本人しか復号化できないので、秘密情報を安全に送付することができる(周知)。
【0113】
乱数発生ユニット18は、時々刻々乱数を発生するためのユニットであり、本実施例ではプロセッサIDの代わりに用いられる。乱数を用いるのは、固定値を用いたのでは、認証手続を複数回重ねて動作を監視することで見破られてしまう虞があるからである。
【0114】
なお、プロセッサ100を構成するためには、図5に示した以外にも多くのユニット等が必要である。図5から省略されたユニットの例は、整数同士の算術演算と論理演算(AND,OR,NOT)を担当するALU(Arithmetic and Logic Unit)や、実数(浮動小数点等)演算を担当するFPU(Floating-Point Unit)、インストラクションの実行手順を直線的に実装した配線論理回路(PLA:Programmable Logic Array)、入出力用のレジスタなどである。但し、これらは当業者には周知であり、また、本発明の要旨を構成するものではないので、本明細書中では省略している。また、図面の錯綜を回避するため、図中の各ハードウェア・ブロック間の接続も一部しか図示していない点を了承されたい。
【0115】
次いで、プロセッサ100によるプログラム保護動作について、図6を参照しながら説明する。
【0116】
ソフトウェア供給業者は、保護対象たるソフトウェア・プログラムをフロッピー・ディスク又はCD−ROMなどの記憶媒体に格納した形態で、市場に流通する。このソフトウェア・プログラムには、固有の識別情報すなわちソフトウェアID(通常はシリアルな番号で構成される)が付されている。ユーザは、フロッピー・ディスク又はCD−ROMなどの記憶媒体をソフトウェア供給業者から購入するという形態で、ソフトウェア・プログラムの限定的な使用権を取得する(記憶媒体の購入は、ソフトウェァの著作権や無制限な使用権を全く意味しない点に充分留意されたい)。
【0117】
本実施例が、上記第1及び第2の実施例と相違するのは、ソフトウェア・プログラムを格納した記憶媒体と一緒にセキュリティ・デバイス95が配布される点である。ユーザは、ソフトウェア・プログラムをハード・ディスク81上にインストールするともに、セキュリティ・デバイス95をシリアル・ポートに外部接続する(ステップS300)。この実施例では、Keyの要求は、ソフトウェア供給業者ではなくセキュリティ・デバイス95に対して行われる(後述)。
【0118】
コンピュータ・システム200上でソフトウェア・プログラムの実行が促されたとする。これは、例えばOS(オペレーティング・システム)のような外部プログラムが"LOAD MMU…"のような実行許可インストラクションを発行して、メモリ管理ユニット15にプログラムIDとプログラムの格納番地/属性情報がセットすることにより、実現される。
【0119】
本実施例の実行許可インストラクションに該当する処理手続は、図6の破線ブロックで囲まれている。実行許可は、メモリ管理ユニット15への各変数のセット以外に所定の認証手続を含んでいる。
【0120】
当該インストラクションが発行されると、プロセッサ100は、まず、乱数発生ユニット18が発生した乱数をセキュリティ・デバイス95に送ることで、Keyの要求を行う(ステップS302)。乱数の送付はシステム・バス70経由で行われる。但し、乱数は時々刻々変化する性質を持ち、同じ乱数は一回しか使用しないので、バス70の動作をスヌープされてセキュリティが破られる可能性は極めて低い。
【0121】
セキュリティ・デバイス95は、受け取った乱数と、自身が格納するソフトウェアIDとを一体化して、共通鍵を用いて暗号化してKeyを生成し、システム・バス70経由でプロセッサ100に送り返す(ステップS304)。
【0122】
プロセッサ100は、共通鍵を用いてKeyを復号化して、乱数とソフトウェアIDとに分解する(ステップS306)。復号化処理は、暗号化復号化ユニット17を用いて行われる。
【0123】
次いで、プロセッサ100は、復号化して得られた乱数とソフトウェアIDを、プロセッサ100自身が保持する元の乱数、及び装填した記憶媒体から得られたソフトウェアIDの各々と比較する(ステップS308)。
【0124】
この比較の結果、照合に失敗したならば、メモリ管理ユニット15によるプログラムの実行は拒否される(ステップS310)。他方、照合が成功裡に終わったならば、メモリ管理ユニット15によるプログラムの実行は肯定され(ステップS312)、プログラムが実行される(ステップS314)。
【0125】
このような実行許可インストラクションの手続は、例えばマイクロコードROM14中で、上述のようなインストラクションの処理手続を記述することによって実現可能である。
【0126】
ステップS302〜S312は、"Load MMU …"という単一のインストラクションで実行される。該インストラクションを記述した疑似マイクロプログラム・コードを、以下に示しておく。
【0127】
【数4】
【0128】
このようなマイクロプログラムに従った認証手続は、外部プログラムからは全く見えない状態で実行される。本実施例に係る認証手続は、プロセッサ・チップ100内部で完結されるので、プロセッサ100外部からの監視は殆ど不可能なのである。
【0129】
第4の実施の形態
本発明の第4の実施例は、図5に示したものと等価なハードウェア構成により具現される。但し、第3の実施例との相違点は、共通鍵ではなく公開鍵方式で暗号化する点にある。図7には、第4の実施例に係るプログラム保護動作をフローチャートにして示している。以下、図7を参照しながら説明する。
【0130】
ソフトウェア供給業者は、保護対象たるソフトウェア・プログラムをフロッピー・ディスク又はCD−ROMなどの記憶媒体に格納した形態で、市場に流通する。このソフトウェア・プログラムには、固有の識別情報すなわちソフトウェアID(通常はシリアルな番号で構成される)が付されている。ユーザは、フロッピー・ディスク又はCD−ROMなどの記憶媒体をソフトウェア供給業者から購入するという形態で、ソフトウェア・プログラムの限定的な使用権を取得する(記憶媒体の購入は、ソフトウェァの著作権や無制限な使用権を全く意味しない点に充分留意されたい)。
【0131】
本実施例では、ソフトウェア・プログラムを格納した記憶媒体と一緒にセキュリティ・デバイス95に配布される。ユーザは、ソフトウェア・プログラムをハード・ディスク81上にインストールするともに、セキュリティ・デバイス95をシリアル・ポートに外部接続する(ステップS400)。Keyの要求は、ソフトウェア供給業者ではなくセキュリティ・デバイス95に対して行われる(後述)。
【0132】
コンピュータ・システム200上でソフトウェア・プログラムの実行が促されたとする。これは、例えばOS(オペレーティング・システム)のような外部プログラムが"LOAD MMU…"のような実行許可インストラクションを発行して、メモリ管理ユニット15にプログラムIDとプログラムの格納番地/属性情報がセットすることにより、実現される。
【0133】
本実施例の実行許可インストラクションに該当する処理手続は、図7の破線ブロックで囲まれている。実行許可は、メモリ管理ユニット15への各変数のセット以外に所定の認証手続を含んでいる。
【0134】
当該インストラクションが発行されると、プロセッサ100は、まず、乱数発生ユニット18が発生した乱数とプロセッサ100の公開鍵をセキュリティ・デバイス95に送ることで、Keyの要求を行う(ステップS402)。乱数の送付はシステム・バス70経由で行われる。但し、乱数は時々刻々変化する性質を持ち、同じ乱数は一回しか使用しないので、バス70の動作をスヌープされてセキュリティが破られる可能性は極めて低い。
【0135】
セキュリティ・デバイス95は、受け取った乱数と、自身が格納するソフトウェアIDとを一体化して、公開鍵を用いて暗号化してKeyを生成し、システム・バス70経由でプロセッサ100に送り返す(ステップS404)。
【0136】
プロセッサ100は、自身の秘密鍵を用いてKeyを復号化して、乱数とソフトウェアIDとに分解する(ステップS406)。復号化処理は、暗号化復号化ユニット17を用いて行われる。
【0137】
次いで、プロセッサ100は、復号化して得られた乱数とソフトウェアIDを、プロセッサ100自身が保持する元の乱数、及び装填した記憶媒体から得られたソフトウェアIDの各々と比較する(ステップS408)。
【0138】
この比較の結果、照合に失敗したならば、メモリ管理ユニット15によるプログラムの実行は拒否される(ステップS410)。他方、照合が成功裡に終わったならば、メモリ管理ユニット15によるプログラムの実行は肯定され(ステップS412)、プログラムが実行される(ステップS414)。
【0139】
このような実行許可インストラクションの手続は、例えばマイクロコードROM14中で、このようにインストラクションの処理手続を記述することによって実現可能である。
【0140】
ステップS402〜S412は、"Load MMU …"という単一のインストラクションで実行される。該インストラクションを記述した疑似マイクロプログラム・コードを、以下に示しておく。
【0141】
【数5】
【0142】
このようなマイクロプログラムに従った認証手続は、外部プログラムからは全く見えない状態で実行される。本実施例に係る認証手続は、プロセッサ・チップ100内部で完結されるので、プロセッサ100外部からの監視は殆ど不可能なのである。
【0143】
追補
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【0144】
【発明の効果】
以上詳記したように、本発明によれば、コンピュータ・システムに提供されるソフトウェア・プログラムの不正な使用・実行を防止する優れた技術を提供することができる。
【0145】
また、本発明によれば、プログラムの不正実行防止機能を備えた優れたプロセッサ、プログラムの不正実行を防止するためにプロセッサが実行するインストラクション、及びプログラムの不正実行防止方法を提供することができる。
【0146】
また、本発明によれば、外部から監視・変更することができないプログラムの不正実行防止機能付き優れたプロセッサ、プロセッサが実行するインストラクション、及びプログラムの不正実行防止方法を提供することにある。
【0147】
また、本発明によれば、ソフトウェア供給者がソフトウェア・プログラムの使用権をただ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…コンピュータ・システム。
Claims (2)
- ソフトウェア供給者がソフトウェア・プログラムの使用権をただ1つのユーザ・プロセッサにのみ許可するための、プログラムの不正実行防止方法であって、
(a)ソフトウェアIDが付されたソフトウェア・プログラムを実行するユーザ・プロセッサ内において、前記ユーザ・プロセッサ自身が保持する固有のプロセッサIDを暗号化し、該暗号化されたプロセッサIDを前記ソフトウェア供給者へ送付するステップと、
(b)ソフトウェア供給者において、前記暗号化されたプロセッサIDを一旦復号化し、ソフトウェア供給者自身が管理するソフトウェアID及び前記復号化されたプロセッサIDを一体化して暗号化し、暗号化データを生成するステップであって、前記暗号化データは、前記ソフトウェアIDと復号化されたプロセッサIDとを1つのコードとして同時に暗号化したものである、前記生成するステップと、
(c)ステップ(b)で得られた暗号化データを前記ユーザ・プロセッサ内に供給するステップと、
(d)前記ユーザ・プロセッサ内において、前記暗号化データを復号化してプロセッサID及びソフトウェアIDを取り出すステップと、
(e)前記ユーザ・プロセッサ内において、前記ユーザ・プロセッサが保持するプロセッサID及び前記ソフトウェア・プログラムに付されたソフトウェアIDを、ステップ(d)で得られたプロセッサID及びソフトウェアIDの各々と照合するステップと、
(f)前記照合処理が成功裡に終わったときのみ、前記ユーザ・プロセッサが前記ソフトウェア・プログラムを実行することを許可するステップとを含み、
前記ステップ(d)、(e)および(f)の実行手順は、前記ユーザ・プロセッサ内のワイヤード・ロジック又はマイクロコードROMのマイクロプログラムによって定義され、該実行手順は、外部プログラムからは全く見えない状態で実行されることを特徴とする、プログラムの不正実行防止方法。 - ソフトウェア供給者がソフトウェア・プログラムの使用権をただ1つのユーザ・プロセッサにのみ許可するための、プログラムの不正実行防止方法であって、
(a)ソフトウェアIDが付されたソフトウェア・プログラムを実行するユーザ・プロセッサ内において乱数を発生し、該発生した乱数を前記ソフトウェア供給者へ送付するステップと、
(b)ソフトウェア供給者において、ソフトウェア供給者自身が管理するソフトウェアID及び前記乱数を一体化して暗号化し、暗号化データを生成するステップであって、前記暗号化データは、前記ソフトウェアIDと復号化されたプロセッサIDとを1つのコードとして同時に暗号化したものである、前記生成するステップと、
(c)ステップ(b)で得られた暗号化データを前記ユーザ・プロセッサ内に供給するステップと、
(d)前記ユーザ・プロセッサ内において、前記暗号化データを復号化して乱数及びソフトウェアIDを取り出すステップと、
(e)前記ユーザ・プロセッサ内において、前記ユーザ・プロセッサが保持する乱数及び前記ソフトウェア・プログラムに付されたソフトウェアIDを、ステップ(d)で得られた乱数及びソフトウェアIDの各々と照合するステップと、
(f)前記照合処理が成功裡に終わったときのみ、前記ユーザ・プロセッサが前記ソフトウェア・プログラムを実行することを許可するステップとを含み、
前記ステップ(d)、(e)および(f)の実行手順は、前記ユーザ・プロセッサ内のワイヤード・ロジック又はマイクロコードROMのマイクロプログラムによって定義され、該実行手順は、外部プログラムからは全く見えない状態で実行されることを特徴とする、プログラムの不正実行防止方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13672498A JP3713141B2 (ja) | 1998-05-19 | 1998-05-19 | プログラムの不正実行防止方法 |
US09/300,955 US6704872B1 (en) | 1998-05-19 | 1999-04-28 | Processor with a function to prevent illegal execution of a program, an instruction executed by a processor and a method of preventing illegal execution of a program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13672498A JP3713141B2 (ja) | 1998-05-19 | 1998-05-19 | プログラムの不正実行防止方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002288529A Division JP4017149B2 (ja) | 2002-10-01 | 2002-10-01 | プログラムの不正実行防止機能付きプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11345117A JPH11345117A (ja) | 1999-12-14 |
JP3713141B2 true JP3713141B2 (ja) | 2005-11-02 |
Family
ID=15182021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13672498A Expired - Fee Related JP3713141B2 (ja) | 1998-05-19 | 1998-05-19 | プログラムの不正実行防止方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6704872B1 (ja) |
JP (1) | JP3713141B2 (ja) |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6424950B1 (en) * | 1999-05-10 | 2002-07-23 | Xerox Corporation | Remote feature delivery for output devices |
EP1855080A3 (de) * | 1999-08-19 | 2009-11-11 | Cameron International Corporation | Verfahren und Vorrichtung zur Messung eines zurückgelegten Weges |
JP4032203B2 (ja) * | 1999-10-25 | 2008-01-16 | ソニー株式会社 | 情報記録媒体の再生方法、再生装置、情報記録媒体の管理方法 |
US7143294B1 (en) * | 1999-10-29 | 2006-11-28 | Broadcom Corporation | Apparatus and method for secure field upgradability with unpredictable ciphertext |
JP3866105B2 (ja) * | 1999-12-02 | 2007-01-10 | インフィネオン テクノロジーズ アクチエンゲゼルシャフト | 暗号化機能を備えるマイクロプロセッサ装置 |
JP3848573B2 (ja) * | 2000-01-18 | 2006-11-22 | インフィネオン テクノロジーズ アクチエンゲゼルシャフト | マイクロプロセッサシステム |
US7270193B2 (en) * | 2000-02-14 | 2007-09-18 | Kabushiki Kaisha Toshiba | Method and system for distributing programs using tamper resistant processor |
US7409543B1 (en) * | 2000-03-30 | 2008-08-05 | Digitalpersona, Inc. | Method and apparatus for using a third party authentication server |
US7051362B2 (en) * | 2000-05-16 | 2006-05-23 | Ideaflood, Inc. | Method and system for operating a network server to discourage inappropriate use |
FR2811096A1 (fr) * | 2000-06-28 | 2002-01-04 | St Microelectronics Sa | Microprocesseur securise comprenant un systeme d'attribution de droits a des librairies |
DE10043499A1 (de) * | 2000-09-01 | 2002-03-14 | Bosch Gmbh Robert | Verfahren zur Datenübertragung |
US6968453B2 (en) * | 2001-01-17 | 2005-11-22 | International Business Machines Corporation | Secure integrated device with secure, dynamically-selectable capabilities |
US6948066B2 (en) * | 2001-01-17 | 2005-09-20 | International Business Machines Corporation | Technique for establishing provable chain of evidence |
US6990444B2 (en) | 2001-01-17 | 2006-01-24 | International Business Machines Corporation | Methods, systems, and computer program products for securely transforming an audio stream to encoded text |
US7028184B2 (en) * | 2001-01-17 | 2006-04-11 | International Business Machines Corporation | Technique for digitally notarizing a collection of data streams |
KR20020083851A (ko) * | 2001-04-30 | 2002-11-04 | 주식회사 마크애니 | 디지털 컨텐츠의 보호 및 관리를 위한 방법 및 이를이용한 시스템 |
FI115257B (fi) * | 2001-08-07 | 2005-03-31 | Nokia Corp | Menetelmä informaation käsittelemiseksi elektroniikkalaitteessa, järjestelmä, elektroniikkalaite ja suoritinlohko |
US7178041B2 (en) * | 2001-10-18 | 2007-02-13 | Nokia Corporation | Method, system and computer program product for a trusted counter in an external security element for securing a personal communication device |
US7207060B2 (en) | 2001-10-18 | 2007-04-17 | Nokia Corporation | Method, system and computer program product for secure ticketing in a communications device |
US20030076957A1 (en) * | 2001-10-18 | 2003-04-24 | Nadarajah Asokan | Method, system and computer program product for integrity-protected storage in a personal communication device |
EP1359550A1 (fr) * | 2001-11-30 | 2003-11-05 | STMicroelectronics S.A. | Régéneration d'une quantité secrète à partir d'un identifiant d'un circuit intégré |
EP1391853A1 (fr) | 2001-11-30 | 2004-02-25 | STMicroelectronics S.A. | Diversification d'un identifiant unique d'un circuit intégré |
FR2833119A1 (fr) | 2001-11-30 | 2003-06-06 | St Microelectronics Sa | Generation de quantites secretes d'identification d'un circuit integre |
US20030126453A1 (en) * | 2001-12-31 | 2003-07-03 | Glew Andrew F. | Processor supporting execution of an authenticated code instruction |
US7454169B2 (en) * | 2002-05-08 | 2008-11-18 | Mediatek Inc. | Method and apparatus for use in securing an electronic device such as a cell phone |
EP1510899B1 (en) | 2002-06-05 | 2011-12-07 | Fujitsu Limited | Memory management unit |
JP4326189B2 (ja) * | 2002-06-10 | 2009-09-02 | 健 坂村 | 自律型icカード及び通信システム |
US7015795B2 (en) * | 2002-12-30 | 2006-03-21 | Potomac Photonics, Inc. | Self-identifying integrated circuits and method for fabrication thereof |
US8041957B2 (en) | 2003-04-08 | 2011-10-18 | Qualcomm Incorporated | Associating software with hardware using cryptography |
US7681046B1 (en) * | 2003-09-26 | 2010-03-16 | Andrew Morgan | System with secure cryptographic capabilities using a hardware specific digital secret |
MXPA06003915A (es) | 2003-10-17 | 2006-07-05 | Trinary Anlagenbau Gmbh | Sistema de control por ordenador con datos neutros para una maquina herramienta utilizada para producir piezas de trabajo con una superficie roscada y una maquina herramienta asociada. |
JP4714582B2 (ja) * | 2003-10-17 | 2011-06-29 | トリナリー・アンラーゲンバウ・ゲゼルシャフト・ミット・ベシュレンクテル・ハフツング | 工作機械の誤起動を防止するための方法 |
US7447917B2 (en) * | 2003-11-12 | 2008-11-04 | Microsoft Corporation | Obfuscated state store for rights management system and the like |
US7694151B1 (en) * | 2003-11-20 | 2010-04-06 | Johnson Richard C | Architecture, system, and method for operating on encrypted and/or hidden information |
GB0403705D0 (en) * | 2004-02-19 | 2004-03-24 | Waterleaf Ltd | Gaming facility and method of operation thereof |
US7464405B2 (en) | 2004-03-25 | 2008-12-09 | International Business Machines Corporation | Method for preventing loading and execution of rogue operating systems in a logical partitioned data processing system |
US7610494B2 (en) * | 2004-12-30 | 2009-10-27 | Finisar Corporation | Encrypted microcode update of an optical transceiver |
US7802294B2 (en) * | 2005-01-28 | 2010-09-21 | Microsoft Corporation | Controlling computer applications' access to data |
US7810153B2 (en) * | 2005-01-28 | 2010-10-05 | Microsoft Corporation | Controlling execution of computer applications |
JP3944216B2 (ja) * | 2005-03-11 | 2007-07-11 | 株式会社エヌ・ティ・ティ・ドコモ | 認証装置、携帯端末、及び、認証方法 |
JP2007058588A (ja) * | 2005-08-24 | 2007-03-08 | Toshiba Corp | プログラム保護機能を持つプロセッサ |
US7921303B2 (en) | 2005-11-18 | 2011-04-05 | Qualcomm Incorporated | Mobile security system and method |
US7496727B1 (en) | 2005-12-06 | 2009-02-24 | Transmeta Corporation | Secure memory access system and method |
JP2009070144A (ja) * | 2007-09-13 | 2009-04-02 | Omron Corp | Plcにおけるプログラミング方法 |
US8347109B2 (en) * | 2008-02-28 | 2013-01-01 | Red Hat, Inc. | Secure serial number generation |
US8819839B2 (en) * | 2008-05-24 | 2014-08-26 | Via Technologies, Inc. | Microprocessor having a secure execution mode with provisions for monitoring, indicating, and managing security levels |
US8762687B2 (en) * | 2008-05-24 | 2014-06-24 | Via Technologies, Inc. | Microprocessor providing isolated timers and counters for execution of secure code |
US8510560B1 (en) | 2008-08-20 | 2013-08-13 | Marvell International Ltd. | Efficient key establishment for wireless networks |
US8341419B2 (en) * | 2008-09-09 | 2012-12-25 | Via Technologies, Inc. | Apparatus and method for limiting access to model specific registers in a microprocessor |
US8402279B2 (en) * | 2008-09-09 | 2013-03-19 | Via Technologies, Inc. | Apparatus and method for updating set of limited access model specific registers in a microprocessor |
WO2010033497A1 (en) | 2008-09-18 | 2010-03-25 | Marvell World Trade Ltd. | Preloading applications onto memory at least partially during boot up |
US8316243B2 (en) * | 2009-08-07 | 2012-11-20 | Via Technologies, Inc. | Apparatus and method for generating unpredictable processor-unique serial number for use as an encryption key |
TWI497344B (zh) * | 2010-05-17 | 2015-08-21 | Via Tech Inc | 微處理器及產生不可預測之鑰的方法 |
EP2591437B1 (en) * | 2010-07-09 | 2018-11-14 | BlackBerry Limited | Microcode-based challenge/response process |
CA2745975C (en) * | 2010-07-09 | 2016-02-23 | Research In Motion Limited | Utilization of a microcode interpreter built in to a processor |
US9736801B1 (en) | 2013-05-20 | 2017-08-15 | Marvell International Ltd. | Methods and apparatus for synchronizing devices in a wireless data communication system |
US9521635B1 (en) | 2013-05-21 | 2016-12-13 | Marvell International Ltd. | Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system |
US9402270B2 (en) * | 2013-09-10 | 2016-07-26 | Marvell World Trade Ltd. | Secure device bootstrap identity |
JP2016126037A (ja) | 2014-12-26 | 2016-07-11 | ソニー株式会社 | 信号処理装置、および信号処理方法、並びにプログラム |
US10979412B2 (en) | 2016-03-08 | 2021-04-13 | Nxp Usa, Inc. | Methods and apparatus for secure device authentication |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2205667B (en) * | 1987-06-12 | 1991-11-06 | Ncr Co | Method of controlling the operation of security modules |
US4959860A (en) * | 1989-02-07 | 1990-09-25 | Compaq Computer Corporation | Power-on password functions for computer system |
US5237616A (en) * | 1992-09-21 | 1993-08-17 | International Business Machines Corporation | Secure computer system having privileged and unprivileged memories |
US5563946A (en) * | 1994-04-25 | 1996-10-08 | International Business Machines Corporation | Method and apparatus for enabling trial period use of software products: method and apparatus for passing encrypted files between data processing systems |
US5754646A (en) * | 1995-07-19 | 1998-05-19 | Cable Television Laboratories, Inc. | Method for protecting publicly distributed software |
US5978482A (en) * | 1995-08-21 | 1999-11-02 | International Business Machines Corporation | Method and system for protection of digital information |
AU1690597A (en) * | 1996-01-11 | 1997-08-01 | Mitre Corporation, The | System for controlling access and distribution of digital property |
DE69729495T2 (de) * | 1996-03-08 | 2004-10-28 | Matsushita Electric Industrial Co., Ltd., Kadoma | Bildinformationsverarbeitungssystem und Mikroprozessor für die geschützte Reproduktion von audiovisuellen Daten |
-
1998
- 1998-05-19 JP JP13672498A patent/JP3713141B2/ja not_active Expired - Fee Related
-
1999
- 1999-04-28 US US09/300,955 patent/US6704872B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6704872B1 (en) | 2004-03-09 |
JPH11345117A (ja) | 1999-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3713141B2 (ja) | プログラムの不正実行防止方法 | |
KR100896625B1 (ko) | 숨겨진 중간 키들을 사용하여 소프트웨어를 인증하기 위한시스템 및 방법 | |
TW550501B (en) | Apparatus, method, and system for an access transaction | |
US6363486B1 (en) | Method of controlling usage of software components | |
US7082615B1 (en) | Protecting software environment in isolated execution | |
US8065521B2 (en) | Secure processor architecture for use with a digital rights management (DRM) system on a computing device | |
US7475254B2 (en) | Method for authenticating software using protected master key | |
KR101219819B1 (ko) | 디지털 어플리케이션을 라이센싱하기 위한 유연한 라이센싱 아키텍처 | |
US6651171B1 (en) | Secure execution of program code | |
JP4822646B2 (ja) | 分離実行環境で使用するためのキー階層の生成 | |
US7010684B2 (en) | Method and apparatus for authenticating an open system application to a portable IC device | |
US7322042B2 (en) | Secure and backward-compatible processor and secure software execution thereon | |
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 | |
EP0302710A2 (en) | A method of controlling the use of computer programs | |
US20090094601A1 (en) | Method and device for protecting software from unauthorized use | |
US7013481B1 (en) | Attestation key memory device and bus | |
JP4017149B2 (ja) | プログラムの不正実行防止機能付きプロセッサ | |
JP3289656B2 (ja) | プログラムの実行制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050512 Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050512 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20050512 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050516 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050815 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20050815 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050819 |
|
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: 20080826 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090826 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090826 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100826 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100826 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110826 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |