安全なモバイルエージェント システム 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 2024 ExpyDoc