新闻中心

EEPW首页>嵌入式系统>设计应用> CSP在基于智能卡的移动终端中的开发与应用

CSP在基于智能卡的移动终端中的开发与应用

作者: 时间:2011-01-04 来源:网络 收藏

的实现分为3个模块:主程序模块、图形界面模块、CSP访问模块

(1)CSP主程序模块

主程序模块是CSP的核心模块,实现CSP中的业务逻辑并以Crypto SPI标准接口形式提供。主程序模块通过调用图形界面模块的相应图形界面实现与用户的交互(在CRYPT—SLIENT标志未设置时)。主程序模块对的访问及数据传送都是通过访问模块来实现的。

(2)CSP图形界面模块

图形界面模块负责CSP与用户的交互实现。主要有卡片初始化时的PIN码设置界面和程序运行中提示用户输入PIN码以验证其合法性的界面。

(3)CSP智能卡访问模块

智能卡访问模块是CSP使用智能卡上服务的实现模块。它负责与智能卡建立连接,数据传输,释放连接等。它接收主程序模块的智能卡访问请求,并根据请求组织相应的APDU发送到智能卡,以及从卡上获取返回的结果,最终将结果数据提交给主程序模块。

将CSP划分成3个模块,可以降低程序各个模块之间的耦合度,实现起来比较灵活。如果需要更改程序界面就不需要去改变CSP主程序模块。同样,当使用另外一种智能卡时,只需要替换相应的智能卡实现模块,而不需要去改变主程序模块和程序界面,这样就可以很方便地将第三方的智能卡实现模块加载进来,实现对多智能卡的支持。

CSP主程序模块以DLL形式提供,是实现CSP的关键,其中的各个类都有具体的功能职责,并且通过组合和关联关系形成一定的层次关系。此外在CSP中,还有其他的辅助函数定义,如块加密时的编码与解码函数等。其类设计如下:

(1)CContext

CContext类对应了一个用户上下文对象,在逻辑上相当于密钥库。它通过组合关系包括了CSP中的其他类对象,并通过这些类对象来进行相应的操作。C C ontext作为用户上下文对象,是提供Crypto SPI中23个接口函数实现的对象。

(2)C Container

CContainer类对应了一个密钥容器,一个用户上下文往往包含多个密钥容器。C Container对象中会缓存其包括的证书信息,这里缓存交换密钥对证书和签名密钥对证书两个证书。

(3)CCard

CCard类代表了扩展卡类型。在这个类中封装了所有对卡的安全操作,包括验证、加解密、存储管理等。一个CCard对象会缓存对应扩展卡上的所有密钥容器对象,这样要访问密钥容器的相关信息就会变得方便、快捷。

(4)CRSAProvider

CRSAProvider类是用于调用系统提供的CSP的。它负责获取系统提供CSP的句柄,利用此句柄调用相关的功能实现以及释放得到的句柄。

(5)CPPManager

CPPManager类也是一个辅助控制类,它的定义只是为了使得程序更加清晰。它的功能是根据CPGetProvParam中参数的不同值取得CSP的相关信息。

(6)CHandleTable

CHandleTable类是一个辅助存储类,它用于存储CSP中密钥容器等对象的句柄。它采用Hash表结构来存储对象句柄,并且提供了相应的增加、删除、读取等功能。CSP编写测试完成后,必须要让微软对其CSPDLL进行签名,这样该C SP才能装进操作系统内。这步比较简单, 只需要将其DLL与一个资源描述文件作为附件发往cspsign@microsoft.com就可以了,签名周期一般为3天。完成签名后,CSP就可以安装到系统中工作了。在Windows Mobile 5.0系统中,需在注册表中注册该CSP,CSP安装完成,以后可以通过Crypto API接口调用CSP提供的安全服务了。

4 结束语

本文不仅对微软加密体系进行了详细的分析,而且结合安全系统,对智能卡上的CSP的进行了充分的介绍和分析。CSP通过标准的Crypto SPI接口嵌入到微软加密体系中,使用户可以通过Crypto API接口来使用智能卡上所提供的高安全性的加密服务,来满足日益增加的网络安全需求。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭