找论文网 > 计算机论文 > 电子商务论文 >

CAPICOM在安全电子商务中的应用研究(2)

6.1 证书操作

图4 十六进制形式密文和解密结果
    WINDOWS平台中,证书存于证书库CertStore的结构中,使用时必检索证书库,取得证书句柄,获得证书的基本信息如:有效期,公钥等,同时,还要对证书的有效性进行验证。私钥存于密钥容器中(Key Container),有对应私钥的证书,还存有私钥容器的句柄。[4]默认的证书库有4个:Trust,My,CA,Root,其中My存放了个人的证书,其中还有私钥容器句柄,Trust存放了通信群体中其它人的证书,仅公钥。证书的管理必须用到CAPICOM的几个接口:IStorePtr指向证书库,ICertificates2Ptr指向证书集合,ICertificatePtr指向证书,三个接口形成操作证书的三级索引。
图5 验证过程
6.2 证书参与加密运算:保证秘密性
    证书加密实际是用接收方证书的公钥加密,过程有两步:用公钥加密对称密钥,用对称密钥加密数据如支付的信息:客户帐号和PIN码等。CAPICOM定义的对象IenvelopedData Ptr对两步进行了包装,对于编程人员是透明的。
    ⑴ 定义数据信封
IEnvelopedDataPtr pEncryptIEnvelopedData(__uuidof
(Enveloped Data));
IEnvelopedDataPtr pDecryptIEnvelopedData(__uuidof
(EnvelopedData));
    ⑵ 设定算法参数和对称密钥长度
CAPICOM对密码算法的标识标准和密钥长度进行了定义,以常量形式给出。这里以RC4为例。
pEncryptIEnvelopedData->Algorithm->Name =CAPICOM_ENCRYPTION_ALGORITHM_RC4 ;
pEncryptIEnvelopedData->Algorithm->KeyLength =CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS;
    ⑶ 加密
bstrtemp=SysAllocStringByteLen("Hello Capicom!",14);
_bstr_ta.Assign(bstrtemp);
pEncryptIEnvelopedData->Content=_bstr_ta;bstrciphertext
=pEncryptIEnvelopedData->Encrypt(
CAPICOM_ENCODE_BINARY);
    ⑷ 取出密文
    bstrtemp是BSTR指针,指向双字节的字符串,即以两个Bytes来存一个ASCII字符,_bstr_t类型对双字节字符串进行了对象装箱,字节数是字符数据量的两倍。加密"Hello Capicom!"后,以字符形式看密文则呈乱码形式。二进制形式则如图2所示。
PCHAR pCiphertext=NULL;pCiphertext
=(PCHAR)bstrciphertext;printf("密文字符流:\n");
PVOID pchartemp=malloc(24);
for (int k=0;k<bstrciphertext.length()*2;k++)
{if(k%24==0) {memcpy((PVOID)pchartemp,pCiphertext,24);
 }pCiphertext++;}
    ⑸ 解密
pDecryptIEnvelopedData->Decrypt(bstrciphertext);printf("解密后:%s\n",
(PCHAR)pDecryptIEnvelopedData->Content.copy());结果如图4所示。
6.3 数字签名和验证:保证完整性和抗抵赖性
    签名是对消息哈希值进行签名,先算出数据的哈希值,再用签名者的私钥对哈希值签名,通过这个过程来保证订单信息如商品数量,品名等的完整性和非抵赖性。此步骤中,会检索MY证书库的证书,找证书公钥对应的私钥的容器句柄,再找到私钥,这对于程序员是透明的。签名和数据可以“依附”发送也可“独立”发送,接收者收到数据和签名后,重算数据的哈希值,将哈希值和数据的签名送进验证运算将会得出验证结果。CAPICOM组件,用接口ISignedDataPtr和IHashedDataPtr来封装此功能。
    ⑴ 定义哈希对象和设定哈希算法
IHashedDataPtr pIHashedDataPtr(__uuidof(HashedData));
pIHashedDataPtr->Algorithm=
CAPICOM_HASH_ALGORITHM_SHA1。
    ⑵ 哈希和取哈希值
    哈希对象的哈希值是字符串形式的以十六进制的格式返回,SHA-1算法的哈希值为160位,即20字节,表示成HEX格式一个字节表示为两个字符,共40个ASCII字符,再用双字节字符表示。则为40个宽字符,80字节,所以哈希值的字节长度变成了80字节。如图3所示。
bstrtemp=SysAllocStringByteLen("Hello Capicom!",14); _bstr
_ta.Assign (bstrtemp);
PCHAR pchar=NULL;pIHashedDataPtr->Hash(_bstr_ta);
bstrHashValue=pIHashedDataPtr->Value;
    ⑶ 签名
签名加入时间戳和签名者信息,还要编码成一定的格式,有时还加入了签名者的证书,故签名消息的长度取决于多个因素。而不只取决签名者的公钥长度。如以二进制编码为格式则为898字节,如图5所示。
ISignedDataPtrpISignedDataPtr(__uuidof(SignedData)); pISignedDataPtr->Content=pIHashedDataPtr->Value;
bstrSignature=pISignedDataPtr->Sign(0,TRUE,CAPICOM
_ENCODE_BINARY);
    ⑷ 验证
pISignedDataPtr->Content=pIHashedDataPtr->Value;
pISignedDataPtr->Verify(bstrSignature,TRUE,
CAPICOM_VERIFY_SIGNATURE_ONLY);
    如果验证不通过则会抛出异常,验证失败。如图3所示。
7  结束语
    信息安全如果涉及到国家利益和经济利益,密码算法往往需要本地化,而算法模块CSP的变动会对直接调用CSP的商务应用产生藕合变动,这是开发者所不愿见到的。有了CAPICOM中间件,[7]可以通过本地化CSP,实现本地化的密码算法,将其设定为默认的CSP,只要其遵照CSP的规范,可以和CAPICOM无缝挂接,而对上层的电子商务交易模型不要做任何修改。做到密码服务消费和密码服务生产的分隔与独立,从而实现CSP的零开销本地化。文章创新性地将CAPICOM密码中间件技术和电子商务交易模型相结合,很好地满足了电子商务的信息安全保密需求,解决应用层安全需求和底层密码服务模块本地化之间的藕合矛盾。
参考文献
1 张硕阳等. 电子商务交易中的风险来源与风险认知[A] .  广东:中山大学出版社,2002 :187~196
2 张楚等. 电子商务与交易安全[A].   北京:中国法制出版社 289~296
3 http://msdn.microsoft.com/library/default.asp?url=/library /en-us/seccrypto/security/setting_the_computer_default_csp.asp
4  微计算机信息(高世伟等,基于DCOM技术实现的控制系统,2005,21,1-2,23)
5  张楚等. 电子商务与交易安全[A].   北京:中国法制出版社 276~286
6 冯登国.2001.密码工程实践指南.北京:清华大学出版社.[M] 13~15.

共2页: 上一页 [1] 2


基于知识管理的WebCL学习过程的设计与实现
动态电子商务应用
工商管理 | 工科论文 | 财务管理 | 管理学 | 公共管理 | 财政税收 | 证券金融 | 会计审计 | 计算机 | 法律论文 | 医药学 | 汉语言文学
社会论文 | 工科论文 | 理科论文 | 文化论文 | 艺术论文 | 文学论文 | 哲学论文 | 政治论文 | 英语论文 | 写作指导 | 计算机应用
www.zlunwen.com 找论文网 ® 版权所有 网站地图