第一部分 智能卡背景及基础知识 1
第一章 智能卡程序设计 3
1.1 智能卡软件 4
1.1.1 主机软件 4
1.1.2 卡软件 4
1.1.3 主机软件与卡软件的集成 5
1.1.3.1 主机程序 6
1.1.4 高级语言卡程序 6
1.1.5 汇编语言智能卡程序 7
1.1.6 智能卡软件安全性 7
1.2 智能卡操作系统 8
1.3 智能卡文件系统 8
1.4 智能卡通信 9
1.5.2 智能卡中央处理器 10
1.5.1 智能卡存储系统 10
1.5 智能卡硬件 10
1.5.3 智能卡输入/输出系统 11
1.6 智能卡系统设计 11
1.6.1 数据安全性 11
1.6.2 数据完整性 12
1.7 智能卡系统结构 12
1.8 小结 13
第二章 智能卡的物理特性 14
2.1 卡里有什么 15
2.1.1 集成电路芯片 15
2.1.1.1 尺寸 16
2.1.1.2 宽度 16
2.1.1.3 存储器 16
2.2 生产过程 17
2.1.2 协处理器 17
2.1.3 安全特性 17
2.3 智能卡应用软件开发 19
2.3.1 掩码开发 19
2.3.2 代码开发 20
2.3.3 芯片模拟程序 20
2.3.4 芯片仿真器 20
2.3.5 协议分析器 20
2.3.6 接口装置(读卡机) 20
2.4 小结 21
第三章 智能卡的一些基本标准 22
3.1 卡的ISO、IEC和ANSI标准 22
3.1.1 身份卡的物理特性 23
3.1.2 身份卡信息的解码 24
3.1.3 身份卡的商业模型 25
3.2 智能卡标准 26
3.2.1 智能卡的特性 27
3.2.2 其他智能卡标准和规范 34
3.3 小结 36
第四章 智能卡命令 37
4.1 链路级协议 37
4.1.1 T=0协议 38
4.1.2 T=1协议 42
4.2 应用级协议 43
4.2.1 ISO 7816-4 APDU 44
4.2.2 文件系统API 45
4.2.2.1 主文件特性 46
4.2.2.2 专用文件特性 46
4.2.2.4 Select File命令 47
4.2.2.3 基本文件特性 47
4.2.2.5 Read Binary命令 48
4.2.2.6 Write Binary命令 48
4.2.2.7 Update Binary命令 48
4.2.2.8 Erase Binary命令 48
4.2.2.9 Read Record命令 48
4.2.2.10 Write Record命令 49
4.2.2.11 Append Record命令 49
4.2.2.12 Update Record命令 49
4.2.2.13 Get Data命令 49
4.2.2.14 Put Data命令 49
4.2.3 安全性API 49
4.2.3.4 Get Challenge命令 50
4.2.3.3 External Authenticate命令 50
4.2.3.2 Internet Authenticate命令 50
4.2.3.1 Verify命令 50
4.2.3.5 Manage Channel命令 51
4.2.3.6 Envelope命令 51
4.2.3.7 Get Response命令 51
4.3 小结 51
第五章 Schlumberger Multiflex智能卡 52
5.1 激活智能卡:复位与对复位的应答 52
5.2 目录与文件 53
5.2.1 选择目录 53
5.2.2 选择基本文件 56
5.2.3 密钥与密钥文件 59
5.2.4 建立PIN文件及修改外部确认密钥文件 61
5.2.5 记录文件与查询 63
5.2.6 循环文件与电子钱包 64
5.3 Multiflex命令 65
5.3.1 保护方式命令 66
5.4 内部与外部鉴别 67
5.4.1 鉴别状态和鉴别状态转换 68
5.5 追踪EEPROM用途 69
5.6 小结 70
第二部分 智能卡软件开发 71
第六章 智能卡软件开发工具 73
6.1 主机软件开发工具 73
6.1.1 智能卡编辑器 73
6.1.1.1 Strategic Analysis公司的EZ格式化器 74
6.1.2 智能卡系统、基本组织和联系方法 78
6.1.2.1 将智能卡加到网络应用中 79
6.1.3 智能卡软件开发工具和应用程序接口 80
6.1.3.1 EZ Component开发工具 81
6.1.4 智能卡读卡机接口 82
6.1.4.1 Aladdin公司的产品ASESoft微处理机APIs 83
6.1.4.2 Tritheim公司的SmartPort产品 84
6.1.4.3 高级卡系统ACR20 85
6.1.4.4 Protekila智能卡读卡机库 85
6.1.4.5 Cherry公司的带有智能卡读卡机的G80-1500键盘 85
6.2 智能卡软件开发工具 87
6.2.1 汇编程序和编译程序 88
6.2.2 模拟程序和调试程序 89
6.2.3 模拟程序和测试程序 91
6.2.4 智能卡操作系统 92
6.3 各种工具 94
6.4 小结 95
第七章 读卡机端应用编程接口 96
7.1 PC/SC 98
7.1.1 PC/SC API 99
7.1.2 Multiflex SSP 100
7.1.3 MULTOS 105
7.1.4 Open Card Framework(开放智能卡结构) 105
7.2 EMV 96 105
7.2.1 EMV命令 107
7.2.2 数据确认和数字证明 107
7.2.3 Visa Integrated Circuit Card规范 108
7.2.4 SET 2.0和Visa开放技术平台 108
7.2.5 C-SET 108
7.2.6 IATA 791/20.204 109
7.3 加密智能卡 109
7.3.1 加密智能卡命令 110
7.3.2 DCE个人安全模块API 110
7.4 小结 111
第八章 卡端应用编程接口 112
8.1 编程注意事项 112
8.1.1 假冒卡 112
8.1.2 编写卡端软件中特殊问题 113
8.1.3 存储器 113
8.1.3.1 随机存储器(RAM) 113
8.1.3.2 固定存储器 114
8.1.3.3 只读存储器 114
8.1.3.4 软件掩码 115
8.1.4 撤卡 115
8.1.5 测试与调试 116
8.1.6 链接与加载 116
8.1.7 文件设计 117
8.2 基于标准的APIs 118
8.1.8 读卡机操作 118
8.1.9 读卡机通信 118
8.2.1 ISO 7816-4标准 119
8.2.2 GMS11.14标准 119
8.3 自动售货机API 120
8.3.1 Schlumberger公司的面向顾客的系统 120
8.3.2 MULTOS 121
8.4 Java卡 121
8.4.1 Java卡API的发展 122
8.4.2 Schlumberger公司的Java卡1.0 API 122
8.4.3 Schlumberger公司的Cyberflex 2.0核心版智能卡API 130
8.4.3.1 通信 132
8.4.3.2 文件管理 132
8.4.3.3 安全性 133
8.4.3.4 应用 134
8.4.4 JavaSoft的Java卡2.0版API 135
8.5 小结 136
第九章 智能卡及其安全性 137
9.1 安全系统的目标和特征 138
9.1.1 鉴别 138
9.1.2 授权 138
9.1.3 保密性 139
9.1.4 完整性 139
9.1.5 肯定性 140
9.2 系统组成部分 140
9.2.1 智能卡 140
9.2.2 持卡者 140
9.2.4 终端 141
9.2.5 个人计算机 141
9.2.3 卡发行商 141
9.2.6 网络 142
9.2.7 应用软件 142
9.3 机制 142
9.3.1 物理安全 142
9.3.1.1 处理器和内存结构 142
9.3.1.2 抗损包装 143
9.3.2 鉴别 143
9.3.2.1 对称密钥鉴别 143
9.3.2.2 非对称密钥鉴别 144
9.3.3 完整性 146
9.3.3.1 单向Hash码 146
9.3.3.3 信任链 147
9.3.3.4 认证授权 147
9.3.3.2 数字签名 147
9.3.3.5 证明 148
9.3.4 授权 148
9.3.4.1 访问控制表(ACL) 148
9.3.4.2 功能表 149
9.3.5 保密性 149
9.3.5.1 块加密 150
9.4 小结 150
第三部分 智能卡应用举例 151
第十章 聪明智能卡程序 153
10.1 聪明智能卡的故事 153
10.1.1 使用“聪明顾客”的零售商 154
10.1.2 使用聪明顾客的方案 154
10.2 高级设计 155
10.3 文件层 155
10.3.1 主文件 156
10.3.2 持卡者个人数据文件 157
10.3.3 Smart Commerce Solutions卡管理文件 157
10.3.4 零售商外部确认文件 157
10.3.5 频繁购买点文件 157
10.3.6 积累购买文件 158
10.3.7 需要清单文件 158
10.3.8 文件尺寸 159
10.4 卡安全体系结构 160
10.5 个人化聪明卡 161
10.6 Smart Commerce Solutions Web站点和Smart Commerce Solutions应用程序 162
10.6.1 聪明卡浏览器程序 163
10.7 Harvest Festival应用程序 163
10.8 Scrivener s Corner应用程序 164
10.9 Smart Commerce Solutions聪明卡管理实用程序 165
10.10 小结 169
第十一章 Flexcash卡:一个电子商务智能卡应用 170
11.1 例子:电子硬币、电子纸币和电子美元 171
11.2 FlexCash智能卡程序的设计 171
11.3 FlexCash卡监控程序实现 172
11.4 FlexCash卡浏览器和编辑器 175
11.5 E-Bucks电子现金协议及实现 183
11.5.1 E-Bucks电子现金协议 183
11.5.2 电子美元(E-Bucks)卡端代码 185
11.5.3 电子美元读卡机端代码 186
11.6 小结 187
第四部分 附录 189
附录A ISO/IEC 7816-4命令集 191
附录B Multiflex命令集 206
词汇表 226