卷1
前面说过了,现在的人基本都很忙。没有所谓的闲功夫,从外到内,从下到上了解所有内容。
所以这里直接把 APPLICATION 这位 TOP 先请出来给大家见见面。
下面说说卷1。
问:卷1谈什么?
答案是,别着急。卷1 简要介绍上面的金字塔中的各个层次。
看看 APPLICATION 是如何调用 (EXPLOIT) 它的下层。也看看下层的生活状态。
下面就简要地说说。
ICC
处于金字塔的最底层,读卡器都可以管制它。今天可以用这张,明天可以用那张。
读卡器经常很没有素质地对卡卡们说: “ 卡多的是,我为什么要用这张 ? ,给我换 ” 。
到底 ICC 是什么?
即智能卡( Smart Card ), PC/SC 规范中的智能卡指的是符合 ISO/IEC-7816 协议
规定的接触式 IC 卡。包括异步通信 IC 卡,同步通讯 IC 卡和非接触式 IC 卡 。
如果仔细查查 ICC 是怎么制作的,就会发现比读卡器复杂。
IFD
IFD ( Interface Device ):即智能卡读写器( Smart Card Reader )是智能卡
的读写设备,它的作用是在 IC 卡和 PC 机之间建立一个物理的连接。 IFD
给 IC 卡提供直流电源、时钟信号并与 IC 卡通过一个半双工的串行通信口
进行信息交互。它必须遵循 IS07816 所规定的与智能卡的通讯协议。 IFD
与 PC 之间的接口有多种选择如: RS-232 、 PS/2 、 USB 、 PCM/CIA 等 。
读卡器和 PC 或终端的关系很暧昧,它们有很多关系。或者说 PC 很开放,
不是嘛? PC/SC 是个开放标准。 PC 可以和 RS-232 读卡器过,也可以和
PS/2 读卡器过,或者 USB 读卡器过等等。虽说不上后宫三千,也算前拥
后触,左拥右抱。读卡器大声高歌 :“ 有美女作伴,不怕伶仃,冷眼看
那世间情 …”
知道了。读卡器可以有很多种和 PC 或终端连接的型态。
IFD HANDLER
智能卡读写控制器是 PC 上的与 IFD 通信的底层软件。为了
保证 PC/SC 的上层应用对智能卡访问的设备无关性,读写器驱动( Reader
Handler )实现操作系统和特定的读写器设备之间的功能映射,智能卡读
写控制器在系统中以 API 函数库的形式提供给高层的软件开发人员使用,
它包括一些基本的功能,如:智能卡的插入检测 / 智能卡的上电、下电、
复位以及向智能卡发送 APDU 命令并接收智能卡返回的数据,它对上层软
件屏蔽了 IFD 的通信协议 。
尤其是最后的屏蔽了 IFD 的通讯协议。虽然 PC 或终端那么花心, IFD 泛滥
成灾, IFD HANDLER 但是做了很多工作,让 ResourceManager 感觉到
“ 四海升平,国泰民安 ” 。
这也是 OO 精神的一种体现,用 “ 面向接口编程,而不是面向实现编程 ” 。
在 IFD HANDLER 这里,加入了两个新成员,它们在 PCSC1 中没有露面。
一个是 Slot Logical Devices ,一个是 Functional Logical Device.
问:什么?这么复杂,受不了。
答案是,确实麻烦些。不是嘛,把简单的问题复杂化,倍显专业。
Slot Logical Devices 插槽逻辑设备提供与智能卡的通讯信道。对于接触式读
卡器而言,插槽逻辑设备的数量和读卡器本身的插槽数量相同。
Functional Logical Devices 为 IFD 的扩展功能提供接口,比如:显示屏和小
键盘。
现在,有不少读卡器厂商提供了针对各自读卡器的 IFD-HANDLE 驱动。
ICC ResourceManager
咳。总算到了 Manager 层。
据说是核心,快看看。
智能卡资源管理器在 PC/SC 体系中处于智能卡服务提供者之下 IFD 之上,负
责管理系统中注册的 IFD 和 IC 卡。
智能卡资源管理是 PC/SC 规范中的关键部分,它负责管理系统中与 IC 卡相关
的资源并使得应用软件获得对系统中的 IFD 和 IC 卡的访问。智能卡资源管理器被
认为是 PC/SC 体系中的一个系统级的成员,它应当由操作系统供应商将其作为一
个系统组件提供 。
智能卡资源管理器的作用体现在以下几个方面 :
首先,解决在多 IFD 和多 IC 卡系统中的三个基本问题:
1 、管理系统中注册的 IFD 使其可以被应用软件访问。
2 、管理已知类型的 IC 卡及其接口和相应的服务提供者,使其它应用可以
获得这些信息。
3 、通过跟踪 IC 的插入和移除动作精确的维护 IFD 中的可用 IC 卡的信息。
其次,通过共享或独占的绑定 IFD 的方式来控制对 IFD 资源的分配和管理。
最后,通过访问 IC 卡中提供的服务来支持交易的独占性。目前的 IC 卡都是单
线程的设备,一次交易往往需要几条指令才能够完成,交易允许多条指令不间断
的执行以确保中间过程的完整性。
Service Provider
现在麻烦了。因为服务提供者在上一个版本 PCSC1 中,只有两种, ICCSP , CSP 。
识时务者为俊杰,越来越多的 Service Provider 与 APPLICATION 这位大爷搭上了
关系。
The following is the kiss-asses:
ICCSP :包括 ICCOSSP , ADSP , ADSPL , Card Recognition System , CSP
IFDSP :只有 IFDSP
原来第一个版本的单独的 ICCSP ,不复存在。实际上被重构了,因为该类
有太多的责任。对应现实中的左迁,分治等。
APPLICATION 成功了,但是成功也给 APPLICATION 带来了很多亲戚。
这么多,请让我一个一个道来。
ICCOSSP
原来有通用的文件访问,认证服务,现在为了满足特定的需求
增加了额外的接口 。 Card Recognition System 将重用 This guy. 你别嫉妒,
朝中无人不做官。人家可是用来映射特别的 IC COS 功能的。
ADSP
用来映射卡上的 APPLICATION 功能的。
ADSP Locator
引入它是为了让 Resource Manager 动态分配 ICC Service Providers 。
ADSPL 本身也是个 Service Provider ,被 Resource Manager 加载用来提供
卡上应用列表
获取正确的对应于所选卡上应用的 ADSP 。
Card Recognition System
PCSC2 使用到了扩展的 ATR ,也就是 ICC Info Structure 。
Resource Manager 解释 ATR 指令,从中获取 command ,回送该 command 到 ICC ,
从而获取到 ICC Info 。接着从 ICC Info 获取 ADSPL 参考,从而加载 ADSPL 。
Resource Manager 可以使用 ADSPL 从卡上获取应用列表。
接着可以从应用列表中选择需要的卡上应用并加载对应的 ADSP 和卡上应用交互 。
CSP
这位 guy 和加密有莫大的关系。你想利用 ICC 提供的加密功能吗?就靠它吧。
CSP 从高层编程接口封装了智能卡提供的加密功能,目的是向 PC 上运行的
应用程序开放可用的加密功能,这些功能被定义成几大类通用用途的加密服务
密钥产生类;
密钥管理类;
数字签名类;
散列 ( 或消息摘要 ) 类;
块加解密服务类;
密钥导入和导出类。
IFDSP
这位向 APPLICATION 提供 Secure PIN, Display, User confirmation, and Generic user entry
功能 [3] 。
ICC-Aware Application
应用软件是针对不同的智能卡应用环境以及应用需求而编制
的软件系统,如 EMV 卡、 Health 卡等。智能卡是单线程、单
任务、多应用的器件,应用软件与智能卡之间的通信是一种端到端
的通信模式 。
卷1结束
问:能不能快点,应用是最要紧的,快说说那些有直接联系的 SP ,还有 ResourceManager 。
要调用它们。
答案是,卷6和卷5。也对,结果是重要的,过程是次要的。。《尚书》上说: “ 孰恶孰美?成者为首,
不成者为尾。 ” 奥运金牌首次获得者是在获得金牌后出名的,还是出名后获得金牌的?是出名后给人做广告,还是因为给人做广告而出名?在这个浮躁的现实中,随波逐流吧。