# 第十部分:安全设计 ## 10.1 用户认证 ``` ┌──────────────────────────────────────────────────────────────────┐ │ 用户认证体系 │ ├──────────────────────────────────────────────────────────────────┤ │ │ │ 认证流程: │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 用户登录 │───→│ 身份验证 │───→│ Token签发│───→│ 返回客户端│ │ │ │ 提交凭证 │ │ 密码校验 │ │ JWT生成 │ │ 缓存Token │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ Token机制(JWT): │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Access Token: │ │ │ │ - 有效期:2小时 │ │ │ │ - 签名算法:RS256 (RSA + SHA256) │ │ │ │ - 包含信息:user_id, device_id, role, exp │ │ │ │ - 存储位置:客户端内存(不持久化) │ │ │ │ │ │ │ │ Refresh Token: │ │ │ │ - 有效期:30天 │ │ │ │ - 存储位置:Redis + 客户端安全存储 │ │ │ │ - 一次性使用(刷新后失效) │ │ │ │ - 支持主动撤销 │ │ │ │ │ │ │ │ Token刷新流程: │ │ │ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │ │ │Access │───→│过期检测│───→│Refresh │───→│新Token │ │ │ │ │ │过期 │ │自动刷新│ │验证 │ │签发 │ │ │ │ │ └────────┘ └────────┘ └────────┘ └────────┘ │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ 密码安全: │ │ - 哈希算法:bcrypt (cost=12) │ │ - 盐值:每个用户独立随机盐值 │ │ - 最小长度:8位 │ │ - 复杂度要求:大小写+数字+特殊字符 │ │ │ └──────────────────────────────────────────────────────────────────┘ ``` ## 10.2 设备绑定与防共享 ``` ┌──────────────────────────────────────────────────────────────────┐ │ 设备绑定与防共享 │ ├──────────────────────────────────────────────────────────────────┤ │ │ │ 设备指纹生成: │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ 组合以下信息生成唯一指纹: │ │ │ │ - CPU ID │ │ │ │ - 主板序列号 │ │ │ │ - 硬盘序列号 │ │ │ │ - MAC地址 │ │ │ │ - 操作系统版本 │ │ │ │ - 客户端版本 │ │ │ │ │ │ │ │ 指纹算法:SHA256(组合字符串) │ │ │ │ 指纹格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ 设备限制策略: │ │ ┌──────────────┬──────────────┬────────────────────────────┐ │ │ │ 套餐类型 │ 设备限制 │ 说明 │ │ │ ├──────────────┼──────────────┼────────────────────────────┤ │ │ │ 免费版 │ 1台 │ 绑定后不可更换 │ │ │ │ 月卡/季卡 │ 2台 │ 可解绑,30天冷却期 │ │ │ │ 年卡 │ 3台 │ 可解绑,30天冷却期 │ │ │ │ 电竞版 │ 5台 │ 可解绑,7天冷却期 │ │ │ └──────────────┴──────────────┴────────────────────────────┘ │ │ │ │ 防共享检测: │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ 规则1:同时在线检测 │ │ │ │ - 同一账号在不同设备同时在线 │ │ │ │ - 触发条件:不同设备指纹 + 相同账号 + 时间重叠 │ │ │ │ - 处理:通知用户 + 限制新设备登录 │ │ │ │ │ │ │ │ 规则2:异地登录检测 │ │ │ │ - 同一账号在短时间内不同地区登录 │ │ │ │ - 触发条件:城市变化 + 时间<30分钟 │ │ │ │ - 处理:要求二次验证 │ │ │ │ │ │ │ │ 规则3:频繁切换设备 │ │ │ │ - 同一账号频繁在不同设备切换 │ │ │ │ - 触发条件:24小时内切换>3次设备 │ │ │ │ - 处理:冻结账号24小时 + 人工审核 │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────────────┘ ``` ## 10.3 数据加密 ``` ┌──────────────────────────────────────────────────────────────────┐ │ 数据加密方案 │ ├──────────────────────────────────────────────────────────────────┤ │ │ │ 传输加密: │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ 客户端 ←──TLS 1.3──→ API Gateway │ │ │ │ - 证书:Let's Encrypt + 自签证书 │ │ │ │ - 密钥交换:X25519 │ │ │ │ - 加密套件:TLS_AES_256_GCM_SHA384 │ │ │ │ │ │ │ │ 客户端 ←──自定义加密──→ 加速节点 │ │ │ │ - 密钥交换:ECDH (Curve25519) │ │ │ │ - 数据加密:AES-256-GCM │ │ │ │ - 完整性:HMAC-SHA256 │ │ │ │ - 密钥轮换:每24小时 │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ 存储加密: │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ 敏感字段加密(应用层): │ │ │ │ - 手机号:AES-256-GCM 加密存储 │ │ │ │ - 邮箱:AES-256-GCM 加密存储 │ │ │ │ - 支付信息:不存储(支付平台处理) │ │ │ │ │ │ │ │ 数据库加密(存储层): │ │ │ │ - MySQL TDE (Transparent Data Encryption) │ │ │ │ - 备份文件加密 │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ 客户端安全: │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ - 本地配置加密存储(DPAPI/Keychain) │ │ │ │ - 代码混淆(VMProtect/Themida) │ │ │ │ - 反调试检测 │ │ │ │ - 完整性校验 │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────────────┘ ``` ## 10.4 防DDoS与防作弊 ``` ┌──────────────────────────────────────────────────────────────────┐ │ 防DDoS与防作弊 │ ├──────────────────────────────────────────────────────────────────┤ │ │ │ 防DDoS: │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ 层级1:云服务商防护 │ │ │ │ - 阿里云DDoS防护(10Gbps基础防护) │ │ │ │ - Cloudflare Spectrum(游戏流量防护) │ │ │ │ │ │ │ │ 层级2:接入层防护 │ │ │ │ - SYN Cookie │ │ │ │ - 连接数限制 │ │ │ │ - IP限速 │ │ │ │ │ │ │ │ 层级3:应用层防护 │ │ │ │ - 请求频率限制 │ │ │ │ - 异常流量检测 │ │ │ │ - 自动封禁 │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ 防作弊: │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ 1. 加速时长作弊 │ │ │ │ - 服务端计时,不信任客户端 │ │ │ │ - 心跳验证(防止篡改时间) │ │ │ │ │ │ │ │ 2. 流量作弊 │ │ │ │ - 流量统计双端校验 │ │ │ │ - 异常流量检测 │ │ │ │ │ │ │ │ 3. 账号共享 │ │ │ │ - 设备指纹检测 │ │ │ │ - 同时在线限制 │ │ │ │ - 异地登录检测 │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────────────┘ ```