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

Slides:



Advertisements
Similar presentations
プログラミング第5回 1 while ループ 文字列の操作
Advertisements

第11回Javaゼミ 11.1 ファイルとディレクト リ 11.2 文字ストリーム 11.3 バッファ付き文字スト リーム 2006/06/28 神津 健太.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
ソースコード中の識別子に基づく カテゴリ階層構築手法
社会人学習講座 「Javaプログラミング概論」
Chapter11-4(前半) 加藤健.
Javaにおける入出力とXML 2011年5月15日 海谷 治彦.
プログラミング基礎I(再) 山元進.
IO - 入出力 小西 亨.
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
アプレット (Applet)について.
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
伺か with なでしこ 発表者:しらたま /05/05 うかべん大阪#3.
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
メモリ暗号化による Android端末の盗難対策
仮想計算機を用いたファイルアクセス制御の二重化
モバイルエージェントの応用 概要 モーバイルエージェントの応用分野 AgentSpaceシステム エージェント移動 応用:ソフトウェアの配信
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
第20章 Flyweight ~同じものを共有して無駄をなくす~
アスペクト指向プログラミングを用いたIDSオフロード
Javaによる Webアプリケーション入門 第9回
情報処理技法 (Javaプログラミング)2 第2回 前期の復習(2)
Flyingware : バイトコード変換による 安全なエージェントの実行
モバイルP2Pを用いた携帯電話 動画配信手法の提案 第3回
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
型付きアセンブリ言語を用いた安全なカーネル拡張
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
サブゼミ第9回 実装編③ 永続化とjava.ioパッケージ.
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
例外処理 と ファイル入出力 情報システム学科 平塚 聖敏.
暗黙的に型付けされる構造体の Java言語への導入
第15章 TFTP:トリビアル・ファイル転送プロトコル
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
Java Bytecode Modification and Applet Security
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
アルゴリズムとデータ構造演習(7月8日) 入出力ストリーム 2019/1/18.
オペレーティングシステム イントロダクション
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
パソコンのしくみ ハードウェア OS(Operating System) アプリケーション NEC DOS
通信機構合わせた最適化をおこなう並列化ンパイラ
Talkプログラムのヒント 1 CS-B3 ネットワークプログラミング  &情報科学科実験I.
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
Java における 先進的リフレクション技術
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向プログラミング クラス 継承
Josh : バイトコードレベルでのJava用 Aspect Weaver
コレクション・フレームワーク J2EE I (データベース論) 第6回 /
コレクション・フレームワーク データベース論 第7回.
「マイグレーションを支援する分散集合オブジェクト」
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
プログラム分散化のための アスペクト指向言語
第2回 開発環境とゲーム 05A1030 佐々木 和也.
JAVA入門⑥ クラスとインスタンス.
異種セグメント端末による 分散型仮想LAN構築機構の設計と実装
ソフトウェア工学 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オフィスの紙文書削減提案 ワンタッチでらくらく電子ファイリング こんなことはありませんか? サーバレスで 簡単導入 簡単操作で 電子データ
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
外出先でも、セキュリティを保ったまま接続可能
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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つあって、それさえ押えれば、枠内のクラス全てに対応できる!

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

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

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

変更した箇所 バイトコード変換で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個に対し、これだけの変換量。

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

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

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