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 2024 ExpyDoc