GB/T 38629-2020 信息安全技术 签名验签服务器技术规范
- 文档部分内容预览:
鉴服务器通过管理工具实现对该签名验签服务器
6.4.2管理员身份鉴别
签名验签服务器应具备完善的身份鉴别机制,签名验签服务器应设置管理员和审计员,管理员和审 十员应通过智能密码钥匙、智能IC卡等硬件介质与口令相结合的方式登录系统,并使用证书进行身份 验证。各类管理员通过身份鉴别后执行自已权限范围内的相关管理操作
6.4.3.1设备初始化
签名验签服务器的初始化,除应由厂商进行的操作外工程计价标准规范范本,系统配置、密钥的生成(恢复)与安装、生成 和审计员等均应由用户方设备管理人员完成。
6.4.3.2设备自检
签名验签服务器应具备自检功能,应具备状态和功能自检功能,能够进行密码算法正确性 机数发生器检查、存储密钥和数据的完整性检查等,检查不通过时应报警并停止工作。
6.5设备物理安全防护
签名验签服务器在工 护功能。
签名验签服务器应部署在应用系统的安全域内,只为安全域内的应用实体和用户服务,不应为安全 域外的应用实体和用户使用。)
以基于HTTP的WEB方式提供服务的签名验签服务器,接口要求见附录A,响应码的定义见除 录B。 以消息协议方式提供服务的签名验签服务器,接口要求见第7章,响应码的定义见附录B。 以应用程序接口方式提供服务的签名验签服务器,其接口应遵循GM/T0020
签服务器的其他安全要求应遵循GM/T0028和
签名验签服务器的其他安全要求应遵循GM/T0028和GM/T0039。
签名验签服务的消息协议接口采用请求响应模式,如图1所示。协议模型由请求者、响应者和它们 之间的交互协议组成。通过本协议,请求者将数字签名、验证数字签名等请求发送给响应者,由响应者 成签名验签服务并返回结果。本规则中的接口消息协议包括导出证书、解析证书、验证证书有效性、 致字签名、验证数字签名、消息签名、验证消息签名等服务功能,每个服务都按照请求一响应的步骤执 行。请求者可通过规则获得签名验签功能,而不必关心下层PKI公钥密码基础设施的实现细节。
请求者组织业务服务请求,发送到响应者,并延缓自身的事务处理过程,等待响应者响应返回;响应 者接收到来自请求者的业务服务请求后,检查请求的合法性,根据请求类型处理服务请求,并将处理结 果返回给请求者。 下面的协议内容将按照图1所示的框架进行。
下面的协议内容将按照图1所示的框架进行 协议内容 协议内容如下: a)请求 也称业务服务请求,包含请求者业务请求的类型、性质以及特性数据等,该请求将被发送到响 应者并得到服务。服务请求包括如下数据: 协议版本(当前版本为1); 一请求类型;X 一 一请求包: 请求时间。 b)响应 指响应者对来自请求者请求的处理响应。响应者的响应包括如下数据: 协议版本(当前版本为1); 一响应类型; 一响应包; 一响应时间。 c) 异常情况 当响应者处理发生错误时,需要向请求者发送错误信息。错误可以是下列两类: 请求失败:响应者验证来自请求者业务请求数据失败,请求者收到该响应后应重新组织业 务请求数据进行发送 内部处理失败:响应者处理请求者业务请求过程中发生内部错误,响应者通知请求者该请 求处理失败,请求者需重新组织业务请求数据进行发送。
GB/T38629—2020
7.3.1请求数据格式
请求者请求数据的基本格式如下: SVSRequest::=SEQUENCE《 version Version DEFAULT vl, reqType ReqType, request Request, reqTime [oJIMPLICIT GeneralizedTime OPTIONAL, reqTimeStampToken [1JIMPLICITReqTimeStampToken OPTIONAL, extAttributes [2JIMPLICIT ExtAttributes OPTIONAL 其中: Version ::= INTEGER (vl(0)) ReqType: := INTEGER( exportCert (0), parseCert (1), validateCert (2), signData (3), verifySignedData (4), signDatalnit (5), signDataUpdate (6), signDataFinal (7), verifySignedDatalnit (8), verifySignedDataUpdate (9), verifySignedDataFinal (10), signMessage (11), verifySignedMessage (12) Request :: = OCTET STRING exportUserCertReq [o] IMPLICT ExportUserCertReq, parseCertReq [1] IMPLICT ParseCertReq, validateCertReq [2] IMPLICT ValidateCertReq, signDataReq [3] IMPLICT SignDataReq, verifySignedDataReq [4] IMPLICT VerifySignedDataReq, signDatalnitReq [5] IMPLICT SignDatalnitReq, signDataUpdateReq [6]IMPLICT SignDataUpdateReq, signDataFinalReq [7] IMPLICT SignDataFinalReq, verifySignedDatalnitReq [8]IMPLICT VerifySignedDataInitReq, verifySignedDataUpdateReq [9] IMPLICT VerifySignedDataUpdateReq, verifySignedDataFinalReq [10]IMPLICT VerifySignedDataFinalReq,
请求者请求效据的基本格式如下: SVSRequest::=SEQUENCE< version Version DEFAULT vl, reqType ReqType, request Request, reqTime [oJIMPLICITGeneralizedTime OPTIONAL, reqTimeStampToken [1JIMPLICITReqTimeStampToken OPTIONAL extAttributes 「2IMPLICITExtAttributesOPTIONAL
signMessageReq verifySignedMessageReg
ReqTimeStampToken ::=TimeStampToken
7.3.2SVSRequest及其结构解释
GB/T38629—2020
11JIMPLICTSignMessageReq, [12]IMPLICT VerifySignedMessageRed
11JIMPLICTSignMessageReq, 12IMPLICT VerifySignedMessageReo
SVSRequest包含了请求语法中的重要信息,本条将对该结构作详细的描述和解释: a)协议版本 本项描述了请求语法的版本号,当前版本为1,取整型值0。 b)请求类型 本项描述了不同业务的请求类型值,0~999为保留值,不可占用。 C) 请求包 请求包与请求类型值之间的对应关系如表1所示
表1请求包与请求类型值的对应关系
请求者产生请求的时间,采用GeneralizedTime语法表示。 e 请求时间戳 request内容的时间戳。如包含此项数据,签名服务器应验证该时间戳 f 扩展数据 依据实际业务需求添加的扩展数据
7.4.1响应数据格式
响应者响应的基本格式如下:
SVSRespond::=SEQUENCE< version Version DEFAULT vl, respType RespType, respond Respond, respTime [oJIMPLICIT GeneralizedTime OPTIONAL, respTimeStampToken [1J IMPLICIT RespTimeStampToken OPTIONAL, extAttributes [2JIMPLICIT ExtAttributes OPTIONAL ) 其中: Version ::=INTEGER { vl(0)) RespType: := INTEGER( exportCert (0), parseCert (1), validateCert (2), signData (3), verifySignedData (4), signDatalnit (5), signDataUpdate (6), signDataFinal (7), verifySignedDatalnit (8), verifySignedDataUpdate (9), verifySignedDataFinal (10), signMessage (11), verifySignedMessage (12) 1 Respond::= OCTET STRING exportUserCertResp [o] IMPLICT ExportUserCertResp, parseCertResp [1J IMPLICT ParseCertResp, validateCertResp [2J IMPLICT ValidateCertResp, signDataResp [3] IMPLICT SignDataResp, verifySignedDataResp [4JIMPLICTVerifySignedDataResp, signDatalnitResp [5JIMPLICT SignDatalnitResp, signDataUpdateResp [6] IMPLICT SignDataUpdateResp, signDataFinalResp [7J IMPLICT SignDataFinalResp, verifySignedDatalnitResp [8] IMPLICT VerifySignedDataInitResp, verifySignedDataUpdateResp [9J IMPLICT VerifySignedDataUpdateResp, verifySignedDataFinalResp [1o] IMPLICT VerifySignedDataFinalResp, signMessageResp [11] IMPLICT SignMessageResp, verifySignedMessageResp [12JIMPLICT VerifySignedMessageResp 1 respTimeStampToken: : TimeStampToken F
version Version DEFAULTvl, respType RespType, respond Respond, respTime [oJIMPLICIT GeneralizedTime OPTIONAL, respTimeStampToken [1JIMPLICITRespTimeStampToken OPTIONAL extAttributes [21IMPLICITExtAttributesOPTIONAL
7.4.2SVSRespond及其结构解释
GB/T38629—2020
SVSRespond包含了响应语法中的重要信息,本条将对该结构作详细的描述和解释: a) 协议版本 本项描述了响应语法的版本号,当前版本为1,取整型值0。 b) 响应类型 本项描述了不同业务的响应类型值,0~999为保留值,不可占用。 响应包 响应包与响应类型值之间的对应关系如表2所示
表2响应包与相应类型值的对应关系
d)响应时间 响应者产生响应的时间,采用GeneralizedTime语法表示。 e)响应时间戳 respond内容的时间戳。如包含此项数据,客户端应验证该时间戳 f 扩展数据 依据实际业务需求添加的扩展数据
7.5协议接口功能说明
ExportCertReq包 ExportCertReq包为导出证书请求格式包,当reqType取值exportCert时,请求包采用本子 包,其具体格式如下: ExportCertReq: := SEQUENCE identification OCTET STRING
dentification表明要导出证书的标识。 ExportCertResp包 ExportCertResp包为导出证书响应格式包,当respType取值exportCert时,响应包采用本子 包,其具体格式如下: ExportCertResp::=SEQUENCE< respValue INTEGER, cert Certificate OPTIONAL respValue表明响应码,0表示成功,非0表示错误。 cert表明导出的证书
identification表明要导出证书的标识。 ExportCertResp包 ExportCertResp包为导出证书响应格式包,当respType取值exportCert时,响应包采用本 包,其具体格式如下: ExportCertResp::=SEQUENCE< respValue INTEGER, cert Certificate OPTIONAL respValue表明响应码,0表示成功,非0表示错误。 cert表明导出的证书
respValue表明响应码,0表示成功,非0表示错 cert表明导出的证书
ParseCertReq包 ParseCertReq包为解析证书请求格式包,当reqType取值parseCert时,请求包采用本子包, 其具体格式如下: ParseCertReq: := SEQUENCE《 infoType INTEGER, cert Certificate infoType表明要解析证书信息的类型,应遵循GB/T33560—2017中6.3.4的规定; cert表示要解析的数字证书 ParseCertResp包 ParseCertResp包为解析证书响应格式包,当respType取值parseCert时,响应包采用本子 包,其具体格式如下: SAC ParseCertResp: := SEQUENCE ( respValue INTEGER, info OCTET STRING OPTIONAL respValue表明响应码,0表示成功,非0表示错误。 info表示获取的证书信息
ParseCertReq包 ParseCertReq包为解析证书请求格式包,当reqType取值parseCert时,请求包采用本子包 其具体格式如下: ParseCertReq::= SEQUENCE infoType INTEGER, cert Certificate
7.5.3验证证书有效性
ValidateCertReq包 ValidateCertReq包为验证证书有效性请求格式包,当 用本子包,其具体格式如下: ValidateCertReq::=SEQUENCE< cert Certificate, ocsp BOOLEANDEFAULTFALSE cert表示要验证证书有效性的数字证书; ocSP表示是否获取证书OCSP状态,默认值为FALSE ValidateCertResp包
ValidateCertResp包为验证证书有效性响应格式包,当respType取值validateCert时,响应包 采用本子包,其具体格式如下: ValidateCertResp::= SEQUENCE《 respValue INTEGER, state INTEGER OPTIONAL respValue表明响应码,o表示成功,非0表示错误; state表明获取的证书 OCSP状态标识。
7.5.4单包数字签名
7.5.5单包验证数字签名
VerifySignedDataReq包 VerifySignedDataReq包为单包验证数字签名请求格式包,当reqType取值verifySignedl 时,请求包采用本子包,其具体格式如下:
respValue表明响应码,0表示成功,非0表示错误
7.5.6多包数字签名初始化
SignDataInitReq包 SignDataInitReq包为多包数字签名初始化请求格式包,当reqType取值signDataInit时,请求 包采用本子包,其具体格式如下: SignDatalnitReq::=SEQUENCE《 signMethod INTEGER, signerPublicKey [O] IMPLICT OCTET STRING OPTIONAL, signerIDLen [1] IMPLICTINTEGER OPTIONAL, signerID [2]IMPLICT OCTET STRING OPTIONAL,
GB/T38629—2020
.5.7多包数字签名更新
SignDataUpdateReq包 SignDataUpdateReq包为多包数字签名更新请求格式包,当reqType取值signDataUpdate 时,请求包采用本子包,其具体格式如下: SignDataUpdateReq::=SEQUENCE SessionID OCTET STRING, inDataLen INTEGER, inData OCTET STRING SessionID表示会话标识; inDataLen表示数据明文长度; inData表示数据明文。 SignDataUpdateResp包 SignDataUpdateResp包为多包数字签名更新响应格式包,当respType取值signDataUpdate 时,响应包采用本子包,其具体格式如下: SignDataUpdateResp::SEQUENCE《 respValue INTEGER, SessionID OCTET STRING OPTIONAL respValue表明响应码,0表示成功,非0表示错误; ooiaD主Aan
7.5.8多包数字签名结束
SignDataFinalReq包 SignDataFinalReq包为多包数字签名结束请求格式包,当reqType取值signDataFinal时,请 求包采用本子包,其具体格式如下: SignDataFinalReq: := SEQUENCE( keyIndex INTEGER, keyValue OCTET STRING, SessionID OCTET STRING
GB/T 386292020
keyIndex表示签名者私钥的索引值,如十进制1表示索引值为1的密钥; keyValue表示签名者私钥权限标识码; SessionID表示会话标识。 SignDataFinalResp包 SignDataFinalResp包为多包数字签名结束响应格式包,当respType取值signDataFinal时, 响应包采用本子包,其具体格式如下: SignDataFinalResp::= SEQUENCE( respValue INTEGER, signature OCTET STRING OPTIONAL respValue表明响应码,0表示成功,非0表示错误;
respValue表明响应码,0表示成功,非0表示错误; signature表示签名值,数据的结构应遵循GB/T35276
7.5.9多包验证数字签名初始化
VerifySignedDatalnitReq包 VerifySignedDatalnitReq包为多包验证数字签名初始化请求格式包,当reqType取值verif SignedDataInit时,请求包采用本子包,其具体格式如下: VerifySignedDatalnitReq::=SEQUENCE signMethod INTEGER, signerPublicKey [O]IMPLICT OCTET STRING OPTIONAL, signerIDLen [1] IMPLICT INTEGER OPTIONAL, signerID 「21IMPLICT OCTET STRING OPTIONAL.
7.5.10多包验证数字签名更新
VerifySignedDataUpdateReq包 VerifySignedDataUpdateReq包为多包验证数字签名更新请求格式包,当reqType取值vel fySignedDataUpdate时,请求包采用本子包,其具体格式如下: VerifySignedDataUpdateReq::=SEQUENCE
VerifySignedDataUpdateReq包 VerifySignedDataUpdateReq包为多包验证数字签名更新请求格式包,当reqType取值vel fySignedDataUpdate时,请求包采用本子包,其具体格式如下: VerifySignedDataUpdateReq::=SEQUENCE
GB/T38629—2020
SessionID OCTET STRING, inDataLen INTEGER, inData OCTET STRING SessionID表示会话标识; inDataLen表示数据明文长度; inData表示数据明文。 VerifySignedDataUpdateResp包 VerifySignedDataUpdateResp包为多包验证数字签名更新响应格式包,当respType取值ver ifySignedDataUpdate时,响应包采用本子包,其具体格式如下: VerifySignedDataUpdateResp: := SEQUENCE respValue INTEGER, SessionID OCTET STRING OPTIONAL respValue表明响应码,0表示成功,非0表示错误; SaiD事示合话标调
7.5.11多包验证数字签名结束
VerifySignedDataFinalReg包为多包验证数字签名结束请求格式包,当regType取值verify SignedDataFinal时,请求包采用本子包,其具体格式如下: VerifySignedDataFinalReq::=SEQUENCE《 type INTEGER cert [o]IMPLICT Certificate OPTIONAL, certSN [1J IMPLICT OCTET STRING OPTIONAL, SessionID OCTET STRING, signature OCTET STRING, verifyLevel INTEGER type表示使用验证数字签名时使用证书或证书序列号,1表示使用证书,2表示使用证书序 列号; cert表示签名证书,type取值1时有效; certSN表示签名证书序列号,type取值2时有效; SessionID表示会话标识; signature表示签名值,数据的结构应遵循GB/T35276。 verifyLevel表示证书验证级别,O:验证时间,1:验证时间和根证书签名,2:验证时间、根证书 签名和CRL。 VerifySignedDataFinalResp包 VerifySignedDataFinalResp包为多包验证数字签名结束响应格式包,当respType取值veri fySignedDataFinal时,响应包采用本子包,其具体格式如下: VerifySignedDataFinalResp: := SEQUENCE( respValue INTEGER
GB/T38629—2020
espValue表明响应码,0表示成功,非0表示错误
SignMessageReq包 SignMessageReq包为消息签名请求格式包,当reqType取值signMessage时,请求包采用本 子包,其具体格式如下: SignMessageReq: := SEQUENCE( signMethod INTEGER, keylndex INTEGER, keyValue OCTET STRING, signerIDLen [O]IMPLICT INTEGER OPTIONAL, signerID [1] IMPLICT OCTET STRING OPTIONAL, inDataLen INTEGER, inData OCTET STRING, originalText [O]IMPLICT BOOLEAN OPTIONAL, certificateChain [1]IMPLICT BOOLEAN OPTIONAL,
7.5.13验证消息签名
VerifySignedMessageReq包 VerifySignedMessageReq包为验证消息签名请求格式包,当reqType取值verifySignedMessa 时,请求包采用本子包,其具体格式如下: VerifySignedMessageReq: := SEQUENCE
GB/T38629—2020
inDataLen inData signerIDLen signerID signedMessage
OCTET STRING OPTIONAL, [OJIMPLICT INTEGER OPTIONAL, [1]IMPLICT OCTET STRING OPTIONAL, OCTET STRING
respValue表明响应码,O表示成功,非o表示错误
GB/T38629—2020
附录A (规范性附录) 基于HTTP的消息协议语法规则
第7章中描述的ASN.1格式是一种二进制格式,考到签名验证服务将被产泛用于各种WEB系 统,而WEB系统更善于处理文本,为此在第7章的基础上,另行设计了一套基于HTTP协议的消息协 议接口,便于各类WEB系统调用。 其工作原理与第7章中的请求响应模式类似,不同的是将消息格式从二进制的ASN.1格式,转 为易于在WEB应用和HTTP协议中传递的文本格式。 本附录只描述了从第7章的消息格式到对应HTTP格式的转换规则,而不再复述第7章中每个请 求,响应的业务含义,
A.2ASN.1数据类型到HTTP格式的转化规贝
表A.1ASN.1数据类型到HTTP格式的转化规
A.3HTTP请求的转换规则(urlencoded格式)
第7章中的请求分为两层结构,外层是公共结构, SVSRequest ::=SEQUENCE( version Version DEFAULT vl, reqType ReqType, request Request, reqTime GeneralizedTime 这一层结构在转换为HTTP时,被转化为HTTPRequestHeader中的字段,原则如下: a)所有请求都采用HTTP的POST模式; b)regType作为URL的最终一级资源名,目录允许自定义,如:/SignServer/SignData
第7章中的请求分为两层结构,外层是公共结构 SVSRequest::=SEQUENCE version Version DEFAULT vl, reqType ReqType, request Request, regTime GeneralizedTime
这一层结构在转换为HTTP时,被转化为HTTPRequestHeader中的字段,原则如下: a)所有请求都采用HTTP的POST模式; b)reqType作为URL的最终一级资源名,目录允许自定义,如:/SignServer/SignData:
GB/T38629—2020
A.4HTTP响应的转换规则(urlencoded格式)
第7章中的响应分为两层结构,外层是公共结构 SVSRespond : := SEQUENCE version Version DEFAULT vl, respType RespType, respond Respond, respTime GeneralizedTime
A.5HTTP请求的转换规则(json格式
第7章中的请求。 SVSRequest ::= SEQUENCE version Version DEFAULT vl, reqType ReqType, request Request, renTime GeneralizedTime
外墙标准规范范本A.6HTTP响应的转换规则(json格式
第7章中的响应。 SVSRespond ::= SEQUENCE version Version DEFAULT vl: respType RespType,
GB/T38629—2020
respond Respond, respTime GeneralizedTime
"version":"vl", "reqType":"signData", "respond": "respValue":"响应码", "signature":"Base64编码的签名结果” "reqTime":"带时区格式的时间字符串
GB/T38629—2020
附录B (规范性附录) 响应码定义和说明
煤矿标准规范范本附录B (规范性附录) 响应码定义和说明
表B.1响应码定义和说明
....- 相关专题: 信息安全技术