JPH0799497B2 - ソフトウェアの使用を管理するための装置及び方法 - Google Patents
ソフトウェアの使用を管理するための装置及び方法Info
- Publication number
- JPH0799497B2 JPH0799497B2 JP3308350A JP30835091A JPH0799497B2 JP H0799497 B2 JPH0799497 B2 JP H0799497B2 JP 3308350 A JP3308350 A JP 3308350A JP 30835091 A JP30835091 A JP 30835091A JP H0799497 B2 JPH0799497 B2 JP H0799497B2
- Authority
- JP
- Japan
- Prior art keywords
- software
- software module
- module
- computer system
- entitlement
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 40
- 238000012797 qualification Methods 0.000 claims description 68
- 238000012795 verification Methods 0.000 claims description 46
- 230000007246 mechanism Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 description 25
- 230000008569 process Effects 0.000 description 8
- 238000010200 validation analysis Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000004888 barrier function Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000015556 catabolic process Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012419 revalidation Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Description
【0001】
【産業上の利用分野】本発明は、コンピュータ・ソフト
ウェアの使用に関し、より具体的には、コンピュータ・
ユーザがライセンス・ソフトウェアをライセンスに従わ
ない形で使用できるのを制限することに関する。
ウェアの使用に関し、より具体的には、コンピュータ・
ユーザがライセンス・ソフトウェアをライセンスに従わ
ない形で使用できるのを制限することに関する。
【0002】
【従来の技術】現代のコンピュータ・システムは、数え
きれない時間にわたる技術上及びプログラミング上の熟
練の成果をその設計に取り入れた、極めて複雑な機械で
ある。コンピュータ・システムは多くの構成要素を含ん
でいるが、それらはハードウェアとソフトウェアに大別
できる。ハードウェアは、システムを構成する、有形の
回路、ボード、ケーブル、記憶装置、格納装置などであ
る。しかし、タイプライタでピューリツアー賞を受賞で
きる脚本を書けないのと同様、ハードウェアは、それ自
体で、現実の世界の問題を解決することはできない。ハ
ードウェアは、何をすべきかを告げる命令を必要とす
る。「ソフトウェア」とは、そのもっとも純粋な形で
は、ハードウェアに有用な仕事を実行させる命令を言
う。(ただし漠然と、ソフトウェアが記憶され配布され
ている媒体に適用されることもある)。ハードウェアと
同様に、ソフトウェアも人間の創意工夫の産物である。
高品質のソフトウェアは、プログラマとも呼ばれる作成
者の側の、かなりの創造性、訓練、知能を必要とする。
多くの大学が、人々にソフトウェアを作成する技術を教
える目的で、「コンピュータ科学」及び類似の学科の教
育課程を設けている。この業界全体が、何千人ものキャ
リアを抱え、有用な仕事をするソフトウェアを作成する
までに成長して来た。ソフトウェアの開発に莫大な労力
が費やされる結果、コンピュータ・システムの一部分で
あるソフトウェアの価値が、ハードウェアの価値を上回
ることも珍しくはない。
きれない時間にわたる技術上及びプログラミング上の熟
練の成果をその設計に取り入れた、極めて複雑な機械で
ある。コンピュータ・システムは多くの構成要素を含ん
でいるが、それらはハードウェアとソフトウェアに大別
できる。ハードウェアは、システムを構成する、有形の
回路、ボード、ケーブル、記憶装置、格納装置などであ
る。しかし、タイプライタでピューリツアー賞を受賞で
きる脚本を書けないのと同様、ハードウェアは、それ自
体で、現実の世界の問題を解決することはできない。ハ
ードウェアは、何をすべきかを告げる命令を必要とす
る。「ソフトウェア」とは、そのもっとも純粋な形で
は、ハードウェアに有用な仕事を実行させる命令を言
う。(ただし漠然と、ソフトウェアが記憶され配布され
ている媒体に適用されることもある)。ハードウェアと
同様に、ソフトウェアも人間の創意工夫の産物である。
高品質のソフトウェアは、プログラマとも呼ばれる作成
者の側の、かなりの創造性、訓練、知能を必要とする。
多くの大学が、人々にソフトウェアを作成する技術を教
える目的で、「コンピュータ科学」及び類似の学科の教
育課程を設けている。この業界全体が、何千人ものキャ
リアを抱え、有用な仕事をするソフトウェアを作成する
までに成長して来た。ソフトウェアの開発に莫大な労力
が費やされる結果、コンピュータ・システムの一部分で
あるソフトウェアの価値が、ハードウェアの価値を上回
ることも珍しくはない。
【0003】現代のコンピュータ・システムの特徴の一
つは、非常に高速度で容易にデータを伝送し複写できる
ことである。一般的に、これは必要かつ有益な能力であ
る。しかし、このことはまた、何年も労力をかけて作成
したソフトウェアが、比較的安価な磁気媒体で1秒の何
分の一かで複製でき、濫用される可能性があることを意
味している。許可を得ていない人々が、僅かな費用と労
力で、価値のあるソフトウェアを複製することができ
る。この慣行は、一般に、ソフトウェア著作権侵害と呼
ばれている。近年、ソフトウェア著作権侵害を抑制する
ため、刑法及び民法上の義務を課する様々な法律が制定
されてきている。しかしながら、ソフトウェアが比較的
容易に複写でき、かつソフトウェアが高価なためにそう
したくなる誘惑にかられるため、ソフトウェアの著作権
侵害は依然として問題となっている。
つは、非常に高速度で容易にデータを伝送し複写できる
ことである。一般的に、これは必要かつ有益な能力であ
る。しかし、このことはまた、何年も労力をかけて作成
したソフトウェアが、比較的安価な磁気媒体で1秒の何
分の一かで複製でき、濫用される可能性があることを意
味している。許可を得ていない人々が、僅かな費用と労
力で、価値のあるソフトウェアを複製することができ
る。この慣行は、一般に、ソフトウェア著作権侵害と呼
ばれている。近年、ソフトウェア著作権侵害を抑制する
ため、刑法及び民法上の義務を課する様々な法律が制定
されてきている。しかしながら、ソフトウェアが比較的
容易に複写でき、かつソフトウェアが高価なためにそう
したくなる誘惑にかられるため、ソフトウェアの著作権
侵害は依然として問題となっている。
【0004】「パーソナル・コンピュータ」と呼ばれる
小型コンピュータ用の大量配布される安価なソフトウェ
アの場合、全顧客に対して同額の固定した一括払い料金
で、ソフトウェアの使用ライセンスを認めるのが普通で
ある。これは、大型のメインフレーム・コンピュータ・
システムでは、それほど行われていない。このような大
型システム用のソフトウェアは、数百万行のコードを要
することがあり、開発及び維持に非常に大量の投資を必
要とする。開発者がこの投資を回収するのに充分な単一
の固定した一括払い料金を設定すると、多くの小口ユー
ザにとって、使用できないほど高価になりがちである。
したがって、メインフレームの場合は、使用量に基づく
ソフトウェアのライセンス料を請求するのが普通であ
る。「段階的価格設定」と呼ばれるこのような一つの方
法は、可変料金体系に従って顧客の機械の性能に基づい
た料金を請求するものである。より多くの端末が接続さ
れたより高速の機械を使用する顧客ほど、同じソフトウ
ェアに対し、性能の劣る機械の顧客よりも高いライセン
ス料を支払う。もう一つの通常の慣行は、ソフトウェア
の保守グレードアップに対して別途料金を請求するもの
である。
小型コンピュータ用の大量配布される安価なソフトウェ
アの場合、全顧客に対して同額の固定した一括払い料金
で、ソフトウェアの使用ライセンスを認めるのが普通で
ある。これは、大型のメインフレーム・コンピュータ・
システムでは、それほど行われていない。このような大
型システム用のソフトウェアは、数百万行のコードを要
することがあり、開発及び維持に非常に大量の投資を必
要とする。開発者がこの投資を回収するのに充分な単一
の固定した一括払い料金を設定すると、多くの小口ユー
ザにとって、使用できないほど高価になりがちである。
したがって、メインフレームの場合は、使用量に基づく
ソフトウェアのライセンス料を請求するのが普通であ
る。「段階的価格設定」と呼ばれるこのような一つの方
法は、可変料金体系に従って顧客の機械の性能に基づい
た料金を請求するものである。より多くの端末が接続さ
れたより高速の機械を使用する顧客ほど、同じソフトウ
ェアに対し、性能の劣る機械の顧客よりも高いライセン
ス料を支払う。もう一つの通常の慣行は、ソフトウェア
の保守グレードアップに対して別途料金を請求するもの
である。
【0005】高品位のソフトウェアを作成するのに必要
な専門知識のレベルと、それにかかる時間及び労力の量
を考えると、このようなソフトウェアの作成には金がか
かる。ソフトウェアの開発者がその訓練と努力に比して
報われない場合は、ソフトウェアを作成する人がいなく
なる。開発者が行ったソフトウェアへの投資を保護する
ことは、実際上の要請であるだけでなく、道徳上の要請
でもある。したがって、ソフトウェアの正当な所有者
は、ソフトウェアを許可なしに使用することが難しく、
ソフトウェアの開発者がその製品に対して正当に報われ
る、ソフトウェア配布方法の開発を求めて来た。
な専門知識のレベルと、それにかかる時間及び労力の量
を考えると、このようなソフトウェアの作成には金がか
かる。ソフトウェアの開発者がその訓練と努力に比して
報われない場合は、ソフトウェアを作成する人がいなく
なる。開発者が行ったソフトウェアへの投資を保護する
ことは、実際上の要請であるだけでなく、道徳上の要請
でもある。したがって、ソフトウェアの正当な所有者
は、ソフトウェアを許可なしに使用することが難しく、
ソフトウェアの開発者がその製品に対して正当に報われ
る、ソフトウェア配布方法の開発を求めて来た。
【0006】ソフトウェアは、正当な所有者から多数の
異なる方法で配布される。無許可の使用を防止する観点
から、これらの配布方法は、無制限資格付与法、制限資
格付与法、非資格付与法の3つのグループに大別でき
る。
異なる方法で配布される。無許可の使用を防止する観点
から、これらの配布方法は、無制限資格付与法、制限資
格付与法、非資格付与法の3つのグループに大別でき
る。
【0007】無制限資格付与とは、配布されたソフトウ
ェアが、その設計の対象であったどの機械ででも、制限
なしに走行するという意味である。無制限資格付与のソ
フトウェアを配布する所有者は、各ユーザに、ユーザが
それに対して対価を支払いそれを実行する資格を有する
ソフトウェアだけを配布しなければならない。このよう
なソフトウェアの受取側がこれを許可されない形で複製
したり使用したりするのを妨げるものは、法的及び契約
上の義務だけである。大部分のパーソナル・コンピュー
タで使用されているものなど、一括払い料金でライセン
スが与えられる安価なソフトウェアでは、これがもっと
も普通の配布方法である。
ェアが、その設計の対象であったどの機械ででも、制限
なしに走行するという意味である。無制限資格付与のソ
フトウェアを配布する所有者は、各ユーザに、ユーザが
それに対して対価を支払いそれを実行する資格を有する
ソフトウェアだけを配布しなければならない。このよう
なソフトウェアの受取側がこれを許可されない形で複製
したり使用したりするのを妨げるものは、法的及び契約
上の義務だけである。大部分のパーソナル・コンピュー
タで使用されているものなど、一括払い料金でライセン
スが与えられる安価なソフトウェアでは、これがもっと
も普通の配布方法である。
【0008】制限資格付与とは、ソフトウェアが、ユー
ザがそれを複写していくらでも多くの機械上で実行でき
るのを制限する、ある種の制限を内蔵していることを意
味する。いくつかの異なる制限資格付与法がある。その
一つは、配布されたオリジナルから作成できるコピーの
数を制限する、複写制限である。複写制限は、ソフトウ
ェア著作権侵害に対してあるレベルの保護を実現する
が、若干の欠点をもつ。無制限資格付与と同様に、複写
制限でも、所有者が各ユーザに、そのユーザが実行する
資格を有するソフトウェアだけを配布することが必要と
なる。これはフルプルーフではなく、保護機構を打ちや
ぶって、複写保護されたソフトウェアの文字通りのコピ
ーをとることのできるプログラムも存在する。最後に、
これは、ユーザがバックアップの目的で正当なコピーを
とれる、またはソフトウェアを高速記憶装置から走行で
きるのを妨げる。もう一つの制限資格付与法は、ユーザ
または機械に特有の情報をソフトウェア自体の中にコー
ド化するものである。ソフトウェアを実行する際、機械
は、ソフトウェアがその機械またはユーザに許可されて
いることを確かめるために検査を行う。この方法は、ユ
ーザが正当なコピーをとれるのを妨げずに、保護を実現
する。ただし、これは、配布されたソフトウェアの各コ
ピーをそれぞれ独自にコンパイルし、配布媒体に載せ、
発送しなければならないので、非常に高価な配布システ
ムが必要となる。
ザがそれを複写していくらでも多くの機械上で実行でき
るのを制限する、ある種の制限を内蔵していることを意
味する。いくつかの異なる制限資格付与法がある。その
一つは、配布されたオリジナルから作成できるコピーの
数を制限する、複写制限である。複写制限は、ソフトウ
ェア著作権侵害に対してあるレベルの保護を実現する
が、若干の欠点をもつ。無制限資格付与と同様に、複写
制限でも、所有者が各ユーザに、そのユーザが実行する
資格を有するソフトウェアだけを配布することが必要と
なる。これはフルプルーフではなく、保護機構を打ちや
ぶって、複写保護されたソフトウェアの文字通りのコピ
ーをとることのできるプログラムも存在する。最後に、
これは、ユーザがバックアップの目的で正当なコピーを
とれる、またはソフトウェアを高速記憶装置から走行で
きるのを妨げる。もう一つの制限資格付与法は、ユーザ
または機械に特有の情報をソフトウェア自体の中にコー
ド化するものである。ソフトウェアを実行する際、機械
は、ソフトウェアがその機械またはユーザに許可されて
いることを確かめるために検査を行う。この方法は、ユ
ーザが正当なコピーをとれるのを妨げずに、保護を実現
する。ただし、これは、配布されたソフトウェアの各コ
ピーをそれぞれ独自にコンパイルし、配布媒体に載せ、
発送しなければならないので、非常に高価な配布システ
ムが必要となる。
【0009】非資格付与法は、配布されたソフトウェア
が使用禁止にされていて、実行するには別途配布される
資格付与を必要とすることを意味する。ある非資格付与
法は、特注ソフトウェアの配布を完全に避ける可能性が
ある。ただし、必ずしもこのような方法の全てがこうし
た能力をもっているわけでない。たとえば、所有者は、
同じ1組の多数のソフトウェア・プログラムを単一の総
称媒体上でその全ての顧客に配布し、顧客が支払いを済
ませたプログラムだけを実行することを許す、個別化さ
れた許可キーを各顧客に別途配布することができる。非
資格付与法は、他の方法に付随する多くの問題を回避す
るが、現在の設計は、資格付与の偽造や著しい性能劣化
を受ける恐れが大きい。大抵の場合、ソフトウェアを実
行するための資格付与を差し止めるために用いられる機
構は、性能劣化という検証上のオーバーヘッドを避ける
ため、資格検証手段をソフトウェア・モジュール内に
(データあるいは命令として)集中することを必要とす
る。場合によっては、この資格付与のオーバーヘッド
が、製品識別子のサイズ、及び配布されたソフトウェア
内の保護ルーチンの実装によることがある。あるいはま
た、そのオーバーヘッドがソフトウェアを走行させなが
ら複雑な復号手段を実行する必要によることもある。こ
うした資格検査の集中の結果、経験あるプログラマが、
「パッチング」すなわち目的コードの選択された小部分
を無効にすることによって、保護機構を無効にするの
は、比較的容易である。別の場合、目的コードは資格検
証を行わず、モジュールを、それからビット署名を作成
することによって識別する、安全呼出経路がそれを行
う。これはパッチングを受け難くするが、不可避的に呼
出し機構の重大な性能劣化をひき起こす。
が使用禁止にされていて、実行するには別途配布される
資格付与を必要とすることを意味する。ある非資格付与
法は、特注ソフトウェアの配布を完全に避ける可能性が
ある。ただし、必ずしもこのような方法の全てがこうし
た能力をもっているわけでない。たとえば、所有者は、
同じ1組の多数のソフトウェア・プログラムを単一の総
称媒体上でその全ての顧客に配布し、顧客が支払いを済
ませたプログラムだけを実行することを許す、個別化さ
れた許可キーを各顧客に別途配布することができる。非
資格付与法は、他の方法に付随する多くの問題を回避す
るが、現在の設計は、資格付与の偽造や著しい性能劣化
を受ける恐れが大きい。大抵の場合、ソフトウェアを実
行するための資格付与を差し止めるために用いられる機
構は、性能劣化という検証上のオーバーヘッドを避ける
ため、資格検証手段をソフトウェア・モジュール内に
(データあるいは命令として)集中することを必要とす
る。場合によっては、この資格付与のオーバーヘッド
が、製品識別子のサイズ、及び配布されたソフトウェア
内の保護ルーチンの実装によることがある。あるいはま
た、そのオーバーヘッドがソフトウェアを走行させなが
ら複雑な復号手段を実行する必要によることもある。こ
うした資格検査の集中の結果、経験あるプログラマが、
「パッチング」すなわち目的コードの選択された小部分
を無効にすることによって、保護機構を無効にするの
は、比較的容易である。別の場合、目的コードは資格検
証を行わず、モジュールを、それからビット署名を作成
することによって識別する、安全呼出経路がそれを行
う。これはパッチングを受け難くするが、不可避的に呼
出し機構の重大な性能劣化をひき起こす。
【0010】従来技術で教示されている保護方法は、保
護レベルと使いやすさとの折合いをつけるものである。
機械特有の情報をソフトウェア中にコード化することに
よって比較的高レベルの保護を得ることが可能である
が、配布される各ソフトウェア・コピーが独自のものと
なる、非常に複雑な配布システムを維持するという犠牲
を払わなければならない。より安価な配布も可能である
が、保護が一部失われるという犠牲を払わなければなら
ない。高レベルの保護を実現し、大量配布技法を用いて
容易に配布でき、かつシステムの性能、ユーザが正当に
バックアップ複写用コピーをとる可能性、その他の必要
な機能を不当に妨げない方法が求められている。同時
に、段階的価格設定、及び異なるソフトウェアの異なる
バージョンごとに別々のライセンス料をサポートする方
法も求められている。
護レベルと使いやすさとの折合いをつけるものである。
機械特有の情報をソフトウェア中にコード化することに
よって比較的高レベルの保護を得ることが可能である
が、配布される各ソフトウェア・コピーが独自のものと
なる、非常に複雑な配布システムを維持するという犠牲
を払わなければならない。より安価な配布も可能である
が、保護が一部失われるという犠牲を払わなければなら
ない。高レベルの保護を実現し、大量配布技法を用いて
容易に配布でき、かつシステムの性能、ユーザが正当に
バックアップ複写用コピーをとる可能性、その他の必要
な機能を不当に妨げない方法が求められている。同時
に、段階的価格設定、及び異なるソフトウェアの異なる
バージョンごとに別々のライセンス料をサポートする方
法も求められている。
【0011】
【発明が解決しようとする課題】本発明の目的は、コン
ピュータ・システムにおけるソフトウェアの使用を管理
する改善された方法及び装置を提供することにある。
ピュータ・システムにおけるソフトウェアの使用を管理
する改善された方法及び装置を提供することにある。
【0012】本発明の他の目的は、コンピュータ・シス
テムにおける無許可のソフトウェア使用に対するより高
レベルの保護を提供することにある。
テムにおける無許可のソフトウェア使用に対するより高
レベルの保護を提供することにある。
【0013】本発明の他の目的は、ソフトウェアを無許
可使用に対して保護する費用を削減することにある。
可使用に対して保護する費用を削減することにある。
【0014】本発明の他の目的は、無許可使用に対して
保護されたソフトウェアを実行するコンピュータ・シス
テムの性能を増強することにある。
保護されたソフトウェアを実行するコンピュータ・シス
テムの性能を増強することにある。
【0015】本発明の他の目的は、無許可使用に対して
保護されたソフトウェアの配布者の配布システムを簡単
にすることにある。
保護されたソフトウェアの配布者の配布システムを簡単
にすることにある。
【0016】本発明の他の目的は、このような保護がソ
フトウェアの正当な使用に及ぼす影響を削減する、ソフ
トウェアを無許可使用から保護する方法及び装置を提供
することにある。
フトウェアの正当な使用に及ぼす影響を削減する、ソフ
トウェアを無許可使用から保護する方法及び装置を提供
することにある。
【0017】本発明の他の目的は、ユーザがソフトウェ
アの正当なバックアップ用コピーをとるのを許しなが
ら、ソフトウェアを無許可使用から保護する改善された
方法及び装置を提供することにある。
アの正当なバックアップ用コピーをとるのを許しなが
ら、ソフトウェアを無許可使用から保護する改善された
方法及び装置を提供することにある。
【0018】本発明の他の目的は、ソフトウェアを無許
可の使用が可能となるように改変するのを難しくするこ
とにある。
可の使用が可能となるように改変するのを難しくするこ
とにある。
【0019】本発明の他の目的は、段階的に価格設定し
たソフトウェアを配布する、改善された方法及び装置を
提供することにある。
たソフトウェアを配布する、改善された方法及び装置を
提供することにある。
【0020】
【課題を解決するための手段】本発明によれば、ソフト
ウェアは、実行するための資格付与なしに配布される。
別々に配布される暗号化された資格付与キーにより、ソ
フトウェアの実行が可能となる。この資格付与キーは、
それに対してソフトウェアのライセンスが与えられてい
る機械の通し番号と、どのソフトウェア・モジュールが
その機械で走行する資格をもつかを指示する複数の資格
付与ビットを含んでいる。安全解読機構が機械に内蔵さ
れている。安全解読機構が機械の通し番号を取り出し、
これを資格付与キーを解読するためのキーとして使用す
る。次いで、資格付与情報が、メモリ内の製品ロック・
テーブルに記憶される。
ウェアは、実行するための資格付与なしに配布される。
別々に配布される暗号化された資格付与キーにより、ソ
フトウェアの実行が可能となる。この資格付与キーは、
それに対してソフトウェアのライセンスが与えられてい
る機械の通し番号と、どのソフトウェア・モジュールが
その機械で走行する資格をもつかを指示する複数の資格
付与ビットを含んでいる。安全解読機構が機械に内蔵さ
れている。安全解読機構が機械の通し番号を取り出し、
これを資格付与キーを解読するためのキーとして使用す
る。次いで、資格付与情報が、メモリ内の製品ロック・
テーブルに記憶される。
【0021】配布されたソフトウェアは、複数の資格検
証トリガを含んでいる。好ましい実施例では、各トリガ
は、ソフトウェア・モジュールの製品番号を識別する、
目的コード中の単一機械語命令である。ソフトウェア・
モジュールの実行中にこのような資格検証トリガに出会
うと、機械は、ソフトウェア・モジュールの製品番号に
対応する製品ロック・テーブルのエントリを検査する。
製品が走行する資格をもつ場合、正常に実行が継続さ
れ、そうでない場合は、実行が打ち切られる。この検証
はただ1個の機械語命令しか要しないので、システム全
体の性能にほとんど影響を与えずに実行できる。その結
果、かなりの数のこのような資格検証トリガを目的コー
ド中に配置し、誰かがこのトリガを「パッチング」する
ことによってコードを改変することを事実上不可能にす
ることができる。別の実施例では、資格検証トリガが、
ソフトウェア・モジュールの適正な実行に必要な何らか
の有用な仕事をも行う。これによって、ソフトウェアを
「パッチング」するのが一層難しくなり、このような検
証トリガの性能に対する影響がさらに軽減される。
証トリガを含んでいる。好ましい実施例では、各トリガ
は、ソフトウェア・モジュールの製品番号を識別する、
目的コード中の単一機械語命令である。ソフトウェア・
モジュールの実行中にこのような資格検証トリガに出会
うと、機械は、ソフトウェア・モジュールの製品番号に
対応する製品ロック・テーブルのエントリを検査する。
製品が走行する資格をもつ場合、正常に実行が継続さ
れ、そうでない場合は、実行が打ち切られる。この検証
はただ1個の機械語命令しか要しないので、システム全
体の性能にほとんど影響を与えずに実行できる。その結
果、かなりの数のこのような資格検証トリガを目的コー
ド中に配置し、誰かがこのトリガを「パッチング」する
ことによってコードを改変することを事実上不可能にす
ることができる。別の実施例では、資格検証トリガが、
ソフトウェア・モジュールの適正な実行に必要な何らか
の有用な仕事をも行う。これによって、ソフトウェアを
「パッチング」するのが一層難しくなり、このような検
証トリガの性能に対する影響がさらに軽減される。
【0022】ソフトウェア自身はどのような資格付与も
含んでいないので、配布の制限は必要でない。好ましい
実施例では、ソフトウェアの配布者は、複数のソフトウ
ェア・モジュールを単一の総称媒体に記録し、記録され
た同じ1組のモジュールをその全ての顧客に配布するこ
とができる。各顧客は、自分がライセンスを与えられて
いるソフトウェア・モジュールだけを実行できる、独自
の資格付与キーを受け取る。顧客に、ライセンスが与え
られていない何らかのモジュールが与えられても、適切
なキーなしにはそれが実行できないので、大きな問題に
はならない。顧客は、自由にソフトウェアを自分のシス
テムのその他の記憶装置にロードし、あるいはソフトウ
ェアのバックアップ用コピーをいくらでも作成すること
ができる。
含んでいないので、配布の制限は必要でない。好ましい
実施例では、ソフトウェアの配布者は、複数のソフトウ
ェア・モジュールを単一の総称媒体に記録し、記録され
た同じ1組のモジュールをその全ての顧客に配布するこ
とができる。各顧客は、自分がライセンスを与えられて
いるソフトウェア・モジュールだけを実行できる、独自
の資格付与キーを受け取る。顧客に、ライセンスが与え
られていない何らかのモジュールが与えられても、適切
なキーなしにはそれが実行できないので、大きな問題に
はならない。顧客は、自由にソフトウェアを自分のシス
テムのその他の記憶装置にロードし、あるいはソフトウ
ェアのバックアップ用コピーをいくらでも作成すること
ができる。
【0023】
【実施例】本発明の好ましい実施例にもとづくソフトウ
ェア保護機構の主要要素の説明図を図1に示す。顧客の
コンピュータ・システム101は、制御記憶機構103
に緊密に結合された中央演算処理装置(CPU)10
2、ランダム・アクセス・システム・メモリ104、消
去不能で電子的に読取り可能な独自の識別子105、複
数の記憶装置106、107、108を含んでいる。好
ましい実施例では、独自の識別子105は機械の通し番
号である。好ましい実施例では、記憶装置106〜10
8は、回転式磁気ディスク記憶装置であるが、他の記憶
技術を使用することも可能である。コンピュータ・シス
テム101はまた、オペレータからの入力を受け取る操
作卓109及びソフトウェア媒体読取装置110をも含
んでいる。図1には1台の操作卓、1個のソフトウェア
媒体読取装置、3個の記憶装置が示されているが、シス
テム101に取り付けられるこのような装置の実際の数
は可変であることを理解されたい。また、追加の装置を
システム101に取り付けられることを理解されたい。
好ましい実施例では、コンピュータ・システム101
は、IBM社のAS/400コンピュータ・システムで
あるが、他のコンピュータ・システムも使用できる。
ェア保護機構の主要要素の説明図を図1に示す。顧客の
コンピュータ・システム101は、制御記憶機構103
に緊密に結合された中央演算処理装置(CPU)10
2、ランダム・アクセス・システム・メモリ104、消
去不能で電子的に読取り可能な独自の識別子105、複
数の記憶装置106、107、108を含んでいる。好
ましい実施例では、独自の識別子105は機械の通し番
号である。好ましい実施例では、記憶装置106〜10
8は、回転式磁気ディスク記憶装置であるが、他の記憶
技術を使用することも可能である。コンピュータ・シス
テム101はまた、オペレータからの入力を受け取る操
作卓109及びソフトウェア媒体読取装置110をも含
んでいる。図1には1台の操作卓、1個のソフトウェア
媒体読取装置、3個の記憶装置が示されているが、シス
テム101に取り付けられるこのような装置の実際の数
は可変であることを理解されたい。また、追加の装置を
システム101に取り付けられることを理解されたい。
好ましい実施例では、コンピュータ・システム101
は、IBM社のAS/400コンピュータ・システムで
あるが、他のコンピュータ・システムも使用できる。
【0024】ソフトウェア・モジュールは、それを動作
させるのに必要な資格付与キー(entitlemen
t key)とは別に配布される。本来、ソフトウェア
・モジュールは、開発用コンピュータ・システム125
上で作成される。開発用コンピュータ・システム125
は、コンパイラ126及びトランスレータ127を含ん
でいる。ソフトウェア・モジュールはソフトウェア記録
媒体112上に記録され、倉庫120に格納され、そこ
から顧客に配布される。配布者の販売事務所121か
ら、暗号化された資格付与キー111が配布される。販
売事務所121は、マーケッティング用コンピュータ・
システム124にアクセスすることができる。マーケテ
ィング用コンピュータ・システム124は、資格付与キ
ーの生成/暗号化プログラム122と、顧客情報を含む
データ・ベース123とを含んでいる。具体的には、デ
ータ・ベース123は、暗号化された資格付与キーの生
成に必要な機械の通し番号とプロセッサの種類の情報を
含んでいる。好ましい実施例では、マーケッティング用
コンピュータ・システム124は、中央に位置して複数
の販売事務所と通信するコンピュータである。ただし、
マーケッティング用コンピュータ・システム124は、
販売事務所自体に位置し、局所または中央のデータ・ベ
ースにアクセスすることもできる。図1には、配布者の
制御下にある別々の2つのコンピュータ・システム12
4、125が示されているが、両方の機能を実行する物
理的に単一のコンピュータ・システムでもよいことを理
解されたい。
させるのに必要な資格付与キー(entitlemen
t key)とは別に配布される。本来、ソフトウェア
・モジュールは、開発用コンピュータ・システム125
上で作成される。開発用コンピュータ・システム125
は、コンパイラ126及びトランスレータ127を含ん
でいる。ソフトウェア・モジュールはソフトウェア記録
媒体112上に記録され、倉庫120に格納され、そこ
から顧客に配布される。配布者の販売事務所121か
ら、暗号化された資格付与キー111が配布される。販
売事務所121は、マーケッティング用コンピュータ・
システム124にアクセスすることができる。マーケテ
ィング用コンピュータ・システム124は、資格付与キ
ーの生成/暗号化プログラム122と、顧客情報を含む
データ・ベース123とを含んでいる。具体的には、デ
ータ・ベース123は、暗号化された資格付与キーの生
成に必要な機械の通し番号とプロセッサの種類の情報を
含んでいる。好ましい実施例では、マーケッティング用
コンピュータ・システム124は、中央に位置して複数
の販売事務所と通信するコンピュータである。ただし、
マーケッティング用コンピュータ・システム124は、
販売事務所自体に位置し、局所または中央のデータ・ベ
ースにアクセスすることもできる。図1には、配布者の
制御下にある別々の2つのコンピュータ・システム12
4、125が示されているが、両方の機能を実行する物
理的に単一のコンピュータ・システムでもよいことを理
解されたい。
【0025】ソフトウェアの配布者から顧客に、暗号化
された資格付与キー111が郵送、電話またはその他の
適当な手段で送られる。資格付与キーを電子的にまたは
フロッピー・ディスクなどの磁気媒体上で伝送すること
が可能であるが、キーは、オペレータが操作卓109上
でタイプして、これをシステム101中に入力できるほ
ど十分簡潔なものである。
された資格付与キー111が郵送、電話またはその他の
適当な手段で送られる。資格付与キーを電子的にまたは
フロッピー・ディスクなどの磁気媒体上で伝送すること
が可能であるが、キーは、オペレータが操作卓109上
でタイプして、これをシステム101中に入力できるほ
ど十分簡潔なものである。
【0026】好ましい実施例では、多数のソフトウェア
・モジュールが同一媒体112上で配布される。配布者
は、資格付与キーを介して各モジュールを使用する資格
を独立に与えることができる。倉庫120は、媒体11
2上に、総称的に1組のソフトウェア・モジュールを格
納する。各顧客に、どのモジュールを使用するライセン
スが与えられているかにかかわらず、同じ総称的な1組
のソフトウェア・モジュールが発送される。別途に配布
される資格付与キーは、どのソフトウェア・モジュール
をその上で実行する資格があるかをシステム101が決
定するための情報を含んでいる。
・モジュールが同一媒体112上で配布される。配布者
は、資格付与キーを介して各モジュールを使用する資格
を独立に与えることができる。倉庫120は、媒体11
2上に、総称的に1組のソフトウェア・モジュールを格
納する。各顧客に、どのモジュールを使用するライセン
スが与えられているかにかかわらず、同じ総称的な1組
のソフトウェア・モジュールが発送される。別途に配布
される資格付与キーは、どのソフトウェア・モジュール
をその上で実行する資格があるかをシステム101が決
定するための情報を含んでいる。
【0027】好ましい実施例では、ソフトウェア媒体1
12は、一枚または複数の読取り専用光ディスクから構
成され、媒体読取装置110は光ディスク読取装置であ
る。ただし、電子式配布媒体やその他の配布媒体も使用
できることを理解されたい。ソフトウェア媒体112を
受け取ると、通常、顧客は、所望のソフトウェア・モジ
ュールを媒体読取装置110からシステム101にロー
ドし、そのソフトウェア・モジュールを記憶装置106
〜108に記憶する。顧客は、ソフトウェア・モジュー
ルの一つまたは複数のバックアップ用コピーを任意の適
当な媒体上に生成し、これらをアーカイブに記憶するこ
とができる。ソフトウェア媒体112は、システムへの
複写やロードに対する制限を含んでおらず、自由に複写
可能かつロード可能である。
12は、一枚または複数の読取り専用光ディスクから構
成され、媒体読取装置110は光ディスク読取装置であ
る。ただし、電子式配布媒体やその他の配布媒体も使用
できることを理解されたい。ソフトウェア媒体112を
受け取ると、通常、顧客は、所望のソフトウェア・モジ
ュールを媒体読取装置110からシステム101にロー
ドし、そのソフトウェア・モジュールを記憶装置106
〜108に記憶する。顧客は、ソフトウェア・モジュー
ルの一つまたは複数のバックアップ用コピーを任意の適
当な媒体上に生成し、これらをアーカイブに記憶するこ
とができる。ソフトウェア媒体112は、システムへの
複写やロードに対する制限を含んでおらず、自由に複写
可能かつロード可能である。
【0028】好ましい実施例による暗号化前の資格付与
キー200の内容が図2に示されている。このキーは、
料金グループ・フィールド201、ソフトウェア・バー
ジョン・フィールド202、キー形式フィールド20
3、機械通し番号フィールド204及び製品資格付与フ
ラグ205を含んでいる。料金グループ・フィールド2
01は、16通りの機械段階値から、1つを指定し、ソ
フトウェアの段階的価格設定をサポートするのに使用さ
れる。ソフトウェア・バージョン・フィールド202
は、資格が与えられるソフトウェアのバージョン・レベ
ルを指定する。ソフトウェアのグレードアップを維持す
るための別途料金が課せられることが予想されている。
資格付与キー200中で指定されるバージョンは、その
バージョン・レベルより以前(下位)の全レベルのソフ
トウェアに資格を与える。キー形式フィールド203は
キー・フォーマット、キーの関連性の将来変更のため、
あるいはサポートされる異なる製品の番号拡張のために
保留された領域である。機械通し番号フィールド204
は、資格付与キーが対象としている機械の通し番号を含
んでいる。製品資格付与フラグ205は、それぞれが製
品番号に対応する80本の別々の製品フラグを含む、8
0ビットのフィールドである。対応する製品番号に資格
が与えられている場合、このビットは“1”にセットさ
れ、そうでない場合は、“0”にセットされる。
キー200の内容が図2に示されている。このキーは、
料金グループ・フィールド201、ソフトウェア・バー
ジョン・フィールド202、キー形式フィールド20
3、機械通し番号フィールド204及び製品資格付与フ
ラグ205を含んでいる。料金グループ・フィールド2
01は、16通りの機械段階値から、1つを指定し、ソ
フトウェアの段階的価格設定をサポートするのに使用さ
れる。ソフトウェア・バージョン・フィールド202
は、資格が与えられるソフトウェアのバージョン・レベ
ルを指定する。ソフトウェアのグレードアップを維持す
るための別途料金が課せられることが予想されている。
資格付与キー200中で指定されるバージョンは、その
バージョン・レベルより以前(下位)の全レベルのソフ
トウェアに資格を与える。キー形式フィールド203は
キー・フォーマット、キーの関連性の将来変更のため、
あるいはサポートされる異なる製品の番号拡張のために
保留された領域である。機械通し番号フィールド204
は、資格付与キーが対象としている機械の通し番号を含
んでいる。製品資格付与フラグ205は、それぞれが製
品番号に対応する80本の別々の製品フラグを含む、8
0ビットのフィールドである。対応する製品番号に資格
が与えられている場合、このビットは“1”にセットさ
れ、そうでない場合は、“0”にセットされる。
【0029】好ましい実施例では、ソフトウェア・モジ
ュールは、コンパイルされた目的コードとして配布され
る。典型的なソフトウェア・モジュール300を図3に
示す。このソフトウェア・モジュールは、コンピュータ
・システム101上で実行できる複数の目的コード命令
を含んでいる。本発明によれば、いくつかの資格検証ト
リガ命令(以下、「資格検証トリガ」と表記)301が
目的コードに組み込まれている。ソフトウェア・モジュ
ール内に含まれる全ての資格検証トリガ301は、同一
である。資格検証トリガ301は、命令コード・フィー
ルド302、バージョン・フィールド303、製品番号
フィールド304を含んでいる。フィールド305は使
用されていない。命令コード・フィールド302は、実
行すべき操作を識別する、目的コード命令の動詞部分で
ある。バージョン・フィールド303は、ソフトウェア
・モジュールのバージョン・レベルを識別する。製品番
号フィールド304は、そのソフトウェア・モジュール
に関連する製品番号を識別する。バージョン及び製品番
号の情報はモジュールごとに変わるが、全ての資格検証
トリガには単一の命令コードが使用される。別の実施例
では、資格検証トリガは、他の何らかの有用な仕事を実
行する直接命令(とりわけ、その処理用のオペランドを
命令中で指定しておく必要のない命令)でもある。この
ような別の実施例では、トリガ命令が実行されると、シ
ステム101は資格検証と同時に他の何らかの操作を実
行する。
ュールは、コンパイルされた目的コードとして配布され
る。典型的なソフトウェア・モジュール300を図3に
示す。このソフトウェア・モジュールは、コンピュータ
・システム101上で実行できる複数の目的コード命令
を含んでいる。本発明によれば、いくつかの資格検証ト
リガ命令(以下、「資格検証トリガ」と表記)301が
目的コードに組み込まれている。ソフトウェア・モジュ
ール内に含まれる全ての資格検証トリガ301は、同一
である。資格検証トリガ301は、命令コード・フィー
ルド302、バージョン・フィールド303、製品番号
フィールド304を含んでいる。フィールド305は使
用されていない。命令コード・フィールド302は、実
行すべき操作を識別する、目的コード命令の動詞部分で
ある。バージョン・フィールド303は、ソフトウェア
・モジュールのバージョン・レベルを識別する。製品番
号フィールド304は、そのソフトウェア・モジュール
に関連する製品番号を識別する。バージョン及び製品番
号の情報はモジュールごとに変わるが、全ての資格検証
トリガには単一の命令コードが使用される。別の実施例
では、資格検証トリガは、他の何らかの有用な仕事を実
行する直接命令(とりわけ、その処理用のオペランドを
命令中で指定しておく必要のない命令)でもある。この
ような別の実施例では、トリガ命令が実行されると、シ
ステム101は資格検証と同時に他の何らかの操作を実
行する。
【0030】コンピュータ・システム101は、暗号化
された資格付与キー111を受け取ってデコードする手
段、ならびに資格検証トリガに応答してシステムがソフ
トウェア・モジュールを実行する資格をもつことを検証
する手段を含んでいる。好ましい実施例では、図4に示
されているように、これらの機能は、異なるレベルのシ
ステム・ハードウェア及びシステム・ソフトウェアの間
で分割されている。この実施例では、システム101
は、ハードウェア・レベル401、水平マイクロコード
・レベル402、実行可能コード・レベル403、仮想
計算機レベル404という、4レベルのハードウェア/
ソフトウェア機能を含んでいる。機械インターフェース
405が、仮想計算機レベルを下位の全てのレベルから
分離している。機械インターフェース405は、顧客に
対して定義されている最も下位レベルにあるインタフェ
ースである。すなわち、仮想計算機レベルの命令ビット
は顧客に対して定義されるが、それより下のレベルの操
作は定義されない。したがって、顧客は、機械インター
フェース・レベルより下のレベルの命令を直接改変する
能力がない。永久的な、改変不能な機械通し番号410
が、ハードウェア・レベル401に格納されている。
された資格付与キー111を受け取ってデコードする手
段、ならびに資格検証トリガに応答してシステムがソフ
トウェア・モジュールを実行する資格をもつことを検証
する手段を含んでいる。好ましい実施例では、図4に示
されているように、これらの機能は、異なるレベルのシ
ステム・ハードウェア及びシステム・ソフトウェアの間
で分割されている。この実施例では、システム101
は、ハードウェア・レベル401、水平マイクロコード
・レベル402、実行可能コード・レベル403、仮想
計算機レベル404という、4レベルのハードウェア/
ソフトウェア機能を含んでいる。機械インターフェース
405が、仮想計算機レベルを下位の全てのレベルから
分離している。機械インターフェース405は、顧客に
対して定義されている最も下位レベルにあるインタフェ
ースである。すなわち、仮想計算機レベルの命令ビット
は顧客に対して定義されるが、それより下のレベルの操
作は定義されない。したがって、顧客は、機械インター
フェース・レベルより下のレベルの命令を直接改変する
能力がない。永久的な、改変不能な機械通し番号410
が、ハードウェア・レベル401に格納されている。
【0031】水平マイクロコード402は、実行可能な
命令セットを解釈するマイクロコード・エントリを含ん
でいる。これは、制御記憶機構103、すなわち好まし
い実施例では、顧客による改変が不可能な読取り専用メ
モリ(ROM)に、物理的に記憶されている。水平マイ
クロコード中のエントリは、機械キー取得機能420、
ロック設定機能421、ロック検査機能422をサポー
トしている。機械キー取得機能420は、好ましい実施
例ではシステム通し番号に基づく、独自の識別子を、あ
る永久的なハードウェア位置から取り出す。ロック設定
機能421は、製品ロック・テーブル460にアクセス
し、テーブル中のエントリを変更する。ロック設定機能
は、製品ロック・テーブル460を変更できる唯一のマ
イクロコード機能である。ロック検査機能422は、製
品ロック・テーブル460にアクセスし、エントリの一
つを読み取って資格が付与されているかどうかを検証す
る。
命令セットを解釈するマイクロコード・エントリを含ん
でいる。これは、制御記憶機構103、すなわち好まし
い実施例では、顧客による改変が不可能な読取り専用メ
モリ(ROM)に、物理的に記憶されている。水平マイ
クロコード中のエントリは、機械キー取得機能420、
ロック設定機能421、ロック検査機能422をサポー
トしている。機械キー取得機能420は、好ましい実施
例ではシステム通し番号に基づく、独自の識別子を、あ
る永久的なハードウェア位置から取り出す。ロック設定
機能421は、製品ロック・テーブル460にアクセス
し、テーブル中のエントリを変更する。ロック設定機能
は、製品ロック・テーブル460を変更できる唯一のマ
イクロコード機能である。ロック検査機能422は、製
品ロック・テーブル460にアクセスし、エントリの一
つを読み取って資格が付与されているかどうかを検証す
る。
【0032】実行可能コード・レベル403は、下位レ
ベルの監視サポート、及び機械インターフェースで定義
された命令を実施するサポートを含んでいる。これはメ
モリに物理的に記憶されるが、その内部仕様が顧客に対
して定義されていないので、実際上は顧客によって改変
できない。下位レベルのサポートには、ロック解除ルー
チン430、初期プログラムロード(IPL)ロック再
検証ルーチン431、例外処理ルーチン432が含まれ
る。アンロック・ルーチン430は、固有の機械キーを
用いて資格付与キー111をデコードし、暗号化された
資格付与キー111を製品キー・テーブル450に記憶
する。初期プログラムロードロック再検証ルーチン43
1は、システムが再び初期設定されると、コード化され
た製品キー・テーブル450の内容を取り出して、製品
ロック・テーブル460を再構築する。例外処理ルーチ
ン432は、水平マイクロコード・レベル402の機能
によって生成される例外条件に応答する。実行可能コー
ド・レベル403は、目的コード形式のソフトウェア・
モジュール300を含んでいる。
ベルの監視サポート、及び機械インターフェースで定義
された命令を実施するサポートを含んでいる。これはメ
モリに物理的に記憶されるが、その内部仕様が顧客に対
して定義されていないので、実際上は顧客によって改変
できない。下位レベルのサポートには、ロック解除ルー
チン430、初期プログラムロード(IPL)ロック再
検証ルーチン431、例外処理ルーチン432が含まれ
る。アンロック・ルーチン430は、固有の機械キーを
用いて資格付与キー111をデコードし、暗号化された
資格付与キー111を製品キー・テーブル450に記憶
する。初期プログラムロードロック再検証ルーチン43
1は、システムが再び初期設定されると、コード化され
た製品キー・テーブル450の内容を取り出して、製品
ロック・テーブル460を再構築する。例外処理ルーチ
ン432は、水平マイクロコード・レベル402の機能
によって生成される例外条件に応答する。実行可能コー
ド・レベル403は、目的コード形式のソフトウェア・
モジュール300を含んでいる。
【0033】仮想計算機レベル404は、機械語命令に
よって表されているものとしてソフトウェアを参照す
る。このレベルの計算機は、機械語命令が直接実行可能
ではないという意味で、仮想計算機として動作する。仮
想計算機レベル404は顧客に利用できる最も下位レベ
ルのインターフェースなので、システム上で実行可能な
目的コード形式のモジュールを作成するのに、非従来型
のコンパイル経路が必要である。このコンパイル処理に
ついては、後に説明する。厳密には、この非従来型のコ
ンパイル経路を介して作成されるソフトウェアは、実行
しようとする実行可能な目的コードの形式をとらなけれ
ばならないが、機械語命令が直接実行可能であるかのよ
うに、仮想計算機レベルの機械語命令で表して議論する
のが普通であり、よりわかりやすい。これが確立される
と、仮想計算機レベル404がコンパイルしたユーザの
ソフトウェアを含んでいると言うことができる。これは
また、システム101に対するより上位レベルのオペレ
ーティング・システムのサポートも含んでいる。仮想計
算機レベル404でこのオペレーション・システムのサ
ポートは、資格付与キーの入力をサポートするのに必要
な2個のユーザ・インターフェース・ルーチンを含んで
いる。一般入力ルーチン441は、通常の操作中に入力
を処理するのに使用する。さらに、オペレーティング・
システムの初期導入中に資格付与キーを入力するには特
別のインストール入力ルーチン440が必要である。こ
れが必要なのは、機械インターフェース・レベル405
より上位のオペレーティング・システムの部分が、本発
明では他のプログラム製品として扱われるためである。
すなわち、このような部分は製品番号をもち、その目的
コードは資格検証トリガの影響を受ける。インストール
入力ルーチン440は、オペレーティング・システム
の、資格検証トリガをもたない唯一の部分であり、従っ
て、システムを最初に導入する際に資格付与キーが入力
できるようになる。
よって表されているものとしてソフトウェアを参照す
る。このレベルの計算機は、機械語命令が直接実行可能
ではないという意味で、仮想計算機として動作する。仮
想計算機レベル404は顧客に利用できる最も下位レベ
ルのインターフェースなので、システム上で実行可能な
目的コード形式のモジュールを作成するのに、非従来型
のコンパイル経路が必要である。このコンパイル処理に
ついては、後に説明する。厳密には、この非従来型のコ
ンパイル経路を介して作成されるソフトウェアは、実行
しようとする実行可能な目的コードの形式をとらなけれ
ばならないが、機械語命令が直接実行可能であるかのよ
うに、仮想計算機レベルの機械語命令で表して議論する
のが普通であり、よりわかりやすい。これが確立される
と、仮想計算機レベル404がコンパイルしたユーザの
ソフトウェアを含んでいると言うことができる。これは
また、システム101に対するより上位レベルのオペレ
ーティング・システムのサポートも含んでいる。仮想計
算機レベル404でこのオペレーション・システムのサ
ポートは、資格付与キーの入力をサポートするのに必要
な2個のユーザ・インターフェース・ルーチンを含んで
いる。一般入力ルーチン441は、通常の操作中に入力
を処理するのに使用する。さらに、オペレーティング・
システムの初期導入中に資格付与キーを入力するには特
別のインストール入力ルーチン440が必要である。こ
れが必要なのは、機械インターフェース・レベル405
より上位のオペレーティング・システムの部分が、本発
明では他のプログラム製品として扱われるためである。
すなわち、このような部分は製品番号をもち、その目的
コードは資格検証トリガの影響を受ける。インストール
入力ルーチン440は、オペレーティング・システム
の、資格検証トリガをもたない唯一の部分であり、従っ
て、システムを最初に導入する際に資格付与キーが入力
できるようになる。
【0034】ソフトウェア・モジュール300は、シス
テム101上で実行されるコンパイルされた目的コード
形式のプログラム製品の一部である。これは、仮想計算
機レベルの他の対象にアクセス可能であるという意味
で、仮想計算機レベル404のエンティティとして存在
する。ただし、実際に実行可能なコードは、破線の枠で
示されているように、実行可能コード・レベル403で
動作する。実行可能コードは、水平マイクロコードのロ
ック検査機能422によって実行される、資格検証トリ
ガ301(一つだけが図に示されている)を含んでい
る。
テム101上で実行されるコンパイルされた目的コード
形式のプログラム製品の一部である。これは、仮想計算
機レベルの他の対象にアクセス可能であるという意味
で、仮想計算機レベル404のエンティティとして存在
する。ただし、実際に実行可能なコードは、破線の枠で
示されているように、実行可能コード・レベル403で
動作する。実行可能コードは、水平マイクロコードのロ
ック検査機能422によって実行される、資格検証トリ
ガ301(一つだけが図に示されている)を含んでい
る。
【0035】コード化された製品キー・テーブル450
が図5に示されている。製品キー・テーブル450はラ
ンダム・アクセス・メモリ104に入っており、不揮発
性記憶装置に複製されているため、システムの電力を遮
断したり、その他の理由で再初期設定しなければならな
い場合に、回復することが可能である。テーブル450
は、それぞれが各製品番号に対応し得る80個のエント
リ501を含んでいる。各エントリ501は、そのエン
トリの製品番号に適用される暗号化された資格付与キー
502と、そのキーが最初にいつ使用されたかを示す日
時スタンプ503と、そのキーのバージョン番号504
と、そのキーの料金グループ505と、そのキーが製品
をアンロックするかどうかを示す資格付与ビット506
との完全なコピーを含んでいる。日時スタンプ503は
暗号化することができる。バージョン番号504、料金
グループ505及び資格付与ビット506は、暗号化さ
れた資格付与キー502に含まれる情報を繰り返す。そ
れらは、照合をサポートするためにこのテーブルに含ま
れている。ただし、最初に暗号化された資格付与キー5
02中の情報を検証してからでないと、製品ロック・テ
ーブル460のエントリを改変して、プログラム実行の
資格を与えることはできない。製品キー・テーブル45
0中の各資格付与キー502は暗号化された形なので、
ユーザーのこのテーブルへのアクセスを防止するために
特別の措置は必要でない。
が図5に示されている。製品キー・テーブル450はラ
ンダム・アクセス・メモリ104に入っており、不揮発
性記憶装置に複製されているため、システムの電力を遮
断したり、その他の理由で再初期設定しなければならな
い場合に、回復することが可能である。テーブル450
は、それぞれが各製品番号に対応し得る80個のエント
リ501を含んでいる。各エントリ501は、そのエン
トリの製品番号に適用される暗号化された資格付与キー
502と、そのキーが最初にいつ使用されたかを示す日
時スタンプ503と、そのキーのバージョン番号504
と、そのキーの料金グループ505と、そのキーが製品
をアンロックするかどうかを示す資格付与ビット506
との完全なコピーを含んでいる。日時スタンプ503は
暗号化することができる。バージョン番号504、料金
グループ505及び資格付与ビット506は、暗号化さ
れた資格付与キー502に含まれる情報を繰り返す。そ
れらは、照合をサポートするためにこのテーブルに含ま
れている。ただし、最初に暗号化された資格付与キー5
02中の情報を検証してからでないと、製品ロック・テ
ーブル460のエントリを改変して、プログラム実行の
資格を与えることはできない。製品キー・テーブル45
0中の各資格付与キー502は暗号化された形なので、
ユーザーのこのテーブルへのアクセスを防止するために
特別の措置は必要でない。
【0036】図6に、製品ロック・テーブル460が示
されている。このテーブルは、水平マイクロコードの完
全な制御下にある、ランダム・アクセス・メモリ104
の特別な下位アドレス範囲に入っている。製品ロック・
テーブル460は、それぞれが各製品番号に対応し得る
80個のエントリ601を含んでいる。各エントリは、
資格付与の最大バージョンのレベルを示すバージョン番
号を含んでいる。0のバージョン番号は、製品のどのバ
ージョンにも資格付与がないことを示している。製品ロ
ック・テーブル460の改変に対する保護の度合をさら
に強化するために、バージョン番号をスクランブルする
ことができる。
されている。このテーブルは、水平マイクロコードの完
全な制御下にある、ランダム・アクセス・メモリ104
の特別な下位アドレス範囲に入っている。製品ロック・
テーブル460は、それぞれが各製品番号に対応し得る
80個のエントリ601を含んでいる。各エントリは、
資格付与の最大バージョンのレベルを示すバージョン番
号を含んでいる。0のバージョン番号は、製品のどのバ
ージョンにも資格付与がないことを示している。製品ロ
ック・テーブル460の改変に対する保護の度合をさら
に強化するために、バージョン番号をスクランブルする
ことができる。
【0037】次に、本発明の好ましい実施例によるコン
ピュータ・システム101上でのソフトウェア・モジュ
ールの動作について述べる。この動作には4つの部分が
ある。第1の動作は、複数の資格検証トリガを実行可能
な目的コード形式のソフトウェア・モジュール中に配置
する。第2の動作は、ソフトウェア・モジュールへのア
クセスを許可する暗号化された資格付与キー111を生
成する。第3の動作は、コンピュータ・システム101
が資格付与キー111を受け取り、デコードして、記憶
し、製品ロック・テーブル460を設定する。第4の動
作は、ソフトウェア・モジュールをシステム101上で
実行して、資格検証トリガに出会ったときには、システ
ム101に資格を検証させる。始めの2つの動作は、ソ
フトウェア配布者の管理下で実施される。後の2つの動
作は、顧客のシステム101上で実施される。
ピュータ・システム101上でのソフトウェア・モジュ
ールの動作について述べる。この動作には4つの部分が
ある。第1の動作は、複数の資格検証トリガを実行可能
な目的コード形式のソフトウェア・モジュール中に配置
する。第2の動作は、ソフトウェア・モジュールへのア
クセスを許可する暗号化された資格付与キー111を生
成する。第3の動作は、コンピュータ・システム101
が資格付与キー111を受け取り、デコードして、記憶
し、製品ロック・テーブル460を設定する。第4の動
作は、ソフトウェア・モジュールをシステム101上で
実行して、資格検証トリガに出会ったときには、システ
ム101に資格を検証させる。始めの2つの動作は、ソ
フトウェア配布者の管理下で実施される。後の2つの動
作は、顧客のシステム101上で実施される。
【0038】ソフトウェア配布者は、ソフトウェア・モ
ジュールをコンパイルするとき、資格検証トリガを目的
コード中に配置しなければならない。開発用コンピュー
タ・システム125で起こる典型的なこの過程を図7に
示す。原始コードは、資格検証トリガを含めずに、通常
通りプログラマによって生成される。ステップ701
で、原始コードがコンパイラ126に入力され、ステッ
プ702で、プログラム・テンプレートを作成する。プ
ログラム・テンプレートは、仮想計算機レベル404
(すなわち機械インターフェース405より上のレベ
ル)の機械語命令を含んでいる。ステップ704で、プ
ログラム・テンプレートは、その製品番号及びバージョ
ン番号を識別すると共に、トランスレータ127への入
力として働く。トランスレータ127は、自動的に、か
なりの数の資格検証トリガを生成し、これを目的コード
中のランダムな位置に挿入し、資格検証トリガの挿入後
に参照を解決する。ステップ705で出力された結果得
られる実行可能な目的コード形式のソフトウェア・モジ
ュールには、資格検証トリガが含まれている。この実行
可能な形式のソフトウェア・モジュールは、実行可能コ
ード・レベル403の目的コード命令を含んでいる。
ジュールをコンパイルするとき、資格検証トリガを目的
コード中に配置しなければならない。開発用コンピュー
タ・システム125で起こる典型的なこの過程を図7に
示す。原始コードは、資格検証トリガを含めずに、通常
通りプログラマによって生成される。ステップ701
で、原始コードがコンパイラ126に入力され、ステッ
プ702で、プログラム・テンプレートを作成する。プ
ログラム・テンプレートは、仮想計算機レベル404
(すなわち機械インターフェース405より上のレベ
ル)の機械語命令を含んでいる。ステップ704で、プ
ログラム・テンプレートは、その製品番号及びバージョ
ン番号を識別すると共に、トランスレータ127への入
力として働く。トランスレータ127は、自動的に、か
なりの数の資格検証トリガを生成し、これを目的コード
中のランダムな位置に挿入し、資格検証トリガの挿入後
に参照を解決する。ステップ705で出力された結果得
られる実行可能な目的コード形式のソフトウェア・モジ
ュールには、資格検証トリガが含まれている。この実行
可能な形式のソフトウェア・モジュールは、実行可能コ
ード・レベル403の目的コード命令を含んでいる。
【0039】暗号化された資格付与キーを生成する過程
を図8に示す。ステップ801で、販売担当員によって
生成されたあるバージョン・レベルの1個または複数の
プログラム製品に対するライセンスの注文が、マーケテ
ィング用コンピュータ・システム124に入力される。
理論上、顧客が多数のバージョン・レベルの製品を注文
することは可能であるが、一般的にはそうする理由はほ
とんどない。ただし、各資格付与キーは指定されたバー
ジョン・レベルでしか動作しないので、顧客が異なるバ
ージョン・レベルを注文すると、別々の資格付与キーを
生成しなければならない。顧客の注文を受け取ると、ス
テップ802で、システム124で実行中のキー生成/
暗号化プログラム122が、顧客に関する情報、具体的
には機械の通し番号及びプロセッサ形式の情報を含むデ
ータベース123にアクセスする。この情報を使って、
暗号化されていない資格付与キー200の料金グループ
・フィールド201及び機械通し番号フィールド204
が生成される。ステップ803で、顧客の注文及び可能
な製品番号提供のデータベースへの参照によって残りの
フィールドが生成されて、完全な非暗号形式の資格付与
キーが構築される。次いで、ステップ804で、キー生
成/暗号化プログラム122が、当技術分野で既知のい
くつかの暗号化技法のうちのどれかを使って、資格付与
キーを暗号化する。次いで、ステップ805で、その結
果得られた暗号化された資格付与キー111が、顧客に
伝送される。図1ではキー111は複数の2進ビットと
して示されているが、資格付与キーを鍵盤から入力する
仕事を簡単にするため、16進数字や英数字による等価
物など2進ビットをグループ化した何らかの形式で顧客
に提示してもよい。
を図8に示す。ステップ801で、販売担当員によって
生成されたあるバージョン・レベルの1個または複数の
プログラム製品に対するライセンスの注文が、マーケテ
ィング用コンピュータ・システム124に入力される。
理論上、顧客が多数のバージョン・レベルの製品を注文
することは可能であるが、一般的にはそうする理由はほ
とんどない。ただし、各資格付与キーは指定されたバー
ジョン・レベルでしか動作しないので、顧客が異なるバ
ージョン・レベルを注文すると、別々の資格付与キーを
生成しなければならない。顧客の注文を受け取ると、ス
テップ802で、システム124で実行中のキー生成/
暗号化プログラム122が、顧客に関する情報、具体的
には機械の通し番号及びプロセッサ形式の情報を含むデ
ータベース123にアクセスする。この情報を使って、
暗号化されていない資格付与キー200の料金グループ
・フィールド201及び機械通し番号フィールド204
が生成される。ステップ803で、顧客の注文及び可能
な製品番号提供のデータベースへの参照によって残りの
フィールドが生成されて、完全な非暗号形式の資格付与
キーが構築される。次いで、ステップ804で、キー生
成/暗号化プログラム122が、当技術分野で既知のい
くつかの暗号化技法のうちのどれかを使って、資格付与
キーを暗号化する。次いで、ステップ805で、その結
果得られた暗号化された資格付与キー111が、顧客に
伝送される。図1ではキー111は複数の2進ビットと
して示されているが、資格付与キーを鍵盤から入力する
仕事を簡単にするため、16進数字や英数字による等価
物など2進ビットをグループ化した何らかの形式で顧客
に提示してもよい。
【0040】コンピュータ・システム101上で資格付
与キー111を受け取り、製品ロック・テーブル460
を維持する過程を図9a及び図9bに示す。ステップ9
01で、顧客は、操作卓109を介して、資格付与キー
111をコンピュータ・システム101に入力する。こ
れが初期導入である場合には、インストール入力ルーチ
ン440がオペレータと対話して入力を受け取る。そう
でない場合は、一般入力ルーチン441が入力を受け取
る。資格付与キーは、デコード過程を処理するロック解
除ルーチン430に渡される。ステップ902で、ロッ
ク解除ルーチン430が、機械キー取得機能420に、
機械通し番号を検索させ、機械キーを生成させる。次い
で、ステップ903で、ロック解除ルーチン430が、
機械キーを用いて資格付与キー111をデコードする。
次いで、ステップ904で、以下に述べるように、ロッ
ク解除ルーチン430がコード化された製品キー・テー
ブル450を再構築する。デコードされた資格付与キー
は、図2に示した形をとる。これは、各製品番号ごと
に、その製品が新しい資格付与キーの下でロックを解除
されているかどうかを示す、80ビットの製品資格付与
フラグ・アレイ205を含んでいる。新しい資格付与キ
ーは、それがロックを解除する全ての製品に対する置換
されたキーと見なされる。ロック解除ルーチン430
は、デコードされた資格付与キー中の各製品資格付与フ
ラグ205を走査する(ステップ904)。ステップ9
05で、製品資格付与フラグが“1”(資格付与ありを
指す)にセットされている場合、ステップ908で、製
品キー・テーブル450中の対応するエントリが、新し
い資格付与キー、バージョン番号及び料金グループ値で
置換される。資格付与ビット・フィールド506が
“1”にセットされ、日/時スタンプ・ビット・フィー
ルド503が、資格付与キーがまだ使用されていないこ
とを示すゼロの値にセットされる。新しいキーの製品資
格付与フラグが“0”の場合には、バージョン番号と料
金グループ番号が製品キー・テーブル450に記憶され
ているものと同じでない限り、新しい資格付与キーは効
果がない。バージョン番号及び料金グループ番号が同じ
場合(ステップ906)、資格付与キーは製品をロック
する効果がある。したがって、ロック解除ルーチン43
0は、ステップ907で、製品ロック・テーブル460
中のバージョン番号を“0”にセットするために、ロッ
ク設定機能421を呼び出し、ステップ908で、製品
キー・テーブル450中の対応するエントリを新しい資
格付与キーの値で置換する。製品キー・テーブル450
が再構築されると、ステップ909で、その内容が記憶
装置にセーブされる。
与キー111を受け取り、製品ロック・テーブル460
を維持する過程を図9a及び図9bに示す。ステップ9
01で、顧客は、操作卓109を介して、資格付与キー
111をコンピュータ・システム101に入力する。こ
れが初期導入である場合には、インストール入力ルーチ
ン440がオペレータと対話して入力を受け取る。そう
でない場合は、一般入力ルーチン441が入力を受け取
る。資格付与キーは、デコード過程を処理するロック解
除ルーチン430に渡される。ステップ902で、ロッ
ク解除ルーチン430が、機械キー取得機能420に、
機械通し番号を検索させ、機械キーを生成させる。次い
で、ステップ903で、ロック解除ルーチン430が、
機械キーを用いて資格付与キー111をデコードする。
次いで、ステップ904で、以下に述べるように、ロッ
ク解除ルーチン430がコード化された製品キー・テー
ブル450を再構築する。デコードされた資格付与キー
は、図2に示した形をとる。これは、各製品番号ごと
に、その製品が新しい資格付与キーの下でロックを解除
されているかどうかを示す、80ビットの製品資格付与
フラグ・アレイ205を含んでいる。新しい資格付与キ
ーは、それがロックを解除する全ての製品に対する置換
されたキーと見なされる。ロック解除ルーチン430
は、デコードされた資格付与キー中の各製品資格付与フ
ラグ205を走査する(ステップ904)。ステップ9
05で、製品資格付与フラグが“1”(資格付与ありを
指す)にセットされている場合、ステップ908で、製
品キー・テーブル450中の対応するエントリが、新し
い資格付与キー、バージョン番号及び料金グループ値で
置換される。資格付与ビット・フィールド506が
“1”にセットされ、日/時スタンプ・ビット・フィー
ルド503が、資格付与キーがまだ使用されていないこ
とを示すゼロの値にセットされる。新しいキーの製品資
格付与フラグが“0”の場合には、バージョン番号と料
金グループ番号が製品キー・テーブル450に記憶され
ているものと同じでない限り、新しい資格付与キーは効
果がない。バージョン番号及び料金グループ番号が同じ
場合(ステップ906)、資格付与キーは製品をロック
する効果がある。したがって、ロック解除ルーチン43
0は、ステップ907で、製品ロック・テーブル460
中のバージョン番号を“0”にセットするために、ロッ
ク設定機能421を呼び出し、ステップ908で、製品
キー・テーブル450中の対応するエントリを新しい資
格付与キーの値で置換する。製品キー・テーブル450
が再構築されると、ステップ909で、その内容が記憶
装置にセーブされる。
【0041】前に資格を付与された製品が資格を失わな
い限り、製品キー・テーブル450の再構築は製品ロッ
ク・テーブル460に直接影響を与えない。製品は、要
求に応じて、ロックを解除される。前に資格を付与され
ていないソフトウェア製品を最初に実行するとき、資格
検証トリガに出会うと、システムによって例外が生成さ
れる。次いで、ステップ920で、例外処理ルーチン4
32が、製品のロック解除を試みるため、ロック解除ル
ーチン430を呼び出す。次に、ステップ921で、ロ
ック解除ルーチン430が、コード化された製品キー・
テーブル450中の適当なエントリから暗号化された資
格付与キーを取り出し、ステップ922で機械キーを得
て、ステップ923で資格付与キーを解読する。資格が
付与されている(ステップ924)場合は、ステップ9
26で、ソフトウェア製品の製品番号に対応する、製品
ロック・テーブル460のエントリ601中でバージョ
ン番号を設定するために、ロック設定機能421が呼び
出される。同時に、ステップ927で、ロック解除ルー
チン430が、第1回使用の日時を日/時スタンプ・フ
ィールド503に記録する。次いで、ステップ928
で、資格検証トリガが再試行され、プログラムの実行が
続行される。ステップ924で資格付与が示されない場
合は、ステップ925で、プログラムの実行が打ち切ら
れる。
い限り、製品キー・テーブル450の再構築は製品ロッ
ク・テーブル460に直接影響を与えない。製品は、要
求に応じて、ロックを解除される。前に資格を付与され
ていないソフトウェア製品を最初に実行するとき、資格
検証トリガに出会うと、システムによって例外が生成さ
れる。次いで、ステップ920で、例外処理ルーチン4
32が、製品のロック解除を試みるため、ロック解除ル
ーチン430を呼び出す。次に、ステップ921で、ロ
ック解除ルーチン430が、コード化された製品キー・
テーブル450中の適当なエントリから暗号化された資
格付与キーを取り出し、ステップ922で機械キーを得
て、ステップ923で資格付与キーを解読する。資格が
付与されている(ステップ924)場合は、ステップ9
26で、ソフトウェア製品の製品番号に対応する、製品
ロック・テーブル460のエントリ601中でバージョ
ン番号を設定するために、ロック設定機能421が呼び
出される。同時に、ステップ927で、ロック解除ルー
チン430が、第1回使用の日時を日/時スタンプ・フ
ィールド503に記録する。次いで、ステップ928
で、資格検証トリガが再試行され、プログラムの実行が
続行される。ステップ924で資格付与が示されない場
合は、ステップ925で、プログラムの実行が打ち切ら
れる。
【0042】製品ロック・テーブル460は、RAMに
記憶されており、システムの再初期設定後は残らない。
再初期設定(「IPL」)中に、製品ロック・テーブル
430を再構築するため、IPLロック再検証ルーチン
431が呼び出される。このルーチンは、上記のよう
に、資格を検証し、製品ロック・テーブル460中の対
応するエントリを再構築するために機械キーを得て、コ
ード化された製品キー・テーブル450中の各資格付与
キー・エントリを系統的にデコードする。
記憶されており、システムの再初期設定後は残らない。
再初期設定(「IPL」)中に、製品ロック・テーブル
430を再構築するため、IPLロック再検証ルーチン
431が呼び出される。このルーチンは、上記のよう
に、資格を検証し、製品ロック・テーブル460中の対
応するエントリを再構築するために機械キーを得て、コ
ード化された製品キー・テーブル450中の各資格付与
キー・エントリを系統的にデコードする。
【0043】好ましい実施例による、ソフトウェア・モ
ジュールを実行する過程を図10に示す。システム10
1によるソフトウェア・モジュールの実行は、モジュー
ルの目的コード命令が終了するまで(ステップ100
3)、これを取り出して(ステップ1001)実行する
(ステップ1002)ことによってなされる。命令が資
格検証トリガ301である(ステップ1004)場合
は、ロック検査機能422が呼び出される。ステップ1
005で、ロック検査機能422が、資格検証トリガに
含まれる製品番号に対応する、製品ロック・テーブル・
エントリ601にアクセスする。製品ロック・テーブル
460中のバージョン番号が資格検証トリガ301に含
まれるバージョン番号303に等しいかまたはそれより
大きい場合には、ソフトウェアは実行する資格を付与さ
れる(ステップ1006)。この場合、ロック検査機能
422はそれ以上の処置を行わず、システムはソフトウ
ェア・モジュール内の次の目的コード命令の実行に進
む。ソフトウェアが資格を付与されていない場合は、ロ
ック検査機能が例外条件を生成して、制御を例外処理ル
ーチン432に渡し、例外処理ルーチン432がプログ
ラムの実行を終了させる(ステップ1007)。システ
ムは、ソフトウェアが資格を付与されていることを示す
資格検査の結果をセーブしない。したがって、ソフトウ
ェア・モジュール中で資格検証トリガに再び出会うと、
上記のように、システムは再度資格を検証する。
ジュールを実行する過程を図10に示す。システム10
1によるソフトウェア・モジュールの実行は、モジュー
ルの目的コード命令が終了するまで(ステップ100
3)、これを取り出して(ステップ1001)実行する
(ステップ1002)ことによってなされる。命令が資
格検証トリガ301である(ステップ1004)場合
は、ロック検査機能422が呼び出される。ステップ1
005で、ロック検査機能422が、資格検証トリガに
含まれる製品番号に対応する、製品ロック・テーブル・
エントリ601にアクセスする。製品ロック・テーブル
460中のバージョン番号が資格検証トリガ301に含
まれるバージョン番号303に等しいかまたはそれより
大きい場合には、ソフトウェアは実行する資格を付与さ
れる(ステップ1006)。この場合、ロック検査機能
422はそれ以上の処置を行わず、システムはソフトウ
ェア・モジュール内の次の目的コード命令の実行に進
む。ソフトウェアが資格を付与されていない場合は、ロ
ック検査機能が例外条件を生成して、制御を例外処理ル
ーチン432に渡し、例外処理ルーチン432がプログ
ラムの実行を終了させる(ステップ1007)。システ
ムは、ソフトウェアが資格を付与されていることを示す
資格検査の結果をセーブしない。したがって、ソフトウ
ェア・モジュール中で資格検証トリガに再び出会うと、
上記のように、システムは再度資格を検証する。
【0044】別の実施例では、資格検証トリガを、従来
型のコンパイル経路を介して目的コード中に注入できる
ように、追加の定義をすることが可能である。これは、
顧客及びコンパイラ作成者が利用できる機械インターフ
ェースが、目的コード形式のモジュールがシステムによ
って実行されるのと同じ実行可能な命令のビットとなっ
ているものとなるはずである。目的コードのフォーマッ
トが顧客に知られている従来型のコンパイル経路をサポ
ートするため、資格検証トリガを無効にするかまたは変
更するような目的コードの「パッチング」に対する障壁
を追加することが適切になる場合がある。このような追
加の障壁の一つは、同時に他の何らかの機能を果たすよ
うに、資格検証トリガを定義することである。この場
合、資格検証トリガによって実施される代替機能が、他
の単純命令で実施できないことが肝要である。この代替
機能は、コンパイルされたどんなソフトウェア・モジュ
ールもかなり確実にその機能を果たすいくつかの命令を
含むように、選定しなければならない。これらの判定規
準に合致している場合、コンパイラは、自動的に、その
通常のコンパイル手順の一部として、その代替機能を
(それと同時に資格検証トリガも)果たす目的コードを
生成することができる。この定義は、資格検証トリガを
無効にするような目的コードの「パッチング」に対する
重要な障壁をもたらすはずである。他の実施例は、資格
検証トリガを、目的コード中で、それが識別する製品番
号に対して単純な関係をもつアドレス可能位置に、配置
しなければならないと定義することである。コンパイラ
が、通常のコンパイル過程の一部としてこれらの命令を
適切なコード位置に注入するのは比較的簡単なはずであ
り、命令実施態様でこの追加的検証を行うのは簡単なは
ずである。この定義は、資格検証トリガ中で供給される
製品番号の識別を変更する、目的コードのパッチングに
対する重要な障壁となるはずである。
型のコンパイル経路を介して目的コード中に注入できる
ように、追加の定義をすることが可能である。これは、
顧客及びコンパイラ作成者が利用できる機械インターフ
ェースが、目的コード形式のモジュールがシステムによ
って実行されるのと同じ実行可能な命令のビットとなっ
ているものとなるはずである。目的コードのフォーマッ
トが顧客に知られている従来型のコンパイル経路をサポ
ートするため、資格検証トリガを無効にするかまたは変
更するような目的コードの「パッチング」に対する障壁
を追加することが適切になる場合がある。このような追
加の障壁の一つは、同時に他の何らかの機能を果たすよ
うに、資格検証トリガを定義することである。この場
合、資格検証トリガによって実施される代替機能が、他
の単純命令で実施できないことが肝要である。この代替
機能は、コンパイルされたどんなソフトウェア・モジュ
ールもかなり確実にその機能を果たすいくつかの命令を
含むように、選定しなければならない。これらの判定規
準に合致している場合、コンパイラは、自動的に、その
通常のコンパイル手順の一部として、その代替機能を
(それと同時に資格検証トリガも)果たす目的コードを
生成することができる。この定義は、資格検証トリガを
無効にするような目的コードの「パッチング」に対する
重要な障壁をもたらすはずである。他の実施例は、資格
検証トリガを、目的コード中で、それが識別する製品番
号に対して単純な関係をもつアドレス可能位置に、配置
しなければならないと定義することである。コンパイラ
が、通常のコンパイル過程の一部としてこれらの命令を
適切なコード位置に注入するのは比較的簡単なはずであ
り、命令実施態様でこの追加的検証を行うのは簡単なは
ずである。この定義は、資格検証トリガ中で供給される
製品番号の識別を変更する、目的コードのパッチングに
対する重要な障壁となるはずである。
【0045】好ましい実施例は、80個の独立な製品番
号に対応している。本発明によってサポートされる製品
番号の実際の数は可変であることを理解されたい。好ま
しい実施例では、配布者から配布される、別々にコンパ
イル可能なソフトウェア・モジュールの数が80を大幅
に越えることも予想されている。製品番号の数は、配布
者のマーケティング組織によって提供される別々に価格
設定されたソフトウェア・パッケージの数に対応する。
各ソフトウェア・モジュールは一つの製品番号しかもた
ないが、この製品番号を共有するソフトウェア・モジュ
ールは多数存在し得る。たとえば、配布者は、画面編
集、スペル・チェック、文書フォーマット化などを扱う
別々のソフトウェア・モジュールを含む、ワード・プロ
セッシング・パッケージを提供する。こうしたソフトウ
ェア・モジュールが常にワード・プロセッシング・パッ
ケージの一部としてライセンスを与えられる場合には、
それらのモジュールは共通の製品番号をもつことにな
る。別の実施例では、各ソフトウェア・モジュールごと
に、別々の番号をもつことも可能である。
号に対応している。本発明によってサポートされる製品
番号の実際の数は可変であることを理解されたい。好ま
しい実施例では、配布者から配布される、別々にコンパ
イル可能なソフトウェア・モジュールの数が80を大幅
に越えることも予想されている。製品番号の数は、配布
者のマーケティング組織によって提供される別々に価格
設定されたソフトウェア・パッケージの数に対応する。
各ソフトウェア・モジュールは一つの製品番号しかもた
ないが、この製品番号を共有するソフトウェア・モジュ
ールは多数存在し得る。たとえば、配布者は、画面編
集、スペル・チェック、文書フォーマット化などを扱う
別々のソフトウェア・モジュールを含む、ワード・プロ
セッシング・パッケージを提供する。こうしたソフトウ
ェア・モジュールが常にワード・プロセッシング・パッ
ケージの一部としてライセンスを与えられる場合には、
それらのモジュールは共通の製品番号をもつことにな
る。別の実施例では、各ソフトウェア・モジュールごと
に、別々の番号をもつことも可能である。
【0046】好ましい実施例では、ソフトウェアは一括
払い料金でライセンスが与えられるが、グレードアップ
を維持するための追加料金が請求されることが可能であ
る。別の実施例では、ある期間の間ソフトウェアのライ
センスを許諾することができる。このような別の実施例
においては、資格付与キーが、ソフトウェアのライセン
スが与えられる期間の長さを示す追加のフィールドを含
むことになる。コード化された製品キー・テーブル45
0中の製品番号に関連する日/時スタンプをライセンス
許諾の期間の長さと比較して、ライセンスが満了したか
どうかを判定するために、IPLロック再検証ルーチン
431が、定期的に呼び出される。このとき、ライセン
スが満了した場合には、製品ロック・テーブル460中
の対応するエントリにロック解除ビット(図示せず)を
設けておきこれを“0”にセットすることによって、新
たな資格付与が得られるまで、ソフトウェア・モジュー
ルのそれ以上の実行を防止するようにすることもでき
る。
払い料金でライセンスが与えられるが、グレードアップ
を維持するための追加料金が請求されることが可能であ
る。別の実施例では、ある期間の間ソフトウェアのライ
センスを許諾することができる。このような別の実施例
においては、資格付与キーが、ソフトウェアのライセン
スが与えられる期間の長さを示す追加のフィールドを含
むことになる。コード化された製品キー・テーブル45
0中の製品番号に関連する日/時スタンプをライセンス
許諾の期間の長さと比較して、ライセンスが満了したか
どうかを判定するために、IPLロック再検証ルーチン
431が、定期的に呼び出される。このとき、ライセン
スが満了した場合には、製品ロック・テーブル460中
の対応するエントリにロック解除ビット(図示せず)を
設けておきこれを“0”にセットすることによって、新
たな資格付与が得られるまで、ソフトウェア・モジュー
ルのそれ以上の実行を防止するようにすることもでき
る。
【発明の効果】本発明によって、コンピュータ・システ
ムにおけるソフトウェアの使用を管理する、改善された
方法及び装置が提供される。
ムにおけるソフトウェアの使用を管理する、改善された
方法及び装置が提供される。
【図1】本発明の好ましい実施例によるソフトウェア保
護機構の主要要素を示す図である。
護機構の主要要素を示す図である。
【図2】本発明の好ましい実施例による資格付与キーの
暗号化されていない内容を示す図である。
暗号化されていない内容を示す図である。
【図3】好ましい実施例による典型的な実行可能ソフト
ウェア・モジュールの内容を示す図である。
ウェア・モジュールの内容を示す図である。
【図4】好ましい実施例によるソフトウェア保護機構を
サポートするために顧客のコンピュータ・システム上で
必要なハードウェア及びソフトウェアの構造を示す図で
ある。
サポートするために顧客のコンピュータ・システム上で
必要なハードウェア及びソフトウェアの構造を示す図で
ある。
【図5】好ましい実施例によるコード化された製品キー
・テーブルのフォーマットを示す図である。
・テーブルのフォーマットを示す図である。
【図6】好ましい実施例による製品ロック・テーブルの
フォーマットを示す図である。
フォーマットを示す図である。
【図7】好ましい実施例による、資格検証トリガをソフ
トウェア・モジュールに配置するのに必要なステップの
ブロック図である。
トウェア・モジュールに配置するのに必要なステップの
ブロック図である。
【図8】好ましい実施例により、暗号化された資格付与
キーを生成するのに必要なステップのブロック図であ
る。
キーを生成するのに必要なステップのブロック図であ
る。
【図9】好ましい実施例による、顧客のコンピュータ・
システム上で資格付与キーをデコードし、資格付与状況
の記録を維持するのに必要なステップのブロック図であ
る。
システム上で資格付与キーをデコードし、資格付与状況
の記録を維持するのに必要なステップのブロック図であ
る。
【図10】好ましい実施例による、ソフトウェア・モジ
ュールの実行中に資格を検証するのに必要なステップの
ブロック図である。
ュールの実行中に資格を検証するのに必要なステップの
ブロック図である。
101 顧客側コンピュータ・システム 102 中央演算処理装置(CPU) 103 制御記憶機構 104 ランダム・アクセス・メモリ(RAM) 106 記憶装置 107 記憶装置 108 記憶装置 109 操作卓 110 媒体読取装置 112 ソフトウェア記録媒体 120 倉庫 121 販売事務所 123 データ・ベース 124 マーケティング用コンピュータ・システム 125 開発用コンピュータ・システム 126 コンパイラ 127 トランスレータ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マイケル・ジョーゼフ・コリガン アメリカ合衆国55906、ミネソタ州ロチェ スター、20番アベニュー、ノース・イース ト 1510番地 (72)発明者 フランシス・ジョーゼフ・リアドン・ジュ ニア アメリカ合衆国55901、ミネソタ州ロチェ スター、シャトー・ロード、ノース・ウェ スト 5685番地 (72)発明者 ジェームズ・ウィリアム・モラン アメリカ合衆国55934、ミネソタ州エヨタ、 チェスター・ロード、サウス・イースト、 3221番地 (56)参考文献 特開 昭61−123935(JP,A) 特開 昭63−298529(JP,A)
Claims (14)
- 【請求項1】コンピュータ・システムで実行されるソフ
トウェア・モジュールの使用を管理するための装置であ
って、 上記 コンピュータ・システムに所定のソフトウェア・モ
ジュールを実行する資格を付与するための資格付与キー
を、資格が付与される該システムの識別子を含めて生成
し該システムに入力する資格付与手段と、上記ソフトウェア・モジュールの識別子を含み、 資格の
検証をトリガする複数の独立したトリガ機構を、該ソフ
トウェア・モジュール内に設けるトリガ生成手段と、 上記の複数の独立したトリガ機構のそれぞれに応答し
て、上記コンピュータ・システムが上記ソフトウェア・
モジュールを実行する資格をもつことを、上記システム
の識別子と上記ソフトウェア・モジュールの識別子を用
いて検証する資格検証手段と、 上記の資格検証手段に応答して、上記コンピュータ・シ
ステムが上記のソフトウェア・モジュールを実行する資
格をもたないと上記資格検証手段が判定した場合に、上
記ソフトウェア・モジュールの実行を打ち切る手段と を備える、ソフトウェアの使用を管理するための装置。 - 【請求項2】上記の複数の独立したトリガ機構が、上記
資格検証手段をトリガする単一の目的コード命令であ
る、請求項1に記載のソフトウェアの使用を管理するた
めの装置。 - 【請求項3】上記資格検証手段をトリガする上記目的コ
ード命令が、上記ソフトウェア・モジュールの適切な実
行に必要な追加ステップをも実行し、その結果、上記目
的コード命令を除去することによって上記ソフトウェア
・モジュールが修正される場合は、上記の追加ステップ
が実行されず、上記ソフトウェア・モジュールが適切に
実行されなくなる、請求項2に記載のソフトウェアの使
用を管理するための装置。 - 【請求項4】上記資格検証手段が、 資格付与情報を含みかつそれぞれが上記ソフトウェア・
モジュールの識別子に関連する複数のエントリを備え
る、上記コンピュータ・システム内の製品ロック・テー
ブルと、 上記目的コード命令に応答して、上記目的コード命令に
含まれる上記ソフトウェア・モジュールの識別子に関連
する上記製品ロック・テーブル中のエントリに含まれる
上記資格付与情報にアクセスする手段と を含む、請求項2に記載のソフトウェアの使用を管理す
るための装置。 - 【請求項5】上記システムの識別子を用いて上記資格付
与キーを暗号化し、その結果得られる暗号化された資格
付与キーが同じ独自の識別子をもつコンピュータ・シス
テム上でしか解読できないようにする手段と、 上記コンピュータ・システムの独自の識別子にアクセス
する、コンピュータ・システム内の手段と、 上記の独自の識別子にアクセスする上記手段に応答し
て、上記の暗号化された資格付与キーを解読する、上記
のコンピュータ・システム内の手段と を備える、請求項1に記載のソフトウェアの使用を管理
するための装置。 - 【請求項6】コンピュータ・システムにおいて実行され
るソフトウェア・モジュールの使用を管理するための方
法であって、 ソフトウェア・モジュールの識別子を含み、 資格の検証
をトリガする複数の独立したトリガ機構が、該ソフトウ
ェア・モジュール内に配置されており、上記コンピュータ・システムに所定のソフトウェア・モ
ジュールを実行する資格を付与するために該システムの
識別子を含めて生成される資格付与キーを、該システム
で受け取る段階と、 上記ソフトウェア・モジュールを実行する段階と、 上記ソフトウェア・モジュールの実行中に上記複数の独
立したトリガ機構の一つに出会ったとき、コンピュータ
・システムがそのソフトウェア・モジュールを実行する
資格をもつことを、上記システムの識別子と上記ソフト
ウェア・モジュールの識別子を用いて検証する資格検証
動作を上記コンピュータ・システム中でトリガする段階
と、 上記資格検証で、上記コンピュータ・システムには上記
ソフトウェア・モジュールを実行する資格がないと判定
された場合、上記ソフトウェア・モジュールの実行を打
ち切る段階と を含む、ソフトウェアの使用を管理するための方法。 - 【請求項7】複数の独立したトリガ機構を上記ソフトウ
ェア・モジュール内に配置する際に、上記ソフトウェア
・モジュール内の複数の別々の位置に、上記資格検証動
作をトリガする単一の目的コード命令が配置される、請
求項6に記載のソフトウェアの使用を管理するための方
法。 - 【請求項8】上記資格検証動作をトリガする上記目的コ
ード命令が、上記ソフトウェア・モジュールの適切な実
行に必要な追加ステップをも実行し、その結果、目的コ
ード命令を除去することによって上記ソフトウェア・モ
ジュールが修正される場合は、上記の追加ステップが実
行されず、上記ソフトウェア・モジュールが適切に実行
されなくなる、請求項6に記載のソフトウェアの使用を
管理するための方法。 - 【請求項9】資格付与情報を含みかつそれぞれが上記ソ
フトウェア・モジュールの識別子に関連する複数のエン
トリを備えた製品ロック・テーブルを、上記のコンピュ
ータ・システム内で維持する段階を含み、資格検証動作
をトリガする上記段階が、上記目的コード命令中に含ま
れる上記ソフトウェア・モジュールの識別子に関連する
製品ロック・テーブル中のエントリに含まれる上記資格
付与情報にアクセスすることを含む、 請求項7に記載のソフトウェアの使用を管理するための
方法。 - 【請求項10】ソフトウェア・モジュールを実行する資
格を受け取り管理する手段を有し、かつ上記ソフトウェ
ア・モジュール内のトリガ機構に応答して、該ソフトウ
ェア・モジュールを実行する資格をもつことをシステム
の識別子とソフトウェア・モジュールの識別子を用いて
検証する資格検証手段を有するコンピュータ・システム
上で実行される、ソフトウェア・モジュールを配布する
方法であって、ソフトウェア・モジュールの識別子を含み、 資格の検証
をトリガするための複数の独立したトリガ機構を上記ソ
フトウェア・モジュール内に配置する段階と、 上記ソフトウェア・モジュールを上記コンピュータ・シ
ステムに配布する段階と、 上記コンピュータ・システムに所定のソフトウェア・モ
ジュールを実行する資格を付与するために該システムの
識別子を含めて生成される資格付与キーを、該システム
に送付する段階と を含む、ソフトウェアの配布方法。 - 【請求項11】上記複数の独立したトリガ機構を上記ソ
フトウェア・モジュール内に配置する上記段階が、上記
資格の検証をトリガする単一の目的コード命令を、上記
ソフトウェア・モジュール中の複数の別々の位置に配置
することを含む、請求項10に記載のソフトウェアを配
布する方法。 - 【請求項12】上記資格検証をトリガする上記目的コー
ド命令が、上記ソフトウェア・モジュールの適切な実行
に必要な追加ステップをも実行し、その結果、上記目的
コード命令を除去することによって上記ソフトウェア・
モジュールが修正される場合は、上記の追加ステップが
実施されず、ソフトウェア・モジュールが適切に実行さ
れなくなる、請求項11に記載の、ソフトウェア・モジ
ュールを配布する方法。 - 【請求項13】コンピュータ・システム上の上記資格検
証手段が、資格付与情報を含みかつそれぞれが上記ソフ
トウェア・モジュールの識別子に関連する複数のエント
リを備えた製品ロック・テーブルを、コンピュータ・シ
ステム内に有する、 請求項11に記載の、ソフトウェア・モジュールを配布
する方法。 - 【請求項14】上記ソフトウェア・モジュールを配布す
る上記段階が、それぞれ単一の記憶媒体上に資格検証を
トリガする複数の独立したトリガ機構を有する、複数の
ソフトウェア・モジュールを配布することを含み、 上記コンピュータ・システムに上記ソフトウェア・モジ
ュールを実行する資格を付与する上記段階が、上記の単
一の記憶媒体上の上記複数のソフトウェア・モジュール
のうち少なくとも2つに別々の資格を与えることを含
む、 請求項10に記載の、ソフトウェア・モジュールを配布
する方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US629295 | 1984-07-09 | ||
US62929590A | 1990-12-14 | 1990-12-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05334072A JPH05334072A (ja) | 1993-12-17 |
JPH0799497B2 true JPH0799497B2 (ja) | 1995-10-25 |
Family
ID=24522406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3308350A Expired - Lifetime JPH0799497B2 (ja) | 1990-12-14 | 1991-10-29 | ソフトウェアの使用を管理するための装置及び方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5933497A (ja) |
JP (1) | JPH0799497B2 (ja) |
Families Citing this family (172)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089212B2 (en) * | 1992-12-15 | 2006-08-08 | Sl Patent Holdings Llc | System and method for controlling access to protected information |
US6266654B1 (en) * | 1992-12-15 | 2001-07-24 | Softlock.Com, Inc. | Method for tracking software lineage |
US7831516B2 (en) | 1992-12-15 | 2010-11-09 | Sl Patent Holdings Llc | System and method for redistributing and licensing access to protected information among a plurality of devices |
US7036019B1 (en) | 1994-04-01 | 2006-04-25 | Intarsia Software Llc | Method for controlling database copyrights |
JPH07271865A (ja) * | 1994-04-01 | 1995-10-20 | Mitsubishi Corp | データベース著作権管理方法 |
US7302415B1 (en) | 1994-09-30 | 2007-11-27 | Intarsia Llc | Data copyright management system |
US6424715B1 (en) | 1994-10-27 | 2002-07-23 | Mitsubishi Corporation | Digital content management system and apparatus |
DE69532434T2 (de) | 1994-10-27 | 2004-11-11 | Mitsubishi Corp. | Gerät für Dateiurheberrechte-Verwaltungssystem |
JPH08263438A (ja) * | 1994-11-23 | 1996-10-11 | Xerox Corp | ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法 |
DE69638018D1 (de) * | 1995-02-13 | 2009-10-15 | Intertrust Tech Corp | Systeme und Verfahren zur Verwaltung von gesicherten Transaktionen und zum Schutz von elektronischen Rechten |
US6658568B1 (en) * | 1995-02-13 | 2003-12-02 | Intertrust Technologies Corporation | Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management |
US7133846B1 (en) * | 1995-02-13 | 2006-11-07 | Intertrust Technologies Corp. | Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management |
US7133845B1 (en) * | 1995-02-13 | 2006-11-07 | Intertrust Technologies Corp. | System and methods for secure transaction management and electronic rights protection |
US6948070B1 (en) * | 1995-02-13 | 2005-09-20 | Intertrust Technologies Corporation | Systems and methods for secure transaction management and electronic rights protection |
US7143290B1 (en) | 1995-02-13 | 2006-11-28 | Intertrust Technologies Corporation | Trusted and secure techniques, systems and methods for item delivery and execution |
US7095854B1 (en) * | 1995-02-13 | 2006-08-22 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US20080141033A1 (en) * | 1995-02-13 | 2008-06-12 | Intertrust Technologies Corporation | Trusted and secure techniques, systems and methods for item delivery and execution |
US7937312B1 (en) * | 1995-04-26 | 2011-05-03 | Ebay Inc. | Facilitating electronic commerce transactions through binding offers |
US8595502B2 (en) | 1995-09-29 | 2013-11-26 | Intarsia Software Llc | Data management system |
US6938263B2 (en) | 1996-04-23 | 2005-08-30 | Sun Microsystems, Inc. | System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space |
US6247026B1 (en) | 1996-10-11 | 2001-06-12 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of delegation certificates in a distributed system |
US6708171B1 (en) | 1996-04-23 | 2004-03-16 | Sun Microsystems, Inc. | Network proxy |
US6446070B1 (en) | 1998-02-26 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic distributed computing over a network |
US6598094B1 (en) | 1998-03-20 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for determining status of remote objects in a distributed system |
US6272559B1 (en) | 1997-10-15 | 2001-08-07 | Sun Microsystems, Inc. | Deferred reconstruction of objects and remote loading for event notification in a distributed system |
US6421704B1 (en) | 1998-03-20 | 2002-07-16 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of group membership in a distributed system |
US6487607B1 (en) | 1998-02-26 | 2002-11-26 | Sun Microsystems, Inc. | Methods and apparatus for remote method invocation |
US6560656B1 (en) | 1998-02-26 | 2003-05-06 | Sun Microsystems, Inc. | Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system |
US6182083B1 (en) | 1997-11-17 | 2001-01-30 | Sun Microsystems, Inc. | Method and system for multi-entry and multi-template matching in a database |
US6578044B1 (en) | 1997-11-17 | 2003-06-10 | Sun Microsystems, Inc. | Method and system for typesafe attribute matching |
US6226746B1 (en) | 1998-03-20 | 2001-05-01 | Sun Microsystems, Inc. | Stack-based system and method to combine security requirements of methods |
US6393497B1 (en) | 1998-03-20 | 2002-05-21 | Sun Microsystems, Inc. | Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system |
US6438614B2 (en) | 1998-02-26 | 2002-08-20 | Sun Microsystems, Inc. | Polymorphic token based control |
US6237024B1 (en) | 1998-03-20 | 2001-05-22 | Sun Microsystem, Inc. | Method and apparatus for the suspension and continuation of remote processes |
US6466947B2 (en) * | 1998-03-20 | 2002-10-15 | Sun Microsystems, Inc. | Apparatus and method for dynamically verifying information in a distributed system |
US6185611B1 (en) | 1998-03-20 | 2001-02-06 | Sun Microsystem, Inc. | Dynamic lookup service in a distributed system |
US6138238A (en) | 1997-12-11 | 2000-10-24 | Sun Microsystems, Inc. | Stack-based access control using code and executor identifiers |
US6832223B1 (en) | 1996-04-23 | 2004-12-14 | Sun Microsystems, Inc. | Method and system for facilitating access to a lookup service |
US6463446B1 (en) | 1998-02-26 | 2002-10-08 | Sun Microsystems, Inc. | Method and apparatus for transporting behavior in an event-based distributed system |
US6530019B1 (en) * | 1996-06-12 | 2003-03-04 | Dell U.S.A., L.P. | Disk boot sector for software contract enforcement |
US7177429B2 (en) | 2000-12-07 | 2007-02-13 | Blue Spike, Inc. | System and methods for permitting open access to data objects and for securing data within the data objects |
US6237020B1 (en) * | 1996-10-01 | 2001-05-22 | International Business Machines Corporation | Task-oriented automatic distribution of software |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
US6728737B2 (en) | 1996-10-11 | 2004-04-27 | Sun Microsystems, Inc. | Method and system for leasing storage |
US6237009B1 (en) | 1996-10-11 | 2001-05-22 | Sun Microsystems, Inc. | Lease renewal service |
JP2000507484A (ja) * | 1996-10-23 | 2000-06-20 | エスディージーアイ・ホールディングス・インコーポレーテッド | 脊柱用スペーサ |
JP3302593B2 (ja) * | 1997-02-25 | 2002-07-15 | 三菱電機株式会社 | ソフトウェア版権保護装置 |
US6067416A (en) * | 1997-06-03 | 2000-05-23 | Fraser; Robert E. | Method for dynamically wrapping files for downloading |
US6253256B1 (en) | 1997-10-15 | 2001-06-26 | Sun Microsystems, Inc. | Deferred reconstruction of objects and remote loading in a distributed system |
US6604127B2 (en) | 1998-03-20 | 2003-08-05 | Brian T. Murphy | Dynamic lookup service in distributed system |
WO1999044296A2 (en) * | 1998-02-26 | 1999-09-02 | Sun Microsystems, Inc. | Apparatus and method for dynamically verifying information in a distributed system |
AU2787799A (en) | 1998-02-26 | 1999-09-15 | Sun Microsystems, Inc. | Method and system for deterministic hashes to identify remote methods |
US6243692B1 (en) * | 1998-05-22 | 2001-06-05 | Preview Software | Secure electronic software packaging using setup-external unlocking module |
US6389403B1 (en) * | 1998-08-13 | 2002-05-14 | International Business Machines Corporation | Method and apparatus for uniquely identifying a customer purchase in an electronic distribution system |
US7664264B2 (en) | 1999-03-24 | 2010-02-16 | Blue Spike, Inc. | Utilizing data reduction in steganographic and cryptographic systems |
US7188193B1 (en) | 2000-01-20 | 2007-03-06 | Sonic Solutions, A California Corporation | System, method and article of manufacture for a synchronizer component in a multimedia synchronization framework |
US7458091B1 (en) | 2000-01-20 | 2008-11-25 | Sonic Solutions, A California Corporation | System, method and article of manufacture for a business layer component in a multimedia synchronization framework |
US6453420B1 (en) | 1999-04-21 | 2002-09-17 | Research Investment Network, Inc. | System, method and article of manufacture for authorizing the use of electronic content utilizing a laser-centric medium |
US7178106B2 (en) * | 1999-04-21 | 2007-02-13 | Sonic Solutions, A California Corporation | Presentation of media content from multiple media sources |
CA2388565A1 (en) | 1999-04-21 | 2000-10-26 | Research Investment Network, Inc. | System, method and article of manufacture for updating content stored on a portable storage medium |
US20050182828A1 (en) | 1999-04-21 | 2005-08-18 | Interactual Technologies, Inc. | Platform specific execution |
US7448021B1 (en) | 2000-07-24 | 2008-11-04 | Sonic Solutions, A California Corporation | Software engine for combining video or audio content with programmatic content |
US6769130B1 (en) * | 2000-01-20 | 2004-07-27 | Interactual Technologies, Inc. | System, method and article of manufacture for late synchronization during the execution of a multimedia event on a plurality of client computers |
US7346920B2 (en) | 2000-07-07 | 2008-03-18 | Sonic Solutions, A California Corporation | System, method and article of manufacture for a common cross platform framework for development of DVD-Video content integrated with ROM content |
US6529949B1 (en) * | 2000-02-07 | 2003-03-04 | Interactual Technologies, Inc. | System, method and article of manufacture for remote unlocking of local content located on a client device |
US6941383B1 (en) | 2000-01-20 | 2005-09-06 | Interactual Technologies, Inc. | System, method and article of manufacture for java/javascript component in a multimedia synchronization framework |
US6681212B1 (en) | 1999-04-23 | 2004-01-20 | Nianning Zeng | Internet-based automated system and a method for software copyright protection and sales |
US6966002B1 (en) | 1999-04-30 | 2005-11-15 | Trymedia Systems, Inc. | Methods and apparatus for secure distribution of software |
US7360252B1 (en) | 1999-04-30 | 2008-04-15 | Macrovision Corporation | Method and apparatus for secure distribution of software |
US20050251686A1 (en) * | 1999-06-09 | 2005-11-10 | Andres Torrubia-Saez | Methods and apparatus for secure distribution of software |
US6877163B1 (en) | 1999-06-14 | 2005-04-05 | Sun Microsystems, Inc. | Method and system for dynamic proxy classes |
US7885899B1 (en) * | 2000-02-08 | 2011-02-08 | Ipass Inc. | System and method for secure network purchasing |
US7366702B2 (en) * | 1999-07-30 | 2008-04-29 | Ipass Inc. | System and method for secure network purchasing |
US7191153B1 (en) * | 1999-09-10 | 2007-03-13 | Dphi Acquisitions, Inc. | Content distribution method and apparatus |
US7188255B1 (en) * | 1999-09-23 | 2007-03-06 | Hewlett-Packard Development Company, L.P. | Software delivery system |
US6745328B1 (en) | 1999-10-23 | 2004-06-01 | Lockstream Corporation | Encryption using a user-known and personally valuable key to deter key sharing |
US6683954B1 (en) * | 1999-10-23 | 2004-01-27 | Lockstream Corporation | Key encryption using a client-unique additional key for fraud prevention |
US6778992B1 (en) | 1999-12-21 | 2004-08-17 | Lockstream Corporation | Flexible and hierarchical user interfaces defined using a data definition language |
US7392481B2 (en) * | 2001-07-02 | 2008-06-24 | Sonic Solutions, A California Corporation | Method and apparatus for providing content-owner control in a networked device |
JP2001211171A (ja) * | 2000-01-28 | 2001-08-03 | Advantest Corp | 機器認証装置、方法、機器認証プログラムを記録した記録媒体 |
KR100847596B1 (ko) * | 2000-03-02 | 2008-07-21 | 소니 가부시끼 가이샤 | 통신망 시스템, 게이트웨이, 데이터 통신방법과 프로그램제공매체 |
US20070271191A1 (en) * | 2000-03-09 | 2007-11-22 | Andres Torrubia-Saez | Method and apparatus for secure distribution of software |
CN1241083C (zh) | 2000-04-28 | 2006-02-08 | 莫尔德弗洛公司 | 启用网络的应用软件系统和方法 |
US6789077B1 (en) | 2000-05-09 | 2004-09-07 | Sun Microsystems, Inc. | Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment |
US8001232B1 (en) | 2000-05-09 | 2011-08-16 | Oracle America, Inc. | Event message endpoints in a distributed computing environment |
US6862594B1 (en) | 2000-05-09 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus to discover services using flexible search criteria |
US6789126B1 (en) | 2000-05-09 | 2004-09-07 | Sun Microsystems, Inc. | Addressing message gates in a distributed computing environment |
US7716492B1 (en) | 2000-05-09 | 2010-05-11 | Oracle America, Inc. | Method and apparatus to obtain service capability credentials |
US8082491B1 (en) | 2000-05-09 | 2011-12-20 | Oracle America, Inc. | Dynamic displays in a distributed computing environment |
US6792466B1 (en) | 2000-05-09 | 2004-09-14 | Sun Microsystems, Inc. | Trusted construction of message endpoints in a distributed computing environment |
US6643650B1 (en) | 2000-05-09 | 2003-11-04 | Sun Microsystems, Inc. | Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment |
US8135796B1 (en) | 2000-05-09 | 2012-03-13 | Oracle America, Inc. | Mechanism and apparatus for accessing and addressing services in a distributed computing environment |
US7577834B1 (en) | 2000-05-09 | 2009-08-18 | Sun Microsystems, Inc. | Message authentication using message gates in a distributed computing environment |
US6763440B1 (en) | 2000-06-02 | 2004-07-13 | Sun Microsystems, Inc. | Garbage collection using nursery regions for new objects in a virtual heap |
US6760815B1 (en) * | 2000-06-02 | 2004-07-06 | Sun Microsystems, Inc. | Caching mechanism for a virtual heap |
US7689510B2 (en) | 2000-09-07 | 2010-03-30 | Sonic Solutions | Methods and system for use in network management of content |
US7237123B2 (en) * | 2000-09-22 | 2007-06-26 | Ecd Systems, Inc. | Systems and methods for preventing unauthorized use of digital content |
JP4378590B2 (ja) * | 2000-10-12 | 2009-12-09 | ソニー株式会社 | 情報処理装置および情報処理方法、並びにプログラム格納媒体 |
US7660902B2 (en) * | 2000-11-20 | 2010-02-09 | Rsa Security, Inc. | Dynamic file access control and management |
US20020073312A1 (en) * | 2000-12-08 | 2002-06-13 | International Business Machines Corporation | Secure electronic software distribution |
JP2002189636A (ja) * | 2000-12-20 | 2002-07-05 | Sega Corp | セキュリティシステム |
US20030005302A1 (en) * | 2001-03-02 | 2003-01-02 | Scott Searle | Theft resistant graphics |
US7434067B1 (en) * | 2001-04-26 | 2008-10-07 | Palmsource, Inc. | Method and system for a security technique for enabling an electronic device to run controlled test applications |
WO2002091146A2 (en) | 2001-05-09 | 2002-11-14 | Ecd Systems, Inc. | Systems and methods for the prevention of unauthorized use and manipulation of digital content |
US6549980B2 (en) | 2001-07-19 | 2003-04-15 | Dell Pruducts L.P. | Manufacturing process for software raid disk sets in a computer system |
WO2003021427A2 (en) * | 2001-08-29 | 2003-03-13 | Globespanvirata Incorporated | Secure access to software functionalities |
US7756969B1 (en) | 2001-09-07 | 2010-07-13 | Oracle America, Inc. | Dynamic provisioning of identification services in a distributed system |
US7660887B2 (en) | 2001-09-07 | 2010-02-09 | Sun Microsystems, Inc. | Systems and methods for providing dynamic quality of service for a distributed system |
US20030070160A1 (en) * | 2001-10-04 | 2003-04-10 | International Business Machines Corporation | Embedding information in software |
US7392517B2 (en) * | 2001-10-04 | 2008-06-24 | International Business Machines Corporation | Extracting information from software |
US7953665B2 (en) * | 2001-12-21 | 2011-05-31 | Nokia Corporation | Method and system for delivering content to and locking content in a user device |
US20030135754A1 (en) * | 2002-01-11 | 2003-07-17 | Chaucer Chiu | Database expanding system and method |
EP1333350A1 (en) * | 2002-01-30 | 2003-08-06 | STMicroelectronics Limited | Memory security device |
EP1333351A1 (en) * | 2002-01-31 | 2003-08-06 | Culture. Com. Technology (Macau) Ltd. | System and method for electronic file transmission |
KR100443621B1 (ko) * | 2002-02-25 | 2004-08-09 | 주식회사 마크애니 | 개인용 컴퓨터 기반의 고유 아이디를 이용한 휴대용 정보단말기의 어플리케이션의 인증방법과 이를 이용한 시스템 |
US7287275B2 (en) | 2002-04-17 | 2007-10-23 | Moskowitz Scott A | Methods, systems and devices for packet watermarking and efficient provisioning of bandwidth |
US7680743B2 (en) * | 2002-05-15 | 2010-03-16 | Microsoft Corporation | Software application protection by way of a digital rights management (DRM) system |
US20040254890A1 (en) * | 2002-05-24 | 2004-12-16 | Sancho Enrique David | System method and apparatus for preventing fraudulent transactions |
US7107461B2 (en) * | 2002-06-03 | 2006-09-12 | Sony Computer Entertainment America, Inc. | Methods and apparatus for customizing a rewritable storage medium |
JP2004046327A (ja) | 2002-07-09 | 2004-02-12 | Sony Corp | データ記録媒体、プログラム起動方法およびプログラム |
US20040039705A1 (en) * | 2002-08-26 | 2004-02-26 | Microsoft Corporation | Distributing a software product activation key |
US7698441B2 (en) * | 2002-10-03 | 2010-04-13 | International Business Machines Corporation | Intelligent use of user data to pre-emptively prevent execution of a query violating access controls |
US6928554B2 (en) * | 2002-10-31 | 2005-08-09 | International Business Machines Corporation | Method of query return data analysis for early warning indicators of possible security exposures |
US7835520B2 (en) * | 2003-02-20 | 2010-11-16 | Zoran Corporation | Unique identifier per chip for digital audio/video data encryption/decryption in personal video recorders |
EP1465092B1 (en) * | 2003-04-03 | 2006-01-18 | Culture.com Technology (Macau) Ltd | System and method for secure electronic commerce |
US7475254B2 (en) * | 2003-06-19 | 2009-01-06 | International Business Machines Corporation | Method for authenticating software using protected master key |
US20050027657A1 (en) * | 2003-08-01 | 2005-02-03 | Yuri Leontiev | Distinguishing legitimate hardware upgrades from unauthorized installations of software on additional computers |
US8108319B2 (en) * | 2003-08-26 | 2012-01-31 | Sony Computer Entertainment America Llc | System and method for controlling access to computer readable content using downloadable authentication |
US20050066324A1 (en) * | 2003-09-22 | 2005-03-24 | Microsoft Corporation | Method and system for distributing and installing software |
US20050071656A1 (en) * | 2003-09-25 | 2005-03-31 | Klein Dean A. | Secure processor-based system and method |
US7681046B1 (en) | 2003-09-26 | 2010-03-16 | Andrew Morgan | System with secure cryptographic capabilities using a hardware specific digital secret |
US7788496B2 (en) | 2003-10-08 | 2010-08-31 | Microsoft Corporation | First computer process and second computer process proxy-executing code on behalf thereof |
US7979911B2 (en) | 2003-10-08 | 2011-07-12 | Microsoft Corporation | First computer process and second computer process proxy-executing code from third computer process on behalf of first process |
US8103592B2 (en) * | 2003-10-08 | 2012-01-24 | Microsoft Corporation | First computer process and second computer process proxy-executing code on behalf of first process |
US7761921B2 (en) * | 2003-10-31 | 2010-07-20 | Caterpillar Inc | Method and system of enabling a software option on a remote machine |
US7841533B2 (en) | 2003-11-13 | 2010-11-30 | Metrologic Instruments, Inc. | Method of capturing and processing digital images of an object within the field of view (FOV) of a hand-supportable digitial image capture and processing system |
US7694151B1 (en) * | 2003-11-20 | 2010-04-06 | Johnson Richard C | Architecture, system, and method for operating on encrypted and/or hidden information |
US7792874B1 (en) | 2004-01-30 | 2010-09-07 | Oracle America, Inc. | Dynamic provisioning for filtering and consolidating events |
US7500108B2 (en) * | 2004-03-01 | 2009-03-03 | Microsoft Corporation | Metered execution of code |
US8694802B2 (en) * | 2004-04-30 | 2014-04-08 | Apple Inc. | System and method for creating tamper-resistant code |
US7908477B2 (en) * | 2004-07-27 | 2011-03-15 | Seiji Eto | System and method for enabling device dependent rights protection |
US7849329B2 (en) * | 2004-09-01 | 2010-12-07 | Microsoft Corporation | Licensing the use of a particular feature of software |
US8312431B1 (en) * | 2004-09-17 | 2012-11-13 | Oracle America, Inc. | System and computer readable medium for verifying access to signed ELF objects |
US20060143135A1 (en) * | 2004-11-26 | 2006-06-29 | Tucker David M | Associating licensing information with software applications |
US20060242082A1 (en) * | 2004-11-29 | 2006-10-26 | Yanki Margalit | Method and system for protecting of software application from piracy |
WO2006066052A2 (en) | 2004-12-16 | 2006-06-22 | Sonic Solutions | Methods and systems for use in network management of content |
US7716439B2 (en) * | 2005-01-07 | 2010-05-11 | Roland Corporation | Data processing system and method with copy protection |
US7552429B2 (en) * | 2005-04-21 | 2009-06-23 | International Business Machines Corporation | Integrated development environment for managing software licensing restrictions |
WO2007024782A2 (en) * | 2005-08-24 | 2007-03-01 | Pioneer Hi-Bred International, Inc. | Compositions providing tolerance to multiple herbicides and methods of use thereof |
US8306918B2 (en) * | 2005-10-11 | 2012-11-06 | Apple Inc. | Use of media storage structure with multiple pieces of content in a content-distribution system |
US7555715B2 (en) * | 2005-10-25 | 2009-06-30 | Sonic Solutions | Methods and systems for use in maintaining media data quality upon conversion to a different data format |
US8452981B1 (en) * | 2006-03-01 | 2013-05-28 | Nvidia Corporation | Method for author verification and software authorization |
US7934214B2 (en) * | 2006-03-31 | 2011-04-26 | Lenovo (Singapore) Pte Ltd. | Computer implemented method, system and computer program product for controlling software entitlement |
US8806586B2 (en) * | 2006-04-24 | 2014-08-12 | Yubico Inc. | Device and method for identification and authentication |
US8224751B2 (en) | 2006-05-03 | 2012-07-17 | Apple Inc. | Device-independent management of cryptographic information |
CN100524333C (zh) | 2006-06-13 | 2009-08-05 | 正璞科技有限公司 | 防止非法使用软件的方法 |
US20090249492A1 (en) * | 2006-09-21 | 2009-10-01 | Hans Martin Boesgaard Sorensen | Fabrication of computer executable program files from source code |
US9246687B2 (en) * | 2007-02-28 | 2016-01-26 | Broadcom Corporation | Method for authorizing and authenticating data |
WO2008112663A2 (en) * | 2007-03-10 | 2008-09-18 | Feeva Technology, Inc. | Method and apparatus for tagging network traffic using extensible fields in message headers |
US20080256596A1 (en) * | 2007-04-11 | 2008-10-16 | Seiji Eto | System and method for marketing in a device dependent rights protection framework |
US8347098B2 (en) * | 2007-05-22 | 2013-01-01 | Apple Inc. | Media storage structures for storing content, devices for using such structures, systems for distributing such structures |
US9311492B2 (en) | 2007-05-22 | 2016-04-12 | Apple Inc. | Media storage structures for storing content, devices for using such structures, systems for distributing such structures |
US7992001B2 (en) * | 2007-09-05 | 2011-08-02 | International Business Machines Corporation | Preventing execution of software without a dynamically generated key |
US8385554B2 (en) * | 2007-09-05 | 2013-02-26 | International Business Machines Corporation | Preventing execution of pirated software |
JP2009201030A (ja) * | 2008-02-25 | 2009-09-03 | Nec Corp | 携帯電話機およびその制御方法および携帯電話サービス提供システムおよびプログラム |
KR101227787B1 (ko) * | 2008-09-24 | 2013-01-29 | 엔이씨 유럽 리미티드 | 네트워크를 통해 tv 콘텐츠를 분배하는 방법 및 시스템 |
US9727850B2 (en) | 2010-03-29 | 2017-08-08 | Forward Pay Systems, Inc. | Secure electronic cash-less payment systems and methods |
US9342825B2 (en) | 2010-06-10 | 2016-05-17 | International Business Machines Corporation | Software license and installation process management within an organization |
EP3362980B1 (en) * | 2015-08-27 | 2022-06-08 | Citytaps SAS | Resource delivery |
US10706164B2 (en) * | 2017-09-29 | 2020-07-07 | Intel Corporation | Crypto-enforced capabilities for isolation |
CN110162937B (zh) * | 2018-02-09 | 2024-02-02 | 黄冈职业技术学院 | 基于网络通讯实现计算机软件保护的方法 |
CN112328975A (zh) * | 2020-10-29 | 2021-02-05 | 上海金仕达软件科技有限公司 | 一种产品软件授权管理方法、终端设备及介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3609697A (en) * | 1968-10-21 | 1971-09-28 | Ibm | Program security device |
US4433207A (en) * | 1981-09-10 | 1984-02-21 | Best Robert M | Cryptographic decoder for computer programs |
US4471163A (en) * | 1981-10-05 | 1984-09-11 | Donald Thomas C | Software protection system |
FR2523745B1 (fr) * | 1982-03-18 | 1987-06-26 | Bull Sa | Procede et dispositif de protection d'un logiciel livre par un fournisseur a un utilisateur |
JPS59133643A (ja) * | 1983-01-19 | 1984-08-01 | Hitachi Ltd | プログラムの不正使用防止方法 |
US4644493A (en) * | 1984-09-14 | 1987-02-17 | International Business Machines Corporation | Implementing a shared higher level of privilege on personal computers for copy protection of software |
JPS61123935A (ja) * | 1984-11-20 | 1986-06-11 | Fujitsu Ltd | 有償プログラムの管理方式 |
US4685055A (en) * | 1985-07-01 | 1987-08-04 | Thomas Richard B | Method and system for controlling use of protected software |
JPS63298529A (ja) * | 1987-05-29 | 1988-12-06 | Nec Corp | 有償プログラムの不正利用防止方法 |
US4866769A (en) * | 1987-08-05 | 1989-09-12 | Ibm Corporation | Hardware assist for protecting PC software |
US4959861A (en) * | 1988-07-13 | 1990-09-25 | Howlette Edward L | Security system for computer software |
US4932054A (en) * | 1988-09-16 | 1990-06-05 | Chou Wayne W | Method and apparatus for protecting computer software utilizing coded filter network in conjunction with an active coded hardware device |
JPH0319026A (ja) * | 1989-06-16 | 1991-01-28 | Nec Corp | 有償ソフトウェアチェック方式 |
JPH0368024A (ja) * | 1989-08-08 | 1991-03-25 | Nec Corp | プログラムの不正使用防止方式 |
JPH03266118A (ja) * | 1990-03-16 | 1991-11-27 | Nec Corp | ソフトウェアの不正利用防止方式 |
-
1991
- 1991-10-29 JP JP3308350A patent/JPH0799497B2/ja not_active Expired - Lifetime
-
1993
- 1993-01-29 US US08/011,042 patent/US5933497A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH05334072A (ja) | 1993-12-17 |
US5933497A (en) | 1999-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5933497A (en) | Apparatus and method for controlling access to software | |
US5287408A (en) | Apparatus and method for serializing and validating copies of computer software | |
US6643775B1 (en) | Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications | |
US5291598A (en) | Method and system for decentralized manufacture of copy-controlled software | |
US5530752A (en) | Systems and methods for protecting software from unlicensed copying and use | |
US5222134A (en) | Secure system for activating personal computer software at remote locations | |
US4796181A (en) | Billing system for computer software | |
US6334189B1 (en) | Use of pseudocode to protect software from unauthorized use | |
US6480959B1 (en) | Software system and associated methods for controlling the use of computer programs | |
Karger et al. | Multics security evaluation: Vulnerability analysis | |
EP0679977B1 (en) | Method and apparatus enabling software trial allowing the distribution of software objects | |
CA1292791C (en) | Hardware assist for protecting pc software | |
US4817140A (en) | Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor | |
EP0367700B1 (en) | A method of verifying receipt and acceptance of electronically delivered data objects | |
US5812662A (en) | Method and apparatus to protect computer software | |
US5870467A (en) | Method and apparatus for data input/output management suitable for protection of electronic writing data | |
US5737416A (en) | Method and apparatus for enabling trial period use of software products: method and apparatus for utilizing a decryption stub | |
US20030120938A1 (en) | Method of securing software against reverse engineering | |
US5822771A (en) | System for management of software employing memory for processing unit with regulatory information, for limiting amount of use and number of backup copies of software | |
KR100626920B1 (ko) | 파일관리 시스템, 파일관리장치, 파일관리방법 및프로그램 기록매체 | |
US20070074050A1 (en) | System and method for software and data copy protection | |
EP0266748B1 (en) | A software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor | |
WO1997025675A1 (en) | A secure pay-as-you-use system for computer software | |
WO2001046811A1 (en) | Software for restricting other software to be used by the rightful user only and method therefor | |
US20100228673A1 (en) | System and method for using digital strings to provide secure distribution of digital content |