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, 企业安全, 分布式存储, 区块链, 去中心化, 合规, 安全架构, 审计, 密码学, 异常检测, 手动系统调用, 提示词模板, 数据加密, 日志审计, 智能合约, 机器学习, 根权限防护, 溯源, 终端安全, 网络安全, 网络资产管理, 请求拦截, 防篡改, 隐私保护, 零知识证明, 高可用性