首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于java应用程序授权,AES安全吗?

对于java应用程序授权,AES安全吗?
EN

Cryptography用户
提问于 2013-03-05 12:57:07
回答 1查看 4.4K关注 0票数 2

我必须授权一个java应用程序,并希望编写一个快速实现,我想出的方案是:

  1. 应用程序计算一个字符串X,我们假设它是计算机的mac地址、当前日期和其他一些信息的md5和。
  2. 应用程序向用户返回一个字符串Y,等于X的最后16位数。
  3. 用户与软件支持办公室联系,给出Y,办公室使用AES加密Y,并返回一个字符串Z,该字符串等于加密Y的最后16位数
  4. 用户在应用程序中输入Z,这将检查Z是否等于它自己的Z,计算方法与软件支持相同。如果两者是相同的,软件解锁。

现在我想知道两个假设是否合理:

  1. 假设一个破解者知道Y是如何计算的,并且可以计算它自己的软件副本,并使用这个Y向支持中心请求一个Z并解锁他的软件副本。他是否有可能计算出每一个可能的Y,他想要一个匹配的Z来解锁我软件的任何副本?
  2. 因为我的软件在应用程序字节码中包含了加密密钥,所以一个具有足够知识的破解器可以对加密密钥进行反编译,并创建自己的Z来解锁程序(假设我尽力混淆了代码)。一个解决方案是使用公钥密码术,然而,在我看来,这将是无用的,因为如果一个破解者能够解码应用程序的编译后的字节码,他将完全绕过我将提出的任何加密方案,因为最终将始终有一部分代码检查某个条件,并且将该条件设置为true将绕过我将提出的任何加密方案。是真的吗?
EN

回答 1

Cryptography用户

发布于 2013-03-05 15:13:42

  • 在您的软件中嵌入对称(AES)密钥实际上是没有意义的--攻击者可以很容易地提取密钥并生成自己的软件许可证密钥,或者更糟的是,创建一个允许其他用户生成自己的许可证密钥的小程序(裂纹)。
  • 我建议RSA -生成'Z‘(根据您的问题),使用私钥签名数据'Y’,并使用相应的公钥验证'Z‘,该公钥可以安全地嵌入应用程序中。公钥只能用于验证用私钥签名的数据的真实性--它不能单独用于创建有效的签名。
  • 对于解压缩您的软件的人来说,这实际上与软件许可无关,但这是一个有效的问题,尽管不能通过加密来减轻。话虽如此,任何“破解者”都有足够的技巧和决心去分解你的软件并制作他们自己的版本,这可能已经足够熟练到可以编写他们自己的软件了(一般来说)。
票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/6584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档