StandFast1/CaseGraph
GitHub: StandFast1/CaseGraph
CaseGraph 是一个基于图谱的 OSINT 调查平台,通过强制来源绑定、Admiralty 可靠性评分、HMAC 审计链和 RFC 3161 时间戳封装,解决调查结果在法庭和正式报告中缺乏监管链与可验证性的问题。
Stars: 0 | Forks: 0
# CaseGraph
基于图谱的 OSINT 调查平台,内置 forensic 层。每个节点和每条边都包含其来源、加密时间戳以及 NATO Admiralty 可靠性评级,从而确保调查可以作为可验证、可重放的案卷导出,而不仅仅是一堆截图文件夹。
基于图谱的 OSINT 调查平台,内置 forensic 层。每个节点和每条边都包含其来源、加密时间戳以及 Admiralty 可靠性评级,从而将调查转化为可验证且可重放的案卷,而不仅仅是一堆截图文件夹。
## 英语
### 问题所在
OSINT 调查在法庭和报告中失效的原因都是一样的:分析师可以展示他们发现了什么,但无法展示他们何时发现、信息来源、来源的可靠程度,或者之后是否被篡改过。链接分析工具生成的图表虽然精美,却缺乏监管链。
### 为什么现有工具不够用
Maltego、Flowsint 及类似的图谱工具将来源视为可选的注释。证据捕获工具会对页面进行 hash 处理,但对从中提取的实体一无所知。没有任何东西将图谱中的声明与支持它的捕获记录联系起来。CaseGraph 强制要求建立这种联系:一个实体或关系如果没有至少一个有来源且经过评级的断言就无法存在,这是由 API 强制执行的,而不是依靠自律。
### 架构
- Next.js 16, React 19, 严格模式的 TypeScript, Tailwind CSS v4, React Flow canvas
- 通过 Drizzle ORM 使用 SQLite,一个独立的本地文件
- 在 client 和 server 的每个边界都进行 Zod 校验
- forensic 核心位于 `src/lib/forensics`,由 Vitest 覆盖的纯函数:
- Admiralty 评分(A 到 F 的来源可靠性,1 到 6 的信息可信度),具有文档化的聚合规则(最佳断言加上每个额外断言 15% 的印证奖励,上限为 1)
- Append-only 的审计日志,通过 HMAC-SHA256 链接所有证据字段的 canonical JSON,`verifyChain()` 会报告确切的首次断点
- 手写的 RFC 3161 client(DER 编码和解析,零依赖),使用公共 timestamping authority 封装每个来源 hash,带有 `verifyTimestamp()`
- Ecosystem 导入 endpoint,可自动将外部工具的 payload 转换为带来源的节点
- 签名导出:一份人类可读的 Markdown 档案以及一个 JSON bundle,其中包含完整的审计日志和 HMAC 签名;`scripts/verify-export.mjs` 允许任何持有密钥的第三方使用普通的 Node 重放所有检查,无需安装
### 安装说明
需要 Node.js 20 或更高版本以及 npm。
```
git clone https://github.com/StandFast1/CaseGraph.git
cd CaseGraph
npm install
cp .env.example .env.local
npm run db:migrate
npm run dev
```
在 Windows 上,将 `cp` 替换为 `copy`。在 `.env.local` 中将 `CASEGRAPH_AUDIT_KEY` 设置为至少 32 个字符的随机密钥:此密钥保护审计链,绝不能提交到版本库。SQLite 数据库文件会在迁移步骤中自动创建。
### 演示
打开 http://localhost:3000,点击 Importer,加载虚构的演示 payload 并进行探索:检查断言、封装来源(RFC 3161)、在 /verify 打开完整性报告、切换失踪人员清单并下载签名的档案。所有演示数据均为完全虚构。
### 关于可采性的说明
CaseGraph 并不声称自身能使证据具有可采性;可采性由法庭决定,而非由工具决定。它的作用是消除常见的异议:每个断言都绑定到一个经过 hash 处理的捕获记录,由独立的 RFC 3161 权威机构封装,记录在防篡改的 HMAC 链中,并且整个案卷可以通过一个 150 行的无依赖脚本由独立专家重新验证。剩下的信任锚点是 HMAC 密钥的保密性,并且 TSA 签名可以使用标准的 openssl 工具进行反向验证(参见 `docs/forensics.md`)。
## 法语
### 问题
Les enquetes OSINT echouent devant un tribunal ou un commanditaire pour une raison constante: l'analyste peut montrer ce qu'il a trouve, mais pas quand il l'a trouve, d'ou cela vient, quelle confiance accorder a la source, ni que rien n'a ete altere ensuite. Les outils d'analyse de liens produisent de beaux graphes sans chaine de custody.
### 为什么现有工具不够用
Maltego, Flowsint et les outils comparables traitent la provenance comme une annotation facultative. Les outils de capture de preuve hashent des pages mais ignorent tout des entites qu'on en extrait. Rien ne relie l'affirmation dans le graphe a la capture qui la soutient. CaseGraph rend ce lien obligatoire: une entite ou une relation ne peut pas exister sans au moins une assertion sourcee et notee, et c'est l'API qui l'impose, pas la discipline de l'analyste.
### 架构
- Next.js 16, React 19, TypeScript strict, Tailwind CSS v4, canvas React Flow
- SQLite via Drizzle ORM, un seul fichier local auto-suffisant
- Validation Zod a toutes les frontieres, client et serveur
- Noyau forensique dans `src/lib/forensics`, fonctions pures couvertes par Vitest:
- Scoring Admiralty (fiabilite A a F, credibilite 1 a 6), regle d'agregation documentee (meilleure assertion plus 15 pour cent de corroboration par assertion supplementaire, plafonne a 1)
- Journal d'audit append-only chaine en HMAC-SHA256 sur le JSON canonique de tous les champs probants, avec `verifyChain()` qui signale la premiere rupture exacte
- Client RFC 3161 ecrit a la main (encodage et decodage DER, zero dependance) qui scelle le hash de chaque source aupres d'une autorite d'horodatage publique, avec `verifyTimestamp()`
- Endpoint d'import qui transforme automatiquement les payloads d'outils externes en noeuds sources
- Export signe: un dossier Markdown lisible plus un bundle JSON contenant le journal d'audit integral et une signature HMAC; `scripts/verify-export.mjs` permet a un tiers detenant la cle de rejouer toutes les verifications avec Node seul, sans installation
### 安装
Necessite Node.js 20 ou plus recent et npm.
```
git clone https://github.com/StandFast1/CaseGraph.git
cd CaseGraph
npm install
cp .env.example .env.local
npm run db:migrate
npm run dev
```
Sous Windows, remplacer `cp` par `copy`. Definir `CASEGRAPH_AUDIT_KEY` dans `.env.local` avec un secret aleatoire d'au moins 32 caracteres: cette cle protege la chaine d'audit et ne doit jamais etre commitee. Le fichier de base SQLite est cree automatiquement par l'etape de migration.
### 演示
Ouvrir http://localhost:3000, cliquer sur Importer, charger le jeu de demonstration fictif, puis explorer: inspection des assertions, scellement d'une source (RFC 3161), rapport d'integrite sur /verify, checklist personnes disparues, telechargement du dossier signe. Toutes les donnees de demonstration sont entierement fictives.
### 关于司法可采性的说明
CaseGraph ne pretend pas rendre une preuve recevable a lui seul: la recevabilite est appreciee par le juge, pas par l'outil. Ce qu'il fait, c'est neutraliser les objections classiques: chaque assertion est liee a une capture hashee, scellee par une autorite RFC 3161 independante, inscrite dans une chaine HMAC inviolable, et le dossier complet peut etre re-verifie par un expert independant avec un script de 150 lignes sans dependance. Le point de confiance restant est le secret de la cle HMAC, et la signature de la TSA peut etre contre-verifiee avec l'outillage openssl standard (voir `docs/forensics.md`).
## 失踪人员模式
Personnes disparues 按钮会加载受 Trace Labs 启发的证据类别清单(基本信息、社交网络、地理位置、就业、财务、家庭、亲友关系、dark web、最后一次出现的日子)。面板会显示调查的完整度,将仍然为空的类别作为收集线索突出显示,并按所涵盖的类别过滤 canvas。
## 脚本
- `npm run dev`: 开发服务器
- `npm run build`: 生产环境构建
- `npm test`: forensic 核心的 Vitest 测试(45 个测试)
- `npm run db:generate` / `npm run db:migrate`: Drizzle 迁移
- `node scripts/verify-export.mjs `: 对导出档案进行外部验证
## 保证与限制
forensic 规则的详细信息、日志记录范围、链式公式的加固以及 RFC 3161 验证的限制都记录在 `docs/forensics.md` 中。安全策略和信任模型在 `SECURITY.md` 中进行了描述。该工具使用的是通过其他方式捕获的来源:它刻意不包含任何收集或抓取功能。所有演示数据均为虚构,不包含任何真实的个人数据。
## 致谢
由 OSMOS 设计和指导。与 Claude (Anthropic) 结对编程构建,由其在人类指定的规范下编写代码,并在每个阶段都经过人类审查和验证。
由 OSMOS 设计和指导。与 Claude (Anthropic) 结对编程构建,由其在人类指定的规范下编写代码,并在每个阶段都经过人类审查和验证。
## License
MIT, see the `LICENSE` file. Licence MIT, voir le fichier `LICENSE`.
标签:MITM代理, 图分析, 审计日志, 数字取证, 自动化攻击, 自动化脚本