2026-08-13 14:48:50 +08:00

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/:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j

Linux

# 依赖: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

# 依赖: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 脚本):

.\build.ps1          # 产物输出到 bin/ (pazessl.exe pssh.exe pscp.exe psshd.exe psftp.exe ...)

方案 B(msvc 或 mingw,经由 cmake):

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/psftppsshd(多用户库+权限+fail2ban 兼容日志)。详见 STATUS.md

S
描述
pssh是比OpenSSH更小的一个SSH客户端/服务端,方便用于小型操作系统移植
自述文档 MIT
403 KiB
PazeSSH-r0.1
最新
2026-08-18 14:05:29 +08:00
语言
C 98.4%
PowerShell 1.3%
CMake 0.3%