Mais conteúdo relacionado
SPCamp2011-セキュアなOSクラスの概要
- 1. ”セキュア”なOSを作ろうクラスの概
要
日本ネットワークセキュリティ協会
Microsoft MVP for Identity & Access
– Enterprise Security
根津 研介
1
- 2. 最初におやくそく
• 「セキュアなOS」であって、「セキュアOS」では
ありません(*^_^*)
– 「な」がと~っても*重要*です。取っちゃダメで
すよ~。「セキュアOS」は固有名詞です。
– べつにSELinuxやTOMOYOだけのクラスぢゃありませ
ん。
• 「OS自作クラス」とか「自作OSクラス」と省略し
てはいけません。
– 「自作OS」は日本国内では固有名詞です(*^_^*)
– 昨年までの「自作OSクラス」のようにターゲットが
HariboteOS(http://wiki.osask.jp/?HariboteOS)に限定
されていません。
2
- 3. 目次
• クラス開設の背景
• クラスの目標
• 講師紹介
• 主なプログラムの紹介
• 参加者考案のOSをいくつか・・・
• トピック SELinuxとTOMOYO Linux
3
- 5. バックグラウンド:
インターネット+コンピュータの
世界
• インターネットがきな臭くなってきた。
「軍事」から生まれて、「学情」で育てられ、「経
済」と「コミュニケーション」で花開いた。そして、
また「軍事」に戻りつつある。
– 「米国は深刻なサイバー攻撃に軍事的に対応する権
利を有する」~と述べ、必要ならサイバー攻撃によ
る報復を行うだけでなく、通常戦力の行使も辞さな
いと明言。(2011/07/14 米国防総省)
※基盤ソフトウェアとして、自国製のOSやセキュリ
ティ
機能を作成したり、海外製のOS/ソフトウェアが
「きれい」であることを検証できる技術者の育成が
喫緊の課題。
5
- 6. (OS&|セキュリティ)技術者の
分布
• 世界的にセキュリティソフトウェアやセキュア
OSの開発が盛んなのは・・・。
→米国、韓国、イスラエル、ロシア
• 常に戦争/交戦状態で、徴兵制があり(あった)、
膨大な軍事費をかけている国
• 日本では、OSやセキュリティを設計・実装でき
る現場技術者の人口はごく少数・・・_| ̄|○
– 食っていけるほど稼げない。
– 国家は担保してくれない。
– そういう人材を育成するプログラムがない。
→「無いなら作ってしまおう!」 6
- 7. 前提とする参加者のレベル
• HariboteOSやLinux、または独自設計のOSを設
計、機能拡張、実装したことのある経験者。
• OSの基本的な機能(メモリ管理、プロセス管
理、ファイルシステムなど)と実装を知って
いて、改良や機能追加などを行ったことのあ
る経験者。
• もしくは、上記と同等の実力を有するレベル
(「いわゆるできるけどやらなかっただけ」
という人)
→OSへの理解や経験は要求するが、セキュリ
ティ
は初心者でもよい・・・ということ。 7
- 9. クラスの目標
• 短期的目標:
– OSに必要とされるセキュリティ機能について1
から検討させる。
– 既存のセキュリティ機能やセキュアOSのデザイ
ンコンセプトを知り、全体像を捉えることで、自
らの新しい知見により新しいセキュリティ機能を
デザインする発想力と実装力を身につける。
• 中長期的目標:
– 将来的にOS製造メーカーや独自OS作成の国家プ
ロジェクトを負って立てる人材を育成することで、
国家の情報資産の保全、保護に寄与しうる人材を
輩出するための基礎力を養成する。
9
- 11. キャンプ期間中の
マイルストーン
• たったの5日間(実質19時間!)でOSの1機能
を新規にデザイン、詳細設計、実装するなんて、
ぜったいムリ!
• なので、マイルストーンを以下の様に設定。
– 考案したセキュリティ機能のコンセプトデザインを
設計。
– デザインを机上検討、論理矛盾や漏れがないかを検
証。
– 設計した機能の実装を前提としたときに問題となり
そうなところを洗い出す。
– 他の参加者、講師と洗い出した問題点を一緒に検討
し、あらかた解決の方向性を探る。 11
- 16. 講師の紹介~つづき~
• 半田 哲夫 a.k.a. 熊猫さくら:純国産セキュアOS
「TOMOYO Linux」設計者。
NTTデータ先端技術株式会社所属
• パブリックなところでお
話しするのは苦
手・・・。
• 教壇にたつのは、これが
3回目くらい・・・。
• みんな!CSSを知って戦
争のない平和な世界を実
現しよう!
16
- 17. 講師の紹介~つづき~
• 忠鉢 洋輔:筑波大学コンピュータサイエンス専攻 加藤
研究室で,セキュリティ・分散システムについて研究し
ている現役バリバリの研究者。
– 論文:「準パススルー型VMMのマルウェア検出機能による拡
張」
– 論文:「実行時のフェーズを用いたセキュリティポリシ記述の
簡略化」
– 論文:「仮想マシンモニタによるゲストOSのファイル保護」
筑波大学大学院博士課程在籍
17
- 18. 講師の紹介~そして・・・
• 根津 研介:何の因果か、現役バリバリの講師の方々をと
りまとめる役になってしまった元UNIXプログラマ←“過
去の栄光“。
– 今は亡き日立ベクトル型スーパーコン S-8000のUNIX OS(日立
版OSF/1)で、スーパコン拡張機能サポートやディスク/テープド
ライバを担当。
– ftp.soft.hitachi.co.jpのサーバーの運用管理。
– 日立WS、日立スーパーコンのUNIXにGNUソフトウェア等のフ
リーソフトウェアを移植、配布。
→「末席の座布団を温めていたUNIXカーネルプログラマ」
18
- 19. 講義プログラムの特徴
• 様々なコンピューティング環境における「セキュリ
ティ」とはどのようなものかという、より多角的、多層
的で水平展開された視点で捉える「セキュリティ」を対
象。
– 自作OS作成者からみたセキュリティ
– 汎用OS作成者からみたセキュリティ
– 組み込みOS作成者からみたセキュリティ
– セキュアOS研究者からみたセキュリティ
– 国産セキュアOS機能作成者からみたセキュリティ
• 「OSだけの機能に限定せず、一般的な脅威や環境につい
て、より大局的な知見から物事を捉える」ために、セ
キュリティコース共通プログラムの自由選択プログラム
19
やCTFプログラムにも参加。
- 21. プログラム紹介(1)
• セキュアなOSの自作へのガイドライン
(川合)
– セキュリティについて「保護すべき対象」や
「脅威」がどこにあるのか?
– 「OSとアプリケーション」という線引きは本
当に必要なのか?全部OSでもいいかもしれな
い?
– その他、様々な“Just Ideas“から、「凝り固ま
らずに柔軟に発想してみよう!」と語りかけ
た。
21
- 22. プログラム紹介(2)
• OSとセキュリティ(根津)
– 既存の汎用OSが題材。
– セキュリティが必要な原因をコンピューティング
の歴史から抽出、現代においても必要か再検討し
よう!
• マルチタスク/マルチユーザシステム
• 管理者権限
• 高速なネットワーク
• ネットワーク上で行われる様々な社会活動
– OSを取り巻く脅威を分析し、OSに求められるセ
キュリティについて概説、トピックとして「セ
キュリティと性能」、「アノマリーディテクト」
などを取り上げた。 22
- 23. プログラム紹介(3)
• 組み込みOSとセキュリティ(坂井)
– 組み込みOSのセキュリティについて、組み込み
システム特有のシステムライフサイクルやハード
ウェア/ソフトウェア制限からくる汎用OSとの違
いについて説明。
– おもに組み込みOSが置かれている環境からくる
開発者のセキュリティ意識を解説。
– 少量多品種生産から大量生産までの幅広い対応を
求められる環境、今後のホームオートメーション
対応によるネットワーク接続の可能性など、組み
込みOS特有のセキュリティ事情について解説を
行った。 23
- 24. プログラム紹介(4)
• アクセス制御とその応用(忠鉢)
– MAC(強制アクセス制御)やRBAC(役割による
アクセス制御)と、そのベースとなる考え方やモ
デルを説明し、実装には理論的裏付けが必要であ
ることを強調。
– アクセス制御ポリシーとその実装(メカニズム)
を分離する重要性について解説を行った。
– 汎用的なOSのアクセス制御の例としてTrusted
Operating Systemを、また、アプリケーションサ
ンドボックスの例としてChromeOSを、特権分割
の例としてLinuxのケーバビリティ機能やプロセ
ス間通信により権限を分割しているOpenSSHの紹
介を行った。 24
- 25. プログラム紹介(5)
• 事例研究:TOMOYOLinuxが考えたセキュリ
ティ(半田)
– 現役開発者が、TOMOYOLinuxの開発の歴史と
Linuxメインライン化への挑戦の歴史を振り返
ることで、汎用OSでのセキュリティ機能の開
発の難しさや、多くの人に使ってもらうこと
の苦労と楽しみを解説した。
– また、現役開発者からみた現状のOSセキュリ
ティに関する示唆を行った。
25
- 29. BOF枠
「ITセキュリティと法律」(根津)
• 通常、人は「人殺しがいけない」ということにつ
いて、いちいち「刑法」を調べたりはしません。
• 不正アクセスや無線LANについても、各人が持っ
ている「危険かもしれない」と感じる己の中の
「常識」や「良識」、つまり、「これはよくない
こと」という感覚を大事にし、磨くようにしよ
う。
• 特に、「~~は大丈夫でしょうか?」と聞く人多
数だが、聞いている時点で、「危険!危険!」と
心が警告を発していることを自覚すべき。
• 「大丈夫だ」等と無理矢理自分を納得させるので
はなく、「踏み越える前」に仲間や講師に聞くよ
うにしよう。 29
- 33. (その2)データ保護の逆転の発
想:
VMを利用してデータを保護!
VMゲスト
(インターネットに接続)保護しな
いデータ
VMホスト
(ネット接続なし)
保護する
データ
ユーザ
33
- 36. 大きな違い
• SELinux:
– 理論的、論理的、抽象化された記述。
– `セキュリティのアセンブラ`と呼ばれる。
• TOMOYO Linux:
– 実践的、経験的、学習させた内容をそのまま
「ルール」として扱う。
– `行動監視ログ`をそのまま正規化(=ルー
ル)に。
36
- 37. 構成方法の違い
• 行動ログをとる
→ SELinuxの場合:
1. プロセス、ファイル、EXEファイル、ユーザIDにそれ
ぞれセキュリティ記述子(SID)を振る。
2. 行動ログを、ロール(役割)、ドメイン、ドメイン遷
移、型強制(TE)、FC(ファイル記述子)とその関係に
“バラバラ”にして、それぞれ別のファイルで記述。
3. テストして、ルール違反ログを見ては、2.を修
正・・・の繰り返し。
→TOMOYOの場合:
1. 行動ログの精査(やっちゃいけないものがないのを
確認)
2. 行動ログをルールとしてカーネルに読み込む。ー
しゅーりょー!
37
- 38. SELinuxのしくみ
init 参照
コンテキスト
ファイル
ドメイン
fork() & /bin/login
exec() 入力 ユーザ:SID対応ファイル
root_s: root:root_s
user1
sys_r: user1:user1_s
login_te
ドメイン
exec() SID:ロール対応ファイル
/bin/passwd root_s:sys_r,user_r
root_s: 入力
パスワー user1_s:user_r
sys_r:
ド
passwd_te
ドメイン コンテキスト定義ファイ
exec() /bin/bash ル
user1_s: /bin/login: login_te
user_r: /bin/passwd:passwd_te
bash_te /bin/bash:bash_te 38
- 39. TOMOYO Linuxのしくみ
init fork()&exec()
exec()
read()
B
/etc/motd
/etc/passwd /etc/motd
/bin/login
/bin/login /etc/passwd
/bin/passwd /etc/shadow
A
/bin/passwd /etc/shadow
/etc/tcsh_login
/bin/tcsh
/$HOME/.login /etc/bash_profile
/bin/bash
/$HOME/.profile
/bin/vi
/bin/vi
※AのviとBのviは異なるモ 39
- 40. それぞれ特有のもの
• SELinux: MLS/MCS
– MLS(Multi Level Security): 米国式で日本政府、会社
にはほとんどなじまない。
→ハリウッド映画で、空軍軍人が「私はTOP SECRETの
アクセス権限がある」みたいなときに出てくるモデ
ル。
– MCS(Multi Category Security):グループ分けしたア
クセスセキュリティ。one another DAC group ?
• TOMOYO: akari
– Main Lineにマージするのに機能が限定された。
– フルスペックをカーネルリコンパイルせずに
TOMOYOを利用できるようにデバイスドライバの
形で提供したもの。
40