OpenBSD OSには非常に興味があります。現在の私よりも、セキュリティをより真剣に考えるオプションのように思えます。しかし、私がそれについて読んでいたとき、OpenBSDがすべてであると主張しているとしても、クローズドソースのBIOS /独自のハードウェアでOSを実行している場合、そのすべてのセキュリティとオープン性がどのように関係するのかと思いました。
私はOpen BIOS、コアブート、Librebootを知っていますが、OpenBSDのようなセキュリティ重視のシステムがオープンファームウェアの使用についてそれほど重要なことをしないのはなぜでしょうか。そもそもクローズドファームウェアを使ってオープンセキュリティの目的を打ち負かしてみませんか?
歴史的に、オープンソースの動きはsecurityについてではなく、freedomについてです。基本的に、Richard Stallmanは、ドライバーソースが利用できなかったため、プリンターをいじることができなかったことに非常にがっかりしました。
「安全」であるというOpenBSDのスタンスは、オープンソースであることに由来するものではありませんが、セキュリティに関して適切に行動することを公約し、誓約しました(NetBSDの一部の開発者はプログラミングよりもはるかに優れていたため、歴史的にはOpenBSDが誕生しました。人間と人間の平和的な関係を管理することで)。
セキュリティとオープンソースの関連は、最近のことです。実際、最初から、それは不完全な概念であると説明されていました(Ken Thompsonの有名な 信頼を信頼することに関する反射 を参照)。議論の1つの要素は Linusの法則 です。
十分な眼球があれば、すべてのバグは浅い
中心的な考え方は、十分な数のレビュー担当者がいるとバグが見つかるということであり、これはセキュリティ関連のバグにまで及びます。ただし、これはレビュアーが人いることを前提としています。オープンソースソフトウェアは外部レビューを容易にしますが、それは外部レビューが実際に行われることを意味するものではありません。最後に既存のソースコードを確認したのはいつですか。
適例:OpenSSL。コードベースにさらに別の脆弱性が発見された後、 LibreSSL と呼ばれるフォークが作成され、コードベースにいくつかの深刻な問題が見つかった明示的なレビュー作業が開始されました。これらの問題は、Linuxエコシステムで最も重要なセキュリティ関連ライブラリの1つと言えるライブラリの真ん中に、何年もの間存在していました。したがって、これはオープンソースでしたが、適切な脆弱性検出を実現するには(まったく)十分ではありませんでした。
もちろんオープンソースはセキュリティに役立ちますが、期待できるほどではありません。
オープンソースが実際にもたらすものは、バックドアを積極的に設置したい人々にとって、はるかに大きなリスクです。レビューアにとっては無害に見えても悪いことをするコードを作るのは難しいです(そのようなコードには コンテスト があります)。
誰でも[〜#〜] can [〜#〜]オープンソースのソフトウェア/ハードウェアを見るが、それは「誰でも」が保証するわけではない[〜#〜] 〜]見てください。さらに、彼らがそれを見ても、それが彼らが脆弱性であるかもしれないと彼らが見つけた何かを明らかにするという意味でもありません。人々はオープンソースについてあまりにも多くを想定しており、人々が信じている誤りの1つは、多くの人々が何かを見ることができれば、それは突然安全でより安全になるということです。これは明らかに真実ではありません。製品に多くの目を向けることができるのは素晴らしいことですが、それらの目の倫理と道徳は、彼らの技術的能力と同様に私にとって関心事です。
そうは言っても、その背後にある概念が適切に実装されている場合、オープンソースには多くの利点があります。
また、クローズドソースは自動的に=安全性が低下/安全ではなくなります。
しかし、あなたの質問に直接答えるためにいいえ、ハードウェア自体が非常に安全なコードを持っている可能性があるため、クローズドソースハードウェア上で実行することにより、OpenBSDのようなセキュリティに関連する既知のOSを使用する目的を自動的に無効にすることはありません。 /その背後にあるファームウェアは、開いているものと同じだけです。
「オープンソース==安全」という議論は別として、この質問を「BIOS /ファームウェアが安全であることが保証されていないのに、なぜ安全なOSを実行するのか」と考えることもできます。
攻撃者が窓を壊すことができるのに、なぜわざわざ正面玄関をロックするのですか?
完全に安全なシステムを作ることは決してありません。あなたができることは、攻撃者が悪用しやすい部分を確実に保護することに取り組むことです。ファームウェアを悪用することははるかに多くの作業であり、特定のモデルのハードウェアをターゲットとすることに限定されます。一方、OSのバグは悪用しやすく、より大きなターゲットベースに影響を与えます。
ですから、理想的には両方が必要ですが、1つだけでは意味がありません。
オープンソース(フリー/ライブラリ)ソフトウェアは、セキュリティを(主に)考慮していません。そのより重要な側面の1つは信頼です:何が実行されているかを確認できます。悪意のあるものを隠すことははるかに困難です。一部の人々はまた、より多くの人々がコードを読むことになるかもしれないと主張するかもしれません。これについては、Tom Leekの回答ですでに詳しく説明されています。あなたの質問はなぜオープンソースソフトウェアがより安全であるのかではなく、ファームウェアがクローズドソースである場合に何も気にしないので、私はこの回答でこれ以上の議論の余地のあるトピックには入りません。
オープンソースソフトウェアも必ずしも安全ではないという事実は別として、信頼されていないファームウェアで信頼されたコードを実行すると、コードの実行が信頼されなくなりますか?確かに!しかし、攻撃ベクトルは潜在的に小さくなります。コンピュータのオペレーティングシステムやアプリケーションソフトウェアにアクセスするよりも、デバイスのファームウェアインターフェイスにアクセスする方がはるかに困難です。インターネットでサービスを提供している場合もあります(見知らぬ人を完了するための他の多くのインターフェイス)。完全なセキュリティはありませんが、所定の予算内でリスクを最小限に抑えることができます。
クローズドソース(UEFI/BIOS)ファームウェアをオープンソースソフトウェアで置き換えることができます:コアブートは、一部のオープンファームウェアを実装する優れた例です製品。しかし、UEFI/BIOSは唯一のファームウェアではありません:Intelの管理エンジンなどのBLOBが必要な場合があります。グラフィックスやネットワークカードなどのハードウェアデバイスにはファームウェアがあり、ハードディスクには、マイクロコードもCPUにロードされています。そして、それらのすべては、多かれ少なかれ、メモリやストレージを任意に制御できます。最後に、プレーンなハードウェアに悪意のある回路を実装している可能性のあるCPUベンダーを不信に思うかもしれません。
ある時点で停止し、ベンダーを信頼する必要があります。ハードウェアに向かってスタックを下るほどコストが大幅に増加するためです。最終的に複雑なCPU設計を検証し、自分でCPUを製造する機能はありますか?
Chaos Communicaiton Congress 2015(32C3)では、 (合理的に)信頼できるx86ラップトップに向けて を取得する方法についての素晴らしい講演がありましたトピックの要約を提供します。
完全なセキュリティなどはありませんが、セキュリティを破ることを難しくすることができます。 BIOS、UEFI、Intel SME、ネットワークまたはグラフィックカードのBIOS、CPUマイクロコード、CPUの設計不良からシステムを侵害することは可能ですが、これはユーザー空間プログラムのバグを使用するよりもかなり困難です。またはOSカーネル。したがって、OpenBSDの人たちは、彼らが解決することができ、それが本当に役立つ問題に関心を持っています。これは、他の問題を認識していないという意味ではありません。
考慮すべき深いレベルは常にあり、ユーザーは停止する場所を選択する必要があります。
「本当に安全」な唯一の方法は、マシン内のすべてのチップの正確な設計を行うことであり、物理チップがその正確な設計であることを確認するいくつかの方法ですが、Intel/AMDは決してそれを提供しません。信頼できないブロックがあります。
ファームウェアは通常、ハードウェアに組み込まれており、ほとんどの状況では、ハードウェアを信頼せざるを得ません(より良い代替手段がないため)。つまり、ファームウェアを信頼することになります。
これは良いことではありません。InfoSecには信頼はありません。ただし、ハードウェアを信頼している場合は、ファームウェアを信頼しなくてもあまり利益は得られません。このテーマについて自分を怖がらせたい場合は、Ralf Weinmannがすべての電話に搭載されているが誰も考えていないベースバンドソフトウェアについて話すのを見てください: https://www.youtube.com/watch?v=fQqv0v14KKY
言ったように、オープンソースはセキュリティに匹敵しません。オープンソースは非常に透明性が高く、レビューに役立ちますが、レビューが完了することを前提としています。また、あなたの興味を考慮してレビューが行われることを前提としています。信頼できるレベルにレビューされていますか。
多くの政府機関のラボでは、オープンソースコードは実際には信頼できないです。彼らは商用のクローズドソースコードをより信頼しています。多くの理由がありますが、ここで特に重要なのは、商用のクローズドソースコードの背後に商用の企業があるということです。彼らが対処したい特定のセキュリティ上の懸念がある場合、レビューを行うためにあなた自身の専門家を雇うよりも、会社と協力して懸念を解決する方が簡単です。一方、オープンソース製品を作成している会社はないため、特定の問題を調べるためにオープンソースコードを検討しているレビュアーの集団を説得することは非常に難しい場合があります。彼らは、敵が任意のユーザーをターゲットにするのではなく、意図的にthemをターゲットとするバックドアを作成する場合、オープンソースに侵入するのがはるかに簡単であり、頻繁にレビューに巻き込まれることはないことを発見しました。オープンソースをプログラマーが自由な時間に書いているプログラマーよりも、バックドアが顧客を傷つけることを許すことで、企業が失うものははるかに多くあります。
ファームウェアを信頼できない場合でも、OS(およびアプリケーション)を信頼できることで、システムに対する全体的な信頼が高まります。
また、ファームウェアはめったに(もしあれば)システムの起動以外に使用されることはなく、システムが起動して実行されると、脆弱性やバックドアがOSに影響を与える可能性はほとんどありません。
完璧を善の敵にしてはならないことを思い出させてください。
はい、OpenBSDはクローズドソースのファームウェアで実行されるため、危険にさらされています。ここにはちょっとした問題点があります。クローズドソースのハードウェアプラットフォームは、オープンマーケットで市販されているものの大部分を占めています。したがって、他の人にソフトウェア/サービスを利用してもらいたい場合は、そのファームウェアの一部で実行する必要があります。
セキュリティの観点からは、OpenBSDソフトウェアを作成して実行することにより、ソフトウェアのセキュリティに関する多くの問題を修正できます。ファームウェアに存在するエクスプロイトは、通常、少数の選ばれたグループによって行われます(ほとんどのファームウェア攻撃は、より専門的です)。
オープンソースのオペレーティングシステムを考えると、オープンソースのハードウェアグループは、既知のソフトウェアベースから始めることができます。大きな資本基盤がなければ、両方を同時に構築することは禁止されています(ほとんどの場合、OpenBSDが作成するソフトウェアの基盤はほとんどありません)。
良い手頃な価格オープンソースハードウェアソリューションが存在するまで、人々がオープンソースハードウェアソリューションを使用していないと不平を言うと、雨が降っているようです。
BIOSソフトウェアの最近の複雑さ(つまり、攻撃に対して脆弱であること)は、フィールドの歴史に関連する新しい開発であることを覚えておいてください。このため、BIOSおよびファームウェアソフトウェアに対する包括的な脅威評価はほとんどありません。安全な状況を実現するには、オープンソースかクローズドソースかに関係なく、安全なファームウェアと安全なOSの両方を使用する必要があります。安全なクローズドソースBIOSと安全なオープンソースOSを使用することは、完全に妥当なオプションです。