88 行
3.3 KiB
Markdown
88 行
3.3 KiB
Markdown
# PazeSSL / PazeSSH
|
|
|
|
从零开始、**仅依赖 libc** 的 OpenSSL / OpenSSH 平替,纯 C 实现。
|
|
|
|
- **PazeSSL** —— TLS 1.2 / 1.3 协议栈 + 密码学原语库(替代 libcrypto + libssl)
|
|
- **PazeSSH** —— SSH-2 协议栈(替代 OpenSSH 客户端 / 守护端)
|
|
|
|
## 设计目标
|
|
|
|
1. **零第三方依赖**:不调用 OpenSSL、libsodium、GMP、mbedTLS……所有密码学算法自实现,仅用 ISO C17 libc + 平台系统调用获取熵。
|
|
2. **单一可移植内核**:加密原语跨 Windows / Linux / macOS 编译;平台相关代码仅限熵源与套接字。
|
|
3. **结构清晰**:`src/crypto` 原语层 → `src/ssl` / `src/ssh` 协议层 → `apps` 命令行。
|
|
4. **常量时间 / 无密钥相关分支**:密码学核心路径遵循抗时序攻击准则。
|
|
|
|
## 目录结构
|
|
|
|
```
|
|
include/paze/ 公共头文件
|
|
src/crypto/ 哈希/HMAC/AES/ChaCha20/Poly1305/AEAD/X25519/Ed25519/bignum/RSA/P-256/KDF/编码/ASN.1/X.509
|
|
src/ssl/ TLS 1.2 + 1.3 record/handshake/客户端/服务端
|
|
src/ssh/ SSH-2 transport/kex/auth/channel/客户端/守护端
|
|
src/util/ 内存/字节序/错误/日志
|
|
apps/pazessl/ 类 openssl 命令行
|
|
apps/ssh/ ssh 客户端
|
|
apps/sshd/ sshd 守护端
|
|
tests/ 已知答案(KAT)与协议自测
|
|
```
|
|
|
|
## 构建
|
|
|
|
仅需要支持 C17 的编译器与 libc,零第三方依赖。产物:`pazessl`(TLS 命令行)、`pssh`(SSH 工具集)、`psftp`(SFTP 客户端)。
|
|
|
|
### 通用方式(推荐,Windows / Linux / macOS 均可)
|
|
|
|
跨平台构建由 CMakeLists 驱动,会生成可执行文件到 `build/`:
|
|
|
|
```bash
|
|
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build build -j
|
|
```
|
|
|
|
### Linux
|
|
|
|
```bash
|
|
# 依赖:gcc/clang + cmake + make;不需要任何第三方库
|
|
sudo apt install -y gcc cmake make # Debian/Ubuntu
|
|
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build build -j
|
|
# 二进制在 build/pazessl build/pssh build/psftp
|
|
```
|
|
|
|
> 说明:LINUX 构建已修复(补齐 p384/p521 源文件与 libm 链接)。当前二进制在**Linux 下请实际验证**,如有报错反馈给项目。
|
|
|
|
### macOS
|
|
|
|
```bash
|
|
# 依赖:Xcode Command Line Tools(gcc/clang)+ cmake + make
|
|
xcode-select --install
|
|
brew install cmake
|
|
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build build -j
|
|
```
|
|
|
|
> 说明:macOS 使用 Unix Makefiles 生成器,理论上与 Linux 一致;**尚未在 macOS 实测**,如有问题请反馈。
|
|
|
|
### Windows
|
|
|
|
方案 A(推荐,gcc + PowerShell 脚本):
|
|
|
|
```powershell
|
|
.\build.ps1 # 产物输出到 bin/ (pazessl.exe pssh.exe pscp.exe psshd.exe psftp.exe ...)
|
|
```
|
|
|
|
方案 B(msvc 或 mingw,经由 cmake):
|
|
|
|
```powershell
|
|
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build build --config Release
|
|
```
|
|
|
|
## 状态
|
|
|
|
工程量巨大,按层推进。当前完成度见 `STATUS.md`。
|
|
|
|
TLS 1.3 已覆盖:完整握手(ECDHE + X25519/P-256)、RSA/ECDSA 证书(含 X.509 ECDSA P-256 证书解析与验签)、SHA-256/SHA-384 密码套件、1.3↔1.2 版本回退、**PSK 会话恢复**(NewSessionTicket 签发/解析、binder 校验、恢复握手免证书),并通过 OpenSSL `s_server`/`s_client` 双向互操作对测。
|
|
|
|
SSH-2 已覆盖:transport/kex/auth/channel、`pssh ssh`(shell/exec/端口转发/跳板 `-J`/`-W`/`-N`/agent 转发 `-A`/保活/自动重连)、`pssh scp`/`psftp`、`psshd`(多用户库+权限+fail2ban 兼容日志)。详见 `STATUS.md`。
|