* 手段としての自作OSのススメ
-(by [[K]], 2016.12.09)

** (0)
-この記事は、「自作OS Advent Calendar 2016」の12/09が空欄だったので急きょ書くことにした記事です。
--http://www.adventar.org/calendars/1666

-余談ですが、「自作OS」と「OS自作」というのは同じ意味なのか違うのか、違うとしたらどう違うのか、いつも悩みます・・・。

** (1)
-このアドベントカレンダの読者は、おそらく純粋にOSの自作を楽しめるすてきな人たちだと思っています。
-だから目的とかなくても十分に楽しいでしょう。それはとてもいいことです。
-でも、目的を持ってOSを作ることはまた別の楽しさがあるので、それを紹介させてください。

-たとえば既存のOSよりも自分のOSはここはすごいんだ(予定)、という何かがあるとかです。もしくは、このアルゴリズムでうまくできるかどうか実験してみよう、とかでもいいです。
-とにかく、なにか目的があって、そのためにOSを作る、そういう開発を経験してほしいのです。

** (2)
-目的を定めると、ときには、それってわざわざOSを作る必要なんてないんじゃないか?となってしまうことがあります。
-その場合は、いさぎよくOSを作るをやめてみましょう。OSを作る理由を無理に探す必要なんてないです。そうなってしまったら、もはや作ることが目的で、目的を探すことが手段になってしまっていますから。
-OSを作らずにもっと楽な方法で目的を達成できるのなら、ぜひそうしてください。それで目的が達成できておめでとうございます!

-でもそうやっていろいろと目的を解決しているうちに、どうしても「これはOSを作るしかないんじゃないか」「もはやOSから作るのが一番簡単なんじゃないか」というテーマにぶつかることがあります。
-自作OSに慣れている皆さんは、OSを作るのがそれほど大変ではないということも知っているので、この直感は信じていいと思います。
-そういう場面に遭遇したら、そのときこそ、目的を持った自作OSをやりましょう!

-目的があり、そのためにOSの開発が不可欠という状況になると、あなたの開発にはすさまじい説得力を持ちます。
-他のOS開発とは違うんだという空気が出てきます(笑)。
-ブログに書けば応援したり賛同したりする人がすぐに出てくるでしょう。
-是非その感覚を一度味わってみてほしいです。

** (3)
-「30日でできる!OS自作入門」の「はりぼてOS」のセキュリティを考えたことがあります。
-「はりぼてOS」はファイルを書くことができず、ファイルを消すこともできません。ネットワーク通信もできません。
-これはすごく安心な感じがしてきました。

-世間では「任意のプログラムを実行できる脆弱性」などということを言うのですが、任意のプログラムが実行できることの何が問題なのだろうと私は時に思うのです。
-もし「はりぼてOS」だったら、任意のプログラムを実行できたところで、悪さは何もできないわけです。せいぜい例外を起こして強制終了させられるくらいでしょう。

-一般論として、普通のOSで悪意あるプログラムが重要なファイルを消せてしまうのは、ファイルシステムの権限管理がうまくいっていないだけだと思うんです。OSの設計がよくないのです。
-根本的な問題はそこにあるような気がするのですが、なぜか対策はいつも「アプリに脆弱性があるからアップデートしろ!」・・・と。そうじゃなくてOSのアクセス権制御を見直すほうが根本解決に近いような・・・。

-そもそも脆弱性のないアプリなんてかけるんですか?
-それはバグのないアプリを書けと言っているようなものでは?そんなの人間が簡単にできることなのかな。
-getsをやめてfgetsを使えばいいという意見を見たことがあって、まあそれは99.9%は正しいと思いますが、でも引数のnを間違えたらやっぱり脆弱性になりますよね。
-それに自前でバッファに書き込んでいたらやっぱりオーバーランはいつだって起こりうるわけです。
-人間はミスするのを前提にするべきでは?
-だから、仮に悪意あるプログラムが実行できてしまっても、悪さができないためにはどうしたらいいかを考えるほうがいいと思うのです。

** (4)
-ということで、そういうOSを作ってみようかと考えるわけです、たとえば。
-たとえばもし、どんなにファイルを消しても、上書きしても、必ずundoできることを保障できたら、攻撃なんて怖くないでしょうか?
-そんな気がしてきます。・・・あとは漏洩対策をどうしたものかなあ。

-パスワードで守るのはどこまで有効なのか。
-ダウンロードしたプログラムは、どんな権限を持って実行されるべきなのか。
-そういうことはもっと試行錯誤されるべきだと思うのですが、まだ十分ではないような気がします。

-そもそも任意のアプリが好きなだけパスをたどって任意のパスのファイルに到達できてしまうだけでも、私はおかしいと思っています。
-一般のアプリに対しては、もっと制限されるべきじゃないかと思っているのです。

** (5)
-セキュリティに限らなくてもいいです。とにかく「目的を達成するためにOSを作る」をいつか体験してみてください。
-とてもいい経験になりますよ!


** (6) おまけの余談
-http://www.adventar.org/calendars/1666 はご覧のとおり空きがいっぱいあります。だから全部埋めようという気持ちになりきれないのですが、でも埋まってきてあと少しになったら、頑張りたい気持ちになると思うんです。もし残り5マスとかになって、でも書き手が見つからなくて困ったら、私もまた何か書こうと思っています。
-ということで、協力者募集!

* こめんと欄
-(所感です)「はりぼてOS」について存じ上げないのですが、ファイルやネットワークはサポートされていないだけであって、はりぼて内でプログラムを実行(できるのか?)する中で例えばring 0が取れてしまうバグがあれば何でもできるわけですよね。バグのないアプリが書けないのと同様にバグのないOSも書けないので、設計として大丈夫ですというのでは完全ではないと思います。Formally Verified OSなども実用には至っていないようでなかなか難しいのかなと思います。 -- ''ほげ'' SIZE(10){2017-02-13 (月) 10:21:58}
-ご意見ありがとうございます。私はバグのないアプリをずっと書き続ける自信はないですが、バグのないOSなら十分な時間をかければ書けると思っています。世間のOSはたいてい大きすぎるので(私の作るOSは20KB~50KBくらいなので、みんなで穴探しをすればかなりの程度まで根絶できます。) -- [[K]] SIZE(10){2017-04-25 (火) 12:23:06}
-ご意見ありがとうございます。私はバグのないアプリをずっと書き続ける自信はないですが、バグのないOSなら十分な時間をかければ書けると思っています。世間のOSはたいてい大きすぎるので(私の作るOSは20KB~50KBくらい)、みんなで穴探しをすればかなりの程度まで根絶できると思っています。 -- [[K]] SIZE(10){2017-04-25 (火) 12:23:06}

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS