JPH09231068A - 動的にリンクされた実行可能モジュールの使用を保護するシステム及び方法 - Google Patents

動的にリンクされた実行可能モジュールの使用を保護するシステム及び方法

Info

Publication number
JPH09231068A
JPH09231068A JP8279207A JP27920796A JPH09231068A JP H09231068 A JPH09231068 A JP H09231068A JP 8279207 A JP8279207 A JP 8279207A JP 27920796 A JP27920796 A JP 27920796A JP H09231068 A JPH09231068 A JP H09231068A
Authority
JP
Japan
Prior art keywords
program module
procedure
program
verifier
procedure call
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP8279207A
Other languages
English (en)
Other versions
JP3982857B2 (ja
Inventor
Charles E Mcmanis
イー マックマニス チャールズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH09231068A publication Critical patent/JPH09231068A/ja
Application granted granted Critical
Publication of JP3982857B2 publication Critical patent/JP3982857B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 動的にリンク可能なモジュールの使用を制限
または防止するシステムを提供する。 【解決手段】 コンピュータ・システムは、プログラム
・モジュール・ベリファイア及び少なくとも第1及び第
2のプログラム・モジュールを有する。各プログラム・
モジュールは、ディジタル署名及び実行可能手順を含
む。第1のプログラム・モジュールは、第2の手順モジ
ュールへの手順呼出しと、第2のプログラム・モジュー
ルへの手順呼出しの実行より前に実行されるように第1
のプログラム・モジュールに論理的に配置されるプログ
ラム・モジュール・ベリファイアへの手順呼出しと、プ
ログラム・モジュール・ベリファイアへの手順呼出しが
プログラム・モジュール・ベリファイアによってリター
ンされる検証否認を結果として生ずるときに第2のプロ
グラム・モジュールへの手順呼出しの実行を防止する命
令とを更に含む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、各実行可能なモジュー
ルがその信憑性が確認された他の実行可能なモジュール
にのみ動的にリンクされうるように実行可能なモジュー
ルの使用を制限するシステム及び方法に関する。
【0002】
【従来の技術】コンピュータ・プログラムのコンテキス
トでは、“外部機能”は、一般に外部機能を用いている
コンピュータ・プログラムの外側にある機能の他のレポ
ジトリまたはライブラリに位置決めされる手順または機
能である。外部機能は、常時ではなく、しばしば、異な
る人々によってまたはそれらの外部機能を用いているコ
ンピュータ・プログラムとは異なるエンティティによっ
てオーサされる。外部機能をリンク時間またはコンパイ
ル時間ではなく、走行時間でバウンド(拘束)させるプ
ログラム実行環境は、他のモジュールが変更されないま
までありうる間に、そのような実行環境で用いられるべ
きそのようなプログラムに対して改訂されるかまたは更
新されるコンピュータ・プログラムだけがリコンパイル
される必要があるので、コンピュータ・プログラムの保
守及び更新を容易にする。更に、改訂されたプログラム
のコンパイレーションがプログラムによって用いられる
他のモジュールがプログラム開発システムに存在しない
でも実行されうるので、リコンパイレーション処理は、
簡略化される。
【0003】しかしながら、そのようなプログラム実行
環境を用いているシステムは、プログラム・モジュール
間のインターフェイスが通常よく特定されるか、または
第三者によって決定することができ、かつそのような第
三者が従ってそれらのプログラム・モジュールを対応ソ
フトウェア・ライセンス協定によって是認されない方法
で用いることが可能なので、無防備である。代替的に、
そのような第三者は、信頼できるプログラム・モジュー
ルを破損されたもので置換することによってシステムを
覆させることができる。
【0004】
【発明が解決しようとする課題】この問題は、アメリカ
合衆国から他の国の顧客または販売代理店への輸出向け
ソフトウェアにおける暗号ルーチンを取り扱うときに誇
張される。一般的な暗号ケイパビリティを供給するソフ
トウェア・モジュールを輸出することは、現在米国貿易
法によって禁止されている。他方、制限されたコンテキ
ストにおいて暗号ケイパビリティを使用しかつ輸出され
たプログラムの制限されたコンテキスト以外の一般的な
暗号機能を実行するために用いることができないプログ
ラムを輸出することは、許されている。事実、許可され
た方法で暗号機能を用いる輸出用ソフトウェア・システ
ムを設計できることは、商業的に重要である。ダイナミ
ック・リンク・ライブラリ(ウィンドウズ(Windows) シ
ステムにおけるDLLs)または共有オブジェクト(So
laris における.so ファイル)のような、従来技術のレ
ート・バウンド(late bound)システムは、ソフトウェア
・モジュール間のインターフェイスを覆い隠す(曖昧に
する)ことによって、またはそれらのソフトウェアの個
別“輸出専用”版を供給することによってこの問題を解
決することを試みる。ソフトウェア製品の個別“輸出専
用”版を供給することは、単一のコード・ベースを有す
るグレードアップ及び保守改訂に関して“同期”された
国内及び輸出版を維持することの問題を導く。
【0005】動的にリンク可能なモジュールの使用を制
限または防止することの必要が存在する情況の別の例
は、トレード・シークレットまたは契約上の理由に対し
てプライベートなアプリケーションにおいてある機能を
維持することを望むベンダーによって書かれたアプリケ
ーションである。そのようなシステムは、これらのプラ
イベート機能への限定付きアクセスを必要とする。本発
明の目的は、上記従来の技術における問題点に鑑みて、
動的にリンク可能なモジュールの使用を制限または防止
するシステム及び方法を提供することである。
【0006】
【課題を解決するための手段】本発明の上記目的は、
(A)指定されたプログラム・モジュールの信憑性を確
認することによってかつ各そのような手順呼出しに応じ
て検証確認または否認をリターンすることによってプロ
グラム・モジュール・ベリファイアへの手順呼出しに応
答するように構成されるプログラム・モジュール・ベリ
ファイアと、(B)第1のプログラム・モジュールと、
(C)第2のプログラム・モジュールとを備え、第1及
び第2のプログラム・モジュールの一つは、当該第1及
び第2のプログラム・モジュールへの手順呼出しを含
み、第1及び第2のプログラム・モジュールの少なくと
も一つは、該第1及び第2のプログラム・モジュールの
他のもの信憑性を確認するためのプログラム・モジュー
ル・ベリファイアへの手順呼出しと、プログラム・モジ
ュール・ベリファイアへの手順呼出しがプログラム・モ
ジュール・ベリファイアによってリターンされる検証否
認を結果として生ずるときに一つのプログラム・モジュ
ールの実行を中止する命令とを含んでいるコンピュータ
・システムによって達成される。
【0007】本発明のコンピュータ・システムでは、第
1のプログラム・モジュールは、第1のディジタル署名
及び第1の実行可能手順を含み、第2のプログラム・モ
ジュールは、第2のディジタル署名及び第2の実行可能
手順を含み、プログラム・ベリファイア・モジュール
は、(A1)指定されたプログラム・モジュールのディ
ジタル署名を対応復号キーで復号し、(A2)所定のメ
ッセージ・ダイジェスト関数に従って指定されたプログ
ラム・モジュールの少なくとも一部分のメッセージ・ダ
イジェストを生成し、(A3)復号されたディジタル署
名がメッセージ・ダイジェストにマッチするときに検証
確認をリターンし、(A4)復号されたディジタル署名
がメッセージ・ダイジェストにマッチしないときに検証
否認をリターンすることによって、第1及び第2のプロ
グラム・モジュールの指定されたものの検証を要求して
いる手順呼出しに応答するための命令を含むように構成
してもよい。
【0008】本発明のコンピュータ・システムでは、第
1のプログラム・モジュールは、第2のプログラム・モ
ジュールへの手順呼出しを含んでおり;第2のプログラ
ム・モジュールは、(C1)第2のプログラム・モジュ
ールへの手順呼出しに応答して実行されるべき実行可能
手順;(C2)実行可能手順の実行より前に実行される
ように第2のプログラム・モジュールに論理的に配置さ
れるプログラム・モジュール・ベリファイアへの手順呼
出し;及び(C3)プログラム・モジュール・ベリファ
イアへの手順呼出しがプログラム・モジュール・ベリフ
ァイアによってリターンされる確認否認を結果として生
ずるときに実行可能手順の実行を防ぐ命令を含んでいる
ように構成してもよい。本発明のコンピュータ・システ
ムでは、第2の実行可能手順の実行の終了を防ぐ命令
は、プログラム・モジュール・ベリファイアへの手順呼
出しが、プログラム・モジュール・ベリファイアによっ
てリターンされる確認否認を結果として生ずるときに第
2のプログラム・モジュールの実行を中止する命令を含
むように構成してもよい。
【0009】本発明のコンピュータ・システムでは、第
1のプログラム・モジュールは、第2のプログラム・モ
ジュールへの手順呼出し;第2のプログラム・モジュー
ルへの手順呼出しの実行より前に実行されるように第1
のプログラム・モジュールに論理的に配置されるプログ
ラム・モジュール・ベリファイアへの手順呼出し;及び
プログラム・モジュール・ベリファイアへの手順呼出し
がプログラム・モジュール・ベリファイアによってリタ
ーンされる確認否認を結果として生ずるときに第2のプ
ログラム・モジュールへの手順呼出しの実行を防ぐ命令
を含んでいるように構成してもよい。また、本発明の上
記目的は、プログラム・モジュールをリンクする方法で
あって、(A)第1のプログラム・モジュールから第2
のプログラム・モジュールへの手順呼出しを行うより前
に、第2のプログラム・モジュールの信憑性を確認し;
(B)第2のプログラム・モジュールの信憑性を確認す
ることにより、第1のプログラム・モジュールから第2
のプログラム・モジュールへの手順呼出しを行い;かつ
(C)第1のプログラム・モジュールの信憑性を確認す
ることに失敗することにより、第1のプログラム・モジ
ュールから第2のプログラム・モジュールへの手順呼出
しを防ぐ段階を具備する方法によって達成される。
【0010】本発明の方法では、(D)第1のプログラ
ム・モジュールにより手順呼出しに応じて第2のプログ
ラム・モジュールにおいて手順を事項することを終了す
るより前に、第1のプログラム・モジュールの信憑性を
確認し;(E)第1のプログラム・モジュールの信憑性
を確認することにより、結果を生成するために第2のプ
ログラム・モジュールにおいて手順を実行することを終
了しかつ結果を第1のプログラム手順にリターンし;か
つ(F)第1のプログラム・モジュールの信憑性を確認
することに失敗することにより、第2のプログラム・モ
ジュールにおける手順の実行の終了を防ぐ段階を更に具
備してもよい。本発明の方法では、段階(D)は、対応
するデコーディング・キーで第1のプログラム・モジュ
ールにおける第1のディジタル署名をデコードし、所定
のメッセージ・タイジェスト機能に従って第1のプログ
ラム・モジュールの少なくとも一部のメッセージ・ダイ
ジェストを生成し、デコードされたディジタル署名がメ
ッセージ・ダイジェストに一致するときに第1のプログ
ラム・モジュールの信憑性を確認し、かつデコードされ
たディジタル署名がメッセージ・ダイジェストに一致し
ないときに第1のプログラム・モジュールの信憑性の確
認を否認することを含んでもよい。
【0011】本発明の方法では、段階(C)は、第1の
プログラム・モジュールの実行を中止することを含んで
もよい。本発明の方法では、第1のプログラム・モジュ
ールは、第1のディジタル署名を含みかつ第2のプログ
ラム・モジュールは、第2のディジタル署名を含み;段
階(A)は、対応するデコーディング・キーで第2のプ
ログラム・モジュールにおける第2のディジタル署名を
デコードし、所定のメッセージ・タイジェスト機能に従
って第2のプログラム・モジュールの少なくとも一部の
メッセージ・ダイジェストを生成し、デコードされたデ
ィジタル署名がメッセージ・ダイジェストに一致すると
きに第2のプログラム・モジュールの信憑性を確認し、
かつデコードされたディジタル署名がメッセージ・ダイ
ジェストに一致しないときに第2のプログラム・モジュ
ールの信憑性の確認を否認することを含んでもよい。
【0012】本発明の方法では、段階(A)は、第2の
プログラム・モジュールの信憑性を確認することにより
かつ手順呼出しに応じて確認認証または否認をリターン
することによって手順呼出しに応答している信用プログ
ラム・モジュール・ベリファイアへの手順呼出しを行う
ことを含んでもよい。
【0013】
【作用】纏めると、本発明は、プログラム・モジュール
・ベリファイア及び少なくとも第1及び第2のプログラ
ム・モジュールを有しているコンピュータ・システムで
ある。プログラム・モジュールのそれぞれは、ディジタ
ル署名及び実行可能手順を含む。第1のプログラム・モ
ジュールは、第2の手順モジュールへの手順呼出しと、
第2のプログラム・モジュールへの手順呼出しの実行よ
り前に実行されるように第1のプログラム・モジュール
に論理的に配置されるプログラム・モジュール・ベリフ
ァイアへの手順呼出しと、プログラム・モジュール・ベ
リファイアへの手順呼出しがプログラム・モジュール・
ベリファイアによってリターンされる検証否認を結果と
して生ずるときに第2のプログラム・モジュールへの手
順呼出しの実行を防止する命令とを更に含む。
【0014】第2のプログラム・モジュールは、第2の
プログラム・モジュールに対する第1のプログラム・モ
ジュールによる手順呼出しに応じて実行されるべき実行
可能手順と、第2のプログラム・モジュールの実行可能
手順の実行の終了より前に実行されるように第2のプロ
グラム・モジュールに論理的に配置されるプログラム・
モジュール・ベリファイアへの手順呼出しと、プログラ
ム・モジュール・ベリファイアが第1のプログラム・モ
ジュールに関する検証否認をリターンするときにその実
行可能手順の実行の終了を防止する命令とを含む。プロ
グラム・モジュール・ベリファイアは、指定されたプロ
グラム・モジュールの信憑性を確認することによってか
つ各そのような手順呼出しに応じて検証確認または否認
をリターンすることによって手順呼出しに応答する。よ
り特定的には、好ましい実施例では、プログラム・ベリ
ファイア・モジュールは、(A)対応復号キーを有する
指定されたプログラム・モジュールにおけるディジタル
署名を復号し、(B)メッセージ・ダイジェスト機能に
従って指定されたプログラム・モジュールの少なくとも
一部分のメッセージ・ダイジェストを生成し、(C)復
号されたディジタル署名がメッセージ・ダイジェストに
マッチするときに検証確認をリターンし、(D)復号さ
れたディジタル署名がメッセージ・ダイジェストとマッ
チしないときに検証否認をリターンすることによって指
定されたプログラム・モジュールの検証を要求している
手順呼出しに応答する命令を含む。
【0015】好ましい実施例では、プログラム・モジュ
ール・ベリファイアが第2のプログラム・モジュールの
信憑性を確認することに失敗したときに、第1のプログ
ラム・モジュールは、例外を投じてその実行を中止させ
る。同様に、プログラム・モジュール・ベリファイアが
第1のプログラム・モジュールの信憑性を確認すること
に失敗したときに、第2のプログラム・モジュールは、
例外を投じてその実行を中止させる。本発明の更なる目
標及び特徴は、添付した図面を参照して以下の詳細の説
明及び特許請求の範囲からより容易に明らかであろう。
【0016】
【実施例】図1を参照すると、コンピュータ・システム
100が示されている。コンピュータ100は、Sun
(サン)ワークステーション、IBMコンパチブル・コ
ンピュータ、またはMacintosh(マッキントッ
シュ)コンピュータのようなデスクトップ・コンピュー
タでありうると同時に、ほとんどあらゆる型のコンピュ
ータを用いることができる。コンピュータ100は、C
PU102、ユーザ・インターフェイス104、及びメ
モリ106を含む。メモリ106は、1次ランダム・ア
クセス・メモリ(RAM)並びに2次メモリ、一般的に
一つ以上の磁気または光ディスクを含む。メモリ106
は、オペレーティング・システム110、プログラム・
モジュールまたはオブジェクト信憑性ベリファイア11
2、及び、プログラム・モジュールまたはアプリケーシ
ョン・プログラム・モジュールとも呼ばれる、一組のア
プリケーション・プログラム・オブジェクト・インスタ
ンス生成114、116、118、120を記憶する。
【0017】図1に示すように、本発明の好ましい実施
例では、各アプリケーション・プログラム・オブジェク
ト・インスタンス生成は、オブジェクト・ヘッダ12
2、少なくとも一つのディジタル署名124、少なくと
も一つの組込み型パブリック(公開)暗号キー126及
び(方法としばしば呼ばれる)主アプリケーション手順
128を含む。各方法または手順128は、少なくとも
一つのベリファイア手順呼出し命令130、及び手順の
実行を中止するための命令のような、ベリファイア手順
呼出しに応じて受け取った検証否認メッセージに応答す
るための命令132を含む。第1のプログラム・モジュ
ールの主アプリケーションA手順(128−A)は、第
2の手順モジュールの実行可能手順(例えば、主アプリ
ケーションB手順128−B)への手順呼出し134を
更に含む。プログラム・モジュール・ベリファイアへの
手順呼出し130−Aは、第2のプログラム・モジュー
ルへの手順呼出し134の実行より前に実行されるよう
に第1のプログラム・モジュールに論理的に配置され
る。
【0018】プログラム・モジュール・ベリファイアへ
の手順呼出し130−Bは、各そのような手順128−
Bの実行より前に実行されるように第2のプログラム・
モジュールの各実行可能手順128−Bへのエントリ点
の直後に第2のプログラム・モジュールに論理的に配置
される。より一般的に、本発明の他の実施例では、プロ
グラム・モジュール・ベリファイアへの手順呼出し13
0−Bは、呼出しプログラムの検証がベリファイアによ
って否認されるならば各そのような手順の実行の終了を
防止するように第2のプログラム・モジュールの各実行
可能手順における終了点より前に第2のプログラム・モ
ジュールに(より一般的には、他のプログラム・モジュ
ールによって呼出される全てのプログラム・モジュール
に)論理的に配置される。
【0019】本発明の好ましい実施例では、特定のトッ
プ・レベル・アプリケーションまたはトップ・レベル・
アプリケーションのスーツによって使用される全ての手
順のような、指定されたグループの全ての手順は、同じ
組込み型パブリック・キー126を有しかつ全ては、同
じプライベート暗号キーを用いて、例えば、RSA暗号
方法を用いてディジタル的に署名される。しかしなが
ら、代替実施例では、異なる手順及び手順のサブグルー
プは、異なるプライベート・キーで署名される。代替実
施例では、手順呼出しを含む手順モジュールは、それら
が呼出すことができる手順の検証のためのパブリック・
キーを組込み、かつ他の手順によって呼出すことができ
る全ての手順モジュールは、呼出し手順の検証のための
パブリック・キーを含む。
【0020】図2は、一般の手順呼出しが本発明の好ま
しい実施例を用いてどのように実行されるかを示す“時
間線”表現である。図2では、早期事象(ealier event
s) は、後期事象(later events)よりも高い垂直位置に
示される。図3及び図4は、手順呼出しの性能に含まれ
る段階のフローチャートである。図2、図3及び図4を
参照すると、プログラム・モジュールAの実行可能手順
(例えば、図1の“主アプリケーションA手順”128
−A)は、実行を開始する(ステップ200)。この説
明の目的のために、実行されているプログラム・モジュ
ールAの手順は、“手順A”と呼ばれかつそれがプログ
ラム・モジュールBで呼出すことを試みている手順は、
“手順B”と呼ばれる。プログラム・モジュールBの実
行可能手順への手順呼出しを行う前に(ステップ22
0)、手順Aは、プログラム・モジュールBの信憑性の
検証を要求するためにベリファイアへの手順呼出しを行
う(ステップ202)。次いでベリファイアは、プログ
ラム・モジュールBの信憑性を確認することを試み、か
つプログラム・モジュールBの検証が成功したか否かを
示すために手順Aへリターン値を送る(ステップ20
4)。
【0021】より特定的には、明確な信用オブジェクト
(または代替的に信用システム・サービス手順)である
のが好ましい、ベリファイアは、手順Aから要求メッセ
ージを受け取り(ステップ206)、かつ呼出し手順
(即ち、手順A)によって供給されるパブリック・キー
を用いてプログラム・モジュールBに組込まれたディジ
タル署名を復号する(ステップ208)。ベリファイア
への手順Aを呼出すことによって供給されたパブリック
・キーは、プログラム・モジュールAに組込まれた“グ
ループ”パブリック・キー126−Aである。好ましい
実施例では、プログラム・モジュールのディジタル署名
は、プログラム・モジュールのメッセージ・ダイジェス
トを計算し、メッセージ・ダイジェストを生成するため
に用いられるハッシュ関数の型を示すためにハッシュ関
数識別子でメッセージ・ダイジェストを補足し、RSA
暗号方法を用いてプライベート・キーで合成値を暗号化
し、そしてプログラム・モジュールのソース(即ち、オ
ーサまたはディストリビュータ)のクリア・テキスト識
別子でその暗号化された値を補足することによって生成
される:
【0022】 MDB = HashFunction(Program Module B) Digital SignatureB = Encrypt( MDB + HashFunction
ID, PrivateKey)+ ClearText ID of Program Module
B's Source 従って、プログラム・モジュールBのディジタル署名を
復号するために、ベリファイアは、(A)ディジタル署
名からクリア・テキストIDを除去し、そして(B)署
名ベース・メッセージ・ダイジェストDS−MDB 及び
ハッシュ関数IDを生成するためにパブリック・キーで
ディジタル署名の残っている部分を復号する。
【0023】DS- MDB + HashFunction ID= Decode( Di
gital SignatureB - ClearText ID, PublicKey) 次に、ベリファイアは、復号されたディジタル署名で識
別されたハッシュ関数を用いてプログラム・モジュール
B(ステップ210)の少なくとも一部分のメッセージ
・ダイジェストMDB を計算する。メッセージ・ダイジ
ェストを生成するために用いられるハッシュ関数は、一
般に、非常に高い確率で別個のプログラム・モジュール
に対して別個の値を生成することが知られている、CR
C復号関数のような、関数である。メッセージ・ダイジ
ェストを生成するために適する多くのハッシュ関数は、
当業者に知られている。
【0024】ベリファイアは、次いで、計算されたメッ
セージ・ダイジェストMDB を復号されたディジタル署
名のメッセージ・ダイジェストDS−MDB と比較し
(ステップ212)かつ二つのメッセージ・ダイジェス
トがマッチしたならば検証確認メッセージを呼出し手順
へリターンし(ステップ214)、二つのメッセージ・
ダイジェストがマッチしないならば検証否認メッセージ
をリターンする(ステップ216)。一つの好ましい実
施例では、各プログラム・モジュールに対して単一のデ
ィジタル署名が存在し、かつ関連メッセージ・ダイジェ
ストは、プログラム・モジュールの内容全体のハッシュ
関数を用いて計算される。他の実施例では、メッセージ
・ダイジェストは、プログラム・モジュールの一部分だ
けに基づきうる。例えば、第2の好ましい実施例では、
各プログラム・モジュールは、二つのディジタル署名、
即ち、プログラム・モジュールの方法部分に対して一
つ、プログラム・モジュールのデータ部分(もしあれ
ば)に対して別のものを有する。プログラム・モジュー
ルが二つのディジタル署名を有するときには、二つのデ
ィジタル署名を復号することによって導出されたメッセ
ージ・ダイジェストの両方は、ベリファイアが検証確認
メッセージをリターンするためにベリファイアによって
計算された対応メッセージ・ダイジェストにマッチしな
ければならない。いずれかの復号されたディジタル署名
のメッセージ・ダイジェストがベリファイアによって計
算された対応メッセージ・ダイジェストにマッチしない
ならば、ベリファイアは、検証否認メッセージをリター
ンする。
【0025】ベリファイアがプログラム・モジュールB
の検証を否認するならば(ステップ216)、手順A
は、“例外を投入し”そして中止する(ステップ21
8)。例外を投入することは、一般に実行の関連スレッ
ドを終了させて、更に実行の呼出しスレッドに、呼出さ
れた手順(即ち、この場合には手順A)の故障(失敗)
を解析するかさもなくばそれに応答する機会を与えるよ
うに例外ハンドラー手順を実行の呼出しスレッドによっ
て実行させる。一般に、ベリファイアは、一つのコンピ
ュータから別のものへの導入または送信の間中、または
故意に不正変更されたように、プログラム・モジュール
が破損されたときにのみプログラム・モジュールの検証
を否認する。通常のオペレーションでは、検証否認は、
異常な事象であるべきである。
【0026】ベリファイアがプログラム・モジュールB
の検証を確認したならば(ステップ214)、手順A
は、プログラム・モジュールBにおける手順Bへの手順
呼出しを行うことを進める(ステップ220)。好まし
い実施例では、手順呼出しを受け取ることにより手順B
が行う一番最初の事の一つは、ベリファイアへの手順呼
出しを行うことであり(ステップ222)、呼出しプロ
グラム・モジュール(即ち、この場合にはプログラム・
モジュールA)の信憑性を確認するための要求をそれに
送る。次いで、ベリファイアは、プログラム・モジュー
ルAの信憑性を確認することを試みかつプログラム・モ
ジュールAの検証が成功であったか否かを示すために手
順Bへリターン値を送る(ステップ230)。
【0027】より特定的には、ベリファイアは、手順B
から要求メッセージを受け取り(ステップ232)、か
つ手順Bによって供給されたパブリック・キーを用いて
プログラム・モジュールAに組込まれたディジタル署名
を復号し(ステップ234)。ベリファイアへ手順Bに
よって供給されたパブリック・キーは、プログラム・モ
ジュールBに組込まれた“グループ”パブリック・キー
126−Bである。上述したように、プログラム・モジ
ュールAのディジタル署名は、プログラム・モジュール
Aのメッセージ・ダイジェストを計算し、メッセージ・
ダイジェストを生成するために用いられたハッシュ関数
の型を示すためにメッセージ・ダイジェストをハッシュ
関数識別子で補足し、RSA暗号化方法を用いて合成値
をプライベート・キーで暗号化し、そしてその暗号化さ
れた値をプログラム・モジュールのソース(即ち、オー
サまたはディストリビュータ)のクリア・テキスト識別
子で補足することによって生成される:
【0028】 MDA = HashFunction(Program Module A) Digital SignatureA = Encrypt( MDA + HashFunction
ID, PrivateKey)+ ClearText ID of Program Module
A's Source 従って、プログラム・モジュールAのディジタル署名を
復号するために、ベリファイアは、(A)ディジタル署
名からクリア・テキストIDを除去し、そして(B)署
名ベース・メッセージ・ダイジェストDS−MDA 及び
ハッシュ関数IDを生成するためにパブリック・キーで
ディジタル署名の残っている部分を復号する。
【0029】DS- MDA + HashFunction ID= Decode( Di
gital SignatureA - ClearText ID, PublicKey) 次に、ベリファイアは、復号されたディジタル署名で識
別されたハッシュ関数を用いてプログラム・モジュール
A(ステップ236)の少なくとも一部分のメッセージ
・ダイジェストMDA を計算する。ベリファイアは、次
いで、計算されたメッセージ・ダイジェストMDA を復
号されたディジタル署名のメッセージ・ダイジェストD
S−MDA と比較し(ステップ238)かつ二つのメッ
セージ・ダイジェストがマッチしたならば検証確認メッ
セージを呼出し手順へリターンし(ステップ240)、
二つのメッセージ・ダイジェストがマッチしないならば
検証否認メッセージをリターンする(ステップ24
2)。ベリファイアがプログラム・モジュールAの検証
を否認するならば(ステップ216)、手順Bは、“例
外を投入し”そして中止する(ステップ244)。ベリ
ファイアがプログラム・モジュールAの検証を確認した
ならば(ステップ240)、手順Bは、終了するために
実行され(ステップ250)かつ手順Bを実行すること
によって生成された結果は、手順Aにリターンされる
(ステップ252)。そして、手順Aは、手順Bから受
け取った結果を用いてその実行を終了する(ステップ2
54)。
【0030】代替実施例 ある代替実施例では、一群のプログラム・モジュールの
プログラム・モジュールの一部分だけが“感知可能な”
アルゴリズムまたはさもなくば他のプログラム・モジュ
ールよりも確証するためにどちらがより重要であるかを
含む。例えば、第1の代替実施例では、一組のプログラ
ム・モジュール(以下、“プログラム・モジュールのフ
ル・セット”と呼ぶ)のディストリビュータは、グルー
プの少ない数のプログラム・モジュール(以下、“プロ
グラム・モジュールの限定サブセット”と呼ぶ)がグル
ープの他のプログラム・モジュールでのみ用いられるこ
とを確実にすることを欲するが、しかしグループ以外の
プログラム・モジュールでも、残っているプログラム・
モジュールをランセンス取得者により自由に用いらせる
ことを欲する。この実施例では、プログラム・モジュー
ルの限定セットだけが、それらのプログラム・モジュー
ルのエントリ点の直後に論理的に配置された、ベリファ
イア・モジュールへの手順呼出しを含む。これらのベリ
ファイアへのエントリ点手順呼出しは、呼出しプログラ
ム・モジュールの信憑性を確認するために用いられ、か
つ呼出しプログラム・モジュールが確証されたグループ
の一部分であるという検証により、呼出されたプログラ
ム・モジュールは、呼出しプログラム・モジュールによ
って要求された計算を実行する。
【0031】第2の実施例では、一組のプログラム手順
のディストリビュータは、一組の“限定プログラム・モ
ジュール”の使用を限定することを考慮せず、かつ限定
プログラム・モジュールのサービスを用いることを試み
ている全ての呼出し手順が、事実、限定プログラム・モ
ジュールの確証版のサービスを得るということを代わり
に考慮する。この実施例では、限定プログラム・モジュ
ールへの手順呼出しを行っている全ての手順は、限定プ
ログラム・モジュールへの手順呼出しの直前に論理的に
配置されたベリファイア・モジュールへの手順呼出しを
含む。これらのベリファイア手順呼出しは、限定プログ
ラム・モジュールの信憑性を確認するために用いられ
る。しかしながら、この実施例では、限定プログラム・
モジュールの手順は、呼出しプログラム・モジュールを
確証するためのベリファイア手順呼出しを含んでいな
い。呼出されるべき限定プログラム・モジュールが信用
できるという検証により、呼出しプログラム・モジュー
ルは、確証された限定プログラム・モジュールへその手
順呼出しを送る。
【0032】本発明は、2〜3の特定実施例を参照して
説明されたが、その記載は、本発明の説明のためであ
り、本発明を限定することを意図しない。特許請求の範
囲によって画定された本発明の真の精神及び範疇から逸
脱することなく当業者によって種々の変更が生起されう
る。
【0033】
【発明の効果】本発明のコンピュータ・システムは、
(A)指定されたプログラム・モジュールの信憑性を確
認することによってかつ各そのような手順呼出しに応じ
て検証確認または否認をリターンすることによってプロ
グラム・モジュール・ベリファイアへの手順呼出しに応
答するように構成されるプログラム・モジュール・ベリ
ファイアと、(B)第1のプログラム・モジュールと、
(C)第2のプログラム・モジュールとを備え、第1及
び第2のプログラム・モジュールの一つは、当該第1及
び第2のプログラム・モジュールへの手順呼出しを含
み、第1及び第2のプログラム・モジュールの少なくと
も一つは、該第1及び第2のプログラム・モジュールの
他のもの信憑性を確認するためのプログラム・モジュー
ル・ベリファイアへの手順呼出しと、プログラム・モジ
ュール・ベリファイアへの手順呼出しがプログラム・モ
ジュール・ベリファイアによってリターンされる検証否
認を結果として生ずるときに一つのプログラム・モジュ
ールの実行を中止する命令とを含んでいるので、動的に
リンク可能なモジュールの使用を制限し或いは防止する
ことができる。
【0034】本発明の方法は、プログラム・モジュール
をリンクする方法であって、(A)第1のプログラム・
モジュールから第2のプログラム・モジュールへの手順
呼出しを行うより前に、第2のプログラム・モジュール
の信憑性を確認し;(B)第2のプログラム・モジュー
ルの信憑性を確認することにより、第1のプログラム・
モジュールから第2のプログラム・モジュールへの手順
呼出しを行い;かつ(C)第1のプログラム・モジュー
ルの信憑性を確認することに失敗することにより、第1
のプログラム・モジュールから第2のプログラム・モジ
ュールへの手順呼出しを防ぐ段階を具備するので、動的
にリンク可能なモジュールの使用を制限し或いは防止す
ることができる。
【図面の簡単な説明】
【図1】本発明を組み込んでいるコンピュータ・システ
ムのブロック図である。
【図2】本発明の好ましい実施例を用いて一般的な手順
呼出しが実行される方法を示している“タイム・ライ
ン”表現である。
【図3】互いの信憑性を確認するために二つのリンクさ
れたソフトウェア・モジュールに対して好ましい実施例
で用いられる方法のフローチャートの一部分である。
【図4】図3に示した方法の他の部分を示すフローチャ
ートである。
【符号の説明】
100 コンピュータ・システム 102 CPU 104 ユーザ・インターフェイス 106 メモリ 110 オペレーティング・システム 112 オブジェクト信憑性ベリファイア 114、116 アプリケーション・プログラム・モジ
ュール 118、120 アプリケーション・プログラム・モジ
ュール 122−A、122−B オブジェクト・ヘッダ 124−A、124−B ディジタル署名 126−A、126−B パブリック暗号キー 128−A、128−B 主アプリケーション手順 130−A、130−B ベリファイア手順呼出し命令 132−A、132−B 検証否認メッセージに応答す
るための命令 134 第2の手順モジュールの実行可能手順への手順
呼出し

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 (A)指定されたプログラム・モジュー
    ルの信憑性を確認することによってかつ各そのような手
    順呼出しに応じて検証確認または否認をリターンするこ
    とによってプログラム・モジュール・ベリファイアへの
    手順呼出しに応答するように構成されるプログラム・モ
    ジュール・ベリファイアと、 (B)第1のプログラム・モジュールと、 (C)第2のプログラム・モジュールとを備え、 前記第1及び第2のプログラム・モジュールの一つは、
    当該第1及び第2のプログラム・モジュールへの手順呼
    出しを含み、 前記第1及び第2のプログラム・モジュールの少なくと
    も一つは、 該第1及び第2のプログラム・モジュールの他のもの信
    憑性を確認するための前記プログラム・モジュール・ベ
    リファイアへの手順呼出しと、 前記プログラム・モジュール・ベリファイアへの前記手
    順呼出しが前記プログラム・モジュール・ベリファイア
    によってリターンされる検証否認を結果として生ずると
    きに前記一つのプログラム・モジュールの実行を中止す
    る命令とを含んでいることを特徴とするコンピュータ・
    システム。
  2. 【請求項2】 前記第1のプログラム・モジュールは、
    第1のディジタル署名及び第1の実行可能手順を含み、 前記第2のプログラム・モジュールは、第2のディジタ
    ル署名及び第2の実行可能手順を含み、 前記プログラム・ベリファイア・モジュールは、(A
    1)前記指定されたプログラム・モジュールの前記ディ
    ジタル署名を対応復号キーで復号し、(A2)所定のメ
    ッセージ・ダイジェスト関数に従って前記指定されたプ
    ログラム・モジュールの少なくとも一部分のメッセージ
    ・ダイジェストを生成し、(A3)前記復号されたディ
    ジタル署名が前記メッセージ・ダイジェストにマッチす
    るときに検証確認をリターンし、(A4)前記復号され
    たディジタル署名が前記メッセージ・ダイジェストにマ
    ッチしないときに検証否認をリターンすることによっ
    て、前記第1及び第2のプログラム・モジュールの指定
    されたものの検証を要求している手順呼出しに応答する
    ための命令を含むことを特徴とする請求項1に記載のコ
    ンピュータ・システム。
  3. 【請求項3】 前記第1のプログラム・モジュールは、
    前記第2のプログラム・モジュールへの手順呼出しを含
    んでおり;前記第2のプログラム・モジュールは、 (C1)前記第2のプログラム・モジュールへの前記手
    順呼出しに応答して実行されるべき実行可能手順; (C2)前記実行可能手順の実行より前に実行されるよ
    うに前記第2のプログラム・モジュールに論理的に配置
    される前記プログラム・モジュール・ベリファイアへの
    手順呼出し;及び (C3)前記プログラム・モジュール・ベリファイアへ
    の前記手順呼出しが前記プログラム・モジュール・ベリ
    ファイアによってリターンされる確認否認を結果として
    生ずるときに前記実行可能手順の実行を防ぐ命令を含ん
    でいることを特徴とする請求項1に記載のコンピュータ
    ・システム。
  4. 【請求項4】 前記第2の実行可能手順の実行の終了を
    防ぐ前記命令は、前記プログラム・モジュール・ベリフ
    ァイアへの前記手順呼出しが、前記プログラム・モジュ
    ール・ベリファイアによってリターンされる確認否認を
    結果として生ずるときに前記第2のプログラム・モジュ
    ールの実行を中止する命令を含むことを特徴とする請求
    項3に記載のコンピュータ・システム。
  5. 【請求項5】 前記第1のプログラム・モジュールは、 前記第2のプログラム・モジュールへの手順呼出し;前
    記第2のプログラム・モジュールへの前記手順呼出しの
    実行より前に実行されるように前記第1のプログラム・
    モジュールに論理的に配置される前記プログラム・モジ
    ュール・ベリファイアへの手順呼出し;及び前記プログ
    ラム・モジュール・ベリファイアへの前記手順呼出しが
    前記プログラム・モジュール・ベリファイアによってリ
    ターンされる確認否認を結果として生ずるときに前記第
    2のプログラム・モジュールへの前記手順呼出しの実行
    を防ぐ命令を含んでいることを特徴とする請求項1、
    2、3または4に記載のコンピュータ・システム。
  6. 【請求項6】 プログラム・モジュールをリンクする方
    法であって、 (A)第1のプログラム・モジュールから第2のプログ
    ラム・モジュールへの手順呼出しを行うより前に、前記
    第2のプログラム・モジュールの信憑性を確認し; (B)前記第2のプログラム・モジュールの信憑性を確
    認することにより、第1のプログラム・モジュールから
    第2のプログラム・モジュールへの手順呼出しを行い;
    かつ (C)前記第1のプログラム・モジュールの信憑性を確
    認することに失敗することにより、第1のプログラム・
    モジュールから第2のプログラム・モジュールへの手順
    呼出しを防ぐ段階を具備することを特徴とする方法。
  7. 【請求項7】 (D)前記第1のプログラム・モジュー
    ルにより前記手順呼出しに応じて前記第2のプログラム
    ・モジュールにおいて手順を事項することを終了するよ
    り前に、前記第1のプログラム・モジュールの信憑性を
    確認し; (E)前記第1のプログラム・モジュールの信憑性を確
    認することにより、結果を生成するために前記第2のプ
    ログラム・モジュールにおいて前記手順を実行すること
    を終了しかつ前記結果を前記第1のプログラム手順にリ
    ターンし;かつ (F)前記第1のプログラム・モジュールの信憑性を確
    認することに失敗することにより、前記第2のプログラ
    ム・モジュールにおける前記手順の実行の終了を防ぐ段
    階を更に具備することを特徴とする請求項6に記載の方
    法。
  8. 【請求項8】 前記段階(D)は、対応するデコーディ
    ング・キーで前記第1のプログラム・モジュールにおけ
    る前記第1のディジタル署名をデコードし、前記所定の
    メッセージ・タイジェスト機能に従って前記第1のプロ
    グラム・モジュールの少なくとも一部のメッセージ・ダ
    イジェストを生成し、前記デコードされたディジタル署
    名が前記メッセージ・ダイジェストに一致するときに前
    記第1のプログラム・モジュールの信憑性を確認し、か
    つ前記デコードされたディジタル署名が前記メッセージ
    ・ダイジェストに一致しないときに前記第1のプログラ
    ム・モジュールの信憑性の確認を否認することを含んで
    いることを特徴とする請求項7に記載の方法。
  9. 【請求項9】 前記段階(C)は、前記第1のプログラ
    ム・モジュールの実行を中止することを含むことを特徴
    とする請求項6、7または8に記載の方法。
  10. 【請求項10】 前記第1のプログラム・モジュール
    は、第1のディジタル署名を含みかつ前記第2のプログ
    ラム・モジュールは、第2のディジタル署名を含み;前
    記段階(A)は、対応するデコーディング・キーで前記
    第2のプログラム・モジュールにおける前記第2のディ
    ジタル署名をデコードし、前記所定のメッセージ・タイ
    ジェスト機能に従って前記第2のプログラム・モジュー
    ルの少なくとも一部のメッセージ・ダイジェストを生成
    し、前記デコードされたディジタル署名が前記メッセー
    ジ・ダイジェストに一致するときに前記第2のプログラ
    ム・モジュールの信憑性を確認し、かつ前記デコードさ
    れたディジタル署名が前記メッセージ・ダイジェストに
    一致しないときに前記第2のプログラム・モジュールの
    信憑性の確認を否認することを含んでいることを特徴と
    する請求項6、7または8に記載の方法。
  11. 【請求項11】 前記段階(A)は、前記第2のプログ
    ラム・モジュールの信憑性を確認することによりかつ前
    記手順呼出しに応じて確認認証または否認をリターンす
    ることによって前記手順呼出しに応答している信用プロ
    グラム・モジュール・ベリファイアへの手順呼出しを行
    うことを含んでいることを特徴とする請求項6、7また
    は8に記載の方法。
JP27920796A 1995-10-26 1996-10-22 動的にリンクされた実行可能モジュールの使用を保護するシステム及び方法 Expired - Lifetime JP3982857B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/547720 1995-10-26
US08/547,720 US5757914A (en) 1995-10-26 1995-10-26 System and method for protecting use of dynamically linked executable modules

Publications (2)

Publication Number Publication Date
JPH09231068A true JPH09231068A (ja) 1997-09-05
JP3982857B2 JP3982857B2 (ja) 2007-09-26

Family

ID=24185862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27920796A Expired - Lifetime JP3982857B2 (ja) 1995-10-26 1996-10-22 動的にリンクされた実行可能モジュールの使用を保護するシステム及び方法

Country Status (6)

Country Link
US (3) US5757914A (ja)
EP (1) EP0770957A3 (ja)
JP (1) JP3982857B2 (ja)
KR (1) KR100417443B1 (ja)
CN (1) CN1130648C (ja)
TW (1) TW378304B (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11110193A (ja) * 1997-09-30 1999-04-23 Toshiba Corp コンピュータシステム及び同システムに適用するライブラリのリンク方法
WO2000042498A1 (fr) * 1999-01-13 2000-07-20 Hitachi, Ltd. Procede et systeme permettant d'executer un code mobile
JP2002509313A (ja) * 1998-01-16 2002-03-26 メディアドナ、インコーポレイテッド ピアコンポーネントを認証するためのシステムおよび方法
JP2003510684A (ja) * 1999-09-20 2003-03-18 ギーゼッケ ウント デフリエント ゲーエムベーハー プログラム実行を保護するための方法
JP2003518692A (ja) * 1999-12-27 2003-06-10 ノキア コーポレイション プログラム・モジュール・バインディング方法
JP2004509392A (ja) * 2000-09-08 2004-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェアのセキュア認証済チャネル
JP2005115933A (ja) * 2003-09-19 2005-04-28 Fuji Electric Systems Co Ltd 電子署名装置、方法、及びそのプログラム
JP2006501735A (ja) * 2002-10-04 2006-01-12 カナル プラス テクノロジーズ 同一のものを認証するための統合ソフトウェア及び方法
JP2008532113A (ja) * 2005-02-11 2008-08-14 シンプレックス メジャー センドリアン ベルハッド ソフトウェア保護方法
JP2008547111A (ja) * 2005-06-27 2008-12-25 マイクロソフト コーポレーション アクティブ・コンテンツ信頼モデル
JP2009151805A (ja) * 2003-08-26 2009-07-09 Panasonic Corp 情報処理装置、セキュア処理方法、コンピュータプログラム及び記録媒体。
US7610632B2 (en) 2004-03-25 2009-10-27 Nec Corporation Software use permission method and system
JP2013012217A (ja) * 2005-02-02 2013-01-17 Insyde Software Corp ファームウェアに安全なアップデートを提供するシステム及び方法
JP2016038916A (ja) * 2014-08-07 2016-03-22 キヤノンマーケティングジャパン株式会社 アプリケーションサーバ、認証システム、認証サーバと、その処理方法及びプログラム

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120166807A1 (en) 1996-08-12 2012-06-28 Intertrust Technologies Corp. Systems and Methods Using Cryptography to Protect Secure Computing Environments
US7095854B1 (en) * 1995-02-13 2006-08-22 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
CN1912885B (zh) 1995-02-13 2010-12-22 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US6948070B1 (en) * 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
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
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
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
US7133845B1 (en) * 1995-02-13 2006-11-07 Intertrust Technologies Corp. System and methods for secure transaction management and electronic rights protection
US6389483B1 (en) 1995-10-17 2002-05-14 Telefonaktiebolaget L M Ericsson (Publ) System and method for reducing coupling between modules in a telecommunications environment
US5757914A (en) 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
US6067639A (en) * 1995-11-09 2000-05-23 Microsoft Corporation Method for integrating automated software testing with software development
US20010011253A1 (en) * 1998-08-04 2001-08-02 Christopher D. Coley Automated system for management of licensed software
US6085320A (en) * 1996-05-15 2000-07-04 Rsa Security Inc. Client/server protocol for proving authenticity
US5937187A (en) * 1996-07-01 1999-08-10 Sun Microsystems, Inc. Method and apparatus for execution and preemption control of computer process entities
US7590853B1 (en) 1996-08-12 2009-09-15 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
US5920861A (en) 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
DE19716015A1 (de) * 1997-04-17 1998-10-29 Ibm Einbringen von Information auf einer Chipkarte
US5987608A (en) * 1997-05-13 1999-11-16 Netscape Communications Corporation Java security mechanism
US7290288B2 (en) 1997-06-11 2007-10-30 Prism Technologies, L.L.C. Method and system for controlling access, by an authentication server, to protected computer resources provided via an internet protocol network
US6272631B1 (en) * 1997-06-30 2001-08-07 Microsoft Corporation Protected storage of core data secrets
JPH1131105A (ja) * 1997-07-10 1999-02-02 Fuji Xerox Co Ltd データカプセル生成装置および方法
US6000032A (en) * 1997-07-15 1999-12-07 Symantec Corporation Secure access to software modules
US6188995B1 (en) 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
US6009524A (en) * 1997-08-29 1999-12-28 Compact Computer Corp Method for the secure remote flashing of a BIOS memory
US6397331B1 (en) * 1997-09-16 2002-05-28 Safenet, Inc. Method for expanding secure kernel program memory
US7092914B1 (en) * 1997-11-06 2006-08-15 Intertrust Technologies Corporation Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6112181A (en) 1997-11-06 2000-08-29 Intertrust Technologies Corporation Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
IL122314A (en) * 1997-11-27 2001-03-19 Security 7 Software Ltd Method and system for enforcing a communication security policy
US6311274B1 (en) * 1997-12-15 2001-10-30 Intel Corporation Network alert handling system and method
US6233687B1 (en) * 1998-01-21 2001-05-15 Nortel Networks Limited Method and apparatus for providing configuration information in a network
US7268700B1 (en) 1998-01-27 2007-09-11 Hoffberg Steven M Mobile communication device
US6173404B1 (en) * 1998-02-24 2001-01-09 Microsoft Corporation Software object security mechanism
US6532451B1 (en) * 1998-03-23 2003-03-11 Novell, Inc. Nested strong loader apparatus and method
US6701433B1 (en) 1998-03-23 2004-03-02 Novell, Inc. Method and apparatus for escrowing properties used for accessing executable modules
US6615350B1 (en) * 1998-03-23 2003-09-02 Novell, Inc. Module authentication and binding library extensions
US6751735B1 (en) 1998-03-23 2004-06-15 Novell, Inc. Apparatus for control of cryptography implementations in third party applications
US7236610B1 (en) * 1998-04-30 2007-06-26 Fraunhofer Gesellschaft Authenticating executable code and executions thereof
US6341351B1 (en) * 1998-05-07 2002-01-22 Banctec, Inc. Method for communicating and controlling transactions between unsecured parties
US6256393B1 (en) * 1998-06-23 2001-07-03 General Instrument Corporation Authorization and access control of software object residing in set-top terminals
US6105137A (en) * 1998-07-02 2000-08-15 Intel Corporation Method and apparatus for integrity verification, authentication, and secure linkage of software modules
US6735696B1 (en) * 1998-08-14 2004-05-11 Intel Corporation Digital content protection using a secure booting method and apparatus
US6343280B2 (en) * 1998-12-15 2002-01-29 Jonathan Clark Distributed execution software license server
CA2292041A1 (en) * 1998-12-22 2000-06-22 Scott Alan Thomson Software program protection mechanism
US6802006B1 (en) * 1999-01-15 2004-10-05 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US7650504B2 (en) * 1999-07-22 2010-01-19 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US6779117B1 (en) 1999-07-23 2004-08-17 Cybersoft, Inc. Authentication program for a computer operating system
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
WO2001009702A2 (en) 1999-07-30 2001-02-08 Intertrust Technologies Corp. Methods and systems for transaction record delivery using thresholds and multi-stage protocol
US7086584B2 (en) * 1999-08-09 2006-08-08 First Data Corporation Systems and methods for configuring a point-of-sale system
US7406603B1 (en) 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
US6985885B1 (en) 1999-09-21 2006-01-10 Intertrust Technologies Corp. Systems and methods for pricing and selling digital goods
US6748538B1 (en) * 1999-11-03 2004-06-08 Intel Corporation Integrity scanner
AU7623600A (en) * 1999-11-16 2001-05-30 Intel Corporation A method of providing secure linkage of program modules
US6880083B1 (en) * 1999-12-31 2005-04-12 Intel Corporation Method and apparatus for creating and executing secure scripts
US6789199B1 (en) * 2000-02-08 2004-09-07 International Business Machines Corporation Tamper resistance with pseudo-random binary sequence program interlocks
US7284124B1 (en) * 2000-06-05 2007-10-16 Microsoft Corporation Trust level based platform access regulation application
US6816984B1 (en) * 2000-06-23 2004-11-09 Microsoft Corporation Method and system for verifying and storing documents during a program failure
US7051200B1 (en) 2000-06-27 2006-05-23 Microsoft Corporation System and method for interfacing a software process to secure repositories
US6889378B2 (en) 2000-07-24 2005-05-03 Sony Corporation Information processing method, inter-task communication method, and computer-executable program for the same
US6683629B1 (en) * 2000-08-03 2004-01-27 Neoplanet, Inc. Method in a computer system for embedding a child window in a parent window
JP3712366B2 (ja) * 2000-08-15 2005-11-02 株式会社ソニー・コンピュータエンタテインメント 情報処理システム、実行可能モジュール生成方法および記憶媒体
US6971023B1 (en) * 2000-10-03 2005-11-29 Mcafee, Inc. Authorizing an additional computer program module for use with a core computer program
US20020087876A1 (en) * 2000-12-28 2002-07-04 Larose Gordon Edward Adaptive software installation process supporting multiple layers of security-related attributes
JP2002244989A (ja) * 2001-02-20 2002-08-30 Nec Corp デバイスドライバ作動方法
WO2002079955A2 (en) 2001-03-28 2002-10-10 Nds Limited Digital rights management system and method
IL142487A0 (en) * 2001-04-05 2003-09-17 Hexalock Ltd Method and system for protecting data
WO2002084496A1 (en) * 2001-04-16 2002-10-24 Sunncomm, Inc. Apparatus and method for authentication of computer-readable medium
US7581103B2 (en) 2001-06-13 2009-08-25 Intertrust Technologies Corporation Software self-checking systems and methods
US7234061B1 (en) * 2001-06-29 2007-06-19 Cisco Technology, Inc. Methods and apparatus for verifying modules from approved vendors
US7366911B2 (en) * 2001-12-11 2008-04-29 Lucent Technologies Inc. Methods and apparatus for computationally-efficient generation of secure digital signatures
US7496757B2 (en) * 2002-01-14 2009-02-24 International Business Machines Corporation Software verification system, method and computer program element
US7680743B2 (en) * 2002-05-15 2010-03-16 Microsoft Corporation Software application protection by way of a digital rights management (DRM) system
IL149759A (en) * 2002-05-20 2009-07-20 Eyal Cohen Method and system for protecting digital media from illegal copying
FR2843465B1 (fr) * 2002-08-06 2005-07-01 Checkflow Procede de communication entre applications destine a securiser l'acces aux donnees d'une application
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
US7565551B2 (en) * 2003-02-19 2009-07-21 Microsoft Corporation Enhancing software integrity through installation and verification
US7350079B2 (en) * 2003-11-20 2008-03-25 International Business Machines Corporation Apparatus and method for inter-program authentication using dynamically-generated public/private key pairs
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US7568195B2 (en) 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7614051B2 (en) * 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US20050128520A1 (en) * 2003-12-16 2005-06-16 Jeff Glickman Digital signature protection for software
US7549148B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
US7500108B2 (en) * 2004-03-01 2009-03-03 Microsoft Corporation Metered execution of code
US7831838B2 (en) * 2004-03-05 2010-11-09 Microsoft Corporation Portion-level in-memory module authentication
JP2005268931A (ja) * 2004-03-16 2005-09-29 Matsushita Electric Ind Co Ltd 情報セキュリティ装置及び情報セキュリティシステム
US7644287B2 (en) * 2004-07-29 2010-01-05 Microsoft Corporation Portion-level in-memory module authentication
US7590589B2 (en) 2004-09-10 2009-09-15 Hoffberg Steven M Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference
US7779269B2 (en) * 2004-09-21 2010-08-17 Ciena Corporation Technique for preventing illegal invocation of software programs
KR100681696B1 (ko) * 2004-11-29 2007-02-15 주식회사 안철수연구소 컴퓨터 응용 프로그램의 메모리 데이터 조작 방지 방법
US7631198B2 (en) * 2005-05-10 2009-12-08 Seagate Technology Protocol scripting language for safe execution in embedded system
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
SE530662C2 (sv) * 2005-11-09 2008-08-05 Noll Och Ett Data Ab Förfarande och anordning
JP4537940B2 (ja) * 2005-11-21 2010-09-08 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、及びプログラム実行制御方法
US7845016B2 (en) * 2005-11-28 2010-11-30 Cisco Technology, Inc. Methods and apparatus for verifying modules from approved vendors
JP4783163B2 (ja) * 2006-01-19 2011-09-28 Okiセミコンダクタ株式会社 マイクロコントローラ
US8700902B2 (en) 2006-02-13 2014-04-15 At&T Intellectual Property I, L.P. Methods and apparatus to certify digital signatures
US8341747B2 (en) * 2006-08-08 2012-12-25 International Business Machines Corporation Method to provide a secure virtual machine launcher
US9389839B2 (en) * 2008-06-26 2016-07-12 Microsoft Technology Licensing, Llc Safe code for signature updates in an intrusion prevention system
US8769654B2 (en) * 2009-06-23 2014-07-01 Cisco Technology, Inc. Counterfeit prevention strategy for pluggable modules
US8776245B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Executing trusted applications with reduced trusted computing base
US20120331308A1 (en) * 2011-06-22 2012-12-27 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
JP7226831B2 (ja) * 2018-08-02 2023-02-21 Necソリューションイノベータ株式会社 ライセンス管理装置、プログラム実行装置及び方法、並びにアプリケーションプログラム
CN109688158B (zh) * 2019-01-23 2022-07-08 平安科技(深圳)有限公司 金融执行链认证方法、电子装置及存储介质
EP4396713A1 (en) * 2021-08-30 2024-07-10 Qualcomm Incorporated Functional safety software image integrity verifier
US11822647B1 (en) * 2022-03-01 2023-11-21 CSP Inc. Data structure for trust store
US11928205B1 (en) 2022-03-01 2024-03-12 CSP Inc. Systems and methods for implementing cybersecurity using blockchain validation

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4845715A (en) * 1984-10-29 1989-07-04 Francisco Michael H Method for maintaining data processing system securing
US5224160A (en) * 1987-02-23 1993-06-29 Siemens Nixdorf Informationssysteme Ag Process for securing and for checking the integrity of the secured programs
US4930073A (en) * 1987-06-26 1990-05-29 International Business Machines Corporation Method to prevent use of incorrect program version in a computer system
CA1337132C (en) * 1988-07-15 1995-09-26 Robert Filepp Reception system for an interactive computer network and method of operation
GB9010603D0 (en) * 1990-05-11 1990-07-04 Int Computers Ltd Access control in a distributed computer system
JPH04143881A (ja) * 1990-10-05 1992-05-18 Toshiba Corp 相互認証方式
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5235642A (en) * 1992-07-21 1993-08-10 Digital Equipment Corporation Access control subsystem and method for distributed computer system using locally cached authentication credentials
US5349642A (en) * 1992-11-03 1994-09-20 Novell, Inc. Method and apparatus for authentication of client server communication
US5542045A (en) * 1993-10-15 1996-07-30 Software Security, Inc. Method for interposing a security function in a computer program
US5343527A (en) * 1993-10-27 1994-08-30 International Business Machines Corporation Hybrid encryption method and system for protecting reusable software components
GB9422389D0 (en) * 1994-11-05 1995-01-04 Int Computers Ltd Authenticating access control for sensitive functions
US5742759A (en) * 1995-08-18 1998-04-21 Sun Microsystems, Inc. Method and system for facilitating access control to system resources in a distributed computer system
US5757914A (en) 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
US5737523A (en) * 1996-03-04 1998-04-07 Sun Microsystems, Inc. Methods and apparatus for providing dynamic network file system client authentication

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11110193A (ja) * 1997-09-30 1999-04-23 Toshiba Corp コンピュータシステム及び同システムに適用するライブラリのリンク方法
JP2002509313A (ja) * 1998-01-16 2002-03-26 メディアドナ、インコーポレイテッド ピアコンポーネントを認証するためのシステムおよび方法
WO2000042498A1 (fr) * 1999-01-13 2000-07-20 Hitachi, Ltd. Procede et systeme permettant d'executer un code mobile
JP3873624B2 (ja) * 1999-01-13 2007-01-24 株式会社日立製作所 モバイルコードの実行方法およびそのシステム
JP2003510684A (ja) * 1999-09-20 2003-03-18 ギーゼッケ ウント デフリエント ゲーエムベーハー プログラム実行を保護するための方法
JP4732651B2 (ja) * 1999-09-20 2011-07-27 ギーゼッケ ウント デフリエント ゲーエムベーハー プログラム実行を保護するための方法
JP2003518692A (ja) * 1999-12-27 2003-06-10 ノキア コーポレイション プログラム・モジュール・バインディング方法
JP2004509392A (ja) * 2000-09-08 2004-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェアのセキュア認証済チャネル
KR100973203B1 (ko) * 2002-10-04 2010-07-30 톰슨 라이센싱 내장된 소프트웨어 및 이를 인증하는 방법
JP2006501735A (ja) * 2002-10-04 2006-01-12 カナル プラス テクノロジーズ 同一のものを認証するための統合ソフトウェア及び方法
US9524404B2 (en) 2003-08-26 2016-12-20 Panasonic Intellectual Property Corporation Of America Program execution device
US10108821B2 (en) 2003-08-26 2018-10-23 Panasonic Intellectual Property Corporation Of America Program execution device
US12019789B2 (en) 2003-08-26 2024-06-25 Panasonic Holdings Corporation Program execution device
US11651113B2 (en) 2003-08-26 2023-05-16 Panasonic Holdings Corporation Program execution device
US10970424B2 (en) 2003-08-26 2021-04-06 Panasonic Intellectual Property Corporation Of America Program execution device
JP2011253558A (ja) * 2003-08-26 2011-12-15 Panasonic Corp 情報処理装置、セキュア処理方法、コンピュータプログラム及び記録媒体。
US10607036B2 (en) 2003-08-26 2020-03-31 Panasonic Intellectual Property Corporation Of America Program execution device
US10318768B2 (en) 2003-08-26 2019-06-11 Panasonic Intellectual Property Corporation Of America Program execution device
US8181040B2 (en) 2003-08-26 2012-05-15 Panasonic Corporation Program execution device
JP2009151805A (ja) * 2003-08-26 2009-07-09 Panasonic Corp 情報処理装置、セキュア処理方法、コンピュータプログラム及び記録媒体。
US8522053B2 (en) 2003-08-26 2013-08-27 Panasonic Corporation Program execution device
US8874938B2 (en) 2003-08-26 2014-10-28 Panasonic Intellectual Property Corporation Of America Program execution device
US9218485B2 (en) 2003-08-26 2015-12-22 Panasonic Intellectual Property Corporation Of America Program execution device
US9811691B2 (en) 2003-08-26 2017-11-07 Panasonic Intellectual Property Corporation Of America Program execution device
JP2005115933A (ja) * 2003-09-19 2005-04-28 Fuji Electric Systems Co Ltd 電子署名装置、方法、及びそのプログラム
US7610632B2 (en) 2004-03-25 2009-10-27 Nec Corporation Software use permission method and system
JP2013012217A (ja) * 2005-02-02 2013-01-17 Insyde Software Corp ファームウェアに安全なアップデートを提供するシステム及び方法
JP4922951B2 (ja) * 2005-02-11 2012-04-25 シンプレックス メジャー センドリアン ベルハッド ソフトウェア保護方法
US8161294B2 (en) 2005-02-11 2012-04-17 John Aram Safa Software protection method
JP2008532113A (ja) * 2005-02-11 2008-08-14 シンプレックス メジャー センドリアン ベルハッド ソフトウェア保護方法
JP2008547111A (ja) * 2005-06-27 2008-12-25 マイクロソフト コーポレーション アクティブ・コンテンツ信頼モデル
JP2016038916A (ja) * 2014-08-07 2016-03-22 キヤノンマーケティングジャパン株式会社 アプリケーションサーバ、認証システム、認証サーバと、その処理方法及びプログラム

Also Published As

Publication number Publication date
EP0770957A3 (en) 2000-03-15
TW378304B (en) 2000-01-01
US6546487B1 (en) 2003-04-08
US5757914A (en) 1998-05-26
US5970145A (en) 1999-10-19
CN1130648C (zh) 2003-12-10
CN1154515A (zh) 1997-07-16
EP0770957A2 (en) 1997-05-02
JP3982857B2 (ja) 2007-09-26
KR970022747A (ko) 1997-05-30
KR100417443B1 (ko) 2004-04-28

Similar Documents

Publication Publication Date Title
JP3982857B2 (ja) 動的にリンクされた実行可能モジュールの使用を保護するシステム及び方法
US7543336B2 (en) System and method for secure storage of data using public and private keys
JP4112033B2 (ja) 信頼されたソースからの検証不能プログラムを使用するための機能を有する検証可能プログラムを実行するシステム及び方法
US6327652B1 (en) Loading and identifying a digital rights management operating system
US6330670B1 (en) Digital rights management operating system
US6820063B1 (en) Controlling access to content based on certificates and access predicates
US7174457B1 (en) System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party
US7155743B2 (en) Method and system for controlling use of a dynamically linked software library
US6647495B1 (en) Information processing apparatus and method and recording medium
US7305553B2 (en) Manifest-based trusted agent management in a trusted operating system environment
US6067575A (en) System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs
US20030177371A1 (en) Method of secure function loading
US20050060549A1 (en) Controlling access to content based on certificates and access predicates
JPH1185622A (ja) コア・データ機密事項の保護記憶
US7721100B2 (en) Granting an access to a computer-based object

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060515

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060904

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061204

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070109

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070509

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070515

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070604

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070703

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100713

Year of fee payment: 3

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: 20110713

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110713

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130713

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term