ISO智能卡中OpenPGP应用的功能规范.docx

上传人:小飞机 文档编号:1686796 上传时间:2022-12-14 格式:DOCX 页数:30 大小:793.11KB
返回 下载 相关 举报
ISO智能卡中OpenPGP应用的功能规范.docx_第1页
第1页 / 共30页
ISO智能卡中OpenPGP应用的功能规范.docx_第2页
第2页 / 共30页
ISO智能卡中OpenPGP应用的功能规范.docx_第3页
第3页 / 共30页
ISO智能卡中OpenPGP应用的功能规范.docx_第4页
第4页 / 共30页
ISO智能卡中OpenPGP应用的功能规范.docx_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《ISO智能卡中OpenPGP应用的功能规范.docx》由会员分享,可在线阅读,更多相关《ISO智能卡中OpenPGP应用的功能规范.docx(30页珍藏版)》请在三一办公上搜索。

1、ISO智能卡中OpenPGP应用的功能规范版本1.1作者:Achim Pietig作者:Achim PietigPPC Card Systems GmbHSenefelderstr. 1033100 PaderbornGermanyEmail: a.pietigppc-card.deachimThis document and translations of it may be copied and furnished to others, andderivative works that comment on or otherwise explain it or assist in its

2、implementationmay be prepared, copied, published and distributed, in whole or in part, withoutrestriction of any kind, provided that the copyright notice and this paragraph areincluded on all such copies and derivative works. However, this document itself maynot be modified in any way, such as by re

3、moving the copyright notice or references. 2004 Achim Pietig, PPC Card Systems GmbH, PaderbornPPC Card Systems GmbH and the author do not assume responsibility nor give a guarantee for the correctnessand/or completeness of the features and functions described in this document.PPC Card Systems GmbH a

4、nd the author are unable to accept any legal responsibility or liabilityfor incorrect and/or incomplete details and their consequences.Furthermore, PPC Card Systems GmbH and the author reserves the right to revise these specifications for technical reasonsand make amendments and/or updates to the sa

5、me.历史变化:V1.0 到 V1.1l 改变了GENERATE ASYMMETRIC KEY PAIR命令的访问权限,总是使得P1=81(读取公钥)。l 文献的调整l 具有不同访问权限的私有的新的数据对象。这是一个可选特征项,在扩展功能中描述l 描述密钥产生日期/时间的新的数据对象l CHV状态字节(C4)数据对象。在GET DATA命令中作为一个对象强制使用目 录1介绍61.1缩写定义62要求概要72.1本版本的限制73目录结构84OpenPGP应用中数据对象的目录94.1MF和DF中的数据文件和对象94.1.1EF_DIR94.2OpenPGP的DF94.2.1应用标志符(AID)104

6、.2.2OpenPGP应用的用户认证114.3数据对象(DO)114.3.1GET DATA的数据对象124.3.2PUT DATA的数据对象144.3.3数据对象详述154.3.3.1私有用法154.3.3.2名称164.3.3.3语言164.3.3.4性别164.3.3.5扩展性能164.3.3.6算法属性164.3.3.7私钥模164.3.4数据对象的长度域165安全架构176历史字节(ATR)186.1卡片性能197命令197.1ISO标准命令的使用197.2命令详述217.2.1SELECT FILE命令217.2.2VERIFY命令217.2.3CHANGE REFERENCE D

7、ATA命令217.2.4RESET RETRY COUNTER命令217.2.5GET DATA命令217.2.6PUT DATA命令217.2.7GET RESPONSE命令217.2.8PSO: COMPUTE DIGITAL SIGNATURE命令217.2.9PSO:DECIPHER命令217.2.10INTERNAL AUTHENTICATE命令217.2.11GENERAL ASYMMETRIC KEY PAIR命令217.2.12GET CHALLENGE命令217.3不同IO协议下的命令用法217.4类型字节定义227.5安全消息227.6逻辑通道227.7状态字节228文献2

8、39流程图239.1使用短Lc/Le开启卡片应用。249.2使用扩展Lc/Le开启卡片应用。269.3计算数字签名279.4消息解密289.5私钥生成291 介绍这篇功能规范描述了ISO智能卡操作系统中的OpenPGP应用的功能,还有他定义卡和终端接口时所遵循的原则。本文中主要为OpenPGP软件与以PC/SC为基础的标准读卡器之间的接口问题。解决方案主要关心如下内容:l 国际标准的使用l 避免与其他专利冲突l GNU公用证书下的软件的免费使用l 与描述智能卡操作系统无关l 将来增加功能时的便捷性l 通用性因为这篇规范并不涉及以下内容:描述卡片的所有命令和数据文件,卡片提供的安全功能,涉及多个

9、应用的功能特征,例如协议,也不描述卡片的通用电气机械特征。特别地,本规范详细描述了与应用相关的数据对象和他们各自的内容格式。应用数据的内容只有在其表现出不变因素的时候才会被描述。除了特别指定,文章中的编码值都是十六进制格式的。1.1 缩写定义AC 访问条件AID应用标志符ATR重启的应答AUT认证BCD二进制编码的十进制数据CHV持卡人验证CLA类别字节DEC解密的密文dec.十进制DF专用文件DO数据对象DSA数据签名算法ECC椭圆曲线加密FCP文件控制参数INS指示字节MF主控文件OS操作系统PK公钥RFU留作后用RSA一种公钥算法由三个发明人的姓名的首字母组成SE安全环境SIG签名URL

10、统一资源定位符UTF-8UCS转化格式8(兼容US-ASCII七位编码)2 要求概要OpenPGP应用的设计目标是能够在几个兼容ISO的智能卡操作系统中运行。因此OpenPGP能够在几种不同制造商的芯片上运行。实现过程中,下述的所有需求必须完全满足。卡片:l 完全支持7816-3的ATR指令n OpenPGP评估了卡片兼容性的历史特征l 至少支持ISO 7816-3 T=1 或者T=0中的一种传输协议n 最好是T=1(支持链和扩展Lc/Le)l 卡片必须支持不同的传输协议n ATR可能指示不同的传输协议(比如T=0 和T=1)n 不同的协议应该支持PPS选择l 根据ISO7816-3(Fi/D

11、i),高速模式是必须的(达到芯片所能达到的最大值)n 卡片应该在卡片性能中明示这个特征n 如果不支持扩展Lc/Le,那么卡片应该支持命令链 或者 用GET RESPONSE命令响应大数据对象。读卡器:l 应该支持PC/SC驱动n PC/SC应该能够在好几种平台上使用(比如:win32,Linux,Macintosh)l 应该支持T=1 和T=0l 应该支持高速协议(PPS)l 应该支持扩展Le/Lc2.1 本版本的限制本版本的卡中OpenPGP应用和终端OpenPGP应用有一些限制。主要原因是实际中的卡和读卡器(有PC/SC)不能满足所有的要求终端:l 可能不支持扩展的Lc/Le(尽管卡支持扩

12、展Lc/Le也只能使用短的Lc/Le)l 可能不支持ECC和DSA(所用的功能只使用RSA算法)卡:l 可能不支持高速协议(这种情况下,终端默认为ISO标准值)l 可能不支持扩展的Lc/Lel 卡片应该支持RSA(最低1024位)PCSCl 可能不支持高速协议(这种情况下,终端默认为ISO标准值)l 可能不支持扩展的Lc/Le3 目录结构下图给出了与OpenPGP应用相关的目录和数据对象的一个概览。安全相关的数据(例如:密码。CHV)会根据使用的OS而被存储(文件,数据对象或者其他)4 OpenPGP应用中数据对象的目录DF_OpenPGP目录和数据对象组成了OpenPGP应用。卡片中的专用文

13、件(DF)还可能存在着其他应用.4.1 MF和DF中的数据文件和对象OpenPGP应用可能会使用全局CHV(持卡人验证)。这些数据可能会被存放在主控文件中(MF),也可能在其他专用文件中(DF)或者当前OS的特殊路径中。另外,所有应用和特殊密钥的全局信息也可能被存放在MF中4.1.1 EF_DIR这个MF(文件标志符:2F00)中的文件如果存在的话,可能包含一个或多个iso/iec7816-4中的应用模板和应用标志符。虽然OpenPGP应用并不请求和计算这个数据文件,但是可能会被第三方用来声明应用。他也被那些不支持用AID 运行SELECT FILE命令的卡所用。下列的入口应该被添加进来:l

14、应用标志符(tag 4F),应该只使有具有意义的值(6字节=D27600012401)l 应用标签名(tag 50),应用的标签名应该包含如下的UTF-8编码的文字:OpenPGP4.2 OpenPGP的DFOpenPGP的应用目录可以在卡中的任意地方存放。没有固定的文件标志符(FID),因此在任何情况下它都很容易为应用所合并。如果需要FID的话,可以由卡片生产商或者其他任何机构所指定。目录中包含应用的所有数据对象。所有给定的FCP(文件控制参数)都是实现的信息参数,在响应SELECTFILE命令的时候可以选择使用。终端中的OpenPGP应用不会计算FCP的Tag。OpenPGP应用使用GET

15、 DATA命令在与应用相关数据(Tag 6E)中寻找到AID(Tag 4F的数据对象)。DF_OpenPGP中可能存在的文件控制参数(FCP)4.2.1 应用标志符(AID)可以使用唯一应用标志符来选择OpenPGP应用(参见SELECT FILE命令)。AID 有16字节长,使用下面的方法进行编码。卡中的每一个AID都是唯一的,并且要求这个值被整合到证书中去,比如用来进行客户端/服务器验证的证书。OpenPGP的AID在FSF Europe e.V中注册RID 应用注册提供者的标志符(OpenPGP的唯一标志符),ISO7816-5PIX所有权应用标注符扩展(为OpenPGP应用定义)App

16、licetion应用指示位Version应用的版本号Manufacturer应用(卡片)制造商的唯一编码SerialNumber唯一序列号RFU保留位Application:这个值(1字节)指示应用。将来,在FSF Europe e.V.的控制之下可以被设计用来指示不同的应用。下列的值已经 被定义00 保留01 OpenPGP 应用(标准)0F保留Version:版本号(2字节,BCD)给出了当前应用的状态信息。通过这个值可以通知进行更新。版本号定义如下字节1 字节2主版本号 次版本号 (取值范围:00-99)举例:1.0 被编码成01 002.102 0111.711 07Manufactu

17、rer:为了在开放网络中(比如 密钥服务器)标识卡片和登陆一台电脑,就必须要有一个应用号。因为上述原因,每一个制造卡片的卡片制造商或者部署应用的个人化操作者都必须有一个唯一的标记。这个制造商标志符由FSF Europe e.V.控制,并免费分发给卡片制造商。只有注册了的制造商才允许生产与OpenPGP兼容的应用。系统运行方式类似网络上的物理地址码(MAC)。2个字节采用二进制编码,0000和FFFF被保留用来测试。Serial number:制造商管理下的每一个OpenPGP应用都有一个唯一序列号。制造商应该保证现实世界中没有两个重复的序列号(如同网络中的物理地址码一样)。序列号有4个字节的长

18、度,采用MSBLSB的格式(高有效位,低有效位)。对于制造商来说,第一个应用从00 00 00 01开始并自动增加4.2.2 OpenPGP应用的用户认证OpenPGP使用3个本地密码来验证使用者,称之为持卡人验证(CHV1,CHV2最低要求6个字符,CHV3最低要求8个字符)。CHV的格式是UTF8(大小写敏感)。卡片所能支持的每一个CHV最大长度被称之为 CHV最大长度数据对象。只有相关的字节被CHV命令使用,没有填充和扩充。CHV的存储取决于当前的OS。可以使用全局CHV,但是必须将其映射为应用本地的CHV。CHV1是命令PSO:CDS的访问条件。CHV2是下列命令的访问条件:PSO:D

19、EC, INT-AUT, GET DATA,PUT。CHV3是下列命令的访问条件:RESET RETRY COUNTER,PUT DATA ,GENERATE ASYMMETRIC KEY PAIR(密钥生成)。所有CHV的错误计数器被初始化为3。在正确验证了CHV后,错误计数器可以被GET DATA命令读取。除非进行卡片重启,或者选择不同的DF,或者特殊指令的内部重启,否则相应CHV的访问状态会一直有效。如果卡片未被个人化,或者没有设置CHV。那么CHV的默认的值如下:CHV1和CHV2=“123456”(6字节,31 32 33 34 35 36);CHV3=“12345678” (8字节

20、,31 32 33 34 35 36 37 38)。强烈要求持卡人更改这些值。因为对于使用者来说,CHV1和CHV2的使用比较类似,直到终端应用同步这些值。4.3 数据对象(DO)为了与终端的接口比较简单,为了使OpenPGP应用与其它操作系统的交互比较方便,所有与应用相关的数据元素都是采用数据对象的形式进行存储的。终端可以仅仅使用SELECT FILE,GET DATA,PUTDATA和加密命令即可以与应用进行交互运行。改变任何的文件标志符,短文件标志符,文件类型或者文件结构对于终端接口都没有影响。DO使用ISO规定的(比如7816-6)TLV格式进行存储。4.3.1 GET DATA的数据

21、对象GET DATA应该支持下列表格中的数据对象。至少应该能够在OpenPGP的EF中访问他们。所有的数据对象都是共享的也可以被其它应用所使用。简单数据对象在GET DATA命令下仅仅返回值。结构数据对象还要返回他的标签和长度。在结构数据对象中可能会有附加的数据对象,但是终端的OpenPGP应用并不计算他的值。使用GET DAT命令时,相连的数据对象可能会被看作一个对象。OpenPGP只使用普通数据对象。结构数据对象中的数据次序可能会有所变化4.3.2 PUT DATA的数据对象PUT DATA命令支持下列数据对象。至少应该能够在OpenPGP的EF中访问他们。4.3.3 数据对象详述下面的章

22、节详细描述了一些对象,尤其是私有对象。(具体对象需要时再翻译)4.3.3.1 私有用法这些可选的数据对象可以作为持卡人,管理员或者其他程序作为私有数据而使用(比如口令列表)。这些数据对象间的不同之处是他们的访问条件。这些数据对象的使用与否会在扩展性能项里被告知。4.3.3.2 名称这个数据元素可以由39个字节组成,每一个字符是iso8859-1(拉丁1)中的字母(与编码值小于80的US-ASCII中7位编码的字符一样)。数据元素由姓和名组成,每一项之间用分隔符隔开(3C),姓和名之间用分隔开4.3.3.3 语言这个数据元素由1-4个双字节组成(比如2字节或6字节),根据iso639编码,ASC

23、II小写字母。(例如:de=德语,en=英语,nl=荷兰语,fr=法语)。至少有一个条目(2字节),第一个条目具有最高优先使用权。这个信息可以被终端用来与做用户的接口(比如文字的语言类别)4.3.3.4 性别根据iso5218这个数据元素有一个字节,表示一个人的性别.下面的值在OpenPGP中被定义:男性 31女性32未知39终端可以使用这些信息4.3.3.5 扩展性能卡片利用这个表格向终端明示了自己的附加特征。如果位值被设置为1,则表示此功能可用,如果为0则表示此功能不可用。所有位可以同时设置。扩展性能的编码:4.3.3.6 算法属性这个数据对象指示了卡片所支持的算法。终端在使用密钥导入功能

24、的时候应该会用到这个信息。卡片生成密钥的时候会使用这些格式,这些格式与相关命令的输出格式也相关。RSA:本版本只定义了RSA算法的内容。4.3.3.7 私钥模如果卡片支持密钥导入(参见扩展性能),相应私钥中的每一信息段将会按照如下方法编码。只使用强制值(需要的话)。函数并不管密钥在卡内是如何存储的。我们假设卡片具有根据输入产生内在值(比如,使用RSA产生余数定理部分)的功能。函数不会设置相应的指纹值。本版本只定义RSA密钥的输入,并且数据对象的输入顺序是固定的这些数据对象的长度必须符合其算法属性中给定的长度(C1-C3),比如,如果模数N的长度是1024位,那么P和Q则固定的都是512位。4.

25、3.4 数据对象的长度域根据ISO7816-4,TLV结构中的长度域具有如下的格式:5 安全架构所有的命令和数据都在COS的安全控制之下。ISO为了安全的目的定义了安全机制,属性(比如FCP)和环境。因为这个特征特别复杂并且卡和卡之间还不一样,所以OpenPGP并不计算与卡安全相关的对象。因此本章节仅仅是定义所有命令和数据访问条件的一般性做法,以供开发者参考。描述的安全特征是卡片必须要有的,但是编码和实现的方法取决于卡片开发者,卡片制造者或者个人化者。私有密钥和口令不能被任何命令和函数读出到卡外。命令和数据的访问条件必须在全部满足时方可访问。下面的表格描述了OpenPGP应用所有的访问条件。对

26、于所有操作系统的函数和命令来说,READ是一样的,其作用是将数据读取出来。WRITE也类似,其作用是改变芯片存储其中的数据。在处理结构化的数据对象时,其中的每一个子对象的访问条件都必须得到满足。相关命令的访问条件:数据对象的访问条件:6 历史字节(ATR)在接收到卡片的ATR(重置响应)后,格式字节(T0)根据iso7816-3将历史字节放置在字节的1-4位上。对于OpenPGP应用来讲相当于放置了一个与卡片性能相关的数据对象。可以在iso7816-4的历史字节编码中找到第一个历史字节是一个 类别指示字节。如果类别指示字节被设备为 00,10或者80,则遵从ISO的格式。其它的任何值指示使用私

27、有格式l 如果第一个历史字节被设置为00,那么剩下的历史字节由可选的COMPACT-TLV数据对象组成,并且在其后面还跟有状态指示符(最后的3个字节,不在TLV中)l 如果第一个历史字节被设置为80,那么剩下的历史字节由可选的COMPACT-TLV数据对象组成,最后一个数据对象可能包含一个1字节,或者2字节,或者3字节的状态指示符。l 如果类别指示符被设置为 10,那么后续字符为DIR参考数据。参考数据之后为COMPACT-TLV格式字节COMPACT-TLV格式用其第一个字节的5-8位表示一个标签(tag),用1-4位表示长度。在OpenPGP应用中只有TL是73才是与OpenPGP相关的。

28、它表示一个卡片性能的数据对象,有3个字节的长度6.1 卡片性能根据iso7816-4这个数据元素由3个软件功能表组成(1字节1个功能表)。第一个软件功能表指示了卡片所支持的选择方法。第二个软件功能表是数据编码字节,第三个软件功能表指示了是否支持下列功能:链命令,扩展Lc/Le域,逻辑通道。当某一位被设置为1时,表示功能可用(除非特别指定),设置为0表示功能不可用。位的设置可以同时进行。对于OpenPGP来说,只有第三个功能表与应用相关(本版本中链接功能不会被采用)。命令链,长度域和逻辑通道(第三字节)7 命令OpenPGP应用的功能是依照iso7816-4和iso7816-8的功能来建立的。因

29、此外部可以使用标准OS命令与其交互。这取决于当前的OS和命令编码的格式。7.1 ISO标准命令的使用下面的表格描述了符合ISO标准的操作系统的标准命令,这些命令被OpenPGP所使用。虽然只有给出的命令包含字节(P1/P2)应该被实现,但是卡片也可以提供其他函数。其他附加的命令不在本规范的范围之内7.2 命令详述7.2.1 SELECT FILE命令7.2.2 VERIFY命令7.2.3 CHANGE REFERENCE DATA命令7.2.4 RESET RETRY COUNTER命令7.2.5 GET DATA命令7.2.6 PUT DATA命令7.2.7 GET RESPONSE命令7.

30、2.8 PSO: COMPUTE DIGITAL SIGNATURE命令7.2.9 PSO:DECIPHER命令7.2.10 INTERNAL AUTHENTICATE命令7.2.11 GENERAL ASYMMETRIC KEY PAIR命令7.2.12 GET CHALLENGE命令7.3 不同IO协议下的命令用法OpenPGP应用使用T=1协议作为标准协议。其他卡内的协议也可以使用。OpenPGP可以在任何协议下运行,只要读卡器的PC/SC驱动支持协议。7.4 类型字节定义对于OpenPGP来说,所有的命令均使用根据ISO编码的CLA。CLA为00,其意思为:标准命令中没有安全信息(SM

31、)的CLA(命令链中最后或者仅有的命令)7.5 安全消息本版本的OpenPGP没有采用安全消息7.6 逻辑通道本版本的OpenPGP没有使用逻辑通道。所有命令使用通道号为0的通道7.7 状态字节接收到命令之后,芯片返回两个状态字节(返回码)。对卡来说iso7816-4的所有编码都可用,或者也可以自己指定内容。下面的表格列出了状态字的可能编码(部分)8 文献DIN (2000):DIN V66291-1 (Prenorm): Chipcards with digital signature application/functionaccording to SigG and SigV, Part

32、1: Application Interface, Version 1.0ISO/IEC (2004):ISO/IEC CD 7816-3, Identification cards - Integrated circuit(s) cards with contacts- Part 3: Electronic signals and transmission protocolsISO/IEC (2004):ISO/IEC FDIS 7816-4, Information technology - Identification cards Integrated circuit(s) cards

33、with contacts - Part 4: Inter-industry commands for interchangeISO/IEC (2004):ISO/IEC DIS 7816-6, Identification cards - Integrated circuit(s) cards with contacts- Part 6: Interindustry data elements for interchangeISO/IEC (2004):ISO/IEC DIS 7816-8, Identification cards - Integrated circuit(s) cards

34、 with contacts, Part 8: Interindustry commands for a cryptographic toolboxRSA Laboratories (2002):PKCS #1 v2.1: RSA Encryption StandardTeleTrusT Deutschland e.V. (2000):German Office Identity Card, (Elektronischer Dienstausweis), Version 1.0The Internet Society (1998):RFC 2440: OpenPGP Message Forma

35、t9 流程图通信的概要图描述了OpenPGP的可能的用法。只描述了少数的几个功能,还有其他的几个附加功能可使用。原则上来讲,讲解的应用次序与本规范中的描述的应用结构相适应。应用顺序的实现是建立在操作系统提供给卡的全局命令之上的,并且考虑了安全结构。因为注意到次序问题,所以仅有那些与卡和终端接口相关的应用数据被考虑到。为了明了性,返回码,头信息和错误事件没有被描述。概要图的主要目的是使得对应用的主要机制更明确,使得对本规范的理解更容易。并不是终端程序实现的唯一基础参考。在考虑到应用的安全性方针的时候,下述概要图都要做修改。9.1 使用短Lc/Le开启卡片应用。9.2 使用扩展Lc/Le开启卡片应用。9.3 计算数字签名9.4 消息解密9.5 私钥生成- 30 -

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号