Linuxで相互信頼できないアプリケーション間のファイルを保護する方法

Linuxで相互信頼できないアプリケーション間のファイルを保護する方法

私はUbuntu Linuxシステムを実行しています。他のベンダー(ChromeやFirefoxなど)で作成したアプリケーションを実行すると、そのすべてのアプリケーションが私のUIDを使用して実行されていることがわかります。ただし、その場合、ファイルシステムで生成されたすべてのファイルも同じuidを持ちます。それでは、Linuxでは、互いに信頼できない2つのアプリケーションがどのように互いにファイルのセキュリティを確保できますか?

  • ACLポリシーを使用するアプリケーションAは、アプリケーションBが(ユーザー、グループ、その他)のユーザー部分を介してAのファイルを読み取ることを許可することができます。
  • アプリケーションは互いにデータを保護するために暗号化を使用する必要がありますか?

ベストアンサー1

文字通りの答えは、あなたのアカウントで実行される信頼できないアプリケーションがないことです。信頼できないアプリケーションを実行するには、別のアカウントまたは仮想マシンで実行してください。

Unix、Windowsなどの一般的なデスクトップオペレーティングシステムと、Android、iOSなどの一般的なモバイルオペレーティングシステムには異なるセキュリティモデルがあります。 Unixは、ユーザーがお互いを信頼しないマルチユーザーオペレーティングシステムです。適用分野信頼できると見なされる:ユーザーのすべてのアプリケーションが同じセキュリティコンテキスト内で実行されます。提供する一方、信頼性は低い。通常、セキュリティ違反が発生した場合に影響を減らすために専用アカウントで実行されます。

Unixセキュリティモデルは、次の2つの主な理由でこのように動作します。

  • 否定的な理由は歴史のためです。 Unixが設計されたとき、アプリケーションは小規模のプログラマーグループから出てきて、ベンダーの評判によって支えられたか、ソースコードとして提供されたか、またはその両方でした。アプリケーションのバックドアを心配する人はほとんどいません。さらに、ネットワークを介して通信するアプリケーションがほとんどないため、脆弱性を引き起こして悪用する機会が比較的少なくなります。したがって、アプリケーションを互いに分離する強力なインセンティブはありません。
  • 肯定的な理由の1つは機能性です。アプリを分離すると、多くのことが不可能になります。各アプリケーションが独自のデータ領域を持つ場合、アプリケーション間でデータを共有することが困難になります。一般的なUnixシステムでは、複数のアプリケーションが同じデータを処理するのが一般的です。 Unixは「アプリケーション」と「オペレーティングシステム」を明確に区別しないので、特にそうです。 Webブラウザはアプリケーションです。ブラウザは独自のディレクトリに制限されているため、ユーザーが選択したディレクトリにファイルをダウンロードすることはできません。これは面倒です。ログイン時にメニューとアイコンを表示するプログラムも同じ基盤を持つアプリケーションです。定義上、すべてのファイルにアクセスする必要があるファイルマネージャの場合も同様です。どこでもスクリプトを実行するシェルや他のインタプリタにも当てはまります。ワードプロセッサで文書を印刷するときは、文書を印刷可能な形式に変換するアプリケーションと、データをプリンタに送信する他のアプリケーションが必要になる場合があります。

今日では、40年前よりも多くのアプリケーション作成者がいますが、アプリケーションはまだ評判の高い指標を持つ信頼できるチャンネルを介してデプロイされています。 (これはWindowsよりもLinux上の方がはるかに事実であり、これはWindows上でウイルスがより一般的な理由の1つです。)バックドアがあることがわかったアプリケーションはすぐにLinuxソフトウェアストアから削除されます。

モバイルオペレーティングシステムは、さまざまな脅威を念頭に置いて設計されています。シングルユーザーシステム用に設計されていますが、アプリケーションは完全に信頼できないソースから提供されています。

アプリケーションの分離がデスクトップUnixシステムに広がり始めました。一部のディストリビューションは、セキュリティフレームワークで特定のプログラムを実行します。鎧を適用またはSELinuxこれにより、アプリケーションが実行できる操作が制限されます。このようなセキュリティ上の制限は、制限されたアプリケーションが特定のディレクトリでファイルを開くのを防ぐなど、意図した目的を妨げる可能性があります。

暗号化はまったく役に立ちません。暗号化はデータのみを保護します。途中で(ウェブ経由)または休んでいる(ディスクに保存)ライブシステムのデータを保護しません。サブシステムAがそのデータを復号化すると、オペレーティングシステムはサブシステムBが復号化されたデータにアクセスするのをブロックします。暗号化されたストレージではありません。オペレーティングシステムはデータを暗号化できますが、記憶媒体が盗まれた場合にのみデータを保護できます。

信頼できないコードを実行したい場合は、最良の方法はそのコードを仮想マシンで実行することです。仮想マシンがアプリケーションに必要なファイルにのみアクセスできるようにします(たとえば、ホームディレクトリを共有しない)。

また、見ることができますモバイルアプリには細かい権限がありますが、デスクトップアプリにはないのはなぜですか?そしてモバイルデバイス用のアプリがデスクトップデバイス用のアプリよりも制限的な理由は何ですか?

おすすめ記事