web-dev-qa-db-ja.com

著者が主張することだけをソフトウェアの一部として知るにはどうすればよいですか?

プログラマーやコンピューターの専門家でなくても、特定のプログラムや一般的なソフトウェアに、プライバシーとセキュリティを損なう不要な機能が隠されていないかどうかを確認するにはどうすればよいですか?

91
user3533

一部のソフトウェアは、レストランで提供している食べ物が毒かどうかを知ることができるのと同じ方法で、それが発表するものだけを実行するかどうかを知ることができます。簡単に言えば、そうすることはできませんが、社会はこの問題に対処するためにさまざまなスキームを考え出しました。

  • 友人や批評家の意見を聞いて、特定のレストランの料理の評判が良いかどうかを知ることができます。
  • サンプルを取り、それをラボに送ることができます。ラボは、すべてではないが多くの既知の有毒物質を探します。
  • 彼が料理を準備している間、コックを見守ることができるかどうかをうまく尋ねることができます。
  • 料理人は、顧客が食品の品質に満足していることに既得のビジネス上の関心があり、特に幸せには死んでいないことが含まれます。
  • 社会は中毒者を極度の重症度で処罰し、料理人が知っていると通常想定されます。
  • 心配しすぎると、そこで食べないという極端なオプションが常にあります。

これらはすべて、ソフトウェアの世界に直接置き換えることができます。ソフトウェアの品質とその公開された動作の順守を確認する極端な方法には、非常に高価で退屈なもの Common Criteria のようなものが含まれます。

別の答え:すべてのソフトウェアにバグがあるため、バグがないことを100%保証しますではありませんそれがすることになっていることを正確に行います。 (ちなみに、このアサーションには、車に組み込まれた数十台の小さなコンピューターで実行されるソフトウェアが含まれています。)

166
Tom Leek

少なくとも100%の精度ではできません。プログラマーとして言えば、好きなようにコーディングするのは非常に簡単で、宣伝されているものとは限りません。

ただし、すべての予期しない活動が悪意があるわけではありません。悪意のある活動についてもっと心配していると思います。それでも常に100%検出できるわけではありませんが、希望はあります。

ネットワークトラフィック、ファイルアクティビティなどを監視するソフトウェアを使用して、ソフトウェアが予期しない方法で動作している手がかりを見つけることができます。たとえば、(これは単なる基本的なツールであることはわかっています) Fiddler を使用して、特定のアプリケーションがhttp(s)経由でインターネットにアクセスしているかどうかを確認できます。 (はい、もっと優れたツールがあることは知っています。Fiddlerが最初に思い浮かぶだけです。)Windowsでは、 Process Monitor を使用してさらに洞察を得ることができます。他のプラットフォームにも同様のツールが存在します。

分析を実行するために使用できる他のサービスもいくつかあります。

23
David Stratton

特にソフトウェアが大きく複雑になるにつれて、専門家でさえ答えられなくなります*。その点で、アプリケーションのプライバシーとセキュリティは、 sandbox または Mandatory Access Control メソッドを使用することで最も適切に処理されます。これらの方法の背後にある考え方は、ソフトウェアが実行できることを制御するシステムでソフトウェアが実行され、期待どおりの動作のみを許可するというものです。適切に行われると、可能な接続を制限し、プログラムが予期しないファイルにアクセスしようとした場合に通知を受けることができます。非常に高度な方法を使用して、メモリを監視したり、プロキシサービスを介してネットワークトラフィックを復号化したりできます。

簡単に言うと、実行するすべてのことを理解できない場合、答えは、それが内部で実行するもの(オペレーティングシステム)で実行できるすべてを制限することです。

9
Jeff Ferland

彼の広く知られているACMチューリング賞講演「信頼を信頼することについてのリフレクション」(今ではちょうど約30年前!)で、ケントンプソンは「自分で作成していないコードは信頼できない」と述べています。実際には、商用ソフトウェアは他の商用製品の例外ではありません。市場で良い名前を持っているプロデューサーからのものは、通常、優れている可能性が高いからです。ただし、その絶対的な保証はありません。数十年前、私はウイルスに感染した有名な生産者からディスケットを入手しました。その場合、私は個人的には社内の悪意のある行為ではなかったと考えていますが、社内の一部のコンピュータは外部からウイルスに感染したと考えています。ただし、CEOに知られているかどうかにかかわらず、会社の内部関係者によってソフトウェアにバックドアが導入される可能性を100%除外することは、一般に明らかに不可能です。サイバー戦争が世界中で迫っている今、バックドアは非常に重要な問題である可能性があります。つまり、政府の秘密機関は、何らかの方法で(お金、強制、さらにはマルウェアを介して)通信のセキュリティを確保するのに役立つ特定のソフトウェア(デジタル署名に関連するものなど)に埋め込まれて販売されているバックドアを管理することができます。特定の非友好的または潜在的に非友好的な外国で使用され、即時または適切な後の時点(「時限爆弾」など)でバックドアを悪用して、標的国の重要なインフラストラクチャを破壊するという目標を達成する。etc. Stuxnet、Flame、Gaussは、潜在的な不正行為者の能力を示すいくつかの名前です。

7
Mok-Kong Shen

残念ながらできません...

優れたプログラマーはユーザーからwizardと呼ばれる可能性があるため、優れたトロイの木馬は完全にfake被害者を作るための通常の環境になります静か。

一部のウイルス/トロイの木馬は、被害者のシステムを無害化して、

  • 別のウイルスが彼の仕事を壊さないようにする
  • アンチウイルスが彼を見つけないようにする
  • 被害者に自信を持たせるために、被害者のシステムを正常に機能させる。

だから、できません!!疑わしい場合は相談してください!!!!

1
F. Hauri

それは最終的に信頼に帰着します。ソフトウェアをリリースする会社の評判を信頼していますか。オープンソースの場合、十分な開発者が使用していて、問題が発生した場合にフラグを立てますか。一般的に使用されている製品は、信頼できる場合、広範囲にわたる調査が行われる可能性が高いため、ある程度の強みがあります。あなたが非常に偏執的でない限り、一般にコミュニティが特定のソフトウェアについて何を言っているかを見ることが最善の策ですが、それでも常にバグがあり、それでも常に間違いがあります。

1
AJ Henderson

他の人が指摘したように、知る方法は保証されていません。多くの場合、ベンダーの整合性と評判を信頼する必要があります。信頼できるソースからのみソフトウェアをインストールするなどの安全な慣行に従うことは役立ちますが、実際と同じように、間違った人を信頼する場合もあります。

結局、ある程度のパラノイアを取り入れるべきだと思います。スマートフォンにアプリをインストールする場合は、スマートフォンのOSが個人情報や位置情報などへのアクセスを求めていることを通知するときに、単に受け入れるか「はい」と言ってはいけません。なぜ、そのアクセスが必要なのかを自問してください。アプリケーションが要求しているアクセスが、あなたが期待していることに基づいて正当化されていると感じた場合は、「はい」と言っても大丈夫です。一方で、必要以上に興味がある、または興味のある情報やサービスへのアクセスを要求していると思われる場合は、「はい」と答える前に、少し疑わしく、慎重に検討してください。

0
Tim X