文章总结: 本文阐述了通用操作系统商用密码子系统功能调用接口规范,通过标准化API实现SM2/3/4等算法的安全集成。文档详细规定了内核态与用户态的接口层次,涵盖非对称、对称及杂凑算法功能,强调密钥全生命周期管理与访问控制,为厂商及开发者构建合规的密码基础设施提供关键技术指导。 综合评分: 85 文章分类: 技术标准,安全建设,安全开发,应用安全
通用操作系统商用密码子系统功能调用接口规范
原创
计算机与网络安全 计算机与网络安全
计算机与网络安全
2026年2月4日 07:57 山东
通用操作系统商用密码子系统功能调用接口规范是确保商用密码在操作系统中得以正确、安全、高效集成的关键性技术文档。该规范为核心密码功能提供了标准化、可移植且安全的应用程序编程接口(API),使得上层应用程序能够在不依赖具体底层密码硬件或算法实现细节的情况下,调用诸如对称加密、非对称加密、数字签名、消息摘要、密钥生成与管理等基础密码服务。其核心目标在于实现密码应用的互通性、可移植性以及安全性,同时符合国家密码管理相关法律法规与标准的要求。
该规范通常定义了清晰的接口层次结构。最底层为密码硬件或软件算法实现的抽象层,通过统一的驱动或服务接口与操作系统内核或核心密码模块进行交互。中间层是核心密码服务接口层,它提供了一套完整的、操作系统级的密码函数库,这些函数负责管理密码设备、调度密码运算、实施密钥全生命周期管理(包括生成、存储、使用、销毁)以及处理随机数生成等。最上层则为面向应用程序的标准化API,例如基于PKCS#11、Cryptographic API Next Generation(CNG)或国密标准接口(如GMT 0018系列标准中定义的接口)等进行封装,使开发人员能够以统一的方式编写安全应用。
接口规范必须详细规定每个函数或方法的调用语法、参数与数据类型、返回值、错误代码及安全注意事项。它严格界定密码操作的边界,明确区分用户空间与内核空间、普通应用与特权服务的权限,确保敏感操作(如密钥导入/导出)受到严格访问控制。此外,规范会强制要求密钥等敏感数据在非易失性存储中必须受保护(如通过安全芯片或可信执行环境),在内存中使用时也应进行必要的防护以防止泄露。
安全性设计是该规范的重中之重。它要求接口能够抵抗常见攻击,如时序攻击、错误注入攻击等,并对密钥的使用上下文进行严格绑定与授权检查。规范也通常涵盖对密码算法和密码模块的合规性检测接口,确保所使用的密码实现经过国家指定机构的检测与认证。同时,为了支持灵活的密码算法体系,规范会设计可扩展的机制,以便纳入新的国密算法(如SM2、SM3、SM4)或国际标准算法,并确保其能够通过相同的接口范式被调用。
在实现层面,遵循此规范的商用密码子系统构成了操作系统安全基础设施的重要组成部分。它与操作系统的其他安全子系统(如身份认证、访问控制、审计)紧密协同,为文件加密系统、安全通信协议(如TLS/IPsec)、数字版权管理、电子签章应用等提供底层密码支撑。通过这样一套标准化的接口规范,不仅降低了应用开发的复杂性,提升了密码服务的可靠性与一致性,更重要的是,它建立了从硬件到应用到管理的全链条密码服务标准体系,为构建自主可控、安全可信的计算环境奠定了坚实的基础。因此,该规范是指导操作系统厂商、密码设备制造商和应用开发者协同工作,共同实现合规、安全密码应用的关键技术蓝图。
OS 内核态商密API
OS内核态商密API为北向接口,供内核态商密应用调用注册到商密子系统中的密码算法、硬件密码资源,包括非对称算法类、对称算法类、杂凑算法类等接口函数。
非对称算法类接口:包含分配签名tfm句柄(ossm_crypto_alloc_sig)、获取输出缓冲区长度(ossm_crypto_sig_maxsize)、设置公钥(ossm_crypto_sig_set_pubkey)、设置私钥(ossm_crypto_sig_set_privkey)、签名(ossm_crypto_sig_sign)、签名验证(ossm_crypto_sig_verify)、释放签名tfm句柄(ossm_crypto_free_sig)等接口,分配句柄时通过“sm2”指定商密算法。
对称算法类接口:包含搜索对称加密算法是否存在(ossm_crypto_has_skcipher)、分配对称密钥密码句柄(ossm_crypto_alloc_skcipher)、获取IV大小(ossm_crypto_skcipher_ivsize)、获取块大小(ossm_crypto_skcipher_blocksize)、获取分配的块大小(ossm_crypto_skcipher_chunksize)、获取请求数据结构大小(ossm_crypto_skcipher_reqsize)、设置密钥(ossm_crypto_skcipher_setkey)、分配请求数据结构(ossm_skcipher_request_alloc)、更新请求中的密码句柄引用(ossm_skcipher_request_set_tfm)、设置异步回调函数(ossm_skcipher_request_set_callback)、设置数据缓冲区(ossm_skcipher_request_set_crypt)、获取请求中的句柄(ossm_crypto_skcipher_reqtfm)、加密(ossm_crypto_skcipher_encrypt)、解密(ossm_crypto_skcipher_decrypt)、归零并释放请求的数据结构(ossm_skcipher_request_free)、归零并释放对称密钥密码句柄(ossm_crypto_free_skcipher)等接口。
杂凑算法类接口:包括异步消息摘要/异步密码操作接口(如搜索杂凑密码可用性、分配杂凑密码句柄、获取密码块大小等)、异步杂凑请求句柄接口(如分配请求数据结构、更新请求中的密码句柄引用等)、同步消息摘要接口(如分配消息摘要句柄、获取消息摘要大小等),涉及sm3等杂凑算法的初始化、更新、计算、释放等操作。
密码引擎接口:包含非对称算法传入引擎请求(ossm_crypto_transfer_akcipher_request_to_engine)、非对称算法请求结束(ossm_crypto_finalize_akcipher_request)、对称算法传入引擎请求(ossm_crypto_transfer_skcipher_request_to_engine)、对称算法请求结束(ossm_crypto_finalize_skcipher_request)、杂凑算法传入引擎请求(ossm_crypto_transfer_hash_request_to_engine)、杂凑算法请求结束(ossm_crypto_finalize_hash_request)等接口,用于注册多个密码资源供应用软件选择使用。
OS 内核态商密资源挂接接口
OS内核态商密资源挂接接口为南向接口,可扩展或替换商用密码子系统内置的密码算法,挂接新增的商密资源(软件或硬件密码模块),商密资源厂商通过调用该接口开发密码资源插件,内核态应用程序按需使用密码资源。
新增密码算法接口:包括密码引擎注册/取消注册非对称算法(ossm_crypto_engine_register_akcipher/ossm_crypto_engine_unregister_akcipher)、对称算法(ossm_crypto_engine_register_skcipher/ossm_crypto_engine_unregister_skcipher)、多个对称算法(ossm_crypto_engine_register_skciphers/ossm_crypto_engine_unregister_skciphers)、杂凑算法(ossm_crypto_engine_register_ahash/ossm_crypto_engine_unregister_ahash)、多个杂凑算法(ossm_crypto_engine_register_ahashes/ossm_crypto_engine_unregister_ahashes)等接口。
商密资源引擎挂接接口:包含商密资源引擎初始化(ossm_crypto_engine_alloc_init,关联硬件设备)、启动(ossm_crypto_engine_start)、停止(ossm_crypto_engine_stop)、退出(ossm_crypto_engine_exit)等接口。
检验测试类接口:包括杂凑算法自测(ossm_hash_testvec)、对称密码算法自测(ossm_cipher_testvec)、非对称算法自测(ossm_akcipher_testvec)等接口,用于测试算法功能正确性。
OS用户态商密API
OS用户态商密API为用户态OS商密操作提供功能调用接口(北向接口),包括基础支撑接口、对称加密接口、公钥算法接口、杂凑算法接口、HMAC接口、随机数接口、密钥管理接口、证书管理接口、安全通信接口、引擎操作接口和验证调试类接口。分别详细描述了各接口的概述、具体接口名称、说明、原型、参数、返回值等,如基础支撑接口包括OSSM_Str2Nid(字符串转换成算法标识)、OSSM_Nid2Str(算法标识转换成字符串)、OSSM_GetLastError(获取错误码)等;对称加密接口包括创建、销毁上下文,加密初始化、更新、结束,获取和设置tag,解密初始化、更新、结束等接口。
OS用户态商密资源挂接接口
OS商密子系统基于引擎机制通过该接口(南向接口)可挂接新增商密资源,扩展或替换密码子系统密码算法,挂接资源可为软件或硬件密码模块,不同资源通过引擎框架开发插件,用户态应用软件可通过引擎操作接口加载和操作不同密码资源。详细描述了引擎绑定和设置接口(如引擎绑定、设置引擎ID、名字、初始化函数、结束函数、释放函数等)、引擎对称加密算法接口(如设置引擎对称算法函数,创建、销毁加密算法对象,设置加密算法对象初始化向量长度、初始化函数、加密函数、清理函数、上下文大小、标志等)、引擎公钥算法接口、引擎杂凑算法接口、引擎随机数接口、引擎密钥管理接口等,包括各接口的概述、接口名称、描述、原型、参数、返回值等。
本文完整文档已上传至星球
点这里自助下载
通用操作系统商用密码子系统功能调用接口规范.pdf
信息安全技术 数字证书管理.pdf
加好友进群
–
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:计算机与网络安全 计算机与网络安全 计算机与网络安全《通用操作系统商用密码子系统功能调用接口规范》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论