4

McAfee Secure Container のようなアプリを作りたいです。コンテナー アプリは、他の (特定の) アプリを起動し、それらに分離された実行環境を提供する必要があります。コンテナー外でデータを共有してはならず、コンテナー内のすべてのアプリはコンテナーのネットワーク接続を使用する必要があります。

前進する方法は何ですか?

4

2 に答える 2

2

私は、そのアプリのすべてのリソースを保護するために、一意の ID (uid ref linux) を持つ独自の dalvik VM 内で各アプリを実行する 1 つのソリューションを知っています。これらのリソースを保護するために、Linux ファイルのアクセス許可を利用します。同じ UID でアプリを実行する唯一の方法は、同じパブリッシャー キーで署名し、この ID をマニフェストで宣言することです。リソースを誰でも読み取り可能にするには、アプリ内でリソースを開くときにこれを明示的に宣言する必要があります。さらに、マニフェストでそのアクセス許可を宣言した場合、アプリは特定のシステム リソースにしかアクセスできません。IO操作などを考えてください。これらのアクセス許可は、ユーザーとインストール時に求められます。

... Androidと呼ばれます:-)

言い換えれば、Android システムによって既に提供されているもの以外に何を検索しますか? セキュリティをお探しなら、Android システム自体はかなり安全だと思います。考えられるいくつかの脅威を次に示します。

考えられる脅威は、システム自体 (アプリではなく) が侵害されている (ルート化されているなど) ことです。その後、すべてのアプリ データがそのシステムで公開されます。その解決策は、データを暗号化することです。ユーザー パスワードからキーを取得し、そのキーを使用してデバイスに保存されている機密データを暗号化する方法の詳細については、Google for Android Derived Keyを参照してください。ここでの主なルールは、本当に必要な場合にのみ機密データを保存し、必要な場合は暗号化することです。また、ECB モードではなく CBC モードを使用し、ソルトと IV を提供してください。

コードが保存されているとは決して考えないでください。たとえそれが難読化されていても。難読化によって、コードを読み取り可能な形式にすることが不可能になるわけではありません。それはそれを難し​​くするだけです。したがって、機密データをコードに保持することは常に悪い考えです。

考えられるもう 1 つの脅威は、ネットワーク トラフィックです。SSL/TLS を使用し、ホスト名を確認します。認証用に生成されたトークンを使用して、ネットワークを通過する資格情報を制限します。ネットワーク経由でデータを暗号化します。今回は動的 IV を使用します。また、入力を検証し、SQL インジェクションに注意してください。

于 2013-09-17T19:31:32.543 に答える