安全なモバイルエージェント
システム Flyingware のための
仮想ディスクの実現
筑波大
東工大
筑波大
筑波大
大塚紀子
千葉 滋
新城 靖
板野肯三
モバイルエージェントを使った
プログラム例
企業による顧客に対する
商品の宣伝
企業
商品の宣伝
商品の宣伝のため、実行中に
画像ファイルが大量に必要
商品の申し込み
注文書を他のアプリケーション
Agent
Agent
(Result)
顧客
からも使いたい
エージェントの移動以外にファイルの移動も必要
注文
ディスクを利用するエージェント
画像ファイルとともに移
動、表示するエージェン
ト
注意点
移動先マシンでは、アク
セス制限がありうる
制限にふれないプログ
ラミングが必要
malicious
innocent
access
Javaセキュリティ・ポリシー
NO
ディスク
問題点
実行中にディスクにアクセスしないように、ファイル
を運ぶプログラムを書く必要がある
Agent
変換
表示
01000110
01101101
10001100
バイト配列
メモリ中に
データを保持
読み込み
プログラミングが面倒
File
Flyingware
電子メールで移動するモバイ
ルエージェントシステム
送信者
プラットフォームが必要ない
Java言語が実行できる環境であ
れば実行可能である
常時接続の必要はない
通信回数が大幅に削減される
Agent
(Result)
Agent
受信者
Agent2
move
受信者(2)
本研究の提案: 仮想ディスク
仮想ディスクの概念
Agent
エージェントは自由に使える
メモリ上のディスク(仮想ディスク)
移動先のディスク(実ディスク)
実ディスク上にファイルがなくても
エージェントの実行が可能
access
file 仮想ディスク
Javaセキュリティ・ポリシー
file
NO
ディスク
仮想ディスクの生成と移動
実ディスクの一部をコピーした仮想ディスクを
エージェントと一緒に移動させる
Agent + 仮想ディスク
Agent
Agent
access
file 仮想ディスク
file 仮想ディスク
copy
Javaセキュリティ・ポリシー
送信側
(企業)
file
ディスク
Javaセキュリティ・ポリシー
file
NO
ディスク
受信側
(顧客)
プログラマの負担軽減
プログラマはJava通常のファイルアクセスAPIを
使ってエージェントを書ける
Serializableインタフェースも自動的に実装
Agent
Agent
変換
表示
読み込み
File
表示
01000110
01101101
10001100
バイト配列
読み込み
File
アプリケーションの開発の流れ
開発者が作成する部分は通常のAPIを使っ
たアプリケーションプログラムだけになる
import java.io.*;
import java.util.*;
アプリケーション
プログラム
エージェント生成
Agent + 仮想ディスク
public class Ponta()
{
…..
Agent
バイトコード変換
Access
import java.io.*;
import java.util.*;
public class Ponta()
{
…..
一部変更
実行
仮想
ディスク
本システムの実装
仮想ディスク用のクラスライブラリ
Java 標準のクラスライブラリと同じAPIを提供
エージェントに含まれて移動する
バイトコード変換するプログラム
実ディスクにアクセスするプログラムを仮想ディス
クにアクセスするように自動変換する
クラスライブラリ Javassist [Chiba00] を利用
java.ioパッケージ内のクラス
File
InputStream
ByteArrayInputStream
FileInputStream・・・・・・・・(1)
FilterInputStream
BufferedInputStream
DataInputStream
LinrNumberInputStream
PushbackInputStream
ObjectInputStream
PipedInputStream
SequenceInputStream
OutputStream
ByteArrayOutputStream
FileOutputStream・・・・・・(2)
FilterOutputStream
BufferedOutputStream
DataOutputSTream
PrintStream
ObjectOutputStream
PipedOutputStream
FilePermission
RandomAccessFile
Reader
BufferedReader
LineNumberReader
CharArrayReader
FilterReader
PushbackReader
InputStreamReader
FileReader・・・・・・・・・(3)
PipedReader
StringReader
Writer
BufferedWriter
CharArrayWriter
FilterWriter
OutputStreamWriter
FileWriter ・・・・・・・・・(4)
PipedWriter
PrintWriter
StringWriter
アプリケーションの変換(前)
実ディスク上のファイルにアクセスするアプリ
ケーションを自動変換する
public class Foo() {
FileInputStream fin =
new FileInputStream(ファイル名);
:
fin.read();
}
アプリケーションの変換(後)
実ディスク上のファイルにアクセスするアプリ
ケーションを自動変換する
public class Foo()
implements java.io.Serializable {
VDInputStream fin =
new VDInputStream(ファイル名);
:
fin.read();
}
評価アプリケーション
仮想ディスクを評価するアプリケーション:
Shopping with Agent
画像や商品データなどのファイルを使用
企業
Agent
(Result)
Agent
顧客
注文
変更した箇所
バイトコード変換でShopping with Agent(クラス数
17)を自動変換した箇所
変更されたクラス
java.io.Serializable
java.io.FileInputStream
java.io.FileOutputStream
java.io.FileReader
java.io.FileWriter
javax.swing.ImageIcon
変更箇所
17
0
0
2
1
8
機能制限された場所での実行
Flyingware を実行するために最低限必要なアクセ
ス権
classpathなどJavaの実行環境を調べる権利
ウィンドウを出す権利
ネットワーク通信をする権利
スレッド機能を使う権利
リフレクション機能を使う権利
これらを与えるとエージェントは実行できる
ファイルアクセスを禁止した状態でも
エージェントは実行可能
関連研究
SoftwarePot [加藤ら‘02]
特別なミドルウェアによりモバイルエージェントが
特定のディスク領域にしかアクセスできないよう
に制限
システムコールの引数の書き換えにより実現
エージェントの移動先で特別なソフトウェアが必要
本研究
バイトコード変換により実現
エージェントの移動先で特別なソフトウェアが不要
まとめ
安全なモバイルエージェントシステムを実現した
仮想ディスクを一緒に移動させることでエージェントを安
全に実行できる
通常のAPIの開発なのでプログラマの負担を軽減できる
アプリケーションを作成して確認した
java.io内の基本クラスの仮想ディスクAPIを作成すること
でストリームクラス全てを仮想ディスクに対応させた
今後の課題
対応していないクラスの実装をする
© Copyright 2026 ExpyDoc