【问题标题】:Android: Verifying the application's integrity on the server sideAndroid:在服务器端验证应用程序的完整性
【发布时间】:2011-01-30 11:48:03
【问题描述】:

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

是否有可能确保这一点?也许apk文件的签名有可能?

感谢任何提示。

问候, 彼得

【问题讨论】:

    标签: android security apk integrity


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        这里有详细信息:http://www.vogue-project.de/cms/upload/vogueSoftware/Manual.pdf (Google Quickview)。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-28
          • 2019-12-27
          相关资源
          最近更新 更多