- tls_handshake12.c: 完整 TLS 1.2 client/server 状态机(ECDHE-RSA/ECDSA/RSA AES-GCM + CHACHA20-POLY1305),支持 1.3 收到 1.2 ServerHello/ClientHello 后回退 - tls_record.c: 修正 TLS 1.2 AEAD-GCM 两处 RFC 偏差: AAD length 字段应为明文长度 ctlen(RFC 5246 6.2.3.3)原为 ct+16; GCMNonce = fixed_iv(4) || explicit_nonce(8)(RFC 5288 3)原顺序相反 - tls_handshake13.c: CV/Finished transcript 处理、1.3 套件记录版本修正、链式证书构造 - x509.c: AttributeTypeAndValue 补 SEQUENCE; validity 2050 年前用 UTCTime - apps/pazessl: s_client/s_server 增加 -tls1_2 - 新增 build.ps1、build/run_tls_test.ps1、build/run_openssl_interop.ps1 验证: 自测 4/4(1.2/1.3 双向 + 回退); OpenSSL 互操作 4/4(s_client/s_server 双向 1.2/1.3)
72 行
3.6 KiB
Markdown
72 行
3.6 KiB
Markdown
# STATUS — 项目完成度
|
||
|
||
> PazeSSL / PazeSSH:从零实现、仅依赖 libc 的 OpenSSL / OpenSSH 平替(纯 C, ISO C17)。
|
||
> 按层推进,本文件汇总当前各层完成度(2026-08-13 更新)。
|
||
|
||
## 总体
|
||
|
||
| 层 | 模块 | 状态 |
|
||
|---|---|---|
|
||
| 原语层 | `src/crypto` — 哈希/对称/非对称/编码/ASN.1/X.509 | ✅ 完整实现 |
|
||
| 协议层 | `src/ssl` — TLS 1.2 / 1.3 | ✅ TLS 1.2 + 1.3 完整实现(含版本回退与 OpenSSL 互操作验证) |
|
||
| 协议层 | `src/ssh` — SSH-2 transport/kex/auth/channel + SFTP | ✅ 完整实现 |
|
||
| 应用层 | `apps/*` — 11 个 CLI | ✅ 可用 |
|
||
| 测试 | ~~tests/*~~ | ❌ 已从仓库移除(KAT 本地化) |
|
||
|
||
## 密码学原语(✅ 完整)
|
||
|
||
- 哈希:SHA-1 / SHA-256 / SHA-512 / MD5 / HMAC / HKDF / PBKDF2
|
||
- 对称:AES-128/192/256、AES-CBC/GCM、ChaCha20、Poly1305、ChaCha20-Poly1305 AEAD
|
||
- 曲线:X25519、Ed25519、P-256、ECDSA(大数运算自研:模幂、模逆、Montgomery)
|
||
- 非对称:RSA(密钥生成/加解密/签名)、X.509 证书解析与构建、PEM/DER 编解码
|
||
- 其他:ASN.1 DER、base64、hex、常量时间准则
|
||
|
||
## PazeSSL — TLS(🔶 部分完成)
|
||
|
||
- ✅ TLS 1.3 客户端/服务端状态机(record、handshake、key schedule、扩展)
|
||
- ✅ TLS 1.2 客户端/服务端状态机 + 1.3↔1.2 版本回退(ECDHE-RSA/ECDSA/RSA AES-GCM、CHACHA20-POLY1305)
|
||
- ✅ OpenSSL 互操作对测 4/4:s_server↔s_client 双向 TLS 1.3 / TLS 1.2(`build/run_openssl_interop.ps1`)
|
||
- ✅ 证书链与信任锚加载、RSA/ECDSA 私钥 PEM 解析
|
||
- ⬜ TLS 1.3 服务端 SHA-384 密码套件握手重放(SHA-256 已覆盖)
|
||
- ⬜ PSK / 0-RTT / HRR 实际数据路径
|
||
|
||
## PazeSSH — SSH-2(✅ 完成)
|
||
|
||
- transport:版本交换、密钥交换(curve25519-sha256)、NEWKEYS、包加密
|
||
- 认证:password / publickey(authorized_keys 校验)
|
||
- 通道:session(exec/shell 真实进程执行)、direct-tcpip(出站桥接)
|
||
- **SFTP 子系统 v3**:OPEN/READ/WRITE/OPENDIR/READDIR/STAT/REALPATH 等,与 OpenSSH sftp / scp -s 互操作(Git OpenSSH 实测通过)
|
||
- 客户端命令:
|
||
- `pssh ssh` — 远程 shell / 执行命令,`-L`/`-R`/`-D` 端口转发
|
||
- `pssh scp` — SFTP 优先(OpenSSH 9.x 默认),回退 legacy SCP;`-r` 递归、`-p` 保留时间戳
|
||
- `pssh keygen` / `keyscan` / `copy-id` — 密钥工具
|
||
- `pssh agent` / `add` / `ssha` — agent 守护进程与密钥管理
|
||
- `pssh sshd` — 服务端:多用户库 + 分级权限 + publickey 认证 + SFTP 子系统
|
||
- 密码套件:chacha20-poly1305@openssh.com、aes128/256-gcm@openssh.com
|
||
|
||
## 应用(✅ 可用)
|
||
|
||
| 命令 | 说明 |
|
||
|---|---|
|
||
| `pssh` | SSH 工具集入口(ssh/scp/sshd/keygen/keyscan/copy-id/agent/add/useradd) |
|
||
| `pazessl` | 类 openssl 命令行(s_client/s_server/verify/genrsa/req/x509) |
|
||
| `pssh useradd` | 管理 sshd 用户库(用户名:哈希:权限) |
|
||
|
||
## 与 OpenSSH 对比
|
||
|
||
| OpenSSH | PazeSSH | 说明 |
|
||
|---|---|---|
|
||
| `ssh` | `pssh` / `pssh ssh` | 远程 shell / 执行命令 / 端口转发 |
|
||
| `scp` | `pssh scp` | SFTP 优先 + legacy SCP 回退 |
|
||
| `sftp` | `pssh sshd` 子系统 | 服务端 SFTP v3,互操作通过 |
|
||
| `ssh-keygen` | `pssh keygen` | ed25519/rsa/ecdsa |
|
||
| `ssh-keyscan` | `pssh keyscan` | known_hosts 格式 |
|
||
| `ssh-copy-id` | `pssh copy-id` | 安装公钥 |
|
||
| `ssh-agent` / `ssh-add` | `pssh agent` / `add` | agent 密钥管理 |
|
||
| `sshd` | `pssh sshd` | 多用户 + 权限 + 公钥认证 + SFTP |
|
||
|
||
## 遗留项(已知)
|
||
|
||
- X.509 ECDSA 证书解析仍失败(P-256 曲线点验证)
|
||
- TLS 1.3 SHA-384 服务端握手重放、PSK/0-RTT 未覆盖
|