2011-08-08 17 views
2

我在驗證Android Inapp購買的簽名字符串,我知道已經編寫了基於服務器的獨立驗證,以檢查字符串是否使用我的公鑰和私鑰簽名在JSON響應中發送密鑰,這很好。在我的知識缺乏的地方,人們是否有可能獲得我的公鑰,如果他們能夠使用私鑰簽名字符串並向我的外部服務器發送響應,這將成功驗證?僞造Google Android應用內購買的簽名字符串

我可能錯過了一些東西,但在我的iPhone應用程序中,我聯繫Apple,他們聯繫應用程序,我聯繫我的服務器與蘋果響應,它與蘋果聯繫並獨立驗證響應,我也爲我的WP7應用程序與貝寶,谷歌,我不連接到谷歌來驗證字符串,我只是檢查字符串是用我的密鑰簽名,這是否真的夠了?

謝謝

回答

2

總之,沒有。如果你有時間,你可以閱讀RSA,但是非對稱算法的全部點(你加密/簽名的密鑰與你解密/驗證的密鑰不同),這實際上不可能找出另一半的關鍵,如果你只有一個。因此,如果有人擁有您的公鑰,您可以確信他們無法制作私鑰。或者,如果他們只是生成一個新密鑰,那麼當您驗證簽名時,您將收到驗證錯誤。

如果你的隨機數是真正的隨機數,而且只能使用一次,它們也不能重放相同的消息,所以你應該相當安全。 (假設沒有實現問題)

你應該更加擔心的是人們使用字節碼修補工具來繞過整個驗證過程,並從isLicensed()方法返回true。

+0

嗨,感謝你的幫助,讓我有一個全面的瞭解,我會事後閱讀,但最後期限和所有。我認爲就安全性而言,我已經介紹了它。當我檢查字符串服務器端的簽名時,我不提供內容,但授權該設備在以後請求內容。 – Ben