バイナリ・ブロブ

バイナリ・ブロブ(binary blob)とは、自由ソフトウェアコミュニティにおいて自由またはオープンソース（FOSS）なオペレーティングシステムのカーネルにロードされるオブジェクトファイルについて、公開されかつ利用可能なソースコードが存在しない場合のものを指す用語である。この用語は、通常、カーネルとは無関係に動作するコードに対しては適用されない。そのような例は例えばBIOSコード(含むとする意見もある)、ファームウェアイメージ、ユーザー空間プログラムである（詳しくはプロプライエタリソフトウェアという記事を参照）。
コンピュータハードウェアベンダーが製品の完全な技術文書を提供することで、オペレーティングシステム開発者はオペレーティングシステムのカーネルの一部であるハードウェアデバイスドライバを作成することができる。しかしながら、NVIDIAのような数社のベンダーはいくつかの製品において完全な文書を提供しておらず、その代わりバイナリのみのドライバ(バイナリ・ブロブ)を提供することで済ませてしまっている（詳細は英語版ウィキペディアの記事を参照）。このもっとも一般的な実例として挙げられるデバイスドライバは、描画高速化用ドライバ（またはGPUドライバ）、ネットワークデバイスドライバ（ネットワーク・インタフェース・コントローラ、Network interface controller, NIC）そしてRAIDコントローラドライバである。

**バイナリ・ブロブの容認/排除**
ハードウェアに関する文書やデバイスドライバのソースコードがハードウェアベンダーから提供されない場合、いくつかのオペレーティングシステムプロジェクト、例えば、NetBSD、FreeBSD、DragonFly BSDそして大半のGNU/Linuxディストリビューションはハードウェアが使用できないことを回避する為や、これらブロブが提供する拡張的機能を手っ取り早く得るためにバイナリ・ブロブを受け入れてしまっている。
OpenBSDプロジェクトは、如何なるバイナリ・ブロブも彼らのソースツリーに受け入れることを認めない有名なポリシーを持っている。バイナリ・ブロブは、未確認、取り返しのつかない潜在的なセキュリティ欠陥を持っているということだけではなく、彼らの作り出したオープンかつ自由なソフトウェアを蚕食する脅威であるとみなしているためである。
DebianプロジェクトはLinuxカーネルに含まれるフリー、非フリー(Debianの用語におけるnon-free)なバイナリ・ブロブをアーカイブに含めている。しかし、Debian社会契約、そしてその一部であるDebianフリーソフトウェアガイドライン(Debian Free Software Guildlines; DFSG)に基づき、明確にnon-freeであると目印をつけてフリーなパッケージアーカイブからは分離している。Debian 6.0 (コードネーム: squeeze)リリースからは標準のカーネルから完全にバイナリ・ブロブを排除したと宣言している。
フリーソフトウェア財団(Free Software Foundation; FSF)はバイナリ・ブロブに対抗する為のキャンペーンを活発に行っている。FSFはOpenBSDのポリシーには欠陥があると見なしており、BSDコミュニティが「ブロブ」を（FSFの観点に基づく）非フリードライバ（non-free drivers）に限定し、非フリーファームウェアを除外している（not non-free firmware）点をその理由として挙げている。

**バイナリ・ブロブの問題**
バイナリ・ブロブの引き起こす問題はいくつかある:- ユーザーはソフトウェアの改変ならびに改変版の配布を一切許されない。- ブロブは移植性が全くなく、概してわずかなハードウェアアーキテクチャでしか動作しない制限がある。- ソースコードが無いためドライバが正しく実装されているかのチェックができない。- コードに対しユーザーやサードパーティーによるセキュリティ監査ができない。- ユーザーはブロブにバックドアやスパイウェアが仕掛けられていないかチェックできず、ベンダーを信頼するしかない。- バグや脆弱性がたとえ発見されたとしても、オペレーティングシステム開発者は、ドライバを修正できない。- ハードウェアベンダーはいくつかのオペレーティングシステムでは製品をサポートしない、もしくはいつでもドライバのメンテナンスを放棄する決定を下せる。

**ラッパー経由による利用**
他のオペレーティングシステム向けに提供されているバイナリ・ブロブを利用するため、いくつかのプロジェクトは、Driver wrapperを用意している。例えば、Microsoft Windows向けに作成されたネットワークドライバが利用するNDIS APIを実装した、LinuxのNDISWrapper、FreeBSD・NetBSDのProject Evilがそれに当たる。

**機器のファームウェア**
ファームウェア、すなわちいくつかのハードウェアに接続しているオンボードマイクロコントローラが必要とするソフトウェアは、通常バイナリ・ブロブとは見なされない。多くの機器において、ファームウェアはマザーボード上の不揮発性フラッシュメモリ内に保存されている。しかし、ファームウェアのコスト削減と更新を容易にするため、いくつかのデバイスにおいては、SRAMのみ備え、システムに接続されるタイミングで初めてハードディスクなどのデバイスとは別の記憶装置からファームウェアをアップロードするようホストオペレーティングシステムに要求するものがある（このような機器はUSB機器に多い）。オペレーティングシステムドライバにはこのようなかたちで存在するものも多いが、それは単にデバイスの保存用メモリにコピーされるだけで、CPUで実行されない、また未確認のセキュリティ欠陥に対する懸念は幾分少ない。OpenBSDプロジェクトは、バイナリファームウェアイメージは受け入れており、ライセンスで許され得る限り、再配布をおこなっている。

**BIOS**
BIOSは、ブートローダの呼び出しやレガシーなリアルモードアプリケーションをサポートする、多数のPC/AT互換機にとっては極めて重要なコンポーネントである。フリーソフトウェア財団は、corebootのような自由なBIOSファームウェアの開発並びにキャンペーンを展開している。

**脚注**

**注釈**

**出典**

**関連項目**
 ローダブル・カーネル・モジュール- Wireless security- プロプライエタリファームウェア- プロプライエタリソフトウェア- Opaque binary blob- gNewSense- ブロブ/宇宙からの不明物体 - 得体の知れない生物(blob)が登場する映画。

**外部リンク**
  OpenBSD: wpi, A Blob Free Intel PRO/Wireless 3945ABG Driver - OpenBSDプロジェクトは、インテルのバイナリ・ブロブipw3945の代わりにDamien Bergaminiが作成したブロブではないwpi(4)ドライバを採用したというKernelTrapの記事。-  Interview: Jonathan Gray and Damien Bergamini - バイナリ・ブロブに言及するJonathan Gray、Damien Bergaminiのインタビュー。KernelTrap。-  The Black Hat Wireless Exploit Interview, Verbatim - ワシントン・ポストに掲載されたBrian Krebsによる記事。-  A creative example of the value of free drivers - LWN.net-  バイナリ・ブロブの恐怖 - 八田真行 (OSDN Magazine)