安全中间件二次开发手册Word文档下载推荐.docx
《安全中间件二次开发手册Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《安全中间件二次开发手册Word文档下载推荐.docx(50页珍藏版)》请在冰点文库上搜索。
CMC(CMS上的证书管理消息)
RFC2511:
CRMF(证书请求消息格式)
抽象语法符号1描述
抽象语法符号1基本编码规范说明
信息技术―抽象语法符号1—基本符号规范
信息技术―抽象语法符号1-信息目标规范
信息技术―抽象语法符号1-强制规范
信息技术―编码规则-基本编码规则(BER),规范编码规则(CER)和主要编码规则(DER)
信息技术-开放式系统互连-目录:
公钥和属性证书框架
开放式系统互连—目录:
概念,模型和服务概述
LDAP轻目录访问协议:
由ISO于1997年12月发布。
PKCS#1RSA密码算法
PKCS#5基于口令的密码标准
PKCS#6扩展的数字证书语法标准
PKCS#7密文消息语法标准
PKCS#8私钥信息语法标准
PKCS#9可选择的属性类型
PKCS#10数字证书申请语法标准
PKCS#11硬件密码设备接口标准
PKCS#12个人信息交换语法
PKCS#15多个应用访问标准
公钥和授权证书框架
ITU-T开放式系统互连—目录:
CORBA(公共对象请求代理体系结构)
3.
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性能
精度
(16)TSP响应时间<
1s;
(17)OCSP响应时间<
(18)LDAP服务单元响应速度<
时间特性
(19)客户端RSA签名2次/秒
(20)验签5次/秒
(21)服务器端RSA签名20次/秒
(22)验签100次/秒
灵活性
(23)可以灵活支持多种硬件介质和硬件加密卡;
(24)可以提供C/C++、Java、C#等应用接口;
(25)一套软件结构可以同时为CA和应用提供服务;
(26)可以支持33算法、RC4算法、DES/3DES算法;
3运行环境
3.1硬件系统
(27)适用于各种PC兼容机、服务器、小型机等等
3.2支撑软件
(28)WINDOWS2000,WindowsXP,LINUX(及Advanced)
4开发说明
4.描述系统为二次开发工作提供的接口、约束等。
安全中间件分为客户端和服务端2部分,安全中间件客户端主要的功能是在客户端通过对硬件存储介质的操作完成一些密码运算。
服务端主要是通过调用密码服务器为应用服务提供所需的密码服务。
客户端和服务端产的数据格式都采用国际同意标准。
服务端可以运算客户端产生的数据,客户端也可以运算服务端产生的数据。
主要用的功能为客户端进行签名、加密,服务端验签、解密或服务端签名、加密,客户端验签、解密。
客户端与服务端的数据传输可以由应用开发灵活处理,但要保证在传输前后数据的格式不发生变化。
5.通过安全中间件提供的抽象密码服务,为应用开发提供机密性,完整性,不可抵赖性方面的支持。
完成身份认证,电子印章,责任认定,密文传输等应用服务。
4.1客户端描述
6.客户端主要设备是硬件存储介质E-Key,E-Key做为数字证书的存储设备主要存储用户的签名私钥,加密私钥,签名证书,加密证书。
通过调用客户端控件可以使用E-Key完成签名,加密等密码服务。
4.1.1APP客户端控件接口说明
4.1.1.1AtvInit
功能简介
控件初始化。
读取客户端证书载体信息及其它初始化工作。
调用一些主要功能接口前必须先调用本接口。
接口名称
intAtvInit()
参数说明
入参说明
无
出参说明
返回值
成功,则返回0
失败,则返回错误号,错误号小于0
4.1.1.2AtvEnd
进行开发包函数库调用完毕后内部存储区的清除工作。
intAtvEnd();
失败,则返回错误号,小于0
4.1.1.3SetHardWare
设置客户端硬件设备类型。
BOOLSetHardWare(longhardwareType);
hardwareType[IN]:
客户端硬件设备类型
目前支持:
1 软件摸拟实现
2 加密卡实现
3 SIM卡实现
4EKEY实现
成功,则返回TRUE
失败,则返回FALSE
4.1.1.4Login
登录客户端硬件设备。
BOOLLogin(intloginType,
?
BSTRloginPin);
loginType[IN]:
用户登陆类型,此处用户请输入1
loginPin[IN]:
用户登陆PIN码
说明
调用本接口时,如果loginPin输入为””空,则会弹出输入口令对话框;
如果不为空,则不会弹出,只返回登录是否成功。
4.1.1.5ChangeLoginPin
修改客户端用户登陆PIN码。
BOOLChangeLoginPin(BSTRkeyLabel,
BSTRoldPasswd,
BSTRnewPasswd);
keyLabel[IN]:
私钥标签,此处请传入“wellhope”
oldPasswd[IN]:
旧的用户登陆口令
newPasswd[IN]:
新的用户登陆口令
4.1.1.6Logout
退出客户端硬件登录。
BOOLLogout();
4.1.1.7GetCert
根据证书标签和证书类型读取客户端用户证书。
证书标签写在配置文件中,见前面配置文件。
BSTRGetCert(intcertType);
certType[IN]:
证书类型
1---加密证书
2---签名证书
返回编码后的证书信息。
4.1.1.8CheckCert
验证证书的有效性。
在验证过程中会连接到OCSP服务器上进行证书的验证。
BOOLCheckCert(BSTRi_inCert);
i_inCert[IN]:
待验证的证书,已编码。
4.1.1.9GetCertInfo
解析证书信息,并以XML字符串格式返回
BSTRGetCertInfo(BSTRi_inCert);
待解析的证书,已编码。
返回采用XML标准结构的证书信息。
[举例]
<
certinfo>
version>
3<
/version>
serialnum>
00000000000000000000000000000042<
/serialnum>
algorithm>
SHA1RSA<
/algorithm>
issuer>
dn_c>
CN<
/dn_c>
dn_s>
Shanghai<
/dn_s>
dn_l>
Zhangjiang<
/dn_l>
dn_o>
ShanghaiwellhopeE-BussinessCertificateAuthority<
/dn_o>
dn_ou>
WELLHOPE<
/dn_ou>
dn_cn>
自然人CA<
/dn_cn>
/issuer>
validity>
notbefore>
2003年08月21日<
/notbefore>
notafter>
2004年08月21日<
/notafter>
/validity>
subject>
wellhope<
infosec<
user5<
/subject>
publickey>
308f34d52b7fb481752a506905e5b8a0698994dc3104fc8f7d1180912c6087dee594225d4ba1946dfadd3501e59fc9cbd86b50c79b2ce09630fed4896651b54c37ae98855545c1434f9f4a15e3a15e9b09997b03af16c7465f816bfe2b1a49821a0090e283f82ebf2ed7daa2e76a5ada469a14e78108dde58ac13b826fb01<
/publickey>
/certinfo>
4.1.1.10SealEnvelope
数字信封加密。
内部的处理过程是首先随机生成一对称密钥(由入口参数指定其算法或者通过PA确定),然后用此对称密钥加密输入的数据,最后用公钥加密产生的此对称密钥。
这是我们推荐的一种对数据进行加密的方法,因为它不仅保证了加密的高效性(对称密钥的快速加密),还保证了加密的高强度性(公钥的强加密)。
此函数的加密输出结果遵循PKCS#7的编码标准(EnvelopedData)。
BSTRSealEnvelope(BSTRi_encCert,
longi_symmAlgo,
BSTRi_inData);
i_encCert[IN]:
用于加密的数字证书,已编过码。
i_symmAlgo[IN]:
信封中所用对称算法标识。
取值如下:
CALG_RC4=26625
CALG_3DES=26115
CALG_33=9
viaPA=0,说明加密过程首先将连接到PA(策略中心)获取相应的参数进行后续的工作
i_inData[IN]:
输入原文信息,如是二进制数据则已编过码。
输出的已编码的密文结果。
4.1.1.11SealEnvelopeEx
用多证书批量生成数字信封。
BSTRSealEnvelopeEx(BSTRi_encCert,
longi_certsize,
?
用于加密的数字证书,已编过码,多个证书间以“|”隔开。
i_certsize[IN]:
保留参数
4.1.1.12OpenEnvelope
解析数字信封
私钥标签在配置文件中定义,运行时弹出输入框提示用户输入私钥保护口令。
BSTROpenEnvelope(BSTRi_inData);
输入已编码的信封数据。
输出原文信息,如是二进制数据则已编过码。
4.1.1.13SignData
对输入数据进行数字签名。
BSTRSignData(BSTRi_inData,
inti_algoType,
inti_signType);
输入的待签名数据,二进制数据需要做编码处理。
i_algoType[IN]:
签名算法
取值如:
32772--------sha1RSA
32771-------md5RSA
sha1RSA、md5RSA说明签名采用的是何种摘要算法+签名算法
i_signType[IN]:
签名值类型
取值:
0--不包含原文的纯签名
1--包含原文的PKCS7格式数据
输出的已编码的签名数据。
4.1.1.14SignDataEx
BSTRSignData(BSTRi_sigCert,
BSTRi_inData,
i_sigCert[IN]:
通信对方的证书,当需要通过PA获取签名算法时需输入
0--------viaPA等
viaPA=0,说明签名过程首先将连接到PA(策略中心)获取相应的参数进行后续的工作
1--包含原文的符合PKCS7格式的数据
4.1.1.15VerifySign
对输入数据进行数字签名的验证
BOOLVerifySign(BSTRi_checkCert,
BSTRi_clearText,
BSTRi_signature,
i_checkCert[IN]:
验证所用的证书。
i_clearText[IN]:
签名的原文。
如签名值包含原文,置空即可。
i_signature[IN]:
待验证的签名数据。
签名算法。
如签名值不符合PKCS#7标准,需要输入签名算法。
viaPA参数说明签名过程将连接到PA(策略中心)获取相应的签名参数进行后续的工作。
0--不包含原文(纯签名值)
1――包含原文的符合PKCS7格式的数据
TRUE:
成功
FALSE:
失败
目前的用法是:
当验证纯签名值时,需要输入签名算法或者通过策略解析器获取匹配算法;
当验证PKCS#7格式的签名内容时,由于本身自带了签名算法,因此没有必要再次调用相应的策略解析器了。
4.1.1.16GenRandom
生成一定长度的随机数/对称密钥。
BSTRGenRandom(intlen);
len[IN]:
指定的长度(字节数)。
输出已编码的随机数/对称密钥。
4.1.1.17HashData
对输入数据进行哈希运算。
BSTRHashData(inthashAlgo,
BSTRinData);
hashAlgo[IN]:
哈希算法标识
ALGO_SHA132772
ALGO_MD532771
inData[IN]:
输入数据信息,如是二进制数据则已编码。
返回编码后的哈希值。
4.1.1.18SymmEncrypt
用指定产生的对称密钥KEY来加密数据。
BSTRSymmEncrypt(longi_symmAlgo,
BSTRi_symmkey,
BSTRi_indata);
对称算法标识。
例如:
CALG_RC4=26625
i_symmKey[IN]:
对称密钥,已编码。
输入的原文,二进制数据流先编码。
输出已编码后的密文。
4.1.1.19SymmDecrypt
用指定产生的对称密钥KEY来解密密文数据。
BSTRSymmDecrypt(longi_symmAlgo,
输入的密文,已编码。
输出解密后的原文,如是二进制数据则已编码。
4.1.1.20GetCertFromLDAP
从LDAP服务器查询和获取用户证书。
BSTRGetCertFromLDAP(longi_searchType,
longi_certType,
BSTRi_searchValue);
i_searchType[IN]:
查找类型
取值范围为
1按用户ID查询
2按用户邮件地址查询
3按证书ID查询
i_certType[IN]:
证书类型
1加密证书
2签名证书
此参数对于按证书ID查询无效
i_searchValue[IN]:
查询字符串信息
当searchType取值为1时,此参数为用户ID字符串
当searchType取值为2时,此参数为用户邮件字符串
当searchType取值为3时,此参数为证书ID字符串
输出已编码后的证书信息。
4.1.1.21GetAndSaveCRL
从LDAP服务器获取CRL列表信息,并保存在本地。
写入的文件路径在注册表中指定。
[HKEY_LOCAL_MACHINE\SOFTWARE\wellhope\setting\CRLSetting]
"
CRLData"
="
C:
\\WINNT\\System32\\"
BOOLGetAndSaveCRL();
入