首先,没有无法破解的软件,只是破解成本的高低。
web 后台是 django 写的,加了个用户模块。
我设想的是这样的: 1、PC 端有登录功能,登录时从 django 获取帐号的使用期限等各种限制。 2、PC 端会有需要登录其他平台账户的需求,PC 端软件主要功能就是能够对使用者使用其他平台时提供核心支持(举个不恰当例子,其他平台是个计算器的话,本 PC 软件就是帮使用者计算一个微积分之类的)。
PC 端的上目标平台登录的帐号是从 web 拉取的,密码本地输入。
加密方式,PC 端核心支持库采用 web 获取,每次登录临时加载关闭时清除。 使用期限等参数,加密没想好,目前想的是采用 RSA 方式,PC 软件启动时随机生成一组公私钥,然后将公钥与随即参数一并 post 到 web,当 web 获取到后生成授权参数,然后 web 生成一对公私钥,使用 web 私钥将授权参数加密一次,再用 pc 的公钥加密一次,同时将 web 生成的私钥使用 pc 的公钥加密一下,返回处理后的 web 生成的私钥、授权参数。
pc 端获取到后,一次解密 web 私钥,2 次解密授权参数。
由于 rsa 的公私钥都是临时生成,所以基本没有公私钥之分了。。
请问,这样的解密难度怎么样?
有其他方案可以推荐吗?谢谢。
1
ian19znj 2019-02-07 17:37:22 +08:00 via iPhone
你 web 端的授权参数用私钥加密,客户端如何用私钥解密?
|
2
r1chb0ss 2019-02-07 17:38:50 +08:00 via iPhone 1
直接做 web 端得了呗
|
3
ian19znj 2019-02-07 17:39:48 +08:00 via iPhone
另外,最主要的漏洞在于,客户端怎么判断收到的授权信息来自你的 web 端?如果有人伪造授权数据返回给你的客户端呢?
|
4
kingmo888 OP |
5
sunorg 2019-02-07 20:52:40 +08:00 via Android
oauth 了解一下
|
6
ian19znj 2019-02-07 21:22:36 +08:00
@kingmo888 #4 那我觉得二次加密是多余的,直接将内容用客户端的公钥加密返回,跟你现在的方案安全性没有差别。这个方案的密码其实就是你的授权数据结构。
|
7
kersbal 2019-02-07 21:23:48 +08:00 via iPhone
直接上微软商店?
|
9
crab 2019-02-07 21:26:55 +08:00
功能如果是在 web 端只要不允许账号同时在线就可以。如果是本地的,做再多也无用啊,加大难度和时间就是关键验证的地方代码 vm 上。
|
10
lingdux 2019-02-07 22:01:45 +08:00
推荐 Safengine Protector
|
11
chinvo 2019-02-07 22:11:41 +08:00 via iPhone
可以配合 ddapi,数据交互不用太复杂的加密,也不要自己搞密钥交换
密码学最忌讳闭门造车,只要你的方案依赖对加密过程的保密,那么你的加密只不过是自欺欺人 |
13
kingmo888 OP |
15
chinvo 2019-02-07 22:21:07 +08:00 via iPhone
另外有个悖论是如何确定客户端合法性
一切需要和客户端交互的识别方式,都有可能被伪造 |
16
ian19znj 2019-02-07 22:22:23 +08:00
@kingmo888 #13 我的意思是,你防破解是基于别人不知道你的数据结构的,如果别人知道了你返回的授权信息的格式,就可以破解你的软件了。
|
17
msg7086 2019-02-07 23:54:07 +08:00
你可以把少量核心功能做成远程计算。
因为你没有说是什么样的软件,所以我就随便说说。比如是做报表的,那你可以做成每小时或者每天里有一个数学计算结果是交给服务器处理的。如果服务器密钥验证失败,就返回随机数,等等。如果有人破解你的软件,又没有注意到这个问题的话,那程序就会运行不正常。 |
18
kokutou 2019-02-07 23:57:27 +08:00 via Android
注意放暗桩就行了,放到人怀疑人生。
|
19
kokutou 2019-02-08 00:06:18 +08:00 via Android
另外有验证出错不要立马给提示,给数据上几个随机数加减,文件保存了但是是损坏的,这样子之类的。
程序编译开编译器优化,上个狗,再上个 tmd 壳等等。 |
20
wd 2019-02-08 03:37:53 +08:00 via iPhone
以前 v2 有一个兄弟做的软件,检查到盗版不好不让用,但是计算结果会不准确,而且误差随时间越来越大。可以想想对方发现有问题的时候
|
22
RqPS6rhmP3Nyn3Tm 2019-02-08 07:43:05 +08:00
核心代码放在服务器
|
24
hotsun168 2019-02-08 22:43:42 +08:00 via iPhone
之前做过这种 PC 软件的验证,上面有人说过的把核心代码放在服务器的方案较好。
我以前做的那个东西,初版程序中只有验证逻辑,被破解后,破解版中整个验证逻辑被完整移除,相当于单机版。后面将部分核心逻辑移到服务器端,每次运算放在服务器进行,再没出现过破解版。 P.S. 服务器被 DDOS 好几天,后面可能觉得搞我没意思了,就没再收到过破解或攻击。 |