どのデバイスが本来の動作をしているとどうやって知るのでしょうか?たとえば、AndroidはオープンソースOS(現時点ではgoogleライブラリを無視)であり、すべてのパスワードはデバイスにのみ保存されると主張しています。しかし、彼らがサーバーとこのコードはオープンソースバージョンではなく、プリコンパイルされたライブラリにのみ存在します。同じコードが実際の電話とオープンソースバージョンに存在することを確認するにはどうすればよいですか?同じような他のデバイスでも同じですiPhone、ルーター、デスクトップなど.
また、現在ほとんどの製造元では暗号化が有効になっているため、TCP/IPパケットの実際のコンテンツを監視することはできません。
私たちはいつでも既存のOSを削除してオープンソースバージョンをインストールできますが、それがすべてのケースで可能であるとは限りません。
だから私の一般的な質問は、オープンソースバージョンとプリコンパイルされたバイナリに同じコードが存在するかどうかをどのように確認するのですか?私はリバースエンジニアリングを考えることができますが、それはほとんどの人が持っていない素晴らしい知識とスキルを必要とするでしょう。
私の会社では格言があります:
品質保証とは、何かが想定どおりに機能することを確認することです。セキュリティ保証は、それがすることを確認していますonlyそれが想定していること。
残念ながら、あなたの質問は完全なセキュリティ監査または侵入テストにつながると思います。指摘するには、ほとんどの人が持っていない優れた知識とスキルが必要です。
...デバイスが想定されていることを実行していることをどのように知ることができますか
ありません。しかし、この絶対的な確実性の欠如は、ITセキュリティに固有のものではありません。
友達と話していると、彼らが(完全な)真実を語っているのかどうかはわかりません。何かを購入した場合、それが実際にベンダーが主張するすべての品質を備えているかどうかは確かではありません。
しかし、すべてがうまくいくことを盲目的に望んでいるだけではありません。これまでの良い経験と、誰かが嘘を見つけた場合、友情を失うリスクがあるため、友達を信じます。たとえば、信頼できる友人がこれらを推奨する場合や、重要なブランドが嘘をつきすぎるとあまりにも緩すぎる場合があるため、他のベンダーよりもいくつかのベンダーを信頼します。
購入したデバイスについても同じことが言えます。品質に関する多くのうそが最終的に検出されるとすると(組み込みのバックドア、プライバシーの販売など)、主要なブランドは多くを失うため、嘘をつかないように最善を尽くします。彼らの製品の品質への信頼は彼らのビジネスモデルの一部です。これとは対照的に、安価なブランドはあまり緩くありません。したがって、このような安価なブランドの製品には、バグ、ハードおよびソフトウェアの品質の悪さ、さらにはバックドアを見つける可能性が高くなります。
私はリバースエンジニアリングを考えることができますが、それはほとんどの人が持っていない素晴らしい知識とスキルを必要とするでしょう。
主要なブランドの場合、十分なスキルを持つ誰かがDigを深く掘り下げるために、ある程度の余暇がある(またはそのために報酬が支払われる)だけのリスクは通常十分です。そして、主要なブランドは通常、より多くの顧客を抱えており、ビジネスや政府の環境でそのようなデバイスを使用する場合など、そのような分析に時間またはお金を費やすことをいとわない一部の顧客でさえあります。
一方、安価なブランドは露出が少なく、緩すぎないので、気にかけることも少なくなります。彼らはこの限られた露出とリスクをそれ自体のビジネス価値として使用することさえあるかもしれません。彼らはそもそも信用がないか、ほとんどないので、信用を失うことなく、怪しげな企業や組織と簡単に提携できます。これは、たとえば、安価な携帯電話が アドウェアにプリインストールされている または他の [〜#〜] pup [〜#〜] になるという結果になります。
デバイスが想定どおりに動作しているかどうかを相互検証するにはどうすればよいですか?
あなたがすでにあなた自身を発見したように:平均的な人にとって、これは不可能です。そして、専門家であっても、彼らが使用するすべての新しいデバイスを分析することは、非常にコストと時間がかかります。
結局、それはあなたがベンダーに持つことができる信頼に要約されます。そして、友人と同様に、そのような信頼は獲得するのが難しい(そして多分コストがかかる)が、失うのははるかに簡単です。したがって、主要なブランドは、ハード評判を維持しようとするため、デバイスで深刻な問題が発生する可能性は少なくなります。少なくとも、評判があまりない安価なブランドと比較すると、.
実際には、同じコードであることを実際に確認することはできません。
Androidパスワードの1つを送信していることがわかった場合、それが同じではないであることを確認できる可能性があります。元のコードで行うことは想定されていませんでしたが、それらのコンパイル済みコードが公開されたコードと同じであることを確認することは、検証するのが現実的ではありません。
プログラムXのバイナリコードが公開されたソースコードYをコンパイルした結果であることを確認する場合は、自分でビルドする必要があります。
したがって、たとえば、電話メーカーの公式ビルドの代わりに LineageOS をインストールできますが、悪意のあるプログラムをビルドしないように開発者を信頼する必要があるのと同じ要件があります。それが公開されたコードに対応していることを確認するために、あなたはそれを自分でコンパイルする必要があります(それは可能ですが、より多くの作業です)、信頼できるコンパイラを備えた信頼できるマシンで .¹
他のOSやプログラムでも、Windows(ソースがなくても)からLinuxやBSDまで、同じ信頼の問題に直面していることに注意してください。これらの無料の* nixディストリビューションは、一般に、プログラムバイナリが疑わしいソースコードとは異なるディストリビューション(信頼する必要がありますが、信頼する必要のある単一のエンティティです)によってコンパイルされるという問題を回避します。 (例えばGentoo)それを自分で構築するのはユーザーです。
すべてのコンパイルで同じバイナリが生成されるように設計されたプログラムがあります(これは 再現可能なビルド と呼ばれます)。これにより、誰でも結果がコンパイルの結果であることを確認できます。悲しいことに、通常のケースでは、ビルドを再現できず、コンパイラーがすべてのコンパイルでまったく同じバイナリーを生成するように特別な調整が必要です。
次に、公開されたソースコードが悪意のあるものかどうかの分析を開始する必要があります...
¹それでも、これらのバージョンはクローズドドライバーをバイナリーとして使用している場合があります。コンパイル済みのバイナリーが含まれている場合もあります。