MichalPlanetaDev/tickline

GitHub: MichalPlanetaDev/tickline

Tickline 是一个防御性安全工程靶场项目,围绕确定性模拟、严格命令准入、证据完整性与取证回放构建完整的信任链模型。

Stars: 1 | Forks: 0

# Tickline Tickline 是一个合法的防御性安全工程靶场,围绕确定性权威模拟、严格命令准入、证据完整性、取证回放以及可复现的工程工作流而构建。 它不是作弊项目、绕过项目、恶意软件项目,也不是针对第三方软件的逆向工程目标。对抗性测试仅针对本仓库拥有的代码和产物。 ## 当前版本 **v0.6.0 — 调查存储与查询层** 当前版本添加了由迁移管理的 SQLite 调查存储库,用于已验证的证据归档、事务性和幂等导入、持久化会话与回放元数据、完整性约束、分页和过滤、损坏检测以及回滚覆盖。 确定性模拟、权威命令 pipeline、协议解析器、SHA-256 证据链、取证回放、开发者控制台、sanitizer 构建和 Docker 验证仍然是完整系统的一部分。 ## 安全理论 Tickline 对此信任链进行建模: ``` untrusted byte stream | v bounded frame reassembly | v strict frame and payload decoding | v typed command boundary | v identity, schema, sequence, timing, and payload validation | v authoritative world admission | v deterministic simulation state | v canonical evidence record | v SHA-256 evidence chain | v verified binary archive | v deterministic forensic replay ``` 客户端可以请求操作。它不能权威地决定模拟状态、验证结果或证据。 ## 已实现的组件 ### 确定性模拟 C++ 模拟核心支持: - 固定时长的 tick; - 受检的流逝时间推进; - 非零实体标识符; - 整数毫米和微秒单位; - 计划的速度命令; - 每个实体的序列和目标 tick 跟踪; - 有界的速度和位置; - 小数位移保留; - 原子世界推进; - 规范状态编码; - 确定性状态指纹。 状态指纹旨在用于确定性比较和回放检查。它不是一种加密身份验证机制。 ### 命令封包与验证 每个命令封包包含: - 命令 schema 版本; - 命令类型; - 客户端标识符; - 会话标识符; - 会话序列; - 目标模拟 tick; - 实体标识符; - 类型化速度 payload。 无状态验证器会拒绝不支持的 schema 和命令类型、无效或不匹配的身份标识、零序列、过期的 tick、过度的未来 tick 以及超出范围的速度。 ### 会话重放保护 `CommandSession` 拥有某个已验证客户端/会话对所接受的最高序列。 它会区分: - 重复序列; - 序列倒退; - 有效的严格递增序列。 允许序列出现间隙。只有在权威世界准入成功后,序列才会被提交。 ### 权威提交 pipeline `AuthoritativeCommandPipeline` 负责协调: 1. 会话级验证; 2. 重放检查; 3. 转换为模拟命令; 4. 权威世界准入; 5. 会话序列提交; 6. 证据生成。 被拒绝的提交不会提交会话重放状态。世界级别的拒绝不会消耗会话序列。 ### 证据完整性 每次提交都会生成一条固定大小的规范证据记录,包括被拒绝的提交。 证据记录包含: - 提交前的世界指纹; - 观测到的模拟 tick; - 完整的命令封包; - 之前和之后的会话序列; - 之前和之后的待处理命令计数; - 稳定的拒绝代码; - 原始队列结果。 记录通过 SHA-256 链接在一起。验证需要独立可信的预期链头。 该链能检测相对于该可信链头的修改。它不能证明是谁生成了归档,也不是数字签名。 ### 证据归档 二进制归档格式提供: - 归档 magic 和 schema; - 嵌入的记录 schema 和大小; - 记录计数; - 声明的 SHA-256 链头; - 固定大小的规范记录; - 精确长度验证; - 截断检测; - 尾部数据拒绝; - 严格的记录解码; - 链验证; - 可信链头对比。 ### 取证回放 证据回放器接受: - 可信的初始 `CommandSession`; - 可信的初始 `World`; - 已验证的证据记录; - 可信的证据链头。 它重建观测到的 tick 推进和命令提交,然后将重新生成的记录与归档记录进行比较。 回放可检测: - 无效的链链接; - tick 倒退; - 过度的回放工作量; - 模拟推进失败; - 初始会话不匹配; - 待处理命令不匹配; - 世界状态不匹配; - 伪造的提交结果。 ## 重要限制 当前版本不提供: - 生产级 TCP 或 UDP 服务器; - 经过身份验证的远程会话; - 传输加密; - 数字签名或密钥管理; - 并发的多进程摄入服务; - 远程调查 API; - Unity 可视化; - 碰撞或命中验证; - 生产级反作弊部署。 SQLite 存储库是一个本地调查和查询层。它不作为生产级多租户服务或证据作者身份的证明。 ## 仓库布局 ``` cpp/ include/tickline/ command/ security/ simulation/ src/ tests/ docs/ decisions/ releases/ infra/ docker/ scripts/ checks/ tools/ python/ tickline-dev/ unity-viewer/ ``` ## 本地验证 运行完整的仓库门禁: ``` bash scripts/check-local.sh ``` 运行更快的本地通过: ``` SKIP_SANITIZERS=1 SKIP_DOCKER=1 \ bash scripts/check-local.sh ``` 仅构建和测试 C++ 核心: ``` cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug cmake --build build --parallel ctest --test-dir build --output-on-failure ``` 运行 sanitizer 配置: ``` cmake \ -S . \ -B build-sanitized \ -DCMAKE_BUILD_TYPE=Debug \ -DTICKLINE_ENABLE_SANITIZERS=ON cmake --build build-sanitized --parallel ctest --test-dir build-sanitized --output-on-failure ``` 构建开发者控制台: ``` bash scripts/build-tickline-dev.sh ``` ## 开发者控制台 `tickline-dev` 为以下功能提供了一个执行引擎: - 普通终端输出; - 版本化 JSON 报告; - 交互式终端 UI; - 依赖感知的阶段选择; - 进程组取消; - 每个阶段的日志; - 规范的 `result.json` 产物。 示例: ``` tickline-dev version tickline-dev check --plan tickline-dev check --plain tickline-dev check --json tickline-dev check --only cpp,go ``` ## 发布历史 | 版本 | 里程碑 | 交付范围 | |---|---|---| | `v0.1.0` | 蓝图与工程骨架 | 仓库结构、架构、威胁模型、CI 与工作流基础 | | `v0.1.1` | 本地工作流与 CI 修复 | 可复现的本地检查与修正后的 CI 行为 | | `v0.2.0` | 确定性模拟核心 | 固定 tick、整数状态、计划命令、规范状态与测试 | | `v0.3.0` | 开发者控制台基础 | Go 验证控制台、共享清单、TUI、JSON 报告、取消与日志 | | `v0.4.0` | 权威命令 pipeline | 命令准入、重放保护、证据归档、SHA-256 链与取证回放 | | `v0.5.0` | 协议边界与解析器强化 | 严格分帧、有界解码、增量流解析、畸形输入测试与模糊测试 | ## 计划中的里程碑 | 版本 | 里程碑 | 预期范围 | |---|---|---| | `v0.6.0` | 调查存储与查询层 | SQLite schema、导入路径、查询与服务契约 | | `v0.7.0` | Unity 取证回放查看器 | 时间线回放、状态检查与证据可视化 | | `v0.8.0` | 分析与统计 | Python 报告、基线、异常值分析与误报审查 | | `v0.9.0` | 运行时诊断与服务强化 | Docker 运行时、诊断、可观测性与操作故障测试 | | `v1.0.0` | 作品集发布 | 可复现演示、截图、文档冻结与最终审查 | 路线图服从于经过验证的实现。在代码、测试、文档和发布元数据达成一致之前,功能不被视为已交付。 ## 文档 - `docs/architecture.md` — 当前系统边界与组件职责; - `docs/simulation-model.md` — 确定性世界与命令执行模型; - `docs/authoritative-command-pipeline.md` — 命令封包、验证、提交、证据与回放; - `docs/evidence-integrity.md` — 记录链与归档完整性模型; - `docs/protocol.md` — 已实现的分帧、解码、流解析与兼容性规则; - `docs/threat-model.md` — 防御范围与信任假设; - `docs/developer-console.md` — Go 验证控制台架构; - `docs/debugging-workflow.md` — 本地诊断工作流; - `docs/github-workflow.md` — issue、分支、审查与发布工作流; - `docs/release-process.md` — 发布不变量与确切发布流程; - `docs/releases/v0.4.0.md` — 当前里程碑的发布说明。 ## 防御范围 允许的工作包括: - 针对 Tickline 的畸形输入测试; - 重放与序列滥用测试; - 无效命令声明; - 证据篡改测试; - 确定性回放验证; - sanitizer 与模糊测试; - 本地 Docker 与 Linux 诊断; - 防御性技术文档。 本仓库严禁包含恶意软件、凭证窃取、针对第三方游戏的定位、商业反作弊绕过、隐蔽持久化、内核规避、DMA 工具或攻击生产服务的说明。
标签:Bash脚本, C++, SQLite, Zenmap, 安全工程, 数字取证, 数据完整性, 数据擦除, 日志审计, 确定性模拟, 自动化脚本, 请求拦截, 逆向工具