2020年(安全生产)安全中间件二次开发手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(安全生产)安全中间件二次开发手册
安全中间件二次开发手册
目录1引言4
1.1编写目的4
1.2项目背景4
1.3术语和缩写词5
1.4遵循标准5
2系统概述7
2.1功能8
2.2性能9
精度9
时间特性9
灵活性9
3运行环境10
3.1硬件系统10
3.2支撑软件10
4开发说明10
4.1客户端描述11
4.1.1APP客户端控件接口说明11
4.1.1.1AtvInit11
4.1.1.2AtvEnd11
4.1.1.4Login12
4.1.1.5ChangeLoginPin12 4.1.1.6Logout13
4.1.1.7GetCert13
4.1.1.8CheckCert13
4.1.1.9GetCertInfo14
4.1.1.10SealEnvelope15
4.1.1.11SealEnvelopeEx16 4.1.1.12OpenEnvelope17 4.1.1.13SignData17
4.1.1.14SignDataEx18
4.1.1.15VerifySign18
4.1.1.16GenRandom19
4.1.1.17HashData19
4.1.1.18SymmEncrypt20 4.1.1.19SymmDecrypt20 4.1.1.20GetCertFromLDAP21 4.1.1.21GetAndSaveCRL21 4.1.1.22ReadFromFile22 4.1.1.23WriteToFile22
4.1.1.25VerifyStamp23
4.1.1.26GetAlgoFromPA23
4.1.1.27Base64Encode24
4.1.1.28Base64Decode24
4.1.1.29GetParamValue25
4.2服务端描述25
4.2.1 APP应用服务器端JAVA接口25
4.2.1.1 release25
4.2.1.2GetCurStatus25
4.2.1.3AdvBase64Encode26
4.2.1.4 AdvBase64Decode26
4.2.1.5AdvGetCert26
4.2.1.6AdvCheckCert26
4.2.1.7AdvGetCertInfo27
4.2.1.8AdvSealEnvelope28
4.2.1.9 AdvSealEnvelopeEx29
4.2.1.10 AdvOpenEnvelope30
4.2.1.11 AdvSignData30
4.2.1.12 AdvSignDataEx31
4.2.1.13 AdvVerifySign31
4.2.1.14 AdvGenRandom32
4.2.1.15 AdvHashData32
4.2.1.16 AdvSymmEncrypt33
4.2.1.17 AdvSymmDecrypt33
4.2.1.18 AdvGetCertFromLDAP34
4.2.1.19 AdvGetCRLFromLDAP34
4.2.1.20 AdvUploadCRL35
4.2.1.21 AdvReadFromFile35
4.2.1.22 AdvWriteToFile35
4.2.1.23 AdvGetStamp36
4.2.1.24 AdvVerifyStamp36
4.2.1.25 AdvGetAlgoFromPA36
4.2.1.26 AdvGetAttrCertInfo37
4.2.1.27 AdvGetPACertInfo37
4.2.1.28 AdvGetAttrCertListFromLDAP38 5应用开发实例39
5.1身份认证参考模型40
5.2加解密功能参考模型43
5.3签名验签功能参考模型44
1引言
1.1编写目的
该文档主要规范了PKI安全中间件的功能接口定义。
在整个PKI体系中,安全中间件的作用非常关键,它通过调用底层的WHCSP及证书管理器等,封装了壹系列PKI应用接口,满足上层PKI具体应用的需要。
本标准适用于PKI上层应用的需求,主要为CA系统。
适用对象为所有采用安全中间件的系统开发人员。
1.2项目背景
高级密码服务,顾名思义,是为用户提供相对高级和抽象的密码服务,而不是像底层的CSP和硬件加密算法那样,提供比较低级和具体的密码服务。
壹般来说,高级的密码服务应该能够让不懂加密、解密和签名、验签等概念的用户也能够透明的使用,也就是说把密码学算法的细节给屏蔽掉了。
1.3术语和缩写词
1.4遵循标准
列出参考资料,如:
●RFC2459PKIXPKIX证书和CRL概要
●IETF:PKIX证书策略和证书实践框架
●IETF:RFC2510:CMP(证书管理协议)
●RFC2797:CMC(CMS上的证书管理消息)
●RFC2511:CRMF(证书请求消息格式)
●X.208抽象语法符号1描述(ASN.1)
●X.209抽象语法符号1基本编码规范说明(ASN.1)
●X.680信息技术―抽象语法符号1(ASN.1)—基本符号规范●X.681信息技术―抽象语法符号1(ASN.1)-信息目标规范●X.682信息技术―抽象语法符号1(ASN.1)-强制规范
●X.690信息技术―ASN.1编码规则-基本编码规则(BER),规
范编码规则(CER)和主要编码规则(DER)
●X.509v4信息技术-开放式系统互连-目录:公钥和属性
证书框架
●X.500开放式系统互连—目录:概念,模型和服务概述
●LDAP轻目录访问协议:由ISO于1997年12月发布。
●PKCS#1(v1.5)RSA密码算法
●PKCS#5(v2.0)基于口令的密码标准
●PKCS#6(v1.5)扩展的数字证书语法标准
●PKCS#7(v1.5)密文消息语法标准
●PKCS#8(v1.5)私钥信息语法标准
●PKCS#9(v2.0)可选择的属性类型
●PKCS#10(v1.5)数字证书申请语法标准
●PKCS#11硬件密码设备接口标准
●PKCS#12(v1.0)个人信息交换语法
●PKCS#15(v1.1)多个应用访问标准
●X.509开放式系统互连—目录:公钥和授权证书框架
●ITU-TX.500开放式系统互连—目录:概念,模型和服务概
述
●CORBA(公共对象请求代理体系结构)v2.4
2系统概述
在PKI体系结构中【见上图】,安全中间件总揽了证书管理器和CSP的所有功能。
它在PC端和PKI服务器端都是直接面向最终用户的调用接口,因此,它必须能够屏蔽掉PC端和PKI服务器端的不同情况。
安全中间件是为用户提供相对高级和抽象的密码服务,而不是像底层的CSP和硬件加密算法那样,提供比较低级和具体的密码服务。
壹般来说,安全中间件服务应该能够让不懂加密、解密和签名、验签等概念的用户也能够透明的使用,也就是说把密码学算法的细节给屏蔽掉了。
2.1功能
●抽象的算法服务
1.对指定的明文进行加密的功能,包括口令加密、对称密
钥加密和公开密钥加密。
2.对指定的密文进行解密的功能,包括对称密钥解密和公
开密钥解密。
3.对指定的明文进行签名的功能。
4.对指定的签名进行验签的功能
5.封装PKCS7数字信封
6.解开PKCS7数字信封
7.对明文进行散列。
8.产生随机数。
●抽象的证书服务
1.根据标签得到证书
2.验证证书的有效性
3.生成PKCS10格式的证书请求文件
4.输入绑定的证书和私钥。
●私钥和口令保护服务
1.检查私钥口令
2.更改私钥口令
3.检查PIN
4.更改PIN
编码服务
5.ASE64的编码功能
6.BASE64的解码功能
2.2性能
精度
TSP响应时间<1s;
OCSP响应时间<1s;
LDAP服务单元响应速度<0.5s
时间特性
客户端RSA签名2次/秒
验签5次/秒
服务器端RSA签名20次/秒
验签100次/秒
灵活性
能够灵活支持多种硬件介质和硬件加密卡;
能够提供C/C++、Java、C#等应用接口;
壹套软件结构能够同时为CA和应用提供服务;
能够支持33算法、RC4算法、DES/3DES算法;
3运行环境
3.1硬件系统
适用于各种PC兼容机、服务器、小型机等等
3.2支撑软件
WINDOWS2000,WindowsXP,LINUX(RedHat9.0及AdvancedServer2.1)
4开发说明
描述系统为二次开发工作提供的接口、约束等。
安全中间件分为客户端和服务端2部分,安全中间件客户端主要的功能是在客户端通过对硬件存储介质的操作完成壹些密码运算。
服务端主要是通过调用密码服务器为应用服务提供所需的密码服务。
客户端和服务端产的数据格式都采用国际同意标准。
服务端能够运算客户端产生的数据,客户端也能够运算服务端产生的数据。
主要用的功能为客户端进行签名、加密,服务端验签、解密或服务端签名、加密,客户端验签、解密。
客户端和服务端的数据传输能够由应用开发灵活处理,但要保证在传输前后数据的格式不发生变化。
通过安全中间件提供的抽象密码服务,为应用开发提供机密性,完整性,不可抵赖性方面的支持。
完成身份认证,电子印章,
责任认定,密文传输等应用服务。
4.1客户端描述
客户端主要设备是硬件存储介质E-Key,E-Key做为数字证书的存储设备主要存储用户的签名私钥,加密私钥,签名证书,加密证书。
通过调用客户端控件能够使用E-Key完成签名,加密等密码服务。
4.1.1APP客户端控件接口说明
4.1.1.1AtvInit
4.1.1.2AtvEnd
4.1.1.3SetHardWare
4.1.1.4Login
4.1.1.5ChangeLoginPin
4.1.1.6Logout
4.1.1.7GetCert
4.1.1.8CheckCert
4.1.1.9GetCertInfo
4.1.1.10SealEnvelope
4.1.1.11SealEnvelopeEx
4.1.1.12OpenEnvelope
4.1.1.13SignData
4.1.1.14SignDataEx
4.1.1.15VerifySign
4.1.1.16GenRandom
4.1.1.17HashData
4.1.1.18SymmEncrypt
4.1.1.19SymmDecrypt
4.1.1.20GetCertFromLDAP
4.1.1.21GetAndSaveCRL
4.1.1.22ReadFromFile
4.1.1.23WriteToFile
4.1.1.24GetStamp
4.1.1.25VerifyStamp
4.1.1.26GetAlgoFromPA
4.1.1.27Base64Encode
4.1.1.28Base64Decode
4.1.1.29GetParamValue
4.2服务端描述
4.2.1APP应用服务器端JAVA接口4.2.1.1release
4.2.1.2GetCurStatus
4.2.1.3AdvBase64Encode
4.2.1.4AdvBase64Decode
4.2.1.5AdvGetCert
4.2.1.6AdvCheckCert
4.2.1.7AdvGetCertInfo
4.2.1.8AdvSealEnvelope
4.2.1.9AdvSealEnvelopeEx
4.2.1.10AdvOpenEnvelope
4.2.1.11AdvSignData
4.2.1.12AdvSignDataEx
4.2.1.13AdvVerifySign
4.2.1.14AdvGenRandom
4.2.1.15AdvHashData
4.2.1.16AdvSymmEncrypt
4.2.1.17AdvSymmDecrypt
4.2.1.18AdvGetCertFromLDAP
4.2.1.19AdvGetCRLFromLDAP
4.2.1.20AdvUploadCRL
4.2.1.21AdvReadFromFile
4.2.1.22AdvWriteToFile
4.2.1.23AdvGetStamp
4.2.1.24AdvVerifyStamp
4.2.1.25AdvGetAlgoFromPA
4.2.1.26AdvGetAttrCertInfo
4.2.1.27AdvGetPACertInfo
4.2.1.28AdvGetAttrCertListFromLDAP
5应用开发实例
以公钥基础设施(PublicKeyInfrastructure:PKI)和安全中间件为基础的安全平台,为用户及应用系统提供安全服务。
公钥基础设施(PKI)从技术上解决网络环境中身份认证、电子信息完整性和行为不可抵赖性等安全问题,为网络应用(如浏览器、电子邮件、电子交易)提供可靠的安全服务。
因此,PKI公钥基础设施能够为所有网络应用透明地采用加/解密、数字签名/验签等密码服务所必需的密钥和证书管理。
针对不同的应用开发环境以及运行环境,安全平台提供的安全中间件技术以及公共安全接口技术能够将安全服务封装成适合在各种操作系统环境以及不同语言环境的应用接口,真正体现底层安全和上层应用环境、应用系统的独立性。
5.1身份认证参考模型
用户登陆的身份验证的实现如图1所示:
●用户登陆应用系统平台的Web网站,插入KEYNET,
输入KEYNET的PIN码;
●客户端javascript进行调用ActiveX控件,进行初始
化;
●对于用户的身份验证调用的中的PIN码验证函数验证用
户输入的PIN码和KEYNET本身的PIN码是否相同,图5-1身份验证流程参考模型
●生成随机数,取得KEYNET中的用户的公钥证书对于随
机数进行签名
●将公钥证书,随机数,随机数签名发送到服务器端;
●服务器端取得根证书,对于用户的公钥进行验证,此公
钥证书是否为真实有效;
●然后取得服务器的验证证书对于随机数的签名进行验
签,确定客户端的签名是否正确;
●服务器端对用户传来的随机数进行签名,然后将签名值
和服务器的验证证书传给客户端。
●客户端对于服务器的验证证书进行验证是否为合法的服
务器,然后对于服务器端传来的签名值进行验签,是否
有效。
●当上述双方验证工作都通过后,用户通过身份验证。
5.2加解密功能参考模型
图5-2加解密功能参考模型。