如何(加密,技术上)声音是这个软件激活/许可证验证方案?

时间:2013-09-16 16:40:56

标签: android cryptography protocols

我听说今天有人就他们出售的框架进行营销宣传,以防止应用程序盗版(我知道,你做不到)。以下是高级概述:

注册流程:

  • 使用服务器的公钥对手机进行加密:手机的IMEI号码和安装的应用程序的唯一ID(由应用程序开发人员分配)到服务器,即

    Reg_request = Encrypt(Server_PublicKey, (IMEI||AppID))

  • 服务使用解密函数及其自己的私钥解密Reg_request以提取IMEI和AppID

  • 服务然后要求用户付款。付款后,服务会根据serial number
  • 生成激活IMEI||AppID
  • Service然后使用智能手机的公钥加密生成的serial number,然后将其发送给用户。
  • 收到此消息后,应用程序会使用解密功能和存储在智能手机上的私钥对其进行解密,以获取serial number
  • 对于激活,应用程序将IMEI||AppID传递给自己的哈希函数以获取临时验证序列号。
  • 如果此号码与从服务器收到的serial number匹配,则激活成功。

我对加密知之甚少,但这看起来像传统的公钥密码术。这种方法有多健全,或者说攻击者为了打破这种方式有多困难?传统的基于桌面的软件是否使用更复杂的方法?

2 个答案:

答案 0 :(得分:3)

您描述的方案没有什么特别之处,事实上,如果您用HTTPS之类的东西替换所有公钥加密,语义就不会发生变化。

我的猜测是,这是经典案例的一个实例,其中管理人员指示开发人员将加密技术添加到产品中以使其更安全,或者仅仅因为它听起来很酷,但他们都不熟悉加密技术。

答案 1 :(得分:1)

非对称加密在许可证密钥生成方面至少有一个优势。私钥可用于加密许可证数据并生成许可证密钥,而公钥用于验证许可证数据。私钥将保密,仅由许可证生成器或许可证激活服务使用。使用这种方法,为那些试图篡改你的应用程序的人创建“密钥生成器”并不容易。

最后,人们应该明白,创建一个可以完全防止盗版的方案是非常困难的(如果不是不可能的话)。您只能阻止最终用户执行“随意盗版”。