2010-11-03 43 views
0

我正在尋找安全地將數據從遠程服務器發送到Android設備的最佳做法。這些數據需要被任何人嗅探線路所保護,我希望HTTPS能夠處理這一點。我真正擔心的是...爲Android開發,安全的數據傳輸最佳做法

數據將被應用程序使用,但是會隱藏用戶的真實內容。把它看作是用戶正在進行測試,並且應用程序已經下載了所有可能的答案(並且知道哪一個是正確的)。顯然,您不希望用戶能夠嗅探流量來發現哪個答案是正確的,您也不希望用戶能夠對應用程序進行反向工程並找到用於解密數據的超級解密密鑰。

這可能是不可能的任務,但是有沒有什麼好的方法可以真正鎖定這類敏感數據?我知道現在沒有什麼是安全的,甚至不是藍光解密密鑰。但也許有人可以指引我走向正確的方向。

回答

3

如果您沒有設備的物理控制,那麼您無法使其100%安全。乾淨利落。

HTTPS將幫助您完成傳輸,但是如果您要將數據保存在本地計算機上(即使是臨時/亂碼格式),遲早有人會嘗試着去處理它。

我建議您向客戶端發送(下一個)問題和可能的答案,然後將選定的答案發送回服務器,並讓服務器決定它是對還是錯。沖洗並重復,直到所有問題都完成,然後顯示最終得分。

+0

這就是我能想到的最好的。但是,如果我真的很偏執,我會在下一組問題中包含合格/不合格(這使得特殊情況下的第一個和最後一個問題),或者如果單獨發送合格/不合格,我可能會填充單個boolaen位1K左右的隨機噪聲,以防止使用者截獲通過/失敗的數據包並取代它們。矯枉過正,但對金融交易來說是否足夠偏執? – Mawg 2010-11-05 00:40:38

0

這確實是一個不可能的任務,以保護設備上存在的信息。 你真正希望做的就是讓它比有人想要打擾更難。

但是,如果您的字面意思是一個測驗,並且不想將答案發送到服務器進行驗證,那麼我發現您可以使用單向哈希函數,從而永遠不會有純文本官員回答目前的電話。相反,用戶提供的答案是通過該函數運行的,並與散列的官方答案進行比較。

這當然會受字典攻擊。如果潛在答案的空間很大,那麼你可以使它在計算上足夠昂貴,手動解決所有問題會更快 - 但是,我的猜測是答案空間不會很大(因爲答案必須是字符的字符確切) - 你甚至可能會說多種選擇。在這種情況下,字典攻擊將會很快,真正的工作是對apk進行逆向工程,足以識別單向散列函數,或者讓apk進入模擬器,輸入可以用編程方式編寫腳本來執行字典攻擊。