是否可以在客户端安全地验证离线许可证密钥?

Posted

技术标签:

【中文标题】是否可以在客户端安全地验证离线许可证密钥?【英文标题】:Is it possible to safely validate offline license keys clientside? 【发布时间】:2018-02-08 06:46:02 【问题描述】:

是否可以在客户端应用程序上验证许可证密钥,使其变得非常难以破解?

考虑以下简单示例:

var status = secure_function_that_checks_license();
if (status == "REGISTERED")
  print("Welcome, user");
else
  print("Access denied");

无论你的函数多么精细,最终你都必须根据它给出的结果进行分支。

This thread 解释了更多关于生成和验证密钥的内容,但没有解释如何避免分支问题。

是使用某种在线激活方案以安全的方式执行此操作的唯一方法吗?

【问题讨论】:

【参考方案1】:

首先,如果大家都记住,破解时没有预防措施,只有停滞不前,如果你的代码值得破解,它就会被破解

现在在混淆过程中有一种叫做内联的做法,它只是将你的函数调用替换为实际的函数体,这样你的代码将更难破解,因为要修改的代码更多

【讨论】:

以上是关于是否可以在客户端安全地验证离线许可证密钥?的主要内容,如果未能解决你的问题,请参考以下文章

使用其哈希密钥在客户端验证验证码是否安全?

在 Android 密钥库中安全地存储密钥

在单独的表格上验证许可证密钥?

应用程序范围内使用相同的客户端证书是否安全?

JWT 是不是共享/存储用于在客户端和服务器上签名的密钥?

使用PHP / MySQLI / Apache时,在哪里安全地存储证书/密钥?