设为首页   在线评论   推广技巧   发布求购   免费注册   激活帐号
一卡通世界
当前位置:一卡通世界 >> 技术文章 >> 智能卡 >> 基于智能卡的CSP设计方法和实现流程

基于智能卡的CSP设计方法和实现流程

来源:一卡通世界      2014-11-11 9:45:11

  摘要:智能卡由于其安全性高、携带方便、价格便宜等特点被广泛应用,基于智能卡的CSP也得以迅速发展。在分析微软加密理论的基础上,详细介绍了一种基于智能卡的CSP设计方法和实现流程,应用程序通过CryptoAPI方便、快捷地完成了智能卡提供的一整套加密操作。

  0引言

  智能卡由于安全性高、携带方便、价格便宜等特点被广泛应用于信息加密技术领域,而要在Windows操作系统上使用智能卡完成加密操作,则必须设计和实现基于智能卡的CSP,智能卡从硬件上提供密钥保护,应用程序通过CryptoAPI选择相应的CSP,方便、快捷地完成了智能卡提供的一整套加密操作。目前,基于智能卡的CSP在PKI系统中广泛流行,不同智能卡需要开发基于自身特定的CSP,因此将不同智能卡的CSP统一起来具有广阔的市场前景。

  1CSP简介

  CSP(CryptographicServiceProvider)加密服务提供层,是Microsoft公司用来在Windows平台上提供第三方加密模块的接口标准,它提供一套基于软件或者硬件的加解密服务,包含加密标准和加密算法的实现。作为一个CSP,它包含一个动态链接库DLL文件和一个签名文件,签名文件用于验证CSP,以保证CSP未被非法篡改。 CryptoAPI(CryptoApplicationProgrammingInterface)是PKI推荐使用的一组加密API,它是由操作系统开发商提供给应用程序的开发接口。CryptoSPI(CryptoSystemProgrammingInterface)也是一组API接口,它是由操作系统开发商提供给密码服务开发商的系统接口,其实际应用如图1所示。应用程序的开发者安装CSP后,通过CryptoAPI把来自应用程序的调用交给操作系统,操作系统内部选择指定的CSP,通过CryptoSPI来驱动CSP执行实际的操作,完成加密解密、签名认证、证书导入导出等一系列完整的加密服务。

Crypto API 实际应用

  2基于智能卡的CSP设计与实现

  2.1智能卡的文件系统设计

  一个CSP有一个密钥库,如图2所示。密钥库是用来存储密钥的,每个密钥库中包含一个或多个密钥容器(KeyContainers),而每个密钥容器中包含属于一个特定用户的所有密钥对,CSP利用密钥容器来管理密钥,一般来说,一个密钥容器中有两对公私密钥对,即交换密钥对、签名密钥对。不同智能卡可以建立不同的CSP,应用程序可以通过 CryptoAPI选择相应的CSP以及其中相应的密钥容器来完成智能卡提供的一整套加密操作。

密钥库

  智能卡(SmartCard)是IC卡的一种,它的特点是安全性高、价格便宜、携带方便。它内含有集成电路芯片,本身具有存储能力和计算能力,可以存储私钥和证书,实现RSA、ECC、HASH等复杂的算法,被广泛应用于身份认证、访问控制、密钥存储和算法实现等方面。本设计使用的智能卡是武汉天喻智能卡(Version1.2),根据CSP中密钥容器的结构,对天喻智能卡的文件系统进行的设计如图3所示,其中主控文件(MF)是整个文件系统的根,每张卡有且只有一个MF,它在卡的个人化过程中首先被建立起来,在卡的整个周期内一直存在并保持有效,可存储卡的公共数据信息并为各种应用服务,它所对应的是密钥容器结构中的密钥库。专用文件(DF)是 MF下针对不同的应用建立起来的一种文件,它所对应的是密钥容器结构中的密钥容器;基本文件(EF)是用于存储各种应用的数据和密钥,它存在于MF和DF 下,它所对应的是密钥容器结构中的密钥对和证书。

  2.2基于智能卡的CSP设计

  基于智能卡的CSP设计可以基于软件实现、硬件实现和软硬件结合实现。基于软件实现的CSP,安全性不高;基于硬件实现的CSP虽然安全性高,但是费用昂贵;基于软硬件结合实现的CSP,费用不高、安全性好,这种实现方法的密钥对在智能卡内产生,其私钥不能被导出,利用私钥进行的解密和签名操作也在卡内进行,而对称加密、产生哈希值的操作则由软件完成。本设计采用的是基于软硬件结合实现,HASH算法和对称加密算法的实现采用软件方式,而RSA密钥对和随机数则在智能卡建立完文件系统后由智能卡内部产生和使用。

  CryptoAPI包括初始化函数、密钥生成函数、加解密函数、数字签名验证函数、密钥操作函数和散列函数等25个基本函数,应用程序通过这25个函数来调用CSP模块,完成连接上下文、产生密钥、导入导出密钥、产生哈希值、加密解密、签名验证、销毁密钥和释放上下文等操作。在 CryptoAPI的25个基本函数中CPAcquireContext是最重要的函数,在此接口内可以完成智能卡的连接和初始化工作,调用此接口可以获取指定密钥容器里的密钥句柄,从而对完成之后的加密解密和签名验证工作,使用CPReleaseContext进行释放。在基于智能卡的CSP实现中,需要使用句柄来标记和访问密钥容器和密钥,CSP的上下文对象句柄的类型是HCRYPTPROV,密钥对象句柄的类型是HCRYPTKEY,哈希对象句柄的类型是HCRYPTHASH。在本设计中,CSP的上下文对象句柄指向的是自定义的结构体PROV_CONTAINER,它包含密钥容器名称、密钥句柄、设备句柄等信息;密钥对象句柄指向的是自定义的结构体KEY_INFO,它包含密钥操作的相关信息;哈希对象句柄指向的是自定义的结构体 HASH_INFO,它包含哈希操作的相关信息。

天喻智能卡的文件系统设计

  基于智能卡的CSP设计主要包括上下文的连接部分、密钥对的产生部分、加密解密和签名验证部分。上下文的连接部分主要实现的是连接智能卡、建立智能卡的文件系统;密钥对的产生部分主要实现的是在智能卡内部产生RSA密钥对;加密解密和签名验证部分主要实现的是利用密钥进行加密解密、计算哈希值后进行签名验证。选用RSA作为签名和交换算法、MD5和SHA1作为HASH算法、DES和3- DES作为对称加密算法。根据基于智能卡的CSP软件设计的实际需要,必须依照智能卡的通信机制和安全体制,制定建立文件系统、产生RSA密钥对、公钥加密、私钥解密、签名验证、产生随机数等基本命令,依据CryptoAPI的25个基本函数和智能卡的基本命令,完成基于智能卡的CSP设计。

  2.3基于智能卡的CSP实现

  基于智能卡的CSP设计完成之后,即可进行测试。因为第三方开发的CSP要获取微软的签名才能够应用到其操作系统中,所以为了避免测试过程中每一次修改都要重新获取微软的签名,我们采用的是在所开发CSP的DLL外再加一层DLL壳,由DLL壳调用里面CSP的DLL,由外壳DLL来获取微软签名,来保证修改过的CSP的DLL对签名没有影响。本测试程序采用基于MFC的对话框形式,通过按钮来实现对CSP的DLL的测试,测试结果如图4所示,接着将通过测试后的CSP进行安装,最终实现基于智能卡的CSP设计。

  3结语

  本文依据微软加密理论,建立智能卡的文件系统,设计基于智能卡的CSP,对设计的CSP测试成功后获取微软的签名,接着安装智能卡的CSP,应用程序通过CryptoAPI选择相应的CSP,完成智能卡提供的一整套加密操作,最终安全、可靠,并方便地将不同智能卡的CSP统一起来。(作者简介:许梦华(1984-),女,硕士,武汉瑞达信息安全产业股份有限公司程序员,研究方向为计算机软件开发。)

  参考文献:

  [1]常青,张卡,张其善.基于智能卡的CSP的设计与实现[J].计算机工程与应用,2005(5).

  [2]娄晓晋,陈恭亮,杨树堂.基于USB和SD接口智能卡的CSP设计[J].信息安全与通信保密,2007(1).

  [3]陈由甲,徐家恺.USBKEY软硬件结合的CSP设计及实现[J].科学技术与工程,2007(8).

  [4]聂旻,谭成翔,汪海航.CSP在基于智能卡的移动终端中的开发与应用[J].计算机安全,2008(12).

分享到新浪微博      分享到腾讯微博         责任编辑:苏洁   投稿邮箱:editor@yktworld.com
关于 CSP  智能卡  密钥 的文章
  • 税控收款机专用IC卡应用研究
  • 利用新型CPU智能卡提高电子商务支付安全性
  • Smart COS操作系统技术解析
  • 智能卡与指纹识别技术的结合
  • 基于智能卡的移动支付终端分析与研究
  • 智能卡移动支付发展浅析
  • 基于垂直认证模式的银行卡安全解决方案
    基于垂直认证模式的银行卡安全解决方案
    PBOC/EMV之脱机明文PIN和脱机密文PIN
    PBOC/EMV之脱机明文PIN和脱机密文PIN
    智能卡COS多应用隔离的安全性测试方法
    智能卡COS多应用隔离的安全性测试方法
    基于智能卡COS的电子现金设计与测试
    基于智能卡COS的电子现金设计与测试
    一周点击热点
    相关产品
    最新收录
    新闻   产品   企业   招标   求购
    技术   方案   下载
    关于我们
    网站介绍   广告服务   会员分类   联系方式
    企业推广   产品推广
    Copyright © 一卡通世界网 (粤ICP备11061396号)