• 検索結果がありません。

Operating System ファイルシステムとセキュリティ

N/A
N/A
Protected

Academic year: 2021

シェア "Operating System ファイルシステムとセキュリティ"

Copied!
29
0
0

読み込み中.... (全文を見る)

全文

(1)

ファイルシステムとセキュリティ

2018-13

(2)

OSの代表的機能

p 

プロセス管理

n  実行中のプログラムの管理 n  コンピュータの実行状態の制御 p 

メモリ管理

n  主記憶の管理 n  プログラム実行のためのメモリの管理 p 

ファイル管理

n  補助記憶の管理 n  HDDやSSDに保存されたデータの管理 p 

その他

n  通信・ネットワーク,セキュリティ,ユーザ・課金管理など… 記憶管理

(3)

ファイルシステム

p 

ファイルとは何か

n  名前がつけられて,補助記憶(HDD等)に保存されるデータ単位 n  通常は静的=保存した状態のまま,消滅したり変化したりしない n  例) プログラム,文書,ソフトウェアやOSの設定情報,その他… p 

ファイルシステム

n  ファイルを格納する方式・構造 n  名前から情報を検索する一種のデータベースともいえる p 

ファイル管理

n  ファイルシステムの構造(階層型など)を維持・管理するOSの機能 n  ファイルの作成・保存・読み込み,ファイルの検索,ファイルの保護 n  その他…

(4)

ファイルの形式

p 

ファイルの内部構造

n  汎用機のOSでは,表構造を基本としたいくつかのファイル編成法が 決められており,データの種類やアクセス方法によって使い分ける n  Windows,UNIX等では, OSはファイル構造に関与せずにバイト列 (バイトストリーム)として扱い,内部構造は各ソフトに任されている p 

ファイルのアクセス方法

n  順次(sequential)アクセス: 先頭のデータから順々にアクセスする n  直接(direct/random)アクセス: 途中箇所を指定してアクセスできる n  記憶媒体によって,サポートするアクセス方法が異なる p 

ファイルの種類

n  ファイルには,通常その種類を表すデータ項目を付加する n  ファイル名の一部に含まれる場合は,拡張子や接尾辞と呼ばれる

(5)

p 

UNIXやWindows

n  ディレクトリやフォルダの階層(木構造)でファイルを管理する / bin grep ln more etc group hosts passwd home taro 文書.txt データ.csv jiro src prog.c prog.h lib sbin fsck ifconfig rarp shutdown usr bin sort vi etc lib var

階層型ファイルシステム

ルートディレクトリ (「/」や「\」) ファイル サブディレクトリ (子ディレクトリ) ディレクトリ (フォルダ)

(6)

ディレクトリ(フォルダ)

p 

ディレクトリ操作

n  ディレクトリのファイル一覧 Windows: dir UNIX: ls

n  ディレクトリの作成/削除 mkdir / rmdir n  カレントディレクトリの移動 cd (chdir) p 

カレントディレクトリ

n  実行中のプロセスは,「現在作業中のディレクトリ」という情報を持つ n  デフォルトでは,各種ファイル操作はカレントディレクトリが対象になる n  プロセスは,自由にカレントディレクトリを移動することができる(cd) p 

特別なディレクトリ記法

n  .  そのディレクトリ自身を表す n  .. 親ディレクトリ(ひとつ上のディレクトリ)を表す

(7)

パス(

PATH)

p 

パス

n  階層型ファイルシステムの中で,ファイルの位置を表す記法 p 

絶対パス

n  ルートディレクトリからたどった位置で示す n  例) C:\Windows\system32\drivers\etc\hosts n  区切り記号は,UNIXでは「/」,Windowsでは「\」(日本では¥) p 

相対パス

n  あるディレクトリからの相対位置を示す n  1階層上のディレクトリ(親ディレクトリ)に上がることを「..」で表す n  例) cd ../../kadai 2つ上のフォルダの下にあるkadaiというフォルダに移動する

(8)

特殊なファイル

p 

ディレクトリファイル

n  「フォルダ」(または「ディレクトリ」) の正体も一種のファイルである n  中には,ファイルの一覧表 (名前と番号)が記録されている p 

リンクファイル

n  “実体”は他のファイルに つながっているファイル n  ファイルの別名を作成できる n  別名「ショートカットファイル」 p 

その他,デバイスファイルなど

ファイル名 番号 aaa.txt 3410 bbb 1034 ccc.c 4566 ddd/ 10035 … ディレクトリファイル リンク ファイル名 元の ファイル名 ファイル データ

(9)

ファイル操作

API

p 

ストリーム型ファイル入出力

n  WindowsやUNIXで標準的な方法 n  ファイルの中身は,バイト列として読み書きできる n  open 名前を指定してファイルを開く(必ず必要な操作) n  read 開いたファイルからデータを読み込む n  write 開いたファイルにデータを書き込む n  seek ファイルの中の自由な位置に移動する(ランダムアクセス) n  close ファイルを閉じる p 

メモリマップトファイル

n  ディスク上のファイルの内容を主記憶に “貼り付ける” n  メモリを読み書きすると,ファイルの内容の対応部分が書き換わる n  仮想記憶の技術(ページイン/アウト)を応用して実現される

(10)

補助記憶装置の構造

p 

磁気ディスクの構造(右図)

n  トラック(A)=円周(同心円)の1周分 n  セクタ(C)=トラック内の小さい扇型 (ディスクの最小記憶単位) n  クラスタ(D)=OSが管理する 連続した一定数のセクタ p 

ファイルシステムの実現

n  ファイルの実体=クラスタの集合 n  ファイルはディスク上で隣接して 保存されているとは限らない n  クラスタを順々につなげるしくみがある n  クラスタの割り当てには様々な方法がある 図はWikipediaから引用

(11)

ファイルシステムの構造

p 

ファイルシステムの実現方式

n  どんなタイプのファイルを考えるか? n  クラスタをどうつなげてファイルを保存するか? n  階層型(ディレクトリ・フォルダ)をどう実現するか? n  ドライブの内部をインデックス領域とデータ領域に分けるのが一般的 インデックス領域 データ領域 クラスタ クラスタ クラスタ クラスタ クラスタ クラスタ クラスタ ファイルA ファイルB

(12)

12

FATファイルシステム

p 

FAT(File Allocation Table)

n  MS-DOS(および昔のWindows)の方式 n  各ディレクトリに,クラスタにつながりを格納する “表”(FAT)を用意 n  FATの各セルに,対応する番号のクラスタのリンクを保持する n  単純で高速だが事故に弱い (ルートディレクトリのFATが壊れると…) 0 1 2 3 4 5 6 7 8 9 10 03 04 07 06 FF 05 00 01 F7 0 1 2 3 4 5 6 7 8 9 10 File A

#1 File A #2 File A #3 File A #5 File A #6 File A #4 空き 予約 不良

FAT

データ領域(クラスタ番号)

(13)

iノード形式

p 

UNIXの方式(inode形式)

n  インデックス領域に,クラスタのつながりを表す多分木構造を保持 n  この木構造のノードをinodeという 図はWikipediaから引用

(14)

高速性と信頼性

p 

ディスクキャッシュ

n  HDDから読み込んだデータを,主記憶等のRAMにしばらく保持する n  同じ領域を頻繁に読み書きする場合に,劇的に速度が改善する p 

RAID

n  複数ドライブを仮想的な1台のディスクとして扱い,少しずつデータを ダブって記録することで(冗長性),信頼性向上や無停止運転を実現 n  RAID1: 2台のHDDを常に同じ内容に保つ n  RAID2~6: 3台以上のHDDで高度なデータ復旧機能を提供する p 

ジャーナリングファイルシステム

n  ファイルの変更履歴を保持していくファイルシステム n  何らかの事故が起きたときに,(可能な限り)前の状態に復旧できる

(15)

ファイルの所有権と属性

p 

ファイルの所有権

n  マルチユーザシステムでは,ファイルは所有者(owner)情報を持つ n  所有者(と管理者)だけが,ファイルの属性を変更する権限を持つ n  さらに,所有グループが設定できるOSもある(UNIX系など) p 

ファイルの属性

n  作成日,変更日,内容の読み・書きの許可,ディレクトリ一覧許可, 隠しファイル,実行許可(プログラムとして実行できるか),など p 

アクセス制御

n  UNIXでは,各ファイルは,所有者,所有グループ,それ以外への, 読み出し(r),書き込み(w),実行(x)の許可を設定できる

n  Windowsでは,アクセス制御リスト(ACL: Access Control List)

(16)

16

ユーザの権限

p 

マルチユーザシステム

n  複数のユーザでの利用に対応したOS n  個人用OSでも,通常使用,管理用などのモードとしてユーザがある p 

管理者ユーザ

n  UNIX, Mac OS: スーパーユーザ(root)

n  Windows: Administrator (Winサーバ: Domain Admins)

n  管理者モードで操作ミスをすると致命的 ⇒ 管理者になるのは必要

なときだけにするべき (WindowsのUACは無効化しない方がよい) p 

ユーザごとの権限設定

n  スーパーユーザ方式: 全能モード vs 一般ユーザモード

n  ケーパビリティ方式: 権限を細かく分割して個別にユーザに付与

(17)

ユーザの認証

p 

パスワード,暗証番号,パスフレーズ

n  最も一般的,長いものから短いものまで種々の方式がある p 

ワンタイムパスワード(使い捨てパスワード)

n  毎回または一定時間で,パスワードが変わっていく n  “パスワード計算機”(スマホアプリもある)を持ち歩く必要がある p 

ハードウェアキー

n  磁気カード,ICカード,RFIDなど,物理的な鍵となるもの n  ドングル(USBコネクタなどに指す) p 

生体認証

n  指紋,手のひらや指の静脈パターン,指の長さ,眼の光彩など…

(18)

パスワード認証

p 

パスワードの格納方式

n  パスワードを平文のまま保存すると,盗聴や情報漏洩に弱い n  通常のシステムでは,パスワードは高度な「一方向ハッシュ関数」に よって,ハッシュ値(整数)に変換されて記憶されている

p 

認証手順

n  ユーザが入力したパスワードをハッシュ関数でハッシュ値に変換する n  変換されたハッシュ値と,システムが持つハッシュ値を比較する n  両者が一致していれば,認証成功(本人確認)とする パスワード “jugemujugemu...” 458485634542... ハッシュ値 一方向 ハッシュ関数 逆変換は非現実的な計算量

(19)

チャレンジ

&レスポンス認証

p 

盗聴対策をしたパスワード認証

n  ネットワークなどでのパスワード盗聴防止に用いられる n  WebのBasic認証もチャレンジ&レスポンス方式 n  「チャレンジ」と呼ばれるデータの列を事前に生成して共有しておけば, ワンタイムパスワードとして使用できる p 

認証手順

n  サーバは,「チャレンジ」と呼ばれるデータを乱数等によって生成し, クライアントに送信する(または,事前に共有しておく) n  クライアントは,ユーザが入力したパスワードを「チャレンジ」を用いて 暗号化し,サーバに送信する(レスポンス) n  サーバは,クライアントから送られてきたレスポンスと,それとは別に 自分で「チャレンジ」を用いて計算した暗号化を比較し,それらが一致 していれば認証成功とする

(20)

デジタル署名による認証

p 

デジタル署名,電子印鑑

n  一般的に公開鍵暗号系を使う n  「リプレイ攻撃」に弱いので,C&R方式などと組み合わせる p 

公開鍵暗号系

n  暗号化の鍵(秘密鍵)と復号化の鍵(公開鍵)が異なる暗号方式 n  暗号化の方法が分かっても,復号化の方法は分からない n  秘密鍵と公開鍵が正しく対応しているときだけ復号できる p 

認証手順

n  ユーザは,事前にシステムに自分の公開鍵を登録しておく n  ユーザは自分の秘密鍵でメッセージを暗号化し,システムに送信する n  システムは,ユーザの公開鍵でそれを復号化して,認証する

(21)

システムセキュリティ

p 

設計面からの対策

n  強い暗号アルゴリズムの使用 n  1カ所を破られても致命的な影響が生じないようにする設計 p 

開発面からの対策

n  現実的なセキュリティ問題の原因は,ほとんどがプログラムのバグ n  常に裏をかかれる可能性を念頭に置いた「防衛的な」コーディング n  特に,ユーザやネットワークの入力値は,疑って入念にチェックする p 

運用面からの対策

n  システムの脆弱性・セキュリティホールを発見したらすぐに修正する n  弱いパスワードを利用しているユーザなどへ警告する n  人間的な不注意や無知による情報漏洩に注意する(ゴミ箱等も)

(22)

マルウェア(

1)

p 

マルウェア(

malware)

n  悪意のあるソフトウェア(malicious software)のこと p 

コンピュータウィルス

n  狭義では,自己増殖機能(感染機能)を備えるマルウェアのこと n  例えば,PCの中で実行ファイルに次々に感染していく p 

トロイの木馬

n  一見有用なプログラムを装い,ユーザを騙してシステムに侵入する n  侵入した後は,そのユーザの権限を乗っ取る(“踏み台”) p 

スパイウェア

n  システムを密かに監視し,ユーザのプライベートな情報等を収集する n  すべてのキー入力を収集するキーロガーと呼ばれるものもある

(23)

マルウェア(

2)

p 

ワーム(ネットワークワーム)

n  ネットワークを介して,マシンからマシンへと自動感染して広がる n  主にネットワークプロトコルの脆弱性(弱点)を攻撃する n  過去には,インターネット全体が機能不全になったこともある p 

バックドア(裏口)

n  システムに侵入するために,何者かによって仕掛けられた裏口 n  プログラマ(開発者)の誰かが仕掛けていることもある n  侵入者がユーザから侵入を発見されないようにしたり,バックドアを 設定したりするためのソフトウェアをルートキットと呼ぶ p 

スパム(迷惑メール)・フィッシングサイト

n  ソフトウェアではないので分類上はマルウェアではないが,ユーザを

(24)

攻撃の方法

p 

パスワードクラック(解読)

n  総当たり攻撃(brute force attack),辞書攻撃,並列処理など

n  ソーシャル・エンジニアリングが有効(誕生日やペットの名前を調査)

p 

サービス不能攻撃 (

DoS: Denial of Services)

n  想定外(例えば大量)のデータを送り,システムを機能不全にする

n  例) scanf(“%d”, &n); ← 「a」と入力したらどうなる?

n  多数のマシンから総攻撃するものを,DDoS(分散DoS)と呼ぶ p 

標的型攻撃

/ ソーシャル・エンジニアリング

n  標的型攻撃:特定の組織を攻撃対象としてカスタマイズした攻撃 (例:長年の顧客を装ったメールで特別なトロイの木馬を送る) n  ソーシャル・エンジニアリング:技術的な攻撃ではなく,ニセ電話など 人間による情報収集(例:掃除係になりすまして建物に侵入) 24

(25)

攻撃の技術

p 

バッファー・オーバーラン(オーバーフロー)

n  非常に長い文字列などで,プログラムの入力バッファをあふれさせる n  最善でもDoSの被害を受け,最悪ならシステムを乗っ取られる n  スタック上のバッファをオーバーフローさせれば,変数の値や関数の 戻り先アドレスを書き換えてプログラムの挙動を変えることができる n  例) char buf[100]; scanf(“%s”, buf); ← 10000文字入力したらどうなる? p 

コード・インジェクション(注入)

n  SQLインジェクション,クロスサイトスクリプティングなど n  入力文字列を工夫してSQL文などを“注入”し,それを実行させる n  プログラムが,ユーザからの入力データを他のソフトウェア(データ ベースなど)に渡している処理のすきを突く n  対策としては,入力文字列の “汚染チェック”をする 25

(26)

ネットワークからの攻撃

p 

盗聴・傍受

n  バス型ネットワークや無線ネットワークでは盗聴が可能 n  新しい方式で暗号化しても,解読方法といたちごっこになっている p 

なりすまし・偽装

n  通信プロトコルにおける発信元アドレスを偽装して(IP Spoofing), 他のマシンになりすまして情報を取得するなど n  ルータなどの通信の中継点に侵入し,プロトコルや暗号化を操作して 攻撃するものは Man-in-the-middle attack(中間者攻撃)という p 

ポートスキャン

n  ネットワークにどんなマシンがあってどんな通信を受け付けているか, 手当り次第に通信を試みてスキャンする n  これ自体は攻撃ではないが,攻撃対象を絞り込むのに使われる

(27)

演習課題(後日提出)

課題

13a ファイルの内部構造の表示

n  この課題の狙いは,各種ファイルの内部形式を見てみることである。

p 

手順

n  次ページのプログラムは,ファイルの内容の先頭1バイトを16進数で 表示するC言語のプログラムである。HOSではなく,Windowsの Visual Studioなどの環境で(Mac等でもよい)実行してみよ。 n  このプログラムを,ファイルの先頭128バイトを1行に16バイトずつの 「16進ダンプ形式」で表示するプログラムに修正せよ。 n  このプログラムのscanfにおいて,どのような場合にバッファーオー バーランが起きるか例示し,それが起きないように修正せよ。 n  テキストファイル,実行可能ファイル(.exe),画像ファイル(.png等), 音楽ファイル(.mp3等),ZIPファイル,などの16進ダンプを出力し, ファイルの種類ごとの共通点を考察せよ。

(28)

ファイル内容の

16進数表示

28 #include <stdio.h> int main(void) { char fname[256]; FILE *fp; int ch; printf("File name (path) ? "); scanf("%s", fname); printf("%s\n", fname); fp = fopen(fname, "rb"); ch = getc(fp); printf("%02X\n", ch); return 0; } CF FA ED FE 07 00 00 01 03 00 00 80 02 00 00 00 0F 00 00 00 00 05 00 00 85 00 20 00 00 00 00 00 19 00 00 00 48 00 00 00 5F 5F 50 41 47 45 5A 45 52 4F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 19 00 00 00 D8 01 00 00 5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00 ファイルの内容の先頭128バイトが このように表示されるように修正する (このような表示を「16進ダンプ」という)

(29)

次回:小テストとプログラミング実習

p 

小テスト(

45分?)

n  第10回〜第13回に関する知識・用語問題 p 

プログラミング実習

n  第10回〜第14回の演習課題の解説と実習 n  (次回も課題がある予定) n  レポート提出はその次の回(の翌日)が締め切り

参照

関連したドキュメント

「課題を解決し,目標達成のために自分たちで考

この課題のパート 2 では、 Packet Tracer のシミュレーション モードを使用して、ローカル

本時は、「どのクラスが一番、テスト前の学習を頑張ったか」という課題を解決する際、その判断の根

「1 建設分野の課題と BIM/CIM」では、建設分野を取り巻く課題や BIM/CIM を行う理由等 の社会的背景や社会的要求を学習する。「2

つの表が報告されているが︑その表題を示すと次のとおりである︒ 森秀雄 ︵北海道大学 ・当時︶によって発表されている ︒そこでは ︑五

目標を、子どもと教師のオリエンテーションでいくつかの文節に分け」、学習課題としている。例

②防災協定の締結促進 ■課題

本事業は、内航海運業界にとって今後の大きな課題となる地球温暖化対策としての省エ