Presentation is loading. Please wait.

Presentation is loading. Please wait.

安全なモバイルエージェント システム Flyingware のための 仮想ディスクの実現

Similar presentations


Presentation on theme: "安全なモバイルエージェント システム Flyingware のための 仮想ディスクの実現"— Presentation transcript:

1 安全なモバイルエージェント システム Flyingware のための 仮想ディスクの実現
筑波大 大塚紀子 東工大 千葉 滋 筑波大 新城 靖 筑波大 板野肯三

2 モバイルエージェントを使った プログラム例
企業による顧客に対する商品の宣伝 商品の宣伝 商品の宣伝のため、実行中に画像ファイルが大量に必要 商品の申し込み 注文書を他のアプリケーションからも使いたい 企業 Agent (Result) Agent 注文 顧客 ファイルをそのまま利用できることを説明しないと、 メモリ中に保持しているのと変わらないと思われる。 (仮想ディスクたる所以を説明) ので、ファイルの読み込み・書き込みの両方を実現したい(している)、 ことを強調。 エージェントの移動以外にファイルの移動も必要

3 ディスクを利用するエージェント 画像ファイルとともに移動、表示するエージェント 注意点 移動先マシンでは、アクセス制限がありうる
制限にふれないプログラミングが必要 malicious innocent access Javaセキュリティ・ポリシー 前のスライドのセキュリティについて、具体的な説明。             NO ディスク

4 問題点 実行中にディスクにアクセスしないように、ファイルを運ぶプログラムを書く必要がある メモリ中に データを保持 プログラミングが面倒
Agent 変換 01000110 01101101 10001100 メモリ中に データを保持 バイト配列 表示 現行のFlyingwareではこんな問題点があった。 読み込み プログラミングが面倒 File

5 Flyingware 電子メールで移動するモバイルエージェントシステム プラットフォームが必要ない 常時接続の必要はない
Java言語が実行できる環境であれば実行可能である 常時接続の必要はない 通信回数が大幅に削減される 送信者 Agent (Result) Agent 受信者 クライアント・サーバの問題と比較しながら、利点を強調。 Agent2 受信者(2) move

6 本研究の提案: 仮想ディスク 仮想ディスクの概念 実ディスク上にファイルがなくても エージェントの実行が可能 エージェントは自由に使える
本研究の提案: 仮想ディスク 仮想ディスクの概念 Agent エージェントは自由に使える access    仮想ディスク file メモリ上のディスク(仮想ディスク) 仮想ディスクの概要 Javaセキュリティ・ポリシー 移動先のディスク(実ディスク)         NO ディスク 実ディスク上にファイルがなくても エージェントの実行が可能 file

7 仮想ディスクの生成と移動 実ディスクの一部をコピーした仮想ディスクをエージェントと一緒に移動させる 仮想ディスク 仮想ディスク
Agent + 仮想ディスク Agent Agent access   仮想ディスク file   仮想ディスク file もうちょっと具体的に仮想ディスクを説明。 copy Javaセキュリティ・ポリシー Javaセキュリティ・ポリシー    ディスク       NO    ディスク file 受信側 (顧客) 送信側 (企業) file

8 プログラマの負担軽減 プログラマはJava通常のファイルアクセスAPIを使ってエージェントを書ける
Serializableインタフェースも自動的に実装 Agent Agent 表示 変換 01000110 01101101 10001100 こんなに便利になるよー。 バイト配列 表示 読み込み 読み込み File File

9 アプリケーションの開発の流れ 開発者が作成する部分は通常のAPIを使ったアプリケーションプログラムだけになる エージェント生成
import java.io.*; import java.util.*; public class Ponta() { ….. アプリケーション プログラム エージェント生成 仮想 ディスク Agent + 仮想ディスク Agent Access バイトコード変換についてちゃんと説明する。 図ではプログラムが書いてあるので、実際はバイトコードレベルで変換することを強調。 バイトコード変換 import java.io.*; import java.util.*; public class Ponta() { ….. 一部変更 実行

10 本システムの実装 仮想ディスク用のクラスライブラリ バイトコード変換するプログラム Java 標準のクラスライブラリと同じAPIを提供
エージェントに含まれて移動する バイトコード変換するプログラム 実ディスクにアクセスするプログラムを仮想ディスクにアクセスするように自動変換する クラスライブラリ Javassist [Chiba00] を利用 ここから実装の説明。とりあえず2つあるよ、と言う説明。

11 java.ioパッケージ内のクラス FileInputStream・・・・・・・・(1) FileReader・・・・・・・・・(3)
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 ファイル入出力を行うクラスの説明。この中で基本的なクラスが4つあって、それさえ押えれば、枠内のクラス全てに対応できる!

12 アプリケーションの変換(前) 実ディスク上のファイルにアクセスするアプリケーションを自動変換する public class Foo() {
  FileInputStream fin = new FileInputStream(ファイル名);   :   fin.read();  } 変更する部分の説明。

13 アプリケーションの変換(後) 実ディスク上のファイルにアクセスするアプリケーションを自動変換する public class Foo()
implements java.io.Serializable {   VDInputStream fin =      new VDInputStream(ファイル名);   :   fin.read();  } ストリーム生成の部分だけで、read()の部分は変更しなくていいよー。

14 評価アプリケーション 仮想ディスクを評価するアプリケーション:Shopping with Agent 画像や商品データなどのファイルを使用
企業 評価アプリケーションを簡単に説明。 Agent (Result) Agent 注文 顧客

15 変更した箇所 バイトコード変換でShopping with Agent(クラス数17)を自動変換した箇所 変更されたクラス 変更箇所
java.io.Serializable 17 java.io.FileInputStream java.io.FileOutputStream java.io.FileReader 2 java.io.FileWriter 1 javax.swing.ImageIcon 8 バイトコード変換によって変更された部分の説明。クラス17個に対し、これだけの変換量。

16 機能制限された場所での実行 ファイルアクセスを禁止した状態でも エージェントは実行可能
Flyingware を実行するために最低限必要なアクセス権 classpathなどJavaの実行環境を調べる権利 ウィンドウを出す権利 ネットワーク通信をする権利 スレッド機能を使う権利 リフレクション機能を使う権利 これらを与えるとエージェントは実行できる 実行できたよー。 ファイルアクセスを禁止した状態でも エージェントは実行可能

17 関連研究 SoftwarePot [加藤ら‘02] 本研究
特別なミドルウェアによりモバイルエージェントが特定のディスク領域にしかアクセスできないように制限 システムコールの引数の書き換えにより実現 エージェントの移動先で特別なソフトウェアが必要 本研究 バイトコード変換により実現 エージェントの移動先で特別なソフトウェアが不要 まぁ普通に関連研究。

18 まとめ 安全なモバイルエージェントシステムを実現した 今後の課題 仮想ディスクを一緒に移動させることでエージェントを安全に実行できる
通常のAPIの開発なのでプログラマの負担を軽減できる java.io内の基本クラスの仮想ディスクAPIを作成することでストリームクラス全てを仮想ディスクに対応させた 今後の課題 対応していないクラスの実装をする アプリケーションを作成して確認した 発表はここまで!!


Download ppt "安全なモバイルエージェント システム Flyingware のための 仮想ディスクの実現"

Similar presentations


Ads by Google