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 を使って実装
© Copyright 2026 ExpyDoc