Dany-6/Project-IronLog
GitHub: Dany-6/Project-IronLog
IronLog 是一个结合 eBPF 端点监控、Hyperledger Fabric 许可链、HSM 硬件签名和 IPFS 去中心化存储的加密可验证日志完整性监控系统,确保关键审计轨迹即使在 root 权限被攻陷时仍无法被篡改或删除。
Stars: 1 | Forks: 0
# IronLog 项目
## 📖 项目概述
IronLog 项目是一个加密可验证、防篡改的文件和日志完整性监控架构,专为高安全性企业环境而设计。通过结合端点 eBPF 监控、链下 IPFS 存储、硬件安全模块 (HSM) 签名以及许可链账本,IronLog 可确保关键审计轨迹不会被静默篡改或删除——即使攻击者拥有 root 权限也无能为力。
## ✨ 核心功能与特性
- **不可变审计轨迹:** 所有文件更改均被记录到 Hyperledger Fabric 许可链中,确保零篡改或无法追溯性删除。
- **高吞吐量边缘监控:** 利用 eBPF hooks 结合 BLAKE3 哈希算法,在内核级别监控文件系统更改,且不会导致性能下降。
- **密码学不可否认性:** 每个日志事件均通过 FIPS 140-2 Level 3 硬件安全模块 (HSM) 使用 ECDSA-P384 进行签名。
- **去中心化安全存储:** 审计 payload 通过 AES-256-GCM 加密并存储在私有 IPFS 集群中,保证高可用性和合规性保留。
- **AI 驱动的异常检测:** 通过 Kafka 将区块链事件流式传输到 ML 推理引擎,以在严格误报 SLA 的前提下检测复杂的多步骤攻击链。
- **零知识证明验证:** 在智能合约中利用 Groth16 zk-SNARK 证明,根据策略允许列表验证文件完整性,而无需暴露完整数据集。
## 🚀 新手安装与执行指南
欢迎使用实操部署指南。即使您是初学者,这份分步教程也将帮助您安装必要的工具、启动本地测试区块链,并将 IronLog 智能合约 (chaincode) 部署到其中。
## 第 1 步:安装前置条件
在开始之前,您的计算机需要三个基本工具:**Git**、**Go** 和 **Docker**。请根据您的操作系统选择并仔细按照说明操作。
### 🪟 Windows 用户
1. **安装 Git:**
- 从 [git-scm.com/download/win](https://git-scm.com/download/win) 下载安装程序并运行。您可以保持所有设置为默认值。
2. **安装 Go(编程语言):**
- 从 [go.dev/dl](https://go.dev/dl/) 下载 Windows MSI 安装程序。
- 运行安装程序并按照提示操作。
3. **安装 Docker Desktop(对区块链至关重要):**
- 从 [docker.com](https://docs.docker.com/desktop/install/windows-install/) 下载 Docker Desktop。
- 运行安装程序。**重要提示:** 确保在安装过程中勾选了“Use WSL 2 instead of Hyper-V”选项。
- 在出现提示时重新启动计算机。
- 重新启动后,打开“Docker Desktop”应用程序并接受条款,以确保 Docker 引擎在后台运行。
### 🍎 macOS 用户
*提示:我们建议使用终端应用程序和 Homebrew 以获得最简便的安装体验。*
1. **安装 Homebrew(如果您尚未安装):**
- 打开您的 `Terminal` 应用程序并粘贴以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. **安装 Git 和 Go:**
- 在终端中运行以下命令:
brew install git go
3. **安装 Docker Desktop:**
- 运行以下命令:
brew install --cask docker
- 打开您的 `Applications` 文件夹,启动 **Docker**,并授予必要的权限。让它保持在后台运行。
### 🐧 Linux 用户 (Ubuntu/Debian)
打开终端并逐一运行以下命令:
1. **安装 Git 和 Docker:**
sudo apt-get update
sudo apt-get install git docker.io docker-compose curl -y
2. **配置 Docker 权限:**
- 这可以避免每次使用 Docker 时都需要 `sudo`。
sudo usermod -aG docker $USER
newgrp docker
3. **安装 Go:**
wget https://go.dev/dl/go1.22.2.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
*(要使 Go 永久生效,请将 `export PATH=$PATH:/usr/local/go/bin` 添加到您的 `~/.bashrc` 文件中)。*
## 第 2 步:编译 IronLog 智能合约
现在您的工具已安装完毕,让我们验证一下 IronLog 智能合约(用 Go 编写)能否正确编译。这可以证明您的 Go 安装是有效的。
1. 打开终端(Windows 上为命令提示符或 PowerShell,Mac/Linux 上为终端)。
2. 导航到 IronLog 的 `chaincode` 目录:
# 根据您保存项目的位置调整此路径!
cd "c:\Users\bahar\Downloads\Project IronLog\chaincode"
3. 运行 Go build 命令:
go build ./...
## 第 3 步:启动本地区块链网络
为了实际运行合约,我们需要一个区块链!我们将使用官方的 Hyperledger Fabric 测试网络。
1. 在您的计算机上(例如桌面或文档)创建一个新文件夹,并在该文件夹中打开一个终端。
2. 下载 Fabric Samples 仓库:
git clone https://github.com/hyperledger/fabric-samples.git
3. 进入测试网络文件夹:
cd fabric-samples/test-network
4. 启动区块链网络并创建一个名为 `mychannel` 的通道(一个私有账本):
./network.sh up createChannel -c mychannel
## 第 4 步:将 IronLog 合约部署到区块链
现在我们告诉区块链网络加载我们的 IronLog 代码。
1. 确保您的终端仍处于 `fabric-samples/test-network` 目录中。
2. 运行部署命令。**您必须将 `../path/to/Project IronLog/chaincode` 部分**更改为您的 IronLog chaincode 文件夹所在的实际路径!
# 示例:
./network.sh deployCC -ccn file_integrity -ccp "c:/Users/bahar/Downloads/Project IronLog/chaincode" -ccl go
- `-ccn`:链码名称 (`file_integrity`)
- `-ccp`:链码路径(您代码所在的位置)
- `-ccl`:链码语言 (`go`)
## 第 5 步:执行交易(测试应用)
部署完成后,您可以像真实应用程序那样与区块链进行交互!我们将使用命令行模拟 IronLog 边缘 Agent 提交文件更改。
1. 首先,我们必须设置一些环境变量,以便我们的终端表现得像一个区块链用户(Org1 的 Admin):
**对于 Linux/Mac (Bash):**
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
2. **记录文件更改事件:**
现在,我们“调用”智能合约中的 `LogFileChange` 函数。粘贴这条很长的命令(它模拟将单个日志事件保存到区块链):
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n file_integrity -c '{"function":"LogFileChange","Args":["/var/log/auth.log", "blake3_hash_123", "sha256_hash_123", "ipfs_cid_xyz", "dek_ref_999", "agent_001", "168285999000", "hsm_sig_abc", "attest_hash_def", "zkp_proof_123"]}'
*如果成功,您将看到一条消息提示 `Chaincode invoke successful. result: status:200`。*
3. **验证记录是否已保存:**
让我们查询区块链以证明记录确实存在。等待几秒钟让交易被打包进区块,然后运行:
peer chaincode query -C mychannel -n file_integrity -c '{"function":"GetRecord","Args":[""]}'
*(注意:由于我们的蓝图代码目前主要集中在 `LogFileChange` 逻辑上,您需要查看 peer 的 Docker 日志才能看到事件发射,或者自行扩展 Go 代码以包含 `GetRecord` 读取函数!)*
## 第 6 步:清理
测试完成后,您可以关闭区块链网络以释放计算机内存。
在 `fabric-samples/test-network` 目录中运行:
```
./network.sh down
```
这将移除 Docker 容器并清除本地账本数据。
标签:AES-256-GCM, Apex, BLAKE3, Docker镜像, ECDSA, EVTX分析, FIPS 140-2, HSM, Hyperledger Fabric, IPFS, Kafka, SonarQube插件, x64dbg, zk-SNARKs, 企业安全, 分布式存储, 区块链, 去中心化, 合规, 安全架构, 审计, 密码学, 异常检测, 手动系统调用, 提示词模板, 数据加密, 日志审计, 智能合约, 机器学习, 根权限防护, 溯源, 终端安全, 网络安全, 网络资产管理, 请求拦截, 防篡改, 隐私保护, 零知识证明, 高可用性