OSECPUの詳しい説明
概要
- (トップページに書いてあることは省略しています)
- OSECPUはOSASK計画のサブプロジェクトです。「はりぼてOS」みたいな立ち位置です。
- 「はりぼてOS」というのは、「30日でできる!OS自作入門」内で自作する教材用のOSのことです。
- OSECPUの技術を性能や拡張性を軽視しない形で書き直し、さらに分かりやすさを軽視すると、第三世代OSASKになります。
- つまりOSECPUは第三世代OSASKのための練習場的な意味合いがあります。
いきさつ
- Kは2011年から2012年にかけて、セキュリティキャンプにて「セキュアなOSを作ろうクラス」というクラスの講師をしています。この講師をしているうちに、セキュアなOSも自作する余地が十分にあるにもかかわらず、多くの人はこの分野に興味を持っていないと感じました。
- どうしてそうなのかといえば、それはそういう分野があることを知らないからです。さらに、とても難しそうに見えるのかもしれません。僕はこれらの状況を変えるために、「はりぼてOS」気分(=かんたん&たのしんで)でセキュアなOSを自作しようと思います。
- Kは実は2009年の11月より、自分が趣味で開発したプログラムについて、積極的な公開を自粛してきました。これはコミュニティの状態の低下を理由にしていました。今回、この自粛をOSECPUに限って解除する方針です。
- きっとまた似たような経験をするかもしれませんが、それは覚悟の上です。・・・ええとこれは、身勝手なお客様気分の要望を受け入れるという意味ではありません。それらについてはもちろん無視します。誤解のなきように。私の覚悟は、OSECPUに関してはそういうノイズがきても気にしないというだけのことです。
- 少しでも悪影響が来るのを遅らせるために、あえてosask.netの外にwikiを立ててみました。
もくてき
- OSECPUは基本的には教材というか実例みたいなものなので、これ自身の完成を目的や目標にはしていません。セキュアなOSの自作という分野を少し底上げできればそれでいいのです。
- まあ結果的にそこそこ使えるものになってしまう可能性はありますが。
- 僕の作り方を見ているといろいろ気に入らないところが出てくるでしょう。それでいいのです。そう思ったら、自分でも作ってみてはどうですか?
- 自作の際にはOSECPUの設計やソースを好きなように流用してください。ただし自作したOSはOSECPUという名前にはしないでください。どれほど多くを流用していても、です。OSECPUは固有名詞であって、Kが作ったこのOSだけがOSECPUです。別の名前があった上で、「ドキュメントにOSECPU互換です」みたいに書くのはもちろんOKです。
- もちろん流用なしでゼロから作っていただいてもOKです。
- 「こんな改造をしてはどうか?」みたいな提案は歓迎します。もちろん提案していただいても採用を約束することはできません。でも「こんなアプリを書いてみたよ」「こんな改造をしてみたよ」というのがあれば、是非教えてください。いいなと思えば節操なく採用させていただきます。
- OSECPUの基本理念は以下のとおり(2013.03.12追記)。
- セキュリティに強いOSってほしくない?ほしいよね!
- でもさー、今のCPUって簡単にバッファオーバーランとかできちゃうよね?もちろんそれはプログラマが用心深くていねいにコードを書けば悪意あるデータに対して十分に防衛できるけど、「CPUが賢くなってプログラマがあまり気を遣わなくても守ってくれる」っていうやりかたもあっていいんじゃないかな?
- というかプログラマに無限の用心深さを要求することが許されるのだとしたら、現状は既に完全にセキュアなのだと思う。
- それができないから、それを前提にセキュアを考えようということ。セキュリティホールができてしまったときに、なんでもかんでもアプリ開発者のせいにしているだけでは、現状は変わらない!
- 他にもいろいろなプログラム上のミスに対して、おかしな結果になる前に教えてくれる親切なCPUがあったら、バグがバグのまま放置されることも少なくなって、結果的にセキュアなアプリがたくさんできるんじゃないかな?
- 要するに今のx86でも一般保護例外などでいろいろ教えてくれてはいるけど、もっともっと保護してほしいという意味。
- このアプローチはCPUを賢くするのではなくて、そういう賢い高級言語を作るという手法もあるけど、高級言語を作るのは難しそうなので、CPUを作ることにする。
- CPUはサポートするべき命令も少ないので、簡単だ。
- こんなCPUを設計して、この仮想的なCPUの上で動作するOSを作れば、きっとOSも非常にセキュアになるに違いない!
- 高級言語もそのうち作る(?)、作れたらいいなー。
こめんと欄
- このページにこめんと欄はありません。このページの内容にコメントしたいときはimpressionsにお願いします。