2013-07-15 146 views
3

我想製作一個像McAfee Secure Container這樣的應用程序。容器應用程序應該啓動其他(特定)應用程序併爲它們提供獨立的執行環境。容器外不應該有數據共享,容器內的所有應用程序都應該使用容器的網絡連接。應用程序的安全容器 - Android

什麼是前進的方向?

+0

你有沒有發現這樣的東西? – Slartibartfast

+0

唯一的辦法是可以修改dex代碼.- @Slartibartfast – SohailAziz

+0

對不起,我不明白。你能否用任何相關的鏈接或圖書館回答你自己的問題,或者你能否指出我正確的方向。你會修改哪些dex代碼的一部分,並且會幫助構建一個容器等等。謝謝! – Slartibartfast

回答

2

我知道一個解決方案,它使用唯一的ID(uid ref linux)在其自己的dalvik VM中運行每個應用程序,以保護該應用程序的所有資源。它利用Linux文件權限來保護這些資源。使應用程序以相同UID運行的唯一方法是使用相同的發佈者密鑰對其進行簽名,並在清單中聲明此ID。爲了讓資源具有世界可讀性,您必須在應用程序中打開資源時明確聲明。此外,如果應用程序在清單中聲明該權限,則只能訪問某些系統資源。考慮IO操作等。這些權限將被提示給用戶並安裝時間。

...這就是所謂的Android :-)

或者更多,你搜索比已經由Android系統提供了什麼換句話說?如果你正在尋找安全性,我會說Android系統是非常安全的。 下面列出我能想到的一些威脅。

一個可能的威脅是系統本身(而不是應用程序)受到威脅(根源等)。然後,所有的應用程序數據將在該系統上公開。解決方案是加密您的數據。 Google for Android Derived Key以獲取有關如何從用戶密碼獲取密鑰並使用該密鑰加密存儲在設備上的敏感數據的更多信息。這裏的主要規則是隻存儲敏感數據,如果你真的必須加密的話。另外請確保使用CBC模式,而不是ECB模式,並提供鹽和IV。

永遠不要以爲你的代碼是保存的。即使它被混淆了也不行。混淆並不能使代碼以可讀格式獲取。這隻會讓它更難。因此,在代碼中保留敏感數據總是一個糟糕的主意。

我想到的另一個可能的威脅是網絡流量。使用SSL/TLS並驗證主機名稱。通過使用生成的令牌進行身份驗證,限制通過網絡傳輸的憑據。通過網絡加密數據,這次使用動態IV。還驗證輸入並注意SQL注入。