2

I'm writing an Android app that communicates via HTTPS with a server application. On the server side, I have to be absolutely sure about the Android app's integrity. This means that the server app needs to be sure that it's communicating with the Android app that I developed and not with a re-written one (e.g. after decompiling the original app or after having rooted the device).

Is there a possibility to ensure that? Maybe there is a possibility with the signature of the apk file?

Any hint is appreciated.

Regards, Peter

4

3 回答 3

6

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

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

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

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

于 2011-01-30T17:44:43.620 回答
5

没门。用户手中的任何东西,都不再是你的了。即使您以某种方式设法将 APK 传输到服务器进行验证,也没有什么能阻止被黑客入侵的程序将原始副本发送到服务器。

于 2011-01-30T11:58:32.327 回答
1

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

详情在这里:http ://www.vogue-project.de/cms/upload/vogueSoftware/Manual.pdf (谷歌快速浏览)。

当然,这是模拟TPM,需要修补 Android 内核。但也许各个制造商中的一个愿意为您构建一个包含 TPM 硬件的模型?

于 2011-01-30T12:22:21.397 回答