JP2000132388A - ソフトウェア・コンポ―ネントを処理および配布するための方法および装置 - Google Patents

ソフトウェア・コンポ―ネントを処理および配布するための方法および装置

Info

Publication number
JP2000132388A
JP2000132388A JP11286146A JP28614699A JP2000132388A JP 2000132388 A JP2000132388 A JP 2000132388A JP 11286146 A JP11286146 A JP 11286146A JP 28614699 A JP28614699 A JP 28614699A JP 2000132388 A JP2000132388 A JP 2000132388A
Authority
JP
Japan
Prior art keywords
software component
compiled
encrypted
java
class
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
JP11286146A
Other languages
English (en)
Other versions
JP3377087B2 (ja
Inventor
Alan Michael Webb
アラン・マイケル・ウェブ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2000132388A publication Critical patent/JP2000132388A/ja
Application granted granted Critical
Publication of JP3377087B2 publication Critical patent/JP3377087B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)

Abstract

(57)【要約】 【課題】 【解決手段】 サーバからのクラス・ファイル・コンポ
ーネントの取出しと、クラス・ファイル内のフラグまた
は属性によって示されるコンパイル済み部分に関するコ
ンポーネントの検査とを含む、クライアント側でクラス
・ファイル・コンポーネントを処理する方法。コンパイ
ル済み部分が検出された場合には、さらにクラス・ファ
イルを検査して、その部分が暗号化されているかどうか
を調べる。これは、やはりフラグまたは属性によって示
される。その部分が暗号化されている場合には、復号化
する。本発明のもう1つの態様は、ソフトウェア・コン
ポーネントの少なくとも一部を暗号化するステップと、
そのコンポーネントの暗号化された部分のそれぞれにつ
いて「コンパイル済み」属性と「暗号化済み」属性をセ
ットするステップとを含む、ソフトウェア・コンポーネ
ントを配布する方法である。このコンポーネントは、ク
ライアントがアクセスできるサーバに格納される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、Javaメソッド
の暗号化に関し、具体的には、配布されたJavaプロ
グラムの実際の実装を隠し、その使用法を制限するため
の手段としての暗号化の使用に関する。
【0002】
【従来の技術】Java言語の長所の1つが、バイト・
コードの高水準な性質であり、これによって、簡単に理
解できプラットフォーム独立なプログラミング言語が可
能になる。高水準バイト・コードの短所は、理解しやす
いソース・コードに変換できることである。たとえば、
バイト・コードは、再コンパイル時に可読なラベルと変
数名を保持している。ソフトウェア開発者は、簡単にJ
avaクラスをリバース・エンジニアリングすることが
できるので、Javaアプリケーションの開発を思いと
どまる。Javaアプリケーションの多くの所有権情報
を、リバース・エンジニアリングを介して暴露すること
ができる。
【0003】リバース・エンジニアリングの問題に対す
る解決策は、送信された形のクラスを隠すために暗号化
を使用して、Javaプログラムを少なくとも通常のネ
イティブ・オブジェクト・コードと同等に安全にするこ
とである。しかし、アプリケーションは、使用する前に
復号化されなければならず、これによって、アプリケー
ションを使用できるユーザが、復号化の方法を知ってい
るユーザに制限される。
【0004】もう1つの解決策は、出荷の前にアプリケ
ーションを暗号化し、暗号化されたアプリケーションを
出荷し、計算機に導入する前に復号化することである。
この解決策は、ホスト計算機にアプリケーションを統合
するための独自の導入プログラムを有する独立型アプリ
ケーションの場合に機能する。しかし、インターネット
上のアプレットは、JVMによって直接にダウンロード
され、アプレットを復号化することのできる前処理を有
しない。JVMは、サン・マイクロシステムズ社によっ
て定義されたものであり、アプレットのダウンロードを
制御する。暗号化されたアプレットを扱うためにJVM
を変更する予定は現在のところ存在せず、一方的にJV
Mを変更すると、その特定のJVMが非標準になるはず
である。特定の種類の復号化のためにこのように普及し
た標準コンポーネントを変更することには困難が伴うの
で、このアプローチは不適切である。
【0005】Java仮想マシン(JVM)は、Jav
aプログラミング言語の主要コンポーネントである。こ
れは、オペレーティング・システムとプラットフォーム
にとって独特であり、Javaアプリケーションからの
Javaバイト・コード命令を解釈し、組込みルーチン
とオペレーティング・システム・ルーチンを使用してJ
avaバイト・コード命令を処理する。JVMによるバ
イト・コードの解釈の短所の1つが、同一のバイト・コ
ードが何回も解釈される可能性があることである。これ
は、Java解釈の処理が、コンパイルされたコード
(たとえばC++のオブジェクト・コード・プログラ
ム)よりかなり遅い理由の1つである。
【0006】Javaバイト・コードを、解釈するので
はなくコンパイルすると、プラットフォーム依存コード
が直接に実行されるようになるので、実行の速度が高ま
る。プラットフォーム固有コードは、ジャスト・イン・
タイム(JIT)によって記憶され、バイト・コードが
解釈され使用されていた時に必ず使用される。JIT
は、しばしばVMS内に含まれるプラットフォーム固有
のソフトウェア・コンパイラである。JITは、Jav
aバイト・コードをその場でネイティブ機械命令にコン
パイルし、これによって、解釈の必要を減らす。
【0007】しかし、JITコンパイルは実行に時間が
かかるので、バイト・コードが1回だけ使用される場合
には、まずコンパイルすることは誤った最適化になる可
能性がある。この場合、実際に単純な解釈の方がよいは
ずである。バイト・コードの使用状況を監視し、最もよ
く使用されるバイト・コードだけをコンパイルすること
によって、速度の向上を達成できる。このアプローチ
は、JVMの将来のリリースで実装される予定である。
開発者は、Javaバイト・コードのうちでコンパイル
によって利益を得る部分を事前にコンパイルすることも
できる。複数の計算機のためのプラットフォーム依存コ
ードを、プラットフォーム独立コードと共に含め、その
結果、Javaアプリケーションが、選択されたプラッ
トフォームに対して最適化され、選択されなかったプラ
ットフォームでも動作する(しかし、最適化はされな
い)ようにすることができる。明らかに、これはすべて
のプラットフォームの利益にならず、Javaの主要な
長所が削られるが、よく使用されるプラットフォームで
はかなりの利益が得られる。
【0008】Javaアプリケーションは、多数のJa
vaクラス・ファイル(ClassFile)から構成される。
各クラス・ファイルは、Javaオブジェクト指向クラ
スを表し、JVMでクラス・オブジェクトを構築するの
に必要なデータを含むフィールドが含まれる。このフィ
ールドには、クラスのプロパティを格納するフィール
ド、クラスの実行のためのクラス・メソッドおよび、ク
ラスをリンクするためにJVMによって使用される属性
が含まれる。クラス・ファイルは、JVMのクラス・ロ
ーダ(ClassLoader)によって取り出され、その結果、
構文を検証でき、JVMにリンクでき、参照を解決でき
るようになる。属性の中には、「コンパイル済みメソッ
ド」属性があり、これは、そのクラス・ファイルに特定
のメソッドのためのプラットフォーム依存機械コードが
含まれることを示す。そのクラス・ファイルに、そのメ
ソッドのJavaバイト・コードも含めることができ
る。
【0009】JVMは、クラス・ファイルを取り出す時
に、属性を読み取るが、あるメソッドにコンパイル済み
メソッド・コードが付加されていることが示されない場
合には、そのメソッドのバイト・コードがJVMメソッ
ド区域メモリに置かれる。メソッドにコンパイル済みコ
ードが付加されていることが示される場合には、JVM
は、コンパイル済みコードの責任をJITコンパイラに
渡す。これは、実行メモリへのコンパイル済みコードの
格納を処理するものがJITだからであり、コンパイル
済みコードの処理は、事前にコンパイルされたコードと
JITがコンパイルしたコードの両方について一貫して
いなければならないからである。
【0010】
【課題を解決するための手段】本発明の1態様によれ
ば、請求項1に記載の方法が提供される。
【0011】ソフトウェアにおける発想をより安全にす
ることによって、会社が本格的なJavaアプリケーシ
ョンを開発する可能性が高まる。既存のJIT機構を使
用することによって、このような保護は、クライアント
側の特殊化されたJVM技術に依存せず、アプリケーシ
ョン・ベンダは、適当なJIT実装を供給しなければな
らない。これによって、本発明の実施例を既存のJVM
に組み込むことが可能になる。セキュリティのレベル
は、オープンであり、ハードコーディングされた鍵か
ら、復号化処理中に配布される1回限りの鍵を使用する
オン・ザ・フライ暗号化までの範囲にわたる。後者の場
合、配布されるクラスは、それがダウンロードされた場
合に限って復号化できる。
【0012】
【発明の実施の形態】Java環境10は、図1に示す
ような、電源を投入され、動作している計算システム1
2に常駐する。計算システムには、たとえば、Pentium
IIベースのマイクロプロセッサ16、ランダム・アクセ
ス・メモリ18およびMicrosoft Windows NTであるオペ
レーティング・システム20を有するコンピュータ・プ
ラットフォーム14が含まれる。コンピュータ・プラッ
トフォーム14には、コンピュータ周辺機器すなわち、
キーボード22、マウス24、ビデオ表示装置(VD
U)26および、ハード・ドライブなどの記憶システム
28が接続される。コンピュータ・プラットフォーム1
4は、ネットワーク・アダプタ(図示せず)を介してネ
ットワーク30にも接続され、このネットワークを介し
てインターネット・ゲートウェイ経由でインターネット
に接続される。電源を投入された時に、コンピュータ・
システムは、まずオペレーティング・システム20を記
憶システム28からメモリ18にロードする。オペレー
ティング・システム20は、通常は、Java環境1
0、Netscape Navigatorなどのブラウザ・ソフトウェア
32および他のソフトウェア・アプリケーションの記憶
システム28からのローディングを制御する。オペレー
ティング・システム20は、通常、計算システム12の
メモリ割振りを制御し、メモリ18内に、Javaアプ
リケーション34と、Javaアプレット36を埋め込
まれたウェブ・ページとを格納するための空間を作る。
Javaアプリケーション34は、記憶システム28か
らロードするか、ワールド・ワイド・ウェブに接続され
たブラウザ・ソフトウェア32を使用してインターネッ
トからダウンロードすることができる。ブラウザ・ソフ
トウェア32は、Javaアプレットを埋め込まれたウ
ェブ・ページをダウンロードすることもできる。この実
施例のJava環境10の主要なコンポーネントは、J
ava仮想マシン(JVM)38、ジャスト・イン・タ
イムJavaコンパイラ(JIT)40および擬似ジャ
スト・イン・タイム・コンパイラ(JIT)42であ
る。JVM38とJIT40は、Java開発者キット
(JDK)の一部であり、それぞれ異なる会社によって
書かれていてもよい。たとえば、サン・マイクロシステ
ムズ社のウィンドウズ版JDK1.1には、サン・マイ
クロシステムズ社のJVMとシマンテック社のJITが
含まれる。この実施例では、同一の供給者が、Java
環境にJITと擬似JITを供給すると規定している。
【0013】図2では、Javaソース・コード44
(図3)を処理して、JVM38(図1)での実行のた
めのJavaオブジェクトを生成するフローが示されて
いる。図3でのJavaコードの表現は、図2のステッ
プの一部と対応する。Javaコンパイラ(Java
c)46は、エディタを使用して開発者によって書かれ
たJavaソース・コード44を取り出し、すべてのプ
ラットフォームで走行するJVMによって認識される計
算機独立のバイト・コードに変換する(ステップ1)。
このバイト・コードは、オブジェクト指向クラスのコレ
クションであり、各クラスは、クラス・ファイル48
(図3)に格納されている。図3のクラス・ファイル4
8は、その中にカプセル化された3つのメソッドM1、
M2およびM3のバイト・コードを示している。ポスト
Javaコンパイル処理(ステップ2A)が、ポストJ
avacコンパイル・コンポーネント50Aによってク
ラス・ファイル48に適用され、これによって、いくつ
かの(開発者が選択した)メソッドがコンパイルされ、
クラス・ファイルの「コンパイル済みメソッド」属性が
セットされる。ポストJavac処理の後に、クラス・
ファイル48は、変更済みクラス・ファイル52にな
る。コンパイル済みメソッドは、図3では、変更済みク
ラス・ファイル52のメソッドM1によって表される。
この実施例では、ポストJavac暗号化処理(ステッ
プ2B)が、ポストJavac暗号化コンポーネント5
0Bによってクラス・ファイル48に適用されて、いく
つかのメソッド、この例ではメソッドM2が、暗号化さ
れる。「コンパイル済みメソッド」属性がセットされ
る。また、新たに定義された属性(これはJava言語
仕様で許容される)である「暗号化済みメソッド」もセ
ットされるが、これは、図3ではメソッドM2によって
表される。メソッドM3は、ポストJavac処理を受
けず、図3に示されているようにピュアJavaバイト
・コードのままになる。変更済みクラス・ファイル52
は、他のクラス・ファイルと共に、Javaアプリケー
ションまたはJavaアプレットの一部として記憶され
る。Javaアプリケーションは、サーバ上または接続
されたクライアントのハード・ドライブ上に置くことが
でき、変更済みクラス・ファイルは、そのアプリケーシ
ョンがサーバまたはハード・ドライブからロードされる
時に、コンピュータ・システムに転送される。Java
アプレットは、ウェブ・ページの一部であり、変更済み
クラス・ファイル52は、ブラウザ・ソフトウェア32
によってウェブ・ページがダウンロードされる時に、計
算システム12に転送される。
【0014】JVM38には、サーバまたは記憶装置か
ら変更済みクラス・ファイル52を取り出し、JVM3
8との統合に備えてキャッシュ記憶する(ステップ3)
JVMクラス・ローダ54(図3)が含まれる。JVM
クラス・ローダ54は、Java言語仕様に対して構文
を検査することによってバイト・コードを検証し(ステ
ップ4)、バイト・コード内でエラーが見つかった場合
には、エラーを返し、ローディングを停止する。次に、
JVMクラス・ローダ54は、変更済みクラス・ファイ
ル52からクラス・オブジェクトを準備し(ステップ
5)、これによって、クラス・オブジェクトがJVMに
統合化され、JavaアプリケーションまたはJava
アプレットの一部としてそのクラス・オブジェクトを実
行できるようになる。この準備または統合化は、リンク
とも呼ばれ、これには、特に、JVMヒープ内でのクラ
ス・オブジェクト変数用のメモリ空間の作成と、メソッ
ド区域メモリ56内でのメソッド・バイト・コードM2
およびM3の配置と、コンパイル済みメソッドの扱いが
含まれる。コンパイル済みメソッドと暗号化済みメソッ
ドに使用されるクラス・オブジェクト準備処理のうち、
本発明の実施例の一部である部分を図4に示す。クラス
・オブジェクトの準備の後に、JVMクラス・ローダ
は、クラス・オブジェクト内のシンボルを解決する(ス
テップ6)が、これには、参照されている他のクラス・
ファイルの取出しが含まれる。この時点で、クラス・オ
ブジェクトは、解釈の準備ができている。クラス・ロー
ダによって実行される最後のステップ(図2のステップ
4、5および6)は、使用されるJVMの種類に大いに
依存するので、図示の順序で実行する必要はない。
【0015】「コンパイル済みメソッド」に関するクラ
ス・オブジェクトの準備を、図4に示す。クラス・ロー
ダは、JVM内での統合のために変更済みクラス・ファ
イル52からのメソッドを準備する(ステップ10
0)。まず、メソッド区域メモリ56内にメソッド・テ
ーブル58が作成される(ステップ102)。このテー
ブルは、JVM内でメソッドを参照するのに使用され
る。このテーブルの3つのフィールドすなわち、メソッ
ド名、メソッド・ポインタおよびメソッドのコンパイル
済みコード・リンク・ベクトルを説明する。メソッド名
は、メソッドを表すシンボルの組であり、この例の3つ
のメソッド名は、M1、M2およびM3である。メソッ
ド名は、メソッドのバイト・コードのポインタまたはコ
ンパイル済みのプラットフォーム固有コードのリンク・
ベクトルをテーブル索引するために、テーブルへのイン
デックスとして使用される。ポインタには、そのメソッ
ドのバイト・コードが常駐するメモリ・アドレスが含ま
れる。リンク・ベクトルには、コンパイル済みのプラッ
トフォーム依存コードが常駐する実行可能メモリ内のメ
モリ・アドレスが含まれ、この形では、リンク・ベクト
ルは、実際にはポインタでもある。JVMは、クラス・
ファイル内の各メソッドを調べる(ステップ104)。
メソッドごとに、JVM38は、「コンパイル済みメソ
ッド」属性がセットされているかどうかを調べる(ステ
ップ106A)。そうである場合には、JVM38は、
JIT40に通常の形で制御を渡すが、この実施例で
は、通常はJIT40を指す「コンパイル済みメソッ
ド」ポインタが、擬似JIT42を指しており、制御は
擬似JIT42に渡される。「コンパイル済みメソッ
ド」属性がセットされていない場合には、JVMは、処
理を継続し、制御を放棄せず、変更済みクラス・ファイ
ル52からバイト・コードのメソッド(この例ではM
3)を取り出し(ステップ110A)、これをJVMメ
ソッド区域メモリ56に格納する(ステップ112
A)。その後、メソッド・テーブル58内のポインタ
に、メモリ内のメソッドM3のアドレスをセットする
(ステップ114A)。クラス・ファイルの次のメソッ
ドを処理する場合は、ステップ116からステップ10
6Aに戻り、次のメソッドの「コンパイル済みメソッ
ド」属性を検査する。他のメソッドが残っていない場合
には、JVMは、通常のクラス・オブジェクトの準備を
継続する。
【0016】ステップ106Aで「コンパイル済みメソ
ッド」属性がセットされている場合、制御は擬似JIT
42に渡される。擬似JIT42は、クラス・ファイル
で暗号化済み属性がセットされているかどうかを検査し
(ステップ106B)、それがセットされていない場合
には、JIT40に制御が渡され、「普通の」コンパイ
ル済みメソッドの処理が継続されるが(ステップ106
C)、それがセットされている場合には、暗号化済みメ
ソッド(図2のステップ2BでポストJavac暗号化
処理によって暗号化された)が取り出される(ステップ
110B)。この例では、取り出される暗号化済みのメ
ソッドは、M2である。擬似JITは、復号化アルゴリ
ズムを適用し、そのメソッドを復号化し、その後、復号
化されたメソッドをJVMのメソッド区域メモリに格納
する(ステップ112B)。メソッド・テーブルのポイ
ンタを、メソッド・メモリ区域内のメソッドの位置を用
いて更新し(ステップ114B)、制御をJVMに返し
て、クラス・ファイルの次のメソッドを処理するか、ク
ラス・オブジェクトの準備に戻る(ステップ116)。
【0017】ステップ106Bで暗号化済み属性がセッ
トされていない場合、制御はJIT40に渡される。コ
ンパイル済みメソッドの普通のJIT処理が実行される
(ステップ106C)が、これには、コンパイル済みメ
ソッドの取り出し(ステップ110C)、実行可能メモ
リへのコンパイル済みメソッドの格納(ステップ112
C)、および、メソッド・テーブル内のリンク・ベクト
ルのセット(ステップ114C)が含まれる。制御がJ
VMに返されて、クラス・ファイルの次のメソッドが処
理されるか、クラス・オブジェクトの準備に戻る(ステ
ップ116)。
【0018】要約すると、サーバからのクラス・ファイ
ル・コンポーネントの取出しと、クラス・ファイル内の
フラグまたは属性によって示されるコンパイル済み部分
に関するコンポーネントの検査とを含む、クライアント
側でクラス・ファイル・コンポーネントを処理する方法
を説明した。コンパイル済み部分が検出された場合に
は、さらにクラス・ファイルを検査して、その部分が暗
号化されているかどうかを調べる。これは、やはりフラ
グまたは属性によって示される。その部分が暗号化され
ている場合には、復号化する。本発明のもう1つの態様
は、ソフトウェア・コンポーネントの少なくとも一部を
暗号化するステップと、そのコンポーネントの暗号化さ
れた部分のそれぞれについて「コンパイル済み」属性と
「暗号化済み」属性をセットするステップとを含む、ソ
フトウェア・コンポーネントを配布する方法である。こ
のコンポーネントは、クライアントがアクセスできるサ
ーバに格納される。
【0019】JavaおよびJavaに基づくマーク
は、米サン・マイクロシステムズ社の商標または登録商
標である。MicrosoftおよびWindowsは、米マイクロソフ
ト社の商標または登録商標である。NetscapeおよびNets
cape Navigatorは、米ネットスケープ・コミュニケーシ
ョンズ社の商標である。
【0020】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0021】(1)ソフトウェア・コンポーネントをサ
ーバから取り出すステップと、コンパイル済み部分に関
して前記ソフトウェア・コンポーネントを検査するステ
ップと、コンパイル済み部分が検出された場合に、前記
部分が暗号化されているかどうかを検査するステップ
と、暗号化されている場合に、前記部分を復号化するス
テップとを含む、ソフトウェア・コンポーネントを処理
する方法。 (2)前記ソフトウェア・コンポーネントが、Java
クラスファイルである、上記(1)に記載の方法。 (3)前記ソフトウェア・コンポーネントが、Java
仮想マシンによって取り出され、コンパイル済み部分に
ついて検査される、上記(2)に記載の方法。 (4)コンパイル済み部分が検出された場合に、前記J
ava仮想マシンが、擬似JITコードに制御を渡す、
上記(3)に記載の方法。 (5)前記部分が、前記擬似JITによって、暗号化に
ついて検査され、必要な場合に復号化される、上記
(4)に記載の方法。 (6)前記部分が暗号化されておらず、コンパイルされ
ている場合に、前記擬似JITが、実際のJITに制御
を渡す、上記(5)に記載の方法。 (7)ソフトウェア・コンポーネントの少なくとも一部
を暗号化するステップと、前記ソフトウェア・コンポー
ネントの暗号化された部分のそれぞれについて、「コン
パイル済み」属性と「暗号化済み」属性とをセットする
ステップと、前記ソフトウェア・コンポーネントを、ク
ライアントによってアクセスできるサーバに格納するス
テップとを含む、ソフトウェア・コンポーネントを配布
する方法。 (8)前記ソフトウェア・コンポーネントが、オブジェ
クト指向クラスを表し、前記オブジェクト指向クラスの
メソッドのうちの1つまたは複数が暗号化される、上記
(7)に記載の方法。 (9)前記ソフトウェア・コンポーネントが、Java
クラス・ファイルである、上記(7)に記載の方法。 (10)サーバからソフトウェア・コンポーネントを取
り出すための手段と、コンパイル済み部分について前記
ソフトウェア・コンポーネントを検査するための手段
と、コンパイル済み部分が検出された場合に、前記部分
が暗号化されているかどうかを検査するための手段と、
暗号化されている場合に、前記部分を復号化するための
手段とを含む、ソフトウェア・コンポーネントを処理す
るための装置。 (11)前記ソフトウェア・コンポーネントが、Jav
aクラス・ファイルである、上記(10)に記載の装
置。 (12)前記取り出すための手段と、前記検査するため
の手段とが、Java仮想マシンの一部である、上記
(10)または(11)に記載の装置。 (13)ソフトウェア・コンポーネントの少なくとも一
部を暗号化するための手段と、前記ソフトウェア・コン
ポーネントの暗号化された部分のそれぞれについて、
「コンパイル済み」属性と「暗号化済み」属性とをセッ
トするための手段と、クライアントによってアクセスで
きるサーバに、前記ソフトウェア・コンポーネントを格
納するための手段とを含む、ソフトウェア・コンポーネ
ントを配布するための装置。 (14)前記ソフトウェア・コンポーネントが、オブジ
ェクト指向クラスを表し、前記オブジェクト指向クラス
のメソッドのうちの1つまたは複数が暗号化される、上
記(13)に記載の装置。 (15)前記ソフトウェア・コンポーネントが、Jav
aクラス・ファイルである、上記(13)に記載の装
置。 (16)サーバからソフトウェア・コンポーネントを取
り出すステップと、コンパイル済み部分について前記ソ
フトウェア・コンポーネントを検査するステップと、コ
ンパイル済み部分が検出された場合に、前記部分が暗号
化されているかどうかを検査するステップと、暗号化さ
れている場合に、前記部分を復号化するステップとを含
む、コンピュータ上で実行された時に前記ソフトウェア
・コンポーネントを処理するデータ処理方法を実行する
ための、コンピュータ可読記憶媒体に格納されたコンピ
ュータ・プログラム製品。 (17)ソフトウェア・コンポーネントの少なくとも一
部を暗号化するステップと、前記ソフトウェア・コンポ
ーネントの暗号化された部分のそれぞれについて、「コ
ンパイル済み」属性と「暗号化済み」属性とをセットす
るステップと、クライアントによってアクセスすること
ができるサーバに、前記ソフトウェア・コンポーネント
を格納するステップとを含む、コンピュータ上で実行さ
れた時に前記ソフトウェア・コンポーネントを配布する
データ処理方法を実行するための、コンピュータ可読記
憶媒体に格納されたコンピュータ・プログラム製品。
【図面の簡単な説明】
【図1】Java環境を含むコンピュータ・システムの
概略図である。
【図2】JVMでの実行のためにJavaソース・コー
ドをJavaオブジェクトにする処理ステップの流れ図
である。
【図3】JVMにリンクされるJavaオブジェクトへ
のJavaソース・コードの変換の概略図である。
【図4】JVMクラス・ローダによるリンク中のJav
aクラス・ファイルの処理の流れ図である。
【符号の説明】
38 Java仮想マシン(JVM) 40 JITコンパイラ 42 擬似JITコンパイラ 44 Javaソース・コード 46 Javaコンパイラ(Javac) 48 クラス・ファイル 50A ポストJavacコンパイル・コンポーネント 50B ポストJavac暗号化コンポーネント 52 変更済みクラス・ファイル 54 JVMクラス・ローダ 56 メソッド区域メモリ 58 メソッド・テーブル

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】ソフトウェア・コンポーネントをサーバか
    ら取り出すステップと、 コンパイル済み部分に関して前記ソフトウェア・コンポ
    ーネントを検査するステップと、 コンパイル済み部分が検出された場合に、前記部分が暗
    号化されているかどうかを検査するステップと、 暗号化されている場合に、前記部分を復号化するステッ
    プとを含む、ソフトウェア・コンポーネントを処理する
    方法。
  2. 【請求項2】前記ソフトウェア・コンポーネントが、J
    avaクラスファイルである、請求項1に記載の方法。
  3. 【請求項3】前記ソフトウェア・コンポーネントが、J
    ava仮想マシンによって取り出され、コンパイル済み
    部分について検査される、請求項2に記載の方法。
  4. 【請求項4】コンパイル済み部分が検出された場合に、
    前記Java仮想マシンが、擬似JITコードに制御を
    渡す、請求項3に記載の方法。
  5. 【請求項5】前記部分が、前記擬似JITによって、暗
    号化について検査され、必要な場合に復号化される、請
    求項4に記載の方法。
  6. 【請求項6】前記部分が暗号化されておらず、コンパイ
    ルされている場合に、前記擬似JITが、実際のJIT
    に制御を渡す、請求項5に記載の方法。
  7. 【請求項7】ソフトウェア・コンポーネントの少なくと
    も一部を暗号化するステップと、 前記ソフトウェア・コンポーネントの暗号化された部分
    のそれぞれについて、「コンパイル済み」属性と「暗号
    化済み」属性とをセットするステップと、 前記ソフトウェア・コンポーネントを、クライアントに
    よってアクセスできるサーバに格納するステップとを含
    む、ソフトウェア・コンポーネントを配布する方法。
  8. 【請求項8】前記ソフトウェア・コンポーネントが、オ
    ブジェクト指向クラスを表し、前記オブジェクト指向ク
    ラスのメソッドのうちの1つまたは複数が暗号化され
    る、請求項7に記載の方法。
  9. 【請求項9】前記ソフトウェア・コンポーネントが、J
    avaクラス・ファイルである、請求項7に記載の方
    法。
  10. 【請求項10】サーバからソフトウェア・コンポーネン
    トを取り出すための手段と、 コンパイル済み部分について前記ソフトウェア・コンポ
    ーネントを検査するための手段と、 コンパイル済み部分が検出された場合に、前記部分が暗
    号化されているかどうかを検査するための手段と、 暗号化されている場合に、前記部分を復号化するための
    手段とを含む、ソフトウェア・コンポーネントを処理す
    るための装置。
  11. 【請求項11】前記ソフトウェア・コンポーネントが、
    Javaクラス・ファイルである、請求項10に記載の
    装置。
  12. 【請求項12】前記取り出すための手段と、前記検査す
    るための手段とが、Java仮想マシンの一部である、
    請求項10または請求項11に記載の装置。
  13. 【請求項13】ソフトウェア・コンポーネントの少なく
    とも一部を暗号化するための手段と、 前記ソフトウェア・コンポーネントの暗号化された部分
    のそれぞれについて、「コンパイル済み」属性と「暗号
    化済み」属性とをセットするための手段と、 クライアントによってアクセスできるサーバに、前記ソ
    フトウェア・コンポーネントを格納するための手段とを
    含む、ソフトウェア・コンポーネントを配布するための
    装置。
  14. 【請求項14】前記ソフトウェア・コンポーネントが、
    オブジェクト指向クラスを表し、前記オブジェクト指向
    クラスのメソッドのうちの1つまたは複数が暗号化され
    る、請求項13に記載の装置。
  15. 【請求項15】前記ソフトウェア・コンポーネントが、
    Javaクラス・ファイルである、請求項13に記載の
    装置。
  16. 【請求項16】サーバからソフトウェア・コンポーネン
    トを取り出すステップと、 コンパイル済み部分について前記ソフトウェア・コンポ
    ーネントを検査するステップと、 コンパイル済み部分が検出された場合に、前記部分が暗
    号化されているかどうかを検査するステップと、 暗号化されている場合に、前記部分を復号化するステッ
    プとを含む、コンピュータ上で実行された時に前記ソフ
    トウェア・コンポーネントを処理するデータ処理方法を
    実行するための、コンピュータ可読記憶媒体に格納され
    たコンピュータ・プログラム製品。
  17. 【請求項17】ソフトウェア・コンポーネントの少なく
    とも一部を暗号化するステップと、 前記ソフトウェア・コンポーネントの暗号化された部分
    のそれぞれについて、「コンパイル済み」属性と「暗号
    化済み」属性とをセットするステップと、 クライアントによってアクセスすることができるサーバ
    に、前記ソフトウェア・コンポーネントを格納するステ
    ップとを含む、コンピュータ上で実行された時に前記ソ
    フトウェア・コンポーネントを配布するデータ処理方法
    を実行するための、コンピュータ可読記憶媒体に格納さ
    れたコンピュータ・プログラム製品。
JP28614699A 1998-10-19 1999-10-07 ソフトウェア・コンポーネントを処理および配布するための方法および装置 Expired - Fee Related JP3377087B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9822834.9 1998-10-19
GB9822834A GB2343022B (en) 1998-10-19 1998-10-19 Encrypting of java methods

Publications (2)

Publication Number Publication Date
JP2000132388A true JP2000132388A (ja) 2000-05-12
JP3377087B2 JP3377087B2 (ja) 2003-02-17

Family

ID=10840865

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28614699A Expired - Fee Related JP3377087B2 (ja) 1998-10-19 1999-10-07 ソフトウェア・コンポーネントを処理および配布するための方法および装置

Country Status (2)

Country Link
JP (1) JP3377087B2 (ja)
GB (1) GB2343022B (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132364A (ja) * 2000-10-19 2002-05-10 Yutaka Iizuka プログラムを内部解析から保護する方法、コンピュータ読み取り可能な記録媒体及びプログラムの配布方法
JP2006053406A (ja) * 2004-08-13 2006-02-23 Fujitsu Ltd オブジェクトファイル配信方法、オブジェクトファイル配信システム、および電子機器
JP2007094728A (ja) * 2005-09-28 2007-04-12 Digital Electronics Corp 情報処理装置、情報処理システム、プログラムおよび記録媒体
WO2007052944A1 (en) * 2005-11-04 2007-05-10 Samsung Electronics Co., Ltd. Class library footprint file and java application authentication method using the same
JP2007172526A (ja) * 2005-12-26 2007-07-05 Nippon Computer Co Ltd 情報処理システム、情報処理方法
JP2007265404A (ja) * 2006-03-28 2007-10-11 Internatl Business Mach Corp <Ibm> ソフトウェア・アプリケーション配布のための範囲を制限された許可

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19932769A1 (de) * 1999-07-14 2001-03-08 Roellgen Bernd Während der Laufzeit veränderbare kryptographische Methode
GB0017478D0 (en) * 2000-07-18 2000-08-30 Bit Arts Ltd Computer software installation
US6931634B2 (en) * 2000-12-21 2005-08-16 Silicon Metrics Corporation Encrypted compiler
DE10105053A1 (de) * 2001-02-05 2002-08-29 Hmd Software Ag Verfahren und Einrichtung zum Übertragen von Programmcodes im Internet
GB2374165A (en) * 2001-04-02 2002-10-09 Global Knowledge Network Secure distribution of electronic media
GB0310142D0 (en) * 2003-05-02 2003-06-04 Bitarts Ltd Delivering a software component
AT501255A1 (de) * 2003-06-06 2006-07-15 Siemens Ag Oesterreich Lizenz-abhängige ausführung von programmdateien
DE10336083A1 (de) * 2003-08-06 2005-03-17 Siemens Ag Verfahren zur Sicherung von Computerprogrammen gegen unbefugte Mehrfachnutzung

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997027537A2 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
JPH09288575A (ja) * 1995-12-08 1997-11-04 Sun Microsyst Inc アプリケーション・プログラムのトライ−アンド−バイ・ユーセッジを管理するシステム及び方法
JPH10301772A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
JPH10301773A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU6645398A (en) * 1998-02-13 1999-08-30 National Computer Board Method for protecting bytecode

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09288575A (ja) * 1995-12-08 1997-11-04 Sun Microsyst Inc アプリケーション・プログラムのトライ−アンド−バイ・ユーセッジを管理するシステム及び方法
WO1997027537A2 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
JPH10301772A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
JPH10301773A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132364A (ja) * 2000-10-19 2002-05-10 Yutaka Iizuka プログラムを内部解析から保護する方法、コンピュータ読み取り可能な記録媒体及びプログラムの配布方法
JP2006053406A (ja) * 2004-08-13 2006-02-23 Fujitsu Ltd オブジェクトファイル配信方法、オブジェクトファイル配信システム、および電子機器
JP2007094728A (ja) * 2005-09-28 2007-04-12 Digital Electronics Corp 情報処理装置、情報処理システム、プログラムおよび記録媒体
JP4727366B2 (ja) * 2005-09-28 2011-07-20 株式会社デジタル 情報処理装置、情報処理システム、プログラムおよび記録媒体
WO2007052944A1 (en) * 2005-11-04 2007-05-10 Samsung Electronics Co., Ltd. Class library footprint file and java application authentication method using the same
KR100765772B1 (ko) 2005-11-04 2007-10-15 삼성전자주식회사 자바 애플리케이션의 인증을 위한 클래스 라이브러리풋프린트 파일 및 이를 이용한 인증 방법
JP2007172526A (ja) * 2005-12-26 2007-07-05 Nippon Computer Co Ltd 情報処理システム、情報処理方法
JP2007265404A (ja) * 2006-03-28 2007-10-11 Internatl Business Mach Corp <Ibm> ソフトウェア・アプリケーション配布のための範囲を制限された許可

Also Published As

Publication number Publication date
GB2343022B (en) 2003-01-08
GB9822834D0 (en) 1998-12-16
JP3377087B2 (ja) 2003-02-17
GB2343022A (en) 2000-04-26

Similar Documents

Publication Publication Date Title
US6093215A (en) Method and apparatus for building templates in a component system
US6195794B1 (en) Method and apparatus for distributing templates in a component system
US5978585A (en) Development system with improved methods for recompiling dependent code modules
US5978579A (en) Architecture for customizable component system
CN108932406B (zh) 虚拟化软件保护方法和装置
US7263722B1 (en) Obfuscation of executable code
Cai et al. Certified self-modifying code
US6260187B1 (en) System for modifying object oriented code
US6182279B1 (en) Method and apparatus for storing templates in a component system
Adl-Tabatabai et al. Efficient and language-independent mobile programs
US8090959B2 (en) Method and apparatus for protecting .net programs
Dmitriev Towards flexible and safe technology for runtime evolution of java language applications
US8321861B2 (en) Non-native program execution across multiple execution environments
JP2001514411A (ja) 信頼できない実行可能コードに関するセキュリティ向上
TW201839644A (zh) 安卓平台上可執行程式的保護方法
WO2007017856A1 (en) Method for preventing software reverse engineering, unauthorized modification, and runtime data interception
JP3377087B2 (ja) ソフトウェア・コンポーネントを処理および配布するための方法および装置
US9038039B2 (en) Apparatus and method for accelerating java translation
US20060123403A1 (en) Device and method for processing a program code
Hwang et al. DisIRer: Converting a retargetable compiler into a multiplatform binary translator
Cimato et al. Overcoming the obfuscation of Java programs by identifier renaming
Kang Function call interception techniques
Olivier et al. A syscall-level binary-compatible unikernel
CN110597496B (zh) 应用程序的字节码文件获取方法及装置
US20220147376A1 (en) Selective substitution of legacy load module programs with classes for execution in a java virtual machine

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees