资讯动态

openHiTLS 开源密码套件全解:五大组件架构、特性全景与 CMake 构建实战

发布时间:2026/10/14 17:42:44 来源:尧图企业网站定制
密码学网络安全【免费下载链接】openHiTLS旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求让密码技术应用更简单同时探索后量子等先进算法创新实践构建密码前沿技术底座项目地址https://gitcode.com/openHiTLS/openhitls点击查看免费下载openHiTLS 是面向全场景的开源密码学开发套件提供标准密码算法、(D)TLS/(D)TLCP 安全通信协议与 PKI 证书能力其核心设计是通过 CMake 特性开关实现模块与算法的按需裁剪。本文基于仓库 README-zh.md 展开结合 CMakeLists.txt、cmake/hitls_options.cmake 等构建源码系统讲解 openHiTLS 的组件划分、特性清单、构建安装流程与交叉编译方法帮助开发者在十分钟内完成环境搭建并掌握特性级裁剪能力。一、项目定位与架构总览openHiTLS 的目标是提供高效、敏捷的全场景开源密码学开发套件采用轻量级、可剪裁的软件技术架构让密码技术应用更简单同时探索后量子等先进算法创新实践。据 README-zh.md 描述其架构高度模块化RAM/ROM 尺寸取决于所选特性已支持 5 个组件算法特性可按需配置并已通过 ISO 19790 认证支持 ARM、x86 架构 CPU 上的算法性能优化。从仓库源码结构看当前代码版本标识为openHiTLS 0.4.0见 include/bsl/bsl_version.h 中的OPENHITLS_VERSION_S默认值。仓库顶层目录与五大组件一一对应另有命令行工具与测试工程目录组件/角色说明bsl/BSLBase Support Layer基础支持层SAL 系统适配、ASN.1、PEM/Base64、错误堆栈、日志、列表、参数等基础能力需与其他组件一起使用crypto/Crypto完整密码算法库对称/非对称算法、哈希、MAC、KDF、DRBG、后量子算法可被 TLS 使用也可仅与 BSL 搭配tls/TLS覆盖 TLS1.3、DTLS1.3、TLS1.2、DTLS1.2 及 TLCP/DTLCP包含握手、记录层、告警、证书与连接管理可与 Crypto、BSL 或第三方密码组件、PKI 库配合使用pki/PKI证书、CRL 解析与验证CSR 生成证书链生成与验证等auth/Auth认证组件Privacy Pass token、TOTP/HOTP、SPAKE2 等协议apps/命令行工具编译产物为hitls入口见 apps/src/hitls.c功能类似 openssl 命令行codecs/编解码编码/解码链如 PKCS#8 密钥解码include/公共头文件按模块分层include/crypto/、include/tls/、include/bsl/、include/pki/、include/auth/testcode/测试工程SDV 测试用例、benchmark、demo 示例、构建脚本cmake/构建系统特性选项、构建预设presets、工具链文件toolchain组件间的典型搭配关系是Crypto 既可独立与 BSL 组合提供纯算法能力也可作为 TLS 的密码底座TLS 还可对接第三方密码组件或 PKI 库这种松耦合设计正是RAM/ROM 尺寸取决于所选特性的底层原因。二、功能特性全景README-zh.md 将特性分为功能特性与DFX 特性两类完整清单如下。2.1 协议支持TLS 系TLS1.3、DTLS1.3、TLS1.3-Hybrid-Key-Exchange混合密钥交换、TLS-Provider、TLS-Multi-KeyShare、TLS-Custom-Extension、TLCP、DTLCP、TLS1.2、DTLS1.2认证协议Privacy Pass token、HOTP、TOTP、SPAKE2。在构建系统中这些协议能力对应独立的特性开关。以 cmake/hitls_options.cmake 为例HITLS_TLS_PROTO_TLS13、HITLS_TLS_PROTO_DTLS13、HITLS_TLS_PROTO_TLCP11、HITLS_TLS_PROTO_DTLCP11等选项可单独裁剪TLS 1.3 的扩展能力如HITLS_TLS_FEATURE_KEM混合 KEM、HITLS_TLS_FEATURE_PHA握手后认证、HITLS_TLS_FEATURE_SESSION_TICKET会话票证也都是独立选项说明协议特性支持细粒度开关。2.2 密码算法类别支持算法后量子算法ML-DSA、ML-KEM、SLH-DSA、XMSS、Classic McEliece、FrodoKEM对称算法AES、SM4、Chacha20 及各类对称加密模式GCM/CBC/CTR/CCM/ECB/XTS/CFB 等传统非对称算法RSA、RSA-Bind、DSA、ECDSA、EDDSA、ECDH、DH、SM2、SM9、Paillier、ElGamal随机数DRBG、GM-DRBG密钥派生HKDF、SCRYPT、PBKDF2哈希算法SHA 系列、MD5、SM3消息认证码HMAC、CMAC其他HPKE源码侧可在 crypto/ 下逐目录印证crypto/mlkem/、crypto/mldsa/、crypto/slh_dsa/hbs 目录、crypto/xmsshbs 目录、crypto/mceliece/、crypto/frodokem/对应后量子算法crypto/sm2/、crypto/sm9/、crypto/ecc/、crypto/rsa/、crypto/dh/对应国密与传统非对称算法。后量子证书与 TLS 混合密钥交换能力由HITLS_TLS_FEATURE_KEM、HITLS_CRYPTO_HYBRIDKEM、HITLS_CRYPTO_COMPOSITE等选项支撑。2.3 PKI 能力后量子能力XMSS、ML-DSA、ML-KEM、SLH-DSA 证书能力ML-DSA CMS SignedData 能力传统证书能力X.509 解析验证、CRL 解析验证、CSR 请求生成、证书链生成、部分/全部证书链验证封装格式PKCS7、PKCS8、PKCS12。实现位于 pki/pki/x509_cert/证书、pki/x509_crl/CRL、pki/x509_csr/CSR、pki/x509_verify/链验证、pki/cms/CMS、pki/pkcs12/PKCS#12。配套的端到端示例可参考 testcode/demo/example_pki_certificate_generate.c、testcode/demo/example_pki_chain_verify.c、testcode/demo/example_pki_pq_certificate_generate.c 等。2.4 命令行工具支持基础命令、随机数、加解密、密钥和参数管理、证书等。命令行工具编译产物为hitls其入口在 apps/src/hitls.capps/下按命令拆分源文件如app_rand.c、app_enc.c、app_x509.c、app_client.c等命令列表覆盖help/version/list、enc/mac/dgst/kdf、genpkey/pkeyutl、x509/crl/req/verify、s_client/s_server等详见 docs/zh/4_使用指南/5_命令行指南.md。注意hitls命令行工具默认不参与编译需在 CMake 配置时显式开启-DHITLS_BUILD_EXEON。2.5 DFX可设计、可维护、可测试特性弹性架构特性高度模块化支持按需裁剪特性性能优化基于 ARMv8、ARMv7、x86_64 CPU 的算法性能优化构建选项含HITLS_ASM_X8664、HITLS_ASM_ARMV8、HITLS_ASM_ARMV7等且支持 AVX512 变体HITLS_ASM_X8664_AVX512可维可测支持基于日志和错误堆栈的功能维测日志模块位于 bsl/log/错误堆栈模块位于 bsl/err/。三、快速开始克隆与默认构建按 README-zh.md「开发 → 快速开始」最小构建路径如下git clone https://gitcode.com/openhitls/openhitls.git cd openhitls mkdir -p build cd build cmake .. make make install其中cmake ..为默认构建启用所有特性同时生成静态库和共享库。从 cmake/hitls_options.cmake 可见HITLS_BUILD_PROFILE默认值为full而 cmake/presets/full.cmake 会强制打开HITLS_BSL、HITLS_CRYPTO、HITLS_PKI、HITLS_TLS、HITLS_AUTH五个组件开关默认安装前缀为/usr/local头文件安装至/usr/local/include/hitls/下按模块划分的子目录对应 CMakeLists.txt 末尾的install(DIRECTORY ...)规则库文件安装至/usr/local/lib非 root 用户执行make install需加sudo或在配置时通过-DCMAKE_INSTALL_PREFIX目录指定自定义前缀。构建完成后仓库中还提供了一整套算法级 demo见 testcode/demo/含 TLS1.2/1.3 基础握手、DTLS1.3 UDP、SM2 签名验签、SM3 摘要、ML-KEM 封装解封装等数十个示例以及 benchmark 工程testcode/benchmark/可作为集成后的验证与压测素材。四、CMake 构建选项详解openHiTLS 使用纯 CMake 构建系统通过-D参数控制所有构建选项。在 README-zh.md 给出的常用配置之上结合 docs/zh/4_使用指南/1_构建及安装指导.md 的完整参数表常用命令与参数如下。4.1 常用配置命令# 准备构建目录 cd openhitls mkdir -p ./build cd ./build # 默认构建启用所有特性同时生成静态库和共享库 cmake .. # 全量构建使用预设 cmake .. -DHITLS_BUILD_PROFILEfull # 手动选择特性不加载内置预设只启用 SHA256 cmake .. -DHITLS_BUILD_PROFILEnone -DHITLS_CRYPTO_SHA256ON # 启用汇编优化自动检测平台类型x86_64 / ARMv8 / ARMv7 cmake .. -DHITLS_ASMON # x86_64 汇编优化全量构建 cmake .. -DHITLS_BUILD_PROFILEfull -DHITLS_ASM_X8664ON # 构建命令行工具 hitls cmake .. -DHITLS_BUILD_EXEON # 打包为单个库 cmake .. -DHITLS_BUNDLE_LIBON # 仅静态库 / 仅动态库 cmake .. -DHITLS_BUILD_SHAREDOFF cmake .. -DHITLS_BUILD_STATICOFF # 覆盖编译选项 / 链接选项 cmake .. -DHITLS_COMPILE_OPTIONS-O0;-g cmake .. -DHITLS_SHARED_LINK_FLAGS-shared;-Wl,-z,now # 修改构建类型 cmake .. -DCMAKE_BUILD_TYPEDebug # 执行构建和安装 make -j make install4.2 核心参数说明CMake 参数说明HITLS_BUILD_PROFILE构建预设可选值full、iso19790、nonenone表示跳过内置预设仅使用显式传入的特性开关HITLS_BSL/HITLS_CRYPTO/HITLS_TLS/HITLS_PKI/HITLS_AUTH启用/禁用对应组件ON/OFFHITLS_CRYPTO_算法名启用/禁用特定算法特性如HITLS_CRYPTO_SHA256ON、HITLS_CRYPTO_SM2ONHITLS_BUILD_STATIC/HITLS_BUILD_SHARED构建静态/共享库默认均为 ONHITLS_BUNDLE_LIB将所有模块打包为单个库HITLS_BUILD_EXE构建可执行命令行工具hitls默认 OFFHITLS_ASM自动检测平台并启用汇编优化HITLS_ASM_X8664/HITLS_ASM_ARMV8/HITLS_ASM_ARMV7指定架构的汇编优化HITLS_ASM_X8664_AVX512x86_64 AVX512 汇编优化自动连带开启HITLS_ASM_X8664HITLS_PLATFORM_ENDIAN/HITLS_PLATFORM_BITS/HITLS_PLATFORM_INT128手动指定目标平台字节序、位数、128 位整数支持通常自动检测无需手动设置HITLS_SKIP_CONFIG_CHECK跳过未满足依赖项的配置检查4.3 特性开关的层级与依赖推导从 cmake/hitls_options.cmake 的选项组织方式可以看出特性开关采用父-子层级例如HITLS_CRYPTO_MD代表所有哈希算法开启它会连带启用HITLS_CRYPTO_MD5、HITLS_CRYPTO_SHA256等子项反向亦然——只开启子项时构建系统会自动补全父项。文件头注释明确说明when a user enables HITLS_CRYPTO_MD5, HITLS_CRYPTO_MD is automatically enabled。这一机制由根 CMakeLists.txt 中的三段式流程实现# Derive all children for each enabled option hitls_feature_children_derive() # Derive TLS suite options based on cipher, key exchange and authentication method selections hitls_tls_suites_derive() # Derive all dependencies for each enabled option hitls_feature_dependencies_derive()即先由显式开启的选项向上推导父特性再根据密码算法、密钥交换与认证方式的选择推导 TLS 套件cipher suite组合最后向下推导依赖。随后hitls_generate_config_h_file生成构建目录下的config/hitls_build_config.h模板见 cmake/config.h.inhitls_collect_feature_macros收集全部特性宏并通过add_compile_definitions注入编译hitls_config_check则打印未满足依赖的警告。这意味着开发者只关心业务语义开关如HITLS_CRYPTO_MLKEMON编译宏、父特性、TLS 套件组合都由构建系统自动推导这也是按需裁剪能落地的关键。4.4 构建预设Profile仓库在 cmake/presets/ 下提供了两套预设文件full预设cmake/presets/full.cmake一键打开全部五个组件BSL/Crypto/PKI/TLS/Auth即默认构建行为iso19790预设cmake/presets/iso19790.cmake面向 ISO 19790 合规模式的最小集只启用 EAL/Provider/CMVP-ISO19790 模块与合规算法组合AES、Chacha20、SHA1/SHA2/SHA3/SM3、HMAC/CMAC/GMAC、HKDF/PBKDF2、DRBG CTR/HASH/HMAC、RSA/DSA/DH/ECDSA/ECDH/SM2/Ed25519/X25519、SLH-DSA/ML-KEM/ML-DSA 等并通过-Wl,--version-script链接 cmake/presets/libhitls_cmvp.ld 版本脚本约束导出符号——这与 README 中已支持 5 个组件、通过 ISO 19790 认证的描述相互印证。4.5 交叉编译交叉编译推荐使用仓库自带的工具链文件cmake/toolchain/ 下提供 aarch64、arm32、riscv64、macOS 等常见平台模板cd openHiTLS mkdir -p ./build cd ./build cmake .. -DCMAKE_TOOLCHAIN_FILE../cmake/toolchain/aarch64-linux-gnu-gcc.cmake make -j也可以不用工具链文件直接在配置阶段指定交叉编译器如 aarch64-linux-gnu-gcccmake .. \ -DCMAKE_SYSTEM_NAMELinux \ -DCMAKE_SYSTEM_PROCESSORaarch64 \ -DCMAKE_C_COMPILERaarch64-linux-gnu-gcc \ -DCMAKE_CXX_COMPILERaarch64-linux-gnu-g \ -DCMAKE_ASM_COMPILERaarch64-linux-gnu-gcc工具链文件的实质是设置CMAKE_SYSTEM_NAME/CMAKE_SYSTEM_PROCESSOR并通过find_program定位前缀编译器如 cmake/toolchain/aarch64-linux-gnu-gcc.cmake 所示。依赖提示DTLS 特性依赖 sctp默认未启用如需开启需提前在系统中预装 sctp 依赖。此外testcode/script/build_hitls.sh 提供了开发态的一键构建脚本支持debug、asan、ctvalgrind、pure_c纯 C 无汇编、x86_64、armv8_le、riscv64等模式适合开发调试场景快速验证。4.6 集成到 C/C 工程安装后头文件按模块分层安装于/usr/local/include/hitls/模块/代码引用哪些模块就需要为哪些模块加-I例如仅引用 crypto 与 bslgcc application.c -o app \ -lhitls_crypto -lhitls_bsl \ -I /usr/local/include/hitls/crypto -I /usr/local/include/hitls/bsl \ -L /usr/local/lib链接动态库的程序首次运行前需保证动态库可被加载Linux 执行sudo ldconfig刷新缓存macOS 设置export DYLD_LIBRARY_PATH/usr/local/lib或编译时追加-Wl,-rpath,/usr/local/lib。否则会出现libhitls_crypto.so: cannot open shared object file报错。最小验证用例SM3 摘要与完整接口用法可参考 docs/zh/3_快速入门.md。五、文档体系与深入路径README-zh.md 的「文档」一节指向 docs/index/index.md其中组织了完整的中文/英文文档索引文档内容相对路径发行声明版本说明docs/zh/1_发行声明.md关键特性产品特性总览docs/zh/2_关键特性.md快速入门安装、集成、最小示例docs/zh/3_快速入门.md构建及安装指导CMake 参数、交叉编译docs/zh/4_使用指南/1_构建及安装指导.md测试指南SDV 测试框架与执行docs/zh/4_使用指南/2_测试指南.md配置指南特性说明docs/zh/4_使用指南/4_配置指南.md命令行指南hitls 全部命令docs/zh/4_使用指南/5_命令行指南.md加密完保应用开发指南Crypto EAL 接口开发docs/zh/5_开发指南/1_加密完保应用开发指南.md安全通信应用开发指南TLS 协议栈开发docs/zh/5_开发指南/2_安全通信应用开发指南.mdAPI 参考接口全集docs/zh/5_开发指南/3_API参考.mdprovider 开发指南Provider 机制docs/zh/5_开发指南/4_provider开发指南.mdCMake 构建系统开发配置指南构建系统内部机制docs/zh/5_开发指南/6_CMake构建系统开发配置指南.md术语列表术语对照docs/zh/6_附录/1_术语列表.md六、贡献与许可项目采用 Mulan PSL v2 许可证见 LICENSE有意贡献代码者需先在 CLA 签署平台完成 CLA 签署再 fork 官方 Git 库并克隆自己的公共副本进行开发漏洞类问题密码缺陷、内存安全、时序侧信道应通过 SECURITY.md 所述渠道上报贡献流程与提交规范见 CONTRIBUTING-zh.md。七、小结openHiTLS 以BSL 基础层 Crypto 算法层 TLS 协议层 PKI 证书层 Auth 认证层的模块化组织配合 CMake 特性开关的父子推导与依赖自动补全机制实现了从全量构建到仅保留某几个算法的连续裁剪粒度。对于使用者cmake .. make make install即可完成默认全量集成对于裁剪场景掌握HITLS_BUILD_PROFILE三值full/iso19790/none与HITLS_CRYPTO_*、HITLS_TLS_*、HITLS_BUNDLE_LIB等核心开关即可覆盖绝大多数工程需求。算法示例、测试用例与 benchmark 均随仓库提供testcode/可作为裁剪正确性与性能评估的验证手段。赞分享密码学网络安全【免费下载链接】openHiTLS旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求让密码技术应用更简单同时探索后量子等先进算法创新实践构建密码前沿技术底座项目地址https://gitcode.com/openHiTLS/openhitls点击查看免费下载相关推荐深入解析openHiTLS项目开源密码套件的全场景应用深入解析openHiTLS项目开源密码套件的全场景应用 openHiTLS是一个高效、敏捷的全场景开源密码学开发套件旨在为开发者提供全面的密码学功能支持涵密码学网络安全突破密码技术壁垒openHiTLS全场景密码套件安装与实战指南突破密码技术壁垒openHiTLS全场景密码套件安装与实战指南 开篇密码技术的痛点与解决方案 你是否正面临这些挑战—— 密码算法集成复杂、TLS协议配置繁密码学网络安全OR-ToolsGoogle Optimization Tools组合优化套件全面指南组件架构、源码地图与三种构建方式实战OR ToolsGoogle Optimization Tools组合优化套件全面指南组件架构、源码地图与三种构建方式实战 OR ToolsGoogle科学计算创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑