Operating System Lecture 1/24

Menu Menu


セキュリティ

インターネットにコンピュータが接続されるようになって、セキュリティの問題が重視されている。セキュリティとは何か?

    security [se'cu'ri'ty] n.安全;安心;確実;保護,保安;保証(金・人);担保
  (品);借用証 (for);(pl.)証券,証書,債券. ◎in security for の担保とし
   て. 

セキュリティとは、「秘密を守る」ことではない。重要なのは安全である。コンピュータビールスなどで、データが失われることを防ぐには、バックアップを取ることが簡単で効果的な対策である。どんなことをしても、絶対にデータが失われないようにすることは、非常に難しい。

同様に、「絶対に秘密が守られる」ことを保証することは難しい。むしろ、秘密が洩れた時に、どう対処するかを考えておく方が「安全性」という観点からは、より優れている。

セキュリティとは、ある種の防壁を作り、さらに、その防壁を越えて被害がでるような場合に対しても、その被害を限定できるようにすることだといえる。


問1

バックアップは簡単なのに、データが絶対に失われないようにすることが難しいのは何故か?


OS の持つセキュリティに関する機能

OS の持つ防壁にはいろいろなものがある。その防壁は、「異なるもの」を区別するものである。

    プロセス(仮想計算機)の区別
    ユーザの区別
    ファイルの区別

これらの区別は、ユーザを識別する数値であるユーザIDにしたがって行われるのが普通である。これらの区別を持たない OS も存在するが、そのようなOSにはセキュリティも存在しない。


Unix のユーザID

Unix のユーザID は、16bit または 32bit の整数である。ユーザIDは、基本的には表 (/etc/passwd ) で管理されていて、

    アカウント名
    ユーザID の値		
    パスワード
    コメントとして使われる部分

などがある。いくつかの値は、特別なものである。

    0   
       スーパユーザあるいはrootと呼ばれる特権を持つユーザ
    65535 または -1
       nobdy 外部から認証無しでアクセスする場合のユーザ

NIS (Network Information System), YP (Yellow Page), Netinfo などは、これらのユーザ情報をネットワーク上で管理するものである。


リングプロテクション

防壁は、プロセス空間を分離することに対応する。しかし、完全に分離されたままでは、お互いに通信することができない。したがって、通信する場合には、なんらかの手段を使うことになる。

一つの方法は、セキュリティのレベルを定義して、レベルが上に上がると、より多くの資源(resource)にアクセスできるようにすることができる。これは階層的に構築することができ、リングプロテクションと呼ばれる。



階層間の移行は、仮想記憶などと同様にハードウェアによるサポートによる場合が多い。 trap や、software interrupt などと呼ばれる特権命令により、階層間の移行が行われる。

Unix では、Kernel level と User level の二段階から構成されている。二段階以上にすることにより、一段の防壁が破られた時の被害を低減することができるが、処理は複雑となる。特定の特権命令が特定のセキュリティレベルでないと実行できないようにすることにより、多段の階層を作ることができる。セキュリティレベルに合わない命令を実行した場合は、より上のレベルで対処が行われる。つまり割り込みがかかることが多い。


アクセスリストとケーパビリティリスト

コンピュータ上の資源(resource)にもIDを付けて、資源毎に、
    誰が、その資源にアクセスすることができるかを表す表
    (アクセスリスト access list)

そして、ユーザ毎に、
    ユーザがアクセスできる資源の表
    (ケーパビリティリスト capaility list)

を用意すると、もっともきめ細かく資源に対するアクセスを管理することができる。

Unix では、そこまで細かい制御は行わない。その代りに、グループIDという概念を導入している。

    資源の所有者(owner)
    資源の属するグループ (group)
    グループID に属するユーザIDの一覧 /etc/group


問2

アクセス/ケーパビリティでは可能だが、グループIDでは解決できないようなセキュリティに関して考察してみよ。


suid (set user id)

Unix では、一時的に ユーザIDを切替えることができる。これは、setuid というシステムコールによって実現される。


set uid bit

コマンドのファイル・モードの一つ。


問3

Unix では、top という命令で他のプロセスに関する情報を得ることができる。top は、システムの任意のメモリにアクセスすることができる/dev/mem にアクセスすることによって情報を得ている。/dev/mem のユーザID, グループID に関して考察せよ。


パスワードの管理


その他の防御

Java の Protected Method


防御を破る手段

トロイの木馬

セキュリティ・フロー

    バッファオーバフロー

コンピュータ・ビールス


ハードディスク


パスワードを忘れた場合


人間的要素


Shinji KONO / Tue Jan 23 13:43:34 2001