openHiTLS 新功能实践:基于命令行的非对称加解密与数字签名操作指南
openHiTLS 新功能实践
openHiTLS 的设计哲学非常清晰:高效、敏捷、全场景覆盖。项目采用高度模块化的架构,算法与协议特性可按需裁剪,从而灵活控制 RAM/ROM 的占用规模。目前,openHiTLS 已支持标准的对称/非对称密码算法、(D)TLS 及 (D)TLCP 等安全通信协议,并针对 ARM、x86 等主流 CPU 架构做了深度性能优化。
在 TLS 握手机制中,客户端与服务端需要协商一套“密码套件”(Cipher Suite),以约定本次连接中使用的密钥交换、认证、加密和消息认证算法。此前,openHiTLS 在算法函数、对称加密、密钥生成等基础能力上已有扎实积累,而本次贡献的重点,正是将非对称加解密与数字签名能力完整地接入到工具层,让开发者能够开箱即用。
本次升级:我们带来了什么
这次开源贡献围绕密码套件的功能完善展开,主要集中在以下两个方向:
1. 公钥加密(asymutil)
基于 RSA 算法实现了完整的非对称加解密流水线。支持从密钥文件加载公钥/私钥、OAEP 填充模式、分段加解密,以及加密私钥的口令保护。
2. 数字签名(sign)
实现了 SM2 与 ECDSA 两大签名体系,覆盖密钥加载、摘要计算、签名生成与验证全流程。针对国密场景,特别适配了 SM2+SM3 的组合;而 ECDSA 则支持 P-256 等多种曲线,并可灵活选用 SM3、SHA256、SHA384、SHA512、SHA1 等摘要算法。
核心能力详解
RSA 非对称加密与分段处理
在 asymutil 的实现中,RSA 加密采用了 OAEP 填充模式(目前基于 SHA256 构建掩码生成函数)。由于 RSA 对单次加密的数据长度存在严格上限,实现中采用了分段加解密策略。例如,在 1024 bit 密钥长度下,OAEP 的最大单次明文长度约为 62 字节(计算方式:128 - 64 - 2)。工具会根据密钥长度自动规划分段大小,确保大文件也能被可靠处理。
同时,工具充分考虑了私钥的安全状态:既可以处理经对称密码加密存储的私钥(需提供口令解密),也支持明文私钥的直接加载,满足不同环境下的使用需求。
多算法数字签名体系
sign 模块的设计兼顾了国密合规与国际通用性:
- SM2 签名:遵循国密规范,摘要算法固定为 SM3,支持设置用户 ID(UserID)以适配 SM2 签名标准流程。
- ECDSA 签名:支持 P-256 等标准曲线,摘要算法可自由选择 SM3、SHA256、SHA384、SHA512、SHA1。
签名结果采用分离式存储——原文件与签名文件各自独立。验签时,工具会同时读取原始数据和 .sig 签名文件,通过公钥完成验证。需要特别说明的是,当前签名操作要求私钥为明文状态,暂不支持直接在加密私钥上进行签名(需先解密)。
快速上手指南
下面通过几个典型场景,展示如何在命令行中调用这些新能力。
RSA加解密:
生成RSA公私钥文件:
使用“123”作为口令。
1 | ./hitls genrsa -cipher aes128_cbc -out rsa_prv.pem 1024 #生成RSA私钥,使用aes128 cbc加密(可改),长度1024bit(可改), |
- 测试加解密一致:
1 | nano rsa_input.txt |
1 | ./hitls asymutil -keylen 1024 -enc -in ./rsa_input.txt -out ./rsa_mid.txt -passfile ./rsa_pub.pem -pkeyalg rsa # 加密 |
SM2签名:
- 生成SM2公私钥文件
1 | ./hitls genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sm2 -out sm2_priv.pem -aes128_cbc -pass pass:123 # 生成sm2私钥,使用aes128_cbc加密(可改) |
- 测试签名、验签操作
1 | nano sm2_input.txt |
1 | ./hitls sign -in sm2_input.txt -out sm2_output.txt -key sm2_priv.pem -pkeyalg sm2 # 签名 |
P_256签名:
- 生成P_256公私钥文件
1 | ./hitls genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P_256 -aes128_cbc -pass pass:123 -out P_256_priv.pem # 生成P-256曲线上的ECDSA私钥,使用aes128_cbc加密(可改) |
- 测试签名、验签操作
1 | ./hitls sign -in P_256_input.txt -out P_256_output.txt -key P_256_priv.pem -pkeyalg ecdsa # 签名 |
致谢贡献者
本次能力的完善离不开社区开发者的共同努力。特别感谢以下五位贡献者(按姓名拼音首字母排序):
- 董晓冉、刘恩宇、陆泊羽、王昊伟、周家熠
结语
随着非对称加密与数字签名能力的落地,openHiTLS 在密码套件层面的工具支撑已更加完整。无论你是需要在资源受限的嵌入式设备中集成轻量级 RSA 加密,还是要在国密合规场景下构建 SM2/SM3 的签名验签流程,都可以借助 openHiTLS 的模块化设计快速达成目标。
密码学的世界没有终点,只有持续的迭代与完善。欲了解更多详情,欢迎访问 openHiTLS 社区官网 及代码仓库,亲自体验这套敏捷高效的密码学开发套件。
- Author: dawn_r1sing
- Created at : 2026-05-25 11:55:43
- License: This work is licensed under CC BY-NC-SA 4.0.(转载请注明出处)