[go: up one dir, main page]

JP4745238B2 - Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置 - Google Patents

Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置 Download PDF

Info

Publication number
JP4745238B2
JP4745238B2 JP2006531090A JP2006531090A JP4745238B2 JP 4745238 B2 JP4745238 B2 JP 4745238B2 JP 2006531090 A JP2006531090 A JP 2006531090A JP 2006531090 A JP2006531090 A JP 2006531090A JP 4745238 B2 JP4745238 B2 JP 4745238B2
Authority
JP
Japan
Prior art keywords
program
jar file
identity confirmation
information
confirmation information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006531090A
Other languages
English (en)
Other versions
JPWO2006016407A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2006016407A1 publication Critical patent/JPWO2006016407A1/ja
Application granted granted Critical
Publication of JP4745238B2 publication Critical patent/JP4745238B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/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
    • G06F21/53Monitoring 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 by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Description

本発明は、Javaアプレットに関し、特にJavaアプレットの悪用を防止する技術に関するものである。
従来、電気通信回線等を介してダウンロードされたJavaアプレット(以下、アプレット)をクライアント端末におけるWebアプリケーション(Webブラウザ等)等に実装されたJRE(Java Runtime Environment)により実行して、クライアント端末側での処理を行う技術が提供されている。
このようなアプレットを用いた処理を行う際にアプレットを実行するJREでは、安全上の理由から、アプレットがユーザに被害を与える可能性のある動作をすることを禁じている。
図21は、電子署名のないアプレットが実行される場合の通常の処理について説明するための概念図である。ここでは、攻撃者が不正なJARファイルevil.jar91を用いて、クライアント端末Cにおける保護されたシステム資源(データや個人情報など)13に不正アクセスしようとする場合を示している。ここでは、JARファイルevil.jar91には電子署名は施されていないものとする。
クライアント端末Cのユーザが、攻撃者のWebサイトにアクセスすると、Webブラウザ11によりインターネットNを介して攻撃者のWebサイトのHTMLデータ「evil.html」がダウンロードされる(S71)。
Webブラウザ11は、「evil.html」に含まれる当該不正なアプレットのタグに基づいて、JRE12のアプレット起動部12aに当該不正なアプレットの起動を要求する(S72)。アプレット起動部12aは、当該要求に基づいて、JARファイルevil.jar91をロードする(S73)。
この場合、不正なJARファイルevil.jar91は、出所を保証するための電子署名がなされていないことを理由に信頼できないものとみなされる。よって、不正なJARファイルevil.jar91(不正なアプレット)による、保護されたシステム資源13へのアクセス要求(S74)は、セキュリティマネージャ12bにより禁止される(S75)。
このように、セキュリティマネージャ12bのアクセス制限のもとでは、出所の保証されていないアプレットを用いて、保護されたシステム資源13にアクセスすることはできず、ユーザが被害を受けることはない。
ところで、上述のようなアクセス制限は、Webアプリケーションを開発する上での障害となる場合がある。例えば、電子政府システムなどでは、ユーザがクライアント端末Cにおけるローカルデバイスに格納されている情報を使って申請書等に電子署名を施すことが必要となる場合がある。しかし上述のように、通常はアプレットを用いたクライアント端末側のローカルデバイスへのアクセスは禁じられており、上述のようなシステムは実現できない。
そこで、電子署名等によって出所が保証されたアプレットについては、アプレットには通常禁止されているような動作(ファイルアクセスやコマンド実行など)を行うことをユーザが特別に許可することのできるようにする仕組みが用意されている。出所を保証する方法としては、上述のようにアプレットに電子署名を施す方法が一般的である。
このような仕組みによれば、電子署名を施されたアプレット(以下、署名付きアプレット)がJRE12によってロードされた場合、当該アプレットの実行時に動的にセキュリティ制限の解除を要求するダイアログを表示させ、ユーザに解除を許可するか否かの選択を促すことができ、あらかじめユーザにセキュリティ設定を変更してもらうような手間を省くことができるという利点がある。
図22は、署名付きアプレットが実行される場合の処理について説明するための概念図である。ここでは、署名付きアプレットとしてfoo.jar93およびbar.jar92が、HTMLファイル「goodj.html」と共に配備されている場合を示している。以下、図中において二重線の枠で囲まれているものは、署名が施されていることを意味するものとする。
クライアント端末Cのユーザが、Webサイトにおける「goodj.html」にアクセスすると、Webブラウザ11によりインターネットNを介してHTMLファイル「goodj.html」がダウンロードされる(S81)。
Webブラウザ11は、「goodj.html」に含まれるアプレットのタグに基づいて、JRE12のアプレット起動部12aに当該アプレットの起動を要求する(S82)。アプレット起動部12aは、当該要求に基づいて、JARファイルbar.jar92およびfoo.jar93をロードする(S83)。
ここでは、ロードされるJARファイルbar.jar92およびfoo.jar93には、共に出所を保証するための電子署名が施されているため、アプレット起動部12aは当該署名の内容を検証し、検証結果をユーザに確認させるためのダイアログを表示させる(S84)。ユーザが当該ダイアログにより検証結果を確認し、問題がないと判断した場合、セキュリティマネージャ12bにおいてJARファイルbar.jar92およびfoo.jar93は信頼できるものであるとみなされる。
信頼できるものとみなされたアプレットについては、アプレットには通常禁止されているような動作が可能になる。よって、セキュリティマネージャ12bによるアクセス制限の下でも、これら信頼できるものとみなされたアプレットにより保護されたシステム資源13に対するアクセス要求が出された場合(S85)、当該アクセス要求は許可される(S86)。
しかし、上述のような署名付きアプレットに対してアクセス許可を行う仕組みは有用である反面、攻撃者が署名付きアプレットを再利用し、その機能を悪用してユーザに被害を与えるおそれがあるという問題がある。
署名付きアプレットは、署名付きJARファイルといった再利用可能な部品から構成されている。よって、攻撃者はそれらの署名付きJARファイルを攻撃者自らの部品(不正なJARファイル)と組み合わせて、署名付きJARファイルに含まれるクラスのメソッドを呼び出したりフィールドを改ざんしたりすることで、それら署名付きJARファイルを作成した者の本来の意図とは異なる不正な目的で使用すること(いわゆる、不正な再構成攻撃)を試みることができる。
図23は、上述のような不正な再構成攻撃の一例について説明するための図である。ここでは、攻撃者が、電子署名付きJARファイルfoo.jar93を入手し、当該電子署名付きJARファイルと自ら作成した不正なJARファイルevil.jar91とを不正に再構成し、HTMLファイル「evil2.html」と共に配備している場合を示している。
クライアント端末Cのユーザが、Webサイトにおける「evil2.html」にアクセスすると、Webブラウザ11によりインターネットNを介してHTMLファイル「evil2.html」がダウンロードされる(S91)。
Webブラウザ11は、「evil2.html」に含まれるアプレットのタグに基づいて、JRE12のアプレット起動部12aに当該アプレットの起動を要求する(S92)。アプレット起動部12aは、当該要求に基づいて、JARファイルevil.jar91およびfoo.jar93をロードする(S93)。
ここでは、ロードされるJARファイルfoo.jar93には、出所を保証するための電子署名がなされているため、アプレット起動部12aは当該署名の内容を検証し、検証結果をユーザに確認させるためのダイアログを表示させる(S94)。ユーザが当該ダイアログにより検証結果を確認し、問題がないと判断された場合、セキュリティマネージャ12bにおいてJARファイルfoo.jar93は信頼できるものであるとみなされる。一方、署名のないJARファイルevil.jar91については、信頼できないものとみなされる。
しかし、上述のように、信頼できるものとみなされたJARファイルfoo.jar93については、アプレットには通常禁止されているような動作が可能になる。このとき、evil.jar91がfoo.jar93を利用して保護されたシステム資源13に対するアクセス要求を出させ(S95)、foo.jar93を経由して保護されたシステム資源13にアクセスしてしまうおそれがある(S96)。
上述のような不正な再構成は、信頼されたプログラムが自らの持つ機能を自らの責任において信頼できないプログラムに提供するための仕組みである「特権コード」の悪用や、メインロジックを実行するパッケージと、メインロジックが逐次利用するユーティリティ的なパッケージを区別しているプログラムについて、ユーティリティ的なパッケージのクラスだけを置き換えてメインロジックの動作を自由に制御する攻撃や、対象プログラムに含まれるリソースの不正な置き換えなどを可能とし、ユーザに被害を与えるおそれがある。
また、このような署名付きJARファイルが一旦流出してしまうと被害の拡大を抑えることが難しい。電子政府システムなどにおいてこの種の攻撃を許すことは、行政システムの根幹を揺るがすことにもなりかねないため、上述のような攻撃に対する対策技術の確立が急務となっている。
本発明は上述した問題点を解決するためになされたものであり、電子署名されたJavaアプレットが不正に再利用されることを簡単かつ確実に防止することを目的とする。
上述した課題を解決するため、本発明に係るJavaアプレットは、複数の所定のJavaアプレットプログラムをコンピュータに実行させるJavaアプレットであって、該Javaアプレットは出所を保証するための電子署名を施されたものであり、前記複数の所定のJavaアプレットプログラムそれぞれの所在について定義する配備情報の改ざんを検出するための同一性確認用情報に基づいて、前記配備情報の改ざんを検出する改ざん検出ステップと、前記複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムを起動させるロード用プログラム起動ステップと、前記改ざん検出ステップにおいて改ざんが検出されなかった場合に、前記配備情報に基づいて、前記起動させたロード用プログラムにより前記複数の所定のJavaアプレットプログラムをロードさせるロードステップとをコンピュータに実行させる構成となっている。
このように、同一性確認用情報に基づいて改ざんされていないことが確認された配備情報により複数の所定のJavaアプレットプログラムをロードする構成とすることで、Javaアプレットが改ざんされて当該Javaアプレットの作成者の意図とは異なる他のJavaアプレットプログラムがロードされることを防止することができる。すなわち、電子署名されたJavaアプレットが不正に再利用されることを簡単かつ確実に防止することができる。
また、上述のような構成のJavaアプレットにおいて、前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデータの一部または全部を含むことが好ましい。
なお、上述のような構成のJavaアプレットにおいて、前記同一性確認用情報は、前記複数の所定のJavaアプレットプログラムそれぞれのハッシュ値または前記複数の所定のJavaアプレットプログラムそれぞれのデータの一部または全部を含み、前記改ざん検出ステップは、前記同一性確認用情報に基づいて、前記複数の所定のJavaアプレットプログラムそれぞれの改ざんを検出する構成とすることもできる。
このような構成によれば、同一性確認用情報に基づいて配備情報および複数の所定のJavaアプレットプログラムが改ざんされていないことを確認した上で、当該配備情報により複数の所定のJavaアプレットプログラムをロードすることができ、当該Javaアプレットおよび複数の所定のJavaアプレットプログラムが改ざんされて当該Javaアプレットの作成者の意図とは異なる他のJavaアプレットプログラムがロードされることを防止することができる。
なお、上述のような構成のJavaアプレットにおいて、該Javaアプレットにおけるメインクラスに対して、Javaスクリプトを使用したメソッド呼び出し要求があった場合に、該呼び出し要求に基づくメソッド呼び出し処理を、前記複数の所定のJavaアプレットプログラムの内の前記呼び出されたメソッドに対応するメソッドに委譲させる委譲ステップを有することが好ましい。
このような構成によれば、JREにて保持されている動作中のアプレットリストに複数の所定のJavaアプレットプログラムがない場合でも、例えばラッパーメソッド等を用いることにより、Javaスクリプトを使用したメソッド呼び出し要求に基づくメソッド呼び出し処理をこれら複数の所定のJavaアプレットプログラムに対して行わせるようにすることができる。
この他、上述のような構成のJavaアプレットにおいて、該Javaアプレットに対して設定されているアプレットスタブを、前記ロードステップにおいてロードされた複数の所定のJavaアプレットプログラムに対して設定するアプレットスタブ設定ステップを有する構成とすることもできる。
このように、アプレットスタブをロードされた複数の所定のJavaアプレットプログラムに対して設定することで、複数の所定のJavaアプレットプログラムが正常に動作できるようになる。
上述した課題を解決するため、本発明に係るJARファイル生成方法は、コンピュータが、複数の所定のJavaアプレットプログラムをコンピュータに実行させるJavaアプレットを含むJARファイルを生成する処理を行うJARファイル生成方法であって、前記コンピュータが、前記複数の所定のJavaアプレットプログラムそれぞれの所在について定義する配備情報に基づいて、前記配備情報の改ざんを検出するための同一性確認用情報を生成する同一性確認用情報生成ステップと、前記配備情報および同一性確認用情報に基づいて、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成ステップとを実行することを特徴とする。
このように、配備情報の改ざんを検出するための同一性確認用情報を、所定のパッケージにおけるクラスファイルとして定義することで、当該JARファイルに電子署名が施された場合に、「same-package-same-signer」の仕組みによって、当該同一性確認用情報の不正な改ざんを防ぐことができる。
また、上述のような構成のJARファイル生成方法において、前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデータの一部または全部を含むことが好ましい。
なお、上述のような構成のJARファイル生成方法において、前記JARファイル生成ステップは、前記配備情報および同一性確認用情報に基づいて、前記配備情報、同一性確認用情報、前記複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成する構成とすることもできる。
このように、JARファイル生成ステップにおいて生成するJARファイルに、複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムおよび該ロード用プログラムを起動させるための起動用プログラムを含ませるようにしたことで、当該JARファイルをダウンロードする端末において複数の所定のJavaアプレットプログラムをロードするための機能を実現するプログラムを予めインストールしておかずとも、このJARファイルをダウンロードするだけで複数の所定のJavaアプレットプログラムを安全にロードさせることができる。
また、上述のような構成のJARファイル生成方法において、前記JARファイル生成ステップは、前記複数の所定のJavaアプレットプログラム、前記配備情報および同一性確認用情報に基づいて、前記複数の所定のJavaアプレットプログラム、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成することが好ましい。
このように、JARファイル生成ステップにおいて生成するJARファイルに、前記複数の所定のJavaアプレットプログラム、前記配備情報および同一性確認用情報を含ませるようにしたことで、当該JARファイルをダウンロードする端末において複数の所定のJavaアプレットプログラムを外部からロードせずとも、このJARファイルをダウンロードするだけで複数の所定のJavaアプレットプログラムを安全にロードさせることができる。
上述のような構成のJARファイル生成方法において、前記同一性確認用情報は、前記複数の所定のJavaアプレットプログラムそれぞれのハッシュ値または前記複数の所定のJavaアプレットプログラムそれぞれのデータの一部または全部を含む構成とすることができる。
この他、上述のような構成のJARファイル生成方法において、前記JARファイル生成ステップは、前記複数の所定のJavaアプレットプログラム、前記配備情報および同一性確認用情報に基づいて、前記複数の所定のJavaアプレットプログラム、前記配備情報、前記同一性確認用情報、前記複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成することが望ましい。
このような構成とすることにより、当該JARファイルをロードし、実行するJREに対して何ら変更を加えることなく、電子署名されたJavaアプレットが不正に再利用されることを簡単かつ確実に防止することができる。
また、本発明に係るJARファイル生成プログラムは、複数の所定のJavaアプレットプログラムをコンピュータに実行させるJavaアプレットを含むJARファイルを生成する処理をコンピュータに実行させるJARファイル生成プログラムであって、前記複数の所定のJavaアプレットプログラムそれぞれの所在について定義する配備情報に基づいて、前記配備情報の改ざんを検出するための同一性確認用情報を生成する同一性確認用情報生成ステップと、前記配備情報および同一性確認用情報に基づいて、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成ステップとをコンピュータに実行させることを特徴とする。
上述のような構成のJARファイル生成プログラムにおいて、前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデータの一部または全部を含むことが好ましい。
また、上述のような構成のJARファイル生成プログラムにおいて、前記JARファイル生成ステップは、前記配備情報および同一性確認用情報に基づいて、前記配備情報、同一性確認用情報、前記複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成する構成とすることもできる。
上述のような構成のJARファイル生成プログラムにおいて、前記JARファイル生成ステップは、前記複数の所定のJavaアプレットプログラム、前記配備情報および同一性確認用情報に基づいて、前記複数の所定のJavaアプレットプログラム、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成することが望ましい。
また、上述のような構成のJARファイル生成プログラムにおいて、前記同一性確認用情報は、前記複数の所定のJavaアプレットプログラムそれぞれのハッシュ値または前記複数の所定のJavaアプレットプログラムそれぞれのデータの一部または全部を含むことが好ましい。
なお、上述のような構成のJARファイル生成プログラムにおいて、前記JARファイル生成ステップは、前記複数の所定のJavaアプレットプログラム、前記配備情報および同一性確認用情報に基づいて、前記複数の所定のJavaアプレットプログラム、前記配備情報、同一性確認用情報、前記複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成する構成とすることもできる。
この他、本発明に係るJARファイル生成装置は、複数の所定のJavaアプレットプログラムをコンピュータに実行させるJavaアプレットを含むJARファイルを生成するJARファイル生成装置であって、前記複数の所定のJavaアプレットプログラムそれぞれの所在について定義する配備情報に基づいて、同一性確認用情報を生成する同一性確認用情報生成部と、前記配備情報および同一性確認用情報に基づいて、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成部とを備えてなることを特徴とする。
上述のような構成のJARファイル生成装置において、前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデータの一部または全部を含むことが好ましい。
なお、上述のような構成のJARファイル生成装置において、前記JARファイル生成部は、前記配備情報および同一性確認用情報に基づいて、前記配備情報、同一性確認用情報、前記複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成する構成とすることができる。
また、上述のような構成のJARファイル生成装置において、前記JARファイル生成部は、前記複数の所定のJavaアプレットプログラム、前記配備情報および同一性確認用情報に基づいて、前記複数の所定のJavaアプレットプログラム、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成することが望ましい。
この他、上述のような構成のJARファイル生成装置において、前記同一性確認用情報は、前記複数の所定のJavaアプレットプログラムそれぞれのハッシュ値または前記複数の所定のJavaアプレットプログラムそれぞれのデータの一部または全部を含む構成とすることもできる。
上述のような構成のJARファイル生成装置において、前記JARファイル生成部は、前記複数の所定のJavaアプレットプログラム、前記配備情報および同一性確認用情報に基づいて、前記複数の所定のJavaアプレットプログラム、前記配備情報、同一性確認用情報、前記複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成することが好ましい。
なお、上述したJAVAアプレットおよびJARファイル生成プログラムは、コンピュータにより読取り可能な記録媒体に記憶させることによって、コンピュータに実行させることが可能となる。なお、上記コンピュータにより読取り可能な記録媒体としては、CD−ROMやフレキシブルディスク、DVDディスク、光磁気ディスク、ICカードなどの半導体記憶装置等の可搬型記憶媒体、コンピュータに実装されるROM、RAMや磁気記録装置等の固定型記憶装置や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含むものである。
このように、JARファイル生成プログラムをコンピュータに実行させることにより、上述したJARファイル生成方法における各ステップが実現される。
本実施の形態における電子署名されたアプレットの不正利用の防止について説明するための概念図である。 図1にて示した電子署名されたアプレットの不正利用を防止するための具体的な構成の一例を示す図である。 特殊形式JARファイル2の内部構成の詳細について説明するための図である。 特殊アプレットプログラム24について説明するための図である。 図4に示した構成の特殊形式JARファイル2に対して電子署名を施したものを示す図である。 JARファイルTの構成例を示す図である。 JARファイル(descriptor.jar)Dの構成を示す図である。 配備記述子(cozilet.properties)の詳細を示す図である。 同一性確認用情報としてハッシュ値を埋め込んだCoziletData.javaのソースコードである。 同一性確認用情報として配備記述子そのものを埋め込んだCoziletData.javaのソースコードである。 特殊アプレットが起動されてから対象アプレットへの入れ替えが完了するまでのフローチャートである。 JARファイル(target.jar)Tを特殊形式JARファイルに含まない構成について説明するための図である。 アプレット等の内の一部をクライアント端末Cの外部からダウンロードし、残りをクライアント端末Cの内部に予め配備しておく構成について説明するための図である。 特殊形式JARファイル202の構成の詳細を示す図である。 特殊形式JARファイル203として、同一性確認用情報としてのCoziletData.class24cおよびJARファイル(descriptor.jar)Dを含む構成とした場合の図である。 ラッパーメソッドを追加したCoziletクラス(起動用プログラムに相当)のソースコードの例を示す図である。 直列化を無効にする実装を施したCoziletクラスのソースコードの例を示す図である。 特殊形式JARファイルを生成するためのJARファイル生成装置について説明するための図である。 JARファイル生成装置における処理の流れについて説明するためのフローチャートである。 その他のアプレット等をクライアント端末Cの内部に予め配備しておく構成について説明するための図である。 電子署名のないアプレットが実行される場合の通常の処理について説明するための概念図である。 署名付きアプレットが実行される場合の処理について説明するための概念図である。 不正な再構成攻撃の一例について説明するための図である。
以下、本発明の実施の形態について図面を参照して詳細に説明する。
従来、電子署名付きJARファイルと不正なJARファイルとが不正に再構成されたものを、クライアント端末におけるJREにてロードした場合、これらJARファイルが不正に再構成されていることをJRE側で検出することができず、署名付アプレットにのみ許される処理等(保護されたシステム資源に対するアクセスなど)を不正に実行されてしまう場合があった。よって、アプレットを正規な構成(そのアプレットの作成者の意図に沿った構成)でのみ実行させるような構成とする必要がある。以下、上述のようなアプレットの作成者の意図に沿ったロードさせるべき正規な構成の複数の所定のJavaアプレットプログラムを、対象アプレットプログラムと呼ぶ。
図1は、本実施の形態における電子署名されたアプレットの不正利用の防止について説明するための概念図である。なお同図では、図23にてすでに示したものと同一の部分については同一符号を付し、説明は割愛する。
本実施の形態では、JRE12にアプレットプログラムを正規な構成でのみ実行させるための機能12cをもたせている。これにより、不正に再構成されたJARファイル(例えば、署名付JARファイルであるfoo.jar93と不正なJARファイルであるevil.jar91との再構成ファイル)がJRE12にてロードされた場合(S11)でも、アプレットプログラムを正規な構成でのみ実行させるための機能12cによって、署名付アプレットに対して許可された処理を悪用させない(S12)ようにしている。
なお、クライアント端末CにおけるJRE12に、アプレットプログラムを正規な構成でのみ実行させるための機能12cをもたせるための主な構成例としては、(1)当該機能12cを実現するためのアプレット等(アプレットやこれに関連するデータ)をクライアント端末Cの外部からダウンロードし、JRE12にて起動させる構成、(2)当該機能12cを実現するアプレットプログラム等の内の一部をクライアント端末Cの外部からダウンロードし、残りをクライアント端末Cの内部に予め配備しておく構成、(3)当該機能12cを実現するアプレットプログラム等の内、クライアント端末Cの外部に配備すべきデータのみ外部に配備し、その他のアプレットプログラム等はクライアント端末Cの内部に予め配備しておく構成の3つが挙げられる。
まず、(1)クライアント端末CにおけるJRE12に、アプレットプログラムを正規な構成でのみ実行させるための機能12cを実現するためのアプレットプログラム等(アプレットプログラムやこれに関連するデータ)をクライアント端末Cの外部からダウンロードし、JRE12にて起動させる構成について説明する。
図2は、図1にて示した電子署名されたアプレットの不正利用を防止するための具体的な構成の一例を示す図である。なお同図においても、図23にてすでに示したものと同一の部分については同一符号を付し、説明は割愛する。
図2に示す構成では、電子署名されており且つ内部の構成が特殊な特殊形式JARファイル2を使用することによって、電子署名されたアプレットの機能の不正利用を防止している。具体的に、特殊形式JARファイル2は、対象アプレットプログラムとしてのbar.jar21およびfoo.jar22と、対象アプレットプログラム(複数の所定のJavaアプレットプログラム)それぞれの所在について定義する配備記述子(配備情報に相当)23と、特殊アプレットプログラム24とを含んでいる。これらbar.jar21〜特殊アプレットプログラム24は、個別には電子署名を施されておらず、これらbar.jar21〜特殊アプレットプログラム24を含むJARファイル全体に対して電子署名が施されている。なお、クライアント端末Cは、図23にて示した従来のクライアント端末と同様な構成である。
特殊形式JARファイル2がクライアント端末CにおけるJRE12にロードされると、当該ロードされた特殊形式JARファイル2に含まれる特殊アプレットプログラム24がアプレット起動部12aにより実行され、特殊アプレット12dが起動される。
このようにして起動される特殊アプレット12d(起動用プログラムに相当)は、特殊形式JARファイル2に含まれたかたちでJRE12にロードされている配備記述子23に基づいて、アプレットを正規な構成でのみロードさせる機能をもつ特殊アプレット起動部12e(ロード用プログラムに相当)を有する。
このような構成により、JRE12にアプレットプログラムを正規な構成でのみ実行させるための機能をもたせ、電子署名されたアプレットが不正に再利用されることを防止している。
以下、JRE12において上述のような機能を実現させるための特殊形式JARファイル2の内部構成の詳細について説明する。図3に示すように、本実施の形態では特殊形式JARファイル2は、特殊アプレットプログラム24、JARファイル(target.jar)TおよびJARファイル(descriptor.jar)Dを含んだ構成となっている。
まず、特殊アプレットプログラム24について説明する(図4参照)。特殊アプレットプログラム24は、実行時に対象アプレットと入れ替わる機能を有する特殊アプレットプログラム24のメインクラスのクラスファイルであるCozilet.class(起動用プログラムに対応)24a、配備記述子をもとに対象アプレットのプログラムをロードする機能を有する特殊クラスローダのクラスファイルであるCoziletClassLoader.class(ロード用プログラムに対応)24bおよびCoziletData.class(同一性確認用情報に相当)24cを含んでいる。また、これらのクラスファイルは全て同じパッケージcom.aaa.labs.sec.coziletに所属しているので、特殊形式JARファイル2全体に対して電子署名を施すことによって、攻撃者がこれらのクラスファイル群を不正に置き換えることはsame-package-same-signerの仕組みによって防がれる。図5は、図4に示した構成の特殊形式JARファイル2に対して電子署名を施したものを示す図である。
続いて、特殊形式JARファイル2に含まれるJARファイル(target.jar)Tについて説明する。図6に、JARファイルTの構成例を示す。具体的に、対象アプレットは、当該対象アプレットの実行に必要なクラスファイル群やリソースファイル群、そしてそれらを格納するJARファイル群を指す。同図では、JARファイルTは、対象アプレットプログラムであるJARファイル群target1.jar、target2.jarを含んでいる。ここではJARファイル(target.jar)Tは署名のないJARファイルである。JARファイル(target.jar)Tに含まれる対象アプレットプログラムは、特殊アプレットプログラム24の実行時に特殊クラスローダ(ロード用プログラム)によってのみロードされ、JREの標準のクラスローダではロードされない。よって、対象アプレットプログラムが攻撃者に悪用されることを防ぐことができる。
次に、特殊形式JARファイル2に含まれるJARファイル(descriptor.jar)Dについて説明する。図7に、JARファイル(descriptor.jar)Dの構成を示す。ここで、JARファイル(descriptor.jar)Dは、Java標準のプロパティファイルcozilet.properties23(図3参照)を含んでいる。ここでは、配備記述子cozilet.properties23が対象アプレットプログラムの配備情報に相当する。JARファイルDは署名のないJARファイルである。また、JARファイルD(配備情報に相当)は必ず特殊形式JARファイル2に含まれている。
図8に配備記述子(cozilet.properties)23の詳細を示す。main_classプロパティは対象アプレットのメインクラスの名前である。特殊アプレットはプロパティをもとに対象アプレットプログラムを実行する。class_pathプロパティは対象アプレットプログラムのうち、特殊形式JARファイルには含まれないものが配備されているURLのリストである。同図の例では、信頼されたサイト上に配備されたouter1.jarのURLと、ユーザのローカルディスク上に予めインストールされたouter2.jarのパスが記述されている。特殊クラスローダはプロパティをもとに対象アプレットプログラムをロードする。攻撃者に悪用されることを防ぐために、これらのURLはJREが標準でロード可能な場所(エクステンションディレクトリなど)以外の場所にしておくことが望ましい。
library_pathプロパティは対象アプレットプログラムのうち、nativeメソッドの実行に必要なnativeライブラリ群が配備されているパスのリストである。nativeライブラリはローカルディスク上にインストールされている必要があるので、プロパティではURLではなくローカルディスク上のパスを指定する。特殊クラスローダはプロパティをもとにnativeライブラリ群をロードする。攻撃者に悪用されることを防ぐために、これらのパスはJREが標準でロード可能な場所(システムディレクトリなど)以外の場所にしておくことが望ましい。
trusted_urlプロパティは、特殊アプレットを埋め込むHTML文書が配備されるべき信頼されたサイトのURLのリストである。特殊アプレットは、実行直後に自らが埋め込まれているHTML文書が配備されているURLを取得し、プロパティに含まれるURLと比較することにより、自らが信頼されたサイトに配備されたHTML文書によって埋め込まれているかどうかを検査できる。
exclusive_modeプロパティは、特殊アプレットの実行中に信頼できないアプレットの実行を防ぐ機能を有効にするかどうかを決定するフラグである。プロパティの値がONの場合、特殊アプレットは上述の機能を有効にする。一方、プロパティの値がoffの場合、この機能は無効になる。
次に、特殊アプレットプログラム24に含まれるCoziletData.class24cについて説明する。CoziletData.class24cは、対象アプレットプログラムや配備記述子の改ざんを検出するための同一性確認用情報を含むクラスファイルである。図9に、同一性確認用情報として対象アプレットプログラムや配備記述子のSHA1ハッシュ値Hを定数フィールドとして埋め込んだクラスCoziletDataのソースコードCoziletData.javaを示す。このソースコードをコンパイルすることにより、CoziletData.class24cを生成することができる。
CoziletDataクラスは、inner_hash、outer_hash、descriptor_hashの3つの定数フィールドを含んでいる。inner_hashにはtarget.jarTのSHA1ハッシュ値が含まれる。outer_hashにはclass_pathプロパティで指定されたURLに配備された対象アプレットプログラム全体のSHA1ハッシュ値が含まれる。descriptor_hashにはdescriptor.jarDのSHA1ハッシュ値が含まれる。CoziletDataクラスは他の特殊アプレットプログラムであるクラスファイル群と同じパッケージcom.aaa.labs.sec.coziletに所属しており、特殊形式JARファイルに電子署名を施すことで、same-package-same-signerの仕組みにより攻撃者による不正な置き換えを防止できる。
ところで、特殊形式JARファイルに含まれるtarget.jarT及びdescriptor.jarDは、クラスファイルではなくリソースファイルであるため、攻撃者により不正に置き換えられるおそれがある。そこで、特殊クラスローダがこれらのリソースファイルをロードする際に、ロードしたリソースのSHA1ハッシュ値をCoziletDataクラスの定数フィールドに含まれるSHA1ハッシュ値Hとそれぞれ比較することによって、リソースファイルが改ざんされていないかどうか検出することができる。
なお、上述の例ではCoziletData.class24cに、target.jarT及びdescriptor.jarDのSHA1ハッシュ値Hを含ませる構成としているが、これに限られるものではなく、target.jarT及びdescriptor.jarDのデータの一部または全部を含む定数フィールドを含む構成としてもよい。図10に、descriptor.jarDそのものを含む定数フィールドdescriptor_valueを含むCoziletData.class24cのソースコードの例を示す。この場合は、特殊形式JARファイル2はdescriptor.jarDを含む必要はなく、特殊アプレットプログラム24の実行時に定数フィールドdescriptor_valueからdescriptor.jarDの値を取り出すことができる。
続いて、上述の特殊アプレットプログラム24をJREにて実行させる場合の動作について、図11のフローチャートを用いて説明する。
まず、本実施の形態による特殊形式JARファイル2は、例えばサーバ上に配備され、Webブラウザ等を介してJREによりロードされることで、特殊アプレットプログラム24がJREにて実行される。
通常、複数の所定のJavaアプレットプログラムは、例えば、
<applet code="jp.example.SomeApplet"
archive="target1.jar,target2.jar"
width="400" height="400"></applet>
のようなappletタグを含むHTML文書によって起動される。
一方、本実施の形態における特殊形式JARファイル2を用いて複数の所定のJavaアプレットプログラムをJREにて起動させる場合、
<applet code="com.aaa.labs.sec.cozilet.Cozilet"
archive="cozilet.jar"
width="400" height="400"></applet>
のようなappletタグを含むHTML文書によって、対象アプレットの代わりに特殊アプレットを配備してこれを起動させ(S21)、対象アプレットプログラムを起動させればよい。
続いて、JREにてCoziletクラス24aがロードされインスタンスが生成される(S22)。Coziletクラスは静的初期化子において特殊形式JARファイル2に含まれるcozilet.properties23を取り出す。CoziletData.class24cによる改ざん防止がなされている場合には、cozilet.properties23が改ざんされているかどうか検証し(改ざん検出ステップ)(S23)、改ざんされている場合(S24,ある)には実行を強制終了する(S29)。改ざんされていなければ(S24,ない)、cozilet.properties23からjava.util.Propertiesインスタンスを生成する。以下、このインスタンスをcozilet配備記述子と呼ぶ。このように、複数の所定のJavaアプレットプログラムそれぞれの所在について定義する配備情報の改ざんを検出するための同一性確認用情報に基づいて、配備情報の改ざんを検出する。
次に、cozilet配備記述子からexclusive_modeプロパティの値を参照し、ONであれば特殊アプレットプログラム24の実行中に信頼できないアプレットの実行を防ぐ機能を有効にする(S25)。この機能では、JREに含まれるJava仮想マシンにおけるクラスローディングとクラス定義の制限機能を利用している。クラスローディング制限機能では、セキュリティプロパティ"package.access"に指定された文字列で始まるパッケージ群に含まれるクラスについて、信頼できないプログラムがロードすることを禁止できる。また、クラス定義制限機能では、セキュリティプロパティ"package.definition"に指定された文字列で始まるパッケージ群について、信頼できないプログラムが新しいクラスを定義することを禁止できる。そこで、これらのプロパティに「java.」、「javax.」、「 com.」および「org」等のような値を設定することにより、信頼できないプログラムは実行に必要なクラス(例えば、java.applet.Appletクラス)をロードすることができなくなるため、結果的に実行できなくなる。
次に、JREはCoziletクラスのinit()を呼び出す(S26)。Coziletクラスはinit()メソッドにおいて、自らの埋め込み元のHTML文書の配備されたサイトのURLが、cozilet配備記述子のtrusted_urlプロパティの値に含まれるURLのリストと比較して信頼できるものかどうかを調べる(S27)。埋め込み元のHTML文書の配備されたサイトのURLは、java.applet.AppletクラスのgetDocumentBase()により取得できる。ここでは、このURLがtrusted_urlプロパティに含まれる各URLのいずれか1つに一致すれば十分である。また、URLを前方一致で比較する構成とすることもできる。もし、trusted_urlプロパティに含まれるいずれのURLにも一致しなかった場合(S27,できない)、実行を強制終了する(S29)。
上述のチェックに問題がなければ(S27,できる)、Coziletクラス24aは、複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムとしてのCoziletClassLoaderクラス24bのインスタンスを生成する(ロード用プログラム起動ステップ)(S28)。CoziletClassLoaderクラス24bはコンストラクタにおいて、特殊形式JARファイル2に含まれるtarget.jarT、cozilet配備記述子のclass_pathプロパティで指定されたURL、そしてcozilet配備記述子のlibrary_pathプロパティで指定されたパスに存在する対象アプレットプログラムについて、ロード可能な状態にする。もしCoziletData.class24cによる改ざん防止がなされている場合には、対象アプレットプログラムの完全性を検証し(S2a)、改ざんが検出された場合(S2b,ある)、実行を強制終了する(S29)。
CoziletClassLoaderクラス24bのインスタンスの生成に成功したら、Coziletクラス24aはcozilet配備記述子のmain_classプロパティから取得できる対象アプレットのメインクラスの名前を、CoziletClassLoaderクラス24bのloadClass()に引数として渡して呼び出すことにより、対象アプレットのメインクラスのクラスインスタンスを得る(ロードステップ)。すなわち、改ざん検出ステップにおいて改ざんが検出されなかった場合に、配備情報に基づいて、ロード用プログラムに複数の所定のJavaアプレットプログラムをロードさせる。そして、そのクラスインスタンスのコンストラクタをJavaのリフレクションの仕組みにより呼び出して、その対象アプレットのメインクラスのインスタンスを得る(S2c)。
アプレットのいくつかの処理はアプレットスタブに委譲されている(getDocumentBase()の呼び出しなど)。アプレットスタブは最初は特殊アプレットにセットされる。Coziletクラスは自らのアプレットスタブを対象アプレットのsetStub()を呼び出してセットする(S2d)。アプレットスタブは対象アプレットを正常に実行させるために必要である。アプレットスタブはjava.applet.Appletクラスのprivateフィールドとして格納されており、Coziletクラス24aはそのフィールドにはアクセスできない。ここで、Java仮想マシンにおいて、Coziletクラスのインスタンスが登録されている特殊アプレットの親パネルがアプレットスタブの機能を有している場合、Coziletクラスから親パネルのインスタンスを得ることは容易なので、そのインスタンスをアプレットスタブとして対象アプレットにセットする(S2d)。
アプレットは親パネルに登録されていることで、ブラウザ上に表示されたり、GUIイベントを処理できるようになっている。親パネルには最初は特殊アプレットが登録されているため、Coziletクラス24aは親パネルに登録された自らのインスタンスを削除し、代わりに特殊アプレットプログラム24のメインクラスのインスタンスを登録する(S2e)。これによって、JREから送られるGUIイベントが特殊アプレット24に対してではなく対象アプレットに通知されるようになり、対象アプレットがアプレットとして正常に動作できるようになる。
そして、Coziletクラス24aは対象アプレットのメインクラスのinit()を呼び出す(S2f)。これ以降、特殊アプレットの代わりに対象アプレットがアプレットとして動作するようになり、アプレットの入れ替えが完了する(S2g)。
このように、同一性確認用情報に基づいて改ざんされていないことが確認された配備情報により複数の所定のJavaアプレットプログラムをロードする構成とすることで、Javaアプレットが改ざんされて当該Javaアプレットの作成者の意図とは異なる他のJavaアプレットプログラムがロードされることを防止することができる。すなわち、電子署名されたJavaアプレットが不正に再利用されることを簡単かつ確実に防止することができる。
また、特殊アプレットのpublicメソッドは攻撃者に悪用されるおそれがあるので、各メソッドの冒頭で、スタック検査による呼び出し元の検査を行っている。具体的には、各メソッドの冒頭で、java.security.AccessControllerクラスのcheckPermission()を、引数としてjava.security.AllPermissionクラスのインスタンスを渡して呼び出している。これにより、アクセス権AllPermissionを持たないクラス、つまり攻撃者のクラスは上述の特殊アプレットのpublicメソッドを呼び出すことができなくなる。checkPermission()に渡すアクセス権は、必ずしもAllPermissionでなくともよく、攻撃者の呼び出しを妨げるのに十分なアクセス権でよい。
なお、上述した特殊形式JARファイル2は、起動用プログラムとしてのCozilet.class24a、ロード用プログラムとしてのCoziletClassLoader.class24b、同一性確認用情報としてのCoziletData.class24c、JARファイル(target.jar)TおよびJARファイル(descriptor.jar)Dを含む構成となっているが(図3参照)、これに限られるものではなく、例えばtarget.jarTは必ずしも特殊形式JARファイル2に含まれる必要はない。なお、図12に示す特殊形式JARファイル201のように、JARファイル(target.jar)Tを特殊形式JARファイルに含まない構成とする場合、JARファイル(target.jar)TはJREにてロード可能な場所に配備されている必要がある。
この他、上述したように、(2)アプレットを正規な構成でのみ実行させるための機能12cを実現するアプレット等の内の一部をクライアント端末Cの外部からダウンロードし、残りをクライアント端末Cの内部に予め配備しておく構成とすることもできる(図13参照)。同図では、特殊形式JARファイル202として、同一性確認用情報としてのCoziletData.class24c、JARファイル(target.jar)TおよびJARファイル(descriptor.jar)Dを含む構成を示している。同図に示す構成の特殊形式JARファイル202を使用する場合、起動用プログラムとしてのCozilet.class24aおよびロード用プログラムとしてのCoziletClassLoader.class24bは、JREを備えたクライアント端末の記憶領域に予め格納されていることが好ましい。図14は、特殊形式JARファイル202の構成の詳細を示す図である。
また、特殊形式JARファイル203として、同一性確認用情報としてのCoziletData.class24cおよびJARファイル(descriptor.jar)Dを含む構成とすることもできる(図15参照)。この場合、起動用プログラムとしてのCozilet.class24aおよびロード用プログラムとしてのCoziletClassLoader.class24bは、JREを備えたクライアント端末の記憶領域に予め格納され、JARファイル(target.jar)TはJREにてロード可能な場所に配備されている必要がある。
このように、本実施の形態における特殊形式JARファイルは、図3、図12、図13および図15に示すように、様々な形式に分割することが可能であるが、上述したどの形式の特殊形式JARファイルにおいても、結果として分割された構成要素全てがJREにロードされ、図11に示した各ステップが実行される点では共通している。
上述したように、対象アプレットを特殊アプレットの代わりに親パネルに登録することにより、GUIイベントは正常に通知されるため、GUI関連の対象アプレットのメソッドについてはJREによって正常に実行される。しかし、GUI関連以外の対象アプレットのメソッドについては、JREが内部的に保持している動作中アプレットのリストに対象アプレットが登録されていないため、JREによって正常に実行されず、依然として特殊アプレットのメソッドが実行されてしまう。そこで、これらのメソッドについては、特殊アプレットの各メソッドにおいて、JREからのメソッド呼び出しを対象アプレットの該当メソッドに委譲するようにしている。
具体的には、対象アプレット配備情報として入力されたメソッドシグネチャ群と同じシグネチャを持つラッパーメソッド群を特殊アプレットのメインクラスに追加し、ラッパーメソッド群が自分自身へのメソッド呼び出し処理を対象アプレットのメインクラスの同じシグネチャを持つメソッドに委譲させる構成としている。
図16に、ラッパーメソッドを追加したCoziletクラス(起動用プログラムに相当)のソースコードの例を示す。このソースコードをコンパイルすることにより、ラッパーメソッドが追加されたCozilet.classを生成できる。同図の例では、配備情報として入力されたメソッドシグネチャdoSomething(java.lang.String)と同じシグネチャを持つラッパーメソッドを追加し、ラッパーメソッド内で同じシグネチャを持つ対象アプレットのメインクラスのメソッドを、Javaのリフレクションの仕組みを利用して呼び出している。
JavaScriptからアプレットのメソッドの呼び出しがあると、呼び出し依頼がJREに伝えられる。JREは動作中のアプレットリストを保持しており、このリストをもとに該当するアプレットのメソッドを呼び出す。ただし、アプレットリストは特殊アプレットから操作することができない。そこで、上述した特殊形式JARファイルに含まれる特殊アプレットのメインクラスに該当メソッドのラッパーメソッドを追加することで、ラッパーメソッドが呼び出された場合には、スクリプトコードがラッパーメソッドを経由して対象アプレットのメソッドを呼び出せるようにすることができる。
また、本実施の形態における特殊アプレットは自らの直列化が無効になるように実装されている。特殊アプレットの直列化が有効になっていると、攻撃者は直列化や直列化からの復元を行うインターフェイスを利用して、特殊アプレットのセキュリティ上重要なprivateフィールドの値を盗み出したり改ざんしたりすることが可能である。java.applet.Appletクラスは直列化可能として実装されているので、それを継承しているCoziletクラスも直列化可能となっている。そこで、Cozilet.class24aは、直列化に関連するメソッドにおいて強制的に例外を発生するように実装することにより、自らの直列化を無効にしている。図17 に直列化を無効にする実装を施したCoziletクラスのソースコードの例を示す。
続いて、図18を用いて上述のような構成の特殊形式JARファイル(図3、図12、図13および図15)を生成するためのJARファイル生成装置5について説明する。本装置は、複数の所定のJavaアプレットプログラムをコンピュータに実行させるJavaアプレットを含むJARファイルを生成する機能を有し、対象アプレットプログラム及び配備情報を入力することによって、対象アプレットプログラムを特殊形式JARファイルに変換する(対象アプレットプログラムのカプセル化)ものである。
本実施の形態によるJARファイル生成装置5は、同一性確認用情報生成部51、JARファイル生成部52、記憶部53、CPU54および特殊アプレット生成部55を備えてなる構成となっている。
同一性確認用情報生成部51は、対象アプレットプログラム(複数の所定のJavaアプレットプログラム)それぞれの所在について定義する配備情報に基づいて、配備情報の改ざんを検出するための同一性確認用情報を生成する役割を有する。
JARファイル生成部52は、複数の所定のJavaアプレットプログラム、配備情報および同一性確認用情報に基づいて、複数の所定のJavaアプレットプログラム、配備情報、同一性確認用情報、複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムおよびロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成する。また、JARファイル生成部52は、生成するJARファイルに対して電子署名を施す機能を有している。
特殊アプレット生成部55は、上述した起動用プログラムとしてのCozilet.class24aおよびロード用プログラムとしてのCoziletClassLoader.class24bを生成する役割を有する。
記憶部(コンピュータにより読取り可能な記録媒体)53は、RAMやROM等の記憶領域から構成されており、JARファイル生成装置5において実行されるプログラムや種々のアプレット等を格納する役割を有している。CPU(コンピュータ)54は、JARファイル生成装置5における各種処理を行うために、記憶部53に格納されているプログラムを実行する役割等を有している。
図19は、上述のようなJARファイル生成装置5における処理の流れ(JARファイル生成方法)について説明するためのフローチャートである。ここでは、図3に示すデータ形式の特殊形式JARファイルを生成する場合について述べる。
まず、JARファイル生成装置5において、入力データとして対象アプレットプログラム(ここでは、bar.jar21およびfoo.jar22)および当該対象アプレットプログラムの所在について定義する配備情報(格納場所やURL等)を取得する(S61)。
次に、同一性確認用情報生成部51は、取得された配備情報に基づいて、当該配備情報の改ざんを検出するための同一性確認用情報としてのJARファイル(descriptor.jar)Dを生成する(同一性確認用情報生成ステップ)(S62)。 具体的に、同一性確認用情報生成部51は、同一性確認用情報として、配備情報のハッシュ値または配備情報のデータの一部または全部を含むJARファイル、対象アプレットプログラムそれぞれのハッシュ値または対象アプレットプログラムそれぞれのデータの一部または全部を含むJARファイル、配備情報および対象アプレットプログラム両方のハッシュ値またはそれぞれのデータの一部または全部を含むJARファイルを生成することができる。
続いて、JARファイル生成部52は、対象アプレットプログラム(bar.jar21およびfoo.jar22)、配備情報および同一性確認用情報に基づいて、対象アプレットプログラム、配備情報、同一性確認用情報、対象アプレットプログラムをロードするためのロード用プログラムおよびロード用プログラムを起動させるための起動用プログラムを含むJARファイルを生成する。このとき、同一性確認用情報、ロード用プログラムおよび起動用プログラムは、図3に示すように、生成されるJARファイルにおいて同一パッケージにおけるクラスファイルとして定義される(JARファイル生成ステップ)(S63)。このように、配備情報の改ざんを検出するための同一性確認用情報を、所定のパッケージにおけるクラスファイルとして定義することで、当該JARファイルに電子署名が施された場合に、「same-package-same-signer」の仕組みによって、当該同一性確認用情報の不正な改ざんを防ぐことができる。また、生成するJARファイルに、複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムおよび該ロード用プログラムを起動させるための起動用プログラムを含ませるようにしたことで、当該JARファイルをダウンロードする端末において複数の所定のJavaアプレットプログラムをロードするための機能を実現するプログラムを予めインストールしておかずとも、このJARファイルをダウンロードするだけで複数の所定のJavaアプレットプログラムを安全にロードさせることができる。すなわち、当該JARファイルをロードし、実行するJREに対して何ら変更を加えることなく、電子署名されたJavaアプレットが不正に再利用されることを簡単かつ確実に防止することができる。
上述のようにして生成されたJARファイルは、必要に応じてJARファイル生成部52にて電子署名を施されて出力される(S64)。
上述のJARファイル生成方法における各ステップは、記憶部53に格納されているJARファイル生成プログラムを、CPU54に実行させることにより実現される。
上述のようなステップにより、特殊アプレットプログラムであるクラスファイル群、対象アプレットプログラムおよび配備情報を含む図3にて示したような特殊形式JARファイルを生成することができる。
なお、JARファイル生成部52は、特殊形式JARファイルに含ませる特殊アプレットプログラムであるクラスファイル群(ロード用プログラムおよび起動用プログラムなど)を、記憶部53に予め格納されているデータ中から選択することができる。もちろん、特殊アプレット生成部55にて生成された特殊アプレットを、特殊形式JARファイルに含ませるクラスファイル群とするように生成することもできる。
また、JARファイル生成部52は、図12に示すデータ形式の特殊形式JARファイル201のように、対象アプレットプログラムを特殊形式JARファイルには含めずに生成することもできる。この場合、JARファイル生成部52は、配備情報および同一性確認用情報に基づいて、配備情報、同一性確認用情報、対象アプレットプログラムをロードするためのロード用プログラムおよびロード用プログラムを起動させるための起動用プログラムを含むJARファイルを生成する。このとき、JARファイル生成部52により、同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義される。
また、JARファイル生成部52は、図13に示すデータ形式の特殊形式JARファイル202のように、特殊アプレットプログラム(ロード用プログラムおよび起動用プログラムなど)を特殊形式JARファイルには含めずに生成することもできる。この場合、JARファイル生成部52は、対象アプレットプログラム、配備情報および同一性確認用情報に基づいて、対象アプレットプログラム、配備情報および同一性確認用情報を含むJARファイルを生成する。このとき、JARファイル生成部52により、同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義される。
この他、JARファイル生成部52は、図15に示すデータ形式の特殊形式JARファイル203のように、対象アプレットプログラムおよび特殊アプレットプログラム(ロード用プログラムおよび起動用プログラムなど)を特殊形式JARファイルには含めずに生成することもできる。この場合、JARファイル生成部52は、配備情報および同一性確認用情報に基づいて、配備情報および同一性確認用情報を含むJARファイルを生成する。このとき、JARファイル生成部52により、同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義される。
なお、上述した構成の他、(3)アプレットを正規な構成でのみ実行させるための機能12cを実現するアプレット等の内、クライアント端末Cの外部に配備すべきデータのみ外部に配備し、その他のアプレット等はクライアント端末Cの内部に予め配備しておく構成とすることもできる(図20)。同図では、クライアント端末Cの内部に予め配備されたアプレットプログラム等を起動することにより、ロード用プログラムおよび起動用プログラムとしての役割を有する特殊アプレット起動部12a'が実現されている様子を示している。
以上に説明したように、本発明によれば、電子署名されたJavaアプレットが不正に再利用されることを簡単かつ確実に防止することができる。

Claims (23)

  1. 出所が保証されたプログラムをコンピュータに実行させるJavaアプレットであって
    前記出所が保証されたプログラムのメインクラスや、前記出所が保証されたプログラムを実行するためのデータの所在であって、外部サーバのURLまたはローカルディスクのパスで示された所在定義された配備情報の改ざんを検出するための同一性確認用情報に基づいて、前記配備情報の改ざんを検出する改ざん検出ステップと、
    前記出所が保証されたプログラムをロードするためのロード用プログラムを起動させるロード用プログラム起動ステップと、
    前記改ざん検出ステップにおいて改ざんが検出されなかった場合に、前記配備情報に基づいて、前記起動させたロード用プログラムにより前記出所が保証されたプログラムをロードさせるロードステップとをコンピュータに実行させ
    前記出所が保証されたプログラムおよび前記Javaアプレットは、一つのJARファイルで提供され、該JARファイルは出所を保証するための電子署名が施されることを特徴とする
    Javaアプレット。
  2. 請求項1に記載のJavaアプレットにおいて、
    前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデータを含むJavaアプレット。
  3. 請求項1に記載のJavaアプレットにおいて、
    前記同一性確認用情報は、前記出所が保証されたプログラムのハッシュ値または前記出所が保証されたプログラムのデータを含み、
    前記改ざん検出ステップは、前記同一性確認用情報に基づいて、前記出所が保証されたプログラムの改ざんを検出するJavaアプレット。
  4. 請求項1に記載のJavaアプレットにおいて、
    該Javaアプレットにおけるメインクラスに対して、Javaスクリプトを使用したメソッド呼び出し要求があった場合に、該呼び出し要求に基づくメソッド呼び出し処理を、前記出所が保証されたプログラムの内の前記呼び出されたメソッドに対応するメソッドに委譲させる委譲ステップを有するJavaアプレット。
  5. 請求項1に記載のJavaアプレットにおいて、
    該Javaアプレットに対して設定されているアプレットスタブを、前記ロードステップにおいてロードされた、出所が保証されたプログラムに対して設定するアプレットスタブ設定ステップを有するJavaアプレット。
  6. コンピュータが、出所が保証されたプログラムと、該出所が保証されたプログラムをコンピュータに実行させるJavaアプレットを含むJARファイルであって、該JARファイルには出所を保証するための電子署名が施されるJARファイルを生成する処理を行うJARファイル生成方法であって、
    前記コンピュータが、
    前記出所が保証されたプログラムのメインクラスや、前記出所が保証されたプログラムを実行するためのデータの所在であって、外部サーバのURLまたはローカルディスクのパスで示された所在定義された配備情報に基づいて、前記配備情報の改ざんを検出するための同一性確認用情報を生成する同一性確認用情報生成ステップと、
    前記配備情報および同一性確認用情報に基づいて、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成ステップとを実行することを特徴とするJARファイル生成方法。
  7. 請求項6に記載のJARファイル生成方法において、
    前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデータを含むJARファイル生成方法。
  8. 請求項6に記載のJARファイル生成方法において、
    前記JARファイル生成ステップは、前記配備情報および同一性確認用情報に基づいて、前記配備情報、同一性確認用情報、前記出所が保証されたプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成方法。
  9. 請求項6に記載のJARファイル生成方法において、
    前記JARファイル生成ステップは、前記出所が保証されたプログラム、前記配備情報および同一性確認用情報に基づいて、前記出所が保証されたプログラム、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成方法。
  10. 請求項9に記載のJARファイル生成方法において、
    前記同一性確認用情報は、前記出所が保証されたプログラムのハッシュ値または前記出所が保証されたプログラムのデータを含むJARファイル生成方法。
  11. 請求項6に記載のJARファイル生成方法において、
    前記JARファイル生成ステップは、前記出所が保証されたプログラム、前記配備情報および同一性確認用情報に基づいて、前記出所が保証されたプログラム、前記配備情報、同一性確認用情報、前記出所が保証されたプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成方法。
  12. 出所が保証されたプログラムと、該出所が保証されたプログラムをコンピュータに実行させるJavaアプレットを含むJARファイルであって、該JARファイルには出所を保証するための電子署名が施されるJARファイルを生成する処理をコンピュータに実行させるJARファイル生成プログラムであって、
    前記出所が保証されたプログラムのメインクラスや、前記出所が保証されたプログラムを実行するためのデータの所在であって、外部サーバのURLまたはローカルディスクのパスで示された所在定義された配備情報に基づいて、前記配備情報の改ざんを検出するための同一性確認用情報を生成する同一性確認用情報生成ステップと、
    前記配備情報および同一性確認用情報に基づいて、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成ステップとをコンピュータに実行させることを特徴とするJARファイル生成プログラム。
  13. 請求項12に記載のJARファイル生成プログラムにおいて、
    前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデータを含むJARファイル生成プログラム。
  14. 請求項12に記載のJARファイル生成プログラムにおいて、
    前記JARファイル生成ステップは、前記配備情報および同一性確認用情報に基づいて、前記配備情報、同一性確認用情報、前記出所が保証されたプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成プログラム。
  15. 請求項12に記載のJARファイル生成プログラムにおいて、
    前記JARファイル生成ステップは、前記出所が保証されたプログラム、前記配備情報および同一性確認用情報に基づいて、前記出所が保証されたプログラム、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成プログラム。
  16. 請求項15に記載のJARファイル生成プログラムにおいて、
    前記同一性確認用情報は、前記出所が保証されたプログラムのハッシュ値または前記出所が保証されたプログラムのデータを含むJARファイル生成プログラム。
  17. 請求項12に記載のJARファイル生成プログラムにおいて、
    前記JARファイル生成ステップは、前記出所が保証されたプログラム、前記配備情報および同一性確認用情報に基づいて、前記出所が保証されたプログラム、前記配備情報、同一性確認用情報、前記出所が保証されたプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成プログラム。
  18. 出所が保証されたプログラムと、該出所が保証されたプログラムをコンピュータに実行させるJavaアプレットを含むJARファイルであって、該JARファイルには出所を保証するための電子署名が施されるJARファイルを生成するJARファイル生成装置であって、
    前記出所が保証されたプログラムのメインクラスや、前記出所が保証されたプログラムを実行するためのデータの所在であって、外部サーバのURLまたはローカルディスクのパスで示された所在定義された配備情報に基づいて、前記配備情報の改ざんを検出するための同一性確認用情報を生成する同一性確認用情報生成部と、
    前記配備情報および同一性確認用情報に基づいて、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成部とを備えてなるJARファイル生成装置。
  19. 請求項18に記載のJARファイル生成装置において、
    前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデータを含むJARファイル生成装置。
  20. 請求項18に記載のJARファイル生成装置において、
    前記JARファイル生成部は、前記配備情報および同一性確認用情報に基づいて、前記配備情報、同一性確認用情報、前記出所が保証されたプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成装置。
  21. 請求項18に記載のJARファイル生成装置において、
    前記JARファイル生成部は、前記出所が保証されたプログラム、前記配備情報および同一性確認用情報に基づいて、前記出所が保証されたプログラム、前記配備情報および同一性確認用情報を含むJARファイルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成装置。
  22. 請求項21に記載のJARファイル生成装置において、
    前記同一性確認用情報は、前記出所が保証されたプログラムのハッシュ値または前記出所が保証されたプログラムのデータを含むJARファイル生成装置。
  23. 請求項18に記載のJARファイル生成装置において、
    前記JARファイル生成部は、前記出所が保証されたプログラム、前記配備情報および同一性確認用情報に基づいて、前記出所が保証されたプログラム、前記配備情報、同一性確認用情報、前記出所が保証されたプログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを含むJARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義されているJARファイルを生成するJARファイル生成装置。
JP2006531090A 2004-08-12 2004-08-12 Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置 Expired - Fee Related JP4745238B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2004/011590 WO2006016407A1 (ja) 2004-08-12 2004-08-12 Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置

Publications (2)

Publication Number Publication Date
JPWO2006016407A1 JPWO2006016407A1 (ja) 2008-05-01
JP4745238B2 true JP4745238B2 (ja) 2011-08-10

Family

ID=35839184

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006531090A Expired - Fee Related JP4745238B2 (ja) 2004-08-12 2004-08-12 Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置

Country Status (5)

Country Link
US (1) US8479005B2 (ja)
EP (1) EP1783580A4 (ja)
JP (1) JP4745238B2 (ja)
AU (1) AU2004322201B2 (ja)
WO (1) WO2006016407A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2284644B1 (en) 2000-09-21 2014-03-05 BlackBerry Limited Software code signing system and method
US8352911B2 (en) * 2007-11-21 2013-01-08 Teradata Us, Inc. Techniques for constructing and using run-time JAVA archives (JAR) for JAVA Stored Procedures (JSPS)
CN100478897C (zh) * 2007-12-04 2009-04-15 腾讯科技(深圳)有限公司 实现在游戏运行过程中自动验证支付的方法、装置和系统
US8601363B2 (en) 2009-07-20 2013-12-03 Facebook, Inc. Communicating information about a local machine to a browser application
US8863119B2 (en) * 2010-05-27 2014-10-14 Salesforce.Com, Inc. Methods and systems for generating a dynamic workflow in a multi-tenant database environment
US8745598B2 (en) * 2010-12-14 2014-06-03 Bmc Software, Inc. Running injected code prior to execution of an application
US9195479B2 (en) * 2011-10-17 2015-11-24 Google Inc. Selective notification of native applications
JP5056995B1 (ja) * 2012-04-24 2012-10-24 大日本印刷株式会社 改竄検知が可能なアプリケーションプログラムの配布実行方法
WO2013161974A1 (ja) * 2012-04-24 2013-10-31 大日本印刷株式会社 改竄検知が可能なアプリケーションプログラムの配布実行方法
JP5126447B1 (ja) * 2012-08-31 2013-01-23 大日本印刷株式会社 アプリケーションプログラムの実行方法
US9448782B1 (en) 2012-08-27 2016-09-20 Amazon Technologies, Inc. Reducing a size of an application package
JP5182445B1 (ja) * 2012-09-18 2013-04-17 大日本印刷株式会社 アプリケーションプログラムの改竄検知方法
US9288058B2 (en) * 2013-09-03 2016-03-15 Red Hat, Inc. Executing compliance verification or remediation scripts
US9910680B2 (en) * 2014-04-22 2018-03-06 Oracle International Corporation Decomposing a generic class into layers
US10228992B2 (en) 2016-01-06 2019-03-12 International Business Machines Corporation Providing instructions to facilitate detection of corrupt stacks
US9495237B1 (en) 2016-01-06 2016-11-15 International Business Machines Corporation Detection of corruption of call stacks
US9576128B1 (en) 2016-01-06 2017-02-21 International Business Machines Corporation Interlinking routines with differing protections using stack indicators
US9514301B1 (en) 2016-01-06 2016-12-06 International Business Machines Corporation Interlinking modules with differing protections using stack indicators
US10120745B2 (en) 2016-01-06 2018-11-06 International Business Machines Corporation Providing instructions to protect stack return addresses in a hardware managed stack architecture
US9582274B1 (en) 2016-01-06 2017-02-28 International Business Machines Corporation Architected store and verify guard word instructions
US9606855B1 (en) 2016-01-06 2017-03-28 International Business Machines Corporation Caller protected stack return address in a hardware managed stack architecture
CN107786630B (zh) * 2017-09-06 2020-08-28 阿里巴巴集团控股有限公司 一种web应用包处理方法、装置及设备
US11736466B2 (en) * 2019-09-18 2023-08-22 Bioconnect Inc. Access control system
CN110888740B (zh) * 2019-11-22 2022-06-03 腾讯科技(深圳)有限公司 小程序的增量内存确定方法、装置、设备及存储介质
CN111427856B (zh) * 2020-03-11 2023-06-02 北京明略软件系统有限公司 一种Java数据的处理方法和装置
CN112698839B (zh) * 2020-12-30 2024-04-12 深圳前海微众银行股份有限公司 数据中心节点部署方法、装置、系统及计算机存储介质
CN114357387B (zh) * 2021-12-29 2025-02-21 杭州涂鸦信息技术有限公司 java应用程序防篡改的判断方法、编译方法及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003050662A1 (fr) * 2001-12-13 2003-06-19 Japan Science And Technology Agency Systeme d'execution securisee d'un logiciel
WO2003083646A1 (fr) * 2002-04-03 2003-10-09 Ntt Docomo, Inc. Procede et systeme de distribution, et terminal

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958051A (en) * 1996-11-27 1999-09-28 Sun Microsystems, Inc. Implementing digital signatures for data streams and data archives
US5892904A (en) * 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
US6317742B1 (en) * 1997-01-09 2001-11-13 Sun Microsystems, Inc. Method and apparatus for controlling software access to system resources
US6807632B1 (en) * 1999-01-21 2004-10-19 Emc Corporation Content addressable information encapsulation, representation, and transfer
ATE437398T1 (de) * 1998-05-06 2009-08-15 Sun Microsystems Inc Verarbeitungsmaschine und verarbeitungsverfahren
US6694434B1 (en) * 1998-12-23 2004-02-17 Entrust Technologies Limited Method and apparatus for controlling program execution and program distribution
US6430608B1 (en) * 1999-02-09 2002-08-06 Marimba, Inc. Method and apparatus for accepting and rejecting files according to a manifest
JP2000331088A (ja) * 1999-03-12 2000-11-30 Mitsubishi Electric Corp 認定マーク管理システムおよび認定マーク管理方法
US6718364B2 (en) * 1999-08-10 2004-04-06 Sun Microsystems, Inc. Method and apparatus for expedited file downloads in an applet environment
US6976165B1 (en) * 1999-09-07 2005-12-13 Emc Corporation System and method for secure storage, transfer and retrieval of content addressable information
US6766353B1 (en) * 2000-07-11 2004-07-20 Motorola, Inc. Method for authenticating a JAVA archive (JAR) for portable devices
GB0024918D0 (en) * 2000-10-11 2000-11-22 Sealedmedia Ltd Method of providing java tamperproofing
US6910128B1 (en) * 2000-11-21 2005-06-21 International Business Machines Corporation Method and computer program product for processing signed applets
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
US7003672B2 (en) * 2001-09-25 2006-02-21 Hewlett-Packard Development Company, L.P. Authentication and verification for use of software
JP2003283494A (ja) * 2002-03-27 2003-10-03 Ntt Docomo Inc 通信端末のアクセス制御方法、認定プログラム提供装置、管理装置および通信端末
US7107592B2 (en) * 2002-07-25 2006-09-12 Sun Microsystems, Inc. Method, system, and program for making objects available for access to a client over a network
US20040123270A1 (en) * 2002-12-23 2004-06-24 Motorola, Inc. Method and apparatus for shared libraries on mobile devices
JP4176533B2 (ja) * 2003-03-31 2008-11-05 株式会社エヌ・ティ・ティ・ドコモ 端末装置及びプログラム
US7814484B2 (en) * 2004-05-14 2010-10-12 Bea Systems, Inc. System and method for web application extensibility

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003050662A1 (fr) * 2001-12-13 2003-06-19 Japan Science And Technology Agency Systeme d'execution securisee d'un logiciel
WO2003083646A1 (fr) * 2002-04-03 2003-10-09 Ntt Docomo, Inc. Procede et systeme de distribution, et terminal

Also Published As

Publication number Publication date
EP1783580A1 (en) 2007-05-09
AU2004322201A1 (en) 2006-02-16
WO2006016407A1 (ja) 2006-02-16
US20070169041A1 (en) 2007-07-19
EP1783580A4 (en) 2011-03-23
AU2004322201B2 (en) 2008-10-30
US8479005B2 (en) 2013-07-02
JPWO2006016407A1 (ja) 2008-05-01

Similar Documents

Publication Publication Date Title
JP4745238B2 (ja) Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置
US7546587B2 (en) Run-time call stack verification
EP0843249B1 (en) Dynamic classes of service for an international cryptography framework
CN104335220B (zh) 用于防止和检测安全威胁的方法和系统
US7496757B2 (en) Software verification system, method and computer program element
KR101503785B1 (ko) 동적 라이브러리를 보호하는 방법 및 장치
JP4975127B2 (ja) 取り外し可能な媒体に格納された実行可能なコードにタンパーエビデント性を提供する装置
Martin The ten-page introduction to Trusted Computing
Piao et al. Server‐based code obfuscation scheme for APK tamper detection
Burns Developing secure mobile applications for android
Gadyatskaya et al. Security in the Firefox OS and Tizen mobile platforms
Raffetseder et al. Building anti-phishing browser plug-ins: An experience report
Hwang et al. All about activity injection: Threats, semantics, detection, and defense
Koved et al. The evolution of Java security
KR100839296B1 (ko) Java 애플릿을 기록한 기록 매체, JAR 파일 생성 방법, JAR 파일 생성 프로그램을 기록한 기록매체, JAR 파일 생성 장치
JP3888273B2 (ja) 外部プログラムの動作制御方法、動作制御プログラム、動作制御装置、及び、動作制御プログラム提供装置
Anderson Java™ access control mechanisms
Jadhav Protecting the integrity of Android applications by employing automated self-introspection methods
GB2627941A (en) File-system protection
KR20130093804A (ko) 응용 서비스 기밀 실행을 위한 런타임 제공 장치 및 방법
CN115033854A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN119131955A (zh) 一种应用于自助终端的web页面交互技术
Zhang Java security: Issues and implications for library and archival systems
Shi et al. The transitive trust in Java virtual machines
Dasgupta et al. Techniques for validation and controlled execution of processes, codes and data: A survey

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100712

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110511

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

Free format text: PAYMENT UNTIL: 20140520

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4745238

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees