JP4112033B2 - 信頼されたソースからの検証不能プログラムを使用するための機能を有する検証可能プログラムを実行するシステム及び方法 - Google Patents

信頼されたソースからの検証不能プログラムを使用するための機能を有する検証可能プログラムを実行するシステム及び方法 Download PDF

Info

Publication number
JP4112033B2
JP4112033B2 JP32889796A JP32889796A JP4112033B2 JP 4112033 B2 JP4112033 B2 JP 4112033B2 JP 32889796 A JP32889796 A JP 32889796A JP 32889796 A JP32889796 A JP 32889796A JP 4112033 B2 JP4112033 B2 JP 4112033B2
Authority
JP
Japan
Prior art keywords
program
object class
architecture
digital signature
message
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
Application number
JP32889796A
Other languages
English (en)
Other versions
JPH1011281A (ja
Inventor
イー マクマナス チャールズ
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 JPH1011281A publication Critical patent/JPH1011281A/ja
Application granted granted Critical
Publication of JP4112033B2 publication Critical patent/JP4112033B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • 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)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Description

【0001】
【産業上の技術分野】
本発明は、一般的には分布コンピュータシステムに関し、詳しく述べれば、その完全性が検証可能であるプログラムのためのプログラムインタプリタが、信頼されたソースからの検証不能プログラムは使用し、それ以外の検証不能プログラムの実行は拒絶する機能を含むようなシステム及び方法に関する。
【0002】
【従来の技術】
本明細書においては「アーキテクチャ」とは、コンピュータモデルのファミリーの動作特性と定義する。明確なアーキテクチャの例は、マッキントッシュコンピュータ、DOSまたはウィンドウズオペレーティングシステムを使用するIBM PCコンパチブルコンピュータ、ソラリスオペレーティングシステムを走らせるSUNマイクロシステムズコンピュータ、及びユニックスオペレーティングシステムを使用するコンピュータシステムである。
本明細書においては「アーキテクチャ中立(または不問:neutral )」とは、多くの異なるコンピュータアーキテクチャを使用する種々のコンピュータプラットフォーム上で実行される Java ( Sun Microsystems, Inc. の商標)言語で書かれたプログラムのような、若干のプログラムの能力と定義する。
【0003】
本明細書においては「アーキテクチャ特定」とは、若干のプログラムを、単一のコンピュータアーキテクチャを使用するコンピュータプラットフォーム上だけで実行させる要求であると定義する。例えば、80486 アセンブラ言語で書かれたオブジェクト(または目的)コードプログラムはIBM PCコンパチブルコンピュータアーキテクチャを使用するコンピュータ上で(並びにIBM PCコンパチブルコンピュータエミュレータを含む他のコンピュータ内で)のみ実行することができる。
アーキテクチャ中立プログラム(ANプログラム)の重要な特色は、アーキテクチャ中立言語(AN言語)で書かれたプログラムから独立したアーキテクチャを含むことである。例えば Java バイトコードプログラムは、 Java バイトコードインタプリタを有するコンピュータプラットフォーム上で実行することができる。 Java バイトコードプログラムの別の重要な特色は、 Java バイトコード検証手段による実行の前に、それらの完全性を直接検証できることである。 Java バイトコード検証手段は、プログラムが所定の(または、予め定められた)完全性基準に準拠するか否かを決定する。この基準は、オペランドスタック、及びデータ型使用制限とを含む。このデータ型使用制限は、 Java バイトコードプログラムが実行コンピュータのオペランドスタックのオーバフローまたはアンダフローを生じさせないようにし、また全てのプログラム命令が既知のデータ型のデータだけを使用することを保証するものである。その結果、 Java バイトコードプログラムはオブジェクトポインタを作成することはできず、また一般に、ユーザがそれを使用する許可を明示的に与えたもの以外のシステム資ソースにアクセスすることはできない。
【0004】
不幸にも、AN言語内に実行可能なプログラムを分布させると、ANプログラムはアーキテクチャ特定の特色を利用するよりも低効率で走るようになる。例えば、 Java バイトコードインタプリタによって実行される Java バイトコードプログラムは、典型的には対応するアーキテクチャ特定言語(AS言語)でコンパイルされた等価アーキテクチャ特定プログラム(ASプログラム)より 2.5乃至5倍程度遅く走る。5倍の速度低下は、実際にはANプログラム実行手段( executer :即ち、インタプリタ)にとって異常に余裕があると考えられるが、若干のユーザがAS言語でコンパイルされた等価プログラムを使用する能力を要求するか、または強要する程十分に効率を低下させている。
ANプログラムを等価ASプログラムにコンパイルできるコンパイラを書くことはできる。しかしながら、それらはエンドユーザにとって極めて高価である。更に、等価のコンパイルされたASプログラムの完全性は、コンパイルされたASプログラムコードからANプログラム完全性検証手段によって直接検証することはできない。従って Java バイトコードプログラムの場合には、等価ASプログラム内にコンパイルされたANプログラムを使用すると、AN言語の最も価値ある特色の一つが潜在的に失われることになる。
【0005】
しかしながら、完全性検証不能ASプログラムによって遂行することはできるが、完全性検証可能ANプログラムによっては遂行できない若干の適正な(または正当な)タスクが存在している。これらは、そのようにしなければオペランドスタック、及び完全性検証可能なANプログラムに賦課されるデータ型使用制限を侵害するタスクを含む。更に、これらのASプログラムは、ANプログラムよりも遙かに早く実行することができる。その結果、完全性検証可能なANプログラムを主として実行するだけではなく、完全性検証不能なASプログラムを実行する能力をも有するように設計されたコンピュータシステムが何故望まれているのかという多くの理由が存在している。
第三者によるANプログラムのコンパイル( compilation ) は可能であるが、これらのコンパイルはその第三者を認証することを要求する。即ち、コンパイルされたASプログラム内の情報から、それが特定の信頼された第三者によってコンパイルされたことを検証できるようにしなければならない。より良くするには、そのコンパイルされたASプログラムが特定の信頼されたコンパイラによって生成されたことを認証できるようにもすべきである。また、所定の完全性基準に対して、コンパイルされたASプログラムの完全性を直接検証することはできないから、コンパイルされたASプログラムはそのASプログラムをコンパイルした対応ANプログラム、及びASプログラムをコンパイルするのに使用したAS言語を識別する情報を検証可能な手法で含むべきである。
【0006】
従って、本発明の目的は、対応するANプログラムからコンパイルされたASプログラムのユーザが、誰がそのANプログラムをコンパイルしたのかの識別と、対応するANプログラムのアイデンティティと、そのASプログラムをコンパイルしたAS言語とを認証することができるようにしたANプログラムコンパイラ及びコンパイル方法を提供することである。
本発明の別の目的は、完全性が検証できるANプログラムは実行し、(信頼されているか、または検証可能なソースとコンパイル情報とを有する)完全性が検証できないASプログラムを呼出すようにし、それによってソース、コンパイル情報、及び完全性の検証ができないASプログラムが呼出されるのを防ぎながら、本質的に全ての適正なタスクを遂行することを可能にするANプログラム実行システム及び実行方法を提供することである。
【0007】
【課題を解決するための手段】
本発明の上記目的は、所定のプログラム完全性基準を満足するアーキテクチャ中立言語で書かれたプログラムを検証するプログラム完全性検証手段と、プログラム内に含まれるプログラムの発信パーティーのディジタル署名を検証するディジタル署名検証手段と、信頼されないオブジェクトクラスを格納する信頼されないオブジェクトクラスストレージ手段と、信頼されたオブジェクトクラスを格納する信頼されたオブジェクトクラスストレージ手段と、を備え、オブジェクトクラスは各々少なくとも1つのプログラムを含み、各プログラムは(A)アーキテクチャ中立言語で書かれたアーキテクチャ中立プログラム、及び(B)完全性検証手段ではその完全性を検証できないアーキテクチャ特定言語で書かれたアーキテクチャ特定プログラムからなる群から選択されたプログラムからなり、アーキテクチャ特定プログラム実行手段と、アーキテクチャ中立プログラム実行手段と、ユーザアドレス空間と、1つのオブジェクトクラス内の何れかのプログラムの実行が要求された時に、オブジェクトクラスの指定された1つを実行のためにユーザアドレス空間内にロードするクラスローダと、を更に備え、クラスローダは、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムがディジタル署名を含み該ディジタル署名がディジタル署名検証手段によって成功裏に検証された場合を除いて、信頼されたオブジェクトクラスストレージ手段内の少なくとも1つのアーキテクチャ特定プログラムを含むオブジェクトクラス以外の如何なる要求されたオブジェクトクラスのローディングをも阻止するプログラムセキュリティ論理を含んでいるコンピュータによって達成される。
【0008】
本発明のコンピュータでは、クラスローダは、要求されたオブジェクトクラスが信頼されたオブジェクトクラスストレージ手段内に格納されておらず且つ少なくとも1つのアーキテクチャ中立プログラムを含む場合に、要求されたオブジェクトクラス内の各アーキテクチャ中立プログラムの完全性を検証するプログラム完全性検証手段を呼出すための検証手段論理を含み、プログラムセキュリティ論理は更に、要求されたオブジェクトクラスがプログラム完全性検証手段によってその完全性を検証されない少なくとも1つのアーキテクチャ中立プログラムを含む場合は信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の如何なる要求されたオブジェクトクラスのローディングをも阻止するように構成してもよい。
【0009】
本発明のコンピュータでは、アーキテクチャ特定プログラムの1つに関連する各ディジタル署名は署名パーティー識別子及び暗号化されたメッセージを含み、暗号化されたメッセージはメッセージダイジェスト機能を使用して生成されたアーキテクチャ特定プログラムのメッセージダイジェストを含み、暗号化されたメッセージは識別された署名パーティーに関連する私用暗号化キーを使用して暗号化されており、ディジタル署名検証手段は、署名パーティー識別子によって識別された署名パーティーに関連する公開キーを入手して指定されたディジタル署名を処理し、公開キーを用いてディジタル署名の暗号化されたメッセージを暗号解除して暗号解除されたメッセージダイジェストを生成し、ディジタル署名に関連するアーキテクチャ特定プログラムに対してメッセージダイジェスト機能を実行することによって試験メッセージダイジェストを生成し、試験メッセージダイジェストと暗号解除されたメッセージダイジェストとを比較し、そしてもし暗号解除されたメッセージダイジェストと試験メッセージダイジェストとが一致しなければ不合格信号を発行する論理を含んで構成されてもよい。
【0010】
本発明のコンピュータでは、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが2つのディジタル署名を含み該ディジタル署名が共にディジタル署名検証手段によって成功裏に検証された場合を除いて、プログラムセキュリティ論理は信頼されたオブジェクトクラスストレージ手段内の少なくとも1つのアーキテクチャ特定プログラムを含むオブジェクトクラス以外の如何なる要求されたオブジェクトクラスのローディングをも阻止し、アーキテクチャ特定プログラムの1つに関連する各ディジタル署名は署名パーティー識別子及び暗号化されたメッセージを含み、暗号化されたメッセージは所定の手順によって生成されたメッセージを含み、暗号化されたメッセージは識別された署名パーティーに関連する私用暗号化キーを使用して暗号化されており、ディジタル署名検証手段は、署名パーティー識別子によって識別された署名パーティーに関連する公開キーを入手して指定されたディジタル署名を処理し、公開キーを用いてディジタル署名の暗号化されたメッセージを暗号解除して暗号解除されたメッセージダイジェストを生成し、ディジタル署名に関連するアーキテクチャ特定プログラムに対して所定の手順を実行することによって試験メッセージダイジェストを生成し、試験メッセージダイジェストと暗号解除されたメッセージダイジェストとを比較し、そしてもし暗号解除されたメッセージダイジェストと試験メッセージダイジェストとが一致しなければ不合格信号を発行する論理を含み、プログラムセキュリティ論理は、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが、署名パーティが信頼されたパーティーの第1の群のメンバーであるとする第1のディジタル署名及び署名パーティーが信頼されたパーティーの第2の群のメンバーであるとする第2のディジタル署名を含む場合を除いて、信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の要求されたオブジェクトクラスのローディングを阻止するように構成してもよい。
【0011】
本発明のコンピュータでは、プログラムセキュリティ論理は、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが関連するアーキテクチャ中立プログラムに関するメッセージダイジェストを含んでいてプログラムセキュリティ論理が関連するアーキテクチャ中立プログラムに対して所定のメッセージダイジェスト手順を遂行することによって生成した試験メッセージダイジェストとメッセージダイジェストとが一致する場合を除いて、信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の要求されたオブジェクトクラスのローディングを阻止するように構成してもよい。
また、本発明の上記目的は、コンピュータシステムを動作させる方法であって、信頼されないオブジェクトクラスを信頼されないオブジェクトクラスストレージ手段内に格納する段階と、信頼されたオブジェクトクラスを信頼されたオブジェクトクラスストレージ手段内に格納する段階と、を備え、オブジェクトクラスは各々少なくとも1つのプログラムを含み、各プログラムは(A)アーキテクチャ中立言語で書かれたアーキテクチャ中立プログラム、及び(B)アーキテクチャ特定言語で書かれたアーキテクチャ特定プログラムからなる群から選択されたプログラムからなり、1つのオブジェクトクラス内の何れかのプログラムの実行が要求された時に、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムがディジタル署名を含み該ディジタル署名がディジタル署名検証手段によって成功裏に検証されない限り少なくとも1つのアーキテクチャ特定プログラムを含む信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の何れかの要求されたオブジェクトクラスのローディングを阻止することを含む、セキュリティの侵害によって要求されたオブジェクトクラスのローディングが阻止されている場合を除いて、要求されたオブジェクトクラスを実行のためにユーザアドレス空間内へロードするコンピュータシステムを動作させる方法によって達成される。
【0012】
本発明の方法では、オブジェクトクラスローディング段階は、(A)要求されたオブジェクトクラスが信頼されたオブジェクトクラスストレージ手段内に格納されておらず、且つ少なくとも1つのアーキテクチャ中立プログラムを含む場合に要求されたオブジェクトクラス内の各アーキテクチャ中立プログラムの完全性を検証する段階、及び(B)要求されたオブジェクトクラスがその完全性を検証されない少なくとも1つのアーキテクチャ中立プログラムを含む場合は、要求されたオブジェクトクラスが信頼されたオブジェクトクラスストレージ手段内にある場合を除いて要求されたオブジェクトクラスのローディングを阻止する段階を含むようにしてもよい。
本発明の方法では、アーキテクチャ特定プログラムの1つに関連する各ディジタル署名は署名パーティー識別子及び暗号化されたメッセージを含み、暗号化されたメッセージはメッセージダイジェスト機能を使用して生成されたアーキテクチャ特定プログラムのメッセージダイジェストを含み、暗号化されたメッセージは識別された署名パーティーに関連する私用暗号化キーを使用して暗号化されており、オブジェクトクラスローディング段階は、署名パーティー識別子によって識別された署名パーティーに関連する公開キーを入手して指定されたディジタル署名を処理し、公開キーを用いてディジタル署名の暗号化されたメッセージを暗号解除して暗号解除されたメッセージダイジェストを生成し、ディジタル署名に関連するアーキテクチャ特定プログラムに対してメッセージダイジェスト機能を実行することによって試験メッセージダイジェストを生成し、試験メッセージダイジェストと暗号解除されたメッセージダイジェストとを比較し、そしてもし暗号解除されたメッセージダイジェストと試験メッセージダイジェストとが一致しなければ不合格信号を発行することを含むようにしてもよい。
【0013】
本発明の方法では、オブジェクトクラスローディング段階は、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが2つのディジタル署名を含み該ディジタル署名が共にディジタル署名検証手段によって成功裏に検証された場合を除いて、信頼されたオブジェクトクラスストレージ手段内の少なくとも1つのアーキテクチャ特定プログラムを含むオブジェクトクラス以外の如何なる要求されたオブジェクトクラスのローディングをも阻止する段階を含み、アーキテクチャ特定プログラムの1つに関連する各ディジタル署名は署名パーティー識別子及び暗号化されたメッセージを含み、暗号化されたメッセージは所定の手順によって生成されたメッセージを含み、暗号化されたメッセージは識別された署名パーティーに関連する私用暗号化キーを使用して暗号化されており、オブジェクトクラスローディング段階は、署名パーティー識別子によって識別された署名パーティーに関連する公開キーを入手して指定されたディジタル署名を処理し、公開キーを用いてディジタル署名の暗号化されたメッセージを暗号解除して暗号解除されたメッセージダイジェストを生成し、ディジタル署名に関連するアーキテクチャ特定プログラムに対して所定の手順を実行することによって試験メッセージダイジェストを生成し、試験メッセージダイジェストと暗号解除されたメッセージダイジェストとを比較し、そしてもし暗号解除されたメッセージダイジェストと試験メッセージダイジェストとが一致しなければ不合格信号を発行する段階を含み、オブジェクトクラスローディング段階は更に、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが、署名パーティが信頼されたパーティーの第1の群のメンバーであるとする第1のディジタル署名及び署名パーティーが信頼されたパーティーの第2の群のメンバーであるとする第2のディジタル署名を含む場合を除いて、信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の要求されたオブジェクトクラスのローディングを阻止する段階を含むようにしてもよい。
【0014】
本発明の方法では、オブジェクトクラスローディング段階は、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが関連するアーキテクチャ中立プログラムのメッセージダイジェストを含み該メッセージダイジェストと関連するアーキテクチャ中立プログラムに対してプログラムセキュリティ論理が所定のメッセージダイジェスト手順を遂行することによって生成した試験メッセージダイジェストとが一致する場合を除いて、信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の要求されたオブジェクトクラスのローディングを阻止する段階を含むようにしてもよい。
更に、本発明の上記目的は、データ処理システム上で実行されるデータプログラムを格納するメモリであって、アーキテクチャ中立言語で書かれたプログラムが所定のプログラム完全性基準を満足することを検証するプログラム完全性検証手段と、プログラム内に含まれるプログラムの発信パーティーのディジタル署名を検証するディジタル署名検証手段と、信頼されないオブジェクトクラスを格納する信頼されないオブジェクトクラスストレージ手段と、信頼されたオブジェクトクラスを格納する信頼されたオブジェクトクラスストレージ手段と、を備え、オブジェクトクラスは各々少なくとも1つのプログラムを含み、各プログラムは(A)アーキテクチャ中立言語で書かれたアーキテクチャ中立プログラム、及び(B)完全性検証手段ではその完全性を検証できないアーキテクチャ特定言語で書かれたアーキテクチャ特定プログラムからなる群から選択されたプログラムからなり、アーキテクチャ特定プログラム実行手段と、アーキテクチャ中立プログラム実行手段と、1つのオブジェクトクラス内の何れかのプログラムの実行が要求された時に、オブジェクトクラスの指定された1つを実行のためにロードするクラスローダと、を更に備え、クラスローダは、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムがディジタル署名を含み該ディジタル署名がディジタル署名検証手段によって成功裏に検証された場合を除いて、信頼されたオブジェクトクラスストレージ手段内の少なくとも1つのアーキテクチャ特定プログラムを含むオブジェクトクラス以外の如何なる要求されたオブジェクトクラスのローディングをも阻止するプログラムセキュリティ命令を含んでいるメモリによって達成される。
【0015】
本発明のメモリでは、クラスローダは、要求されたオブジェクトクラスが信頼されたオブジェクトクラスストレージ手段内に格納されておらず且つ少なくとも1つのアーキテクチャ中立プログラムを含む場合に、要求されたオブジェクトクラス内の各アーキテクチャ中立プログラムの完全性を検証するプログラム完全性検証手段を呼出すための検証手段命令を含み、プログラムセキュリティ命令は更に、要求されたオブジェクトクラスがプログラム完全性検証手段によってその完全性を検証されない少なくとも1つのアーキテクチャ中立プログラムを含む場合は信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の如何なる要求されたオブジェクトクラスのローディングをも阻止するように構成してもよい。
【0016】
【作用】
要約すれば、本発明は、検証可能なアーキテクチャ中立プログラムを実行するプログラム実行手段、及び検証不能なプログラムが(A)信頼されたストレージ(貯蔵)手段内に存在するか、または(B)信頼されたソースによって生成されたことを検証するディジタル署名によって間接的に検証可能である場合を除いて、検証不能なプログラムのローディング及び実行を禁止するクラスローダ( class loader )に関するものである。
好ましい実施例では、各検証可能なプログラムは、それに独特に関連付けられたメッセージダイジェストを含むディジタル署名を有するオブジェクトクラス内に実現されているアーキテクチャ中立プログラムである。
【0017】
検証不能なプログラムは、ある方法を呼び出したプログラムが検証可能なプログラムではないことを指示するキーワードを含むオブジェクトクラス内に実現されている。好ましい実施例では、検証不能なプログラムは、一般にコンパイラの援助を受けて生成されたアーキテクチャ特定の、コンパイルされたプログラムである。各オブジェクトクラスは、
* コンパイルされた、アーキテクチャ特定コード、
* もし対応するアーキテクチャ中立プログラムが存在すれば(時として存在しない)、その対応するアーキテクチャ中立プログラムを識別する情報(対応するアーキテクチャ中立プログラムのメッセージダイジェストのコピーを含む)、
* そのオブジェクトクラスを生成した(例えば、ソースプログラムのコンパイルを遂行することによって)信頼された「コンパイリングパーティー」によって、その「コンパイリングパーティー」の私用暗号化キーを使用して署名されたディジタル署名、
* もしそのオブジェクトクラス内のコードがあるコンパイラによって生成されていれば、そのコンパイラ自体により、そのコンパイラの私用暗号化キーを使用して署名されたディジタル署名、
を含む。
【0018】
ネーミングサービスと呼ばれることがある、広く使用可能な公開暗号化キーの信頼されたストレージ手段は、コンパイラ及び信頼されたコンパイリングパーティーのための公開キーを保持している。これらの公開キーを使用して、検証不能なプログラムを有するオブジェクトクラスの全ての受信者はオブジェクトクラス内のディジタル署名を暗号解除し、そのオブジェクトクラスが信頼されたパーティーによって作成されたことを検証し、そのオブジェクトクラス内の検証不能なプログラムコードが指示されたコンパイラ(もしあれば)によって生成されたか否かを検証し、そして対応するアーキテクチャ中立プログラム(もしあれば)のアイデンティティを検証することができる。任意選択的に、オブジェクトクラス内の検証不能なプログラムコードは、そのオブジェクトクラス内の検証不能なプログラムコードを実行する前に、対応する検証可能なプログラムの適切な動作を検証するためにプログラム検証手段を使用することができる。
【0019】
本発明の付加的な目的及び特色は、以下の添付図面に基づく詳細な説明からより容易に明白になるであろう。
【0020】
【実施例】
図1に、多くの顧客コンピュータ102、サーバコンピュータ104、及び信頼されたキーストレージ手段106を有するコンピュータネットワーク100を示す。顧客コンピュータ102はネットワーク通信接続108を介して互いに、及びサーバコンピュータ104及び信頼されたキーストレージ手段106に接続されている。ネットワーク通信接続108は、ローカルまたはワイドエリアネットワーク、インタネット、これらのネットワークの組合わせ、または他の型のネットワーク通信接続であって差し支えない。
殆どの顧客コンピュータ102は、サン( Sun ) ワークステーション、IBMコンパチブルコンピュータ、及びマッキントッシュコンピュータのようなデスクトップコンピュータであるが、実質的にどのような型のコンピュータも顧客コンピュータであることができる。これらの各顧客コンピュータは、CPU110、ユーザインタフェース112、メモリ114、及びネットワーク通信インタフェース116を含んでいる。ネットワーク通信インタフェースは、顧客コンピュータがネットワーク通信接続106を介して互いに、サーバコンピュータ104と、及び信頼されたキーストレージ手段108と通信できるようにする。
【0021】
各顧客コンピュータ102のメモリ114は、オペレーティングシステム118、ネットワーク通信管理手段120、ANプログラム(アーキテクチャ中立プログラム)実行手段122、ASプログラム(アーキテクチャ特定プログラム)実行手段124、ANプログラム完全性検証手段126、ANプログラムコンパイリング準備手段( preparer )128、署名発生手段130、署名検証手段132、コンパイリング情報検証手段134、オブジェクトクラスローダ136、ユーザアドレス空間138、信頼されたオブジェクトクラスストレージ手段140、信頼されないオブジェクトクラスストレージ手段142、既知の信頼されたコンパイリングパーティー及び信頼されたコンパイラのリスト144を格納している。オペレーティングシステムはCPU110上で走り、ユーザがユーザインタフェース112を使用して発行したコマンドに応答してCPU上のプログラム120−136を制御し、調整する。
【0022】
各顧客コンピュータ102のANプログラム実行手段122は、信頼されたオブジェクトクラスストレージ手段140及び信頼されないオブジェクトクラスストレージ手段142内に格納されているオブジェクトクラス内のANプログラムを実行する。更に、ANプログラムは、ユーザがスタック及びデータ使用制限のような所定の完全性基準を確立できるAN言語で書かれているので、ANプログラムは不当なタスクを遂行しない。従ってANプログラムの完全性は、実行の前に、このプログラムが所定の完全性基準を満足しているか否かを決定することによって、ANプログラム完全性検証手段126によって直接検証することができる。従ってこれらのANプログラムは、完全性検証可能ANプログラムと考えられる。
【0023】
好ましい実施例では、完全性検証可能ANプログラムは Java バイトコード言語で書かれている。更に、ANプログラム実行手段122、及びANプログラム検証手段124はそれぞれ、 Java バイトコードプログラムを実行する Java バイトコードプログラムインタプリタ、及び Java バイトコードプログラムを検証する Java バイトコードプログラム検証手段である。 Java バイトコードプログラム検証手段及びインタプリタは、Sun Microsystems, Inc.の製品である。
しかしながら各顧客コンピュータ102は、対応するAS言語でプログラムを書くことができ、ASプログラム実行手段124によって実行させることができる関連特定アーキテクチャを有している。AS言語は、AS言語で書かれたASプログラムがAN言語の所定の完全性基準を満足することを要求しない。その結果ASプログラムは、ANプログラムによっては遂行することができないタスクを遂行することができる(何故ならそれらは、AN言語の所定の完全性基準によって負わされる制限によって悩まされないからである)。しかしながら、不幸にもこれは、それらの完全性がANプログラム完全性検証手段126によって直接検証することができず、従って完全性を検証できないと考えられることも意味している。
【0024】
それにも拘わらず前述したようにANプログラムは、AS言語でコンパイルされた同一プログラムよりも非効率的に走る。従って顧客コンピュータ102のユーザは、ユーザの顧客コンピュータに関連するAS言語のためのサーバコンピュータ104によってコンパイルされたANプログラムを持ち、それによってコンパイルされたASプログラムをASプログラム実行手段124によって実行できるように願うかも知れない。または、もしコンパイルされたASプログラムが分配され、他の顧客コンピュータのASプログラム実行手段124によって実行される予定であれば、ユーザは、他のコンピュータに関連するAS言語のためにコンパイルされたANプログラムを持ちたいと願うかも知れない。
コンパイルのためにアーキテクチャ中立プログラムの準備
図1及び2を参照する。発信パーティーがサーバコンピュータ104によってコンパイルされたANプログラム200を持つことを願う場合、発信パーティーはユーザインタフェース112を使用してコマンドを発行してANプログラムコンパイリング準備手段128を呼出し、コンパイルのためにANプログラムを準備するようにそれに命令する。ANプログラムは、信頼されたオブジェクトクラスストレージ手段140、または信頼されないオブジェクトクラスストレージ手段142の一方内に含まれているオブジェクトクラス内にあることができる。表1は、サーバコンピュータ104によってコンパイルされるANプログラムを準備するためにANプログラムコンパイリング準備手段128が使用する手順の擬似コード表現を含んでいる。表1−3に使用されている擬似コードは、ユニバーサルコンピュータ言語協定を使用している。ここに使用されている擬似コードは、この説明の目的のためだけに開発したものであるが、この技術に精通するコンピュータプログラマならば容易に理解できよう。
【0025】
図1及び2、及び表1を参照する。ANプログラムコンパイリング準備手段128は先ずANプログラム完全性検証手段126を呼出し、ANプログラム200のANプログラムコード202の完全性を検証するようにそれに命令する。これは、コンパイルのためにサーバコンピュータ104へ送られる前に、ANプログラムコードがAN言語の所定の完全性基準を満足しておくようにするために行われるのである。もしANプログラムコードが所定の完全性基準を満足しなければ、ANプログラム完全性検証手段はANプログラムコンパイリング準備手段へ不合格結果を送り返す。それに応答してANプログラムコンパイリング準備手段はコンパイリング準備手順を打切り、これを指示する適切なメッセージを生成する。
【0026】
しかしながら、もしANプログラムコード202が所定の完全性基準を満足していれば、ANプログラム完全性検証手段126はANプログラムコンパイリング準備手段128へ合格結果を送り返す。次いでANプログラムコンパイリング準備手段128は署名発生手段130を呼出し、発信パーティーのディジタル署名OP210を生成するようにそれに命令する。このディジタル署名は、ANプログラム200が信頼された発信パーティーによって生成されたものであることを確認するために検証することができる。署名発生手段は、まずANプログラムコード202のメッセージダイジェストOP212を生成することによってディジタル署名OPを生成する。これは、ANプログラムコードのデータビットに対するハッシュ関数OPを計算することによって行われる。使用するハッシュ関数は、所定のハッシュ関数であっても、または発信パーティーによって選択されたハッシュ関数であってもよい。説明の目的からハッシュ関数OPは発信パーティーに対応させているが、それはハッシュ関数を発信パーティのディジタル署名OPのために使用したからである。
【0027】
次いで署名発生手段130は、生成したメッセージダイジェストOP212及びハッシュ関数OPID214を、発信パーティの私用暗号化キーを用いて暗号化する。次に署名発生手段は、発信パーティーID216を明文で、暗号化された項目212及び214の終わりに付加してディジタル署名OPを形成する。発信パーティー私用キー及びIDは、発信パーティーによってユーザインタフェース112に供給される。
ディジタル署名OP210を生成した後に、ANプログラムコンパイリング準備手段128は、それをANプログラムコード202へ追加する。次いで、ANプログラムコンパイリング準備手段128は、ANプログラム200がサーバコンピュータ104によってコンパイルするために準備されたことを指示するメッセージを生成する。
【0028】
次に、発信パーティーは、ユーザインタフェース112を用いてネットワーク通信管理手段120へコマンドを発行し、ANプログラム200を、そのプログラムをコンパイルするアーキテクチャ特定言語を指定する引き数(AS言語ID)及び使用するコンパイラ(コンパイラID)と共に、サーバコンピュータ104へ伝送させる。ネットワーク通信管理手段は、信頼されたオブジェクトクラスストレージ手段140、または信頼されないオブジェクトクラスストレージ手段142の中に位置しているANプログラムを検索し、それをネットワーク通信インタフェース116へ供給する。次いでネットワーク通信管理手段は、ネットワーク通信インタフェースに命令してANプログラムを、特定の引き数と共にサーバコンピュータへ伝送させる。
【0029】
アーキテクチャ中立プログラムのコンパイリング
伝送されたANプログラム200はサーバコンピュータ104において受信される。サーバコンピュータは、CPU 150、ユーザインタフェース152、メモリ154、及びネットワーク通信インタフェース156を含んでいる。ネットワーク通信インタフェースは、サーバコンピュータがネットワーク通信接続108を介して顧客コンピュータ102及び信頼されたキーストレージ手段106と通信できるようにする。
サーバコンピュータ104のメモリ154は、オペレーティングシステム158、ネットワーク通信管理手段160、ANプログラムコンパイラ162、署名検証手段164、ANプログラム完全性検証手段166、署名発生手段168、ANプログラムストレージ手段170、及びASプログラムストレージ手段172を格納している。オペレーティングシステムはCPU150上で走り、コンパイリングパーティーがユーザインタフェース152を用いて発行したコマンドに応答して、CPU上でのプログラム160−168の走りを制御し、調整する。
【0030】
ネットワーク通信インタフェース156はANプログラムを受信し、ネットワーク通信管理手段160にこれが行われたことを指示する。それに応答してネットワーク通信管理手段は、受信したANプログラムをANプログラムストレージ手段170内に配置する。サーバ104が自動コンパイラサービスとしてセットアップされていれば、これはネットワーク通信管理手段160によって自動的に行われる。そうでない場合には、コンパイリングパーティーがユーザインタフェースを用いてコマンドを発行すると、ネットワーク通信管理手段によってストレージ手段170内へ移動させられる。
次いで、自動的に、またはコンパイリングパーティーがユーザインタフェース252を用いてコマンドを発行すると、ANプログラム200をコンパイルするためにANプログラムコンパイラ162が呼出される。表2は、ANプログラムをコンパイルするためにANプログラムコンパイラが使用するコンパイル手順の擬似コード表現を含んでいる。
【0031】
図1−2、及び表2を参照する。ANプログラムコンパイラ162は先ず署名検証手段164を呼出し、受信したANプログラム200内のディジタル署名OP210を検証させ、ディジタル署名OP210がそのANプログラムのための発信パーティーの署名であることを確認させる(例えば、ANプログラムの他のバージョン上の捏造署名または発信パーティー署名であることを見抜くために)。詳しく述べれば、署名検証手段は、受信したANプログラム内の「明文テキスト発信パーティID」216を使用して信頼されたキーストレージ手段106から発信パーティの私用キーを入手する。次いで署名検証手段は、発信パーティの暗号化された公開キーを使用してディジタル署名OP内に暗号化されているメッセージダイジェストOP212及びハッシュ関数OPID214を暗号解除する。
【0032】
次に、署名検証手段164は、受信したANプログラム200のANプログラムコード202に対する対応ハッシュ関数OPを計算することによって、暗号解除されたメッセージダイジェストOP212と突き合わされる試験メッセージダイジェストOPを生成する。暗号解除されたディジタル署名OPは、使用すべき適切なハッシュ関数OPを識別するのに使用される。次いで暗号解除されたメッセージダイジェストOPと、生成された試験メッセージダイジェストOPとが比較されてディジタル署名OP210が検証される。
もしメッセージダイジェストOP212と試験メッセージダイジェストOPとが一致しなければ、署名検証手段164はANプログラムコンパイラ162へ不合格結果を送り返す。それに応答してANプログラムコンパイラはコンパイリング手順を打切り、適切なメッセージを生成する。
【0033】
一方、もしメッセージダイジェストOPと試験メッセージダイジェストOPとが一致すれば、署名検証手段164はANプログラムコンパイラ162へ合格結果を送り返し、ANプログラムコンパイラはANプログラム完全性検証手段166を呼出す。ANプログラムコンパイラはANプログラム完全性検証手段に命令し、受信したANプログラム200のANプログラムコード202の完全性を検証させる。これは、前述したコンパイリングのためのANプログラムの準備で説明したのと同じ手法で、また同じ目的で行われる。従って、もしANプログラムコードが所定の完全性基準を満足しなければ、ANプログラム完全性検証手段はANプログラムコンパイラへ不合格結果を送り返す。それに応答してANプログラムコンパイラはコンパイリング手順を打切り、そのことを指示する適切なメッセージを生成する。
【0034】
しかしながら、もし受信したANプログラム200のANプログラムコード202が所定の完全性基準を満足すれば、ANプログラム完全性検証手段166はANプログラムコンパイラ162へ合格結果を送り返す。そこでANプログラムコンパイラはANプログラムコードを、発信パーティーによって指定されたAS言語IDによって識別されたAS言語にコンパイルする。図1−3及び表2を参照する。コンパイラはANプログラムコード202、ディジタル署名OP210、及びコンパイルされたASプログラムコード302を、ASプログラムストレージ手段172内に格納されているASプログラム300内に配置する。
次いでANプログラムコンパイラ162は署名発生手段168を呼出し、ANプログラムコンパイラのディジタル署名C を生成するように命令する(このディジタル署名は、ASプログラム300が信頼されたANプログラムコンパイラによりコンパイルされたことを確認するために検証することができる)。これは、前述したディジタル署名OPを生成するのと同じ手法で行うことができる。しかしながらこの場合には、署名された情報のセットはASプログラムコード及びディジタル署名OPである。対応するハッシュ関数C ID324と共に別の所定のハッシュ関数を使用して、ディジタル署名C によって署名される情報のセットのメッセージダイジェストC 322を生成することができ、ANプログラムコンパイラの私用暗号化キーを使用してこのメッセージダイジェストC 及びハッシュ関数C IDを暗号化し、そしてANプログラムコンパイラのIDが明文で、暗号化されたメッセージダイジェストC 及びハッシュ関数C の終わりに付加される。コンパイラの私用キー及びIDはANプログラムコンパイラによって供給される。
【0035】
ANプログラムコンパイラ162は再度署名発生手段168を呼出し、コンパイリングパーティーのディジタル署名CP312を生成させる(このディジタル署名は、ASプログラム300が信頼されたコンパイリングパーティーによりコンパイルされたことを確認するためにエンドユーザによって検証することができる)。これは、前述した(ANプログラムのコンパイリングの項において説明した)ディジタル署名CPを生成する手法と同じようにして行うことができる。しかしながらこの場合は、ディジタル署名CPのために生成されたメッセージダイジェストCP314は、ASプログラムコード、ディジタル署名OP、及びディジタル署名C のデータビットに対する所定の、または選択されたハッシュ関数CPを計算することによって生成される。ハッシュ関数OPと同様に、この説明の目的から、ハッシュ関数CPはコンパイリングパーティーに対応させてある(何故ならば、これはコンパイリングパーティーのディジタル署名CPのために使用されていたからである)。
【0036】
次いで署名発生手段168はコンパイリングパーティーの私用暗号化キーを使用してメッセージダイジェストCP314及びハッシュ関数CPのID316を暗号化する。次に署名発生手段は、コンパイリングパーティーのID318を明文で、暗号化された項目314及び316の終わりに付加してディジタル署名CPを形成する。コンパイリングパーティーの私用キー及びIDは、ユーザインタフェース152を用いてコンパイリングパーティーから供給される。
ディジタル署名C 320及びディジタル署名CP312を生成した後に、ANプログラムコンパイラ162はそれらをASプログラムコード302に追加するので、得られたコンパイルされたASプログラムファイルまたはオブジェクトは、以下の成分をその中に有している。
【0037】
ANプログラムコード、
ディジタル署名OP、
ASプログラムコード、
ディジタル署名C 、及び
ディジタル署名CP。
次に、ANプログラムコンパイラは、ANプログラム200がコンパイルされてASプログラム300が形成され発信パーティーに送る準備が整っていることを指示するメッセージを生成する。
次いで発信パーティーは、ネットワーク通信管理手段160を使用してASプログラム300を発信パーティーの顧客コンピュータ102へ伝送する。ネットワーク通信管理手段は、ASプログラムストレージ手段172内に位置しているASプログラムを検索し、それをネットワーク通信インタフェース156へ供給することによってそれを行う。次にネットワーク通信管理手段は、ネットワーク通信インタフェースに命令してASプログラムを発信パーティーの顧客コンピュータへ伝送させる。
【0038】
オブジェクト及びオブジェクトクラス作成及び分配
次いで伝送されたASプログラム300は、発信パーティーの顧客コンピュータの通信インタフェース116によって受信され、ネットワーク通信管理手段120にそのことを指示する。それに応答して発信パーティーはユーザインタフェース252を用いてコマンドを発行し、ネットワーク通信インタフェースから受信したASプログラムを検索するようにネットワーク通信管理手段に命令する。それによりネットワーク管理手段は、受信したASプログラムを発信パーティーの顧客コンピュータの信頼されないオブジェクトクラスストレージ手段142内に配置する。これが行われた後に発信パーティーは、受信したASプログラムを将に1つの方法(即ち、コンパイルされたプログラムコード)で新しいオブジェクトクラスとして処理することができるか、またはASプログラム300及び他のANプログラム及びASプログラムを含むオブジェクトクラスを作成することができる。
【0039】
図4に、本発明による典型的なオブジェクトクラス400を示す。オブジェクトクラスは、1またはそれ以上のASプログラム402及び/または1またはそれ以上のANプログラム404、並びに仮想関数テーブル410を含むことができる。仮想関数テーブルは、各ASプログラム毎に、それがAN言語によってではないASプログラム(即ち、ネイティブプログラム)であることを指示する対応ID(ネイティブ ASプログラムID)412と、ネイティブプログラムを指し示す対応ポインタ414とを含んでいる。同様に各ANプログラム毎に、仮想関数テーブルは、対応ID(ANプログラムID)416と、ANプログラムを指し示す対応ポインタ418とを含んでいる。このオブジェクトクラスの各オブジェクト420は、オブジェクトクラス400を指し示すオブジェクトヘッダ422を含んでいる。
【0040】
これにより、発信パーティーは、オブジェクトクラス内のASプログラム402の1つとしてサーバコンピュータ104から受信したASプログラム300を用いて、オブジェクト420及びオブジェクトクラス400を作成することができる。
発信パーティーがオブジェクト、及びASプログラム300及びANプログラムを含むオブジェクトクラスを種々の実行パーティーに分配することを望む場合は、発信パーティーはユーザインタフェース112を用いてコマンドを発行し、これらの項目を実行パーティーの顧客コンピュータ102へ伝送するようにネットワーク通信管理手段に命令する。ネットワーク通信管理手段は、それらが位置している信頼されないオブジェクトクラスストレージ手段142を検索し、それらを適切な伝送命令と共にネットワーク通信インタフェース116へ供給することによってそれを行う。代替として、発信パーティーのネットワーク通信管理手段は、指定されたオブジェクトクラス400のコピーに関して実行パーティーによって指示された要求に応答してもよい。
【0041】
オブジェクトクラス内のアーキテクチャ中立プロ
グラム及びアーキテクチャ特定プログラムの実行
顧客コンピュータ102のネットワーク通信インタフェース156は、伝送されたオブジェクト及びオブジェクトクラスを受信し、この受信が行われたことをネットワーク通信管理手段160に指示する。それに応答して実行パーティーはユーザインタフェース112を使用してコマンドを発行し、ネットワーク通信インタフェースから受信したオブジェクト及びオブジェクトクラスを検索するようにネットワーク通信管理手段に命令する。次いでネットワーク通信管理手段は、受信したオブジェクト及びオブジェクトクラスを信頼されないオブジェクトクラスストレージ手段142内に格納する。
【0042】
各顧客コンピュータ102の信頼されないオブジェクトクラスストレージ手段142は、オブジェクト及び信頼されないそれらの関連オブジェクトクラスを含む。これらのオブジェクトクラスは、どのANプログラムも未だにそれらの完全性検証を受けておらず、またどのASプログラムもそれらのソースが検証されてもいないし、または適正なANプログラムからコンパイルされたものであるとの検証も受けていなから信頼されないのである。
各顧客コンピュータの信頼されたオブジェクトクラスストレージ手段140は、オブジェクト及びそれらの信頼されたオブジェクトクラスを含んでいる。これらのオブジェクトクラスは、それらが含むどのANプログラムも既にANプログラム完全性検証手段136によって完全性が検証済みであり、またそれらが含むどのASプログラムも信頼できることが確認されているので信頼されるのである。実際にこれらのオブジェクトクラスは信頼されており、従ってこれらのオブジェクトクラスに対して完全性の検証を遂行する理由がないので、信頼されたオブジェクトクラスストレージ手段140内の若干の、または全てのオブジェクトクラスはディジタル署名を有する必要はない。
【0043】
先に示唆したように、本質的に全ての正当なタスクがオブジェクトクラスを用いて遂行できるように、主としてANプログラムを含むがASプログラムをも含むことができるオブジェクトクラスを持つことが望ましい。従って、ANプログラム実行手段122は完全性を検証可能なANプログラムを実行し、またASプログラム実行手段を呼出し、(1)信頼されたオブジェクトクラスストレージ手段140内の信頼されたオブジェクトクラス内にあるか、または(2)信頼されないオブジェクトクラスストレージ手段142内の信頼されないオブジェクトクラス内にあって検証可能なディジタル署名OP、ディジタル署名CP、及びディジタル署名C 情報を有する完全性検証不能なASプログラムを実行させることが可能であるので、本質的に全ての正当なタスクを遂行することができる。このようにして、ディジタル署名OP、ディジタル署名CP、及びディジタル署名C 情報を有していないか、またはそれらのディジタル署名が検証不能な信頼されないオブジェクトクラスのASプログラムが実行されるのを防止している。表3は、ANプログラム実行手段が使用する実行手順の擬似コード表現を含んでいる。
【0044】
図1−4及び表3を参照する。実行パーティー(例えば、発信パーティーまたは他のパーティー)の顧客コンピュータ102において、ANプログラム実行手段122は指定されたオブジェクトクラス内のある方法を呼出すことを探索するANプログラムを実行することができる。この方法呼出しは、始めは、オブジェクトクラスが既にロード済みであるか否かを決定するオブジェクトクラスローダ136によって取り扱われる。オブジェクトクラスが既に実行パーティーのユーザアドレス空間138内にロードされている場合には、呼出された方法がANプログラムであればANプログラム実行手段122がその呼出された方法を実行し、呼出された方法がASプログラムであればASプログラム実行手段124がその呼出された方法を実行する。
【0045】
しかしながら、もしオブジェクトクラスが未だに実行パーティーのユーザアドレス空間138内にロードされていなければ、オブジェクトクラスローダ136はそのオブジェクトクラスを実行パーティーのアドレス空間内にロードし、その呼出された方法の実行が許可されているか否かを決定する。例えば、もしオブジェクトクラスが信頼されたオブジェクトクラスストレージ手段140からロードされていれば呼出された方法の実行は許容されており、実行手順が呼出される。実行手順(表3参照)は、もし呼出された方法がANプログラムであればANプログラム実行手段122を呼出し、そうでなければASプログラム実行手段124を呼出して呼出された方法を実行させる。
しかしながら、もしそのオブジェクトクラスが信頼されないオブジェクトクラスストレージ手段142からロードされていれば、クラスローダ136はそのオブジェクトのオブジェクトヘッダを調べ、そのオブジェクトクラスがASプログラムを含んでいるか否かを決定する。これは、そのオブジェクトの仮想関数テーブル内にネイティブ ASプログラムIDが存在するか否かを決定することによって行われる。
【0046】
もしオブジェクトクラス内にASプログラムが存在していなければ、クラスローダ136はANプログラム完全性検証手段126を呼出してオブジェクトクラス内のANプログラムの完全性を検証させる。これは、前述したANプログラム200の完全性を検証する手法(ANプログラムのコンパイリングに関して説明した手法)と同じ手法で行われる。従って、もしANプログラムの何れかの完全性が検査に合格しなければ、ANプログラム完全性検証手段は不合格結果をクラスローダへ送り返し、クラスローダはクラスローディング手順を打切り、そのことを指示する適切なメッセージを生成する。しかしながら、もしANプログラム完全性がオブジェクトクラスのANプログラムの全てが検査に合格であることを指示する合格結果を送り返せば、クラスローダは呼出された方法の実行を可能にする。
【0047】
もしオブジェクトクラス内にASプログラムが存在していれば、クラスローダ136は署名検証手段132を呼出してコンパイラ署名である「ディジタル署名C 」及びコンパイリングパーティー署名である「ディジタル署名CP」を検証させる。もしASプログラムの何れもが「ディジタル署名CP」及び「ディジタル署名C 」を含んでいなければ、ASプログラムのソースの完全性は検証されず、従って署名検証手段はANプログラム実行手段に不合格結果を送り返す。それに応答してクラスローダはそのオブジェクトクラスのローディング手順を打切り、そのことを指示する適切なメッセージを生成する。
更に、もしそのオブジェクトクラスの内の全てのASプログラムが「ディジタル署名CP」及び「ディジタル署名C 」を含んでいれば、コンパイリングパーティー及びコンパイラのアイデンティティーがこれら2つのディジタル署名内に指示され、既知の信頼されたコンパイリングパーティー及び信頼されたコンパイラのリスト144(図1参照)と比較される。もしオブジェクトクラスの内の何れかのASプログラムが、既知の信頼されたコンパイリングパーティー及び信頼されたコンパイラのセット内に含まれていないコンパイリングパーティー及びコンパイラによってコンパイルされていればクラスのローディング手順は打切られ、それによって呼出された方法の実行は阻止される。同様に、もし何れかのASプログラム内に識別されているAS言語が、ASプログラム実行手段124によって使用されているAS言語と一致しなければ、クラスのローディング手順は打切られる。
【0048】
しかしながら、もしオブジェクトクラスの内の全てのASプログラムが「ディジタル署名CP」及び「ディジタル署名C 」を含んでおり、全てのASプログラムのための識別されたコンパイリングパーティー及びコンパイラが信頼されたコンパイリングパーティー及び信頼されたコンパイラであり、そして全てのASプログラムによって使用されているAS言語がASプログラム実行手段によって使用されている言語であれば、署名検証手段は、前述したディジタル署名OPの検証(ANプログラム200のコンパイリングに関して説明済み)と同じ手法でこれらの署名を検証する。しかしながらこの場合には、コンパイラの私用キー及びコンパイリングパーティーの公開キーが信頼されたキーストレージ手段106から検索され、ディジタル署名C 内のメッセージダイジェストC 及びハッシュ関数C ID、及びディジタル署名CP内のメッセージダイジェストCP及びハッシュ関数CPIDがそれぞれ暗号解除するのに使用される。更に、暗号解除されたメッセージダイジェストCP及びメッセージダイジェストC に対応する試験メッセージダイジェスト(試験メッセージダイジェストC 及び試験メッセージダイジェストCP)が生成される。これは、暗号解除されたハッシュ関数C ID及びハッシュ関数CPIDによって識別されるハッシュ関数C 及びハッシュ関数CPにそれぞれ従って、試験メッセージダイジェストC の場合にはASプログラムコードのデータビット+ディジタル署名OP、また試験メッセージダイジェストCPの場合には同じデータビット+ディジタル署名C に対するハッシュコードを比較することによって生成される。
【0049】
もし各ASプログラム毎のハッシュ関数C 及び/またはハッシュ関数CPが検査に不合格ならば(即ち、メッセージダイジェストC ≠試験メッセージダイジェストC 及び/またはメッセージダイジェストCP≠試験メッセージダイジェストCP)、署名検証手段132はクラスローダ136に不合格結果を送り返す。それに応答してクラスローダはクラスローディング手順を打切り、そのことを指示する適切なメッセージを生成する。
しかしながら、もし各ASプログラム毎のディジタル署名C 及びディジタル署名CPが共に検査に合格すれば、ANプログラム実行手段122は再度署名検証手段132を呼出し、そのASプログラムをコンパイルしたANプログラムのための発信パーティーの署名(ディジタル署名OP)を検証する。発信パーティーのディジタル署名を検証するために、各ディジタル署名OPは、ANプログラム200のコンパイルで説明した手法と同じ手法で検証される。
【0050】
もしASプログラムをコンパイルした各ANプログラムのディジタル署名OPが検査に合格すれば、クラスローダはANプログラム完全性検証手段を呼出してそのオブジェクトクラス内の各ANプログラム、及びASプログラムをコンパイルしたANプログラムの完全性を検証させる。これは前述した手法と同じ手法で行われる。もしこれらのANプログラムの何れかの完全性が検査に不合格であれば、ANプログラム完全性検証手段はクラスローダへ不合格結果を送り返してクラスローディングを打切らせ、適切なメッセージを生成させる。
しかしながら、もし各ANプログラムの完全性が検査に合格すれば、ANプログラム完全性検証手段126はクラスローダ136へ合格結果を送り返す。それに応答してクラスローダはANプログラム実行手段またはASプログラム実行手段を呼出して呼出された方法を適切に実行させる。
【0051】
以上の説明から明らかなように、実行パーティーは、信頼されないストレージ手段142内の、完全性を検証できるANプログラム及びASプログラム(それらのディジタル署名を検証することができる)を有する信頼されないオブジェクトクラスだけをロードし、それらのプログラムを実行することが保証される。
代替実施例
上述した本発明の特色の若干は任意選択的である。従って当業者ならば、これらの特色を含まない代替実施例が存在することは理解できよう。
例えば、ANプログラムコンパイラに関しては、コンパイリングパーティー及びANプログラムコンパイラのためのディジタル署名CP及びディジタル署名C をそれぞれ生成するものとして説明した。しかしながら、ANプログラムコンパイラは、単にこれらのディジタル署名の一方だけを生成し、ASプログラムをコンパイルするために使用されるコンパイラ、またはコンパイリングパーティーの何れかの検証を可能にするように構成することができる。
【0052】
同様に、プログラム実行手段に関しては、ディジタル署名CP及びディジタル署名C の両者の検証が必要であるものとして説明した。しかしながら、プログラム実行手段は、これらのディジタル署名の一方だけの検証でよいように、またもし検証されるASプログラムがそれを含んでいれば他方のディジタル署名を任意選択的に検証するように構成することができる。更に、プログラム実行手段は、コンパイリングパーティーが信頼されており、またコンパイルを遂行する前にASプログラムにコンパイルされる各ANプログラムを検証することがコンパイリングパーティーの義務であると仮定して、各ASプログラムに対応するANプログラムの完全性を検証する段階をスキップするように構成してもよい。
発信パーティーが実行パーティーである場合、実行パーティーはASプログラム300にコンパイルされるANプログラム200をコンパイリングパーティーのサーバコンピュータ104へ実際に送ったことを知っている。この場合、クラスローダ136はANプログラム内のディジタル署名OPを検証するために署名検証手段を呼出さない。実行パーティーは単に、ANプログラムのローカルコピー内のディジタル署名OPを、コンパイルされたASプログラム内のディジタル署名OPと比較するだけでよい。また、クラスローダは、呼出されたASプログラムに対応するANプログラムの完全性を検証するためにANプログラム完全性検証手段126を呼出さないように構成することができる(何故ならば、コンパイリングサーバコンピュータへ送られる前にコンパイリング手順のための準備中にANプログラムの完全性が検証されているからである)。代替として、ANプログラムコンパイリング準備手段128が、コンパイリング手順のための準備中にANプログラム完全性検証手段を呼出さないように構成することができる(何故ならばその完全性は、コンパイラによって、及びクラスローダが対応するASプログラムの実行の前にANプログラム完全性検証手段を呼出した時の両方で検証されるからである)。
【0053】
以上に本発明を幾つかの特定実施例に関して説明したが、この説明は本発明を例示したに過ぎず、本発明を限定する意図は毛頭ない。当業者ならば、特許請求の範囲に記載されている本発明の真の思想及び範囲から逸脱することなく多くの変更を考案できるであろう。
【0054】
【表1】
Figure 0004112033
【0055】
【表2】
Figure 0004112033
【0056】
【表3】
Figure 0004112033
【0057】
【表4】
Figure 0004112033
【0058】
【表5】
Figure 0004112033
【0059】
【表6】
Figure 0004112033
【0060】
【表7】
Figure 0004112033
【0061】
【発明の効果】
本発明のコンピュータは、所定のプログラム完全性基準を満足するアーキテクチャ中立言語で書かれたプログラムを検証するプログラム完全性検証手段と、プログラム内に含まれるプログラムの発信パーティーのディジタル署名を検証するディジタル署名検証手段と、信頼されないオブジェクトクラスを格納する信頼されないオブジェクトクラスストレージ手段と、信頼されたオブジェクトクラスを格納する信頼されたオブジェクトクラスストレージ手段と、を備え、オブジェクトクラスは各々少なくとも1つのプログラムを含み、各プログラムは(A)アーキテクチャ中立言語で書かれたアーキテクチャ中立プログラム、及び(B)完全性検証手段ではその完全性を検証できないアーキテクチャ特定言語で書かれたアーキテクチャ特定プログラムからなる群から選択されたプログラムからなり、アーキテクチャ特定プログラム実行手段と、アーキテクチャ中立プログラム実行手段と、ユーザアドレス空間と、1つのオブジェクトクラス内の何れかのプログラムの実行が要求された時に、オブジェクトクラスの指定された1つを実行のためにユーザアドレス空間内にロードするクラスローダと、を更に備え、クラスローダは、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムがディジタル署名を含み該ディジタル署名がディジタル署名検証手段によって成功裏に検証された場合を除いて、信頼されたオブジェクトクラスストレージ手段内の少なくとも1つのアーキテクチャ特定プログラムを含むオブジェクトクラス以外の如何なる要求されたオブジェクトクラスのローディングをも阻止するプログラムセキュリティ論理を含んでいるので、対応するANプログラムからコンパイルされたASプログラムのユーザが、誰がそのANプログラムをコンパイルしたのかの識別と、対応するANプログラムのアイデンティティと、そのASプログラムをコンパイルしたAS言語とを認証することができ、かつ完全性が検証できるANプログラムは実行し、(信頼されているか、または検証可能なソースとコンパイル情報とを有する)完全性が検証できないASプログラムを呼出すようにし、それによってソース、コンパイル情報、及び完全性の検証ができないASプログラムが呼出されるのを防ぎながら、本質的に全ての適正なタスクを遂行することができる。
【0062】
本発明の方法は、コンピュータシステムを動作させる方法であって、信頼されないオブジェクトクラスを信頼されないオブジェクトクラスストレージ手段内に格納する段階と、信頼されたオブジェクトクラスを信頼されたオブジェクトクラスストレージ手段内に格納する段階と、を備え、オブジェクトクラスは各々少なくとも1つのプログラムを含み、各プログラムは(A)アーキテクチャ中立言語で書かれたアーキテクチャ中立プログラム、及び(B)アーキテクチャ特定言語で書かれたアーキテクチャ特定プログラムからなる群から選択されたプログラムからなり、1つのオブジェクトクラス内の何れかのプログラムの実行が要求された時に、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムがディジタル署名を含み該ディジタル署名がディジタル署名検証手段によって成功裏に検証されない限り少なくとも1つのアーキテクチャ特定プログラムを含む信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の何れかの要求されたオブジェクトクラスのローディングを阻止することを含む、セキュリティの侵害によって要求されたオブジェクトクラスのローディングが阻止されている場合を除いて、要求されたオブジェクトクラスを実行のためにユーザアドレス空間内へロードするので、対応するANプログラムからコンパイルされたASプログラムのユーザが、誰がそのANプログラムをコンパイルしたのかの識別と、対応するANプログラムのアイデンティティと、そのASプログラムをコンパイルしたAS言語とを認証することができ、かつ完全性が検証できるANプログラムは実行し、(信頼されているか、または検証可能なソースとコンパイル情報とを有する)完全性が検証できないASプログラムを呼出すようにし、それによってソース、コンパイル情報、及び完全性の検証ができないASプログラムが呼出されるのを防ぎながら、本質的に全ての適正なタスクを遂行することができる。
【0063】
本発明のメモリは、データ処理システム上で実行されるデータプログラムを格納するメモリであって、アーキテクチャ中立言語で書かれたプログラムが所定のプログラム完全性基準を満足することを検証するプログラム完全性検証手段と、プログラム内に含まれるプログラムの発信パーティーのディジタル署名を検証するディジタル署名検証手段と、信頼されないオブジェクトクラスを格納する信頼されないオブジェクトクラスストレージ手段と、信頼されたオブジェクトクラスを格納する信頼されたオブジェクトクラスストレージ手段と、を備え、オブジェクトクラスは各々少なくとも1つのプログラムを含み、各プログラムは(A)アーキテクチャ中立言語で書かれたアーキテクチャ中立プログラム、及び(B)完全性検証手段ではその完全性を検証できないアーキテクチャ特定言語で書かれたアーキテクチャ特定プログラムからなる群から選択されたプログラムからなり、アーキテクチャ特定プログラム実行手段と、アーキテクチャ中立プログラム実行手段と、1つのオブジェクトクラス内の何れかのプログラムの実行が要求された時に、オブジェクトクラスの指定された1つを実行のためにロードするクラスローダと、を更に備え、クラスローダは、要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムがディジタル署名を含み該ディジタル署名がディジタル署名検証手段によって成功裏に検証された場合を除いて、信頼されたオブジェクトクラスストレージ手段内の少なくとも1つのアーキテクチャ特定プログラムを含むオブジェクトクラス以外の如何なる要求されたオブジェクトクラスのローディングをも阻止するプログラムセキュリティ命令を含んでいるので、対応するANプログラムからコンパイルされたASプログラムのユーザが、誰がそのANプログラムをコンパイルしたのかの識別と、対応するANプログラムのアイデンティティと、そのASプログラムをコンパイルしたAS言語とを認証することができ、かつ完全性が検証できるANプログラムは実行し、(信頼されているか、または検証可能なソースとコンパイル情報とを有する)完全性が検証できないASプログラムを呼出すようにし、それによってソース、コンパイル情報、及び完全性の検証ができないASプログラムが呼出されるのを防ぎながら、本質的に全ての適正なタスクを遂行することができる。
【図面の簡単な説明】
【図1】本発明の好ましい実施例を組み入れた分布コンピュータシステムのブロック線図である。
【図2】本発明の好ましい実施例によるアーキテクチャ中立プログラムの構造を示す図である。
【図3】本発明の好ましい実施例により生成されるコンパイルされたアーキテクチャ特定プログラムの構造を示す図である。
【図4】本発明の好ましい実施例によるオブジェクト及び関連オブジェクトクラスを示す図である。
【符号の説明】
100 コンピュータネットワーク
102 顧客コンピュータ
104 サーバコンピュータ
106 信頼されたキーストレージ手段
108 ネットワーク通信接続
110 CPU
112 ユーザインタフェース
114 メモリ
116 ネットワーク通信インタフェース
118 オペレーティングシステム
120 ネットワーク通信管理手段
122 アーキテクチャ中立(AN)プログラム実行手段
124 アーキテクチャ特定(AS)プログラム実行手段
126 アーキテクチャ中立プログラム完全性検証手段
128 アーキテクチャ中立プログラムコンパイリング準備手段
130 署名発生手段
132 署名検証手段
134 コンパイリング情報検証手段
136 オブジェクトクラスローダ
138 ユーザアドレス空間
140 信頼されたオブジェクトストレージ手段
142 信頼されないオブジェクトストレージ手段
144 信頼されたコンパイリングパーティー及び信頼されたコンパイラのリ
スト
150 CPU
152 ユーザインタフェース
154 メモリ
156 ネットワーク通信インタフェース
158 オペレーティングシステム
160 ネットワーク通信管理手段
162 アーキテクチャ中立プログラムコンパイラ
164 署名検証手段
166 アーキテクチャ中立プログラム完全性検証手段
168 署名発生手段
170 アーキテクチャ中立プログラムストレージ手段
172 アーキテクチャ特定プログラムストレージ手段
200 アーキテクチャ中立プログラム
202 アーキテクチャ中立プログラムコード
210 ディジタル署名
212 メモリダイジェストOP
214 ハッシュ関数OPID
216 発信パーティーID
300 アーキテクチャ特定プログラム
302 アーキテクチャ特定プログラムコード
312 ディジタル署名CP
314 メッセージダイジェストCP
316 ハッシュ関数CPID
318 発信パーティーID
320 ディジタル署名C
322 メッセージダイジェストC
324 ハッシュ関数C ID
400 オブジェクトクラス
402 アーキテクチャ特定プログラム
404 アーキテクチャ中立プログラム
410 仮想関数テーブル
412 ネイティブ アーキテクチャ特定プログラムID
414 ポインタ
416 アーキテクチャ中立プログラムID
418 ポインタ
420 オブジェクト
422 オブジェクトヘッダ

Claims (14)

  1. ーキテクチャ中立言語で書かれたプログラムが所定のプログラム完全性基準を満足すること前記プログラムが所定の完全性基準に準拠するか否かを決定することによって検証するプログラム完全性検証手段と、
    前記プログラム内に含まれるプログラムの発信パーティーのディジタル署名を検証するディジタル署名検証手段と、
    信頼されないオブジェクトクラスを格納する信頼されないオブジェクトクラスストレージ手段と、
    信頼されたオブジェクトクラスを格納する信頼されたオブジェクトクラスストレージ手段と、
    を備え、
    前記オブジェクトクラスは各々少なくとも1つのプログラムを含み、前記各プログラムは(A)アーキテクチャ中立言語で書かれたアーキテクチャ中立プログラム、及び(B)完全性検証手段ではその完全性を検証できないアーキテクチャ特定言語で書かれたアーキテクチャ特定プログラムからなる群から選択されたプログラムからなり、
    アーキテクチャ特定プログラム実行手段と、
    アーキテクチャ中立プログラム実行手段と、
    ユーザアドレス空間と、
    前記ブジェクトクラスの指定された1つの内の何れかのプログラムの実行が要求された時に、前記オブジェクトクラスの前記指定された1つを実行のために前記ユーザアドレス空間内にロードするクラスローダと、
    を更に備え、
    前記クラスローダは、前記要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムがディジタル署名を含み該ディジタル署名が前記ディジタル署名検証手段によって成功裏に検証された場合を除いて、前記信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の、少なくとも1つのアーキテクチャ特定プログラムを含む求されたオブジェクトクラスのローディングをもそのクラスのローディング手順を打ち切ることによって阻止するプログラムセキュリティロジックを含んでいる
    ことを特徴とするコンピュータ。
  2. 前記クラスローダは、前記要求されたオブジェクトクラスが前記信頼されたオブジェクトクラスストレージ手段内に格納されておらず且つ少なくとも1つのアーキテクチャ中立プログラムを含む場合に、前記要求されたオブジェクトクラス内の各アーキテクチャ中立プログラムの完全性を検証する前記プログラム完全性検証手段を呼出すための検証手段ロジックを含み、
    前記プログラムセキュリティロジックは更に、前記要求されたオブジェクトクラスが前記プログラム完全性検証手段によってその完全性を検証されていない少なくとも1つのアーキテクチャ中立プログラムを含む場合は前記信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の求されたオブジェクトクラスのローディングをもそのクラスのローディング手順を打ち切ることによって阻止する
    請求項1に記載のコンピュータ。
  3. 前記クラスローダは、さらに、前記要求されたプログラムがアーキテクチャ中立プログラムであり、前記要求されたオブジェクトクラスのローディングが前記プログラムセキュリティロジックによって阻止されなかったときに、前記要求されたプログラムの前記アーキテクチャ中立プログラム実行手段による実行を可能にし、
    前記要求されたプログラムがアーキテクチャ特定プログラムであり、前記要求されたオブジェクトクラスのローディングが前記プログラムセキュリティロジックによって阻止されなかったときに、前記要求されたプログラムの前記アーキテクチャ特定プログラム実行手段による実行を可能にする請求項2に記載のコンピュータ。
  4. 前記アーキテクチャ特定プログラムの1つに対応する前記各ディジタル署名は署名パーティー識別子及び暗号化されたメッセージを含み、前記暗号化されたメッセージはメッセージダイジェスト機能を使用して生成された前記アーキテクチャ特定プログラムのメッセージダイジェストを含み、前記暗号化されたメッセージは前記識別された署名パーティーに対応する私用暗号化キーを使用して暗号化されており、
    前記ディジタル署名検証手段は、前記署名パーティー識別子によって識別された前記署名パーティーに対応する公開キーを入手して指定されたディジタル署名を処理し、前記公開キーを用いて前記ディジタル署名の暗号化されたメッセージを暗号解除して暗号解除されたメッセージダイジェストを生成し、前記ディジタル署名に対応する前記アーキテクチャ特定プログラムに対して前記メッセージダイジェスト機能を実行することによって試験メッセージダイジェストを生成し、前記試験メッセージダイジェストと前記暗号解除されたメッセージダイジェストとを比較し、そしてもし前記暗号解除されたメッセージダイジェストと前記試験メッセージダイジェストとが一致しなければ不合格信号を発行するロジックを含んでいる
    請求項1に記載のコンピュータ。
  5. 前記アーキテクチャ特定プログラムの1つに対応する前記各ディジタル署名は、署名パーティー識別子及び暗号化されたメッセージを含み、前記暗号化されたメッセージは所定の手続きによって生成されたメッセージを含み、前記暗号化されたメッセージは前記識別された署名パーティーに対応する私用暗号化キーを使用して暗号化されており、
    前記ディジタル署名検証手段は、前記署名パーティー識別子によって識別された前記署名パーティーに対応する公開キーを入手して指定されたディジタル署名を処理し、前記公開キーを用いて前記ディジタル署名の暗号化されたメッセージを暗号解除して暗号解除されたメッセージを生成し、前記ディジタル署名に対応する前記アーキテクチャ特定プログラムに対して前記所定の手続きを実行することによって試験メッセージを生成し、前記試験メッセージと前記暗号解除されたメッセージとを比較し、そしてもし前記暗号解除されたメッセージと前記試験メッセージとが一致しなければ不合格信号を発行するロジックを含んでいる
    請求項1に記載のコンピュータ。
  6. 前記要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが2つのディジタル署名を含み該ディジタル署名が共に前記ディジタル署名検証手段によって成功裏に検証された場合を除いて、前記プログラムセキュリティロジック前記信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の、少なくとも1つのアーキテクチャ特定プログラムを含む求されたオブジェクトクラスのローディングをもそのクラスのローディング手順を打ち切ることによって阻止し、
    前記アーキテクチャ特定プログラムの1つに対応する前記各ディジタル署名は署名パーティー識別子及び暗号化されたメッセージを含み、前記暗号化されたメッセージは所定の手順によって生成されたメッセージを含み、前記暗号化されたメッセージは前記識別された署名パーティーに対応する私用暗号化キーを使用して暗号化されており、
    前記ディジタル署名検証手段は、前記署名パーティー識別子によって識別された前記署名パーティーに対応する公開キーを入手して指定されたディジタル署名を処理し、前記公開キーを用いて前記ディジタル署名の暗号化されたメッセージを暗号解除して暗号解除されたメッセージダイジェストを生成し、前記ディジタル署名に対応する前記アーキテクチャ特定プログラムに対して前記所定の手順を実行することによって試験メッセージダイジェストを生成し、前記試験メッセージダイジェストと前記暗号解除されたメッセージダイジェストとを比較し、そしてもし前記暗号解除されたメッセージダイジェストと前記試験メッセージダイジェストとが一致しなければ不合格信号を発行するロジックを含み、
    前記プログラムセキュリティロジックは、前記要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが、前記署名パーティが信頼されたパーティーの第1の群のメンバーであるとする第1のディジタル署名及び前記署名パーティーが信頼されたパーティーの第2の群のメンバーであるとする第2のディジタル署名を含む場合を除いて、前記信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の要求されたオブジェクトクラスのローディングをそのクラスのローディング手順を打ち切ることによって阻止する
    請求項1に記載のコンピュータ。
  7. 前記プログラムセキュリティロジックは、前記要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが対応するアーキテクチャ中立プログラムに関するメッセージダイジェストを含んでいて前記プログラムセキュリティロジックが前記対応するアーキテクチャ中立プログラムに対して所定のメッセージダイジェスト手順を遂行することによって生成した試験メッセージダイジェストと前記メッセージダイジェストとが一致する場合を除いて、前記信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の要求されたオブジェクトクラスのローディングをそのクラスのローディング手順を打ち切ることによって阻止する
    請求項1に記載のコンピュータ。
  8. CPUを含むコンピュータシステムを動作させる方法であって、
    前記CPUによって、信頼されないオブジェクトクラスを信頼されないオブジェクトクラスストレージ手段内に格納する段階と、
    前記CPUによって、信頼されたオブジェクトクラスを信頼されたオブジェクトクラスストレージ手段内に格納する段階と、
    を備え、
    前記オブジェクトクラスは各々少なくとも1つのプログラムを含み、前記各プログラムは(A)アーキテクチャ中立言語で書かれたアーキテクチャ中立プログラム、及び(B)アーキテクチャ特定言語で書かれたアーキテクチャ特定プログラムからなる群から選択されたプログラムからなり、
    前記1つのオブジェクトクラス内の何れかのプログラムの実行が要求された時に、前記要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムがディジタル署名を含み該ディジタル署名が前記ディジタル署名検証手段によって成功裏に検証されない限り前記信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の、少なくとも1つのアーキテクチャ特定プログラムを含む要求されたオブジェクトクラスのローディングをそのクラスのローディング手順を打ち切ることによって阻止することを含む、プログラムセキュリティロジックによって前記要求されたオブジェクトクラスのローディングが阻止されている場合を除いて、前記要求されたオブジェクトクラスを実行のためにユーザアドレス空間内へ前記CPUがロードする、
    ことを特徴とするコンピュータシステムを動作させる方法。
  9. 前記オブジェクトクラスローディング段階は、(A)前記要求されたオブジェクトクラスが前記信頼されたオブジェクトクラスストレージ手段内に格納されておらず、且つ少なくとも1つのアーキテクチャ中立プログラムを含む場合に前記要求されたオブジェクトクラス内の各アーキテクチャ中立プログラムの完全性を前記CPUが検証する段階、及び(B)前記要求されたオブジェクトクラスがその完全性を検証されない少なくとも1つのアーキテクチャ中立プログラムを含む場合は、前記要求されたオブジェクトクラスが前記信頼されたオブジェクトクラスストレージ手段内にある場合を除いて前記要求されたオブジェクトクラスのローディングをそのクラスのローディング手順を打ち切ることによって前記CPUが阻止する段階を含む請求項8に記載の方法。
  10. 前記オブジェクトクラスローディング段階は、前記要求されたプログラムがアーキテクチャ中立プログラムであり、前記要求されたオブジェクトクラスのローディングが前記プログラムセキュリティロジックによって阻止されなかったときに、前記要求されたプログラムの前記アーキテクチャ中立プログラム実行手段による実行を前記CPUが可能にする段階、
    前記要求されたプログラムがアーキテクチャ特定プログラムであり、前記要求されたオブジェクトクラスのローディングが前記プログラムセキュリティロジックによって阻止されなかったときに、前記要求されたプログラムの前記アーキテクチャ特定プログラム実行手段による実行を前記CPUが可能にする段階を含む請求項9に記載の方法。
  11. 前記アーキテクチャ特定プログラムの1つに対応する前記各ディジタル署名は署名パーティー識別子及び暗号化されたメッセージを含み、前記前記暗号化されたメッセージはメッセージダイジェスト機能を使用して生成された前記アーキテクチャ特定プログラムのメッセージダイジェストを含み、前記暗号化されたメッセージは前記識別された署名パーティーに対応する私用暗号化キーを使用して暗号化されており、
    前記オブジェクトクラスローディング段階は、前記署名パーティー識別子によって識別された前記署名パーティーに対応する公開キーを入手して指定されたディジタル署名を前記CPUが処理し、前記公開キーを用いて前記ディジタル署名の暗号化されたメッセージを前記CPUが暗号解除して暗号解除されたメッセージダイジェストを生成し、前記ディジタル署名に対応する前記アーキテクチャ特定プログラムに対して前記メッセージダイジェスト機能を実行することによって試験メッセージダイジェストを前記CPUが生成し、前記試験メッセージダイジェストと前記暗号解除されたメッセージダイジェストとを前記CPUが比較し、そしてもし前記暗号解除されたメッセージダイジェストと前記試験メッセージダイジェストとが一致しなければ不合格信号を前記CPUが発行することを含んでいる
    請求項に記載の方法。
  12. 前記アーキテクチャ特定プログラムの1つに対応する前記各ディジタル署名は署名パーティー識別子及び暗号化されたメッセージを含み、前記前記暗号化されたメッセージは所定の手続きによって生成されたメッセージを含み、前記暗号化されたメッセージは前記識別された署名パーティーに対応する私用暗号化キーを使用して暗号化されており、
    前記オブジェクトクラスローディング段階は、前記署名パーティー識別子によって識別された前記署名パーティーに対応する公開キーを入手して指定されたディジタル署名を前記CPUが処理し、前記公開キーを用いて前記ディジタル署名の暗号化されたメッセージを暗号解除して暗号解除されたメッセージを前記CPUが生成し、前記ディジタル署名に対応する前記アーキテクチャ特定プログラムに対して前記所定の手続きを実行することによって試験メッセージを前記CPUが生成し、前記試験メッセージと前記暗号解除されたメッセージとを前記CPUが比較し、そしてもし前記暗号解除されたメッセージと前記試験メッセージとが一致しなければ不合格信号を前記CPUが発行することを含んでいる
    請求項8に記載の方法。
  13. 前記オブジェクトクラスローディング段階は、前記要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが2つのディジタル署名を含み該ディジタル署名が共に前記ディジタル署名検証手段によって成功裏に検証された場合を除いて、前記信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の、少なくとも1つのアーキテクチャ特定プログラムを含む要求されたオブジェクトクラスのローディングをもそのクラスのローディング手順を打ち切ることによって前記CPUが阻止する段階を含み、
    前記アーキテクチャ特定プログラムの1つに対応する前記各ディジタル署名は署名パーティー識別子及び暗号化されたメッセージを含み、前記暗号化されたメッセージは所定の手順によって生成されたメッセージを含み、前記暗号化されたメッセージは前記識別された署名パーティーに対応する私用暗号化キーを使用して暗号化されており、
    前記オブジェクトクラスローディング段階は、前記署名パーティー識別子によって識別された前記署名パーティーに対応する公開キーを入手して指定されたディジタル署名を前記CPUが処理し、前記公開キーを用いて前記ディジタル署名の暗号化されたメッセージを前記CPUが暗号解除して暗号解除されたメッセージダイジェストを生成し、前記ディジタル署名に対応する前記アーキテクチャ特定プログラムに対して前記所定の手順を実行することによって試験メッセージダイジェストを前記CPUが生成し、前記試験メッセージダイジェストと前記暗号解除されたメッセージダイジェストとを前記CPUが比較し、そしてもし前記暗号解除されたメッセージダイジェストと前記試験メッセージダイジェストとが一致しなければ不合格信号を前記CPUが発行する段階を含み、
    前記オブジェクトクラスローディング段階は更に、前記要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが、前記署名パーティが信頼されたパーティーの第1の群のメンバーであるとする第1のディジタル署名及び前記署名パーティーが信頼されたパーティーの第2の群のメンバーであるとする第2のディジタル署名を含む場合を除いて、前記信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の要求されたオブジェクトクラスのローディングをそのクラスのローディング手順を打ち切ることによって前記CPUが阻止する段階を含んでいる、
    請求項に記載の方法。
  14. 前記オブジェクトクラスローディング段階は、前記要求されたオブジェクトクラス内の各アーキテクチャ特定プログラムが対応するアーキテクチャ中立プログラムのメッセージダイジェストを含み該メッセージダイジェストと前記対応するアーキテクチャ中立プログラムに対してプログラムセキュリティロジックが所定のメッセージダイジェスト手順を遂行することによって生成した試験メッセージダイジェストとが一致する場合を除いて、前記信頼されたオブジェクトクラスストレージ手段内のオブジェクトクラス以外の前記要求されたオブジェクトクラスのローディングをそのクラスのローディング手順を打ち切ることによって前記CPUが阻止する段階を含む、
    請求項に記載の方法。
JP32889796A 1995-12-08 1996-12-09 信頼されたソースからの検証不能プログラムを使用するための機能を有する検証可能プログラムを実行するシステム及び方法 Expired - Lifetime JP4112033B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/569,398 US5692047A (en) 1995-12-08 1995-12-08 System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US08/569398 1995-12-08

Publications (2)

Publication Number Publication Date
JPH1011281A JPH1011281A (ja) 1998-01-16
JP4112033B2 true JP4112033B2 (ja) 2008-07-02

Family

ID=24275287

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32889796A Expired - Lifetime JP4112033B2 (ja) 1995-12-08 1996-12-09 信頼されたソースからの検証不能プログラムを使用するための機能を有する検証可能プログラムを実行するシステム及び方法

Country Status (11)

Country Link
US (2) US5692047A (ja)
EP (1) EP0778520B1 (ja)
JP (1) JP4112033B2 (ja)
KR (1) KR100433319B1 (ja)
CN (1) CN1097771C (ja)
AU (1) AU717615B2 (ja)
CA (1) CA2190556A1 (ja)
DE (1) DE69634684T2 (ja)
HK (1) HK1000846A1 (ja)
SG (1) SG75108A1 (ja)
TW (1) TW355768B (ja)

Families Citing this family (216)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10361802B1 (en) 1999-02-01 2019-07-23 Blanding Hovenweep, Llc Adaptive pattern recognition based control system and method
US6237096B1 (en) * 1995-01-17 2001-05-22 Eoriginal Inc. System and method for electronic transmission storage and retrieval of authenticated documents
US7743248B2 (en) * 1995-01-17 2010-06-22 Eoriginal, Inc. System and method for a remote access service enabling trust and interoperability when retrieving certificate status from multiple certification authority reporting components
US7162635B2 (en) * 1995-01-17 2007-01-09 Eoriginal, Inc. System and method for electronic transmission, storage, and retrieval of authenticated electronic original documents
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
US20120166807A1 (en) 1996-08-12 2012-06-28 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
US5892900A (en) 1996-08-30 1999-04-06 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
CN1912885B (zh) 1995-02-13 2010-12-22 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
AU5953296A (en) 1995-05-30 1996-12-18 Corporation For National Research Initiatives System for distributed task execution
FR2742245B1 (fr) * 1995-12-08 1998-01-23 Transtar Procede de manipulation de modeles de donnees utilises en genie logiciel
US5692047A (en) * 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US6075863A (en) * 1996-02-28 2000-06-13 Encanto Networks Intelligent communication device
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
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
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
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
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed 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
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
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US5978484A (en) * 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
US5794049A (en) * 1996-06-05 1998-08-11 Sun Microsystems, Inc. Computer system and method for executing architecture specific code with reduced run-time memory space requirements
US6161121A (en) * 1996-07-01 2000-12-12 Sun Microsystems, Inc. Generic transfer of exclusive rights
US5987123A (en) * 1996-07-03 1999-11-16 Sun Microsystems, Incorporated Secure file system
AU2003203649B2 (en) * 1996-08-12 2006-03-02 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
US7590853B1 (en) * 1996-08-12 2009-09-15 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
AU2004240210B2 (en) * 1996-08-12 2008-03-06 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
US6089460A (en) * 1996-09-13 2000-07-18 Nippon Steel Corporation Semiconductor device with security protection function, ciphering and deciphering method thereof, and storage medium for storing software therefor
US6857099B1 (en) 1996-09-18 2005-02-15 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
US5958050A (en) * 1996-09-24 1999-09-28 Electric Communities Trusted delegation system
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5944823A (en) * 1996-10-21 1999-08-31 International Business Machines Corporations Outside access to computer resources through a firewall
US7613926B2 (en) * 1997-11-06 2009-11-03 Finjan Software, Ltd Method and system for protecting a computer and a network from hostile downloadables
US6167520A (en) * 1996-11-08 2000-12-26 Finjan Software, Inc. System and method for protecting a client during runtime from hostile downloadables
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
US5937193A (en) * 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US6367012B1 (en) * 1996-12-06 2002-04-02 Microsoft Corporation Embedding certifications in executable files for network transmission
US6148401A (en) * 1997-02-05 2000-11-14 At&T Corp. System and method for providing assurance to a host that a piece of software possesses a particular property
US5915085A (en) * 1997-02-28 1999-06-22 International Business Machines Corporation Multiple resource or security contexts in a multithreaded application
US5905895A (en) * 1997-03-07 1999-05-18 International Business Machines Corporation Method and system for optimizing non-native bytecodes before bytecode interpretation
US5946493A (en) * 1997-03-28 1999-08-31 International Business Machines Corporation Method and system in a data processing system for association of source code instructions with an optimized listing of object code instructions
US6167522A (en) * 1997-04-01 2000-12-26 Sun Microsystems, Inc. Method and apparatus for providing security for servers executing application programs received via a network
US6381698B1 (en) 1997-05-21 2002-04-30 At&T Corp System and method for providing assurance to a host that a piece of software possesses a particular property
ATE246820T1 (de) * 1997-05-29 2003-08-15 Sun Microsystems Inc Verfahren und vorrichtung zur versiegelung und unterschrift von objekten
US6175924B1 (en) 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6065046A (en) * 1997-07-29 2000-05-16 Catharon Productions, Inc. Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network
US5970252A (en) * 1997-08-12 1999-10-19 International Business Machines Corporation Method and apparatus for loading components in a component system
US6093215A (en) * 1997-08-12 2000-07-25 International Business Machines Corporation Method and apparatus for building templates in a component system
US6195794B1 (en) 1997-08-12 2001-02-27 International Business Machines Corporation Method and apparatus for distributing templates in a component system
US6182279B1 (en) 1997-08-12 2001-01-30 International Business Machines Corporation Method and apparatus for storing templates in a component system
US5978579A (en) * 1997-08-12 1999-11-02 International Business Machines Corporation Architecture for customizable component system
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
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6128774A (en) * 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
US7975305B2 (en) * 1997-11-06 2011-07-05 Finjan, Inc. Method and system for adaptive rule-based content scanners for desktop computers
US7418731B2 (en) * 1997-11-06 2008-08-26 Finjan Software, Ltd. Method and system for caching at secure gateways
US8225408B2 (en) * 1997-11-06 2012-07-17 Finjan, Inc. Method and system for adaptive rule-based content scanners
IL122314A (en) * 1997-11-27 2001-03-19 Security 7 Software Ltd Method and system for enforcing a communication security policy
US6334189B1 (en) * 1997-12-05 2001-12-25 Jamama, Llc Use of pseudocode to protect software from unauthorized use
US6044467A (en) * 1997-12-11 2000-03-28 Sun Microsystems, Inc. Secure class resolution, loading and definition
US6418444B1 (en) 1997-12-11 2002-07-09 Sun Microsystems, Inc. Method and apparatus for selective excution of a computer program
JP2002509313A (ja) 1998-01-16 2002-03-26 メディアドナ、インコーポレイテッド ピアコンポーネントを認証するためのシステムおよび方法
US7268700B1 (en) 1998-01-27 2007-09-11 Hoffberg Steven M Mobile communication device
CN1292115A (zh) * 1998-02-26 2001-04-18 太阳微系统公司 分布系统中动态验证信息的装置和方法
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
WO1999044133A2 (en) 1998-02-26 1999-09-02 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
JP2001525971A (ja) * 1998-03-13 2001-12-11 ツーウェイ コーポレイション 保護環境下での文書発行のための方法および装置
US5999732A (en) * 1998-03-23 1999-12-07 Sun Microsystems, Inc. Techniques for reducing the cost of dynamic class initialization checks in compiled code
US6684332B1 (en) 1998-06-10 2004-01-27 International Business Machines Corporation Method and system for the exchange of digitally signed objects over an insecure network
WO1999066383A2 (en) * 1998-06-15 1999-12-23 Dmw Worldwide, Inc. Method and apparatus for assessing the security of a computer system
US6131165A (en) * 1998-06-18 2000-10-10 Sun Microsystems, Inc. Permit for controlling access to services in protected memory systems
US6792606B2 (en) 1998-07-17 2004-09-14 International Business Machines Corporation Method and apparatus for object persistence
US6223287B1 (en) 1998-07-24 2001-04-24 International Business Machines Corporation Method for establishing a secured communication channel over the internet
US6735696B1 (en) * 1998-08-14 2004-05-11 Intel Corporation Digital content protection using a secure booting method and apparatus
US6202201B1 (en) 1998-09-23 2001-03-13 Netcreate Systems, Inc. Text object compilation method and system
US6154842A (en) * 1998-10-13 2000-11-28 Motorola, Inc. Method and system for reducing time and power requirements for executing computer-readable instruction streams in an execution environment having run-time security constraints
US6802006B1 (en) * 1999-01-15 2004-10-05 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US6880155B2 (en) 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
ATE376334T1 (de) * 1999-03-31 2007-11-15 Ericsson Telefon Ab L M Verteilung von dienstausführungsumgebungen unter berücksichtigung einer zentralisierten dienstanbieterumgebung
AU4071500A (en) * 1999-04-05 2000-10-23 Manage Com Management agent and system including the same
US6748580B1 (en) 1999-04-22 2004-06-08 International Business Machines Corporation Method and apparatus for creating software tools using a JTML interface
US6782478B1 (en) * 1999-04-28 2004-08-24 Thomas Probert Techniques for encoding information in computer code
US7421586B2 (en) * 1999-05-12 2008-09-02 Fraunhofer Gesselschaft Protecting mobile code against malicious hosts
WO2000072149A1 (en) * 1999-05-25 2000-11-30 Motorola Inc. Pre-verification of applications in mobile computing
US6658567B1 (en) 1999-06-25 2003-12-02 Geomechanics International, Inc. Method and logic for locking geological data and an analyzer program that analyzes the geological data
US6681329B1 (en) * 1999-06-25 2004-01-20 International Business Machines Corporation Integrity checking of a relocated executable module loaded within memory
US7650504B2 (en) * 1999-07-22 2010-01-19 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
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
US6675298B1 (en) * 1999-08-18 2004-01-06 Sun Microsystems, Inc. Execution of instructions using op code lengths longer than standard op code lengths to encode data
US7406603B1 (en) 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
EP1128598A4 (en) * 1999-09-07 2007-06-20 Sony Corp SYSTEM, DEVICE, METHOD AND PROGRAM SUPPORT FOR CONTENT MANAGEMENT
US6985885B1 (en) 1999-09-21 2006-01-10 Intertrust Technologies Corp. Systems and methods for pricing and selling digital goods
US6684387B1 (en) 1999-09-23 2004-01-27 International Business Machines Corporation Method and apparatus for verifying Enterprise Java Beans
US6748538B1 (en) * 1999-11-03 2004-06-08 Intel Corporation Integrity scanner
US7158993B1 (en) 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
US6976258B1 (en) 1999-11-30 2005-12-13 Ensim Corporation Providing quality of service guarantees to virtual hosts
FI111567B (fi) * 1999-12-27 2003-08-15 Nokia Corp Menetelmä ohjelmamoduulin lataamiseksi
JP2001195247A (ja) * 2000-01-07 2001-07-19 Nec Corp ソフトウェアの安全性を検証し保証するシステム及び方法
US6529985B1 (en) 2000-02-04 2003-03-04 Ensim Corporation Selective interception of system calls
US6711607B1 (en) 2000-02-04 2004-03-23 Ensim Corporation Dynamic scheduling of task streams in a multiple-resource system to ensure task stream quality of service
US6560613B1 (en) 2000-02-08 2003-05-06 Ensim Corporation Disambiguating file descriptors
US6754716B1 (en) 2000-02-11 2004-06-22 Ensim Corporation Restricting communication between network devices on a common network
US7343421B1 (en) 2000-02-14 2008-03-11 Digital Asset Enterprises Llc Restricting communication of selected processes to a set of specific network addresses
US6745386B1 (en) * 2000-03-09 2004-06-01 Sun Microsystems, Inc. System and method for preloading classes in a data processing device that does not have a virtual memory manager
US6948003B1 (en) 2000-03-15 2005-09-20 Ensim Corporation Enabling a service provider to provide intranet services
US6651186B1 (en) 2000-04-28 2003-11-18 Sun Microsystems, Inc. Remote incremental program verification using API definitions
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
US6986132B1 (en) 2000-04-28 2006-01-10 Sun Microsytems, Inc. Remote incremental program binary compatibility verification using API definitions
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays 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
US6985937B1 (en) 2000-05-11 2006-01-10 Ensim Corporation Dynamically modifying the resources of a virtual server
US6907421B1 (en) 2000-05-16 2005-06-14 Ensim Corporation Regulating file access rates according to file type
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US6922782B1 (en) * 2000-06-15 2005-07-26 International Business Machines Corporation Apparatus and method for ensuring data integrity of unauthenticated code
US7124408B1 (en) * 2000-06-28 2006-10-17 Microsoft Corporation Binding by hash
US7117371B1 (en) 2000-06-28 2006-10-03 Microsoft Corporation Shared names
US7143024B1 (en) 2000-07-07 2006-11-28 Ensim Corporation Associating identifiers with virtual processes
AU6371500A (en) * 2000-07-25 2002-02-05 Mediadna Inc System and method of verifying the authenticity of dynamically connectable executable images
EP1316171A4 (en) * 2000-08-04 2006-05-03 First Data Corp PERSONNEL AND CONTOUR DIGITAL SIGNATURE SYSTEM
US7552333B2 (en) * 2000-08-04 2009-06-23 First Data Corporation Trusted authentication digital signature (tads) system
US6909691B1 (en) 2000-08-07 2005-06-21 Ensim Corporation Fairly partitioning resources while limiting the maximum fair share
US7032114B1 (en) * 2000-08-30 2006-04-18 Symantec Corporation System and method for using signatures to detect computer intrusions
US6981245B1 (en) 2000-09-14 2005-12-27 Sun Microsystems, Inc. Populating binary compatible resource-constrained devices with content verified using API definitions
WO2002023331A2 (en) * 2000-09-14 2002-03-21 Sun Microsystems, Inc. Remote incremental program binary compatibility verification using api definitions
US6732211B1 (en) 2000-09-18 2004-05-04 Ensim Corporation Intercepting I/O multiplexing operations involving cross-domain file descriptor sets
US6964039B2 (en) * 2000-12-13 2005-11-08 Esmertec Ag Method to create optimized machine code through combined verification and translation of JAVA™ bytecode
US7219354B1 (en) 2000-12-22 2007-05-15 Ensim Corporation Virtualizing super-user privileges for multiple virtual processes
FR2819602B1 (fr) * 2001-01-12 2003-02-21 Gemplus Card Int Procede de gestion d'applications informatiques par le systeme d'exploitation d'un systeme informatique multi-applications
EP1233333A1 (en) * 2001-02-19 2002-08-21 Hewlett-Packard Company Process for executing a downloadable service receiving restrictive access rights to al least one profile file
US6618736B1 (en) 2001-03-09 2003-09-09 Ensim Corporation Template-based creation and archival of file systems
US7181017B1 (en) 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
US6978451B2 (en) * 2001-05-31 2005-12-20 Esmertec Ag Method for fast compilation of preverified JAVA bytecode to high quality native machine code
DE10131395B4 (de) * 2001-06-28 2006-08-17 Daimlerchrysler Ag Verfahren zum Übertragen von Software- Modulen
US7237121B2 (en) * 2001-09-17 2007-06-26 Texas Instruments Incorporated Secure bootloader for securing digital devices
GB0121064D0 (en) * 2001-08-31 2001-10-24 Transitive Technologies Ltd Obtaining translation of generic code representation
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
US20030050981A1 (en) * 2001-09-13 2003-03-13 International Business Machines Corporation Method, apparatus, and program to forward and verify multiple digital signatures in electronic mail
US7143313B2 (en) 2001-11-09 2006-11-28 Sun Microsystems, Inc. Support interface module bug submitter
US7266731B2 (en) 2001-11-13 2007-09-04 Sun Microsystems, Inc. Method and apparatus for managing remote software code update
US7146500B2 (en) * 2001-11-14 2006-12-05 Compass Technology Management, Inc. System for obtaining signatures on a single authoritative copy of an electronic record
US7496757B2 (en) * 2002-01-14 2009-02-24 International Business Machines Corporation Software verification system, method and computer program element
US7240213B1 (en) * 2002-03-15 2007-07-03 Waters Edge Consulting, Llc. System trustworthiness tool and methodology
US20030188180A1 (en) * 2002-03-28 2003-10-02 Overney Gregor T. Secure file verification station for ensuring data integrity
US20070118899A1 (en) * 2002-05-17 2007-05-24 Satyam Computer Services Limited Of Mayfair Centre System and method for automated safe reprogramming of software radios
US20030216927A1 (en) * 2002-05-17 2003-11-20 V. Sridhar System and method for automated safe reprogramming of software radios
EP1546892B1 (en) * 2002-09-04 2017-03-29 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Protecting mobile code against malicious hosts cross references to related applications
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
US6965968B1 (en) 2003-02-27 2005-11-15 Finjan Software Ltd. Policy-based caching
US10275723B2 (en) * 2005-09-14 2019-04-30 Oracle International Corporation Policy enforcement via attestations
US9781154B1 (en) 2003-04-01 2017-10-03 Oracle International Corporation Systems and methods for supporting information security and sub-system operational protocol conformance
US10063523B2 (en) * 2005-09-14 2018-08-28 Oracle International Corporation Crafted identities
US8468330B1 (en) 2003-06-30 2013-06-18 Oracle International Corporation Methods, systems, and data structures for loading and authenticating a module
GB0318197D0 (en) * 2003-08-02 2003-09-03 Koninkl Philips Electronics Nv Copy-protecting applications in a digital broadcasting system
GB0318198D0 (en) * 2003-08-02 2003-09-03 Koninkl Philips Electronics Nv Copy-protected application for digital broadcasting system
US7263690B1 (en) * 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7516331B2 (en) * 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
EP1538509A1 (fr) * 2003-12-04 2005-06-08 Axalto S.A. Procédé de sécurisation de l'éxécution d'un programme contre des attaques par rayonnement
US7287243B2 (en) * 2004-01-06 2007-10-23 Hewlett-Packard Development Company, L.P. Code verification system and method
US7752453B2 (en) * 2004-01-08 2010-07-06 Encryption Solutions, Inc. Method of encrypting and transmitting data and system for transmitting encrypted data
US7526643B2 (en) * 2004-01-08 2009-04-28 Encryption Solutions, Inc. System for transmitting encrypted data
US8031865B2 (en) * 2004-01-08 2011-10-04 Encryption Solutions, Inc. Multiple level security system and method for encrypting data within documents
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
US7539975B2 (en) * 2004-06-30 2009-05-26 International Business Machines Corporation Method, system and product for determining standard Java objects
US7493596B2 (en) * 2004-06-30 2009-02-17 International Business Machines Corporation Method, system and program product for determining java software code plagiarism and infringement
US7647581B2 (en) * 2004-06-30 2010-01-12 International Business Machines Corporation Evaluating java objects across different virtual machine vendors
US7590589B2 (en) 2004-09-10 2009-09-15 Hoffberg Steven M Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference
US8312431B1 (en) * 2004-09-17 2012-11-13 Oracle America, Inc. System and computer readable medium for verifying access to signed ELF objects
WO2006054128A1 (en) 2004-11-22 2006-05-26 Nokia Corporation Method and device for verifying the integrity of platform software of an electronic device
JP4727278B2 (ja) * 2005-04-05 2011-07-20 株式会社エヌ・ティ・ティ・ドコモ アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム
US8375369B2 (en) * 2005-04-26 2013-02-12 Apple Inc. Run-time code injection to perform checks
US8838974B2 (en) * 2005-07-15 2014-09-16 The Mathworks, Inc. System and method for verifying the integrity of read-only components in deployed mixed-mode applications
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
JP4537940B2 (ja) * 2005-11-21 2010-09-08 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、及びプログラム実行制御方法
US8250559B2 (en) * 2006-04-12 2012-08-21 Oracle America, Inc. Supporting per-program classpaths with class sharing in a multi-tasking virtual machine
KR100728517B1 (ko) * 2006-12-28 2007-06-15 메크로비젼 코오포레이션 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법
CN101226569A (zh) * 2007-01-19 2008-07-23 国际商业机器公司 在虚拟机中验证代码模块的方法及装置
US9122864B2 (en) * 2008-08-05 2015-09-01 International Business Machines Corporation Method and apparatus for transitive program verification
US8301903B2 (en) * 2009-02-27 2012-10-30 Research In Motion Limited Low-level code signing mechanism
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
CA2774728C (en) * 2009-11-13 2019-02-12 Irdeto Canada Corporation System and method to protect java bytecode code against static and dynamic attacks within hostile execution environments
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8782435B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
WO2013059368A1 (en) 2011-10-17 2013-04-25 Intertrust Technologies Corporation Systems and methods for protecting and governing genomic and other information
US9015680B1 (en) * 2012-02-24 2015-04-21 Google Inc. Differential analysis of translation of software for the detection of flaws
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US10001978B2 (en) * 2015-11-11 2018-06-19 Oracle International Corporation Type inference optimization
KR101691600B1 (ko) * 2016-04-28 2017-01-02 지티원 주식회사 공통 구조 변환 기반 프로그램 분석 방법 및 장치
CN111770206B (zh) * 2020-08-31 2020-12-29 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
US12079374B2 (en) * 2021-12-01 2024-09-03 International Business Machines Corporation Secure software compilation and software verification
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224160A (en) * 1987-02-23 1993-06-29 Siemens Nixdorf Informationssysteme Ag Process for securing and for checking the integrity of the secured programs
US4868877A (en) * 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
GB8901932D0 (en) * 1989-01-28 1989-03-15 Int Computers Ltd Data processing system
US4926476A (en) * 1989-02-03 1990-05-15 Motorola, Inc. Method and apparatus for secure execution of untrusted software
US5280613A (en) * 1990-06-25 1994-01-18 Hewlett-Packard Company ANDF installer using the HPcode-Plus compiler intermediate language
US5504814A (en) * 1991-07-10 1996-04-02 Hughes Aircraft Company Efficient security kernel for the 80960 extended architecture
US5301231A (en) * 1992-02-12 1994-04-05 International Business Machines Corporation User defined function facility
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
FR2703800B1 (fr) * 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
US5475753A (en) * 1993-11-12 1995-12-12 Matsushita Electric Corporation Of America Apparatus and method for certifying the delivery of information
US5559884A (en) * 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
US5692047A (en) * 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources

Also Published As

Publication number Publication date
KR970049730A (ko) 1997-07-29
US5692047A (en) 1997-11-25
DE69634684T2 (de) 2006-01-19
DE69634684D1 (de) 2005-06-09
US6070239A (en) 2000-05-30
EP0778520B1 (en) 2005-05-04
EP0778520A2 (en) 1997-06-11
TW355768B (en) 1999-04-11
CN1097771C (zh) 2003-01-01
AU717615B2 (en) 2000-03-30
JPH1011281A (ja) 1998-01-16
AU7185696A (en) 1997-06-12
CN1156286A (zh) 1997-08-06
EP0778520A3 (en) 1999-03-31
CA2190556A1 (en) 1997-06-09
KR100433319B1 (ko) 2004-08-09
SG75108A1 (en) 2000-09-19
HK1000846A1 (en) 2003-04-11

Similar Documents

Publication Publication Date Title
JP4112033B2 (ja) 信頼されたソースからの検証不能プログラムを使用するための機能を有する検証可能プログラムを実行するシステム及び方法
US6067575A (en) System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs
US7117371B1 (en) Shared names
JP3982857B2 (ja) 動的にリンクされた実行可能モジュールの使用を保護するシステム及び方法
US7434263B2 (en) System and method for secure storage data using a key
US6647495B1 (en) Information processing apparatus and method and recording medium
US7062650B2 (en) System and method for verifying integrity of system with multiple components
US6327652B1 (en) Loading and identifying a digital rights management operating system
Gong Java security architecture (JDK 1.2)
US8473753B2 (en) Real-time secure self-acquiring root authority
Gong Java 2 platform security architecture
US8284942B2 (en) Persisting private/public key pairs in password-encrypted files for transportation to local cryptographic store
US7925881B2 (en) Method and apparatus for preventing rogue implementations of a security-sensitive class interface
JP4698925B2 (ja) 動的に接続可能な実行可能イメージの真正性検証システム及び方法
Faupel Status of Industry Work on Signed Mobile Code
Mohay et al. The CASS shell

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070326

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080409

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120418

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120418

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130418

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130418

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140418

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

EXPY Cancellation because of completion of term