密码中间件CAPICOM 的应用研究.doc

上传人:仙人指路1688 文档编号:2401885 上传时间:2023-02-17 格式:DOC 页数:12 大小:97.50KB
返回 下载 相关 举报
密码中间件CAPICOM 的应用研究.doc_第1页
第1页 / 共12页
密码中间件CAPICOM 的应用研究.doc_第2页
第2页 / 共12页
密码中间件CAPICOM 的应用研究.doc_第3页
第3页 / 共12页
密码中间件CAPICOM 的应用研究.doc_第4页
第4页 / 共12页
密码中间件CAPICOM 的应用研究.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《密码中间件CAPICOM 的应用研究.doc》由会员分享,可在线阅读,更多相关《密码中间件CAPICOM 的应用研究.doc(12页珍藏版)》请在三一办公上搜索。

1、密码中间件CAPICOM 的应用研究 密码中间件 CAPICOM 的应用研究 1 2 3谭文学 张健钦 王细萍 (1 湖南文理学院计算机科学与技术系 3 湖南文理学院经济与资源环境系 常德 415000, 2 中国科学院遥感应用研究所北京 100101) 摘 要 CAPICOM 是一个 Windows 平台的密码中间件, 它以 COM 对象的形式封装了对 CSP 的密码函数调用,使获取密码服务更方便,分析了安全电子文档管理系统的安全需求,研究 CAPICOM 在系统中的应用,讨论 CAPICOM 的数据结构和 COM 对象,指出使用标准接口的密码中间件能使应用零开销地本地化 CSP。 关键字

2、CAPICOM 密码服务 CSP 文档管理 中图分类号:TP309.7 文献标识码:A Researching of Crypto Middle-ware CAPICOM Application 1 2 3Tan Wenxue ZhangJianqin WangXiping 1,3HuNan University Of Arts And Science ,HuNan, Changde 415000 2 Institute of Remote Sensing Applications,Chinese Academy of Sciences,Beijing China 100101 Abstrac

3、t CAPICOM is one windows platform crypto middle ware, which wrapped calling of cryptoAPI functions provided by CSP in the form of COM object ,it facilitates getting crypto service. Analyzed the security requirements of electronic documents management system, studied application of CAPICOM in the sys

4、tem, discussed the data structure and the COM class of CAPICOM, pointed out using crypto middle ware with standard interface coming to the end of zero cost to localize CSP which served for applicationKeywords CAPICOM;Crypto Service;CSP;Documents Managing1 CAPICOM 概述信息安全性是很多软件必须具备的品质,密码技术是信息安全的基础,调用密

5、码功能实现安全性是软1件开发过程中的常用方法。 Windows 操作系统采用分层的加密体系模型 CSP 密码服务提供者(Cryptographic Service Provider)架设系统安全。CSP提供了齐全的具有密码功能的 Win32API函数供程2序员调用,称为 CryptoAPI。然而,调用 CryptAPI 完成密码操作仍然相当复杂。 使用 COM,开发人员可3以把注意力集中在解决用户所需要的问题上.而不用关心网络协议等底层结构的细节。 微软提供了CAPICOM 组件,它以 COM 对象的形式封装了上述的复杂操作,使用它获取密码服务更方便。因为在不同的开发环境中,往往先要对 API

6、 函数进行某种封装或转换,这增加了使用难度,CAPICOM 以中间件的形式提供了一个标准的密码应用层接口,是介于应用与 CSP 之间的中间层,使得应用与 CSP 具有逻辑独立性。 1在工作时,CAPICOM 按一定顺序列检索 CSP。首先检查缺省 CSP是否支持用户指定的算法及密钥长度,如果失败,则搜索系统提供的 CSP,并判断其是否支持指定的算法和密钥长度,直至遍历完所有CSP。两者关系如图 1 所示。 2 主要功能 目前,CAPICOM 共有两个版本:1.0版和 2.0 版。其中,后者在前者的基础上,提供了一些额外的功3能。 CAPICOM v1.0 提供如下功能: 1.生和验证 PKCS

7、#7 格式的数字签名;2.使用证书加密/解密数据;3.用口令加密/解密数据。CAPICOM v2.0 额外提供如下功能: 1.生和验证代码签名;2.支持文件形式的证书;3.快速证书搜索;4.支持 AES算法; 3 安全电子文档管理系统 3.1 应用场景和目标。 安全电子文档管理系统是为某政务中心开发的管理软件,是其电子政务的基础应用模块。在企事业单密钥管理应用 数据信封应用 数据摘要应用数据加密应用 数据签名应用 证书运算应用CAPICOMCSP1 CSP2 CSP3图1:CSP和CAPICOM的体系结构位的生产经营过程中,电子文档的管理和应用是运作效率的关键,在全球化,网络化,信息化的经营角

8、逐中,企业需要畅通地流转各类文档,或是财务计划,或是技术方案,或是营销策略,同时,必须保证信息的完整性和秘密性,网络用户的身份认证和密钥协商是密码通信的前提。文档的高效率管理和应用是系统的目标,在追求这个目标的过程中,文档的信息安全性如得不到保障,将使企业蒙受重大损失。 仅就应用而言,它有很多业务需求如:用户管理,文档管理,日志管理,系统管理,和文档数据库管理,本文当中,重点讨论在密码服务和安全性上的需求,通过实施安全性措施,确保在文档的生命周期当中,在文档的运动过程中,敏感信息不会因数据的泄漏而丧失安全性。 3.2 系统开发环境 系统基于 Windows 2000,VC 60,SQL SER

9、VER 2000,Window CS 证书服务器(Certificate Server)开3发。其中,SQL SERVER用作文档数据库服务器,存储用户信息和文档; Certificate Server是微软提供的证书服务器,利用它建立企业 PKI 平台,在 PKI 平台环境下,建立基于数字证书的安全业务应用。 3.3 密码功能设计 传统的文件加密是基于口令,这种方式的加密只适用密文保存,在用于密码通信时必须双方协商密钥,又称口令,参与通信的主体数量庞大时,这很不现实,同时,每一主体必须管理数量很大的口令,实际应1用难以成行。 一份文档要密发给多个接收者,需要多次加密,多次发送,CPU时间和带

10、宽浪费很多,不适用于群发;密文一般没有签名,在传输中的篡改或信道错误都无法检测,只有等到解密发现一片乱码才明白。 基于 X.509证书的密码通信能有效地解决这些问题。数字证书本质上是经过签名的可信的公钥,它既可用于验证数字签名,也可用于加密数据,因证书的颁发策略而定。用于加密时,通常的做法是选定接收者证书,验证其可用性,再随机生一个对称密钥,如 AES密钥,加密数据,再用公钥加密此随机对称密钥,附于密文数据后面,一起发送给接收者,接收者再用私钥解密对称密钥,再用对称密钥解密密文,得到消息。要发送给多个接收者,则只要将对称密钥用多个接收者的公钥加密多份附于密文后面,对于数据的处理,则只要一份,大

11、大缩短了 CPU 时间和网络时间。对称算法具密码运算速度快等优势,公钥算法解决了密钥协商的问题,两者合用巧妙地处理在基于口令方法中棘手的问题。为了防止的传输中的数据篡改,发送者可用私钥对数据进行签名,接收者可以于解密前进行数据的验证,确认数据的来源可信性和完整性。 4.CAPICOM 的应用 在文档管理系统中,证书的操作主要有:证书库的打开,证书检索,证书验证,证书加密数据和数字签名 CryptoAPI只提供了基本的密码函数,对于数字证书很少涉及,而 CAPICOM 组件对这些高层应用图 2 十六进制形式密文和解密结果图3 签名过程 服务提供了方便的接口。 4.1 证书操作 WINDOWS 平

12、台中,证书存于证书库 CertStore 的结构中,使用时必检索证书库,取得证书句柄,获得证书的基本信息如:有效期,公钥等,同时,还要对证书的有效性进行验证。私钥存于密钥容器中(Key 3Container),有对应私钥的证书,还存有私钥容器的句柄。 默认的证书的库有 4 个:Trust,My,CA,Root,其中 My存放了个人的证书,其中还有私钥容器句柄,Trust 存放了通信群体中其它人的证书,仅公钥。证书的管理必须用到 CAPICOM 的几个接口:IStorePtr 指向证书库,ICertificates2Ptr 指向证书集合,ICertificatePtr指向证书,三个接口形成操作证

13、书的三级索引。4.2 证书参与加密运算 证书加密实际是用接收方证书的公钥加密,过程有两步:用公钥加密对称密钥,用对称密钥加密数据。CAPICOM 定义的对象 IEnvelopedDataPtr对两步进行了包装,对于编程人员是透明的。 1.定义数据信封 IEnvelopedDataPtr pEncryptIEnvelopedData_uuidofEnvelopedData; IEnvelopedDataPtr pDecryptIEnvelopedData_uuidofEnvelopedData; 2.添加接收者证书 4如果消息要密发给多个接收者,只要将 ADD函数调用多次,添加多个接收者的证书即

14、可。 pEncryptIEnvelopedData-Recipients.GetInterfacePtr-AddmyCert; 3.设定算法参数和对称密钥长度 CAPICOM 对密码算法的标识标准和密钥长度进行了定义,以常量形式给出。 这里以 RC4 为例。 pEncryptIEnvelopedData-Algorithm-Name CAPICOM_ENCRYPTION_ALGORITHM_RC4 ; pEncryptIEnvelopedData-Algorithm-KeyLength CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS; 4.加密 bstrtempSy

15、sAllocStringByteLenHello Capicom!,14;_bstr_ta.Assignbstrtemp; pEncryptIEnvelopedData-Content_bstr_ta;bstrciphertextpEncryptIEnvelopedData-Encrypt CAPICOM_ENCODE_BINARY; 5.取出密文 bstrtemp 是 BSTR 指针,指向双字节的字符串,即以两个 Bytes 来存一个 ASCII 字符,_bstr_t 类型对双字节字符串进行了对象装箱,字节数是字符数据量的两倍。加密Hello Capicom!后,以字符形式看密文则呈乱码形式

16、。二进制形式则如图 2 所示。 PCHAR pCiphertextNULL;pCiphertextPCHARbstrciphertext;printf密文字符流:n; PVOID pchartempmalloc24; for int k0;kbstrciphertext.length*2;k+ ifk%240 memcpyPVOIDpchartemp,pCiphertext,24; pCiphertext+; 6.解密 pDecryptIEnvelopedData-Decryptbstrciphertext;printf解密后:%sn, PCHARpDecryptIEnvelopedData-

17、Content.copy;结果如图 5 所示。 4.3 数字签名和验证 签名是对消息哈希值进行签名,先算出数据的哈希值,再用签名者的私钥对哈希值签名。此步骤中,会检索 MY证书库的证书,找证书对钥的私钥的容器句柄,再找到私钥,这对于程序员是透明的。签名和数据可以“依附”发送也可“独立”发送,接收者收到数据和签名后,重算数据的哈希值,将哈希值和数据的签名送进验证运算将会得出验证结果。CAPICOM 组件,用接口 ISignedDataPtr和 IHashedDataPtr来封装此功能。 1.定义哈希对象和设定哈希算法 IHashedDataPtr pIHashedDataPtr_uuidofHa

18、shedData; pIHashedDataPtr-Algorithm CAPICOM_HASH_ALGORITHM_SHA1。 2.哈希和取哈希值 哈希对象的哈希值是字符串形式的以十六进制的格式返回,SHA-1 算法的哈希值为 160 位,即 20 字节,表示成 HEX 格式一个字节表示为两个字符,共 40 个 ASCII 字符,再用双字节字符表示。则为 40 个宽字符,80字节,所以哈希值的字节长度变成了 80 字节。如图 3 所示。 bstrtempSysAllocStringByteLenHello Capicom!,14;_bstr_ta.Assignbstrtemp; PCHAR

19、pcharNULL;pIHashedDataPtr-Hash_bstr_ta;bstrHashValuepIHashedDataPtr-Value; 3.签名 签名加入时间戳和签名者信息,还要编码成一定的格式,有时还加入了签名者的证书,故签名消息的长度取决于多个因素。而不只取决签名者的公钥长度。如以二进制编码为格式则为 898 字节,如图 6 所示。 ISignedDataPtrpISignedDataPtr_uuidofSignedData;pISignedDataPtr-ContentpIHashedDataPtr-Value; bstrSignaturepISignedDataPtr-S

20、ign0,TRUE,CAPICOM_ENCODE_BINARY; 4.验证 pISignedDataPtr-ContentpIHashedDataPtr-Value;pISignedDataPtr-VerifybstrSignature,TRUE, CAPICOM_VERIFY_SIGNATURE_ONLY; 如果验证不通过则会抛出异常,验证失败。如图 3 所示。 5.结束语 信息安全上升到国家利益,密码算法往往需要本地化,而算法模块 CSP 的变动会对直接调用 CSP 的4应用产生藕合变动,这是应用开发所不愿见到的。有了 CAPICOM 中间件, 可以通过本地化 CSP,实现本地化的密码算法

21、,将其设定为默认的 CSP,只要其遵照 CSP的规范,可以和 CAPICOM 无缝挂接,而对上层的应用不要做任何修改。做到密码服务消费和密码服务生产的分隔与独立,从而实现 CSP对于应用的零开销本地化。文章创新性地将 CAPICOM 密码中间件技术和电子文档管理应用相结合,很好地满足了系统的信息安全保密需求,解决应用层安全需求和底层密码服务模块本地化之间的藕合矛盾。投稿日期(2006-03-24) 基金项目:863计划项目(2002AA135230);湖南文理学院基金项目JJQD05047。 作者简介:谭文学(1973-),男,湖南湘乡人,硕士,讲师,高工,方向:计算机网络与信息安全技术。联系人:谭文学

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号