为Google Android应用程序内购买伪造的签名字符串

时间:2011-08-08 12:18:25

标签: android rsa in-app-purchase signing

我正在验证来自Android inapp购买的已签名字符串,我知道已经编写了一个基于服务器的独立验证,以检查该字符串是否使用我的公钥和JSON响应中发送的私钥进行签名,这很好。在我缺乏知识的情况下,如果人们能够访问我的公钥,那么能够使用私钥对字符串进行签名并向外部服务器发送响应是否成功验证? / p>

我可能遗漏了一些东西,但在我的iPhone应用程序上我联系Apple,他们联系了应用程序,我通过苹果回复联系我的服务器,它联系苹果并独立验证响应,我为我的WP7应用程序做同样的事情PayPal,谷歌,我没有连接谷歌来验证字符串,我只是检查字符串是用我的密钥签名的,这真的够用吗?

由于

1 个答案:

答案 0 :(得分:2)

简而言之,没有。如果你有时间,你可以阅读RSA,但非对称算法的全部要点(你加密/签名的密钥与你解密/验证的密钥不同),实际上是不可能弄清楚另一半关键,如果你只有一个。因此,如果有人拥有您的公钥,您可以非常确定他们无法生成私钥。或者,如果他们只生成新密钥,则在验证签名时,您将收到验证错误。

如果您的随机数是真正随机的并且实际上只使用过一次,它们也无法重播相同的消息,因此您应该相当安全。 (假设没有实施问题)

您应该更担心的是,人们使用字节码修补工具绕过整个验证过程,并从isLicensed()方法返回true。