2011-01-30 86 views
1

我正在编写一个可通过HTTPS与服务器应用程序进行通信的Android应用程序。在服务器端,我必须绝对确信Android应用程序的完整性。这意味着服务器应用程序需要确保它与我开发的Android应用程序进行通信,而不是重写(例如,在反编译原始应用程序或对设备进行了root化之后)。Android:在服务器端验证应用程序的完整性

有没有可能确保?也许有apk文件签名的可能性?

任何提示表示赞赏。

问候, 彼得

回答

4

没办法。无论是用户手中的东西,都不是你的。即使你以某种方式设法将APK传输到服务器进行验证,也不会阻止被黑客程序将原始副本发送到服务器。

1

为了验证您的软件正在运行,客户端设备需要能够提供远程证明服务,这是TPM世界中众多缩略词之一。我发现有人一直致力于提供TPM服务,包括IBM的IMA,这几乎足以满足您的需求。

详情在这里:http://www.vogue-project.de/cms/upload/vogueSoftware/Manual.pdfGoogle Quickview)。

当然,这是仿效的TPM,并且需要修补Android内核。但是也许有不同的制造商会愿意为您制造TPM硬件的模型?

4

您正在试图解决一个已知问题:

  1. 你永远不能信任一个开放的设备上的应用(手机,台式电脑)。为了信任它,它应该是防篡改的。这种设备的一个例子是智能卡。移动设备当然不是。

  2. 您不应将数据发送到用户不应该看到的设备。这意味着所有的业务逻辑必须在服务器上完成。

  3. 所有到服务器的请求都应使用用户的凭证(用户名/密码)进行认证,并通过安全协议(HTTPS/SSL)进行认证。