声明:本规范是用来学习GP规范的爱好者交流用,并无意侵犯GP规范版权。如有转载,未经本人同意,法律后果自负!
此规范是GP V2.1.1,本人翻译过来的。
第一部分 简介
1. 简介
GP是一个由支付与商业领域的大公司、政府部门以及卖主团体主导的一个组织,它是第一个促成跨不同行业的总的智能卡规范的组织。它的目标就是减少智能卡在跨不同行业,不同应用之间的潜在障碍。这样的话,智能卡发行商将有在各种卡、终端及后台系统中选择的自由。
如果真能发挥智能卡的潜在价值,那么使用者将会被其广泛的功能所赞叹。比如,你可以用手机上的SIM卡,通过网络进行消费,而且绝不逊于计算机。此外智能卡还有成本低和多应用的优势。
从九十年代中期开始,通过引入为应用开发的开源系统规范,在芯片卡行业发生了一系列重要的突破。在这一领域处于领导地位的有三项主导技术:Java Card、Windows Powered Smart Cards以及MULTOS。这些技术规范在芯片卡的多应用方面做出了极大贡献,例如公共程序标准允许应用协调卡不同的具体实现。
通过开放平台的倡议,Visa和GP共同致力于芯片卡领域,发表了至关重要的芯片卡标准(硬件中立,卖主中立以及应用独立的卡管理规范),这个新规范提供了保护芯片卡系统投资重要方面的公共安全和卡管理框架。
GP为卡发行商定义了灵活而强大的规范,这是为卡发行商创建多应用的芯片操作系统以满足商业需求的不断发展。规范允许卡发行商选择当下用的卡技术而且也支持迁移,如果有必要的话,对于将来选择的不同技术在结构上也会没有重要的影响。
规范所描述的GP规范必须应用于GP智能卡的实现上。
1.1 针对的读者
此规范主要针对的读者是卡制造商和通过GP规范开发应用程序的程序员。虽然此规范定义了卡组件、命令接口、处理次序以及不同行业间的公共接口,但并没有细化因不同行业而差异的底层安全实现。
此规范的读者也包括想对共有的安全概念和多应用卡管理系统了解的人。
1.2 引用的相关规范
标准/规范 | 描述 |
ANSI X9.52 | Triple Data Encryption Algorithm Modes of Operation, draft, 1996 |
CAMS v3.0 June 2000 | Multi Application Smart Card Management Systems Global Platform Function Requirements |
FIPS PUB 46-3 | Federal Information Processing Standards Publication 46-3, Reaffirmed 1999: Data Encryption Standard (DES): U.S. Department Of Commerce/National Institute Of Standard And Technology |
FIPS PUB 180-1 | Federal Information Processing Standards Publication 180-1, Reaffirmed 1999: Data Encryption Standard (DES): U.S. Department Of Commerce/National Institute Of Standard And Technology |
ISO/IEC 7816-4:1995 | Identification cards – Integrated circuit(s) cards with contacts – Part 4: Inter-industry commands for interchange |
ISO/IEC 7816-5:1994 | Identification cards – Integrated circuit(s) cards with contacts – Part 5: Numbering systems and registration procedure for application identifiers |
ISO/IEC 7816-6:1996 | Identification cards – Integrated circuit(s) cards with contacts – Part 6: Interindustry data elements |
ISO/IEC 8825-6:1998 | Information technology – ASN.1 encoding rules: Specification of Basic Encoding Rules(BER), Canonical Encoding Rules(CER) and Distinguished Encoding Rules(DER) |
ISO 8731-1:1987 | [IS8731-1]Banking – Approved algorithms for message authentication-Part 1:DEA |
ISO/IEC 9797:1994 | [IS9797]Information Technology – Security techniques – Data integrity Mechanism using a cryptographic check function employing a block cipher algorithm |
ISO/IEC 10116:1997 | [IS10116]Information Technology – Modes of operation n-bit block cipher algorithm |
ISO/IEC 10118-3:1998 | [IS10118-3]Information technology – Security techniques – Hash functions – Part3: Dedicated hash functions |
Java Card 2.1.1, 2.2 | Go to the following web site for Java Card documentation: |
PKCS#1 (RFC 2437) | PKCS #1 v2.0: RSA Cryptography Standard, RSA Laboratories, October 1998(RFC 2437) |
Windows-Powered Smart Cards | Go to the following web site for more information on Windows for Smart Cards: http://www.microsoft.com |
1.3 术语及其定义
术语 | 定义 |
应用 | 当被安装并选择的可执行模型实例 |
应用数据协议单元(APDU) | 读卡器与智能卡之间的标准通信报文协议 |
应用提供者 | 拥有应用并对应用行为负责的实体 |
应用Session | 应用与外部(应用)在逻辑信道上的联系。开始于应用的选择,结束于在逻辑信道上其他应用的选择,此时逻辑信道关闭或者卡Session结束 |
非对称加密 | 加密技术用到两个相关的转换,公共转换(用来定义公钥组件)和私钥转换(用来定义私钥组件);这两个密钥组件有一个属性以至于不可能计算发现私钥,即使已知公钥 |
基本逻辑信道 | 卡与外界实体之间持久的获得接口。基本逻辑信道是有限零 |
卡内容 | 在OPEN的负责下卡中的代码和应用信息(不包括应用数据),譬如可执行的载入文件,应用实例等 |
卡唯一码(CIN) | GP卡的标识符 |
卡发行商 | 拥有卡并最终对卡行为负责的实体 |
卡管理者 | 对一张GP卡的三个卡管理实体的共有术语,其分别是:OPEN,发行者安全域以及持卡者认证方法服务提供者 |
卡识别数据 | 通知外部系统的信息,尤其通知应用管理系统(CAMS)如何与卡交互。 |
卡Session | 卡和外部(卡)之间的联系,开始于ATR,结束于序列重置或者卡处于非激活状态 |
卡唯一数据 | 用于核实卡唯一的数据,以发行者的标识数据和卡标识数据串联而成 |
持卡人 | 卡的最终使用人 |
术语 | 定义 |
持卡人验证方法(CVM) | 这个方法用来确保一个人现在的卡就是发行者要发给这个人的卡 |
控制权限 | 控制权限有权通过DAP核对的控制而控制卡内容 |
DAP块 | 作为载入文件的一部分,用于载入文件数据块的核对 |
DAP认证 | 核实载入文件数据块是否可信的安全领域的一种应用机制 |
授予管理 | 通过认证的应用提供者完成的改变未授权卡内容 |
数字签名 | 经过非对称加密转换的数据使数据接收者能够证明数据的原始性和完整性;其可以保护发送者和数据接收者不被第三方伪造;同样可以保护发送者不被接收者伪造 |
可执行载入文件 | 一个或多个应用的可执行代码的实际卡上容器。它存在于只读存储器或者作为一个载入文件数据块的镜像,这些镜像可能被创建在可读写存储器 |
可执行模型 | 包括一个单独应用的卡上执行代码,出现在一个可执行载入文件中 |
GP注册 | 一个有关卡内容管理的信息容器 |
主机 | 用来代表支持GP系统的后台终端系统的逻辑术语;主机的主要功能是: 授权、认证、管理、(卡)发行后应用代码和数据的下载以及处理过程 |
不变持久存储 | 只读存储器 |
发行者安全域 | 在卡端为了满足卡发行者的控制、安全以及交流需求 |
生命周期 | 在GP卡上卡的内容存在并且存在可应用的各阶段 |
生命周期状态 | 卡或者卡内容在卡生命周期的一个具体状态 |
载入文件 | 被迁移到GP卡上的文件,其中包括一个载入文件数据块和可能有的一个或多个DAP块 |
载入文件数据块 | 载入文件的一部分,其中包括一个或多个应用和lib或者具体平台应用的支持信息 |
术语 | 定义 |
载入文件数据块散列 | 为载入文件数据块提供完整性的值 |
载入文件数据块签名 | 包含载入文件数据块散列并提供载入数据文件的完整性和真实性的值 |
报文鉴定码(MAC) | 提供数据原始性鉴定和完整性的对称加密转换数据 |
可读写存储 | 存储内容可被修改 |
OPEN | 主要的卡上管理者,隶属于GP注册 |
已发行 | 卡被发行到卡持有者之后的阶段 |
发行前 | 卡被发行到卡持有者之前的阶段 |
私钥 | 非对称密钥对的私有部分 |
公钥 | 非对称密钥对的公共部分 |
收据 | 由卡提供的,作为代理管理发生过的证明的加密值 |
重试数 | 参看“重试限制” |
重试限制 | 允许你输入有效CVM值的最多次数 |
安全信道 | 为卡外实体与卡之间的提供一定级别的保证通讯机制 |
安全信道协议 | 安全通讯协议以及安全服务集 |
安全信道Session | 它属于应用session的一部分,开始于安全信道初始化,结束于安全信道终止或者应用session终止,或者卡session终止 |
安全域 | 为满足应用提供者在控制、安全及通信方面的需求的卡上实体 |
增补逻辑信道 | 在卡与外部实体之间,一直到3个额外的接口(而不是持久的获得逻辑信道)。增加的逻辑信道分别记为1,2,3 |
对称加密 | 发起人与接收人的交互用相同的密钥的加密技术 |
记号(Token) | 卡发行者提供的密钥值用于证明代理管理已被授权 |
1.4 缩写词及其涵义
缩写 | 涵义 |
AID | 应用标识 |
APDU | 应用协议数据单元 |
API | 略 |
ASSII | 美国信息交换标准代码 |
ATR | 复位应答 |
BCD | 二进制码的十进位数 |
BER | 基本编码规则 |
CBC | 密码字组连接 |
CIN | 卡标识码 |
CLA | 命令报文的类字节 |
CVM | 卡持有者确认方法 |
DAP | 数据鉴定模式 |
DEK | 数据加密密钥 |
DES | 数据加密标准 |
ECB | 电子码书 |
EMV | Europay,MasterCard以及Visa的头三个字母;被用作支付系统的协议规范 |
ENC | 加密 |
FCI | 文件控制信息 |
HEX | 16进制 |
ICC | 集成电路卡 |
ICV | 初始连接向量 |
IIN | 发行标识码 |
缩写 | 涵义 |
INS | 报文指令字节 |
ISO | 国际标准化组织 |
Lc | 在情形3,4下,命令数据的确切长度 |
Le | 在情形2,4下,响应数据的期望最大长度 |
LV | 长度值 |
MAC | 报文鉴定码 |
OID | 对象标识符 |
OPEN | GP环境 |
P1 | 引用控制参数1 |
P2 | 引用控制参数2 |
PIN | 个人识别码 |
RAM | 随机访问存储器 |
RFU | 保留以备将来使用 |
RID | 已注册应用提供者标识 |
ROM | 只读存储器 |
RSA | 非对称算法 |
SCP | 安全信道协议 |
SW | 状态字 |
SW1 | 状态字1 |
SW2 | 状态字2 |
TLV | 标签长度值 |
1.5 修订历史
1.5.1 Open Platform卡规范2.0到Open Platform卡规范2.0.1
这部分对规范2.0(Open Platform Card Specification 2.0)到规范2.0.1(Open Platform Card Specification 2.0.1)的版本修订做了简单的回顾。
规范的字体与格式有所提高。
规范的一些具体实现从规范的主体部分移入到附录部分。
规范中的有关个人化或者其应用已移除。
有关用Java Card技术实现Open Platform的修改在附录A(GP API)的最开始部分。
所有被确认的跟Open Platform密切相关的问题,这些问题包括99年4至6月的FAQ(经常被提及的问题)文档和99年11至12月的文档。当前版本已经收录了这些问题。
第5部分中详细描述了关于安全和密钥管理的用法在Open Platform2.0未出现。
1.5.2 GP卡规范2.1的主要调整
如下将要说的就是由GP主要成员决定的修改内容。所有的修改将使GP规范适合更多的实体,又有向后兼容性。
1.5.2.1 加强了DAP核实方案
在支持授权管理和DAP核实的GP卡实现过程中,之前版本定义的在大数据块(载入文件数据块)上多重签名核实的方法是必须而且变化微小的。当多重DAP核实与可能的代理管理同时出现时,多重散列也需要同时产生。这样会对载入过产生负面影响。
新方案中定义了一个新方法用来替代给大数据块做标记的方法。新方法中,关键大数据块的散列会被生成并且次散列已被标记。新方法中的签名必须在非常小的数据块中的信息。而新方法中只有一个生成散列并且在载入文件数据块上的核实是必须的(参看6.7.6.1-载入数据块散列)。
1.5.2.2 从安全域中接收数据
先前的Open Platform提供的安全信道机制只允许应用去请求和它相关的安全域。
现在提供了一个通过安全域初始的新服务。它为了以后的数据处理,允许通过与安全域有关的应用间的数据传递,其主要目的就是通过相关应用间的安全域使应用的个人化更加便利。确认用来个人化应用的新安装命令已被定义(参看9.5-安装命令)。
1.5.2.3 安全域中的关联与引渡
在之前的Open Platform规范中,可执行文件关联到安全域,同时来自同一个可执行载入文件所有实例化应用当被安装后,这些个所有应用将被关联到同一个安全域中。上述方法已被限制。
新方案提出了应用引渡。应用引渡允许一个已经被关联到一个安全域的应用可被引渡到另一个安全域中(参看7.6.3-授权引渡)。
这一增强除对可执行载入文件和应用有好处外,还有一个优势就是包含在可执行的载入文件的应用对于已注册的可执行的载入文件在GP注册中是可见的(参看9.5-安装命令)。
为了避免可选择应用与在可执行载入文件的应用之间的混淆,引入了一个新的术语—可执行模块。这个术语用于核对出现在某个可执行载入文件的一个或多个应用(参看5.2.2-可执行模块生命周期)。
1.5.2.4 可执行模块
在之前的卡规范中,卡外实体只能获得在卡上的可执行载入文件和可选的应用的信息。为了增强通过状态命令获得的信息,额外的信息集将被存入GP注册并以对获得状态命令的响应形式返回。这个信息与可执行模块有关,而且现在也可能接收有关包含在可执行载入文件的应用代码的信息。其中可执行载入文件是对安装可见的。
1.5.2.5 卡数据识别
卡数据识别以及接收此数据的方法已经含在当前版本的GP卡规范中。相关的信息如:
GP卡,特殊实现方式(卡数据识别)以及目前可获得的独有的版本号。
1.5.2.6 对新安全信道协议的支持
为了方便起见,包括额外安全信道协议的方法已正式化。同时这个方法也适用于之前规范里只定义一个安全信道协议的情形。作为GP为定义安全信道协议正式进程的部分努力,当前版本细化了两个安全信道协议以及它们的选择进程。为清晰起见,将Open Platform2.0.1’规范的第四部分删掉。它的部分内容包括在了第三部分,余下的在附录中(参看附录D-安全信道协议01与安全信道协议02)。
1.5.2.7 持卡者验证的方法服务
关于可选的CVM的增加的服务和特性已包含在内(参看6.9-CVM管理)。在之前版本的规范中,CVM提供了单个PIN通过多应用的可能。当一个应用的PIN被改变,这个改变对所有应用都是可见的。然而应用无法核对在同一卡Session期间,对于另一个应用而言,PIN是否之前已经正确显现。新CVM(卡验证方法)提供了做此验证的功能。
1.5.2.8 卡管理者的分离
以前把卡管理者定义为卡上的主要组成部分,但未区分包含在内的各种职责,同时未清晰定义哪里是卡运行环境的结束,哪里是卡管理者的开始。新决定中,将卡管理者分成三个实体同时清晰核对了处于每一实体的运行环境功能。(参看3.2-卡管理者)此外,卡管理者这个术语依然存在,只不过现在由三部分组成:OPEN、发行者安全域和持卡者验证方法提供者。新结构使卡管理者的职责更加清晰,并把Java Card与Windows Powered Smart Card考虑在内。
1.5.2.9 Windows Powered Smart Card API
针对Windows Powered Smart Card的GP API现被收录于附录A.3-GlobalPlatform on Windows Powered Smart Card。
1.5.2.10 Java Card API
把GP各种新特性考虑在内,新API(参看附录A.2- GlobalPlatform on a Java Card)提供了对Java Card所涉及到的新的,所有相关存在的特性的支持。Open Platform2.0.1’上对Java Card的定义是不推荐的。当前版本有向后兼容性。
1.5.2.11 附录
GP卡规范的主体部分用来大体介绍GP。所有关于实现上的具体信息均可参看附录。
1.5.3 GP卡规范2.1.1的修订
如下的修改更正了之前版本中的不足,并保持和现在基于运行环境规范的发展的同步,同时保持向后兼容性。
1.5.3.1 勘误表
所有中间出版的勘误表已包含在此版本中。同时一小部分的勘误表和精度大约在此版本发布的同一时间出版,当然这些也直接包含在当前版本中。
1.5.3.2 内容删减
新可选的允许可执行载入文件的卡内容移除的特性被添加在规范中,所有与它相关的应用在同一操作中被删除。
1.5.3.3 逻辑信道
为了满足一些行业的新需求以及当前基于运行时环境规范的发展,新规范中把逻辑信道功能作为选择性特性。
1.5.3.4 添加的安全信道协议实现可选项
生成C-MAC的增强机制已被加入到了安全信道协议’01’和安全信道协议’02’。安全信道协议’01’中增加了一个新的实现可选项,安全信道协议’02’中增加了四个新的实现可选项。我们推荐使用这些新的可选项实现。