atharv96k/distributed-upi-poc
GitHub: atharv96k/distributed-upi-poc
基于蓝牙 mesh 网络的离线 UPI 支付概念验证系统,实现零网络环境下的安全资金转移。
Stars: 0 | Forks: 0
# UPI Mesh —— 离线支付系统
零网络发送资金。支付数据包在您的手机上加密,通过 Bluetooth mesh 在陌生人的设备间跳跃传递,并在任何设备获取网络连接的瞬间完成结算。
此仓库包含后端服务器 + mesh 网络的软件模拟器 —— 完整演示可在单台笔记本电脑上运行。
## 技术栈
Java 17 · Spring Boot 3.3 · RSA-OAEP + AES-256-GCM · SHA-256 · Gossip 协议 · ConcurrentHashMap · @Transactional + @Version · H2
## 运行
**Windows:** `mvnw.cmd spring-boot:run`
**Mac/Linux:** `./mvnw spring-boot:run`
**随后打开:** `http://localhost:8080`
首次运行会下载约 80MB。JDK 17+ 是唯一的前提要求。
## 解决的三大问题
| 问题 | 解决方案 |
|---|---|
| 陌生人传递您的支付数据 —— 阻止他们读取内容 | RSA-OAEP + AES-256-GCM 混合加密 |
| 3 部手机同时抵达相同的 packet | 基于 SHA-256 哈希的原子操作 `putIfAbsent` —— 恰好结算一次 |
| 攻击者重放捕获的 packet | 加密内部的签名时间戳 + nonce |
## 架构
```
Sender Phone → [encrypt] → MeshPacket
→ gossip hop → hop → bridge phone
→ gets 4G → POST /api/bridge/ingest
→ hash → deduplicate → decrypt → validate → settle
```
## 核心文件
| 文件 | 功能 |
|---|---|
| `HybridCryptoService.java` | RSA-OAEP + AES-256-GCM 加密/解密 |
| `IdempotencyService.java` | 通过 ConcurrentHashMap 实现原子去重 |
| `BridgeIngestionService.java` | 主 pipeline |
| `SettlementService.java` | @Transactional 借记 + 贷记 |
| `MeshSimulatorService.java` | Gossip 协议模拟 |
## 核心测试
```
mvnw.cmd test -Dtest=IdempotencyConcurrencyTest
```
3 个线程同时投递相同的 packet。
结果:1 个 `SETTLED` · 2 个 `DUPLICATE_DROPPED` · 余额仅变动一次。
标签:AES-256-GCM, Bluetooth Mesh, CVE, Gossip协议, Java 17, meg, Nonce, P2P支付, RSA-OAEP, SHA-256, Spring Boot 3.3, UPI支付, 事务处理, 信息安全, 去重, 后端开发, 幂等性, 支付结算, 数字签名, 无网通讯, 混合加密, 离线支付, 移动支付, 端到端加密, 网状网络, 蓝牙网格网络, 蓝队防御, 金融科技, 防御绕过, 防重放攻击