Fabi2708/cti-psi
GitHub: Fabi2708/cti-psi
基于 C 语言和 libsodium 实现的隐私保护私有集合求交工具,用于在双方不暴露完整数据集的前提下比对共享的威胁情报 IOC 指标。
Stars: 1 | Forks: 0
# 用于威胁情报共享的私有集合求交
本仓库包含了一个**私有集合求交(PSI)**的简单实现,使用了真实的网络威胁情报数据。
该项目演示了双方如何在不向对方暴露完整数据集的情况下,识别出共享的入侵指标(IOC)。
本项目使用的数据集来源于 [abuse.ch ThreatFox](https://threatfox.abuse.ch/)。
该 PSI 实现使用 **C** 语言编写,基于 [libsodium 加密库](https://libsodium.org/)。
## 概述
威胁情报共享对于提升网络防御能力和识别恶意基础设施至关重要。然而,由于隐私、运营和安全方面的顾虑,各组织通常不愿共享原始的 IOC 数据集。
私有集合求交(PSI)提供了一种隐私保护的解决方案,允许双方在不暴露不匹配条目的情况下,计算其数据集的交集。
本仓库使用分割在双方之间的 IOC 数据集模拟了该场景:
- Alice
- Bob
## 使用的技术
- C
- Python
- [libsodium](https://libsodium.org/)
- CSV/TXT 数据集
## 数据集
原始的 IOC 数据集获取自:
- [abuse.ch 的 ThreatFox](https://threatfox.abuse.ch/)
预处理脚本会清洗并提取 IOC 值,例如:
- 域名
- IP 地址
- URL
- 文件哈希值
随后,清洗后的数据集将被分割为独立的多个数据集,代表参与 PSI 的两个不同组织。
## PSI 场景
本项目模拟了一个威胁情报共享环境,其中:
- Alice 拥有一份 IOC 数据集
- Bob 拥有另一份 IOC 数据集
使用私有集合求交,双方可以在不暴露其完整威胁情报源的情况下,识别出重叠的恶意指标。
## 运行项目
### 编译
```
gcc psi.c -lsodium -o psi
```
### 运行
```
./psi
```
## 预处理工作流
Python 脚本用于在执行 PSI 之前准备数据集。
### 清洗数据集
```
python3 clean_dataset.py
```
### 分割数据集
```
python3 split_dataset.py
```
这将生成:
- `alice_dataset.txt`
- `bob_dataset.txt`
## 目的
创建本仓库是出于与以下相关的教育和研究目的:
- 私有集合求交(PSI)
- 隐私保护计算
- 网络威胁情报共享
- 网络安全研究
## 参考
- [abuse.ch ThreatFox](https://threatfox.abuse.ch/)
- [libsodium 文档](https://doc.libsodium.org/)
- [私有集合求交 – 维基百科](https://en.wikipedia.org/wiki/Private_set_intersection)
标签:abuse.ch, Burp项目解析, IOC, libsodium, MPC, PETs, PSI, Python, ThreatFox, 多方安全计算, 失陷标证, 威胁情报, 威胁情报共享, 安全计算, 客户端加密, 密码学, 密码管理, 开发者工具, 恶意IP, 恶意URL, 恶意域名, 手动系统调用, 文件哈希, 无后门, 网络威胁情报, 网络安全, 网络安全, 逆向工具, 隐私保护, 隐私保护, 隐私增强技术, 隐私计算, 隐私集合求交