moemairu/pangolin

GitHub: moemairu/pangolin

一个基于 Python 的概念验证项目,演示了使用 CRYSTALS-Kyber768 和 AES-256-GCM 的抗量子混合加密文件传输流程。

Stars: 0 | Forks: 0

# 🦔 Pangolin *(假设这是一只穿山甲)* **一个用于抗量子安全文件传输的 Python 概念验证。** [![Python](https://img.shields.io/badge/Python-3.11%2B-blue.svg?style=flat&logo=python&logoColor=white)](https://www.python.org/) [![NIST PQC](https://img.shields.io/badge/NIST-FIPS%20203%20%28ML--KEM%29-brightgreen.svg?style=flat)](https://csrc.nist.gov/pubs/fips/203/final) [![liboqs](https://img.shields.io/badge/liboqs-Open%20Quantum%20Safe-yellow.svg?style=flat)](https://openquantumsafe.org/) [![AES-256-GCM](https://img.shields.io/badge/Encryption-AES--256--GCM-blueviolet.svg?style=flat)]() [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](https://www.gnu.org/licenses/gpl-3.0) [概述](#-overview) • [安装](#%EF%B8%8F-installation) • [快速开始](#-quick-start) • [文档](DOCS.md)
## ✨ 概述 Pangolin 模拟了真实世界中的双方文件传输,其中发送方和接收方在**隔离的工作空间**中操作。发送方使用接收方的公钥加密文件;接收方使用其私钥解密文件。除了显式传输的三个工件之外,不假设存在任何共享文件系统。 | 组件 | 技术 | 作用 | | :--- | :--- | :--- | | **密钥封装** | **CRYSTALS-Kyber768 (FIPS 203)** | 抗量子密钥交换 | | **对称加密** | **AES-256-GCM** | 经过认证的文件加密 | | **完整性** | **SHA-256** | 传输前后的哈希校验 | | **传输** | **文件拷贝(模拟)** | 模拟带外通道 | *有关完整的技术细节 — 加密参数、架构图、模块参考、基准测试和安全分析 — 请参阅 [**DOCS.md**](DOCS.md)。* ## 🛠️ 安装 ### 前置条件 - **Python 3.11+** - **CMake**、**Ninja**、**GCC/Clang**、**OpenSSL headers**(用于构建 `liboqs`) ### 1. 构建 liboqs(原生 C 库) **🐧 Ubuntu / Debian:** ``` sudo apt update sudo apt install -y cmake gcc ninja-build libssl-dev git clone --depth 1 https://github.com/open-quantum-safe/liboqs.git cd liboqs mkdir build && cd build cmake -GNinja .. ninja sudo ninja install sudo ldconfig ``` **🐧 Arch Linux:** ``` sudo pacman -S cmake gcc ninja openssl git clone --depth 1 https://github.com/open-quantum-safe/liboqs.git cd liboqs mkdir build && cd build cmake -GNinja .. ninja sudo ninja install ``` **🐧 Fedora / RHEL:** ``` sudo dnf install cmake gcc ninja-build openssl-devel git clone --depth 1 https://github.com/open-quantum-safe/liboqs.git cd liboqs mkdir build && cd build cmake -GNinja .. ninja sudo ninja install ``` **🍎 macOS:** ``` brew install cmake ninja openssl git clone --depth 1 https://github.com/open-quantum-safe/liboqs.git cd liboqs mkdir build && cd build cmake -GNinja -DOPENSSL_ROOT_DIR=$(brew --prefix openssl) .. ninja sudo ninja install ``` ### 2. 安装 Python 依赖项 你可以在虚拟环境中使用标准的 `pip`,或者根据你的配置使用系统级软件包。 **选项 A:虚拟环境(任何操作系统)** ``` python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` **选项 B:系统软件包(例如,通过 AUR 的 Arch Linux)** ``` sudo pacman -S python-cryptography python-psutil yay -S python-liboqs ``` ## 🚀 快速开始 按照以下步骤执行完整的量子安全文件传输模拟: ``` # 1. Receiver 生成一个 Kyber768 keypair python receiver/keygen.py # → receiver/keys/public.bin (共享此文件) # → receiver/keys/secret.bin (对此保密) # 2. 与 sender 共享 public key cp receiver/keys/public.bin sender/public_keys/public.bin # 3. Sender 加密文件 python sender/encrypt.py --file "sender/data/document.pdf" --pubkey "sender/public_keys/public.bin" # → document.pdf.enc (加密的 payload) # → document.pdf.kem (KEM ciphertext) # → document.pdf.meta.json (metadata + integrity hash) # 4. 将全部 3 个文件传输给 receiver cp sender/data/encrypted/document.pdf.* receiver/data/received/ # 5. Receiver 解密并验证 python receiver/decrypt.py --enc-file "receiver/data/received/document.pdf.enc" --seckey "receiver/keys/secret.bin" # → ✅ Integrity Verification PASSED:文件是真实且未被篡改的。 ``` ## 🏗️ 项目结构 ``` pangolin/ ├── receiver/ │ ├── keygen.py # CLI: generate Kyber768 keypair │ ├── decrypt.py # CLI: decrypt received package │ └── core/ # cryptographic library │ ├── kyber.py # Kyber768 KEM wrapper │ ├── aes.py # AES-256-GCM encrypt/decrypt │ ├── integrity.py # SHA-256 hashing & verification │ ├── metadata.py # JSON metadata management │ ├── logger.py # dual-output logging │ └── benchmark.py # performance benchmarking suite ├── sender/ │ ├── encrypt.py # CLI: encrypt file for receiver │ └── core/ # cryptographic library (mirror) ├── requirements.txt ├── README.md # You are here! 👋 └── DOCS.md # 📖 Full technical documentation ```
**🦔 Pangolin** — *因为即使是你的文件也值得拥有量子装甲。*
采用 GNU GPLv3 授权。在进行任何生产环境使用之前,请参阅 DOCS.md § 安全说明 了解重要警告。
标签:AES-256-GCM, Bash脚本, CRYSTALS-Kyber, Python, 加密工具, 后量子密码学, 安全文件传输, 无后门, 逆向工具