モバイルコード技術と セキュリティポリシィ (1)

Slides:



Advertisements
Similar presentations
情報技術演習Ⅰ 人文学研究のための情報技術入門 2014/06/11 担当:林晋 TA: 橋本雄太.
Advertisements

1 会社名: 氏名: 日付: 会社名: 氏名: 日付:. 2 内容 企業のセキュリティ対策状況 ユーザー管理の重要性 ユーザー管理製品 市場状況 Active Directory とは Active Directory 利用に最低限必要な準備 ユーザー管理のご提案内容 最初の取り組み:ユーザー情報の統合管理.
ASP入門 - Windows 2000 Server 活用 -.
WinDBG6によるRTX5.5デバッグ RTX開発環境 WinDBG6.0 debugモードで起動 232Cクロスケーブル
社会人学習講座 「Javaプログラミング概論」
最新ファイルの提供を保証する代理FTPサーバの開発
ブラウザの基本操作 前のページに戻る ブラウザの左上にある 「戻る」ボタンで、自分がたどってきた一つ前のページに戻ることができます。
Android と iPhone (仮題) 情報社会とコンピュータ 第13回
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
IO - 入出力 小西 亨.
Linux リテラシ 2006 第2回 基本コマンド2.
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
情報工学基礎(改訂版) 岡崎裕之.
アプレット (Applet)について.
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
JavaServlet&JSP入門 01K0018 中村太一.
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
Java2セキュリティ, クラスローダー,ベリファイア
アプリケーション共有機能 〈参考〉 (図1) (図2)
Curlの仕組み.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
データベース設計 第9回 Webインタフェースの作成(1)
RMI ソフトウェア特論 第6回 /
サスペンドした仮想マシンの オフラインアップデート
Flyingware : バイトコード変換による 安全なエージェントの実行
第8章 Web技術とセキュリティ   岡本 好未.
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
型付きアセンブリ言語を用いた安全なカーネル拡張
九州大学キャンパスクラウド 利用法 情報ネットワーク特論 講義資料.
C言語でスレッド (Pthread) 2007年1月11日 海谷 治彦.
暗黙的に型付けされる構造体の Java言語への導入
Java Bytecode Modification and Applet Security
オペレーティングシステム イントロダクション
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
ゲーム開発モデルの基礎.
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
TCP/IPとプロセス間通信 2007年1月12日 海谷 治彦.
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
7-0.SWORD Client for WEKO インストールマニュアル Version 2.2
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
データベース設計 第7回 実用データベースの運用例 クライアント=サーバシステム(1)
Java における 先進的リフレクション技術
情報コミュニケーション入門b 第11回 Web入門(2)
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
Linux の世界に 触れてみよう! 情報実験 第 3 回 (2005/10/21)
オブジェクト プログラミング 第2回 プログラムの基本.
プログラムが実行されるまで 2002年4月14日 海谷 治彦.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
システムプログラミング 第6回 システムコールのエラーメッセージ ファイルシステム 情報工学科 篠埜 功.
「マイグレーションを支援する分散集合オブジェクト」
Webインテリジェンス論 Protégé演習 (インストール)
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
CO-Client Opeartion 1.1 利用履歴データベースの設計 (スキーマ バージョン 対応)
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

モバイルコード技術と セキュリティポリシィ (1) 2005年12月14日 海谷 治彦

モーバイル・コード技術 ウエブページ(データ)と同様に, プログラムがダウンロードされる. そのプログラムが自分のコンピュータで 実行される. 命令 プログラム 計算機 ネットワーク サーバー 実行

モバイルコードの例: Applet

モバイルコードの利点 ネットワーク上のデータの交通量の削減 レスポンスの向上 一々,ソフトをインストールしないでも,他人の作ったソフトを利用できる. 命令 計算機 ネットワーク プログラム サーバー 実行

モバイルコードの欠点 他人のプログラムに悪意があった場合, 自分のデータが破壊されるかも? 自分のデータが盗まれるかも? 自分のパソコンが勝手に悪戯するかも? 計算機 ネットワーク

CGI vs モバイルコード: 例題

CGIやウエブサービスの場合 計算自体はサーバーで行われる 手元で繰り返し計算する場合,不利. 年を指定 夏至,冬至 などのデータ 計算機 ネットワーク 夏至,冬至 などのデータ サーバー 計算自体はサーバーで行われる 手元で繰り返し計算する場合,不利.

モバイルコードの場合 計算は自分の手元のパソコンで行われる 大規模なデータを参照する場合には不利かも? 年指定 実行 夏至,冬至のデータ プログラム 計算機 ネットワーク 実行 サーバー 夏至,冬至のデータ 計算は自分の手元のパソコンで行われる 大規模なデータを参照する場合には不利かも?

CGI vs モバイルコード: 結論 CGI: 計算はサーバーで (一極集中) モバイルコード: 計算は自分のPCで (分散) 大規模データを参照する場合便利 サーバーが混みだすとヤバい 一般にネットワーク上のデータやりとりが多い モバイルコード: 計算は自分のPCで (分散) 計算の度にサーバーにアクセスしないで済む セキュリティの問題 大規模もしくは更新の多いデータに依存する場合不向き

複数サーバーからのモバイルコード 個々のコードが別の組織から配布され, それがクライアント側で連結・実行される. 命令 実行 サーバーC サーバーB 命令 サーバーA 計算機 ネットワーク プログラム 実行

複数モバイルコードの利点・欠点 アプリより細かい粒度(コンポーネント)でのソフトウェアサービスを「比較可能な商品」として流通させられる. 同じインタフェースを持ち,性能や効果,値段が違うコンポーネントを取捨選択して利用可能. セキュリティポリシィの決定がより複雑になる.

Javaのロード・メカニズム ロード: ローダー: モバイルコードとのかかわり: マシン語をマシンに読み込む作業. ロードを補助するためのプログラム. モバイルコードとのかかわり: モバイルコードを受け付けるローダーでなければ,モバイルコードは実行できない.

Cのロード 基本的にリンクされた関数は全てマシン内に読み込まれる. a.o a.out b.o リンク // c.c main(){ // a.c int foo(){ ..... } 基本的にリンクされた関数は全てマシン内に読み込まれる. a.o コンパイル // b.c int bar(){ ........ } a.out b.o リンク コンパイル ロード // c.c main(){ if(x>10) foo(); else bar(); } foo() bar() main() . c.o コンパイル

Javaのロード foo.class 事前にリンクしない. 必要に応じて必要なクラスを追加ロード. // foo.java class foo{ ..... } foo.class コンパイル 事前にリンクしない. 必要に応じて必要なクラスを追加ロード. (分岐等の場合,一方しかロードされない.) // bar.java class bar{ ........ } bar.class コンパイル // go.java class go{ ... main(...){ if(x>10) new foo(); else new bar(); } .... 例えば, go.class foo.class . go.class 最初のロード java go コンパイル

参考: リンク,リンケージ 分かれたファイルにあったマシン語を相互に利用できるようにすること. // a.c int foo(){ ..... } a.o コンパイル a.o から foo() をどう探す? // b.c int bar(){ x=foo(); } b.o コンパイル b.o から bar() をどう探す? // c.c main(){ x=bar(); } c.o コンパイル

Cの場合のロード元 基本的には自身の記憶デバイス(ディスク,FD,CDROM等)からしかロードできない. 1つのプログラムにおいて,多様なロード先を持つことは難しい.(というか原則,ロードは1回)

Javaの場合のロード FD 多様なソースからクラスをロードできる. ロード 1つのプログラムが複数のソースを持てる. モバイルコードを受け付けるローダーを持つ. ディスク ディスク ネット DB

本演習で扱う モバイルコードアプリケーション コードを動的にロード,アンロードして動作中でさえ機能変更が可能. CGI/ASP等,サーバーサイド技術よりスケーラブル. クライアント側のマシンに多数の外部コードを動的に読み込み・実行するので危険. Javaモバイルコードが一般的,かつ手軽に開発・テストできる状況にある.

想定する環境 http://www.a.b/ codes’ server a client machine ftp://ftp.c.d/ another machine /somdir/java/ Read.class /otherdir/class/ a client machine network connection Write.class Download Application ftp://ftp.c.d/ codes’ server Execute /home/ Read or Write file Security Policies /somdir/net/ /tmp/ Net.class file

NetMultiLoader.class 実際に前述のような複数モバイルコードの実行を起動するためのローダー. 起動の仕方は以下の通り 「クラス名」で指定されたクラスのmainメソッドが,ネットワーク上からダウンロードされ,起動される. 続く「引数」は,そのmainメソッドの引数として扱われる. 指定されたクラスが必要は他のクラスも同様にダウンロード,実行される. ネットワークの検索パスは loadpath.xml というファイルに記載する. 実際は一行で書きます java -Djava.security.manager -Djava.security.policy==設定ファイル NetMultiLoader クラス名 引数 ココの=は二つです

実行準備 以下のアーカイブをダウンロードし展開 バッチファイルがあるので,ソレを実行 ポリシーファイルはサンプルを提供済 http://kaiya.cs.shinshu-u.ac.jp/dp/sec/loader1/kit.zip バッチファイルがあるので,ソレを実行 run.bat ポリシーファイル名 起動クラス名 ポリシーファイルはサンプルを提供済 all.txt 全てを許すポリシー file.txt ファイル読み書きの許すポリシー net.txt ネットワーク接続のみゆるすポリシー 他 ソース等も以下のURLに公開済 http://kaiya.cs.shinshu-u.ac.jp/dp/sec/loader1

例題 出席確認 以下を実行 run.bat all.txt Attend1 以降の五回の実験では必ず以上を実行してください.(出席確認になります) 以下のようなフォームに名前と学籍番号を入れて.(英数文字しか入りません) run.bat all.txt Attend1

出席確認コードの構造 この図のように, 実はかなり複雑な 構成になっている. 命令 実行 サーバー cwww サーバー www モバイル コード サーバー kaiya 計算機 ネットワーク 命令 実行 貴方のパソコン (クライアント) 出席記録サーバー

Javaセキュリティポリシィ 実行しようとするJavaモバイルコードについて, そのコードの振る舞いに許可を与える(grant). 配布元の場所 サイン(著名)等の有無 をもとに, そのコードの振る舞いに許可を与える(grant). permission 操作の型 (ファイル操作等) target 操作対象 (ディレクトリ指定等) action 許可されるアクション (読み書き等) 禁止(revoke)指定はできない. アプリケーション毎に異なるポリシィを与えることができる. 詳細は別ファイル参照.

ポリシィ設定の実例 ファイルのみでなく,いくつかの既存permissionがあり, grand codeBase "http://www.a.b/staff/" { permission java.io.FilePermission "/answer/*", "read"; permission java.io.FilePermission "/score/*", "read,write"; permission java.io.FilePermission "/remark/*", "read,write"; }; grand codeBase "http://www.a.b/learner/" { permission java.io.FilePermission "/answer/*", "read,write"; permission java.io.FilePermission "/score/*", "read"; grand codeBase "http://www.a.b/colearner/" { permission java.io.FilePermission "*", "read, write"; ファイルのみでなく,いくつかの既存permissionがあり, 加えて,独自のpermissionを作成することもできる.

簡単な例題 ファイルの読み書きのアクセス権 ネットワーク接続のアクセス権 プロパティのアクセス権 コレは次週

課題S1 例題の実行確認 ポリシーを変えると機能しないことを確認.