2013-01-17 45 views
15

像許多人一樣 - 我正在開發一個共享代碼庫的應用程序(Windows應用商店+ Android + MonoTouch + [稍後] WP8)。通過Monodroid開箱即可在Android中獲得安全存儲嗎?

此外,與許多應用程序一樣,我有本地狀態,我需要堅持這個應用程序。

我存儲的一條信息是登錄用戶的身份驗證令牌。在Windows應用商店平臺上,我用令牌的輔助數據(用戶名和發佈日期)的漫遊設置(ApplicationData.Current.RoamingSettings)和PasswordVault作爲實際令牌值的混合來實現此存儲。因此,令牌受OS操作系統級內省的保護,因爲它是由操作系統加密的。

現在我爲我的MonoDroid構建實現了相同的接口,而且我看不到任何由平臺提供的方式來存儲只能由我的應用程序解密的數據 - 就像密碼一樣保管庫可用於商店應用程序。

因此,目前,我只是使用Android.Content.ISharedPreferences接口通過Application.Context.GetSharedPreferences方法讀取和寫入這些值。

所以,我正確的假設平臺(MonoDroid或Android)不提供安全存儲OOB?是在應用程序中實現加密的唯一替代方案 - 這當然需要將加密密鑰烘焙到代碼中?或者我可以獲取用於簽署應用程序的證書並將其用作密鑰?

最終它不是世界的末日,如果我不能加密這些數據,因爲令牌時間限制呢 - 不過這將是很好,如果我能真正做到這一點正確

回答

0

也許這從here引用可以幫助你:

在Android方面OOB未公開API所支持這樣的事情 變得棘手。我相信這是因爲Honeycomb 3.2沒有正式支持OOB綁定的 bluez棧,但Google有一些 類型的編碼實現。我相信這是因爲如果你看看 薑餅源代碼的藍牙適配器和藍牙設備 類可以看到OOB方法,但未通過 記錄的API公開。

這些方法仍然是公開的,所以你可以通過 反射來調用它們。使用反射,你也可以得到所有的方法 在一個類中的簽名。這就是我如何弄清楚我可以使用哪些方法 。

請注意,雖然很多沒有記錄,並且它不是什麼 有些做。重要的要注意的是適配器類中的 readOutOfBandData()和設備類中的setDeviceOutOfandData() 。

+0

哦哎呀! 'OOB'我的意思是「開箱即用」! I.e有一個平臺提供了開箱即用的加密存儲機制:-)。要改變問題標題... –

+0

; o)沒關係,我誤解了。 –

1

你可以用Keychain API(提供API級別14起),並使用從鑰匙扣API證書的數據與Cipher API加密組合使用。

請注意: 根據Android安全性概述文件,有沒有保證,如果該設備是植根: http://source.android.com/tech/security/index.html#rooting-of-devices

+0

是啊,從安全的角度來看,設備的生根可能是頭痛的問題;就像安裝自定義ROM一樣(建立一個用戶數據監聽的自定義ROM相對簡單)。但是,用戶自己承擔這樣的風險(我當然有這個風險!) 這很有趣,我必須看看是否有任何設備特定的證書可以使用。 –

相關問題