1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| > 总控软件加密 >> 概述 在没有硬件安全的情况下, 稳定性 易用性 安全性 三者几乎无法共同存在, 不考虑软件安全的情况下, 代码会较为整洁, 稳定易用;如果要保证易用和安全, 在某些特殊场景下, 一定会导致系统的不稳定;如果保证稳定性和安全性, 则将会采用处处有校验的方式, 使用体验会受到影响; 作为一款商品来说, 我们只能在保证安全性的前提下, 尽量平衡稳定性和易用性的关系.
需要达成的共识: 石犀系统(总控+引擎)以什么形式存在于客户网络中? 1. 总控只是有我们提供的软件, 硬件和root帐号由客户掌握 2. 总控是部署于我们提供的硬件平台上, 客户拿不到root帐号, 只能通过我们的api访问
不管怎么说, 破解软件只是时间问题, 尽量提高整个系统任一种被破解的难度是 研发的目标之一. 如果是第1点, 我们系统整体被破解的风险很大, 客户拥有root权限, 首先破解数据库是破解系统的第一步也是最简单的一步(难度为10), 如果数据库被破解, cracker 拥有读写数据库的能力, 在此情形下,将采用更多的冗余校验去保证数据库中数据的完整性(破解的难度为60), 那么有人会问, 数据库不保存重要数据?数据库不保存重要数据的情况下, 如过期时间, 将数据保存于商城, 由网络去请求后保存于内存中, 这样也会有问题, 保存于内存中的数据将在软件重启后失效, 也就是说, 依赖于这个机制, 当总控与商城网络不通的情况下, 只要重启总控(比如高可用时节点漂移重启), 则总控不可用.基于以上, 可以推导, 重要数据也需要保存于此机器中, 保存于数据库反而是提高被破解难度的手段.综述, 第1种情况下, 系统被破解的总难度为70. 第2种情况下, 我们系统整体被破解的风险较小, 在root账户不被拿到的情况, 只能通过接口去攻击系统, 通过接口能做到的攻击有限, 造成的影响面也有限, 易防.
>>> 网络环境 1. 第1种情况下, 几乎不需要关心网络环境, 总控是否和商城联通与否, 只影响消息的传达, 不需要担心过期时间等数据被修改, 或者机器的时间被修改的情况 2. 第2种情况下 商城与总控一直联通 这就是说, 总控依赖总控与商城的网络联通性, 一旦不能访问商城, 则禁用所有总控接口.这种情况下,安全性和易用性都可以保证, 但是客户是否能接受这种情况?(稳定性受损) 商城与总控一直不联通 不联通的情况下, 重要数据保存在哪里是一个问题, 1. license 2. 外部设备 3. 局域网网络授权 不联通也有两种情况: 总控连接的所有主机均不可以连接商城 此时, 可以选择的只有 1. license 2. 外部设备 总控连接的部分主机可以连接商城 此时, 可以选择 1. 2. 3 局域网网络授权 商城与总控半联通 半联通指大部分情况是联通, 但是允许商城与总控一段时间内网络不同.这种情况下, 其实还是更类似一直不联通的情况, 涉及到重要数据保存在哪的问题? >> mysql >>> mysql 需不需要阻止用户破解登录? mysql 几乎可以确定可以通过特殊手段破解密码, 因为客户拥有root权限 https://developer.aliyun.com/article/792438 >>>> 后面总控将把 root 隐藏(封装在小盒子), >>> mysql 如何防止用户破解后修改数据?或者修改数据 >> 软件授权机制 >>> 概述 license 文件 通过算法保证的授权方式, license文件的加密方式决定了被破解的难度, 从密码学的角度来说, 非常难通过穷举来破解(几乎不可能), 但是通过查汇编代码的情况, 是可能直接被破解算法的(难度为60). PS: 如果 license 文件不跟 二进制文件 1对1绑定, 在没有网络的前提下, cracker 可以直接将一个 license 传递给其他的软件, 那么用户可以无限使用. 优点: 本身是没有额外成本, 实现简单 缺点: 1. 但是如果将 license 文件和 二进制文件绑定, 则发版和存储时, 按照每个用户的包都不同的算法, 将耗费大量磁盘存储. 2. 被破解风险高 USB 或 光盘 本质上是通过将部分重要数据保存于外部设备, 来进行授权行为.但需要保证 USB 本身具有不可复制性 优点: 被破解风险较低 缺点: 需要花费一定成本买硬件, 而且每次续费或修改商品属性都需要发一个新的USB设备 网络授权 网络授权分为两类:局域网授权;广域网授权。但是,本质上是一样的。就是程序向远程的服务器查询,看看自己的机器是否被授权。授权lib会给当前PC设备生成一个ID,利用网卡MAC、CPU、GPU等等硬件附带的信息来生成此ID。一般很难伪造ID(虚拟机平台可以通过完全克隆主机, MAC CPU GPU等硬件信息是可能被克隆出来, 难度??(福林))。也因此,这些PC上的硬件可能无法随意更换,否则会导致新的ID,PC无法通过授权。把ID提交给授权服务器并记录,这样,就能够对一个PC做授权了。 优点: 1. 破解风险低. 2. 除了开发成本不需要额外的成本 缺点: 1. 需要开发额外一套授权系统 2. 客户每次更新硬件时, 可能需要重新授权. 2. 总控需要依赖 总控和局域网授权客户端的联通性 >>> 总控 >>> 引擎 >>> 插件
|