Flyingware : バイトコード 変換による

Flyingware : バイトコード変換による
安全なエージェントの実行
大塚紀子(筑波大)
千葉滋(東工大)
新城靖(筑波大)
板野肯三(筑波大)
1
背景

近年、様々な機器がネットワーク接続を持つように
なってきている
–
–
–

モバイルエージェントシステム
–
2
ネットワークの効率的な利用
進化するソフトウェアへの柔軟な対応
回線品質が変化する無線ネットワークに適応
ネットワーク上を移動し、処理を行うことが出来るプログラム
Flyingware

電子メールで移動するモバイル
エージェントシステム
–
–
Java言語が実行できる環境があ
れば利用可能
実行時に必要なクラスを自動的に
jarファイルに格納して移動
送信者
Agent
(Result)
Agent
Move
受信者
Agent2
受信者(2)
3
Flyingware

電子メールで移動するモバイル
エージェントシステム
–
–
–
通信回数が大幅に削減される
ソフトウェアの進化に柔軟に対応
常時接続の必要はない
送信者
Agent
(Result)
Agent
受信者
Server A
Request
Response
…
Move
Agent2
受信者(2)
4
Client A
アプリケーション例

商品のカタログ
–

商品の注文
–
企業
商品の効果的な提示のた
め、画像ファイルが大量に
必要
注文書を他のアプリケー
ションからも使いたい
ファイルの移動も必要
注文
Agent
Agent
顧客
Agent
顧客(2)
5
Javaのセキュリティ・ポリシー

機能制限による安全性の
確保
–
プログラムがアクセスでき
る領域を制限することが出
来る

Agent
Malicious
Access
Javaセキュリティ・ポリシー
悪意を持ったプログラムで
あったとしても被害を最小限
にする
file OK
file NO
ディスク
6
アクセス制限下でのファイルの移動

移動先のセキュリティ・ポ
リシーがディスク参照を完
全に禁止していたら?
–
プラットフォームを持たない
Flyingwareは、ファイルをコ
ピーできない
Agent
Access
Javaセキュリティ・ポリシー
fileをコピー
できない
file NO
ディスク
7
プログラミングの煩雑さ

移動前にファイルをバイト配列に変換し、メモリに保持
Agent
変換
表示
01000110
01101101
10001100
バイト配列
変換したバイト配列を
メモリ中に保持
読み込み
File
8
プログラミングが面倒
本研究の提案: 仮想ディスク

仮想ディスクの概念
Agent
エージェントは自由に使える
メモリ上にあり、同じAPIで利用可能
セキュリティ・ポリシーで許可
されている領域にアクセス可能
移動先のディスク(実ディスク)
9
Access
仮想ディスク
Javaセキュリティ・ポリシー
OK
NO
ディスク
仮想ディスクを利用したファイルの移動

実ディスクの一部をメモリ中にコピーし、同じインタ
フェースで利用可能
Agent + 仮想ディスク
Agent
Agent
Access
file 仮想
ディスク
Javaセキュリティ・ポリシー
移動
file 仮想
ディスク
Javaセキュリティ・ポリシー
copy
企業側
10
file
OK
ディスク
NO
ディスク
顧客側
プログラマの負担軽減

プログラマは普通のファイル・アクセスAPIを使って
エージェントを書ける
Agent
Agent
変換
表示
11
表示
バイト配列
読み込み
読み込み
file
01000110
01101101
10001100
ディスク
file 仮想
ディスク
本システムの実装

バイトコード変換器
–
–

仮想ディスク用のクラスライブラリ
–
–
12
変換前: プログラムは実ディスクにアクセス
変換後: プログラムは仮想ディスクにアクセス
Java 標準のクラスライブラリと同じAPIを提供
エージェントに含まれて移動する
アプリケーションの開発方法

アプリケーション開発の流れ
public void Ponta()
{
int x;
x ++;
}
アプリケーション
プログラム
エージェント生成
Agent + 仮想ディスク
Agent
バイトコード変換
Access
public void Ponta()
{
int x ;
x --;
}
13
一部変更
実行
仮想
ディスク
バイトコード変換

実ディスクにアクセスするようなプログラムを、仮
想ディスクにアクセスするプログラムに自動変換
変換前
Agent
Access
Javaセキュリティ・ポリシー
OK
14
NO
実ディスク
バ
イ
ト
コ
|
ド
変
換
変換後
Agent
Access
仮想ディスク
Javaセキュリティ・ポリシー
OK
NO
実ディスク
アプリケーションの変換(前)

実ディスク上のファイルにアクセスするアプリケー
ションを自動変換する
public class Foo() {
FileInputStream fin =
new FileInputStream(ファイル名);
:
fin.read();
15
}
アプリケーションの変換(後)

実ディスク上のファイルにアクセスするアプリケー
ションを自動変換する
public class Foo() {
ByteArrayInputStream fin =
VirtualDisk.factory(ファイル名);
:
fin.read();
16
}
仮想ディスク用のクラスライブラリ

仮想ディスク内でのファイルデータ取得法
public class VirtualDisk() {
static Hashtable files;
public static ByteArrayInputStream
factory(String filename) {
byte[] b = files.get(filename);
return new ByteArrayInputStream(b);
}
17
}
関連研究

SoftwarePot [Kato2002]
–
–
特別なミドルウェアにより、モバイルエージェントが特定
のディスク領域にしかアクセスできないように制限
システムコールの引数の書き換えにより実現


本研究
–
バイトコード変換により実現

18
エージェントの移動先で特別なソフトウェアが必要
エージェントの移動先で特別なソフトウェアが不要
まとめ

バイトコード変換を使って、安全にエージェントを実
行する方法を提案した
–
–
–

今後の課題
–
19
安全にエージェントを実行できる
プログラマの負担を軽減する
実ディスクを持たない携帯端末でも利用できる
プログラム変換機Javassist を使って実装