License授权的基本思路

前言

对于收费软件,一般是我们需要去购买一个许可,然后输入这个许可到软件里就能够使用软件。

于是有的小伙伴就开始好奇这个许可是怎么实现的,特别是在离线情况下它是怎么给软件授权,同时又能避免被破解的。

License 内容

一个许可应该包含以下基本内容:

  • 授权用户(用户编号、MAC地址、IP地址等)
  • 授权期限(开始结束时间、无限期等)
  • 授权功能(应用版本、应用功能)

License 授权流程

License授权机制的原理

(1)生成密钥对,包含私钥和公钥。(2)授权者保留私钥,使用私钥对授权信息诸如使用截止日期,mac 地址等内容生成 license 签名证书。(3)公钥给使用者,放在代码中使用,用于验证 license 签名证书是否符合使用条件。

数字签名:一种防伪造技术,能够通过公钥验证的数据一定是私钥拥有者所签发的。因此除非私钥泄露(一般放在服务器),否则没有人能够伪造。

许可生成就是服务器使用非对称加密私钥对许可进行数字签名,客户端使用对应的公钥对许可进行数字签名校验,校验通过再校验许可的内容。

提高破解难度

(1)应用带上时间戳

应用带上发布时间戳,如果License允许时间小于这个时间戳就算系统时间大于也不能使用(避免修改系统时间情况),这样就限制了过期License没办法使用新版本应用。

(2)加大反编译难度

不要用Java等容易被反编译的代码去校验,特别是校验许可的代码(避免直接改为True),存放公钥字符串的代码(避免直接替换公钥)。

尽量把校验代码放到二进制代码里面去,同时可以对代码进行混淆,增加破解难度。

参考:

软件License授权原理 - 掘金

软件离线许可(License)实现原理 - 掘金

https://github.com/sixj0/license

[Crypto] Licensing your software with OpenSSL. Using license keys. Software copy-protection.

相关推荐
独行soc3 小时前
2025年渗透测试面试题总结-234(题目+回答)
网络·python·安全·web安全·渗透测试·1024程序员节·安全狮
机器学习之心3 小时前
MATLAB基于变权理论和灰色云模型的海岛旅游地生态安全评价
安全·matlab·旅游·灰色云模型
No Big Deal7 小时前
ctfshow-_Web应用安全与防护-Base64多层嵌套解码
安全
Oxo Security7 小时前
【AI安全】检索增强生成(RAG)
人工智能·安全·网络安全·ai
2301_795167208 小时前
玩转Rust高级应用 如何让让运算符支持自定义类型,通过运算符重载的方式是针对自定义类型吗?
开发语言·后端·算法·安全·rust
合作小小程序员小小店11 小时前
web安全开发,在线%服务器日志入侵检测%系统安全开发,基于Python,flaskWeb,正则表达式检测,mysql数据库
服务器·python·安全·web安全·flask·安全威胁分析·安全架构
Fanmeang13 小时前
华为防火墙基础功能详解:构建网络安全的基石
运维·网络·安全·华为·防火墙·策略·安全域
数字供应链安全产品选型13 小时前
公示 | 悬镜安全通过首批《信息技术 软件物料清单数据格式规范》行业标准符合性试点验证
安全
AWS官方合作商13 小时前
AWS Lambda的安全之道:S3静态加密与运行时完整性检查的双重保障
安全·云计算·aws
MarkHD13 小时前
蓝牙钥匙 第69次 蓝牙钥匙安全与便捷性平衡:从理论到实践的全方位解析
网络·人工智能·安全