• 2.52 MB
  • 2022-04-22 13:37:07 发布

GBT25056-2010信息安全技术证书认证系统密码及其相关安全技术规范.pdf

  • 79页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'ICS35.040L80a园中华人民共和国国家标准GB/T25056--2010信息安全技术证书认证系统密码及其相关安全技术规范Informationsecuritytechniques--Specificationsofcryptographandrelatedsecuritytechnologyforcertificateauthenticationsystem2010-09—02发布201卜02-01实施宰瞀鹊鬻黼警矬瞥星发布中国国家标准化管理委员会促19 前言⋯⋯⋯⋯’⋯⋯⋯⋯⋯⋯⋯⋯’1范围⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯’’’2规范性引用文件⋯⋯⋯⋯⋯⋯3术哥和定冀⋯⋯⋯⋯⋯⋯⋯⋯4缩略语⋯⋯⋯⋯⋯·⋯⋯⋯⋯‘‘5证书认证系统⋯⋯⋯⋯⋯⋯⋯5.1概述⋯⋯⋯⋯⋯⋯⋯’⋯⋯。。5.2功能描述⋯⋯⋯⋯⋯⋯⋯⋯5.3系统设计⋯⋯⋯⋯⋯⋯⋯⋯5.4数字证书⋯⋯⋯·⋯⋯⋯⋯‘’5.5证书撤销列表⋯⋯⋯⋯⋯⋯6密钥管理中心⋯⋯⋯⋯⋯⋯⋯6.1结构描述⋯⋯⋯⋯⋯⋯⋯⋯6.2功能描述⋯⋯⋯⋯⋯⋯⋯⋯’6.3系统设计⋯⋯⋯⋯⋯⋯⋯⋯·6.4KMC与CA的安全通信协议7密码算法、密码设备及接口⋯·7.1密码算法⋯⋯⋯⋯⋯⋯⋯⋯。7.2密码漫备·⋯⋯⋯⋯⋯⋯⋯⋯7.3密码服务接口⋯⋯·⋯⋯⋯⋯8协议⋯⋯⋯--·⋯⋯⋯⋯⋯⋯⋯·8.1证书管理协议⋯⋯⋯⋯⋯⋯·8.2证书验证协议⋯⋯⋯⋯⋯⋯·8.3安全通信协议⋯⋯⋯⋯⋯··-·9证书认证中心建设⋯·⋯⋯⋯⋯9.1系统⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·9.2安全⋯⋯⋯⋯⋯⋯⋯⋯--·⋯·9.3数据备份⋯⋯⋯⋯⋯⋯⋯⋯·9.4可靠性⋯··⋯⋯-·⋯⋯⋯⋯一9.5物理安全⋯⋯⋯⋯⋯⋯⋯⋯·9~人事管理制度⋯⋯⋯·⋯⋯···10密钥管理中心建设⋯⋯⋯⋯·lO.1建设原则⋯⋯⋯⋯⋯⋯⋯-】0.2系统⋯⋯·⋯⋯⋯·⋯⋯⋯一10.3安全⋯⋯⋯⋯⋯⋯⋯⋯⋯·10.4数据备份⋯⋯⋯⋯·⋯⋯⋯10.5可靠性⋯⋯⋯·⋯⋯--⋯⋯·lo.6物理安全⋯⋯⋯⋯⋯⋯⋯·目次GB/I"25056—2010V●●●00o0oo加加挖心地¨¨””坫¨坫¨”¨玛均加加∞加虬趴龃孔● GB/T25056--201010.7人事管理制度⋯⋯⋯⋯⋯⋯··⋯⋯⋯⋯···⋯⋯11证书认证中心运行管理要求⋯⋯⋯·⋯⋯⋯⋯⋯·儿.1人员管理要求⋯⋯⋯⋯⋯-··⋯⋯⋯⋯⋯⋯⋯一11.2CA业务运行管理要求⋯⋯⋯⋯⋯⋯⋯⋯⋯··11.3密钥分管要求⋯⋯⋯·⋯⋯⋯⋯⋯--⋯⋯⋯⋯··11.4安全管理要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一11.5安全审计要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··儿.6文档配备要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·12密钥管理中心运行管理要求⋯⋯⋯⋯⋯⋯-·⋯⋯12.1人员管理要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·-12.2运行管理要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..12.3密钥分管要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··12.4安全管理要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··12.5安全审计要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··12.6文档配备要求⋯⋯⋯·⋯⋯⋯⋯-⋯·⋯⋯⋯·⋯·13检测⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯·13.1概述⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·13.2系统初始化⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··13.3用户注册管理系统⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯--13.4证书/证书撤销列表生成与签发系统···⋯⋯⋯一13.5证B/证书撤销列表存储与发布系统⋯⋯⋯⋯·-13.6证书状态查询系统⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··13.7安全审计系统⋯···⋯⋯⋯⋯⋯⋯⋯⋯·⋯⋯⋯·13.8密钥管理中心检测⋯·⋯⋯⋯⋯-⋯⋯⋯⋯⋯⋯13.9系统安全性检测⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯·13.10其他安全产品和系统⋯⋯--⋯⋯⋯⋯-⋯⋯⋯一附录A(资料性附录)KMC与CA之间的消息格式A.1概述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯···⋯⋯⋯-A.2协议⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯-·⋯⋯附录B(资料性附录)安全通信协议⋯⋯⋯⋯⋯⋯··B.1符号说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··B.2身份鉴别··⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·⋯⋯··B.3密钥交换⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯-B.4安全通信协议⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··附录C(资料性附录)密码设备接口函数定义及说明c.1应用类密码设备接口函数⋯⋯⋯⋯⋯⋯⋯⋯··c.2证书载体接口函数⋯⋯⋯⋯··⋯⋯⋯⋯⋯⋯⋯附录D(资料性附录)证书认证系统网络结构图⋯-·D.1当RA采用C/S模式时CA的网络结构⋯⋯-·D.2当RA采用B/S模式时CA的网络结构⋯⋯--D.3CA与远程RA的连接⋯⋯·⋯⋯⋯⋯⋯·⋯⋯⋯D.4KMC与多个(:A的网络连接⋯⋯···⋯⋯⋯⋯··参考文献⋯⋯-··⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··¨n毖拉船孙船弘肌拍舫踮撕拍撕孙幽坜踮弱孙盯盯盯所嬲孙朋曲约∞弘弘弘卯∞∞弘"¨化弛他M 吲1证书认证系统逻辑结构---⋯⋯⋯⋯⋯⋯⋯⋯··图2用户注册管理系统逻辑结构⋯⋯⋯·⋯⋯⋯··图3密钥管理中心逻辑结构---⋯⋯⋯⋯⋯⋯⋯⋯图D.1RA采用C/S模式时CA的网络结构示意图图D.2RA采用B/S模式时CA的网络结构示意图图D.3CA与远程RA的连接示意图⋯·⋯⋯⋯一图I).4KMC与多个CA的网络连接示意图⋯⋯⋯GB/T25056—201046107l7273Ⅲ 前言GB/T25056--2010本标准附录A、附录B、附录C、附录D均为资料性附录。本标准由国家密码管理局提出。本标准由全国信息安全标准化技术委员会(SAC/TC260)归口。本标准主要起草单位:长春吉大正元信息技术股份有限公司、国家密码管理局商用密码研究中心、国家信息安全工程技术研究中心。本标准相关参与起草单位:无锡江南信息安全工程技术中心、E海格尔软件股份有限公司、北京信安世纪科技有限公司、济南得安计算机技术有限公司、北京创原天地科技有限公司、卫士通信息产业股份有限公司、天津市国瑞数码安全系统有限公司、兴唐通信科技股份有限公司、中国科学院数据与通信保护研究教育中心、北京格方网络技术有限公司、北京天融信科技有限公司、维豪信息技术有限公司等。本标准主要起草人:邱泽军、王永传、何立波、谢永泉、姜玉琳、刘海龙、邓开勇、罗鹏、田景成、赵丹、张文建、李大为。袁文恭、刘平,何良生、邱钢,陈连俊等专家指导了本标准的起草。V 1范围信息安全技术证书认证系统密码及其相关安全技术规范GB/T25056--2010本标准规定了为公众服务的数字证书认证系统的设计、建设、检测、运行及管理规范。本标准为实现数字证梧认证系统的互连互通和交叉认证提供统一的依据,指导第三方证书认证机构的数字证书认证系统的建设和检测评估,规范数字证书认证系统中密码及相关安全技术的应用。本标准适用于第三方证书认证机构的数字证书认证系统的设计、建设、检测、运行及管理。非第二j=方证书认证机构的数字证书认证系统的建设、运行及管理,可参照本标准。2规范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。GB/T28872000电子计算机场地通用规范GB/T93611988计算机场地安全要求GB/T205182006信息安全技术公钥基础设施数字证书格式GB501742008电子信息系统机房设计规范SJ/T107961996计算机机房用活动地板技术条件3术语和定义下列术语和定义适用于本标准。3.1认证机构证书authoritycertificate签发给证书认证机构的证书。3.2CA证书CAcertificate由一个CA给另一个CA签发的证书,一个CA也可以为自己签发证书,这是一种自签名的证书。3.3证书认证系统certificateauthenticationsystem对生命周期内的数字证书进行全过程管理的安全系统。3.4证书策略certificatepolicy是一个指定的规则集合,它指出证书对于具有普通安全需求的一个特定团体和(或)具体应用类的适用性。例如,一个特定的证书策略可以指出一个类型的证书对在一定的价格幅度下商品交易的电子数据处理的认证的适用性。3.5证书撤销列表certificaterevocationlist;CRL标记一系列不再被证书发布者所信任的证书的签名列表。 GB/T25056--20103.6证书验证certificatevalidation确定证书在指定的时间内是否有效的过程。证书验证包括有效期验证、签名验证以及证书状态的检验。3.7证书认证机构certificateauthority;CA又称为认证中心或CA,它是被用户所信任的签发公钥证书及证书撤销列表的管理机构。3.8CA注销列表certificateauthorityrevocationlist;ARL标记已经被注销的CA的公钥证书的列表,表示这些证书已经无效。3.9证书认证路径certificationpath在目录信息树中对象证书的一个有序的序列。路径的初始节点是最初待验证对象的公钥,可以通过路径获得最终的顶点的公钥。3.10证书撤销列表分布点certificaterevocationlistdistributionpoint一个目录条目或其他的证书撤销列表分布源,一个通过证书撤销列表分布点发布的证书撤销列表,可以包括由一个CA发布的所有证书中的一个证书子集的注销条目.也可以包括全部证书的注销条口。3.11增量证书撤销列衰dclta-CRL;dCRL是一个部分的证书撤销列表,它只包括那些在基础证书撤销列表确认后注销状态改变的证书的条目。3.12证书序列号certificateserialnumber在一个证书认证机构所签发的证书中用于唯一标识数字证书的一个整数。3.13数字证书digitalcertificate由证书认证机构签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及一些扩展信息的数字文件。3.14完全的证书撤销列衰fullCRL在给定的范围内,包含所有已经被注销的证书的证书撤销列表。3.15私钥privatekey在公钥密码系统中,用户的密钥对中只有用户本身才能持有的密钥。3.16公钥publickey在公钥密码系统中,用户的密钥对中可以被其他用户所持有的密钥。3.17证书注册机构registrationauthority;RA证书认证体系中的一个组成部分,它是接收用户证书及证书撤销列表申请信息、审核用户真实身份、为用户颁发证书的管理机构。, GB/T25056—20103.18依赖方relyingparty使用证:书中的数据进行决策的用户或代理。3.19安全策略securitypolicy由证书认证机构发布的用于约束安全服务以及设施的使用和提供方式的规则集合。3.20信任trust通常说一个实体信任另一个实体表示后一个实体将完全按照第一个实体的规定进行相关的活动。在本标准中,信任用来描述一个认证实体与证书认证机构之间的关系。4缩略语CertificateAuthorityRevocationListCA注销列表CertificateAuthority证书认证机构CertificateRevocationList证书撤销列表Delta—CRI。增量证书撤销列表DerectoryInformationTree目录信息树系统HypertextTransferProtocol超文本传输协议SecureHypertextTransferProtocol安全超文本传输协议KeyManagementCentre密钥管理中心LightweightDirectoryAccessProtocol轻量目录访问协议()nlineCertificateStatusProtocol在线证书状态查询协议ObjectID对象标识符RegistrationAuthority证书注册机构SimpleOnlineCertificateStatusProtocol简明在线证书状态查询协议5证书认证系统5.1概述证书认证系统是对生命周期内的数字证书进行全过程管理的安全系统。证书认证系统必须采用舣证书(_}}j于数字签名的证书和用于数字加密的证书)机制,并建设双中心(证书认汪中心和密钥管理中心)。证书认汪系统在逻辑上可分为核心层、管理层和服务层,其中,核心层由密钥管理中心、汪书/汪书撤销列表签发系统、证书/证书撤销列表存储发布管理系统构成;管理层由证书管理系统和安全管理系统构成;服务层由证书注册管理系统(包括远程用户注册管理系统)和证书查询系统构成。建议的证书认证系统的逻辑结构如图l所示。5.2功能描述5.2.1概述证书认证系统提供了对生命周期内的数字证书进行全过程管理的功能,包括用户注册管理、证书/证书撤销列表的生成与签发、证书/证书撤销列表的存储与发布、证书状态的查询和密钥的生成与管理以及安全管理等。5.2.2用户注册管理系统用户注册管理系统负责用户的证书申请、身份审核和证书下载.LⅡ分为本地注册管理系统和远程滓册管理系统。3L11:PPS繁黠黑淼慕嚣眦 GB/.I25056—2010圈1证书认证系统逻辑结构5.2.2.1证书申请证书目I请埘采用在线或离线两种方式:一在线方式:用户通过互联网等登录到用p注册管理系统申请韧:}5;离线方式:用,o到指定的注册机构申请证书。5。2.2.2身份审核审核人员通过用户注册管理系统,对征书申淆者进行身份审核。5.2.2.3证书下载证书下裁可采用在线或离线两种方式:一在线方式:用p通过互联网等登录到用户沣册管理系统下载证书;离线力式:用户到指定的注册机构下载证书。5.2.3证书/证书撤销列表生成与签发系统5.2.31功能证书/证f}撤销列表牛成与签发系统负责7t成、签发数字证书和证书撤销列表。5.2.3.2证书类型按主体对象.址书分为人员证H、设备训:}}和机构IⅡ:_};■种类型。按功能,汪15分为加密址拈和签名hF持两种类型。5.2.3.3证书机制I止书认证系统采州烈汪书机制。每个用户拥有阿张数字址书.一张用J。数字签名,儿·张用于数据4 GB/T25056—2010加密。用于数字签名的密钥对可以由用户利用具有密码运算功能的征书载体产生;用于数据加密的密钥对由密钥管理中心产生并负责安全管理。签名证书和加密证书一起保存在用户的证书载体中。5.2.3.4证书生成/签发朋户的数字征书出泼系统的CA签发,根CA的数字证书由根CA自己签发。下级CA的数字证”}}i【:级CA签发。5.2.3.5证书撤销列表证书撇销列表是在汪书有效期之内,CA签发的终止使用证书的信息,分为用户证}5撤销列表(CRI。)和CA证书撤销列表(ARI。)两类。在证书的使用过程中,应用系统通过检查CRI./ARI,,获取有关证书的状态。5.2.4证书/证书撤销列表存储与发布系统让书/证书撤销列表存储与发布系统负责数字证书、证书撤销列表的存储和发布。根据应用环境的不同,证书/证书撤销列表存储与发布系统应采用数据库或目录服务方式,实现数字汪书/证_【;撤销列表的存储、备份和恢复等功能,并提供查询服务。使用曰求服务方式,应采用主、从目录结构以保证主目录服务器的安全,同时从目录服务器可以采用分布式的方式进行设置,以提高系统的效率。用户只能访问从目录服务器。5.2.5证书状态查询系统证};状态查询系统应为用户和应用系统提供证书状态查询服务,包括:CRI.查询:用』、或应用系统利用数字证书中标识的CRI,地址,下载CRI.,并检验证书有效性。在线证书状态查询:用户或应用系统按照OCSP协议,实时在线查询证书的状态。在实际应用中,可以根据具体情况采用上述两种查询方式之一或全部。5.2.6证书管理系统证书管理系统是’正书认证系统中实现对证书/证书撤销列表的申清、审核、生成、签发、存储、发布、注销、JJ_=I档等功能的管理控制系统。5.2.7安全管理系统安全管理系统主要包括安全审计系统和安全防护系统。安全审计系统提供事件级审计功能,对涉及系统安全的行为、人员、时fHJ等记录进行跟踪、统计和分析。安全防护系统提供访问控制、人侵检测、漏洞扫描、病毒防治等网络安令功能。5.3系统设计5.3.1概述证书认证系统的设计包括系统的总体设计和各子系统设计,本标准提供证书认证系统的设汁原则以及各个子系统的实现方式,在具体实现过程中,应根据所选择的开发平台和开发环境进行详细设计。5.3.2总体设计原则证书认证系统的总体没汁原则如下:a)证书认证系统遵循标准化、模块化设计原则;b)证书以证系统设置相对独立的功能模块,通过各模块之间的安全连接,实现各项功能;c)各模块之间的通信采用基于身份鉴别机制的安全通信协议;d)各模块使用的密码运算都必须在密码设备中完成;e)各模块广生的审计日志文件采用统一的格式传递和存储;f)用户注册管埠系统、证书/证书撤销列表生成与签发系统和密钥管理中心可以设置独立的数据库;g)证书认证系统的各模块应没置有效的系统管理功能;}、)系统必须具备访问控制功能;5 CB/T25056--2010i)系统在实现证书管理功能的同时,必须充分考虑系统本身的安全性。5.3.3用户注册管理系统设计5.3.3.1用户注册管理系统功能用户注册管理系统负责用,lI证书/证书撤销列表的申请、审核以及证书的制作,其主要功能如下:用户信息的录人:录入用户的申请信息,用户申请信息包括签发证书所需要的信息,还包括用于验证用户身份的信息,这些信息存放在用户注册管理系统的数据库中。用户注册管理系统应能够批量接受从外部系统生成的、以电子文档方式存储的用户信息。——用户信息的审核:提取用户的申请信息,审核用户的真实身份,当审核通过后,将证书签发所需要的信息提交给签发系统。用户证书下载:用户注册管理系统提供证书下载功能,当签发系统为用户签发证书后,用户注册管理系统能够下载用户证书,并将用户证书写入指定的用户证书载体中,然后分发给用户。~安全审计:负责对用户注册管理系统的管理人员、操作人员的操作口志进行查询、统计以及报表打印等。一安全管理:对用户注册管理系统的登陆进行安全访问控制,并对用户信息数据库进行管理和备份。一多级审核:用户注册管理系统可根据需要采用分级部署的模式.对不同种类和等级的证书,可由不同级别的用户注册管理系统进行审核。用户注册管理系统应能够根据需求支持多级注册管理系统的建立和多级审核模式。用户注册管理系统应具有并行处理的能力。5.3.3.2用户注册管理系统结构用户注册管理系统有本地注册管理和远程注册管理两种方式,分别由注册管理、数据库、信息录入、身份审核、证书制作、安全管理以及安全审计儿部分构成。其结构如图2所示。图2用户注册管理系统逻辑结构5.3.4证书/证书撤销列衰生成与签发系统设计5.3。4.1证书/证书撤销列表生成与签发系统功能证书/证书撤销列表生成与签发系统是证书认证系统的核心,不仅为整个证书认证系统提供签发证书/证书撤销列表的服务,还承担整个证书认证系统中主要的安全管理工作。其主要功能如下:证书生成与签发:从数据库中读取与核对用户信息,根据拟签发的证书类型向密钥管理中心申6 GB/T25056--2010请加密密钥对,生成用,1的签名证书和加密证书,将签发完成的i=iF};发市到目录服务器和数据库中。根据系统的配置和管理策略,不同种类或用途的证}5可以采用不I司的签名密钥。⋯证书更新:系统应提供CA证书及用户证t5的更新功能。证书撤销列表生成与签发:接收注销信息,验证注销信息中的签名,然后签发证书撤销列表,将签发后的注销列表发布到数据库或日录服务器中。签发证书撤销列表的签名密钥可以与签发证书的签名密钥相同或不同。——安全审计:负责对证书/证书撤销列表生成与签发系统的管理人员、操作人员的操作U忐进行查询、统计以及报表打印等。——安全管理:对证书/证书撤销列表生成与签发系统的甓录进行安全访问控制,并对证书/汪书撤销列表数据库进行管理和备份;设置管理员、操作员,并为这氆人员申晴和下载数字证书;配置不同的密码设备;配置不同的证书模板。证g,/iiE书撤销列表生成与签发系统应具有并行处理的能力。5.3.4.2证书/证书撤销列表生成与签发系统结构证书/证书撤销列表生成与签发系统由证书/证书撤销列表生成与签发、安全管理、安全审计、数揣库、目录服务器以及密码设备等组成。证书/证书撤销列表生成与签发主要功能包括证书的生成与签发和CRI./ARI,的生成与签发。a)证书的生成/签发:根据接收的请求信息,从数据库中提取用户的信息.1q密钥符理中心申请加密密钥对,然后生成并签发签名汪书和加密证书,签发的证+5和加密hE书的私钥通过证书管胖系统下传给申请者,同1t,f将证书发布到数据库和目录服务器中。在此过程中,必须保证私钥传递的安全。I,)证书撤销列表的生成/签发:首先验证申请信息中的数字签名和相荚数据,然后签发证书撤销列表。并将注销列表发布到数据库或目录服务器指定的位置。密码设备密码设备完成签名以及验证工作,并负责与其他系统通信过程中的密码运算,CA的签名密钥保存在密码设备中。在进行}述工作中,必须保证所使用的密钥不能以明文形式被读出密码设备。安全管理主要包括:a)证书模板配置:不同的证书种类由/fi同的、止书模板确定,证书模板包括卡H啦种类证书的基本项和证书的扩展项;b)CRI。发柿策略配置;配置CRI。的发布策略,包括自动/人工发布模式选择、发布叫间间隔;c)进行CA密钥的更新;d)进行证1{5的备份和归档;e)进行服务器安拿配嚣,包括服务器町接受的主机访问列表;f)为其他子系统定义管理员以及为这些管理员签发数字证书;g)数据库系统的配置:数据源的选择,数据库连接的用户名和口令设置。安全审计查询证书/证书撤销列表生成与签发系统中的安全审计口志,并进行统汁与打印。5.3.5证书/证书撤销列表存储发布系统设计5.3.5.1证书/证书撤销列表存储发布系统功能证书/证书撤销列表存储发布系统负责证书和证书撤销列表的存储与发布,足证书认证系统的接础组成部分。证书的存储和发布必须采用数据库、目录服务器或其中之一。该系统主要功能如下: GB/T25056--2010一证书存储;一一证书撤销列表存储;证书和CRI。发布;一安全审计:负责对证书/证书撤销列表存储发布系统的管理人员、操作人员的操作日志进行查询、统计以及报表打印等;安全管理:对证书/证书撤销列表存储发布系统的登陆进行访问控制,并定期对数据库和日求服务器进行管理和备份;一数据一致性检验:对数据库和日录服务器中的数据进行一致性检验。5.3.5.2证书/证书撤销列表存储发布系统结构汪书/汪书撤销列表存储与发布系统由数据库或主/从目录服务器、安全管理模块、安全审计模块组成。数据库存放证书和汪书撤销列表以及用户的其他信息。目录服务器证书/证书撤销列表存储发布系统采用主从结构的目录服务器,签发完成的数据直接写入主n录服务器中,然后由日录服务器的主从映射功能自动映射到从目录服务器中。主、从曰求服务器通常配置在不同等级的安全区域。用户只能访问从目录服务器。安全管理主要包括:a)定期对数据库和目录服务器的内容进行数据的备份和归档。b)对数据库和目录服务器中的数据进行一致性检查,发现不一致时,臆进行数据恢复。安全审计告询证书/证书撤销列表存储与发布系统中的安全审计日志,并进行统计与打印等。5.3.6证书状态查询系统设计5.3.6.1证书状态查询系统功能证{5状态查询系统为用户及应用系统提供证书状态查询服务。证书状态查询系统所提供的服务可以采用以下两种方式:cRI。查询:用户或应用系统利用征书巾标识的CRI。地址,查询并下载CRI。到本地,进行证f5状态的检验。一在线证书状态查询;用户或应_}}j系统利_}}j()CSI’协议,在线实时查询证书的状态,查询结果经过签名后返回给请求者,进行证书状态的检验。5.3.6.2证书状态查询系统结构证书状态查询系统由证书状态数据库/OCSP服务器、安全管理模块、安全审计模块以及密码设备组成。证书状态数据库/ocsP服务器接受用,1一及应用系统的证书状态查询请求,根据请求信息中的证书序列号,从证书状态数据库中查询证书的状态,查询结果返回给请求者。密码设备验汪请求信息中的签名,并对查询结果进行签名。安全管理主要包括:a)OCSP服务器的配置,定义町接受的访问控制信息以及查询的证书状态数据库的地址。b)启动/停止查询服务,配置可接受的用户请求数量等。 安全审计杏询证{;状态杏询系统中的安伞审计日忐,并进{j统计’』打印等。5.3.7证书管理系统设计证书错坪系统是证书认证系统的综合信息控制和凋度服务系统。它接收用户ff{J各种清求信息,并将请求信息提交给卡廿应的r系统。证书管理系统是一个逻辑上独立的系统,在进行系统没计过程中,一1』根据证书认证系统提供的服务,⋯不同的处理模块组成,这些模块可以采用分布式的结构,以增强系统的处理能力,提高系统的效率。5.3.8安全管理系统设计安全管理系统主要包括安全审计系统和安全防护系统。安全审计系统提供事件级市汁功能,对涉及系统安仝的行为、人员、时问的记求进行跟踪、统计和分析。安全审汁系统可以分别查询各子系统巾的日志记录,也可以通过查询证f5/证15撤销列衷存储与发布系统巾的数据库,进行集中审计。日志记录的上要内容包括:a)操作员姓名;b)操作项目;C)操作起始时间;d)操作终止时间;e)证书序列号;f)操作结果。n志管理的主要内容包括:a)日志参数设置,设置F1志保存的最大规模和日志备份的目录;b)日志查询,查询操作员、操作事件信息;c)H志备份,当I=1志保存到日志参数设置的最大规模时,将保存的口志备份;d)日忐处理.对日忐圯求的正常业务流量和各类事件进行分类幅理;e)证据管理.对证据数据进行审计、统计和记录。安全防护系统提供访问控制、入侵检测、漏洞扫描、病毒防治等网络安全功能。5.4数字证书关于数宁证书结构和格式见GB/T205182006。其中,汪书结构巾的颁发者名称和主体名称的DN顺序府符合下列规则:a)如果有C项,则放在最后,R.C=CN;h)如果有CN项,则放在DN的最前面;c)如果同时存在OU和()项,则OU在()前面;如果同时存在S和T。项,则L在S前面。证书结构中的签名算法域中标识的密码算法必须足陶家密码主管部门批准的算法。5.5证书撤销列表本标准的证};撤销列表结构和格式遵照斟家相关标准。其中,证书撤销列表结构中的箍名箅法域中标识的密码算法必须是Iq家密码主管部『J批准的算法。6密钥管理中心6.1结构描述错钥管理中心由密钥乍成、密钥管理、密钥库管理、认证管_EIf!、安伞审计、密钥恢复和密码服务等模块组成,建议的密钥管理中心逻辑结构如图3所示。(】 GB/T25056--2010图3密钥管理中心逻辑结构6.2功能描述6.2.1概述密钥管理中心提供了对生命周期内的加密证书密钥对进行全过程管理的功能,包括密钥生成、密钥存储、密钥分发、密钥备份、密钥更新、密钥撤消、密钥归档、密钥恢复以及安全管理等。6.2.2密钥生成根据CA的请求为用户生成非对称密钥对,该密钥对由密钥管理中心的硬件密码设备生成。6.2.3密钥存储密钥管理中心生成的非对称密钥对,经硬件密码设备加密后存储在数据库中。6.2.4密钥分发密钥管理中心生成的非对称密钥对通过证书认证系统分发到用户证书载体中。6.2.5密钥备份密钥管理中心采用热备份、冷备份和异地备份等措施实现密钥备份。6.2.6密钥更新当证书到期或用户需要时,密钥管理中心根据CA请求为用户生成新的非对称密钥x,t、6.2.7密钥撤消当汪书到期、用户需要或管理机构依据合同规定认为必要时,密钥管理中心根据(:A请求撤消用户当前使用的密钥。6.2.8密钥归档密钥管理中心为到期或撤消的密钥提供安全长期的存储。6.2.9密钥恢复密钥管理中心可为用户提供密钥恢复服务和为司法取证提供特定密钥恢复。密钥恢复需依据相关法规并按管理策略进行审批,一般用户只限于恢复自身密钥。6.3系统设计6.3.1概述密钥管理中心的设计包括系统的整体设计和各子系统设计。本标准提供密钥管理中心的设计昧则以及各个子系统的实现方式,在具体实现过程中,麻根据所选择的歼发平台和开发环境进行详细设汁。6.3.2总体设计原则a)密钥管理中心遵循标准化、模块化设计原则;b)密钥管理中心设置相对独立的功能模块,通过各模块之间的安全连接,实现各项功能;C)各模块之问的通信采用基于身份验证机制的安全通信协议;d)各模块使用的密码运算都必须在密码设备中完成;10 GB/T25056—2010e)各模块产生的审计日志文件采用统一的格式传递和存储;f)系统必须具备访问控制功能;g)系统应设置有效的系统管理功能;h)系统在实现密钥管理功能的同时,必须充分考虑系统本身的安全性;1)系统可为多个CA提供密钥服务,当为多个CA提供密钥服务时,由上级CA为密钥管理中心签发证书。6.3.3密钥生成模块密钥生成模块应提供以下主要功能:a)非对称密钥对的生成,并将其保存在备用库中;当备用库中密钥数量/f"=足时,自动进行补充。b)对称密钥的生成。c)随机数的生成。6.3.4密钥管理模块密钥管理模块应提供以下主要功能:a)接收、审核CA的密钥申请;b)调用备用密钥库中的密钥对;c)向CA发送密钥对;d)对调用的备用密钥库中的密钥对进行处理,并将其转移到在用密钥库;e)对在用密钥库中的密钥进行定期检查,将超过有效期的或被撤销的密钥转移到历史密钥库;f)对历史密钥库中的密钥进行处理,将超过规定保留期的密钥转移到规定载体;g)接收与审查关于恢复密钥的申请,依据安全策略进行处理;h)对进入本系统的有关操作及操作人员进行身份与权限的认证。6.3.5密钥库管理模块6.3.5.1概述密钥库管理模块负责密钥的存储管理,按照其存储的密钥的状态,密钥库分为备用库、在用库和历史库等j种类型,密钥库中的密钥数据必须加密存放。6.3.5.2备用库备用库存放待使用的密钥对。密钥生成模块预生成一批密钥列,存放于备用库中;CA需要时,町及时调出,将其提供给CA后转入在用库。备用密钥库应保持一定数量的待用密钥对,存放的密钥数量依系统的用户数量而定.若少于设定的最低数量时应自动补足到规定数量。6.3.5.3在用库在用库存放当前使用的密钥对。在用库中的密钥记录包含用户证书的序列号、ID号和有效时间等标志。6.3.5.4历史库历史库存放过期或已被注销的密钥对。历史库中的密钥记录包含用户证书的序列号、ID号有效时间和作废时间等标志。6.3.6认证管理模块认证管理模块负责对进入本系统的有关操作及操作人员进行身份与权限的认证。6.3.7安全审计模块安全审计模块负责各个功能模块的运行事件检查、有关资料分析和密钥申请统计等服务。审计项目主要包括:a)运行事件记录;b)服务器状态记录;11 GB/T25056--2010c)系统重要策略设置。审计记录不能进行修改。6.3.8密钥恢复模块密钥恢复模块负责为用户和司法取证恢复用户的加密私钥,被恢复的私钥必须安全地下载到载体。a)用户密钥恢复:用户通过RA申请,经审核后,由CA向密钥管理中心提出密钥恢复请求,密钥恢复模块恢复用户的密钥并通过CA返回RA,下载于用户证书载体中;b)司法取证密钥恢复:司法取证人员必须到KMC进行司法取证密钥恢复,KMC对司法取证人员的身份进行认证,认证通过后,由密钥恢复模块恢复所需的密钥并下载于特定载体中。6.3.9密码服务模块密码服务模块负责为密钥管理中心的各项业务提供密码支持。密码服务模块配置经国家密码主管部门审批的非对称密钥密码算法、对称密钥密码算法和数据摘要算法等。密码算法必须在硬件密码设备中运行,有关密码算法、密码设备和密码接口的要求在本标准第6章中规定。6.3.10审计模块密钥管理中心设置日志审计模块,包括全程审计和事件审计。审计员定时调出审计记录,制作统计分析表。审计员町以处理但不能修改日志审计数据。日志记录的主要内容包括:a)操作员姓名;b)操作项目;c)操作起始时间;d)操作终止时间;e)证书序列号;f)操作结果。日忐管理的主要内容包括:a)日志参数设置,设置I=t志保存的最大规模和日志备份的目录;b)日志查询,日志查询主要是查询操作员、认证机构操作事件信息;c)日志备份,当日志保存到Et志参数设置的最大规模时,将保存的日志备份;d)日志处理,对El志记录的正常业务流量和各类事件进行分类整理;e)证据管理,对证据数据进行审计、统计和记录。6.4KMC与CA的安全通信协议KMC与CA之间采用基于身份鉴别机制的安全通信协议.并进行双向身份攀别。有关安全通信协议的详细内容可参见本标准8.3“安全通信协议”。KMC接收来自CA的请求,检查确定请求合法后,为CA提供相应的服务,并将结果返回给CA。KMC与CA之间的消息格式参见附录A。7密码算法、密码设备及接口7.1密码算法证书认证系统使用对称密码算法、非对称密码算法和数据摘要算法等三类算法实现有关密码服务各项功能,其中,对称密钥密码算法实现数据加/解密以及消息认证;非对称密钥密码算法实现签名/验证以及密钥交换;数据摘要算法实现待签名消息的摘要运算。证书认证系统使用的密码算法要求如下;一对称密钥密码算法:采用国家密码主管部门批准使用的对称密码算法。】2 GB/T25056--2010一一非对称密钥密码算法:采用国家密码主管部门批准使用的非对称密钥密码算法。数据摘要算法:采用国家密码主管部门批准使用的数据摘要算法。数据摘要箅法在实现待签名消息的摘要运算过稃中,至少对部分数据要采取密码保护。7.2密码设备7.2.1概述应采用冈家密码主管部门批准使用的密码漫备,包括:——应用类密码设备:在证书认证系统中提供签名/验证、数据加密/解密、数据摘要、数字信封、密钥生成和管理等密码作、止服务。一通信类密码设备:用于KMC与CA之间、CA与RA间的传输加密。证书载体:具有数字签名/验证、数据加/解密等功能的智能I(:卡或智能密码钥匙等载体,用于用户的证书存储及相关的密码作业。7.2.2密码设备的功能密码设备必须具备如下基本功能:a)随机数生成;b)非对称密钥的产生;c)对称密钥的产生;d)非对称密钥密码算法的加解密运算;e)对称密钥密码算法的加解密运算;f)数据摘要运算;g)密钥的存储;h)宥钥的安全备份和安全导入导出;i)多密码设备并行工作时,密钥的安全同步。7.2.3密码设备的安全要求密码设备应满足下列要求:a)接口安全,不执行规定命令以外的任何命令和操作;b)协议安全,所有命令的任意组合,不能得到密钥的明文;c)密钥安全,密钥不以明的形式出现在密码设备之外;d)物理安全,密码设备应具有物理防护措施,任何情况下的拆卸均应立即销毁设备内保存的密钥。7.3密码服务接口密码服务接几为调用密码服务提供统一的基本接口函数,密码设备的其他管理函数可自行定义。本标准仅定义基本接口函数,包括:密钥对生成、非对称加解密函数、对称加解密函数、数据摘要函数等,有关函数定义以及功能说明参见附录C。8协议8.1证书管理协议8.1.1证书的注册申请用户要获得证f5自先必须向RA提交申请,可以采用两种申请模式:a)用户将自己的身份信息提交给RA,在这个过程中用户不提交自己的签名公钥;b)用户将自己的身份信息、签名公钥、随机选取的一段信息及签名提交给RA。8.1.2证书申请的审核为用户签发证书之前.必须对用户的真实身份进行确认,要求_}}j户提交的注册申请信息与其真实身份信息相符,同时还要验证用户拥有与签名公钥对应的签名私钥。】3 GB/T25056--2010a)身份确认:身份确认可以采用面对面的方式,即要求用户或其代理者携带证明资料到RA进行验证;也可以通过查询其他的安全应用系统的用户资料,进行自动验证。身份确认的方式需要在发布认证策略时发布。b)拥有签名私钥的验证:对申请信息进行数据摘要运算,然后用申请信息中的公钥,对申请信息中的签名进行解密,得到申请者计算的数据摘要,然后进行比较。如相等则验证通过。该过程也可以在证书签发时进行。8.1.3证书的签发证书签发由证书签发系统完成,包括根证书、CA证书以及用户证书的签发。a)根证书和CA证书的签发:根证书是一张自签名证书,使用证书中的公钥即可验证汪书的签名。在系统初始化时,首先要签发一张根证书。下级CA的数字证书由上级CA签发。在证书中需要在扩展域标识该证书可以用来签发证书。b)用户证书的签发:认证系统签发用户证书时,首先根据用户的申请信息,以及审核信息确认是否为该用户签发证书,当确认可以签发后,向密钥管理中心申请一对加密密钥。再根据申请信息为用户签发两张数字证书并将两张数宁证书发布到目录服务器上,然后将数字证书以及加密证书的私钥回传给用户。8.1.4证书的下载a)根证书、CA证书的下载:根’正书、CA证书可以由用户通过证书/证书撤销列表存储与发布系统下载,也可以与用户证书一起下载。b)用户证书的下载:用户或其代理者进行证书的下载时,旨先向RA提供确认信息。通过确认后.将签发好的用户证书和加密证书的私钥,下载到用户的证书载体中。8.1.5证书的注销证书注销由证书/证书撤销列表生成与签发系统完成,分为两种情况:a)强制注销:证书认汪系统的管理人员町以在策略规定的范围内强制注销证书。b)用户申请注销:当用户因某种原因不再或不能使用证书时,可以通过RA申请注销证书。证书注销的过程与证书的申请过程相同。8.1.6证书撤销列表的发布a)发市的时问策略:町以采取实时发布和定时发布两种策略。实时发布是指签发系统接到注销请求后,立刻根据请求信息签发注销列表;定时发布是指签发系统接到注销请求信息后不立刻签发注销列表,而是按照系统的设定,在确定的时间里签发注销列表;b)发布的形式:可以采用完全的注销列表、增量证书撤销列表以及证书分布点技术发布证弗撤销列表。8.1.7证书的更新证书的更新包括根证书、CA证书的更新和用户证书的更新:a)根证书和CA证书更新:根证书和CA证书密钥更新根据证书密钥更新的策略进行。证书密钥更新时,证H认证系统需要签发三个新证书:1)新私钥签名的包含新公钥的证书;2)新私钥签名的包含旧公钥的证书;3)旧私钥签名的包含新公钥的证书。在过渡期中,系统中存在着的四个证书,保证所有实体能够在各种情况下对所接到的证书进行验证。过渡期结束,只保留新私钥签名的包含新公钥的证书。b)用户证书更新:用户证书的更新包括签名证书的更新和加密证书的更新。4 GB/T25056—2010用户证书更新应向RA提出申请。证书/证书撤销列表生成与签发系统接到证书更新申请后,首先将旧的证书作废,如果是加密证书更新则向密钥管理中心申请新的加密密钥对,然后签发新的证书,将新证书传递给用户并发布到证书/证书撤销列表存储与发布系统中。8.2证书验证协议8.2.1概述用户在使用数字证书进行加密和验证数字签名时,必须首先验证证书的有效性,验证证书的有效性包括三个方面的内容:a)用CA的证书验证用户证书中的签名,确认该证书是陔CA签发的,并且证书的内容没有被篡改;b)检验证书的有效期,确认该证书在有效期之内;c)查询CRI。,确认该证书没有被注销。8.2.2认证路径在进行证书验证时,需要根据证书的签发者查询签发者证书,并验证其有效性,直到找到一个预先确定的可信任的CA证书,在这个过程中,形成了一个包含多个CA证书的证书列表,这个列表就是证书的认证路径。证书认证路径的获取可以在用户申请证书之前从CA下载,电可以在需要时实时分别从不同CA下载。有关认证路径的具体处理过程,参见国家相关标准。8.2.3证书状态查询证书状态查询为用户和应用提供查询证书状态的查询服务。a)CRI。的获取:用户或应用系统可通过证书中的CRI。地址标识下载;b)CRI。验证:验证时,首先检查CRI。文件是否在有效期间内,否则重新下载;然后验证CRI。的签名以确认其正确性;最后检查CRI.文件中是否包含所需要验证的证书的序列号,如果包含则说明该证书已经被注销;c)dCRI。验证:dCRL中包含了最新注销的证书信息,dCRL需要与某一个基本的CRI.一起才能验证。验证的方法与CRI。相同。8.2,4在线证书状态查询协议(OCSP)使用在线证书状态查询需要客户端与OCSP服务器保持实时的连接,证书中包含OCSP服务器的地址,通过这个地址,可以使用在线证书状态查询服务。具体的查询过程,参见国家相关标准。8.2.5简明在线证书状态查询协议(SOCSP)简明在线证书状态查询服务为用户和应用系统提供快速在线状态查询服务。具体的查询协议,参见国家相关标准。8.3安全通信协议证书认证系统各子系统之间需要采用安全通信蜘议以保证通信安全。有关安全通信协议的详细内容可参见附录B。9证书认证中心建设9.1系统9.1.1功能要求CA提供的服务功能主要有:a)提供各种证书在其生命周期中的管理服务;b)提供RA的多种建设方式,RA可以全部托管在CA系统,也可以部分托管在CA,部分建在远端15 GB/T25056--2010c)提供人工审核或自动审核两种审核模式;d)支持多级CA认证;e)提供汪扣查询、证书状态查询、证书撤销列表下载、目录服务等功能。9.1.2性能要求CA系统的性能J、t满足如下要求:a)系统对用户接口采用标准的HTTP、HTTPS和LDAP协议,确保各种用户都能够使用本系统服务;b)系统各模块的状态信息保存在配置文件和数据库内部,保证系统的部署方便性和配置方便性,当系统需改变配置时无需中断系统的服务;c)各模块的功能可以通过配置文件进行控制,系统可以根据不同的需求进行设置;d)系统某一功能模块日,有多个实例,并且多个实例可运行在一台或多台计算机f:;e)系统应有冗余设计,保证系统的不问断运行。9.1.3管理员配置要求在CA应设置下列管理和操作人员:超级管理员;一审计管理员;业务管理员;业务操作员。“超级管理员”负责CA系统的策略设置,设置各子系统的业务管理员并对其管理的业务范围进行授权。“业务管理员”负责CA系统的某个子系统的业务管理,设置本子系统的、Ip务操作员并对其操作的权限进行授权。“业务操作员”按其权限进行具体的业务操作。“审计管理员”负责对涉及系统安全的事件和各类管理和操作人员的行为进行审计和监督。上述各类人员使用证书进行登录,其中“超级管理员”和“审计管理员”的证书应在CA系统进行初始化时同时产生。另外,CA应设置安全管理员,全面负责系统的安全工作。9.1.4网络划分CA系统的计‘算机网络需要合理分段,原则上要求整个网络应划分为四部分:a)公共部分:为CA用户所在的网络,所有用户将通过该网络访问CA;b)服务部分:为外部用户提供域名解析功能,并负责内部系统对外邮件的收发功能;包括系统的各种Web服务器和从目录服务器,是外部用户访问内部功能的接口,为用户提供访问界面;c)管理部分:仅供CA的工作人员使用的网络;d)核心部分:包括各种核心应用、数据库和密码设备等在内的实现系统功能的安全网络。当RA采用客户机/服务器(c/s)模式时,应该按照上述方式划分网络;当RA采取浏览器/月R务器(B/S)模式时,可将服务与管理网络放在同一网段。网络结构示意图参见附录D《证书认证系统网络结构图》。9.1.5初始化要求CA的初始化过程必须完成下列工作:a)产生本CA的机构密钥并安全备份;b)若本CA为根CA,则使用根CA的签名密钥进行自签名;若本CA从属于某一根CA,则将产生的签名公钥提交根CA签发本CA的证书;c)由CA签发CA服务器证书;6 GB/T25056—2010d)由CA签发RA服务器证书(可选);e)由CA签发超级管理员和审计管理员证书;f)由CA签发其他管理员和操作员证书。9.2安全9.2.1概述CA系统的安全包括系统安全、通信安全、密钥安全、证书管理安全、安全审计、物理安全、人员安全等各方面的安全。9.2.2系统安全系统安全的主要目标是保障网络、主机系统、应用系统及数据库运行的安全。应采取防火墙、病毒防治、漏洞扫描、入侵监测、数据备份、灾难恢复等安全防护措施。9.2.3通信安全通信安全的主要目标是保障CA系统各子系统之间、CA与KMC之间、CA与RA之间的曩全通信,应采取通信加密、安全通信协议等安全措施。9.2.4密钥安全9.2.4.1概述密钥安全的主要目标是保障cA系统中所使用的密钥,在其生成、存储、使用、更新、废除、归档、销毁、备份和恢复整个生命周期中的安全。应采取硬件密码设备、密钥管理安全协议、密钥存取访问控制、密钥管理操作审计等多种安全措施。9.2.4.2基本要求密钥安全的基本要求是:a)密钥的生成和使用必须在硬件密码设备中完成;b)密钥的生成和使用必须有安全可靠的管理机制;c)存在于硬件密码设备之外的所有密钥必须加密Id)密钥必须有安全可靠的备份恢复机制;e)对密码设备操作必须由多个操作员实施。9.2.4.3根CA密钥根CA密钥的安全性除了满足基本要求外,还应满足下列要求:a)根CA密钥的产生:CA系统的根密钥由硬件密码设备生成并存放在该密码设备中.应采用密钥分割或秘密共享机制进行备份,保存分割后的根密钥的人员称为分管者。生成根CA密钥时,应先选定分管者,数量可以限定为3个或5个。选定的分管者应分别用自己输入的1:3令保护分管的密钥,分管的密钥应存放在智能Ic卡或智能密码钥匙中。智能IC卡或智能密码钥匙也应备份,并安全存放。根CA密钥的产生过程必须进行记录。b)根CA密钥的恢复:恢复根CA密钥时,要有满足根CA密钥恢复所必需的分管者人数。各个分管者输入各自的口令和分管的密钥成份在密码设备中恢复。c)根CA密钥的更新:根CA密钥的更新,需重新生成根CA密钥,其过程同根CA密钥的生成。d)根CA密钥的废除:根CA密钥的废除应与根CA密钥的更新同步。e)根CA密钥的销毁:根CA密钥的销毁应与备份的根CA密钥一同销毁。由密码主管部门授权的机构实施。17 GB/T25056—20109.2.4.4非根CA密钥非根CA密钥的安全性要求与根CA密钥的安全性要求一致。9.2.4.5管理员证书密钥管理员包括超级管理员、审计管理员、业务管理员和业务操作员等。管理员证书密钥应由证书载体来产生和存储。管理员证书密钥的安全性应满足下列要求:a)管理员证书密钥的产生和使用必须在证书载体中完成;b)密钥的生成和使用必须有安全可靠的管理机制;c)管理员的口令长度为8个字节以上;d)管理员的账号要和普通用户账号严格分类管理。9.2.5证书管理安全证书的管理安全应满足下列要求:a)验证证书申请者的身份;b)防止非法签发和越权签发证书,通过审批的证书申请必须提交给CA,由CA签发与申请者身份相符的证书;c)保证证书管理的可审计性,对于证书的任何处理都应作日志记录。通过对日志文件的分析·可以对证书事件进行审计和跟踪。9.2.6安全审计9.2.6.1概述CA系统在运行过程中涉及大量功能模块之间的相互调用,以及各种管理员的操作,对这些调用和操作需要以日志的形式进行记载,以便用于系统错误分析、风险分析和安全审计等工作。9.2.6.2功能模块调用日志系统内的各功能模块在运行过程中会调用其他功能模块或被其他功能模块所调用,对于这些相互之间的功能调用,各模块应该记录如下数据:a)凋用请求的接收时间;b)调用请求来自的网络地址;c)调用请求发起者的身份;d)调用请求的内容;e)调用请求的处理过程;f)处理结果等。9.2.6.3CA系统管理员审计CA系统管理员的下列操作应被记录:a)根CA证f;加载;b)CA证书加载;c)汪书撤销列表加载;d)证书撤销列表更新等。e)系统配置;f)权限分配。9.2.6.4CA业务操作员审计CA业务操作员的下列操作应被记录:a)证书请求批准;b)证书请求拒绝;c)证书请求分配; GB/T25056--2010d)证书注销。9.2.6.5RA业务操作员审计RA业务操作员的下列操作应被记录:a)讧E书请求批准;b)证书请求拒绝;c)证书请求分配;d)证f5注销。9.3数据备份数据备份的目的是确保CA的关键业务数据在发生灾难性破坏时,系统能够及时和尽可能完整地恢复被破坏的数据。应选择适当的存储备份系统对重要数据进行备份。不同的应用环境可以有不同的备份方案,但应满足以下基本要求:a)备份要在不中断数据库使用的前提下实施;b)备份方案应符合国家有关信息数据备份的标准要求;c)备份方案应提供人_丁和自动备份功能;d)备份方案应提供实时和定期备份功能;e)备份方案应提供增量备份功能;f)备份方案应提供日志记录功能;g)备份应提供归档检索与恢复功能。9.4可靠性9.4.1概述CA必须提供7×24h服务,对影响系统可靠性的主要因素如网络故障、主机故障、数据库故障和电源故障等应采取冗余配置等措施。9.4.2网络链路冗余为保证CA的服务,CA网络对外接I=I应根据具体情况,可有两条物理上独立的链路,同时考虑交换机、路由器、防火墙的冗余配置。9.4.3主机冗余CA系统巾与关键业务相关的主机、在服务网段和核心网段中的服务器应采用双机热备份或双机备份措施。9.4.4数据库冗余CA系统的数据库应采用磁盘阵列、磁盘镜像等措施,具备容错和备份能力。9.4.5电源冗余CA系统应采用高可靠的电源解决方案,并应采用UPS为系统提供不问断电源。9.5物理安全9.5.1物理环境建设CA的建筑物及机房建设应按照国家密码管理相关政策要求,并按照下列标准实施:a)93611988;b)(jB/T28872000;(,)SJ/T107961996;d)GB501742008。9.5.2对CA的分层访问9.5.2.1概述CA系统按功能分为四个区域,由外到里分别是:公共区、服务区、管理区和核心区,各区的功能及设备配置参见附录D。19 GB/T25056--20109.5.2.2公共区人u之外的区域为公共区。9.5.2.3服务区所有进入此区的人员使用身份识别卡刷卡进入。该医的每扇窗户都应安装玻璃破碎报警器。9.5.2.4管理区所有进入此区人员需要『一J时使用身份识别}和人体特征鉴别才可以进入,人员进出管理区要有13志记录。所有的房间不应安装窗户,所有的墙体应采用高强度防护墙。9.5.2.5核心区所有进入此医人员需要同时使用身份识别卡和人体特征鉴别才可以进入,人员进出该区要钉日忐记录。核心区应为屏蔽机房,应加装高强度的钢制防盗门。所有进出屏蔽室的线路都要采取防电磁泄漏措施。屏蔽效果应符合国家密码管理相炎政策要求并达到国家相荚标准要求。9.5.2.6安全监控和配电消防CA应设置,奠全监控室、系统监控室、配电室和消防器材室。安全监控窒是安全管理人员值班的地方,可对整个CA的进出人员实行监控,处理R常的安全事件。只有安会管理人员同时使用身份识别卡和人体特征鉴别才可以进入,刷卡离开。系统监控窜足网络管理人员1二作的地方。需要同时使用身份识别卡和人体特征鉴别才可以进入,刷卡离开。配电室是放置所有供电设箭的房间,只有相应的授权人员同时使用身份识别卡和人体特征鉴别才町以进入,刷卡离开。消防器材室是存放消防设备的房间,建议使用身份识别卡进入消防器材室。9.5.3门禁和物理侵入报警系统CA应设置¨禁和物理侵入报警系统。门禁系统控制各层门的进出。工作人员都需使用身份识别卡或结合人体特征鉴别/l能进m,并且进山每一道门都应有时间记录和相关信息提示。任何非法的闯入、非正常手段的开门、以及授权人刷卡离开后房内还有非授权的滞留人员.都应触发报警系统。报警系统应明确地指出报警部位。门禁和物理侵入报警系统应自备有UPS,并应提供至少8h的供电。与门禁和物理侵入报警系统配合使用的还应有录像监控系统。对监控区域进行24h不问断的录像。所有的录像资料要根据需要保留一段时间.以备查询。9.6人事管理制度人事管理制度包括人员的可信度鉴别、岗位设置等。CA应制定呵信人员策略并据此进行人员的町信度鉴别和聘用。可信人员必须接受并通过广泛的背景调查,才能证明他们有能力进行那些关键操作所必需的信任级别。CA对人员的教育水平、从业经历、信用情况等方面进行调查,来评估人员的町信度。进行可信人员背景调查必须遵循国家的有炎法律、法规和政策。10密钥管理中心建设10.1建设原则密钥管理中心的工程建设按照与CA统一规划、有机结合、独市设置、分别管理的原则建设。10.2系统10.2.1功能要求密钥管理中心应提供下列服务功能:20 GB/T25056--2010a)为CA提供密钥生成服务;b)为司法机关提供密钥恢复服务}c)为用户提供密钥更新、密钥恢复、密钥撤销服务。10.2.2性能要求密钥管理中心的性能应满足如下要求;a)密钥的保存期应大于10年;I))系统应支持多并发服务请求;c)系统各模块的状态信息保存在配置文件和数据库内部,保证系统的部署方便性和配置方便性,当系统需改变配置时无需中断系统的服务;d)各模块的功能可以通过配置文件进行控制,系统可以根据不同的需求进行设置;e)系统应有冗余设计,保证系统的不问断运行。10.2.3管理员配置要求在KMC应设置下列管理和操作人员:——超级管理员一审汁管理员~业务管理员业务操作员“超级管理员”负责KMC系统的策略设置,设置各子系统的业务管理员并对其管理的业务范围进行授权。“业务管理员”负责KMC系统的某个子系统的业务管理,设置本子系统的业务操作员并对其操作的权限进行授权“业务操作员”按其权限进行具体的业务操作。“审计管理员”负责对涉及系统安全的事件和各类管理和操作人员的行为进行审计和监督。上述各类人员使用证书进行登录,其中“超级管理员”和“审计管理员”的证书应在KMC系统进行初始化时同时产生。另外,KMC应设置安全管理员,全面负责系统的安全工作。10.2.4初始化要求KMC的初始化过程必须完成下列工作:a)生成KMC的机构密钥并安全备份;b)“1授权的CA签发KMC服务器证书;c)由授权的CA签发超级管理员和审计管理员证书;d)由授权的CA签发业务管理员和业务操作员证书。10.3安全KMC的安全参照本标准9.2的要求进行。10.4数据备份KMC的数据备份参照本标准9.3的要求进行。10.5可靠性KMC的可靠性参照本标准9.4的要求进行。10.6物理安全KMC的物理安全参照本标准9.5.2.5的要求进行。10.7人事管理制度KMC的人事管理制度参照本标准9.6的要求进行。21 GB/T25056--20101证书认证中心运行管理要求11.1人员管理要求为防止非授权人员操作CA系统,在每一个操作终端上应没有操作员身份鉴别系统,对系统的所有操作都要对有关操作员进行身份鉴别和权限控制。CA系统的每个操作人员配置有标明个人身份与相关资料的证书载体,证书载体具有H令保护机制,以保证私钥和应用的安全。人员管理的主要内容是:增加操作员、注销操作员、设置操作员权限、修改操作员权限。操作员信息包括:操作员编号、操作员姓名、操作员部门、操作员权限。超级管理员由系统初始化时产生,主要职责是设置业务管理员并进行管理。其权限为:a)增加业务管理员;b)注销业务管理员;c)设置业务管理员权限;d)修改业务管理员权限。业务管理员由超级管理员授权,主要职责是设置业务操作员并进行管理。其权限为:a)增加业务操作员;b)注销业务操作员;c)设置业务操作员权限;d)修改业务操作员权限。业务操作员由业务管理员授权,主要职责是对业务系统进行各种操作。审计管理员由系统初始化时产生,主要职责是负责对涉及系统安全的事件和各类管理和操作人员的行为进行审计和监督。其权限为:a)证据访问操作;b)日志访问操作。管理员和操作员臀录CA系统以及在CA中的所有操作都采用基于证’B的身份鉴别。当此类人员离职或足被撤职时,应及时注销其证书。11.2CA业务运行管理要求11.2.1概述CA应制定业务运行管理规范来指导CAI:t常业务开展。业务运行管理规范通常应包括CA管理制度、信息系统安全操作与维护以及客户服务等。11.2.2CA管理制度CA管理制度包括CA运行场所进出管理制度、客户信息保密制度、CA工作人员管理制度、机房安全管理制度等,应按国家有关标准执行。11.2.3安全操作与维护规范11.2.3.1系统管理系统管理的操作与维护规范应包括以下内容:a)对CA系统进行任何操作之前.应充分考虑并预计操作之后的结果,每次操作都必须记录;b)改变系统的配置,应制汀实施计划和相关文档说明,经上级主管批准后才能进行操作,操作时应有双人在场;c)系统出现故障时,应由系统管理人员检查处理,其他人员未经批准不得处理;d)未经批准不得在服务器上安装任何软件和硬件;e)未经批准不得删除服务器上的任何文件。22 GB/T25056—201011.2.3.2数据备份数据备份的操作与维护规范应包括以下内容:a)系统升级后,应立即进行全备份;b)对数据变化量大的服务器,应每天做一次增量备份,每周做一次仝备份;c)对数据变化量少的服务器,可每周做一次备份;d)对重要数据应准备两套备份,其中异地存放一套;e)对数据库的备份应单独进行;f)对重要的目录应单独进行备份;g)手工进行的备份.应在介质上标明备份的服务器及路径;h)自动进行的备份,应将备份介质有效区分;·)选择的备份介质应能保证数据的长期可靠,否则应定期更新。11.2.3.3口令管理u令管理规范应包括以下内容:a)n令长度应为8个字节以上,应是字母、数字和特殊字符组成的混合体,口令不得采用有特殊意义的(如姓名、生日、电话号码等)数字和词组;b)应规定口令的使用期限并定期更换;c)口令应妥善保管,防止泄漏;d)通过网络传输的rI令必须保护;c)应检查网络设备、主机和应用程序中是否设置有缺省口令的缺省用户名,找出并禁止。11.2.3.4应急处理CA应制i_r廊急处理预案,当出现重大故障或灾难性事故时,应启动预定的应急处理方案进行处坪。臆急处理预案应根据事件的严重程度、紧急程度和事件类别,分别规范告警、报告、保护、处置、善后、总结等处理流程和处置措施。系统恢复正常运行后,廊对应急处理过程进行总结,总结中应详细记录事件起因、处理过程、经验教训、改进建议等。应针对应急事件处理中暴嚣的问题,不断完善和修改应急处理预案。11.2.4客户服务规范CA应对客户提供全面、及时、有效的服务,保证客户在证书使用过程中出现的任何问题都能及时得到响应和解决。服务的过程应作记录。11.3密钥分管要求CA和KMC的根密钥需要用密钥分割或秘密共享机制分割备份出来,分别交r分管者保管。恢复时,到场的分管者的人数应满足恢复所需的人数。分管者的选择条件如下:a)分管者应符合可信人员策略规定的条件;b)符合下列条件之一者,不能成为分管者:1)本证15认证系统的超级管理员;2)本证书认证系统的业务管理员;3)本证书认证系统的业务操作员;4)本证书认证系统的系统维护人员。11.4安全管理要求安全管理员的职责主要包括:23 GB/T25056—2010a)制定CA的安全策略;b)指导CA的安全管理;C)设计和指导CA的安全策略实施;d)对CA的安全管理进行定期的检查和评估;e)对安全策略和执行程序的日常维持;f)定期对相关人员开展安全教育。安全管理员对安全的三个关键领域负有全面的责任,即:a)开发与执行安全策略;b)维护与完善安全策略;c)保持与安全审计的一致性。安全管理员有责任来定义和委托CA的特定个人或部门的安全职责。11.5安全审计要求审计管理员应定期对CA进行安全审计,包括;a)人员审计:CA的人员必须是可信任的;必须理解安全策略和安全操作程序;b)物理安全审计:物理安全防护措施是否完善;安全物品的管理是否符合CA的安全管理规定;c)通信安全审计:CA的所有安全通信设备的使用是否符合CA的安全管理规定;d)操作安全审计:CA所有的人员的操作记录必须完整保存,并且所有操作必须符合CA的安伞管理规定;e)系统安全审计:检查CA的操作系统、数据库系统、入侵检测系统、漏洞扫描系统、防病毒系统、防火墙系统、CA系统等的日志记录,以确定系统是否异常。11.6文档配备要求11.6.1概述CA应配备相关的文档用于指导CA的建设、运行、服务、应急和日常管理。可分为技术实现、物理建设、人事管理、运行管理以及审计与评估五类。11.6.2技术实现类技术实现类主要包括CA系统设计、CA系统安全、CA系统安装与配置手册、CA系统安全目标、CA系统用户手册五类文档,技术实现类文档主要描述内容如下:a)CA系统设计:描述CA系统的逻辑结构、网络结构、数据通信设计、密钥管理、业务处理流程以及系统的软硬件配置等。I,)CA系统安全:描述CA系统通过采用防火墙、入侵检测、漏洞扫描、病毒防治、访问控制、安伞配置等措施,保证CA的安全性。同时,从数据通讯、密钥管理、证书管坤、安伞审计、物理安全等各个方面阐述CA安全措施的实现。c)CA系统安装与配置手册:介绍CA系统的安装与配置。d)CA系统安全目标:描述CA系统对国家相关安全标准的满足情况。c)CA系统用户手册:描述用户对CA系统使用和操作的技术手册。11.6.3物理建设类物理建设类主要包括物理场地安全手册、物理场地安全管理规定两类文档,物理建设类文档主要捕述内容如下:a)物理场地安全手册:描述物理场地的安全的要求及实现等;b)物理场地安全管理规定:描述人员进出CA各个区域的权限、来访者的接待和管理、门禁系统的使用、监控报警系统的操作使用等管理规定。”.6.4人事管理类人事管理类文档主要包括可信人员策略、可信人员职位划分原则与鉴别两类文档,人事管理类文档24 ==fj:要描述内容如下:aJ可信人员策略:描述口r信人员策略及其如何进行可信人员凋查;b)可信人员职位划分原则与糁别:描述可信人员职位划分原则,口J信人员鉴别和背景调告及分析等。11.6.5运行管理类运行管理类文档主要包括账号管理、CA管理规范、认证、Jk务声明、操作手册、安全应急预案、客户报务规范六类文档,运行管理类文档主要描述内容如下:a)账号管理:描述账号的处理和管理;b)CA管理规范:描述CA的操作与安全维护管理的规定;c)认证业务声明:对外公布的证书认证业务服务声明;d)操作手册:描述认证业务流程;e)安全应急预案:描述CA电力系统、消防系统、、眦务系统、人员变动、安全等方面Ⅱ{现事故时的应急处理流程和措施;f)客户服务规范:是}}iCA制定出的系列客户服务文档,包括客户法律坍议、隐私保护政策、客门保障计划等。11,6.6审计与评估类审计与评估类文档主要包括cA安全与审计规范、安全审核与评估规范两类文档,审计与评估类文档主要描述内容如下:a)CA安全与审计规范:规定了(:A运行系统的审核方法;I,)安全审核与评估规范:规定丫CA运行系统的审核范围和评价标准。12密钥管理中心运行管理要求121人员管理要求按本标准11.】的要求执行。12.2运行管理要求按本标准¨.2的要求执行。12.3密钥分管要求按本标准11.3的要求执行。12.4安全管理要求按本标准¨.4的要求执行。12.5安全审计要求按本标准11.5的要求执行。12.6文档配备要求按本标准11.6的要求执行。13检测13.1概述证书认证系统建成后,应按照本章要求对证书认证系统进行功能、性能以及安全性方而的榆测。测试部门Ⅱ,根据本标准的要求及被测系统的具体情况,制订测试大纲,进{j测试。13.2系统初始化系统应能按照本标准9.1.5和10.2.4的要求止确进行初始化。25 GB/T25056--201013.3用户注册管理系统13.3.1用户证书申请信息的录入功能系统应能对认证系统定义的各类证书所要求的信息正确地录入,对于证书本身所需信息之外的用户信息也能够正确地录入。系统应能批量读取按照系统规定格式存储在外部介质中的或通过网络传输的用户证书申请信息。13.3.2用户信息审核功能系统应能读取需要进行审核的证书申请信息,与可以证明用户真实身份的信息进行比较和审核。应能将审核通过的信息正确提交给签发系统并反馈给证书申请者。不能通过审核的信息应退回录人者并说明理由。13.3.3用户证书下载功能系统应能根据认证系统的规定和用户的选择,正确地下载证书,并日.将证书和私钥信息安全地写人证书载体中。13.3.4系统的多级审核功能系统庇能正确地将信息提交给上一级注册管理系统,并能够根据系统的策略,对不同种类的用户采用不同的审核模式;13.3.5用户信息归档和恢复功能系统应能自动或人工进行用户信息的归档,并且能够根据归档的用户信息将系统的数据恢复到某一时刻的状态。13.3.6日志处理功能系统应能准确清晰地记录日志,应能提供完善的查询、归档和防篡改能力。n志中应记录包括事件发生的时间、事件的请求者和执行者以及系统和相关者的签名等信息。13.4证书/证书撤销列表生成与签发系统13.4.1多层结构支持功能系统应能将所下载的根证书和下级CA证书导人到证书存储区中,并能正确识别H{根证书和下级(:A证书,建立正确的认证路径。13.4.2CRL签发功能系统应能根据CRI。签发策略正确签发CRL文件,并且能够通过证书中的CRI。分布点地址,进行CRI.的查询和下载。13.4.3证书模板功能系统应能根据用户的要求,使用证书模板对所签发的证书类型及内弈进行灵活的定义。f3.4.4CA证书签发功能系统应能利用签名密钥签发证书。13.4.5CA证书更新功能系统应能正确完成CA证书的更新,在证书认证系统的发布系统中,生成新的t"A与旧的CA证书的认证证书链,供不同情况下为用户提供证书验证服务。13.4.6证书归档和恢复功能系统应能自动或人工进行证书的归档,并且能够根据归档证书将系统的数据恢复到某一时刻的状态,实现系统的恢复功能。13.4.7用户证书更新功能系统应能为已经注册的用户重新签发证书,并将汪书和加密证书的私钥安全地传递到用户的证书载体中。在证书载体中,不仅存放新的证书和私钥,还要存放旧的证书和私钥。13.4.8并发处理能力系统应能实现所声明的并发处理能力。13.4.9日志处理功能系统应能准确清晰地记录El志,应能提供完善的查询、归档和防篡改能力。26 GB/T25056--2010日忐中应记录包括事件发生的时间、事件的请求者和执行者以及系统和相关者的签名等信息。13.4.10管理员配置功能超级管理员和审计管理员必须是平级的关系,并且在系统初始化时『司时生成。审计管理员独市于超级管理员,不能由超级管理员来进行授权。超级管理员能够添加、删除业务管理员,并能够为其分配权限、申请和制作证书。业务管理员能够添加、删除业务操作员.并能够为其分配权限、申请和制作证书。审计管理员能够审计超级管理员、业务管理员和业务操作员的全部操作。13.5证书/证书撤销列裹存储与发布系统13.5.1数据库备份和恢复功能系统应能自动或人工进行数据库信息的备份,并且能够根据备份信息将系统的数据恢复到某~时刻的状态。13.5.2目录服务器的目录信息树定义功能系统应能进行目录服务系统的目录信息树的结构定义,能够根据认证系统的具体要求,灵活地定制信息树的结构。13.5.3目录服务器管理功能系统应能正确地将证书信息以及CRI。信息写入目录服务器中;能够根据一定的查{flJ条件,杳淘有关用户和证书以及CRI。的信息。13.5.4目录服务器的主从映射功能系统应能将信息自动地由主目录服务器实时映射到从目录服务器中,可支持一主多从的目录服务器结构。13.5.5目录服务器备份和恢复功能系统应能自动或人工进行目录服务器信息的备份,并且能够根据备份信息将系统的数据恢复到某一时刻的状态。13.5.6数据库系统和目录服务器一致性检验功能系统应能对在数据库系统和目录服务器系统中的信息进行一致性榆查,当出现信息不一致的情况时,管理人员能够根据策略要求进行修改。13.6证书状态查询系统13.6.1CRL查询功能系统应能提供CRI,查询功能,使用户或应用系统利用证书中标识的CRI。的地址,查询并F载。13.6.2OCSP功能。系统应能提供在线证书状态备询功能,查询的返回信息带有()CSP服务器的数字签名,并能正确返回所查询的证书状态。13.6.3SOCSP功能系统应能提供简易在线{IF书状态香询功能,查询的返回信息带有S()CSP服务器的数字筘名,并能正确返回所查询的证书状态。此功能为可选项。13.7安全审计系统系统应能分别查询各子系统中的FI志记录,也可以通过查询证书/证书撤销列表存储与发布系统的数据库,进行审计。系统廊能对证书认证系统中的有关事件、管理员的操作行为等进行审计,能够根据时间、事件、人员等条件进行统计。13.8密钥管理中心检测13.8.1密钥生成与分发系统能够支持预生成和实时生成密钥对两种方式:27 GB/T25056--2010——系统能够根据配置参数,在确定的时间,正确地批量生成密钥对;——系统能够在CA提出密钥申请时,实时地分发密钥对。13.8.2密钥状态转移系统密钥状态转移应满足:——在系统生成密钥对后,所有生成的密钥对都在备用库中;——当密钥分发给用户后,密钥在在用库中;一一当用户的证书注销后,证书中对应的密钥在历史库中}——密钥库中的密钥必须加密存放。13.8.3密钥信息归档和密钥恢复系统密钥信息归档和密钥恢复应满足:⋯一系统能够提供密钥信息归档功能;一一能够自动/人工进行密钥信息的归档;——当且仅当符合操作规程时可以实现密钥恢复功能。13.8.4司法取证密钥恢复系统能够在符合相关管理规定的条件下,提供司法取证密钥恢复服务。恢复的密钥不能以明文的形式出现在载体之外,加密该密钥的密钥也不能以明文的形式出现在载体之外。13.8.5管理功能人员管理应符合人员管理制度;运行管理应符合运行管理流程,应具备应急处理能力。13.9系统安全性检测13.9.1密钥管理安全检测密钥管理安全应满足:a)密钥的生成必须由国家密码主管部门认可的密码设备生成}b)系统中使用的密钥必须存储在硬件密码设备中;c)存储在密码设备之外的密钥必须加密}d)密钥必须加密传输。13.9.2系统的访问控制检测系统的访问控制应满足:a)非授权人员无法访问系统;b)非授权的IP地址的主机无法访问被保护的主机;c)管理和操作人员不能进行非授权的操作。13.9.3系统的审计日志检测系统的审计日志应满足:a)操作事件的日志必须具有数字签名,b)El志不可篡改。13.9.4系统的数据安全检测系统的数据安全应满足:a)保护口令等敏感信息必须加密存储;b)各子系统之间通信必须进行身份鉴别和加密传输。13.10其他安全产品和系统其他安全产品和系统包括防火墙、入侵检测、漏洞扫描、病毒防治等安全产品以及机房、门禁、供电、消防、电磁泄漏、数据备份、灾难恢复等物理安全措施,检验内容及其标准如下:a)采用符合国家相关标准和规范、并取得相应资质的产品;b)根据系统的具体情况对产品进行了正确的配置和设置。,R 附录A(资料性附录)KMC与CA之间的消息格式GB/T25056--2010A.1概述KMC为CA提供用户加密密钥对。KMC在接收到来自CA的请求后,首先检查请求的合法性与正确性,然后根据CA的请求进行相应的处理,并将结果返回给CA。KMC为CA提供服务的完整过程包括请求、响应、回执,以及异常情况的处理。A.1.1请求请求指来自CA的请求,包含CA请求的类型、性质以及特性数据等,该请求将被发送到KMC并得到服务。服务请求包括如下内容:——协议版本;——服务请求标识符;一一cA证书标识符;——扩展的请求信息;——请求信息的签名。A.1.2响应响应指KMC对来自CA请求的处理响应。KMC的响应包括如下内容;——协议版本;一响应标识符;一一KMC证书标识符;——响应信息;——响应信息的签名。A.1.3回执回执指CA在接受到KMC的响应数据后,应答KMC发送的回执信息。回执包括如下内容:——协议版本;—一回执标识符;——(:A证书标识符;——回执信息;——回执信息的签名。A.1.4异常情况当KMC和CA任何一方发生错误时,均需要向对方发送错误信息。错误可以足下列几类:——验证请求失败:KMC验证来自CA证书或CA请求数据失败,CA收到后应重新进行申请;一r-内部处理失败:KMC处理CA的请求过程中发生内部错误,通知CA陔清求处理失败,需要莆新申请;——验证响应失败:CA验证KMC证书或者来自KMC的响应数据失败;——验证回执失败:KMC验证来自CA的回执信息失败,通知CA需要重新处理。A.2协议A.2.1约定本规范采用抽象语法表示法(ASN.1)来描述具体协议内容。如果无特殊说明,默认使用ASN.129 GB/T25056--2010显式标记。引用的其他术语还有:Extensions,CertificateSerialNumber,subjectPublicKeyInf。,Name,Algorithmldentifier,CRI.Reason。A.2.2请求A.2.2.1请求数据格式CA请求的基本格式如下:CARequest::一SEQUENCE{ksRequestTBSRequest,signatureAlgorithmAlgorithmldentifier,signatureValueOC"I、ETSTRING其中:KSRequest::=SEQUENCE{versionVersionDEFAUI.Tv1.caNameEntName,taskNOTaskN0,reqTypeReqType,requestl。istSEQUENCEOFRequest,requestTimeRequestTime,requestProofRequestProoIVersion::一INTEGER{vl(0)}EntName::一SEQUENCE{hashAlgorithmAlgorithmldentifier,entNameOCTETSTRING.entPubKeyHashOCTETSTRING.serialNumberCertificateSerlalNumberTaskN0::一INTEGEl/ReqType::一CHOICE{apptyKeyINTEGER{appty(11)}restoreKeyINTEGER{restore(21)}cancelKeyINTEGER{cancel(31))Request::一CHOICE{applykeyreqAppKeyReq,restorekeyreqRestoreKeyReq,cancelkeyreqCancelKeyReqRequestTime::一GeneralizedTime;RequestProof::一OCTETSTRING。A.2.2.2KSRequest及其结构解释KSRequest包含了请求语法中的重要信息,本条将对该结构作详细的描述和解释。30 GB/T25056--2010A.2.2.2.1版本本项描述了请求语法的版本号,当前版本为1,取整型值0。A.2.2。2.2请求者标识符本项描述了请求者标识符。结构如下:EntNtime::一SEQUENCE{hashAlgorithmAlgorithmIdentifier,entN8meOCTETSTRING,entPubKeyHashOCTETSTRING,serialNumberCertificateSerialNumber}entName是申请者的唯一名称,该值由运行CA和KMC约定。entPubKeyHash是申请者公钥的摘要值。该值将通过对发布者证书中的主体公钥字段(不含标记和长度)进行计算。hashAlgorithm字段用来指明这些摘要计算所使用的数据摘要算法。serialNumber是申请者的证书序列号。A.2.2.2.3任务序列号本项描述了请求的任务序列号,该任务序列号是申请者用来区分多次申请时候的一个标识符。任务序列号是一个整型值,KMC应能处理不大于20字节的任务序列号,而CA应确保不使用大于20字节的任务序列号。A.2.2.2.4请求类型本项描述了请求包类型,当值为applyKey时,表明该请求为申请密钥,为restoreKey时表明该请求为恢复密钥,值为cancelKey时表明该请求为撤销密钥。本项的取值决定了下面一项——详细请求子包Request的取值。A.2.2.2.5详细请求子包本项描述申请者请求中的详细请求子包,每个子包的格式如下:Request::一CH()ICE{applykeyreqApplyKeyReq,当ReqType取值applyKey时restorekeyreqRest。reKeyReq,当ReqType取值restoreKey时cancelkeyreqCaneelKeyReq当ReqType取值cancelKey时上面三种数据格式解释如下:a)ApplyKeyReq包ApplyKeyReq包为密钥申请格式包,当ReqType取值applyKey时,该请求包采用本子包格式,其具体格式如下:ApplyKeyReq::=SEQUENCE{appKeyTypeAlgType,appKeyI。enAppKeyl。ell·retAsymAlgAlgType,retSymAlgAlgType,retHashAlgAlgType,isRetPubKeyEnvbool。appUserlnfoAppUserlMoAlgType::一Algorithmldentifier,表明使用的非对称算法、对称算法、摘要算法等算法类型。其31 GB/T25056—2010中,appKeyType为要申请的加密密钥对的类型,retAsymAlg、retSymAlg、retHashAlg分别为KMC响应数据包中非对称算法、对称算法、摘要算法类型;AppKeyI。en::一INTEGER,表示申请的密钥长度,如十进制1024表示申请1024位长度的密钥;IsRetPubKeyEnv项指定KMC响应数据包中是否对返回公钥进行加密;AppUserIn[o::=SEQUENCE{userNameOCTETSTRING.userCerrNoCertificateSenalNumber,userPubKeySubjectPublicKeylnfo,notBeforeGeneralizedTime,notAfterGeneralizedTimeAppUserlnfo结构表示申请包中对应用户信息,依次表示用户姓名、解密证书序列号、用户签名公钥、密钥有效起始时间、密钥截止时间。b)RestoreKeyReq包RestoreKeyReq包为密钥恢复格式包,当ReqType取值restoreKey时,该请求包采用本子包格式,其具体格式如下:RestoreKeyReq::一SEQUENCE{retAsymAlgAlgType,retSymAlgAlg’Fype,retHashAlgAlgType,isRetPubKeyEnvbool,userCertNoCertificateSerialNumber.userPubKeySubjectPublicKeylnfoAlgType::=Algorithmldentifier,表明使用的非对称算法、对称算法、摘要算法等算法类型。其中,retAsymAlg、retSymAlg、retHashAlg分别为KMC响应数据包中非对称算法、对称算法、摘要算法类型;isRetPubKeyEnv指定KMC响应数据包中是否对返回公钥进行加密;userCertNo指定用户证书序列g-;userPubKey指定用户签名公钥。c)CaneelKeyReq包CancelKeyReq包为密钥撤销格式包,当ReqType取值cancelKey时,该请求包采用本子包格式,其具体格式如下:CancelKeyReq::一SEQUENCE{userCertNoCertificateSerialNumberuserCertNo指定用户证书序列号。A.2.2.2.6请求时间本项描述清求生成时间。A.2.2.2.7请求证据本项描述请求证据。A.2.3响应A.2.3.1响应数据格式KMC响应的基本格式如下:x2 KMRespond::一SEQUENCE{ksRespondTBSRespondsignatureAlgorithmsignatureValue其中:AlgorithmldentifierOCTETSTRING=SEQUENCE{VersionDEFAUI。Tv1,entName,TaskNO,RespondType,SEQUENCEOFRespondRespondTime,RespondProofVersi。n、entName、TaskNo数据格式在前文已经解释。GB/T25056—2010RespondType::=CHOICE(appl),RespondINTEGER{apply(12)}restoreRespondINTEGER{restore(23))canceIRespondINTEGER{cancel(33)}}Respond::=CHOICE{applyKeyRespondAppKeyRespond,restoreKeyRespondRestoreKeyRespond,canceIKeyRespondCancelKeyRespond}RespondTime:{=GeneralizedTime;RespondProof::一OCTETSTRING。A.2.3.2KSRespond及其结构解释KSR。。pond包含了响应语法中的重要信息,本条将对该结构作详细的描述和解释。A.2.3.2.1版本本项描述了响应语法的版本号,当前版本为1,取整型值0。A.2.3.2.2响应者标识符本项描述了响应者标识符,该结构在前文已经给出,在本响应数据中,其成员分别取值响应者的名称、响应者公钥的摘要值、摘要算法以及响应者的证书序列号。A.2.3.2.3任务序列号本项描述了响应的任务序列号,该任务序列号值取自申请者数据包。A.2.3.2.4响应类型本项描述了响应包类型,当值为applyRespond时,表明该包为申请密钥响应包,为restoreRespond时表明该包为恢复密钥响应包,值为caneelRespond时表明该包为撤销密钥响应包。本项的取值决定了下面一项一详细响应子包Respond的取值。A.2.3.2.5详细响应子包本项描述响应者清求中的详细响应子包,每个子包的格式如下:一∞聊:至;呈№∞nⅫo坩坩-詈m?一龇㈨岬哪哪咖伸咄.委._虽|堡|耋{墨|皇 GB/T25056--2010Respond::一CHOICE{applyKeyResp。ndretKeyRespond,当RespondType取值applyRespond时restoreKeyRcsp。ndretKeyRespond,当ReapondType取值restoreRespond时cancelKeyRe印ondcancelKeyRespond当RespondType取值cancelRespond时}上面共有两种数据格式,分别解释如下:a)rctKeyRespond包retKeyRespond包为密钥响应格式包,在处理密钥申请、恢复申淆时响应申请者的。当RespondType取值applyRespond、restoreRespond时,该响应包采用本子包格式,其具体格式如下:retKeyRespond::一SEQUENCE{userCertNoCertificateSerialNumber,isRetPubKeyEnvbool,retPubKeyRetPubKevENV.retPriKeydataEnvelope}RetPubKeyENV::一(:H()ICE{userEncPubKeySubjectPublicKeyInfo,uscrEncPubKevEnvdataEnvelopedataEnvelope::一S19nedAndEnvelopedData(data)userCertNo指用户加密证书序列号,该项从CA申请包中取值;isRetI,ubKeyEnv表明KMC响应数据包中返回公钥数据是否已做作加密,若该项取值0,表明接下来的公钥数据是公钥明文,『『li小是加密包格式;retPubKey是返回给申请者的用户加密公钥数据,其具体采用的格式根据isRetPubKeyEnv|fI『定;retPriKey是返回给申请者的用户加密私钥数据,即对私钥作带签名的加密。b)CancelKeyRespond包【:ancelKeyResp。nd包为密钥撤销响应格式包,在处理密钥撤销时响应申请者的。当RespondType取值cancelRespond时,该响应包采用本子包格式,其具体格式如下:CancelKeyRespond::一SEQUENCE{userCertNo(:ertjficateSe“alNumber,}userCertNo指定用户加密证书序列号,该项值取自申请包。A.2.3.2.6响应时间本项描述响应生成时间。A.2.3.2.7响应证据本项描述响应证据。A.2.4回执(本项为可选项)A.2.4.1回执数据格式接受到KMC响应数据后,申请者制作回执数据包,并发送给KMC.该回执包基本格式如下:CaReceipt::=SEQUENCE{ksReeeiptTBSReceipt,signatureAlgorithmAlgorithmldentifier,signatureValueOCTETSTRING34 GB/T25056—2010}其中:KSReceipt::一SEQUENCE{versionVersionDEFAUI。Tv1.caNameentName,taskN0TaskNO,receiptTypeReeeiptType,ReceiptUserI。istSEQUENCEOFReeeiptUser,receiptTimeReeeiptTime,receiptProofReeeiptProof,Version、entName、TaskNo数据格式在前文已经解释。ReeeiptType::一CHOICE(applyReeiptINTEGER{apply(13))restoreReciptINTEGER{restore(23)}eaneelReeiptINTEGER{caneel(33)))ReceiptUser::=SEQUENCE{userCertNOCertificateSerialNumber.}RespondTime::=GeneralizedTime;RespondProof::一OCTETSTRlNG。A.2.4.2KSReeeipt及其结构解释KSReceipt包含了响应语法中的重要信息,本条将对该结构作详细的描述和解释。A.2.4.2.1版本本项描述了回执语法的版本号,当前版本为1,取整型值0。A.2.4.2.2申请者标识符本项描述了申请者标识符,该结构和解释在前文已经给出。A.2.4.2.3任务序列号本项描述了回执的任务序列号,该任务序列号值取自响应数据包。A.2.4.2.4回执类型本项描述了回执包类型,当值为app|yReeipt时,表明该包为申请密钥回执包,为restoreRecipt时表明陵包为恢复密钥回执包,值为eaneelRecipt时表明该包为撤销密钥回执包。A.2.4.2.5用户信息包本项捕述回执中的用户信息,包括用户加密证书序列号。A.2.4.2.6回执时间本项描述凹执哇成时间。A.2.4.2.7回执证据本项描述回执证据。 GB/T25056—2010B.1符号说明附录B(资料性附录)安全通信协议A:在身份鉴别协议中是验证方,在密钥交换协议中是发起方;B:在身份鉴别协议中是被验证方,在密钥交换协议中是接受方EK(M),D。(M):使用密钥K对消息M进行加密和解密;S。(M):使用密钥K对消息M进行签名;P1一x,S1一x:x加/解密用的公钥和私钥;S2一x"P2一X:X签名/验证用的私钥和公钥}ECertx,SCertx:X的加密证书和签名证书;R。,N。:X产生的随机数和x任意选择的信息;N。’:X任意选择的另一信息;IDn:第n个数据包的标识符,n是自然数;algld:签名算法;KEA:密钥交换算法;K:随机密钥。B.2身份鉴别1.A—B:{IDl,RA,NA};2.B—-A:{ID2,SCertn,(RA,RB,NB),S靶B(RA,RB,NB));3.A验证RA,SCertB和S女B(RA,RB,NB);A—叫B:{ID3,SCertA,(Rn,RA,NA’),SszA(RIl,R^,NA’))4,‘B验证Rn,SCertA和S∞A(RB,RA,NA’)。B.3密钥交换36以下协议陈述巾出现的信息包STP—REQ—TOKEN和STP—REP—IT—TOKEN的格式在3中定义。1.A—,B:{STP—REQ—TOKEN);信息包STPREQTOKEN中有关各字段的内容赋值如下:randSrc:=RA,targname:=B,srcname:一A,key—estb—set:一KEA,algld:=algld,req—integrity::=-S女A(RA,B,A,KEA),certiLdata:一ECertA。2.B验证ECertA和S。2^(R^,B,A,KEA);B—A:{STPREPITT()KEN};信息包STP—REP—IT—TOKEN中有关各字段的内容赋值如下:randSrc:=RA,randTarg:一R“,targ—name:一B,src—name:一A,key—estb—id:一KEA,key—estb—str:一EmA(K),algld;一algld,reptiinteg:一S女B(RA,RB,B,A,KEA,EpI一^(K)),certiLdata:一ECert.;3.A验证ECertB,S鼬I,(R^,RB,B,A,KEA,E¨^(K))和RA,计算DslA(EplA(K))=K,A—-B:{STP—REP—ITT()KEN};信息包STP—REP—IT—TOKEN巾有_)乏各字段的内容赋值如下:randSrc:一R^, GB/T25056--2010randTarg:一RB,targ—name:一B,src—name:一A,algId:一algldkey—estbrep:一Epl—H(K,RB)rep—itinteg:一Ssa—A(RA,RB.B,A,Ev】一B(K,RB));4.B验证ECertA和Ss2A(RA,RB,B,A,EP1B(K,RB)),计算Dsl—B(EPlu(K,Ru))一(K,RB)验证K和Rn。B.4安全通信协议验证方请求:STPREQ::一SEQUENCE{RequestTokenREQ-TOKEN请求数据包certi卜data[03certificationDataOPTIoNAI。证书authdatar1]AuthorizationDataOPTIONAL、REQ—TOKEN::一SEQUENCE{req—contentsReq-contents请求的内容algIdAlgorithmldentifier完整性算法req—integrityIntegrity~”token”isReq-contents请求的内容的完整性验证}Req—contents::=SEQUENCE{tok—idINTEGER(256)TOKEN的标识context—idRandom-Integer上下文标识pvnoBITSTRING协议版本timestampUTCTime0PTl0NAL时间戳randSrcRandom—Integer随机数(A)targ_nameName对方的名字src—name[03NameOPTIONAl。本方的名字,除“匿名”外,必须支持req—dataContext—Data上下文数据validity[13ValidityOPTIONAl。上下文的有效期key—estb—setKey—Estb—Algs密钥交换算法集合key—estb—reqBITSTRINGOPTIONAL第一个密钥交换算法的参数,这个参数必须包括密钥的长度。如果发起方不想进行密钥交换除外key—src—bindOCTETsTRlNGOPTIONAI。密钥和本方名字的绑定,强制的Hash函数过程}被验证方回应:STP—REP—TI::=SEQUENCE{ResponseTokenREP—TI—TOKEN回应数据包certiGdataCertificationDataOPTIONAl。证书37 GB/T25056--2010REPTI—TOKEN::一SEQUENCEfrep—ti—contentsRepti—contents回应数据包的内容algIdAlgorithmIdentifier完整性算法rep,ti—integIntegrityJ’token”isRep—ti—contents回应内容的完整性验证ReD—ti—contentstokidSEQUENCEcontext—idpvnoE03timestamprandTargsrc—name[1]targ—nflmerandSrcrep—datavalidity[2]key——esth..id中密钥交换算法集合中的一个key—-estb..str}38INTEGER(512)TOKEN的标识Random—Integer上下文标识BITSTRINGOPTIONAl,协议版本UT【:TimeOPTIONAI。时间戳RandomInteger随机数(B)NameOPTIONAL验证方的名字Name被验证方的名字Random—Integer随机数(A)Context—Data上下文数据Validity上下文的有效期,是REQ-TOKEN中J:下史的有效期的子集Algorithmldentifier()PTIONAI,密钥交换算法,是REQTOKENBITSTRINGOPTIONAl。密钥建立信息验证方回应:STPREP—IT::一SEQUENCE{responseTokenREP—IT—TOKEN回应数据包algldAIgorithmIdentifier完整性算法rep—it—integIntegrity√’token”isREP—IT—TOKEN回应数据包的完整性验证REP—ITT()KEN::一SEQUENCE{tok—idINTEGER(768)TOKEN的标识context.idRandom—Integer上下文标识randSrcRandom—Integer随机数(A)randTargRandomInteger随机数(B)targnameName被验证方的名字src_nameNameOPTIONAl,验证方的名字key—estbrepBITSTRINGOPTIONAl。回应密钥建立信息} 附录C(资料性附录)密码设备接口函数定义及说明GB/T25056--2010C.1应用类密码设备接口函数c.1.1接口组成部分c.1.1.1算法对象在接口函数中,使用AI。GORITHM—OBJ表示算法对象,用来保持算法的参数的信息和在密码计算中保持上下文的关系。在调用密码功能之前,必须调用McreateAlg。rithm()bject创建算法对象,调用MSetAlgorithm()bject设置算法对象。每一个算法对象必须调用M—createAlg。rithm()bject函数创建,调用M—DestroyAlgorithm【)bject函数销毁。一个算法对象不能既用于加密也用于解密,只能或者加密或者解密。--E!算法对象被设置,将不能被重新设置。对于一个算法对象,不能调用M—SetAl一gorithmlnfo函数两次。或者创建一个新的对象,或者销毁对象然后重新创建。C.1.1.2密钥对象在接口函数中使用KEY—ON表示密钥对象,这个参数用来保持密钥的值。在调用密码功能之前,必须调用M—createKeyObject创建密钥对象,调用M—SetKeyObiect设置密钥对象。每一个密钥对象必须调用M—createKey()bject函数创建.调用M—DestroyKey()bject函数销毁。C.1.1.3算法函数使用算法对象和密钥对象调用相应的密码算法函数执行密码的功能。C.1.2宏定义#ifndefNUI。I.#defineNUI。I。0蚌endif#ifndefNULl.一PTR#defineNUI。LPTRNUI。I,#endif/}定义空*/typedefunsignedchar{POINTER;/}定义指针十/typedefunsignedlongINFO—TYPE;/%定义算法信息的类型$/typedefP()INTERAI。GORITHM—OBJ;/}定义算法对象}/typedefPOINTERKEY—OBJ;/}定义密钥对象}/#defineCKI—SymmetricKey1/}对称密钥$/#defineCKI—cip11ersymmet“cKey2/}加密的对称密钥$/#defineCKl一RSAPrivateRef10/4RSA私钥的标识$/#defineCKIRSAPrivateCipher#defineCKIRSAPrivateDER#defineCKIRSAPublicDER#defineCKlX9ECPrivateDER#defineCKTX9ECPublicDER#defineCATSCH101#defineCAIHMAC103#defineCAIECKeyG-en104ll/$加密的RSA的私钥m/12/$RSA私钥的DER编码+/15/+RSA公钥的DER编码+/20/}EC私钥的DER编码}/25/}EC公钥的DER编码s//+SCH算法}//*使用带有密钥的HASH函数计算消息认证码+//*产生ECC密钥对+/ GB/T25056—2010#defineCAI—RSAKeyGen105出t/#defineCAI—RSATokenKeyGen式输出,私钥以引用的形式输出*//+产生RSA的密钥对,公钥和私钥都以DER编码的形式输106/*产生RSA的密钥对,公钥以DER编码的形#defineCAIRsAsecretKeyGen107/}产生RSA的密钥对,公钥以DER编码的形式输出,私钥以加密的形式输出+/#deftneCAISCHWithRSAEncryptioni09/$使用RSA和数据摘要数字签名}/#defineCAIECSCHWithDSA111/十使用ECDSA数字签名}/#deftneCAIsymmetricKeyGen112/}产生对称密钥的功能$/#defineCAl一symmetriccipher113/$使用对称算法加密和解密}/#defineCAI—RSAEncryption114/使用RSA算法加密和解密}/#defineCAIRandom115/}产生随机数$/#defineCAI—EC—DHKeyAgree116/十基于ECDH算法的密钥交换算法{/注:本部分中引用的“SCH”.是指国家密码主管部门批准使用的数据摘要算法。c.1.3数据结构定义c.1.3.1数据元typedefstructelement—struct{unsignedchar^data;unsignedIonglen;}EI。EMENT;/+定义通用的数据单元+/c.1.3.2数据摘要算法参数typedefstruet{INFO—TYPEdigestlnfoType}PC)INTERdigestlnfoParamsl}ADIGESTSPECIFIERlC.1.3.3RSA密钥参数typedefstruct{unsignedlongmodulusBits;El。EMENTpublicExponent;}ARSAKEYGENPARAMStypedefstruct{/+文摘算法的类型*//-文摘算法的参数t//+模的长度+//*公钥的指数+/unsignedlongkeyReference;/}密钥的引用}/)AToKENKEYGENPARAMS;c.1.3.4椭圆曲线参数的类型EnumAECParameterType{ECPARAMSTYPENULL=100,/$类型是空}/ECPARAMSTYPECURVE,/$类型是曲线$/EC—PARAMS-TYPENAMED—CURVE/十类型是命名曲线十/)AECPARAMSTYPE;/+定义椭圆曲线参数的类型+/c.1.3.5椭圆曲线域的类型EhumAECFieldType{40 GB/T25056--2010ECFT—FP=100。/}素数域$/EC—FTF2一POLYNOMIAI,,/*二进制域多项式方式+/EC—FT—F2一()NB/}二进制域优化方式}/}AEC—FIEI。D—TYPE;/+定义椭圆曲线的域的类型+/C.1.3.6椭圆曲线参数typedefstruct{A—EC—PARAMS"I’YPEparameterlnfoType;/十曲线参数的类划{/POINTERparameterlnfoValue;/}曲线参数的值$/)AEC—PARAMS;/+定义曲线的参数+/如果曲线参数的类型是EC—PARAMS—TYPE—NUI,I。,曲线参数的值设置为NUI。L—PTR。如果曲线参数的类型是ECPARAMS—TYPE—CURVE,曲线参数的值设置为指向结构A—EC—PARAMs—CURVE的指针。如果曲线参数的类型是EC—PARAMS_TYPE—NAMED—CURVE,曲线参数的值设置为指向结构El。EMENT的指针。结构El,EMENT的data字段是命名曲线的Objectidentifier的DER编码。结构El。EMENT的len宁段是命名曲线的Objectidentifier的DER编码的长度。A—EC—PARAMS—CURVEtypedefstruct{unsignedlongversionj/{版本}/A—EC—FIEI.D—TYPEfieldType{/十域类型{/El—EMENTfieldlnfo;/}域的信息,如果是素数域,信息表示一个素数。如果是二进制域多项式形式,信息表示一个多项式。,/EI.EMEN"/、coeffA:/+coefficientA{/EI,EMENTcoeffB:/4coefficientB十/EI。EMENTbase;/}基底$/EI。EMENTorder;/}序$/ELEMENTcofactor;unsignedlongfieldElementBits;}AECPARAMSCURVE;/+定义椭圆曲线的参数十/C.1.3.7对称密钥标识typedefstruct(unsignedlongkeyI,ength;/}密钥的长度,字节为单位*/unsignedlongprotectFlag;/十密钥的保护标记,0表示不加密密钥unsignedchar*cipherName;/$算法的名字$/}A—SYMMETRIC—KEY—SPECIFIER;C.1.3.8对称密钥加密算法参数typedefstruet{unsignedchar%encryptionMethodName;/}算法的名字%/POINTERencryptionParams;/女算法的参数№/unsignedchar%feedbaekMethodName;/}加密方式的名字}/非0表示加密密钥+/ GB/T25056—2010P()INTERfeedbackParams;/№加密方式的参数,指向El,EMENT结构的初始化向量*/unsignedcharpaddingMethodName;/十补位方法的名字十/)ASYMMETRIC(1IPHERPARAMS:C.1.3.9随机数typedefstruct{POINTERSeed;/}随机数的种子+/}ARANDOMPARAMS;C.1.4错误码#defineMEALGORITHMAI。READYSET512/十算法对象已经调用B—SetAlgorithmlnfo被设置或调用algorithmparametergeneration{/42#defineME—AI,GORITHM—INFO513/}无效的Algorithminformation的格式在algorithmobject算法对象中$/#defineME—AI。GORITHM—NOT—INITIAl,IZED514/+algorithmobject没有被调用初始化过程初始化+/#defineME—AI。GORITHM—NOTSET515/$algorithmobject没有被调用B—SetAlgprithmlnfo函数设置}/#defineMEALGORITHM—OBJ516/}无效的algorithmobject十/#defineME—AI,G—OPERATION—UNKNOWN/+对磕的一个算法或算法信息的类型的未知的操作#defineME—AI,I,OC518/+内存不足+/#defineME—DATA520/+通常的数据错误+/#defineME—EXPONENT—EVEN521/+密钥对产生中公钥的指数是无效的偶数的值+/#defineMEEXPONENT二LEN522/+密钥对产生中公钥的指数是无效的指数的长度+/#defineME—INPUT—DATA524/+输入数据无效的编码格式+/#defineME_INPUTI,EN525/+输入的数据的全部的长度无效+/ GB/T25056--2010#defineME—KEY—AI。READY—SET526/}keyobject的值已经被BSetKeylnfo函数调用或被keygeneration调用$/#defineME—KEY—INFO527/{无效的keyinformation的格式在keyobject十/#defineME—KEY—I。EN528/*无效的密钥的长度+/#defineME—KEY—N()T—SET/{这个keyobject没有被用B529SetKeylnfo函数设置或调用keygeneration十/#defineME—KEY—OBJ530/}无效的keyobject}/#defineME—KEY—OPERATION—UNKNOWN531/+对应的一个keyinfo的类型的未知的操作+/#defineME—MEMORY—OBJ532/s无效的内部的内存对象+/#defineME—MODUI.US_I。EN533/t不支持的模数的长度对于一个密钥或algorithmparameters}/#defineME—N()T—INITIAl。IZED534/+算法被不正确的初始化+/#defineME—NOT—SUPPORTED535/}对应一个指定的算法,算法选择器不支持keyobject中的keyinformation的类型{/#defineME—OUTPUTj。EN536/*用于接受输出的最大的尺寸或输出的buffer太小+/#defineME—RANDOM—N()T—INITIAI,IZED538/*随机数算法没有被调用B—Randomlnit函数初始化+/#defineME—RANDOM—OBJ539/+对应随机数算法的无效的算法对象m/#defineME—SIGNATURE540/+签名不能被验证*/ GB/T25056--2010#defineME—WRONG—ALGORITHM—INFO541/}要求的algorithminformation不在algorithmobject中}/#defineME—WRONG—KEY一1NFO542/}要求的keyinformation不在keyobject中}/#defineME—INPUT—COUNT543/+对应的输入的数据,Update被调用一个无效的记数的次数+/#defineME—OUTPUT—COUNT544/+对应的输出的数据,Update被调用一个无效的记数的次数+/#defineME—METHOD—NOT—IN—CHOOSER545/}算法选择器不包括algorithmmethod,这个algorithm先前被BSetAlgorithminfo函数设置}/#defineME—KEY—WEAK546/+密钥的数据提供产生一个知道的弱的密钥+/#defineBE—BADPOINTER548/*无效的指针+/c.1.5函数定义及说明c.1.5.1对称密钥产生函数M—SymmetrlcKeyGeneratelnit声明:intM—SymmetricKeyGenerateInit(AI。GORITHM—OBJalgorithmObjeet/}产生对称密钥的算法对象}/);解释:调用M—SymmetricKeyGeneratelnit函数初始化产生对称密钥的算法对象。这个对象在调用之前必须被MSetAlgorithmObject函数设置。返回值:0成功非0见错误码的定义和说明M—SymmetricKeyGenerate声明:intM—SymmetricKeyGenerate(ALGORITHM—OBJalgorithmObject,/}产生对称密钥的算法对象十/KEY—OBJsymmetricKey/}新的对称密钥对象}/);解释:调用MSymmetricKeyGenerate函数产生一个对称密钥,并且输出结果保存在参数symmetricKey GB/T25056—2010中。参数symmetricKey指明的密钥对象,在调用此函数之前必须调用M—CreateKeyObject函数创建。返回值:0成功非0见错误码的定义和说明C.1.5.2产生公钥密钥对函数M—PublicKeyGeneratelnit声明:intMPublicKeyGeneratelnit(ALGORITHM一()BJalgorithmObject/十产生密钥对的算法对象}/);解释:调用M—PublicKeyGenerateInit函数初始化产生非对称密钥对的算法对象。这个对象在调用之前必须被M—SetAlgorithmObject函数设置。返回值:0成功非0见错误码的定义和说明M—GeneratePublicKeyPair声明:intM—GeneratePublicKeypair(ALGORITHM—OBJalgo“thmObject,/}产生密钥对的算法对象*/KEY—OBJpublicKey,/+新的公钥对象$/KEY—oBJprivateKey/$新的私钥对象}/);解释:调用M—GeneratePublicKeyPair函数产生非对称密钥对,并且输出公钥和私钥中。参数publicKey指明的公钥对象,在调用此函数之前必须调用M—CreatePuh[icKeyObiect函数创建。参数privateKey指明的私钥对象,在调用此函数之前必须调用M—CreatePubl·cKey()bject函数创建。返回值:0成功非0见错误码的定义和说明C.1.5.3加密函数M—Encryptlnit声明:intM—Encryptlnit(ALGORITHM一0BJalgorithmObjectKEY—OBJkeyObject);/+算法对象+//+密钥对象+/解释:M—EncryptInit函数初始化加密数据使用的算法对象。这个对象先前必须被M—SetAlgorithm(:)bject函数调用。参数keyObject指明的密钥对象提供密钥的信息。M—EncryptInit调用一次设置算法和密钥,M—EncryptUpdate调用多次加密数据,M—EncryptFinal调用一次处理最后的分组包括补位的字节。 GB/T25056--2010在调用M—EncryptFinaI以后,可以调用M—EncryptUpdate函数处理另外的数据,如果采用CBC的方式,并且使用不同的初始化向量(1V),在调用M—EncryptUpdate函数之前必须调用M—SetAlgorithmObject函数设置新的rV。返回值:0成功非0见错误码的定义和说明.M—EncryptUpdate声明:intM—EncryptUpdate(AI。(×)RITHM—OBJaJgorjthmObject,/}算法对象}/unsignedchar+pDataOut,/}输出数据}/unsignedlong+pDataOutl.en,/}输出数据的长度}/unsignedlongmaxPartOutl.en,/十输出数据缓冲区的大小}/unsignedchar+pDalaln,/{输人数据{/unsignedlongpartInl。en/$输人数据的长度{/);解释:M—EncryptUpdate函数用来加密数据并输出结果。输出的结果的内容最多输出参数maxPart()utI。en指定的长度。输出结果保存在参数p1)ataOut中,并且输出结果的长度在参数p1)ataOutI。en中。返回值:0成功非0见错误码的定义和说明M—EncryptFinal声明:inlM—EncryptFinal(AI。GORITHMOBJa[gorithmObject,/}算法对象}/unsignedchar+pData()ut,/$输出数据}/unsignedlong+pDataOutLen,/$输出数据的长度}/unsignedlongmaxDataOutI.en/}输出数据缓冲区的大小$/J;解释:M—EncryptFinal函数完成加密数据最后的过程并输出结果。输出的结果的内容最多输出参数maxDazaOutLen指定的长度。输出结果保存在参数pDataOut巾,并且输H;结果的长度在参数pI)ataOuti。eFI中。返回值:0成功非0见错误码的定义和说明c.1.5.4解密函数M—Decryptlnit声明:intMDecryptlnit( GB/T25056—2010ALGORITHM一0BJalgorithm()bject,/}算法对象}/KEYOBJkey()bject/}密钥对象十/):解释:M—Deeryptlnit函数初始化解密数据使用的算法对象。这个对象先前必须被M—setAlgorithmobject函数调用。参数keyObjeet指明的密钥对象提供密钥的信息。M—Decryptlnit调用一次设置算法和密钥,MDecryptUpdate调用多次解密数据,M—DeeryptFina[调用一次处理最后的分组包括补位的字节。在调用M—DeeryptFinal以后,可以调用M—DecryptUpdate函数处理另外的数据,如果采用CBC的方式,并且使用不同的初始化向量(IV),在调用M—DecryptUpdate函数之前必须调用M—SetAlgorithmObject函数设置新的IV。返回值:0成功非0见错误码的定义和说明M—DeeryptUpdate声明:intM—DecryptUpdate(AI。GORITHM—OBJalgo“thm()bject,/}算法对象}/unsignedchar+pDataOut,/$输出数据十/unsignedlong+pDataOutI。en,/$输出数据的长度{/unsignedlongmaxDataOutI。en,/}输出数据缓冲区的大小}/’unsignedchar+pDataln,/}输人数据}/unsignedlongDataInl。en/}输人数据的长度}/)o解释:M—DeeryptUpdate函数用来解密数据并输出结果。输出的结果的内容最多输出参数maxDataOutLen指定的长度。输出结果保存在参数pDataOut中,并且输出结果的长度在参数pDataOutLen中。返回值:0成功非0见错误码的定义和说明M—DecryptFinal声明:intM—DecryptFinal(ALGORITHM—OBJalgorithmObjeet,/{算法对象{/unsignedchar+pDataOut,/}输出数据$/unsignedlong+DataOutI。en,/十输出数据的长度}/unsignedlongmaxDataOutI,en/{输出数据缓冲区的大小}/)o解释:M—DeeryptFinal函数完成解密数据最后的过程并输出结果。输出的结果的内容最多输出参数47 GB/T25056--2010maxDataOutI,en指定的长度。输出结果保存在参数pDataOut中,并且输出结果的长度在参数pDataOutI。an中。返回值:0成功非0见错误码的定义和说明C.1.5.5签名函数M—SignInit声明:intM—SignInit(AI。GORITHM—OBJalgorithmObject,/}算法对象}/KEY一0BJkeyObject,/$密钥对象{/);解释:MSignInit函数初始化数字签名使用的算法对象。这个对象先前必须被M—SetAlgorithmObject函数凋用。参数keyObjeet指明的密钥对象提供密钥的信息。MSignInit调用一次设置算法和密钥,M—SignUpdate调用多次处理数据,M—SignFinal调用一次处理最后的分组包括调用M—SignUpdate生产的结果。并输出数字签名的结果。在调用M—SignFinal以后,可以调用M—SignUpdate函数处理另外的数据,而不需要再一次调用MSignlnit函数。返回值:0成功非0.见错误码的定义和说明48M—SignUpdate声明:intM—SignUpdate(AI。GORITHM一0BJalgorithmObject,/}算法对象$/unsignedchar+pDataIn,/}输入的数据}/unsignedlongDatalnI。en/十输入数据的长度十/)‘解释:M—SignUpdate函数处理待签名的原文数据。返回值:0成功非0见错误码的定义和说明M—SignFinal声明:intMSignFinal(AI,GORITHM—OBJalgorithmObject,/十算法对象}/unsignedchar+pSignature,/}输出的数字签名}/unsignedlong+pSignatureLen,/$输出的数字签名的长度}/unsignedlongmaxsignatureI。an/$输出的数字签名的缓冲区的大小$/); GB/T25056--2010丝塑MSignFinal函数完成数字签名最后的过程并输出结果。输出的结果的内容最多输出参数rrlaxSignatureLen指定的长度。输出结果保存在参数signaturel。an中。返回值:0成功非0见错误码的定义和说明c.1.5.6验证签名函数M—Verifylnit声明:intM—VerifyInit(ALGORITHM—OBJalgorithmObjeet,KEY0BJkeyobjeet):signature中,并且输出结果的长度在参数/+算法对象+//+密钥对象+/避M—Verifylnit函数初始化验证数字签名使用的算法对象。这个对象先前必须被MsetAlgorithmobject函数调用。参数keyObject指明的密钥对象提供密钥的信息。M—Verifylni"t调用一次设置算法和密钥,M—VerifyUpdate调用多次处理数据,M—VerifyFina|调用一次验证数字签名。要验证的数字签名通过M—VerifyFinal函数的参数传递。在调用M—VerifyFinal以后·可以调用M—VerifyUpdate函数处理另外的数据,而不需要再一次调用M_VerifyInit函数。堡回笪10成功非0见错误码的定义和说明M—VerlfyUpdate声明:intM—VerifyUpdate(AI。GORITHM—ONalgorithmObject,/$算法对象}/unsignedchar+pDataln,/}输人的数据十/unsignedlongDatalnLen/十输入的数据的长度}/);解释:M—VerifyUpdate函数处理验证签名的原文数据。返回值:0成功非0见错误码的定义和说明MVerify’Final声明:intM—VerifyFinal(AI。C-()RITHM—OBJalgorithmObjectunsignedchar+pSignature,/+算法对象+//+验证的签名+/ GB/T25056--2010unsignedlongsignatureI。en/}验证的签名的长度}/)o解释:M—VerifyFinal完成验证数宁签名。要验证的数字签名通过M—VerifyFinal函数的参数传递。返回值:0成功非0见错误码的定义和说明c.1.5.7文摘函数M—DigestInit声明:intMDigestlnit(AI。GORITHMOBJalgorithmObjectKEY—OBJkeyObject/+算法对象+//+密钥对象+/);解释:M—DigestInit函数用来初始化计算消息文摘的算法对象和计算消息文摘的算法,这个算法对象必须先前被BSetAlgorithmInfo函数调用。参数keyObject支持密钥的信息,如果参数keyObject设置为NULLPTR,支持无密钥的文摘算法。如果参数keyObject设置为非空,支持有密钥的文摘算法,这个密钥对象必须先前被B—SetKeyInfo函数调用。返回值:0成功非0见错误码的定义和说明MLDigestUpdate声明:intM—DigestUpdate(AI.GORITHM—OBJalgorithmObject,/}算法对象}/unsignedchar+pDataln,/十输入的数据}/unsignedlongpDataln/}输入数据的长度}/);解释:MDigestUpdate函数使用输入的明文更新algorithmObject对象。明文的内容是参数pDataln明文的长度是参数Datalnl,en。返回值:0成功非0见错误码的定义和说明M—DigestFinal声明:intM—DigestFinal(AI。GORITHM—OBJalgorithm()bject,/}算法对象}/unsignedchar+pDigest,/$输出文摘的缓冲区$/unsignedlong4pDigestI。en,/$文摘的长度{/ GB/T25056—2010unsignedlongmaxDigestLen/}输出文摘的缓冲区的长度}/);解释:M—DigestFinal函数用来最后完成参数algorithmObject的文摘处理过程,并且输出文摘。输出的文摘的内容最多输出调用者参数maxDigestLen指定的长度。并且输出文摘的长度在参数pDigestI。en中。返回值:0成功非0见错误码的定义和说明C.1.5.8密钥交换函数M—KeyAgreelnit声明;intM—KeyAgreeInit(AI,GORITHM一0BJalgorithmObject,/十算法对象十/KEY一0BJkeyObject/{密钥对象十/);解释:M—KeyAgreelnit函数用来初始化密钥交换的算法对象和密钥信息。这个算法对象必须先前被B—setAIg。rithmInfo函数调用。参数keyObject提供自己的私钥的信息。先调用M—createKey()bject函数创建一个新的密钥对象。然后调用M—SetKeylnfo函数设置密钥的值。此函数支持CAI—EC—DHKeyAgree算法。返回值:0成功非0见错误码的定义和说明M—KeyAgree声明:intM—KeyAgree(AI。GORITHM一()BJalgorithmObjeet,/}算法对象}/KEYOBJkeyObject,/}密钥对象十/unsignedchar+pOutput,/十输出的数据$/unsignedlong}outputLen,/十输出的数据的长度十/unsignedlongmaxOutputI。an,/}输出的数据的缓冲区的大小$/);解释:M—KeyAgree函数完成密钥交换的过程。并且输出结果。输出的结果的内容最多输出调用者参数maxOutputI,en指定的长度。并且输出结果的长度在参数outputI。an中。参数keyObject提供对方的公钥的信息。先调用M—createKeyobject函数创建一个新的密钥对象。然后调用M—SetKeylnfo函数设置密钥的值。返回值:0成功非0见错误码的定义和说明 GB/T25056—2010C.1.5.9随机数或伪随机数函数M—Randomlnit声明:intM—RandomInit(ALGORITHMOBJrandomAlgorithm/$随机数算法对象十/);解释:调用MRandomInit初始化随机数算法对象产生随机数。使用的随机数算法对象是先前调用MsetAlgorithmInfo函数设置的随机数算法对象。在随机数算法对象巾,如果没有种子的值,MRandomlnit函数设置一个缺省的种子用来产生随机数。返回值:0成功非0见错误码的定义和说明M—GenerateRandomBytes声明:intM—GenerateRandomBytes(AI。(“)RITHM—OBJrandomAlgorithm,/}随机数算法对象}/unsignedchar+pOutput,/{输出的缓冲区^/unsignedlongoutputI。an/{输出的缓冲区的长度{/)o解释:调用M—GenerateRandomBytes产生参数outputLen指定长度的伪随机数,并且输出结果。参数randomAlgorithm的算法对象必须有种子。返回值:0成功非0见错误码的定义和说明C.1.5.10算法对象函数M—CreateAIgorithmObject声明:intM—CreateAlgorithmObieet(AI。GORITHM—OBJ+pAlgorithmObject/十新的算法对象$/);解释:调用M—CreateAlgorithmObject分配和初始化一个新的算法对象。保存结果在参数pAlgorithm()bject中。如果M—createAlgorithm()bject不成功,没有内存分配给pAlgorithmobject,设置pAlgorithmObject为NUI。L—PTR。返回值:0成功非0见错误码的定义和说明M—DestroyAlgorithmObject塑voidM—DestroyAlgorithmObject( GB/T25056--2010A1。GORITHM—OBJ+pAlgorithmobject/}算法对象的指针$/);解释:调用M—DestroyAlgorithmobject销毁算法对象,算法对象的信息归零。释放算法对象占有的内存。设置pAlgorithmObject参数为NUI。L—PTR.。如果参数pAlgorithmObject已经是NUI。L—PTR或不是一个有效的密钥对象,将不处理这个对象。这个过程调用以后,所有和这个对象相关的信息都将被阻塞。返回值:0成功非0见错误码的定义和说明M—GetAlgorithmlnfo声明:intMGetAlgorithmlnfo(POINTER}info,/十算法信息}/ALGORITHM一()BJalgorithmObject,/}算法对象十/INFO—TYPEinfoType/}算法的类型}/);解释:调用M—GetAlgorithmlnfo获取和算法类型相匹配的指定的算法对象的算法参数的信息。算法参数的格式是指定的算法的类型确定的。返回值:0成功非0见错误码的定义和说明MSetAIgorlthmlnfo声明:intM—SetAlgorithmlnfo(AI。GORITHM—OgJalgorithmObject,/}算法对象{/INFO—TYPEinfoType,/}算法对象的类型%/POINTERinfo/{算法信息}/);解释:调用M—SetAlgorithmlnfo设置和算法类型相匹配的指定算法对象的算法参数。算法参数的格式是指定的算法的类型确定的。M—SetAlgorithmlnfo函数将设置的算法的参数的信息拷贝一个分离的副本分配给指定的算法对象。一旦算法对象被设置,将不能被重新设置。对于一个算法对象,不能调用M—setAlgorithmInf。函数两次。或者创建一个新的对象,或者销毁对象然后重新创建。返回值:0成功非0见错误码的定义和说明C.1.5.11密钥对象函数M—CreateKeyObject声明:intM—CreateKeyObject(53 GB/T25056--2010KEY一0BJ+pKeyObject/{新的密钥对象}/);解释:调用M—createKey()bject分配和初始化一个新的密钥对象。保存结果在参数pKeyObject中。如果M—createKey0bject不成功,没有内存分配给pKeyObject,设置pKeyObject为NUI。L—P7FR。返回值:0成功非0见错误码的定义和说明M—DestroyKeyObject声明:voidM~DestroyKeyObject(KEY—OBJ+pKeyObject/{keyobject的指针}/);解释:调用M—DestroyKey()bject销毁密钥对象,密钥对象的信息归零。释放密钥对象占有的内存。设置pKeyObject参数为NUI。L—PTR.。如果参数pKeyObject已经是NUI~I—PTR或不是一个有效的密钥对象,将不处理这个对象。这个过程调用以后,所有和这个对象相关的信息都将被阻塞。返回值:0成功非0见错误码的定义和说明MGetKeylnfo声明:intM—GetKeylnfo(POINTER8plnfo,/$密钥的信息$/KEY—OBJkeyObjeet,/{密钥对象十/INFO—TYPEinfoType/}密钥信息的类型$/):解释:调用M一(;etKeylnfo获取和密钥信息类型相匹配的指定密钥对象的密钥信息。返回值:0成功非0见错误码的定义和说明M—SetKeylnfo声明:intMSetKeylnfo(KEYoBJkeyObject,INFOTYPEinfoTypePOINTERinfo):/+密钥对象*//+密钥的类型*//+密钥的信息*/ GB/T25056--2010解释:调用M—SetKeylnfo设置和密钥信息类型相匹配的指定密钥对象的密钥信息。M—SetKeylnfo函数将设置的密钥的信息拷贝一个分离的副本分配给指定的密钥对象。一旦密钥对象被设景,将不能被重新设置。对于一个密钥对象,不能凋用M—SetKeylnfo函数两次。或者创建一个新的对象,或者销毁对象然后重新创建。返回值:0成功非0见错误码的定义和说明C.2证书载体接口函数c.2.1宏定义#ifndefNUI.I.#defineNUI。I。#endif#jfndefNUl。J,#defineNULL#endif0PTRNUI,I,typedefC—HANDI。EHANDI,E;/$定义设备打开的句柄}/typedefunsignedchar$cKEY—HANDI。E;/}定义密钥的句柄}/#defineCDAKEYUSAGESIGNl#defineCDAKEYUSA(;EENCRYPT2#defineCDA—KEY—USAGE—KEYAGREE4typedefunsignedlongCDA—KEYUSAGE;/}定义密钥的用法}/C.2.2数据结构定义typedefstruet{unsignedshortyearsunsignedshortmonth;unsignedshortday;unsignedshorthour;unsignedshortminute;unsignedshortsecond;}CDA—TIME;typedefstruet{CDA—TIMEstart;/}开始的时间{/Unsignedlongelapses;/}时间的流逝以秒为单位十/)CDAPeriodOfValid:#defineCDACERTTYPESIGNl#defineCDACERTTYPEENCRYPT2typedefunsignedlongCDA—Certificate;/$定义证书的类型{/typedefstruetfCDACertificatecert:LongmaxCertI。ength;/}支持的一个证书文件的最大的空间$/)CDA—Certicatec8pability;/}定义支持证书的属性,如果eert字段设置为CDA—CERT—TYPE—SIGNCDA—CERT—TYPE—ENCRYPT表示支持双证书十/55 GB/T25056--2010typedefstruct{unsignedshortminPwdI。ength;/}口令的最小长度}/unsignedshortmaxPwdI。ength;/十口令的最大长度{/}CDA—PassWordCapability;typedefstruct{char+pAlgoNameI。ist;/}支持的算法的名字的列表}/longlen;/+支持的算法的名字的列表的长度*/)CDAAlgorithmCapability;/}算法的名字的列表包括一个或多个算法的名字,每一个算法的名字以‘\o’结束。长度是一个或多个算法的名字长度的总和,包括结束字符‘\o’。例如:字符串“deskx00ssf33\x00”长度10}/typedefstruct{CDA—PassWordCapabilitypwdlnfo;CDA—CertificateCapabilitycertlnfo;CDA—AlgorithmCapabilitysymmtriclnfo;CDA—.AlgorithmCapabilityasymmetriclnfo)C—Devicecapability;/{定义设备的能力}/typedefstruct{char+pModeNameI。ist;/十加密方式的名字的列表十/longIModeI。istI,enl/}加密方式的名字的列表的长度+/char+plV;/+设置初始化向量的参数+/longllvLen;/}初始化向量的字节的长度+/char+pPadNamel。ist;/}补位方式的名字的列表$/longIPadl。istI,en;/+补位方式的名字的列表的长度*/}CDA—Algorithmln{o;/-加密方式的名字的列表包括一个或多个加密方式的名字,每一个加密方式的名字以‘\o’结束。长度是一个或多个加密方式的名字长度的总和,包括结束字符‘\o’。例如:字符串“eeb\x00cbc\x00”长度8十//+补位方式的名字的列表包括一个或多个补位方式的名字,每一个补位方式的名字以‘\o’结束。长度是一个或多个补位方式的名字长度的总和,包括结束字符‘\o’。例如:字符串“pad\x00nopad\xoo”长度10十/C.2.3函数定义和说明C—OpenDevice函数声明:intC—OpenDevice(C—HANDLE}handle,char{szPwd);功能简介:打开设备,参数handle保存打开的设备的句柄。输入:要求用户输入打开设备的口令。如果l:1令为NUI。I。,返回值为CDE—SUCCESS。设置handle为NUI。L—PTR。输出:如果打开设备成功,返回值为CDE—SUCCESS,设置handle打开的设备的句柄。如果打开设备失败,返回值为错误码,设置handle为NUI。L—PTR。返回值:CDE—SUCCESS56 CDEDEVICEWR()NGP1NWR()NGPARAMSC—CloseDevice函数声明:voidCCloseDeviee(CHANDLE$handle.Char+szPwd)功能简介:关闭设备。输入:要求用户输入设备的保护1:1令。输出:设置handle为NUI。L—PTR。返回值:无GB/T25056—2010C—GetDeviceCapability函数声明:voidC—GetDeviceCapability(CDA—DeviceCapability+pCapability)功能简介t获取设备的能力。输入:指向结构CDA—Devicecapability的指针。首先初始化一个CDA—Devicecapability结构的实例,将结构的各字段清零。传递结构实例的指针给函数。输出:动态库根据自己设备的能力为结构赋值。返回值:无C—GetAigolnfo函数声明:voidC—GetAlgolnfo(char}algoName,CDA—Algorithmlnfo+plnfo)功能简介:获取指定算法名字的算法的信息。输入:algoName指定的算法的名字。PInfo指向结构CDA—Algorithmlnfo的指针。首先初始化一个CDAAlgorithmlnfo结构的实例,将结构的各字段清零。传递结构实例的指针给函数。输出:动态库参数plnfo赋值。返回值:无57 GB/T25056—2010C—DestroyKeyHandle函数声明:intC—DestroyKeyHandle(C—KEY—HANDI,E}keyHandle)功能简介:销毁密钥。输入:如果密钥是一个有数的密钥,释放密钥句柄占用的内存空间,销毁密钥的旬柄。如果密钥是一个无效的密钥,不做任何处理。返回值为CDE—INVAI。ID—HANDI。E。输出:如果密钥是一个有效的密钥,释放密钥句柄占用的内存空间,销毁密钥的句柄。设置参数keyHandle为NULL—PTR。返回值:CDE—SUCCESSC2DE仆JVAI,IDHANDLEC~CreatePrivacyKeyPairDir函数声明:intC—CreatePrivacyKeyPajrDIr(C—HANDI,Ehandle,CDA—KEYUSAGEkeyUsage,Char$szPwd);功能简介:创建私有的秘密的密钥对目录。输入;handle打开设备的句柄keyUsage密钥的用法szPwd保护此目录的口令如果目录不存在,创建和指定密钥用法相应的目录,设置目录的保护口令。如果目录存在,验证口令。如果口令正确,重新创建目录。如果口令不正确,返同值为CI)EWR()NGPIN输出t无返回值:CDESUCCESSCDECREATEDIRECTORYCDEWRONGPIN58CGenerateKeyPair函数声明:IntC—GenerateKeyPainC—HANDI。Ehandlechar+algoName,CDA—KEYUSAGEkeyUsage,Char8szPwd。CDAPeriodOfVMid+period, GB/T25056--2010C—KEY—HANDI.E+publicKey,C—KEY—HANDI。E+privateKey);功能简介:产生密钥对,指定算法名字、密钥用法、目录保护口令、密钥的有效期。产生密钥对之前必须创建密钥对目录,产生新的公钥和新的私钥,创建公钥和私钥,并且输出公钥和私钥的句柄。如果参数algoName为NUI。L—PTR,动态库产生缺省的密钥对产生算法的密钥对。输入:handle打开设备的句柄algoName密钥产生算法的名字keyUsage密钥的用法szPwd保护此目录的口令period密钥的有效期如果和指定的密钥用法相应的目录不存在,返回CDEDIRECTORLNO—EXIST。验证保护目录的口令,如果口令正确,产生密钥对。如果口令不正确,返回值为CDE—WRONGPIN。输出:publicKey公钥的句柄privateKey私钥的句柄如果产生密钥对失败,设置publicKey和privateKey为NUI。L—PTR.。返回值;CDE—SUCCESSCDE——DIRECTORY——NO.。EXISTCDE—WRONG—PINCDE——GENERATE——KEY—、PAIR(:DEMEM()RYc-ExportPublicKey函数声明:intC—ExportPublicKey(C—HANDLEhandle,C—KEY—HANDLEpublicKey,Unsignedchar+output,unsignedlong+outputI。en);功能简介:导出指定的公钥句柄的公钥信息。输入:handle打开设备的句柄publicKey公钥的句柄如果输入的公钥的句柄是一个无效的公钥句柄,返回CDE—INVALIDHANDI。E。输出:output保存公钥信息的缓冲区的地址outputI.en保存公钥信息的缓冲区的长度参数outputl。en既是输入参数又是输出参数。如果输人的缓冲区的长度小于要输出的公钥的信息,返回CDE—SHORTBUFFER。否贝q,输出公钥的信息,并且输出公钥信息的长度。59 GB/T25056--2010返回值tCDE-SUCCESSCDE—INVALIDHANDLECDESHORTBUFFERCGetPrivateKeyOfCertiflcate函数声明:intCGetPrivateKeyOfCertifieate(CHANDI。Ehandle。char十szPwd,CDACertificatecert,C—KEY—HANDLE+privateKey)i功能简介:获取和参数cert指定的证书类型相应的私钥。如果私钥存在。刨建这个私钥,并且输出私钥的句柄。否则,返回CDE—KEY—NO—EXIST。输入:handle打开设备的句柄szPwd保护密钥目录的口令cert证书的类型如果私钥存在,验证保护私钥目录的口令,如果口令正确,为这个私钥分配它占用的内存,创建私钥。如果口令不正确,返回值为CDE—WRONG—PIN。输出:privateKey私钥的句柄如果创建私钥失败,设置privateKey为NUI。L—PTR.。返回值tCDESUCCESSCDEKEYN()EXISTCDEWRONGPINCDEMEMORYCGetPublicKeyOfCertificate函数声明:intCGetPublicKey()fCertificate(CHANDI。Ehandle,CDACertificateeert,C—KEY—HANDI。E+publicKey);功能简介:获取和参数eert指定的证书类型相应的公钥。如果公钥存在。创建这个公钥,并且输出公钥的句柄。否则,返回CDE—KEY—NO—EXIST。输入:handle打开设备的旬柄cert证书的类型如果私钥存在,为这个公钥分配它占用的内存,创建公钥。输出:publicKey公钥的句柄60 如果创建公钥失败,设置publicKey为NUI。L—PTR.。返回值:CDESUCCESSCDEKEYNOEXISTCDEMEMoRYGB/T25056—2010c_lmportPrivateKey函数声明;intC—ImportPrivateKey(C—HANDI。Ehandle,char十algoName,CDA—KEYUSAGEkeyUsage,CDA—PeriodOfValid+period,Chat十szPwd,C—KEY—HANDLEkeyEncryptKey,Unsignedchar+cipherPrivateKey。UnsignedlongcipherLen);功能简介:导人和指定的密钥用法相应的私钥。导人私钥之前必须创建密钥对目录。并且必须获取加密私钥的密钥的句柄。如果参数algoName为NULL.PTR,表示加密的私钥的产生算法和动态库缺省的密钥对产生算法一致。输入:handle打开设备的句柄algoName密钥产生算法的名字keyUsage密钥的用法szPwd保护此目录的口令period密钥的有效期keyEncryptKey解密私钥的密钥的旬柄cipherPrivateKey私钥的密文cipherI。en私钥密文的长度如果和指定的密钥用法相应的目录不存在,返回CDE—DIREcTORY—NO—EXIST。验证保护目录的El令,如果口令正确,产生密钥对。如果口令不正确,返回值为(;DEWRONG—PIN。如果输入的解密私钥的密钥的句柄是一个无效的句柄,返回CDE—INVAI。ID~HANDl。E。如果输入的解密私钥的密钥的密钥用法不能解密,返回CDEKEY—USAGE。如果输入的解密私钥的密钥的过期,返回CDE~INVAI.ID—PERIOD。如果解密的过程失败,返回CDE—DECRYPT。输出:无返回值;CDE—SUCCESSCDE-DIRECTORY—NO—EXISTCDE——WRONG,—PINCDEINVAI。IDHANDI.E’CDE—DECRYPT61 GB/T25056~2010(:DE—KEY—USAGECDE——INVALID,—PERIODCCreateCertificateDir函数声明:intCCreateCertificateDJr(CHANDI,Ehandle,CDA—Certificatecert);功能简介:创建证书目录。输人:handle打开设备的句柄cert证书的类型如果目录不存在,创建和指定证书的类型相应的目录。如果目录存在,返回为CDE—DIRECTORY—EXIST。输出:无返回值:CDtSUCCESSCDE—CREATE—DIRECTORYCDEDIRECT()RYEXISTC—ExportCertificate函数声明:intCExDort【:crtificate(CHANDLEhandle,CDACertificatecert,Unsignedchar$output,Unsignedlong4outputI。en):功能简介:导出指定的证书的类型的证书。导出证书之前,指定的证书目录必须存在,并且证书存在。输入:handle打开设备的句柄cert证书的类型如果证书目录不存在,返回【:DE~DIRECTORY—NO—EXIST。如果证书不存在,返回CDE—cERTIFICATE—NO—EXIST。输出:output保存证书信息的缓冲医的地址outputI。en保存证书信息的缓冲区的长度参数outputLen既是输入参数又是输出参数。如果输入的缓冲区的长度小于要输出的证书的信息,返回CDESHORTBUFFER。否则,输出证书的信息.并且输出证书信息的长度。返回值:CDESUCCESSCDESHORTBUFFERCDEDIRECT()RYNOEXIST62 CDE—.CERTIFICATE——NO——EXISTC.ImportCertificate函数声明:intC—lmportCertificate(Q—HANDLEhandle,CDlA—Certificatecert,Unsignedchar}irput,UnsignedlonginputI.en);功能简介:导人指定的证书的类型的证书。导人证书之前,指定的证书目录必须存在。输入;handle打开设备的句柄cert证书的类型input保存证书信息的缓冲区的地址inputI。en证书信息的长度如果证书目录不存在,返回CDE—DIRECTORY—N()一EXIsT。输出:无返回值:CDE—SUCCESSCDEDIRECToRYNOEXISTGB/T25056—2010C—GenerateK,ey函数声明tintCGenerateKey(CHANDLEhandle,char$algoName.CDAPeriodOfValid+period.CKEYHANDI,E}key);功能简介:产生和对称密钥产生算法一致的对称密钥。为这个密钥分配它占用的内存,创建密钥,并且输卅密钥的句柄。如果参数algoName为NUI。LFTR,使用动态库缺省的产生对称密钥的算法。输入:handlealgoNameperiod输出;打开设备的句柄密钥产生的算法密钥的有效期key密钥的句柄如果产生密钥失败,返回CDE—INVAI,ID二HANDL,E,设置key为NLl。L—PTR返回值:CDESUCCE:SSCDE1NVALIDHANDI。ECDEMEM()RY GB/T25056--2010C—ExportKey函数声明:intC—ExportKey(C—HANDI.Ehandle,char+algoName,(:KEYHANDLEkey,C—KEYHANDLEkeyEncryptKey,Unsignedchar+eipherKey,Unsignedlong+cipherKeyLen);功能简介:使用密钥加密密钥加密密钥的信息,并且输出密文。如果参数algoName为NUI。L—PTR,使用动态库缺省的对称算法加密密钥。输入:handle打开设备的句柄algoName加密密钥的算法的名字key被加密的密钥的句柄eyEncryptKey密钥加密密钥的句柄如果输入的待加密的密钥的句柄是一个无效的句柄,返回CDE—INVALIDHANDLE。如果输入的密钥加密密钥的句柄是一个无效的句柄,返回CDE—INVAI。ID—HANDI。E。如果输入的密钥加密密钥的密钥用法不能加密。返回CDE—KEY—UsAGE。如果输入的密钥加密密钥过期,返回CDE—INVAI。ID—PERIOD。如果加密的过程失败,返回CDE—ENCRYPT。输出:cipherKey保存密文的缓冲区的地址cipherKeyI。en保存密文的缓冲区的长度参数cipherKeyl.en既是输入参数又是输出参数。如果输人的缓冲区的长度小于要输出的密文的信息,返回CDE—SHORT—BUFFER。否则,输出密文的信息,并且输出密文的长度。返回值:CDE—SUCCESSCDE_INVAI。IDHANDLECDE——SHORT——BUFFERCDE—ENCRYPTCDE——KEY——USAGE【’DF1NVAl。IDPERloD64C—lmportKey函数声明:IntCImportKey(CHANDI,Ehandle.char+algoName。CDAPeriodOfValid+period.(:KEY—HANDLEkeyDecryptKeyUnsignedchar8clpherKey,UnsignedlongeipherKeyI.en,CKEYHANDI。E}key): GB/T25056--2010功能简介:导人和一个对称密钥。解密密钥的密文,创建一个对称的密钥,分配它占用的内存,并且输出这个对称密钥的句柄。导人密钥之前必须获取解密密钥的密钥的句柄。如果参数algoName为NUI,L—PTR,表示解密密钥算法和动态库缺省的对称加密的算法一致。输入:handle打开设备的句柄algoName解密密钥算法的名字period密钥的有效期keyDecryptKey解密密钥的密钥的句柄cipherKey密钥的密文cipherKeyI,en密钥密文的长度如果输人的解密密钥的密钥的句柄是一个无效的句柄,返回CDE—INVALID二HANDI。E。如果输入的解密密钥的密钥的密钥用法不能解密,返回CDE—KEY—USAGE。如果解密密钥的密钥过期,返回CDE—INVALID—PERIOD。如果解密的过程失败,返回CDE—DECRYPT。输出:key密钥的句柄如果创建密钥失败,设置key为NULL—PTR返回值:‘CDESUCCESSCDE——INVALIDHANDLECDE—DECRYPTCDE—KEY—USAGECDEINVAI.IDPERIoDCKeyAgreeStepl函数声明:intC—KeyAgreeStepl(C—HANDLEhandle,char{algoName,unsignedchar+input,unsignedlonginputI。enCDAPeriodofValid+period,C—KEY—HANDLE}keyAgree);功能简介:密钥交换算法的第一步,创建一个交换密钥。为这个交换密钥分配它占用的内存,并且输出交换密钥的句柄。如果参数algoName为NULL—PTR,使用动态库缺省的密钥交换算法。打开设备的句柄密钥交换算法的名字交换密钥的有效期密钥交换信息密钥交换信息的长度:k‰do儿黔善_一售.一 GB/T25056--2010输出:keyAgree交换密钥如果创建交换密钥失败,返回CDE—INVA[。ID—HANDI。E,设置keyAgree为NUI。L—PTR.。返回值:CDESUCCESSCDEINVAI。IDHANDLEC—KeyAgreeStep2函数声明:intC—KeyAgreeStep2(C—HANDI。Ehandle,char+algoName.CKEYHANDI。EprivateKey.CKEYHANDI。EkeyAgree,CDAPeriodOfValid+period.CKEYHANDI。E+shareKey):功能简介:密钥交换算法的第二步,创建一个共享密钥。为这个共享密钥分配它占用的内存,并且输出共享密钥的句柄。如果参数algoName为NUI。LPTR,使用动态库缺省的密钥交换算法。输入:handle打开设备的句柄algoName密钥交换算法的名字period共享密钥的有效期privateKey私钥的句柄keyAgree交换密钥的句柄如果输入的私钥的句柄是一个无效的句柄,返回CDE—INVAI。ID—HANDI,E。如果输入的交换密钥的句柄是一个无效的句柄,返回CDE—INVAl。ID—HANDI,E。输出:shareKey共享密钥的句柄如果产生共享密钥失败,返回CDE—INVAI,ID—HANDI。E,设置shareKey为NUI~I—PTR.。返回值:【:DESUCCESS【:DEINVAI.IDHANDI.E66C—Sign函数声明:intC—Sign((2一HANDI。Ehandle,char{algoName,CDA—Algorithmlnfo+plnfo,C—KEY—HANDI。EprivateKey,Unsignedchar}input,Unsigned10nginputI。an,Unsignedchar}signature,Unsignedlong4signatureI。en) GB/T25056—2010功能简介:计算数字签名,并且输出签名。如果参数algoName为NuLL—PTR,使用动态库缺省的数字签名算法。如果参数plnfo为NUI。L—PTR,使用动态库缺省的数字签名算法的算法参数设置。输入:handle打开设备的句柄algoName数字签名算法的名字plnfo数字签名算法的算法参数设置privateKey私钥的句柄input明文inputI,en明文的长度如果输入的私钥的句柄是一个无效的句柄,返回CDE—INVAI.ID—HANDI。E。如果输人的私钥的密钥用法不能签名,返回CDE—KEY—USAGE。如果输人的私钥的过期,返回CDE_INVALID—PERIOD。输出:signature保存签名的缓冲区的地址signaturel,en保存签名的缓冲区的长度参数signatureLen既是输入参数又是输出参数。如果输入的缓冲区的长度小于要输出的签名,返回CDE—SHORT—BUFFER。否则,输出签名,并且输出签名的长度。返回值:CDE—SUCCESSCDE—INVAl。1D—HANDI。ECDE。.KEY——USAGE(:I)EINVAI。IDPERI()DC—Verify函数声明:intC—Verify(C—HANDLEhandle,char+algoName,CDA—Algorithmlnfo4plnfo,C—KEY—HANDI.EpublicKey,Unsignedchar}input.UnsignedlonginputI。en,Unsignedchar+signature,UnsignedlongsignatureI。en);功能简介:验证数字签名。如果参数algoName为NULL—PTR,使用动态库缺省的数字签名算法。如果参数plnfo为NUI。L—PTR,使用动态库缺省的数字签名算法的算法参数设置。打开设备的句柄数字签名算法的名字数字签名算法的算法参数设置公钥的句柄明文帆一一舳一一 GB/T25056--2010inputI。en明文的长度signature签名signatureI,ell签名的长度如果输入的公钥的句柄是一个无效的句柄,返回CDE—INVALIDHANDLE。如果输入的公钥的密钥用法不能验证签名,返回CDE—KEY—USAGE。如果输入的公钥的过期,返回CDEINVAI。IDPERIOD。如果验证签名失败,返同CDE—SIGNATURE。输出:无返回值:CDE—SUCCESSCDE—INVAI。ID—HANDI。ECDE——KEY——USAGECDE1NVAI.1DPERIOD(:nFsI(;NATIJREC—Encrypt函数声明:intC—Encrypt(C—HANDI,Ehandle,char+algoName,CDA—Algorithmlnfo+plnfo,C—KEY—HANDI。EKey,Unsignedchar{input,UnsignedlonginputLen,Unsignedchar+cipher,Unsignedlong+eipherLen);功能简介:加密。如果参数algoName为NUI上一PTR,使用动态库缺省的加密算法。如果参数plnfo为NUI.L—PTR,使用动态库缺省的加密算法的算法参数设置。输入:handle打开设备的句柄algoName加密算法的名字plnfo加密算法的算法参数设置Key密钥的句柄input明文inputLen明文的长度如果输入的密钥的句柄是一个无效的句柄,返回CDE—INVAI。ID—HANDLE。如果输人的密钥的密钥用法不能加密,返回CDE—KEY—USAGE。如果输入的密钥的过期,返回CDE—INVAI—DPERIOD。如果加密失败,返回(:DE—ENCRYPT。输出:cipher保存密文的缓冲区的地址cipherl。en保存密文的缓冲区的长度68 GB/T25056--2010参数cipherl—cn既是输入参数又是输出参数。如果输入的缓冲区的长度小于要输出的密文的长度,返回CDE—SHORT—BUFFER。否则,输出密文,并且输出密文的长度。返回值:【:DESUCCESSCDE—INVAI。ID—HANDI。ECDEKEYUSAGECDEINVAI。IDPERl()DCDEEN(:RYPTCDecrypt函数声明:int【:Decrypt(C—HANDLEhandle,char十algoName,CDA—Algorithmlnfo+plnfo,C—KEY—HANDLEKey,Unsignedchar+cipher,UnsignedlongeipherI。en,Unsignedchar{output,Unsignedlong}outputLen)I功能简介:解密。如果参数algoName为NUI,L—PTR,使用动态库缺省的解密算法。如果参数pInf。为NUI.LPTR,使用动态库缺省的解密算法的算法参数设置。输入:handle打开设备的句柄algoName解密算法的名字plnfo解密算法的算法参数设置Key密钥的句柄cipher密文eipherl.en密文的长度如果输入的密钥的句柄是一个无效的句柄,返回CDE—INVALIDHANDLE。如果输入的密钥的密钥用法不能解密,返回CDE—KEY—USAGE。如果输入的密钥的过期,返回CDEINVAI。IDPERIOD。如果解密失败,返回CDEDECRYPT。输出:output保存明文的缓冲区的地址outputI。an保存明文的缓冲区的长度参数outputl—en既是输入参数又是输出参数。如果输入的缓冲区的长度小于要输出的明文的长度,返回CDE—SHORT—BUFFER。否则,输出明文,并且输出明文的长度。返回值:CDE—SUCCESSCDE—INVAI。ID—HANDI.ECDE—KEY—USA(;ECDE——INVALID。—PERIOD69 GB/T25056--2010CDE—DECRYPTC.2.4返回代码#defineC13ESUCCESS0#defineCDEDEVICE128#defineCDEWRONGPIN129#defineCDEWRONGPARAMS130#defineCDE1NVAI。IDHANDI,E131#defineCDECREATEDIRECTORY132#defineCDEDIRECToRYN0EXIST133#defineCDEGENERATEKEYPAIR134#defineCDEMEMORY135#defineCDEKEYNOEXIST136#defineCDEDECRYPT137#defineCDEKEYUSAGE138#defineCDElNVAI。IDPERl0D139#defineCDEDIRECT()RYEXIST140#defineCDECERTIFICATENoEXIST141#defineCDESIGNATURE142#defineCDEENCRYPT143#defineCDESHORTBUFFERl44 附录D(资料性附录)证书认证系统网络结构图D.1当RA采用C/S模式时CA的网络结构(参见图D.1)GB/T25056—2010图D.1RA采用C/S模式时CA的网络结构示意图 GB/T25056—2010D.2当RA采用B/S模式时CA的网络结构(参见图D.2)图D.2RA采用B/S模式时CA的网络结构示意图D.3CA与远程RA的连接(参见图D.3)⋯√CAj、图D.3CA与远程RA的连接示意图 D.4KMC与多个CA的网络连接(参见图D.4)CA,”,、CAI、,PNGB/T25056—2010CA图D.4KMC与多个CA的网络连接示意图防火墙变换机防火墙变换机73 GB/T25056--2010参考文献[1]GB/T205202006信息安全技术公钥基础设施时间戳规范'