JP2001273131A - プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム、編集プログラム、記憶媒体及びプログラム伝送装置 - Google Patents

プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム、編集プログラム、記憶媒体及びプログラム伝送装置

Info

Publication number
JP2001273131A
JP2001273131A JP2000082556A JP2000082556A JP2001273131A JP 2001273131 A JP2001273131 A JP 2001273131A JP 2000082556 A JP2000082556 A JP 2000082556A JP 2000082556 A JP2000082556 A JP 2000082556A JP 2001273131 A JP2001273131 A JP 2001273131A
Authority
JP
Japan
Prior art keywords
name
program
package
class
replacing
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
JP2000082556A
Other languages
English (en)
Other versions
JP3555858B2 (ja
Inventor
Hiroshi Maruyama
宏 丸山
Takashi Kojima
尚 兒島
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
Priority to JP2000082556A priority Critical patent/JP3555858B2/ja
Priority to US09/816,954 priority patent/US6792596B2/en
Publication of JP2001273131A publication Critical patent/JP2001273131A/ja
Application granted granted Critical
Publication of JP3555858B2 publication Critical patent/JP3555858B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register

Abstract

(57)【要約】 【課題】 名前スコープを用いたアクセス制限を有効に
活用して、保護されるべきリソースを持つプログラムが
不正なプログラムに呼ばれることを防止できるようにプ
ログラムを編集する。 【解決手段】 複数のクラスにて構成されたJavaの
プログラムに対し、各クラスが属するパッケージのパッ
ケージ名を単一のパッケージ名に置き換えるステップ
(101)と、このクラスにおけるこのプログラムの外
部から参照されない内部化可能なデータの名前スコープ
を、パッケージスコープに変更するステップ(102)
と、このパッケージ名の置き換えとこの名前スコープの
変更が行われたプログラムに対して、電子署名を行うス
テップ(105)とを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、保護されるべきリ
ソースを持つプログラムが不正なプログラムに呼ばれる
ことを防止できるようにプログラムの編集を行うプログ
ラム編集方法に関する。
【0002】
【従来の技術】Javaは、一つのJavaVMの中
に、複数のプログラムが実行時にロードされて実行され
るというユニークなプログラミング環境を持つ。このた
め、保護されるべきリソースを持つプログラム(以下、
プログラムAと称す)が、不正なプログラム(以下、プ
ログラムMと称す)に呼ばれることを防ぐためのメカニ
ズムが必要である。保護することが必要なプログラムA
としては、ローカルファイルなどをアクセスするシステ
ムクラス群(FileInputStream等)や、ユーザのプライ
バシー情報を管理しているクラス、署名されたことによ
ってシステムクラスを呼ぶ権限を保持しているクラスな
どがある。
【0003】プログラムの実行時にプログラムAをプロ
グラムMから見えないようにする手段(動的なアクセス
制限)としては、通常、次の二つの方法が使われる。一
つは、プログラムAとプログラムMが異なるアプリケー
ションである場合に、クラスローダを分離する方法であ
る。Javaのコードは全てクラス単位の .class ファ
イルによって構成されており、クラスが必要になるとク
ラスローダ(Class Loader)により動的にロードされ
る。クラスローダは、当該クラスのプリンシパル(Prin
cipal)を見て、ロードして良いかどうかを決定する。
他の一つは、プログラムAがシステムクラスである場合
に、スタックインスペクションにより、プログラムMの
プリンシパルをテストする方法である。
【0004】しかしながら、クラスローダを分離する方
法では、プログラムAとプログラムMとを同じウェブペ
ージ(ディレクトリ)に置いたならば、プログラムMが
プログラムAのクラスローダを使用することができるた
め、アクセス制限を突破できてしまう。また、スタック
インスペクションを行う方法では、署名付きのプログラ
ムAがアクセスに必要な権限を取得した場合や、ローカ
ルファイルからロードされたクラスに対しては、スタッ
クインスペクションが適用されない。
【0005】プログラムの実行に先立ってプログラムA
を保護する手段(静的なアクセス制限)としては、名前
スコープを用いてアクセスを制限する方法がある。名前
スコープとは、フィールドやメソッドを参照できる範囲
を定義するために、当該フィールドやメソッドにおいて
宣言されるものである。すなわち、宣言された名前に応
じて、他のプログラムからの参照(アクセス)を制御す
ることができる。例えば、privateスコープは他のプロ
グラムから直接参照することは一切できないし、反対
に、publicスコープは他のプログラムから自由に参照す
ることができる。また、packageスコープは、当該packa
geスコープの宣言されたフィールドやメソッドと同一の
パッケージ内からでなければ参照することができない。
【0006】名前スコープを用いる場合、プライベート
と宣言されたフィールドやメソッドは、他のプログラム
から直接アクセスされることがないことが保証されてい
る。したがって、プログラムAに関してプライベートと
宣言することにより、プログラムMからのアクセスを制
限することができる。しかしながら、プログラムが複数
のクラスからなり、それらのクラス間にインタラクショ
ンが存在する以上、全てのフィールドやメソッドをプラ
イベートと宣言することはできず、いくつかのフィール
ド及びメソッドは、package以上(package、protecte
d、publicのいずれか)のスコープを持たざるを得な
い。
【0007】packageスコープは、JDK 1.2.1までの
Javaプログラムでは、任意のプログラムMが、自由
に自分のパッケージを宣言することができる(ただし、
パッケージ内だけで有効な名前の範囲に限られる)。こ
のため、プログラムMがプログラムAと同じ名前のパッ
ケージを宣言することによって、当該プログラムAのパ
ッケージに参加してしまう、いわゆる「Package Joinin
g Attack」が可能であった。すなわち、パッケージは、
誤って名前が衝突してしまうことは防げるが、セキュリ
ティ上のアクセスコントロールのメカニズムとしては不
十分だった。
【0008】JDK 1.2.2では、一つのパッケージにお
ける署名者をただ一人だけとする1パッケージ1署名者
の原則(One-Package-One-Principal Policy)が取りい
れられたため、プログラムAが署名されている限り、署
名されていないプログラムMがプログラムAと同一のパ
ッケージに参加することはできなくなった。従って、署
名されたプログラムでは、パッケージと宣言されたフィ
ールドやメソッドは不正なプログラムにアクセスされる
ことはなくなった。このため、Packageスコープは、セ
キュリティ上のアクセス制限の機能を果たせることとな
った。
【0009】
【発明が解決しようとする課題】上述したように、Ja
vaにおいて、保護されるべきリソースを持つプログラ
ムAが不正なプログラムMに呼ばれることを防ぐための
メカニズムとしては、名前スコープを用いた静的なアク
セス制限手段を用いることが有効である。しかし、セキ
ュリティ上のアクセス制限を実現するのは、プログラム
Aに関してプライベートと宣言した場合か、署名された
プログラムAに関してパッケージと宣言した場合に限ら
れ、protectedやpublicのスコープを持つクラス、フィ
ールド及びメソッドについては、依然としてセキュリテ
ィ上の保護はない。
【0010】しかしながら、ある程度以上の大きなJa
vaプログラムは、複数のパッケージからなることが多
く、パッケージ間のインタラクションのために、いくつ
かのクラス、フィールドまたはメソッドをパブリックに
せざるを得ない。したがって、そのようなプログラムで
は、privateスコープやpackageスコープを用いたアクセ
ス制限を有効に活用することができない。
【0011】そこで本発明は、名前スコープを用いたア
クセス制限を有効に活用して、保護されるべきリソース
を持つプログラムが不正なプログラムに呼ばれることを
防止できるようにJavaプログラムを編集することを
目的とする。
【0012】また、本発明は、Javaにおけるpackag
eスコープと同様の概念に基づくアクセス制御を実現す
るプログラミング言語において、保護されるべきリソー
スを持つプログラムが不正なプログラムに呼ばれること
を防止できるようにプログラムを編集することを目的と
する。
【0013】
【課題を解決するための手段】かかる目的のもと、本発
明は、オブジェクト指向プログラミング言語で記述され
たプログラムの編集方法において、このオブジェクト指
向プログラミング言語は、一定の参照範囲を設定した場
合にこの参照範囲内のみでの相互参照を認めるパッケー
ジの概念を持っていること、及びアクセス要求者の身元
を特定する身元情報に基づいてアクセス権限を取得する
アクセス制御システムを持っていること、という二つの
条件を満足する言語であり、複数のクラスにて構成され
たアプリケーションプログラムに対し、各クラスに付さ
れたパッケージ名を単一のパッケージ名に置き換えるス
テップと、前記クラス中の、アプリケーションプログラ
ムの外部から参照されない内部化可能なデータにおける
属性を、同一パッケージ内からの参照を受け付けるよう
に変更するステップと、このパッケージ名の置き換えス
テップとこのデータ属性の変更ステップとを経たアプリ
ケーションプログラムに対して、アクセス要求者の身元
を特定する身元情報に基づくアクセス権限を取得させる
ステップとを含むことを特徴としている。このような構
成とすれば、システムクラスとの間で参照を行うような
内部化可能でないメソッド、変数などを除き、同一パッ
ケージ内からの参照を受け付けるように変更されたデー
タは、このアプリケーションプログラムと同一のアクセ
ス権限を取得したプログラム以外からのアクセスは受け
付けなくなる。そこで、一つのパッケージに対するアク
セス権限の取得者を一つに限定する原則を採用すれば、
このデータに対して、このアプリケーションプログラム
の外部からのアクセスが一切できなくなるため、外部か
らの不正なアクセスを防止できる。
【0014】ここで、パッケージ名の置き換えステップ
によりパッケージ名を置き換えた結果、アプリケーショ
ンプログラム中の所定のクラスにおけるクラス名が同一
となる場合に、このクラスのクラス名を変更するステッ
プをさらに含むこととすることができる。このような構
成とすれば、異なるパッケージに同一のクラス名を持つ
クラスが存在している場合にも、このアプリケーション
プログラムのシングルパッケージ化を行える点で好まし
い。
【0015】このクラス名変更ステップは、所定のクラ
スのクラス名を変更するために、パッケージ名の置き換
えステップによる変更前のこのクラスが属するパッケー
ジ名に用いられた文字列を用いて新たなクラス名を生成
することができる。このような構成とすれば、衝突を回
避する新たなクラス名を機械的に生成できる点で好まし
い。パッケージ名に用いられた文字列を用いて新たなク
ラス名を生成する具体的な手法としては、例えば、パッ
ケージ名のドットをアンダースコア(下線)に置き換え
てそのまま用いるといった方法を採ることができる。ま
た、確実に衝突を回避するために、どのクラス名にも現
れない文字列を新たなクラス名に追加するようにしても
良い。
【0016】またここで、パッケージ名を変更した際に
重複するクラス名が存在するかどうかを検出せず、機械
的に、このアプリケーションプログラム中のクラスのク
ラス名を、相互に重複しない固有のクラス名に変更する
ステップをさらに含むこととすることができる。クラス
名を変更する具体的な手法としては、例えば、各クラス
に連続番号を振るといった方法を採ることができる。
【0017】また、本発明によれば、Javaのプログ
ラムをシングルパッケージ化する、次のようなシングル
パッケージ化システムを実現することができる。すなわ
ち、複数のクラスにて構成されたJavaのプログラム
を入力する入力手段と、この入力手段にて入力されたプ
ログラム中の、各クラスが属するパッケージのパッケー
ジ名を単一のパッケージ名に置き換えるパッケージ名置
き換え手段と、前記クラス中の、このプログラムの外部
から参照されない内部化可能なデータの名前スコープ
を、パッケージスコープに変更する名前スコープ変更手
段と、このパッケージ名の置き換えとこの名前スコープ
の変更とが行われたプログラムを出力する出力手段とを
備える。このような構成とすれば、このプログラム中の
メッセージや変数のうちで、このプログラムの中でのみ
参照が行われるものに関しては、このプログラム全体を
含む単一のパッケージの外部からのアクセスを受け付け
なくなる。したがって、このプログラムに電子署名を施
し、一つのパッケージにおける署名者をただ一人だけと
する1パッケージ1署名者の原則を併せて採用すること
により、このメッセージや変数に対して、このプログラ
ムの外部からのアクセスが一切できなくなるため、外部
からの不正なアクセスを防止できる。
【0018】したがって、このシングルパッケージ化シ
ステムは、パッケージ名の置き換えと名前スコープの変
更とが行われたプログラムに対して、電子署名を行う電
子署名手段をさらに備えた構成とすることができる。
【0019】さらに、このシングルパッケージ化システ
ムは、クラス名及びクラス中の内部化可能なデータにお
ける名前スコープの名前リストを作成する名前リスト作
成手段と、この名前リスト作成手段にて作成された名前
リスト中において、パッケージ名置き換え手段によるパ
ッケージ名の置き換えによって、同一となるクラス名を
検出し、このクラス名の重複を回避するようにこの名前
リストにおけるクラス名を変更する名前衝突回避手段と
をさらに備え、名前スコープ変更手段は、この名前リス
トを参照して名前スコープを変更し、かつクラス名を衝
突の回避されたクラス名に変更する構成とすることがで
きる。このような構成とすれば、シングルパッケージ化
前のプログラムにおける異なるパッケージに同一のクラ
ス名を持つクラスが存在している場合にも、このプログ
ラムのシングルパッケージ化を行える点で好ましい。
【0020】また、本発明は、Javaのプログラムを
開発するためのプログラム開発システムにおいて、複数
のクラスにて構成されたプログラムに対し、各クラスが
属するパッケージのパッケージ名を単一のパッケージ名
に置き換えるパッケージ名置き換え手段と、前記クラス
中の、このプログラムの外部から参照されない内部化可
能なデータの名前スコープを、パッケージスコープに変
更する名前スコープ変更手段と、このパッケージ名の置
き換えとこの名前スコープの変更が行われたプログラム
に対して、電子署名を行う電子署名手段とを備えたこと
を特徴としている。このような構成とすれば、Java
によるプログラム開発の最終段階において、作成された
プログラムをシングルパッケージ化して電子署名を施す
ことができる点で好ましい。
【0021】ここで、クラス名及びクラス中の内部化可
能なデータにおける名前スコープの名前リストを作成す
る名前リスト作成手段と、この名前リスト作成手段にて
作成された名前リスト中において、パッケージ名置き換
え手段によるパッケージ名の置き換えによって、同一と
なるクラス名を検出し、このクラス名の重複を回避する
ようにこの名前リストにおけるクラス名を変更する名前
衝突回避手段とをさらに備え、名前スコープ変更手段
は、この名前リストを参照して名前スコープを変更し、
かつクラス名を衝突の回避されたクラス名に変更するこ
ととしている。このような構成とすれば、シングルパッ
ケージ化前のプログラムにおける異なるパッケージに同
一のクラス名を持つクラスが存在している場合にも、こ
のプログラムのシングルパッケージ化を行える点で好ま
しい。
【0022】また、本発明によれば、プログラムに対し
て身元情報を付加する、次のような身元情報付加システ
ムを実現することができる。すなわち、一定の参照範囲
を設定した場合にこの参照範囲内のみでの相互参照を認
めるパッケージの概念を持ち、各々所定の当該パッケー
ジに属する複数のクラスにて構成されたアプリケーショ
ンプログラムを入力する入力手段と、この入力手段にて
入力されたこのアプリケーションプログラムにおける各
クラスが属するパッケージのパッケージ名を単一のパッ
ケージ名に置き換えるパッケージ名置き換え手段と、前
記クラス中の、このアプリケーションプログラムの外部
から参照されない内部化可能なデータにおける属性を、
同一パッケージ内からの参照を受け付けるように変更す
る属性変更手段と、このパッケージ名の置き換えとこの
データ属性の変更とが行われたアプリケーションプログ
ラムに対して、アクセス要求者の身元を特定する身元情
報を付加してこの身元情報に基づくアクセス権限を取得
させる身元情報付加手段と、この身元情報を付加された
アプリケーションプログラムを出力する出力手段とを備
える。このような構成とすれば、作成されたアプリケー
ションプログラムに対してアクセス権限を取得するため
の身元情報の付加を行う際に、このアプリケーションプ
ログラムをシングルパッケージ化することができる点で
好ましい。
【0023】ここで、この身元情報付加システムにて付
加される身元情報として、電子署名を用いることができ
る。このようにすれば、既に現存する電子署名に基づい
てアクセス権限を取得するアクセス制御システムに本発
明を適用することができる点で好ましい。
【0024】また、本発明は、一定の参照範囲を設定し
た場合にこの参照範囲内のみでの相互参照を認めるパッ
ケージの概念を持つオブジェクト指向プログラミング言
語で記述されたプログラムを対象として、コンピュータ
に当該プログラムを編集させる編集プログラムにおい
て、各々所定のパッケージに属する複数のクラスにて構
成されたアプリケーションプログラムに対し、各クラス
が属するパッケージのパッケージ名を単一のパッケージ
名に置き換える処理と、前記クラス中の、このアプリケ
ーションプログラムの外部から参照されない内部化可能
なデータにおける属性を、同一パッケージ内からの参照
を受け付けるように変更する処理とを含むことを特徴と
している。
【0025】ここで、このパッケージ名の置き換え処理
により、パッケージ名を置き換えた結果、このアプリケ
ーションプログラム中の所定のクラスにおけるクラス名
が同一となる場合に、このクラスのクラス名を変更する
処理をさらに含むことができる。これにより、異なるパ
ッケージに同一のクラス名を持つクラスが存在している
場合にも、このプログラムのシングルパッケージ化を行
える点で好ましい。
【0026】また、本発明は、コンピュータに実行させ
るプログラムをこのコンピュータの入力手段が読取可能
に記憶した記憶媒体において、このプログラムは、複数
のクラスにて構成されたJavaのアプリケーションプ
ログラム中の、各クラスが属するパッケージのパッケー
ジ名を単一のパッケージ名に置き換える処理と、前記ク
ラス中の、このアプリケーションプログラムの外部から
参照されない内部化可能なデータの名前スコープを、パ
ッケージスコープに変更する処理とをこのコンピュータ
に実行させることを特徴としている。このような構成と
すれば、このプログラムをインストールした全てのコン
ピュータにおいて、Javaのプログラムのシングルパ
ッケージ化を行うことができる点で好ましい。
【0027】ここで、このパッケージ名の置き換え処理
により、パッケージ名を置き換えた結果、このアプリケ
ーションプログラム中の所定のクラスにおけるクラス名
が同一となる場合に、このクラスのクラス名を変更する
処理をさらに含むこととすることができる。
【0028】また、本発明は、コンピュータに、複数の
クラスにて構成されたJavaのアプリケーションプロ
グラム中の、各クラスが属するパッケージのパッケージ
名を単一のパッケージ名に置き換える処理と、前記クラ
ス中の、このアプリケーションプログラムの外部から参
照されない内部化可能なデータの名前スコープを、パッ
ケージスコープに変更する処理とを実行させるプログラ
ムを記憶する記憶手段と、この記憶手段からこのプログ
ラムを読み出してこのプログラムを送信する送信手段と
を備えたことを特徴としている。このような構成とする
ことにより、このプログラムをダウンロードした全ての
コンピュータにおいて、Javaのプログラムのシング
ルパッケージ化を行うことができる点で好ましい。
【0029】ここで、このパッケージ名の置き換え処理
により、パッケージ名を置き換えた結果、このアプリケ
ーションプログラム中の所定のクラスにおけるクラス名
が同一となる場合に、このクラスのクラス名を変更する
処理をさらに含むこととすることができる。
【0030】
【発明の実施の形態】以下、添付図面に示す実施の形態
に基づいてこの発明を詳細に説明する。本発明によるプ
ログラムのシングルパッケージ化は、次の三つの条件を
満たすオブジェクト指向のプログラミング言語に対して
実施することができる。すなわち、パッケージの概念を
持っていること、アクセス要求者の身元を特定する情報
に基づいてアクセス権限を取得するアクセス制御システ
ムを持っていること、一つのパッケージに対するアクセ
ス権限の取得者を一つに限定する原則を遵守することで
ある。
【0031】ここで、パッケージとは、他のプログラム
から参照できる範囲(visibility)を定義する概念であ
る。パッケージと宣言されたフィールドやメソッドは、
当該フィールドやメソッドの置かれたパッケージ内から
でなければ参照することができないこととする。ただ
し、ここで要求されるのは、アクセス権限を制御する機
能であって、ここで述べたパッケージは、特定のプログ
ラムにおける特定のフォーマットを指すものではない。
したがって、実質的に上述した他のプログラムからの参
照範囲を定義する機能を持つものであれば、その書式な
どは問わない。
【0032】また、アクセス要求者の身元を特定する情
報としては、例えば、公開鍵暗号方式を応用したアクセ
ス制御方式である電子署名を用いることができる。すな
わち、電子署名に基づいてアクセス権限を取得するアク
セス制御システムを持つことは、上記の条件を満たす。
【0033】さらにまた、一つのパッケージに対するア
クセス権限の取得者を一つに限定するとは、例えば、電
子署名を用いたアクセス制御を行うシステムでは、一つ
のパッケージに対する署名を一つに制限するということ
である。すなわち、所定のプログラムに対して署名がな
されている場合は、署名されていない他のプログラムが
当該署名されたプログラムと同一のパッケージに参加
(アクセス)することを拒絶することを意味する。
【0034】このような条件を満足するプログラミング
言語として、Java 1.2.2がある。そこで、本実施の
形態では、Java 1.2.2を対象として本発明を適用し
た場合について説明する。以下、上述したパッケージ
も、Javaにおける名前スコープの一つとしてのpack
ageスコープを意味するものとする。ただし、本発明
は、上記の条件を実質的に満足する全てのプログラミン
グ言語に対して適用可能であることは言うまでもない。
【0035】図1は、本実施の形態におけるプログラム
のシングルパッケージ化の方法を説明するフローチャー
トである。図1を参照すると、本実施の形態によれば、
まず、シングルパッケージ化の対象であるプログラム中
の全てのパッケージ名を、単一のパッケージ名で置き換
える(ステップ101)。例えば、所定のアプリケーシ
ョンプログラムAが、複数(k個)のクラスとして開発
され、P1、P2、…Pkというパッケージに属してい
るものとする。この場合、これらのパッケージ名を単一
のパッケージ名P0で置き換える。
【0036】また、当該プログラム中の全ての内部化可
能な名前スコープをpackageスコープで置き換える(ス
テップ102)。ここで、内部化可能な名前スコープと
は、当該名前を持つフィールドやメソッドが当該プログ
ラムの外部から参照されていないものであることを言
う。上記プログラムAの例では、パッケージP1、P
2、…Pkの各クラスが作成された時点で、パッケージ
間あるいは他のプログラム(例えばシステムクラス)と
のインタラクションのために、各パッケージには、publ
icやprotectedな名前がいくつかある(これらを外部名
と呼ぶことにする)。これらのうちで、当該プログラム
Aの外部から参照されていないもの全てをpackageスコ
ープで置き換える。なお、ステップ101、102の処
理は、いずれを先に行っても良いし、並列に行っても良
い。
【0037】次に、パッケージ名が置き換えられたこと
によってクラス名の衝突が発生したかどうかを調べ、衝
突が発生したならば、当該クラス名を変更して当該衝突
を回避する(ステップ103、104)。ここで、クラ
ス名が衝突するとは、本来複数のパッケージにおいて別
個に付されていたクラス名が、パッケージ名が置き換え
られたことによって、同一の名前になって重複してしま
うことである。例えば、シングルパッケージ化を行う前
の2つのパッケージPi、Pjにおいて、名前Cを持つク
ラスがそれぞれ存在するとする(例えば、Pi.CとPj.
C)。この場合、パッケージ名を共通にすることによっ
て、二つのクラス名が衝突してしまう(例えば、パッケ
ージ名をP0とした場合、いずれのクラス名もP0.C
となってしまう)。そこで、クラス名の衝突を回避する
ように名前の付け替えを行う。
【0038】クラス名の付け替え方法としては、種々の
方法が考えられるが、ここでは、機械的な処理で実現で
きる次の方法を例示する。まず、プログラムAの中で、
どのクラス名にも現れない文字(または文字列)を一つ
選んでおき、これをαとする。このようなαが有限のプ
ログラムで選べることは自明である。そして、Pi.Cと
Pj.Cの二つのクラスには、以下のようなクラス名を割
り当てる。ただし、以下の説明において、「+」は文字
列の連結を表わし、replace_dot(β)は、文字列βの
中のドット(.)を、下線(_)に置き換えた文字列を
表わす。 パッケージPi中のクラスC(Pi.C)→ クラス名α+"_"+replace_dot(Pi)+"_"+C パッケージPj中のクラスC(Pj.C)→ クラス名α+"_"+replace_dot(Pj)+"_"+C このようにして、新しいクラス名には、元のパッケージ
名で用いられていた文字列とどのクラス名にも現れない
文字とが当てられるため、名前が異なることとなり、衝
突が回避される。
【0039】なお、上述したクラス名の変更方法は、一
例に過ぎない。上記の例では元のパッケージ名における
ドットを下線に置き換えたが、他のどのような規則に基
づく変更であってもかまわない。また、元のパッケージ
名で用いられた文字列を用いるほか、連続番号を用いて
クラス名を生成するなどの方法を用いることもできる。
さらに、パッケージ名を置き換えたことによってクラス
名の衝突が発生することを防ぐためには、上記のように
衝突するクラス名を検出して当該クラス名を変更する他
に、プログラム中の全てのクラスに対して、連続番号な
どを用いた重複のないクラス名を生成して付する用にし
ても良い。この場合、ステップ103の判断処理は不要
となり、ステップ104において全てのクラスのクラス
名を変更することとなる。
【0040】最後に、以上のようにして単一のパッケー
ジ名で括られた当該プログラムに対して電子署名を行う
(ステップ105)。電子署名は、プログラムをシング
ルパッケージ化する処理とは別個の処理であるが、本実
施の形態におけるプログラムのシングルパッケージ化を
セキュリティー手段として実効あらしめるために、必要
不可欠な処理である。すなわち、プログラムをシングル
パッケージ化したのみでは、他のプログラムが当該プロ
グラムと同一の名前のパッケージを宣言することによっ
て当該プログラムに参加するPackage Joining Attackを
防止することができない。そこで、シングルパッケージ
化によりパッケージ間相互の参照だけのために設定され
た外部名をpackageスコープで置き換え、同一パッケー
ジ以外からの参照ができないようにした上で、電子署名
を行い、一つのパッケージにおける署名者を一人だけと
する1パッケージ1署名者の原則に基づいてPackage Jo
ining Attackを防止する。これにより、パッケージ間相
互の参照だけのために設定された外部名に関しては、外
部からのアクセスを拒絶できることとなる。
【0041】図2は、上述したプログラムのシングルパ
ッケージ化の処理を実行するシステムの構成例を説明す
る図である。このようなシステムは、JDK(Java Dev
elopers Kit)に組み込まれたり、生成されたアプリケ
ーションプログラムに署名する電子署名システムの機能
として設けられたりすることにより、実現される。図2
において、符号21は第1の入力手段であり、複数のク
ラスからなるプログラムと当該プログラムのmanifestを
入力する。符号22は名前リスト作成手段であり、入力
したプログラムにおける全てのクラス名及び内部化可能
な名前スコープの名前リストを作成する。符号23は名
前衝突回避手段であり、名前リスト作成手段22によっ
て作成された名前リスト中のクラス名を、衝突を回避す
るための名前に書き換える。符号24は、名前リスト作
成手段22により作成され、名前衝突回避手段23によ
り名前の書き換えが行われた名前リストである。符号2
5は第2の入力手段であり、再度当該プログラムを入力
する。符号26は名前置き換え手段であり、名前リスト
24を参照して当該プログラム中の内部化可能な名前ス
コープをpackageスコープに置き換える。また、名前置
き換え手段26の処理において、当該プログラムを構成
する各クラスのパッケージ名が単一のパッケージ名に変
更される。この名前の置き換えによって当該プログラム
のシングルパッケージ化が実行される。符号27は出力
手段であり、名前置き換え手段26の処理によってシン
グルパッケージ化されたプログラム(P0)を出力す
る。符号28は電子署名手段であり、出力されたプログ
ラム(P0)に対して署名する。これらの各構成要素
は、上述したJDKや電子署名システムを実装したコン
ピュータにおいて、プログラム制御されたCPU、RA
Mなどの内部メモリ、ハードディスクなどの外部記憶装
置などを用いて実現される。
【0042】図2を参照して本実施の形態によるプログ
ラムのシングルパッケージ化の処理の流れを説明する。
図2に示すシステムによる処理は、名前リスト24を作
成する処理と、作成された名前リスト24に基づいてプ
ログラム中の必要な名前を置き換える処理の二つの流れ
からなる。名前リスト24を作成する処理では、まず、
第1の入力手段21が、処理対象である複数のクラスか
らなるプログラムと当該プログラムのmanifestとを入力
する。そして、名前リスト作成手段22が、入力された
プログラム中の全てのクラス名及び内部化可能な全ての
名前スコープを抽出して名前リスト24を作成する。次
に、名前衝突回避手段23が、名前リスト24の中か
ら、パッケージ名を共通にした場合に衝突が発生するク
ラス名を検出する。そして、検出した名前を、衝突を回
避するための名前に書き換える。ここで書き換えられる
新しい名前は、上述したように、元のパッケージ名で用
いられた文字列を用いる方法や、連続番号を用いる方法
など種々の方法により生成することができる。
【0043】次に、第2の入力手段25が、再度処理対
象であるプログラムを読み込む。そして、名前置き換え
手段26が、名前リスト24を参照して、入力されたプ
ログラム中の内部化可能な名前スコープをpackageスコ
ープに置き換える。また、当該プログラムを構成する各
クラスのパッケージ名を単一のパッケージ名に変更す
る。名前リスト24に登録されているクラス名は、名前
衝突回避手段23によりパッケージ名を統一しても重複
することがないように書き換えられているため、パッケ
ージ名を変更してもクラス名の衝突は起こらない。この
後、このようにしてシングルパッケージ化されたプログ
ラムを出力手段27が出力する。出力されたプログラム
は、電子署名手段28にて署名される。以上のように、
名前リスト24を作成する処理と、プログラムの名前を
実際に置き換える処理とに分けて実行するのは、プログ
ラム中の名前の置き換えが必要な名前スコープを検出す
るために、一旦プログラム全体を見渡す必要があるため
である。したがって、衝突が発生する名前スコープに限
らず、全てのクラス名を変更する手法を取る場合は、名
前リスト24を作成する処理を行う必要はなく、第1の
入力手段21、名前リスト作成手段22及び名前衝突回
避手段23を省略することができる。
【0044】次に、具体的なプログラムに対するシング
ルパッケージ化の例を示す。図3は、本実施の形態によ
りプログラムがシングルパッケージ化される様子を示す
図である。図4乃至図6は図3のシングルパッケージ化
される前のプログラムにおける各クラスの内容を示す
図、図7乃至図9はシングルパッケージ化された後の図
4乃至図6に対応する各クラスの内容を示す図である。
以下、これらの図を参照して説明する。
【0045】図3に示す例では、三つのクラスX、Y、
Xからなるアプリケーションプログラムをシングルパッ
ケージ化する。処理対象である三つのクラスは、それぞ
れ、独立したパッケージcom.ibm.p1、com.ibm.p2、com.
ibm.p3に属している。図4を参照すると、パッケージco
m.ibm.p1に属するクラスX(図4ではパッケージ名を付
してcom.ibm.p1.Xと表記)には、publicスコープのメ
ソッドが2個存在する。一つはパッケージcom.ibm.p2へ
の呼び出しメソッドであり、もう一つはシステムクラス
から呼ばれるメソッドである。このうち、パッケージco
m.ibm.p2への呼び出しメソッドは内部化可能である。同
様に、図5を参照すると、パッケージcom.ibm.p2に属す
るクラスY(図5ではパッケージ名を付してcom.ibm.p
2.Yと表記)には、パッケージcom.ibm.p3への呼び出し
メソッドが存在する。また、図6を参照すると、パッケ
ージcom.ibm.p3に属するクラスX(図6ではパッケージ
名を付してcom.ibm.p3.Xと表記)には、パッケージco
m.ibm.p1への呼び出しメソッドが存在する。これらのメ
ソッドは、いずれもpublicスコープであり、かつ内部化
可能である。また、パッケージcom.ibm.p1に属するクラ
スXとパッケージcom.ibm.p3に属するクラスXとは、パ
ッケージ名が共通となった場合にクラス名が重複するこ
ととなる。
【0046】以上のようなプログラムのシングルパッケ
ージ化を行う。新たなパッケージ名はcom.ibm.p0とす
る。まず、上述したように、パッケージcom.ibm.p1に属
するクラスXとパッケージcom.ibm.p3に属するクラスX
のクラス名が衝突するので、衝突を回避するためにクラ
ス名を変更する。ここで、どのクラス名にも現れない文
字αとして、α="Foo"を用いる。これにより、パッケ
ージcom.ibm.p1のクラスXのクラス名は、Foo_com_ibm_
p1_Xとなり、パッケージcom.ibm.p3のクラスXのクラ
ス名は、Foo_com_ibm_p3_Xとなって、衝突が回避され
た。
【0047】次に、内部化可能なpublicスコープをpack
ageスコープに変更する。図7を参照すると、図4にお
けるパッケージcom.ibm.p2への呼び出しメソッドを含む
publicスコープがpackageスコープに変更され、呼び出
しメソッドは同一パッケージのクラスYへの呼び出しメ
ソッドに変更されている。システムクラスから呼ばれる
メソッドについては、内部化可能でないため、変更され
ていない。同様に、図8を参照すると、図5におけるパ
ッケージcom.ibm.p3への呼び出しメソッドを含むpublic
スコープがpackageスコープに変更されている。また、
図9を参照すると、図6におけるパッケージcom.ibm.p1
への呼び出しメソッドを含むpublicスコープがpackage
スコープに変更されている。
【0048】以上のようにして、内部化可能な名前スコ
ープが全てpackageスコープに変更され、クラス名の衝
突も回避されたので、当該プログラムのシングルパッケ
ージ化が完了する。上記の例では、シングルパッケージ
化がソースファイルに対して行われる場合を前提にして
説明した。上述のように、この処理は、クラス名、フィ
ールド名、メソッド名の書き換えだけによって行われ
る。したがって、同じ処理をコンパイル済みのclassフ
ァイルに適用しようとした場合、変更される部分は、Co
nstantPoolだけであり、Byte Codeの部分は変更の影響
を受けない。すなわち、再コンパイルは不要である。こ
のため、ソースコードを持たない他社製のライブラリを
含むアプリケーションプログラムに対しても、全く同様
にシングルパッケージ化を行なうことが可能であり、ほ
とんどの外部名を内部化することができることとなる。
【0049】
【発明の効果】以上説明したように、本発明によれば、
名前スコープを用いたアクセス制限を有効に活用して、
保護されるべきリソースを持つプログラムが不正なプロ
グラムに呼ばれることを防止できるようにJavaプロ
グラムを編集することができる。
【0050】また、本発明によれば、Javaにおける
packageスコープと同様の概念に基づくアクセス制御を
実現するプログラミング言語において、保護されるべき
リソースを持つプログラムが不正なプログラムに呼ばれ
ることを防止できるようにプログラムを編集することが
できる。
【図面の簡単な説明】
【図1】 本実施の形態におけるプログラムのシングル
パッケージ化の方法を説明するフローチャートである。
【図2】 本実施の形態におけるプログラムのシングル
パッケージ化の処理を実行するシステムの構成例を説明
する図である。
【図3】 本実施の形態によりプログラムがシングルパ
ッケージ化される様子を示す図である。
【図4】 図3のシングルパッケージ化される前のプロ
グラムにおけるクラスの内容を示す図であり、クラスco
m.ibm.p1.Xの内容を示す図である。
【図5】 図3のシングルパッケージ化される前のプロ
グラムにおけるクラスの内容を示す図であり、クラスco
m.ibm.p2.Yの内容を示す図である。
【図6】 図3のシングルパッケージ化される前のプロ
グラムにおけるクラスの内容を示す図であり、クラスco
m.ibm.p3.Xの内容を示す図である。
【図7】 図3のシングルパッケージ化された後のプロ
グラムにおけるクラスの内容を示す図であり、クラスco
m.ibm.p0.Foo_com_ibm_p1_Xの内容を示す図である。
【図8】 図3のシングルパッケージ化された後のプロ
グラムにおけるクラスの内容を示す図であり、クラスco
m.ibm.p0.Yの内容を示す図である。
【図9】 図3のシングルパッケージ化された後のプロ
グラムにおけるクラスの内容を示す図であり、クラスco
m.ibm.p0.Foo_com_ibm_p3_Xの内容を示す図である。
【符号の説明】
21…第1の入力手段、22…名前リスト作成手段、2
3…名前衝突回避手段、24…名前リスト、25…第2
の入力手段、26…名前置き換え手段、27…出力手
段、28…電子署名手段
フロントページの続き (72)発明者 丸山 宏 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 (72)発明者 兒島 尚 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 Fターム(参考) 5B076 FB05

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクト指向プログラミング言語で
    記述されたプログラムの編集方法において、 前記オブジェクト指向プログラミング言語は、一定の参
    照範囲を設定した場合に当該参照範囲内のみでの相互参
    照を認めるパッケージの概念を持っていること、及びア
    クセス要求者の身元を特定する身元情報に基づいてアク
    セス権限を取得するアクセス制御システムを持っている
    こと、という二つの条件を満足する言語であり、 複数のクラスにて構成されたアプリケーションプログラ
    ムに対し、各クラスに付されたパッケージ名を単一のパ
    ッケージ名に置き換えるステップと、 前記クラス中の、前記アプリケーションプログラムの外
    部から参照されない内部化可能なデータにおける属性
    を、同一パッケージ内からの参照を受け付けるように変
    更するステップと、 前記パッケージ名の置き換えステップと前記データ属性
    の変更ステップとを経た前記アプリケーションプログラ
    ムに対して、アクセス要求者の身元を特定する身元情報
    に基づく前記アクセス権限を取得させるステップとを含
    むことを特徴とするプログラムの編集方法。
  2. 【請求項2】 前記パッケージ名の置き換えステップに
    よりパッケージ名を置き換えた結果、前記アプリケーシ
    ョンプログラム中の所定のクラスにおけるクラス名が同
    一となる場合に、当該クラスのクラス名を変更するステ
    ップをさらに含むことを特徴とする請求項1に記載のプ
    ログラムの編集方法。
  3. 【請求項3】 前記クラス名変更ステップは、前記パッ
    ケージ名の置き換えステップによる変更前の当該クラス
    が属するパッケージ名に用いられた文字列を用いて、変
    更するための新たなクラス名を生成することを特徴とす
    る請求項2に記載のプログラムの編集方法。
  4. 【請求項4】 前記アプリケーションプログラム中のク
    ラスのクラス名を、相互に重複しない固有のクラス名に
    変更するステップをさらに含むことを特徴とする請求項
    1に記載のプログラムの編集方法。
  5. 【請求項5】 複数のクラスにて構成されたJavaの
    プログラムを入力する入力手段と、 前記入力手段にて入力された前記プログラム中の、各ク
    ラスが属するパッケージのパッケージ名を単一のパッケ
    ージ名に置き換えるパッケージ名置き換え手段と、 前記クラス中の、前記プログラムの外部から参照されな
    い内部化可能なデータの名前スコープを、パッケージス
    コープに変更する名前スコープ変更手段と、 前記パッケージ名の置き換えと前記名前スコープの変更
    とが行われた前記プログラムを出力する出力手段とを備
    えたことを特徴とするシングルパッケージ化システム。
  6. 【請求項6】 前記パッケージ名の置き換えと前記名前
    スコープの変更とが行われた前記プログラムに対して、
    電子署名を行う電子署名手段をさらに備えたことを特徴
    とする請求項5に記載のシングルパッケージ化システ
    ム。
  7. 【請求項7】 前記クラスのクラス名及び前記クラス中
    の内部化可能な前記データにおける名前スコープの名前
    リストを作成する名前リスト作成手段と、 前記名前リスト作成手段にて作成された名前リスト中に
    おいて、前記パッケージ名置き換え手段によるパッケー
    ジ名の置き換えによって、同一となるクラス名を検出
    し、当該クラス名の重複を回避するように当該名前リス
    トにおける当該クラス名を変更する名前衝突回避手段と
    をさらに備え、 前記名前スコープ変更手段は、前記名前リストを参照し
    て前記名前スコープを変更し、かつクラス名を衝突の回
    避されたクラス名に変更することを特徴とする請求項5
    に記載のシングルパッケージ化システム。
  8. 【請求項8】 Javaのプログラムを開発するための
    プログラム開発システムにおいて、 複数のクラスにて構成された前記プログラムに対し、各
    クラスが属するパッケージのパッケージ名を単一のパッ
    ケージ名に置き換えるパッケージ名置き換え手段と、 前記クラス中の、前記プログラムの外部から参照されな
    い内部化可能なデータの名前スコープを、パッケージス
    コープに変更する名前スコープ変更手段と、 前記パッケージ名の置き換えと前記名前スコープの変更
    が行われた前記プログラムに対して、電子署名を行う電
    子署名手段とを備えたことを特徴とするプログラム開発
    システム。
  9. 【請求項9】 前記クラスのクラス名及び前記クラス中
    の内部化可能な前記データにおける名前スコープの名前
    リストを作成する名前リスト作成手段と、 前記名前リスト作成手段にて作成された名前リスト中に
    おいて、前記パッケージ名置き換え手段によるパッケー
    ジ名の置き換えによって、同一となるクラス名を検出
    し、当該クラス名の重複を回避するように当該名前リス
    トにおける当該クラス名を変更する名前衝突回避手段と
    をさらに備え、 前記名前スコープ変更手段は、前記名前リストを参照し
    て前記名前スコープを変更し、かつクラス名を衝突の回
    避されたクラス名に変更することを特徴とする請求項8
    に記載のプログラム開発システム。
  10. 【請求項10】 一定の参照範囲を設定した場合に当該
    参照範囲内のみでの相互参照を認めるパッケージの概念
    を持ち、各々所定の当該パッケージに属する複数のクラ
    スにて構成されたアプリケーションプログラムを入力す
    る入力手段と、 前記入力手段にて入力された前記アプリケーションプロ
    グラムにおける各クラスが属するパッケージのパッケー
    ジ名を単一のパッケージ名に置き換えるパッケージ名置
    き換え手段と、 前記クラス中の、前記アプリケーションプログラムの外
    部から参照されない内部化可能なデータにおける属性
    を、同一パッケージ内からの参照を受け付けるように変
    更する属性変更手段と、 前記パッケージ名の置き換えと前記データ属性の変更と
    が行われた前記アプリケーションプログラムに対して、
    アクセス要求者の身元を特定する身元情報を付加して当
    該身元情報に基づくアクセス権限を取得させる身元情報
    付加手段と、 前記身元情報を付加されたアプリケーションプログラム
    を出力する出力手段とを備えたことを特徴とするプログ
    ラムの身元情報付加システム。
  11. 【請求項11】 前記身元情報は、電子署名であること
    を特徴とする請求項10に記載のプログラムの身元情報
    付加システム。
  12. 【請求項12】 一定の参照範囲を設定した場合に当該
    参照範囲内のみでの相互参照を認めるパッケージの概念
    を持つオブジェクト指向プログラミング言語で記述され
    たプログラムを対象として、コンピュータに当該プログ
    ラムを編集させる編集プログラムにおいて、 各々所定の前記パッケージに属する複数のクラスにて構
    成されたアプリケーションプログラムに対し、各クラス
    が属するパッケージのパッケージ名を単一のパッケージ
    名に置き換える処理と、 前記クラス中の、前記アプリケーションプログラムの外
    部から参照されない内部化可能なデータにおける属性
    を、同一パッケージ内からの参照を受け付けるように変
    更する処理とを含むことを特徴とする編集プログラム。
  13. 【請求項13】 前記パッケージ名の置き換え処理によ
    り、パッケージ名を置き換えた結果、前記アプリケーシ
    ョンプログラム中の所定のクラスにおけるクラス名が同
    一となる場合に、当該クラスのクラス名を変更する処理
    をさらに含むことを特徴とする請求項12に記載の編集
    プログラム。
  14. 【請求項14】 コンピュータに実行させるプログラム
    を当該コンピュータの入力手段が読取可能に記憶した記
    憶媒体において、 前記プログラムは、 複数のクラスにて構成されたJavaのアプリケーショ
    ンプログラム中の、各クラスが属するパッケージのパッ
    ケージ名を単一のパッケージ名に置き換える処理と、 前記クラス中の、前記アプリケーションプログラムの外
    部から参照されない内部化可能なデータの名前スコープ
    を、パッケージスコープに変更する処理とを前記コンピ
    ュータに実行させることを特徴とする記憶媒体。
  15. 【請求項15】 前記プログラムの前記パッケージ名の
    置き換え処理により、パッケージ名を置き換えた結果、
    前記アプリケーションプログラム中の所定のクラスにお
    けるクラス名が同一となる場合に、当該クラスのクラス
    名を変更する処理をさらに含むことを特徴とする請求項
    14に記載の記憶媒体。
  16. 【請求項16】 コンピュータに、 複数のクラスにて構成されたJavaのアプリケーショ
    ンプログラム中の、各クラスが属するパッケージのパッ
    ケージ名を単一のパッケージ名に置き換える処理と、前
    記クラス中の、前記アプリケーションプログラムの外部
    から参照されない内部化可能なデータの名前スコープ
    を、パッケージスコープに変更する処理とを実行させる
    プログラムを記憶する記憶手段と、 前記記憶手段から前記プログラムを読み出して当該プロ
    グラムを送信する送信手段とを備えたことを特徴とする
    プログラム伝送装置。
  17. 【請求項17】 前記プログラムの前記パッケージ名の
    置き換え処理により、パッケージ名を置き換えた結果、
    前記アプリケーションプログラム中の所定のクラスにお
    けるクラス名が同一となる場合に、当該クラスのクラス
    名を変更する処理をさらに含むことを特徴とする請求項
    16に記載のプログラム伝送装置。
JP2000082556A 2000-03-23 2000-03-23 プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム及び記憶媒体 Expired - Fee Related JP3555858B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000082556A JP3555858B2 (ja) 2000-03-23 2000-03-23 プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム及び記憶媒体
US09/816,954 US6792596B2 (en) 2000-03-23 2001-03-23 Method and system for protecting resource central programs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000082556A JP3555858B2 (ja) 2000-03-23 2000-03-23 プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム及び記憶媒体

Publications (2)

Publication Number Publication Date
JP2001273131A true JP2001273131A (ja) 2001-10-05
JP3555858B2 JP3555858B2 (ja) 2004-08-18

Family

ID=18599345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000082556A Expired - Fee Related JP3555858B2 (ja) 2000-03-23 2000-03-23 プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム及び記憶媒体

Country Status (2)

Country Link
US (1) US6792596B2 (ja)
JP (1) JP3555858B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103560883A (zh) * 2013-10-30 2014-02-05 南京邮电大学 一种基于用户权限的安卓应用程序间的安全性鉴定方法
JP2014063237A (ja) * 2012-09-20 2014-04-10 Nec Corp モジュール管理装置、モジュール管理システム及びモジュール管理方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7263722B1 (en) * 1999-05-12 2007-08-28 Fraunhofer Crcg, Inc. Obfuscation of executable code
US7779039B2 (en) 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
US8214799B2 (en) * 2004-07-08 2012-07-03 Microsoft Corporation Providing information to an isolated hosted object via system-created variable objects
JP4669934B2 (ja) * 2005-06-10 2011-04-13 国立大学法人 奈良先端科学技術大学院大学 プログラム変換装置、実行支援装置、それらの方法およびそれらのコンピュータ・プログラム
US7949684B2 (en) 2005-09-09 2011-05-24 Salesforce.Com, Inc. Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment
US7818733B2 (en) * 2005-09-27 2010-10-19 International Business Machines Corporation Improving bundle control in computing environment
US20070094637A1 (en) * 2005-10-24 2007-04-26 International Business Machines Corporation System, method, and computer program product for enabling coexistence of related software
DE102009052457A1 (de) * 2009-11-09 2011-05-26 Siemens Aktiengesellschaft Verfahren und System zum Auslösen eines Namenskonfliktes

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0546682A3 (en) * 1991-12-12 1993-12-08 Ibm Parent class shadowing
US5581761A (en) 1993-07-20 1996-12-03 Sun Microsystems, Inc. Methods and apparatus for providing an extensible set of auxiliary services for objects in an object-oriented system
JPH10187450A (ja) 1996-11-07 1998-07-21 Fujitsu Ltd オブジェクト指向プログラム自動生成装置,自動生成方法およびそのプログラム記憶媒体
US6339829B1 (en) * 1998-07-30 2002-01-15 International Business Machines Corporation Method and apparatus to store extended security information in a data structure which shadows a java class object
US6260187B1 (en) * 1998-08-20 2001-07-10 Wily Technology, Inc. System for modifying object oriented code
CA2255042C (en) * 1998-11-30 2004-04-13 Leonard W. Theivendra Class loader
US6526571B1 (en) * 1999-03-16 2003-02-25 International Business Machines Corporation Method for identifying calls in java packages whose targets are guaranteed to belong to the same package

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014063237A (ja) * 2012-09-20 2014-04-10 Nec Corp モジュール管理装置、モジュール管理システム及びモジュール管理方法
CN103560883A (zh) * 2013-10-30 2014-02-05 南京邮电大学 一种基于用户权限的安卓应用程序间的安全性鉴定方法

Also Published As

Publication number Publication date
US20010025370A1 (en) 2001-09-27
US6792596B2 (en) 2004-09-14
JP3555858B2 (ja) 2004-08-18

Similar Documents

Publication Publication Date Title
Stefan et al. Flexible dynamic information flow control in Haskell
US6851108B1 (en) Verifying intermediate language code
Sabelfeld et al. Declassification: Dimensions and principles
JP3786722B2 (ja) デジタル署名を用いた進行オブジェクト指向型プログラムの有効利用方法および装置
Bokowski et al. Confined types
US7822723B2 (en) Method, system, program and data structure for controlling access to sensitive functions
Skorstengaard et al. StkTokens: Enforcing well-bracketed control flow and stack encapsulation using linear capabilities
KR20000069948A (ko) 분산 네트워크 시스템에서의 접근 제어 장치 및 자원 보호 방법
JPH1139157A (ja) 機密保護を提供する方法およびシステム
Heule et al. IFC inside: Retrofitting languages with dynamic information flow control
Bank Java security
Patrignani et al. Robustly safe compilation
Vitek et al. Confined types
Stefan et al. Flexible dynamic information flow control in the presence of exceptions
JP3555858B2 (ja) プログラムの編集方法、シングルパッケージ化システム、プログラム開発システム、プログラムの身元情報付加システム及び記憶媒体
Bratus et al. Implementing a vertically hardened DNP3 control stack for power applications
Deng et al. SecChisel framework for security verification of secure processor architectures
Vassena et al. On formalizing information-flow control libraries
Skorstengaard et al. StkTokens: Enforcing well-bracketed control flow and stack encapsulation using linear capabilities
Beres et al. Dynamic label binding at run-time
De Win et al. How secure is AOP and what can we do about it?
JP2004005441A (ja) スクリプト処理装置、インタプリタ、スクリプト処理方法、スクリプト処理プログラム、およびスクリプトプログラム
Bauer et al. Mechanisms for secure modular programming in Java
Skorstengaard Formal Reasoning about Capability Machines
Bauer et al. Mechanisms for secure modular programming in Java

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040401

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20040427

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040507

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees