OpenBSD
OpenBSD(オープンビーエスディー)は、セキュリティやコレクトネスなどを特に重視した、BSDをベースにして開発された、オープンソースの、Unix系オペレーティングシステム (OS)。
1995年にテオ・デ・ラート (Theo de Raadt。NetBSDの主要開発者)が NetBSDからフォークさせる形で開発が始まったものであり、BSDの子孫のひとつである。
目標としているのは正しい思想 (correctness) と先制的なセキュリティ (proactive security) である。オープンソースおよびドキュメンテーションの重視、ソフトウェアライセンスに妥協しない姿勢でも知られている。テオ・デ・ラートの自宅がアルバータ州カルガリーということで、暗号の輸出制限がないカナダを開発の本拠地としている。ロゴおよびマスコットはフグのPuffy。
OpenBSDの目指す正しい思想には、GPLより制限の少ないBSD/ISCライセンスこそ真にフリーであるという意見や、正しく設計されたOSは移植が容易であるはずだという理念などが含まれる。もともとNetBSDから派生したため移植性は高いレベルにあったが、新しいプラットフォームへの移植のたびにコードが洗練されセキュリティの向上につながってきたとして、NetBSDとは別の観点から移植の意義を強調している。
また先制的なセキュリティとは、脆弱性が発見されてから問題を修正するのではなく、問題の起こりにくい設計や徹底したコード監査によって、事前にあらゆる危険性を排除しようとすることを意味する。
そのため、通常のインストールではほとんどのサービスが起動しないようになっており、これまでに「デフォルトインストールでのリモートセキュリティホールが2つしか発見されていない」ことを売り文句にしている。
その2つとは、2002年に発見されたOpenSSHの桁あふれ問題 と、2007年に発見されたIPv6スタックのバッファオーバーフローである。
設計や仕様は文書化され、コーディングと同時にマニュアル (man) が更新されている。実態に即したマニュアルを保証することにより、管理者や開発者の無知・不注意に起因するセキュリティ問題を防止している。
他のOSでも標準的に使われているSSHの代表的実装OpenSSHの他、C言語で文字列を安全に扱うためのstrlcpyとstrlcat、IPパケットをフィルタリングするPF(パケットフィルタ)、BSD系OSで暗号化ハードウェアサポートを可能にするOCF (OpenBSD Cryptographic Framework) などは他のBSDの子孫達にも取り込まれている。
CVSリポジトリを外部に公開したのはOpenBSDが最初だが、その後anonymous cvsはSubversionやGitなどの普及前の時期においてオープンソースプロジェクトの標準的な開発基盤となっていた。
1994年12月、NetBSDの立ち上げ時のメンバーでもあったテオ・デ・ラートは、上級開発者の地位とNetBSD中核チームメンバーという立場から退くよう要求され、ソースコードへのアクセスもできないようにされた。そうなった経緯は明らかではないが、NetBSDプロジェクトおよびメーリングリストでの性格の不一致が原因と言われている。テオはそれまでも周囲と衝突の絶えない性格を批判されていた。Peter Waynerは自著Free For Allの中でテオがNetBSDを離脱する直前「何人かの人々の気持ちを逆なでしはじめた」と書いている。リーナス・トーバルズはテオを「気難しい」と評している。あるインタビュアーは彼と会う前に「不安だ」ともらしている。しかし、そのように思わない人も多い。件のインタビュアーはテオがOpenBSDを立ち上げる際に「変化」し「チームの面倒を見ることを望んでいる」と述べた。彼が有能なプログラマであり、セキュリティに関する第一人者の1人であることを否定する者はほとんどいない。
1995年10月、テオはNetBSD 1.0からのフォークとしてOpenBSDプロジェクトを立ち上げた。最初のリリースは1996年7月のOpenBSD 1.2であり、同年10月にはOpenBSD 2.0をリリース。約半年ごとに新リリースが公開され、各リリースについて1年間サポートと保守を行う。ただし、開発者はシステム全体の整合性を保つ範囲でのみコードに変更を加えなくてはならないため、常時更新されているスナップショット版も安定して動作することが期待されている。2007年11月1日に公開されたOpenBSD 4.2は直前に急逝した萩野純一郎に捧げられている[ftp://ftp.openbsd.org/pub/OpenBSD/4.2/ANNOUNCEMENT]。
2007年7月25日、OpenBSD開発者Bob BeckはOpenBSD Foundationの創設を発表した。これはカナダの非営利団体で「個人や法人がOpenBSDをサポートしたい場合に対応する窓口として働く」ものである。
OpenBSDがどれほど使われているかは確認が難しい。開発者側でも把握していないし統計も公表していないが、他の情報源が若干存在する。2005年9月、創設間もない BSD Certification Groupが利用状況の調査を行い、BSD系OS利用者の32.8%(4330件の回答のうち1420件)がOpenBSDを使っているという結果が得られた。同調査ではFreeBSDは77%、NetBSDは16.3%であり、OpenBSDは2位だった。DistroWatchというウェブサイトはLinuxコミュニティではよく知られているが、各Linuxディストリビューションと他のOSのサイトのヒット数を公表している。それによると2018年7月22日現在、OpenBSDのサイトには1日146ヒットがあり、79位となっている。ちなみにFreeBSDは1日295ヒットで33位、NetBSDは1日101ヒットで107位である。
2016年9月1日の6.0のリリースに伴いEFIブートローダーを追加し、またはextファイルシステムに代わって、FFSからU-Bootヘッダなしにカーネルを読み込めるようになった。
OpenBSDプロジェクトが生まれた当時は、オープンソースプロジェクトであっても、ソースのリポジトリにアクセスできるのは選ばれた少人数の開発者チームだけというのが普通だった。この方式では、外部のコントリビュータは最新の開発状況を直接知ることができないため、貢献しようとしても作業がダブってしまい無駄になることが多かった。テオ・デ・ラートはソースを誰でもいつでも読めるようにすべきだと考え、Chuck Cranorの支援を求めた。Cranorは公開の匿名CVSサーバを立ち上げた。これはソフトウェア開発の世界で初の試みであり、この決断によりOpenBSDという名称が生まれ、ソースコードと文書へのアクセスをオープンにするという姿勢を表すようになった。
OpenBSDのオープン性についての方針は、ハードウェアに関しても適用される。テオは2006年12月のプレゼンテーション用スライドで、ハードウェア仕様の詳細を示す文書が公開されていなければ「開発者がドライバを書く際に間違うことが多い」とし、「(やった、動いたぞ、という)快感を味わうことは難しく、開発者によってはあきらめてしまう」と説明している。更に、OpenBSDプロジェクトにとってベンダーの提供するバイナリドライバは信用できないし、「問題が生じても…修正する方法がない」ため、許容できないとした。また、ベンダーによるソースは「若干受け入れ可能」だが、依然として問題発生時に修正が困難だとしている。
このような方針を示す出来事として、2005年3月、テオがopenbsd-miscというメーリングリストにポストしたメッセージを端緒とする議論がある。メッセージの中でテオは、アダプテックのAAC RAIDコントローラ用のデバイスドライバを改良するために、同社に必要な文書を開示してくれるよう4カ月に渡って交渉してきたが、開示されなかったことを明らかにし、OpenBSDコミュニティ全体に対して、アダプテックに彼らの意見を表明することを奨励した(このような行動はこれ以前にも行われている)。その直後、アダプテック元従業員で FreeBSD版AAC RAIDサポートの作者でもあるFreeBSDのコミッター Scott Long が、テオがアダプテックとのこの問題について彼に直接コンタクトを取らなかったとして、テオを酷評する文章をOSNewsというサイトで発表した。この件でfreebsd-questionsメーリングリストは議論が紛糾し、そこでOpenBSDプロジェクトのリーダーはScott Longから支援の申し出は全くなかったし、アダプテックからもLongを紹介されなかったと反論した。議論は、バイナリ・ブロブと秘密保持契約 (NDA) の使用を許容するかしないかという2派に分かれての激論に発展した。OpenBSDの開発者らは、ソースツリー内にプロプライエタリなバイナリドライバの存在を許さない立場で、NDAにも消極的である。これに対してFreeBSDプロジェクトの方針は異なり、Scott LongがOpenBSDへの支援として提案したアダプテックのRAID用コードの多くは、クローズドソースかNDA契約に基づいて書かれている。結局OpenBSD 3.7の締め切りまでの文書は提供されず、アダプテックのAAC RAIDコントローラサポートは、標準のOpenBSDカーネルからは削除された。
OpenBSDプロジェクトの目標のひとつとして、「元々のバークレー版Unixの著作権の精神を保ち」、それによって「相対的に邪魔されることのないUnixソースのディストリビューション」を可能にすることを掲げている。このため、ベルヌ条約によって不要となる言い回しをBSDライセンスから削除して単純化したISCライセンスを新規コードに適用することを基本としているが、MITおよびBSDライセンスも許容している。広く使われているGNU General Public Licenseは、それらに比べると制限が厳しすぎると見なされている。不適切と見なされたライセンスで提供されているコードは、現在では基本システムには追加しない方針となっている。既存コードでそのようなライセンスで提供されているものは、可能な限り置換したりライセンスを変更しているが、適当な代替物がない場合や新たな開発に時間がかかる場合はそのままとなっている。ライセンス問題から開発したものとしてOpenSSHがある。元々の SSHスイートをベースとしてOpenBSDチームが開発したもので、OpenBSD 2.6で最初に登場し、今では最も広く使われているSSHの実装になっており、様々なOS上で利用可能である。同様なライセンス問題はIPFilterにもあり、その代替物としてPFパケットフィルタを開発した。OpenBSD 3.0で最初に登場し、現在ではDragonFly BSD、NetBSD、FreeBSD でも使える。最近ではGPLでライセンスされたdiff、grep、gzip、pkg-configなどのツールをBSDライセンスの代替物で置き換えている。また、新プロジェクトとしてOpenBGPD、OpenNTPD、OpenOSPFD、OpenSMTPDなども立ち上げている。2007年9月、OpenBSDチームはGNUコンパイラコレクション (GCC) を置き換える作業に乗りだし、手始めにAnders MagnussonによるBSDライセンスのPortable C Compiler (PCC) を導入した。
2001年6月、Darren Reedがライセンスの文言を変えたことで懸念が生じ、OpenBSDの全Portsとソースツリーについての体系的なライセンスの監査が行われた。システム全体で100以上のファイルのコードについて、ライセンスが不明であるか、ライセンスに反した使い方をしていることが判明した。全てのライセンスを適切に遵守することを保証するため、それぞれの著作権者に連絡をとろうと試みた。結果として一部のコードは削除され、多くは置き換えられた。他に、ゼロックスが研究用途にのみライセンスしていたマルチキャストルーティングツール mrinfo と map-mbone などがあったが、ライセンスの変更を著作権者が受け入れたため、そのままOpenBSDで使うことができるようになった。この監査作業で削除されたソフトウェアとして、ダニエル・バーンスタインの作った全ソフトウェアがある。このときバーンスタインは、彼のコードの修正版を再配布する前に彼の承認を得ることを要求していたが、OpenBSDチームはそのための時間がないとしてその要求を退けたためである。これに対して、バーンスタインはいわれなく削除されたとして憤慨した。彼はもっとフリーでないライセンスで提供されているウェブブラウザNetscapeを引き合いに出し、彼のソフトウェアを削除しておいてNetscapeをそのままにしておくのは偽善だとOpenBSD開発者らを非難した。OpenBSDプロジェクトのスタンスは、Netscapeはオープンソースではないが、そのライセンス条件はプロジェクトの方針に適合しているというものだった。彼らは、派生物を制御しようとするバーンスタインの要求を受け入れると多大な労力が付随して必要になるため、削除が最も適切な対応だったとしている。
OpenBSDを始めた直後、テオ・デ・ラートはSecure Networks, Inc. (SNI) というソフトウェア企業からの接触を受けた。SNIは「ネットワークセキュリティ監査ツール」Ballista(SNIがマカフィーに買収された後にはCybercop Scannerと改称)を開発しており、それはソフトウェアのセキュリティ上の欠陥を見つけ出し利用できるか確認するというものだった。これはテオ自身のセキュリティへの関心と共通していたので、両者は協力することに合意し、その関係はOpenBSD 2.3のリリースまで続き、プロジェクトの方向性に影響を与えた。OpenBSDの開発者は、容易さや性能や機能を犠牲にしてでも、正しく適切でセキュアな方法を選択しようとする。OpenBSDの中のバグは見つかったとしてもセキュリティホールとして利用しづらいものになっていき、SNIはOpenBSDを使った確認が困難になってきた。数年の協力の後、両者は目標としていたレベルに到達したと判断し、協力関係を解消した。
2002年6月まで、OpenBSDは次のようなスローガンをウェブサイトに掲げていた。
2002年6月、Internet Security Systems の Mark Dowd はチャレンジ-レスポンス型認証を実装したOpenSSHのコードにバグを見つけた。このセキュリティホールは、OpenBSDのデフォルトのインストールでも利用でき、攻撃者がリモートからのアクセスでroot特権を得ることができる。これはOpenBSDだけの問題ではなく、当時OpenSSHを利用していた他のOSにとっても大きな問題だった。このため、OpenBSDのウェブサイトでもスローガンを次のように変更せざるを得なくなった。
しばらくはこのスローガンで推移したが、2007年3月13日、Core Security Technologies の Alfredo Ortega ネットワーク関連の脆弱性を発見した。スローガンは次のように変更された。
このスローガンについては、OpenBSDのデフォルトのインストールではほとんど何もできないし、リリースに含まれているソフトウェアには他にもセキュリティホールが見つかったものがあると批判されている。しかしプロジェクト側は、デフォルトのインストールであることを強調しているのだから間違いではないとしている。OpenBSDの基本的考え方として、システムをシンプルでクリーンでsecure by defaultに保つという方向性がある。例えばOpenBSDの最小のデフォルト構成では、ごく一部のサービスしか有効にしない。このプロジェクトはまた、セキュリティシステムの重要な要素とされているオープンソースとコード監査手法を使っている。
OpenBSDにはセキュリティ強化のための設計変更がいくつも加えられている。例えば、APIとツールチェーンの変更としては、arc4random、issetugid、strlcat、strlcpy、strtonumといった関数の修正がある。他にも静的境界チェック機構、不正アクセスからの保護のためのメモリ保護技法として、ProPolice、StackGhost、W^Xによるページ保護機能、mallocの修正などがある。また、暗号およびランダム化機能として、プロトコルスタックの強化やパスワード暗号化へのBlowfish暗号の追加などがある。
特権昇格を可能にするような設定ミスや脆弱性の危険を低減させるため、一部のプログラムでは特権分離、特権放棄、chrootの使用といった手法を採用している。このうち特権分離はOpenBSDでいち早く採用した技法で、最小特権の原則に基づいてプログラムを複数の部分に分け、一部にだけ特権の必要な操作を受け持たせて、他の大部分は特権なしで実行するという技法である。特権放棄も同様の技法で、必要なときだけ特権を得て操作を行い、その操作が終わったら特権を放棄するという技法である。chrootを使った技法は、アプリケーションがの一部だけを使って動作するようにし、個人的なファイルやシステムファイルのある部分にアクセスできないようにする。開発者らは一般的なアプリケーションのOpenBSD版にこのような技法を適用しており、例えばtcpdumpやApache Webサーバなどがそうなっている(Apacheについてはバージョン2.xではライセンス問題があるため、1.3.29に巨大なパッチをあてている)。なお、OpenBSD6.0ではhttpdとしてApacheは実装されなくなり、nginxが採用された。
プロジェクトは問題に対して継続的にコード監査する方針を採用しており、開発者Marc Epsieはこの作業を「特定のバグを見つけ出すというよりもプロセス自体への問いかけともいうべきもので…決して終わらない」と評した。彼はバグが見つかったときのいくつかの典型的工程を示しているが、その中には、同じまたは類似の問題がないかソースツリー全体を調査すること、「ドキュメンテーションを改正すべきかどうかを見つけ出すこと」、「この問題について警告を表示するようコンパイラを強化できないか」を調査すること、などが含まれる。標準の字下げスタイルはKernel Normal Formだが、これはコードの保守を容易にするための規定である。そのためコードをOSのベースに組み込む際には必ず守る必要がある。既存のコードもスタイルの要求仕様に合うように適宜書き換えられている。
Linuxカーネルの創始者であるリーナス・トーバルズはこれについて、開発というものは大きな問題に対処することに注力すべきで、バグはセキュリティ関連以外にも山ほどあるのだから、セキュリティ問題だけに注力すべきでないと述べている(「全ての平凡なバグは、単にそれらが数が多いというだけでも、より重要である」)。2008年7月15日、彼はOpenBSDの方針を批判し「彼らはセキュリティに専念することを大々的に宣言することで、他のことは彼らにとって重要でないと認めているようなものだ」と述べた。これに対してOpenBSDの開発者Marc Espieは「これは全くの誤解だ…(通常のバグ修正は)OpenBSDプロジェクトで人々が常にやっていることそのものだ」と応答した。開発者Artur Grabowskiも驚きを表明し「この中で最もおかしな部分は…(トーバルズが)言っていることが我々の言っていることと同じだという点だ」と述べた。
暗号を組み込みファイアウォールスイートPFを備えるといったOpenBSDのセキュリティ強化により、セキュリティ関連での利用に適しており、ファイアウォール、侵入検知システム、VPNゲートウェイなどで特に利用されている。また、DoS攻撃やクラッキングへの耐性が必要なサーバでもよく使われており、spamdデーモンが含まれていることから電子メールフィルタリング用途にも使われることがある。
OpenBSDに基づいたプロプライエタリシステムもいくつかの業者が製品化している。例えば、Calyptix Security、GeNUA mbH、RTMX Inc、.vantronix GmbHなどがある。GeNUAは、i386プラットフォームでのSMP機能の開発に寄与し、RTMXはシステムをPOSIX準拠に近づけるためのパッチを送り、.vantronixはネットワークや負荷分散機能の追加に寄与した。OpenBSDのシステムツールのコードの多くは、マイクロソフトのServices for UNIXにも使われている(元々は4.4BSD-LiteをベースとしたUnix系機能をWindowsに提供する拡張)。Core Force はWindows向けのセキュリティ製品だが、OpenBSDのPFファイアウォールをベースにしている。組み込みシステム関係でOpenBSDを一部に利用しているプロジェクトとして、OpenSoekris、flashdist、flashrdなどがある。
OpenBSDにはX Window Systemが含まれている。そのためデスクトップあるいはワークステーションとしても利用でき、様々なデスクトップ環境やウィンドウマネージャを利用できる。Portsツリーにはデスクトップ用の各種ツールが含まれており、デスクトップ環境としてはLumina、GNOME、KDE、Xfce、ウェブブラウザとしてはKonqueror、Mozilla Firefox、Opera、マルチメディア関連ではMPlayer、VLCメディアプレーヤー、xineなどがある。互換レイヤーも利用可能で、Linux、FreeBSD、SunOS、HP-UX などの他のOS向けにコンパイルされたバイナリを実行できる。
OpenBSDは性能やユーザビリティの面で批判されることがある。Felix von Leitnerの性能/スケーラビリティのテストによれば、他のOSに比べて性能が低い。これに対してOpenBSD関係者はvon Leitnerの客観性と技法を批判しつつ、性能は確かに考慮に値するが、セキュリティの良さと正しい設計によって正当化されるとし、開発者Nick Hollandは「それは結局のところ、何を重要と考えるかに帰着する」とコメントした。また、OpenBSDはFreeBSDやLinuxに比べるとプロジェクトの規模が小さく、開発者の時間は性能の最適化よりもセキュリティ強化に費やされているように見える。ユーザビリティの批判としては、OpenBSDにはユーザーフレンドリーな設定ツールがない点、デフォルトのインストールがほぼ裸状態である点、インストーラが「簡素」で「威嚇的」な点を挙げることがある。これに対する反論も性能の場合とほぼ同じで、簡潔性、信頼性、セキュリティを重視した結果だという。あるレビューでは「極めてセキュアなOSを動作させることは、ちょっとした仕事と言えるかもしれない」と評している。
OpenBSDは様々な方法で無料で入手可能である。ソースは匿名CVSまたはCVSupで入手でき、バイナリ版リリースや開発スナップショットはまたはHTTPでダウンロード可能である。CD-ROMのパッケージ版はわずかな代金でオンラインで注文でき、おまけとしてステッカーやリリースのテーマ曲が付いてくる。その収入やアート作品の代価や寄付金でプロジェクトが運営されており、ハードウェアなどのサイト運営費用を賄っている。OpenBSD 4.2までは、完全版のCD-ROMセットの売り上げを確保するため、小さなインストール用ISOイメージしかダウンロードできないようにしていた。OpenBSD 4.2から、完全版のISOイメージがダウンロードできるようになった。
他のいくつかのオペレーティングシステムと同様、OpenBSDではプログラムのインストールと管理を容易にするためにPortsとパッケージシステムを使っており、それらはOS本体の一部ではない。元々はFreeBSDのPortsツリーに基づいていたが、現在のシステムは全く異なる。さらに3.6のリリースで大きな変更が加えられ、特にパッケージツールをMarc EspieがPerlで書いた高機能なツールに置き換えた。FreeBSDとは対照的に、OpenBSDのPortsシステムは製品版のパッケージを生成することを意図している。Portをインストールするとパッケージが生成され、パッケージツールを使ってそれをインストールすることになる。リリースの度にOpenBSDチームがまとめてパッケージを作り、ダウンロード用に提供している。他のBSDの子孫と比較してユニークな点として、PortsとOS本体が各バージョンで共に開発されている点が挙げられる。すなわち、例えば3.7でリリースされたPortsやパッケージは3.6で使うのには適していない(逆も同様)。このポリシーによって開発プロセスの安定性が確保されているが、OpenBSDの最新リリースのPortsにあるソフトウェアは、そのソフトウェアの原作者の最新バージョンより若干遅れることがある。
OpenBSD 2.7がリリースされたころ、それまでのBSDデーモンに代わってオリジナルのマスコット Puffy を登場させた。これはフグ (pufferfish) とされている。実際のフグの多くはトゲがなく、Puffyの絵はどちらかといえばハリセンボンに近い。これは、OpenSSHがBlowfish(フグの意)暗号を使っていることと、ハリセンボンのトゲが外敵を防ぐイメージを表しているという。Puffyは OpenBSD 2.6 で最初に登場し、その後Tシャツやポスターに様々な姿で登場した。例えば、Puffiana Jonesはハッカー学者にして冒険家であり、Lost RAIDを追い求めている。Puffathyはアルバータの少女で、Taiwanと共に冒険する。Puff Daddy 有名なラッパーであり、政治的偶像である。
OpenBSDは、リリースごとに覚えやすいテーマ曲やコミカルなアート作品を生み出してきたことでも有名になった。初期のOpenBSDのリリースには統一感のあるプロモーション用素材はなかったが、OpenBSD 3.0のCD-ROM版以降、テーマ曲、ポスター、Tシャツなどをリリースごとに統一的に生み出しており、時にはカナダの音楽グループPlaid Tongued DevilsのTy Semakaが協力している。元々は単にユーモアを加えるだけの軽い意図だったが、コンセプトが成長するに従いそれらがOpenBSDの一部となり、パロディの形でプロジェクトの理念を表すようになっていった。例えば、OpenBSD 3.8 のテーマは Hackers of the Lost RAID、すなわちインディアナ・ジョーンズのパロディであり、新RAIDツールがリリースに加わったことと連携している。OpenBSD 3.7のテーマはThe Wizard of OSで、ピンク・フロイドの作品や『オズの魔法使』のパロディであり、無線通信関連のプロジェクトと連携している。OpenBSD 3.3のテーマPuff the Barbarianは80年代のロックや英雄コナンのパロディを含み、オープンドキュメンテーションを示唆している。