インタビュー: Theo de Raadt (2001年)

This is a Japanese translation of Interview: Theo de Raadt. (c) KernelTrap


Posted by Jeremy, 2001年11月26日 (月曜日) - 08:38

今週の KernelTrap では OpenBSD 開発者かつメンテナである Theo de Raadt 氏にインタビューした。 OpenBSD は現在利用できるもっともセキュアな OS として知られる。 その最新バージョン OpenBSD 3.0 は 2001年 12月1日にオフィシャルリリースが予定されている。
(訳注: 2005年 12月 現在の OpenBSD の最新バージョンは 3.8 である)

Theo de Raadt氏はカナダのアルバータ州カルガリーに住んでいる。 彼は OpenBSD の作者であり、 この OS は現在利用できるもっともセキュアな OS として "Four years without a remote hole in the default install! (デフォルトで 4年間リモートホールなし!)" といううたい文句で知られている。
(訳注: その後、リモートホールがひとつ発見されたため、 現在ではこの文句は「リモートホールはひとつだけ」に変更されている)

Jeremy Andrewsは米国サウスフロリダに住んでいる。 彼は趣味として、余暇を利用して KernelTrap をメンテナンスしている。


(訳注: 2006年 5月に行われた Theo de Raadt のインタビュー を TAKAHASHI Tamotsu さんが翻訳されています)


Jeremy Andrews (以下 JA): OpenBSD をつくったそもそもの思いつきというのは何だったんでしょうか。

Theo de Raadt: ぼくは何年も NetBSD で働いていたが、フェアではないやり方で 他へ行けと言われたんだ。だからそうした。そして 80人ほどの開発者からなる 新しいチームをつくった。思いつきがどこからきたって? わからないね。 ぼくはもう 15年ほど Unix カーネルやユーザランドのコードを書いたり直したりしているが、 正直いってなぜかはわからないよ、ただそれを自分がほんとうに楽しんでいるということを除いてはね。

JA: あなたが「他へ行け」と言われたいきさつについて、 非常に長いページがありますね (注意: このページはほんとうに長く、Mozilla で読み込むのに長い時間がかかる)。 このページの最後のほうで、私は OpenBSD がまだ構想段階として挙げられている メールをいくつか見ました。私が興味ぶかいと思ったコメントのひとつは、 Herb Peyerl の「Theo は自分が思いどおりに OpenBSD を運営できるということを 世界に示したがっているようだが、彼はそんな人物じゃない」というものです。 あきらかにあなたは自分の開発チームを非常によくまとめあげていますね。 あなたが NetBSD core チームからはずされることになった経緯について まとめていだたくことはできますか。

Theo de Raadt: うん、そのとおりで、とてもうまくいってる。 我々はあるひとつのオペレーティングシステム集団がやるべきことだけでなく、 いまや Unix コミュニティ全体が依存しているような革新もかなりなしとげている。 OpenSSH のようにね。ほかのプロジェクトが採用したセキュリティ上の改善もある。 うちで開発した 4つの API (strlcpy, strlcat, issetugid そして arc4random) は、 いまや他の多くのオペレーティングシステムでも使用可能になっている。

NetBSD からはずされるときに何が起こっていたかって? 二年前までは、 それについて何らかのことがわかればいいなと思っていた。 でも秘密のほうが勝ったんだよ。なぜそれが起きたかぼくは 知らされていないし、誰もそれについて話す人間はいないとされていた。 カンガルー裁判みたいだったよ。まあ、ぼくは連中にものごとを元に戻す 7ヵ月間の期間を与えたんだが、かれらはそうしなかった。 現実問題として、なぜいまさらそれを蒸し返す必要があるんだろう。

ある人々は、この騒ぎはぼくが口にしてきたことがらに対して起きたのだ、 とあいまいに主張していた。だけどね、もしあのときぼくが言ったことが コミュニティに対する犯罪だというのなら、ここで同じことを再び言うまでだ。 うちのメーリングリストにいる人ならみんな知っているように、 ぼくは物事を遠回しにいうタイプの人間じゃない。ぼくは 物事がまさにそうなっていることを言うんだ。怠け者のことは怠け者と呼ぶべきだし、 マニュアルページを読まない奴のことは負け犬と呼ぶべきだし、 一般的にいって、物事をストレートに言うことで開発者の時間の無駄が より少なくなる。

JA: あなたの意見では NetBSD とその core チームはまだ汚れていると思いますか。 あるいは、それらはもう去ったことで、水に流した過去なのでしょうか。

Theo de Raadt: ああ、かなり長いあいだ、向こうの開発者の多くが、ぼくと、ぼくの プロジェクトを嫌うように洗脳されていたらしいね。 けど時がたつにつれて、これらの問題はあまり目立たなくなっていった。 それに OpenBSD の主要メンバーほとんどが NetBSD は概して 時代遅れだと思うようになったんだ、なぜなら彼らの決定は 我々のものとかなり違っていたから…。ま、気にしてないよ。 たとえばボストンではぼくらはパケットフィルタの完全な 代替品をつくるために 1週間働いた。だからボストンでやっていたうちの OpenBSD BOF に (NetBSD の) Perry が来て、Darren が ipf のあの悪徳な ライセンスを緩めてきたと聞いたときはかなり笑ったな。 なんで NetBSD の開発者がそんなこと気にするんだよ? そういう政治的プレイはただまったく退屈なものだし、 そうでないとしたら無礼きわまる。 でも今ではこれはただの笑い話になっているよ。

JA: OpenBSD プロジェクトと NetBSD プロジェクトの間で共有されているコードはありますか。

Theo de Raadt: ああ、もちろん。ライセンスの問題がないかぎり、 政治的にそういう共有が禁じられてるわけではないからね。

OpenBSD の開発は長きにわたって、 他のプロジェクトからフリーのコードをくすねてきて、 それを改良するという伝統がある ;-)

JA: FreeBSD プロジェクトについてはどうでしょう。

Theo de Raadt: あー、FreeBSD からはそんなにないな。だが、もちろん 市場に出ているすべての Ethernet チップセットを登場から数週間で サポートすべく努力を続けている Bill Paul には恩義を感じているよ。 でもほとんどの場合うちらはただ彼らのツリーから バグフィックスを探してくるだけだ。 彼らもうちのツリーに対してやっていると思うよ。

JA: OpenBSD の背後にあった当初の目的というのは、 現在手に入るもっともセキュアな OS をつくるというものだったんですか、 それとも発展してきてそういうふうになったんですか。

Theo de Raadt: とんでもない! 長い話については www.openbsd.org/security.html を見てくれよ。 簡単にいえば、ぼくは 10年以上前に (SunOSの) セキュリティ監査をやってたんだ。 そして BSD に 4年間ほどいた。それで OpenBSD をはじめて 1年ぐらいたってから、 もとの試合に戻ったわけ。カルガリーでとあるセキュリティ会社の連中に 会ってね。それから魔法のごときプロセスが始まって…。

JA: 私はハリセンボン (blowfish) のマスコットが好きなんですけど、これはいつ採用されたんですか。

Theo de Raadt: おかしなことに、あれからあまりに長くたってるんで、 思い出すのにちょっと時間がかかったよ! ことの起こりは Niels Provos がぼくらの 新しいパスワードファイル形式をつくったときに始まったんだ。 これは blowfish (ハリセンボン) アルゴリズムを使っていた。 で、だれかにその絵をつくらせたわけ。 それが気に入ったんだ。すーんごく気に入ったんだ。デーモンの絵は FreeBSD があまりにもマーケティング用に効果的に使いまくってたんで、 ちょっと飽きていた。それにカンファレンスではこのハリセンボンのシャツは 飛ぶようによく売れたんだ -- ダグラス・アダムズがサインしてくれたやつまであるよ。 結果として、うちでは全部このハリセンボンでいくことにした。

JA: OpenBSD が Linux よりも優れている点というのはどんなところでしょう。

Theo de Raadt: ぼくは Linux は使わない。だからこの質問の答えはほんとにわからないね。

ただしどうしても、といわれたときには、ふつうはこちらの開発プロセスのほうが ずっと厳密なものである、といっている。これはよりシンプルで、 確実にうまくいくことが証明されているコードを追い求めるという ぼくらのゴールを反映しているのかもしれない。 あと、うちでやっている非常に組織化された 6ヵ月おきの開発サイクルのためもあるね。 ぼくは OpenBSD の開発は革新的 (revolutionary) なものというよりもじょじょに進化していく (evolutionary) ものだと思っている。それにぼくらの開発手法はあまりにも他と 根本的な部分で違っているもんで、これがユーザコミュニティに明らかな違いを 多くもたらしているんだと思う -- いくつも起こってきた 論争についてはここではふれないでおくがね。

JA: 6ヵ月の厳密な開発サイクルをとっているとおっしゃいましたが、 その開発手法には興味があります。それはどんなふうにして始まったんですか。 なぜ 6ヵ月という期間を選んだのか、それと、開発リリースと安定版リリースをどうやって区別しているのか、 というようなことをお尋きしたいのですが。

Theo de Raadt: ぼくらが 6ヵ月のサイクルをとっているのにはいくつも理由があるんだ。 最初に、たぶんぼく個人にとっていちばん重要なのは、これがぼく自身をダメにしちまわない程度の 長さだってこと。休日はぼくにとっていい具合に分散されている。 ぼくはプロジェクトリーダーだから、ぼく自身がおかしくなることは許されない。

しかし開発サイクルがたとえ 6ヵ月ではあっても、ぼくらはより厳しい目標をもっている。 それは -current ソースツリーがつねにコンパイルできるようにしておくことだ。 何かが動かない状態が 20分以上続くと、それはたいてい強い調子の言葉となって現れる。 変更はそれがまともな形になるまでソースツリーに入れることは許されない。 これがどんな様子かっていうと、 まず通常の 3ヵ月の開発期間が先にあって、そのあと 2ヵ月の減衰期間のあいだに、 ぼくらはだんだん注意深くなっていき、より多くのものを固めるようになっていく。 そうすると 1ヵ月残っていることに気づくと思うけど、これはもうきちがいじみた月でね -- CD をリリースして出版社に送ってしまってから、ソースツリーのロックがはずされるんだ。 このときにもっとも多くの変更が起こる。なぜなら多くの開発者が、 それまで 2ヵ月間のあいだロックされて変更が許されていなかったプロジェクトを 完了させるんでね。

JA: 「soft update」の概念と、これによってジャーナリング・ファイルシステムが 不要になるわけを教えてくれませんか。

Theo de Raadt: FFS (およびそれと類似の) ファイルシステムでは、メタデータの更新順序は ファイルシステムを安全に保つためにものすごく重要だ。ファイルシステムは、 ファイルやディレクトリ (これはいくつかの意味的な処理が 必要なことをのぞけば、ほんとうにただのファイルだ)、iノードテーブル、 そしてどのブロックが現在割り当てられているかを示すビットマスクテーブル (ほかのファイルシステムでは extent を使っているが、この差はそんなに重要じゃない) でできている。なにか複雑なイベントが起こったときのことを考えてみよう。 たとえば新しいファイルの作成だな。この場合、ディレクトリのエントリを このファイル内に作成する。このときディレクトリファイルは伸長されるかもしれない。 するとブロックが割り当てられ、ブロックのビットマスクテーブルが更新され、 ディレクトリの iノードが更新される必要があるかもしれない。それから、 新しく作成するファイル自身の問題がある -- そのための iノードを割り当てる必要があるし、 そのほかの部分もね。もちろん、ぼくらの目標はクラッシュの後にも ファイルシステムを最大限リカバリ可能にすることだ。fsck を使って、 そのような操作を並列にできるようにしてね。もちろん、ここでいう目標ってのは ファイルデータの安全性のことじゃなくて (これはまた完全に別の話になる)、 ディレクトリツリーの健全性だ。

fsck の仕事をいちばん簡単にするにはどうするかって? あきらかに、 これらのオペレーションを注意ぶかくコントロールされた順序でおこなうことは 非常に助けになる。なぜならこうすれば不一致 (inconsistency) を 解消しなければならない数が最小になるからだ。

しかし、Unix のバッファキャッシュは性能向上のためにこうしたオペレーションを 並べかえる傾向がある。BSD システムでは、伝統的に ファイルシステムの「マルチタスキング」を一時的にストップして、 間に他の操作を一切介在させずに 2つの関連したディスク操作を一気にやることで 最大の復旧可能性を残していた。こうしておくと fsck は 2つのオペレーションがあべこべに起こることはありえないと保証できるわけだ。 それらはどちらも起こっていないか、最初のやつだけが起こったか、あるいは両方起こったかのどれかで、 間に他のオペレーションはない。ようするに、このファイルシステムの 操作はほとんどの場合非同期だが、ファイルの作成と削除の瞬間だけは 「同期的」な操作が起こるんだ。

これはファイルシステムをできるかぎり高信頼性にはするけれど、 一般的なオペレーションの速度を犠牲にする。たくさんの古い CSRG のテクニカルレポートをみれば、 なぜこれがファイルシステムを安全にするかはっきり説明しているよ (そしてぼくは Linux コミュニティはこれに対してまったく無知だと思うね。 彼らはそろそろ ext2fs のような完全に非同期なファイルシステムは危険だということを 認めるときだ。Linux 管理者がすでにそのことを知っていなければの話だが)。

Soft update は何をするかって? これは 2つのことをする。

基本的には、これはバッファキャッシュがそれぞれのファイル操作による 順序の制約を覚えておくようにさせる。これによって、実際のディスク操作は、 まだ「ローカルには順序正しくある」状態になっているんだ。特定のディレクトリ上における 円盤 (platter) へのアクセスは順序正しく起こるが、複数のディレクトリに対するアクセスは 非同期的に起こるようになる。つまり、これによって fsck は以前と同じ 安全性を得つつ、なおかつ、ときどき起こる同期的な操作とはおさらばできるってわけ。 SCSI について詳しい人なら、soft update というのは barrier による タグ付きキュー (tagged queuing) と同じだと思ってほしい。

ふたつめ。Soft update はバッファキャッシュのふるまいをより賢くする。 いまやこれは過渡的な情報をより多く保持できて、安全な操作をまとめることができるんだ。 たとえばディレクトリをその中にあるファイルごと消したとき、 このファイルシステムのコードではディスク操作をほとんど必要としない。 2700個のファイルが入っているディレクトリ・ツリーを消しても、ディスク上では 90 の I/O オペレーションしか起こらない。これ以外の削除操作はメモリ上で “エミュレーション”されるんだ。これによって明らかにぼくのノートパソコンは 長いあいだ駆動できるようになった、なぜならディスクのシークがずっと少なくて すむからね。

Soft update は普通、円盤が一枚しかなくてもうまくいく。 ジャーナリング・ファイルシステムは、ジャーナル用のディスクを別個に用意しないかぎり 高性能にはならない。

ファイルシステム関連技術の調査をしていたら、1年半まえに Margo Seltzer と Kirk McKusick によって書かれた Usenix の論文があったんだ。 この論文では、これらすべての技術をくまなく比較している。ぼくがとっても悲しいのは、 ほとんどの人がこのすばらしい論文をまったく無視してるってことだよ。 簡単な要約? バッファキャッシュの変更は、ファイルシステムの変更よりもずっと効くってこと。

JA: ファイルの安全性はどうやって確保するんですか。

Theo de Raadt: たんにバッファキャッシュを十分頻繁に書き出すだけだよ。

JA: すると soft update は fsck のスピードを上げるわけですか。

Theo de Raadt: いや、きみは要点をわかってないね。ぼくらがやりたいのは fsck を速くすることじゃないんだ -- ぼくらは fsck をちゃんと実現可能にしたいわけ。例の McKusick/Seltzer の論文にはそのためのトレードオフを 説明している章がある。Linux がデフォルトで非同期にしている ext2fs では、 すべての可能性を復元することは『不可能』なんだ。これは原理的に不可能というだけじゃなく、 ぼくはもう人々が実際にしょっちゅうこれを経験していると聞いているんでね…。

JA: もし soft update があっても fsck を使わなくてはならないのだとしたら、 なぜジャーナリング・ファイルシステムじゃだめなんですか。

Theo de Raadt: それは、例の論文も言っているように、ジャーナリング・ファイルシステムは ふつう遅くて、いい性能を出すには“円盤”を複数枚用意するか、 nvram でジャーナルをしなけりゃならないからだよ。とはいっても、じきに soft update なファイルシステムがバックグラウンドで fsck を走らせるようにする 変更もできる。今でも soft update なファイルシステムを クラッシュしたあとにマウントしてちゃんと動かすことはできるよ。 ただしその場合、あるブロックはアロケーション・ビットマップ上で 実際には使用中でないのに“使用中”となっているかもしれないけどね。 だからバックグラウンドでブロックをクリアできるような仕組みが必要となるわけだ。

JA: たしか 4ヵ月前に OpenBSD v2.9 が出たとき、ディスク I/O の速度が 60倍になったと宣伝してましたよね。これは他の OS に比べてディスク I/O を おそろしく速くできるんですか。

Theo de Raadt: いや、その宣伝文句はもっとずっと特定されたものだ。ディスク I/O の性能が 上がったわけではないよ。Soft update を使ったときに ある種の操作に対するバッファキャッシュの性能が上がったんだ。 それに dirprefs のコードが意図したとおりの動作をするようになった。 でも、この効果にはまったく圧倒されるから、ぜひ見てほしいね。 いまじゃぼくは rm するのが前よりもずっと怖くなったよ (うっかり 2GB のパーティションを消したことがあるが、 rm は瞬時に戻ってきて、ls してみるともうファイルはすべてなくなっていた。 それでもディスクドライブはまだ操作を完了するために狂ったように動きつづけていた)。

JA: 大きなディレクトリを消していて、プロンプトが戻ってもディスクが その操作を完了しないうちに電源を切ったらどうなります?

Theo de Raadt: fsck が正しい状態を復元してくれるよ。正しい状態とは何かって? 論文を読め! -- そこには複数の“正しい”状態があるって書いてあるからさ…

JA: 最近 IPF が OpenBSD ツリーからはずされて、かわりに PF が入ったということで、 かなりニュースになってますよね。この決定がどう起こったかについて、 すこし話していただくことはできますか。

Theo de Raadt: うん、何が起こったかっていうと、うちらが ipf を“分裂”させようとしてるってことを Darren が耳にしたらしいんだ。何年ものあいだ、ぼくらはこのソースツリーの 統合をコントロールできないのが不満だった。技術的に見れば、ipf は ぼくらにとってそんなにすごいものじゃない。ipv6 用の mbuf処理はお粗末なものだったしね。 設定用の文法も弱かったし、ユーザーランドのコードはひどくもろいものだった。 ぼくらは Darren に「この部分は気に入らないんだけど、直してくれない?」と 言いつづけてきたんだ。いっぽうで、ぼくらが彼に diff を送ると、 彼は自分が気に入った部分だけを取って、他は無視した。 ようするに、うちらの開発者はほぼ一日じゅうおしゃべりしていて、 ほとんど実時間でコードをハックしているもんで、 こういう断絶した開発モデルにはほとほとうんざりしたんだよ。

で、たぶん Darren はそのことを聞いたんだろう、 うちらが ipf を分裂させることは許さんと言ってきた。

だから、うちらはそれをはずした。

笑える話はなにかって? うちら以上の問題をひき起こしたのは Darren なんだよ。 うちらはただせざるを得ないことをしただけだ。

JA: なぜライセンスの不一致がいきなりこんな大問題になったんでしょう。

Theo de Raadt: ああ、理由としては、 これはちょうどぼくらが SSH.com とのバトルから抜けだしたばかりのころだったんだ。 連中がうちに対して法的な脅しをかけてきたあとでね。 この件で、ぼくらはちょっとばかしパラノイアになっていた。 でもぼくらはいつもうちのソースツリーのライセンス条項に厳密に従うように 心がけてきたよ。だから ipf を含めることはできなかった。 ipf のライセンス問題に気づいたあと、ぼくらはここにはさらに問題が 存在してるのではないかと疑いはじめた。それでぼくは他の開発者と一緒に ソースツリーのライセンス監査をやった。他の多くのソフトウェアコンポーネントに 問題があったが、うれしいことにそのクリーンアップはかなり成功したといえる。 tcpwrappers やら、mbone のツールやら、tcpdump、そして ppp のコード… 個々の作者に相談することで、合計 40 ぐらいのソフトウェアの問題が 簡単に解決できたんだ。場合によっては、うちらでまずかった部分を書き直した。 ipf はたんにこの仕事の一部にすぎないよ。

JA: PF はどのようにしてできたのでしょう。これはどれくらいの速さで開発されてるんですか。

Theo de Raadt: pf は ipf にあるものはほとんど持ってる。 それから他のパケットフィルタにはないような いくつもの新技術も塔載している。

ぼくがクールだと思うことのひとつは、 ルールを書く文法と オペレーションが変更されたおかげで、 典型的なフィルタ設定が少ないルールで可能になったことだ。 ほとんどすべてのルールの形式がリストをとれる。 たとえば "[...] port { 22, 80, 1024-49152 }" のようにね。 このおかげでより短い設定ファイルになって、読むのもやさしくなった。

ふたつめの面白いことは、最近のパケット正規化 (packet normalization) に 関する LBL の論文にあった アイデアをいくつも実装したことだ。 新しい "scrub" 命令を使うと、IP トラフィックが パケットフィルタを通るときに正規化させることができる。これは fragrouter のような ツールを不要にする。なぜなら IP フラグメントがオーバーラップするようなことは もう起こらなくなるからね。

みっつめは、pf はフィルタが立ち上がったときに走っている TCPセッションの セッション状態をピックアップできるってこと。これはとってもイイよ。

IPv6 も完全にサポートされてる。もっとも 3.0 のコードにはバグがいくつか残っているがね。

もちろん、ぼくらは将来的な改良もいくつも計画している。 ぼくのアイデアのひとつは、アドレスを入れられる場所にはすべて インターフェイス名も入れられるようにすることだ。そしてカーネル内のコードが そのインターフェイス上のすべてのアドレスに対するルールをサポートするようにする -- たとえば、インターフェイスのエイリアスをより簡単にするとか、 新しく DHCP 割り当てされたアドレスに自動的かつ透過的にルールを適用するとか、 IPv6 まわりの設定をするときに、いまよりずっと少ない設定の書き換えでできるようにするとかね。 今のところ、ユーザランドのコードでこの一部分はできるけど… もしカーネルでそれをできるようになったら、そりゃさぞかしクールだろうな。

JA: OpenBSD で走るウィンドウマネージャやデスクトップには どんなものがあるんでしょう。どれをお使いですか?

Theo de Raadt: あー、正直いうと実はよく知らないんだ。 でもうちの ports をやってる連中は KDE も Gnome も その他のウジャウジャもちゃんと動くと言ってる。 ぼくは異なるマシンで異なるものを使っているが、 いつも最小限のものにとどめるようにしているよ。 ぼくには派手なものは必要ないからね。

JA: OpenBSD 以外の OS はお使いになりますか。

Theo de Raadt: いや、その必要はない。

JA: OpenBSD でマルチプロセッサをサポートする計画はありますか。

Theo de Raadt: うん、実際それはもうすでに動きはじめている。 次のリリースで出るかって? それはあやしいな。 ほかにもクールなことを考えてるよ。たとえば追加の CPU に暗号処理をやらせるとかね。

JA: OpenBSD が組み込みデバイスで使われている例はありますか。

Theo de Raadt: ぼくは何年か SCADA タイプのアプリケーションの作業をしてきた。 そしてこの業界ではいかに物事が速く移り変わってしまうかを知ったあと、 ぼくはほとんどこれに対する興味を失っていた。うちの開発者と直接の ユーザコミュニティにとっては、こいつはちっとも役に立たなかったんだ。 でも OpenBSD の部分はまだあるし、それらはフリーだよ。 もしこれらの組み込みコンポーネントがぼくらの書いた部分を使ってくれたら、 そりゃ実にけっこうなことだね。

JA: 2.9 から 3.0 への changelog はマイナーっぽい変更の 非常に長いリストになっています。これがあなたのおっしゃっていた じょじょに進化していくものだと思うのですが、PF への移行のほかに 3.0 リリースでなにか革新的な変更というものはありますか。

Theo de Raadt: それは見方によると思うな。たとえば、NetBSD の ultrasparc用 "sparc64" コードを くすねてきて、うちらのソースツリーにマージして、2ヵ月後にほとんど完全な リリースを出したのは革新的といえる。これ以外にもサポートされるモデルはあるかって? そう思っている人はたしかにいるだろう。が、うちの開発コミュニティにとっては これはただのこまかい修正の羅列なんだ。

JA: 私は古い Sparc Ultra 1 を手に入れたので、3.0 の CD が着きしだい OpenBSD をインストールしようと思っています。この Sparc64 の移植版は 他と比べるとどんな感じですか。

Theo de Raadt: まだ 2ヵ月かそこらの移植にしちゃ、悪くないよ! 残念なことに、多くの部分はまだ欠けている。 フレームバッファや X11 のサポートはまだない。 じきに解決したいとは思っているがね。2002年のどこかで、 自分の机に Blade 100 を置けたらいいなと思っているよ。 (あるいはもしかすると Blade 1000 かもね :-)

JA: あなたが作業しているのはどの移植版なんですか。

Theo de Raadt: ぼくは年がら年じゅうかなりのリリースエンジニアリングをやってるもんで、 そのほとんどすべてに対して均等に作業している。 メインの各アーキテクチャごとに 2台ぐらいが地下室で走ってるんで、 ぼくはしょっちゅうスナップショットをビルドするから、各ポートの 主要開発者が問題にぶつかるよりも速くその問題を発見するということが、 けっこうあるんだ。なにかが動かない状態であまりに長いあいだ 放置されるということはないように努力してるよ。

ぼくが何をやっているかについて、ちょっとした混乱があると思う。 ぼくは特定のなにかについて作業しているわけではないんだ。 むしろぼくは、ありとあらゆる、ほとんどすべてのものについて作業している。 朝のメールに目を通したあと、ぼくはほとんどランダムにソースツリーのある部分を とってきて、それを読む。ぼくはバグを見つけようとする。この作業はもう 2、3年やってきてるもんで、いまじゃこれはだんだん難しくなってきたよ! だが、おもな目標は新しい型のプログラマのエラーを見つけることだ。 たとえばここ数ヶ月のあいだ、ぼくはユーザーランドのプログラム中における signallongjmp の競合をみつける作業をしていた。 それから fd_set のオーバーフローを解消するという作業もつづけている。 いまじゃ、カーネルでぼくが保守している部分はわりと制限されてきてるね。 うちにはカーネルをやってるいい開発者のほうが、 ユーザーランドをハックするいい開発者よりも多くいるから。

JA: OpenSSH 3.0 は 11月6日にリリースされました。 私は Linux に移植されたバージョンを仕事でも家でもかなり使っていますが、 移植版にない OpenBSD だけの追加機能というようなものはあるんですか。

Theo de Raadt: スマートカード類のネイティブサポートを除けば、機能的な違いはないと思う。 でもぼくらは OpenBSD 版のほうがよりセキュアだと考えている。 なぜなら OpenSSH は OpenBSD に直接含まれている部品だからね。 うちらは OpenSSH だけでなく、それが依存しているシステムのすべての他の部分まで 非常に注意ぶかく監査しているから。たとえばきみは glibc を信頼するかい? オーケイ、これはちょっと意地の悪い質問だったな。 でもセキュアなソフトウェアというのはすべての部分が 100パーセント 正しいふるまいをするときにのみ達成できるものなんだ。

JA: Alan Cox が、最近米国の DMCA を理由に Linux 2.2.20 カーネルに加えられたセキュリティ上の変更を検閲しましたよね。 これについてなにか意見はありますか。 あなた自身が OpenBSD のパッチを作るさいに、そういった情報の検閲は 起こりうると思いますか。

Theo de Raadt: 彼のとった行動は完全にバカげてると思うね、なぜなら DMCA が影響するのは 著作権コントロールをする機器だけだからだ。まあ、ご勝手に。 彼らは自分たちのユーザを暗い中に置いとけばいいよ。

ぼくらは自分たちのユーザを暗闇の中に放置するようなことはしない。 ぼくらはときに、それが『理論的に、もしかするとひょっとしたら、蒼い月の下ででも』 悪用可能かもしれない、という理由だけでもパッチをリリースする。 ときにはこういった修正箇所があまりに多くてユーザの手にあまるので、 すぐにはユーザに渡らないこともある。 たとえば Todd と僕は 900 ほどの signal ハンドラを修正したし、 ここ 2年間のうちほぼ同じだけの数の fd_set オーバーフローがあった。 でもぼくはこういう完全に新しい型のバグのなかで、正確にどれだけの数のバグが 悪用可能なのかを調べるのに時間を費やしたりしない。 それにうちのユーザに 900 ものパッチを当てさせる苦痛を強いることもしたくない。 こういう状況のために 6ヵ月のリリースサイクルはベストな解法なんだ。

JA: 先ごろ OpenBSD のメーリングリストで、ISO イメージの配布がないことについて 長い長い議論が起きていましたが、作者のご意見を聞きたいと思います。 なぜそういうのがないんでしょう。

Theo de Raadt: それは、たんにぼくらの CD 売り上げを減らす経済的理由がないからだよ。 もしみんなそれが嫌なら、どんなことがあってもとにかくやればいい。 自分自身でね。しかしぼくらはやらない。 (これは言っといてもいいと思うんだが、このうちの最も声の大きい グループにはうちらのプロジェクトを嫌いな連中が混じっているようだ。)

JA: CD の売り上げは OpenBSD の開発を続けさせるほどの金額になるんですか。

Theo de Raadt: いや。CD と寄付はぼくらが毎年やっていくほどの金額にはならない。 そりゃ、3年前ぼくが本当に貧乏だったころは少しは足しになったけどさ。 去年は寄付がかなり落ちこんでいたが、これはたんに業界全体が ベルトを締めてきただけじゃないかな。現在 DARPA のグラントが 2ヵ年計画で、 ある種のことに資金を出してくれるのは本当にラッキーだと思うよ。 でもこの資金が尽きたとき、ぼくらは 2.5 から 2.9 までの時代がいかにして 寄付と CD 売り上げだけで成り立ってたか、ユーザコミュニティに再教育せにゃならんだろう。 お金はいいハードウェアを買うためで、 人々はそれ以外のパーツを寄付してくれて、 95% のボランティアグループがいろんなことを書いたり直したりしてくれる。 とにかく、くよくよする必要なんかないわけで、なによりぼくらは オペレーティングシステム・ハッカーのロックスターみたいな人生を送っているわけだからね… それも IPO やらなんやらのキチガイじみたアホな仕組みにはまったく縁がなく、だ。 …だろ?

JA: OpenBSD とカーネルのハッキングについて、 なにかおすすめの本やウェブページはありますか。

Theo de Raadt: いやあ、きみんとこの読者がカーネルのコードを書くかどうかはあやしいな。 でも人はコードを読むことでどのようにコードを書くかを学ぶものだ。 本を読んでも自転車に乗れるようにはならないがね。

JA: あなたのウェブページで、私はあなたが NetBSD を始めた 4人のうちの 1人だということを 読みました。これがあなたにとってカーネルのコードに触れた最初の機会だったんですか。

Theo de Raadt: いや。何人かの友達といっしょに、ぼくらは Minix を Sun3/50 に移植したんだ。 そのあとぼくはそれを Amiga 2000 に移植して…。ぼくらは BSD 2.9 を MVME147 ボードに移植しようとしたが、これはそんなにうまくいかなかったよ、 もっともぼくが書いた MVME147 bootrom の修正バージョンはまだ OpenBSD/mvme68k ディストリビューションに入っているがね。それからぼくは SunOS 4 の カーネルハッキングもやった。そして CSRG が彼らのコードを使用可能にして、 それで何もかもが変わって…。

JA: OpenBSD 以外の時間はどう過ごしてますか。

Theo de Raadt: 自転車とハイキング…。あとビールとコーヒーをすこし…。

JA: あなたのホームページで、 趣味についてちょこっと書いてあるのを見ました。 近いうちにアタックする予定の山はありますか。

Theo de Raadt: 来週のどこかで、メキシコにあるもうひとつの火山に登ろうと思っている。 そこでぼくは講演もするんだ。学会の主催者は山があるところに 講演者としてぼくを招待するのはいともたやすいってことに気づいたわけ ;)

JA: わざわざお時間をいただき、すべての質問に答えてくださってありがとうございました。 あなたとお話しする機会がもてて、とても光栄に思います。 注文した OpenBSD の最新リリースは1週間以内に届くと思うので、 いまはこれを早く試してみたいと思っています。 どうもありがとうございました。


Japanese translation by Yusuke Shinyama