2014-01-27 184 views
0

我有一個網絡服務,可以進行一些付款操作,所以它非常關鍵。當然它有一個祕密密鑰,不能沒有。在Android中保護密鑰

我假設遲早我的.apk文件將被反編譯,代碼將是可讀的。現在,如果我決定通過調用另一個服務來接收該密鑰,那麼該服務的URL將存儲在我的代碼中,但我只是說它不安全,不能隱藏!

在這種情況下最好的方法是什麼?

+2

爲什麼把密鑰放在應用程序中?據推測,這是一個服務器組件。使用那裏的祕密並將公鑰放入您的應用中。 – 2014-01-27 20:12:09

+0

@Mike W:如果我能理解你,在我的應用程序中放置公鑰不危險嗎?我不需要讓可能的黑客打電話給我的服務並竊取我的內容。 –

+1

我誤解了您使用術語的問題。如果這是您的問題,那麼您需要讓用戶以某種方式進行身份驗證。也許強制登錄一次,並在當時爲每個用戶提供一個唯一的密鑰。一旦唯一密鑰被髮布並存儲在設備上,就不需要登錄。您可能會定期重複此過程,並可能將密鑰綁定到設備特定的ID(IMEI號碼,可能是?) – 2014-01-27 20:44:54

回答

1

我不是安全專家,但我想oAuth將是一個不錯的選擇。 Google等網站使用它進行身份驗證,並且它很安全。用戶需要使用他的憑據登錄,並且應用程序會收到一個oAuth令牌和密碼以進行API調用。

在這種情況下,反編譯應用程序將無助於黑客,因爲他仍然需要用戶憑據。

它需要在服務器端和客戶端進行更改,但我認爲這不是問題,因爲在這種情況下安全性更重要。

+0

謝謝,你是對的。但如果在我的應用程序中沒有登錄,該怎麼辦? –

+1

在這種情況下,它不安全。每個人都可以使用[http://www.wireshark.org/download.html](Wireshark)跟蹤URL調用並進行完全相同的調用。通過使用算法向請求添加一個值,這個值只有幾秒鐘纔有效,但這樣做可能會變得更加困難,但這遠非「安全」。 – fifarunnerr