Google许可服务 - 了解这一概念

时间:2011-09-02 14:34:12

标签: android android-lvl

我不了解Google许可服务的概念

方案: 用户A在设备X上购买应用程序。 用户A然后通过他的其他设备Y访问Android市场以安装应用程序,并且他不必再付费,因为他在两个设备上使用相同的帐户。

应用程序发出许可证检查请求,其中包括设备特定数据或安装期间生成并存储在设备上的随机数据。

据我所知,设备X和Y上的额外数据会有所不同,因此许可检查请求对于同一用户和应用程序是不同的,但仍被识别为有效。

从Android市场下载期间,每个用户/应用/设备上的额外请求数据是否也存储在许可服务器上?

用户A无法将应用程序从设备X复制到设备Y,许可证检查会失败,因为从Android市场安装应用程序时,该设备或安装特定数据仅存储在服务器上?

1 个答案:

答案 0 :(得分:0)

某些信息会在本地保存。例如:ServerManagedPolicy将最后一次响应,有效时间戳,重试次数,最大重试次数和重试次数保存为本地设备数据。

特别是因为本地存储了最后一个响应,建议您对本地数据进行模糊处理(否则,一个恶意用户可以输入自己的本地数据,表明许可证有效),AESObfuscator类提供为:

  

使用AES加密数据的混淆器。

构建AESObfuscator时,您需要提供byte[] salt, String applicationId, String deviceIdPBEKeySpec的密码基于applicationIddeviceId(您可以在提供的源代码中看到)。

com.example.android.market.licensing.MainActivity中的评论表明,您Secure.ANDROID_ID可以提供的不只是deviceId。您需要多大程度的安全取决于您自己的判断 - 它可能就像在您的应用程序(new String(byte[]{(byte) 75, (byte) 12}) + Secure.ANDROID_ID)或其他加密方案(其讨论可能更适合加密论坛)中硬编码值一样简单。