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, 安全工程, 数字取证, 数据完整性, 数据擦除, 日志审计, 确定性模拟, 自动化脚本, 请求拦截, 逆向工具