授权方案.md

授权方案(定义威胁模型)

概念

方案一 二 覆盖用户使用石犀系统时 可连广域网和不可连广域网 的情况, 一 二 都有各自的优缺点, 二者结合起来可以

SAC 石犀授权中心, 根据网络授权机制实现的授权服务,目前用于, 实现总控引擎插件的授权
SAC_DATA 石犀授权中心数据, SAC_DATA 包含此用户帐户下网络授权方面的资产数据(总控 引擎 插件过期时间,绑定关系等),当 SC 需要授权数据,将从 SAC 下取数据.
SHD 静态授权设备, 可以是USB, 里面包括静态授权数据, 或者产生静态授权数据的工具
SHD_DATA 静态授权设备数据, SHD 中包含的静态授权方面的资产数据(总控 引擎 插件国企时间,绑定时间等), 当 SC 需要授权数据, 将从本地设备中获取数据.

方案一

使用网络授权方案作为可连广域网情况下的授权方式.	

优缺点

优点:
    更灵活, 如果客户更新商品属性如续费, 可以通过 SAC 直接同步到总控
    成本低, 除需要的节点机器外不需要额外的成本
缺点:
    不能解决完全不能连接广域网的情况
总控节点直接访问广域网
总控访问跟 SAC 同一台机器, 总控与 SAC 通过 127.0.0.1 通信
总控节点间接访问广域网
SAC 部署到可连广域网的节点, 总控与 SAC 通过网络进行通信

方案二

使用静态授权设备方案作为不可连广域网情况下的授权方式.

优缺点

优点:
    不要求用户节点连广域网
缺点:
    成本高, 每次修改商品属性都需要让商城发一个 静态授权设备(USB)
    静态授权设备需要保证本身的安全性, 不可复制性等
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. 总控需要依赖 总控和局域网授权客户端的联通性
>>> 总控
>>> 引擎
>>> 插件



授权方案.md
https://abrance.github.io/2024/09/04/mdstorage/domain/安全/授权方案/
Author
xiaoy
Posted on
September 4, 2024
Licensed under