moemairu/pangolin
GitHub: moemairu/pangolin
一个基于 Python 的概念验证项目,演示了使用 CRYSTALS-Kyber768 和 AES-256-GCM 的抗量子混合加密文件传输流程。
Stars: 0 | Forks: 0
# 🦔 Pangolin
*(假设这是一只穿山甲)*
**一个用于抗量子安全文件传输的 Python 概念验证。**
[](https://www.python.org/)
[](https://csrc.nist.gov/pubs/fips/203/final)
[](https://openquantumsafe.org/)
[]()
[](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, 加密工具, 后量子密码学, 安全文件传输, 无后门, 逆向工具