ISO智能卡中OpenPGP应用的功能规范.docx
- 文档编号:25459466
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:29
- 大小:709.27KB
ISO智能卡中OpenPGP应用的功能规范.docx
《ISO智能卡中OpenPGP应用的功能规范.docx》由会员分享,可在线阅读,更多相关《ISO智能卡中OpenPGP应用的功能规范.docx(29页珍藏版)》请在冰豆网上搜索。
ISO智能卡中OpenPGP应用的功能规范
ISO智能卡中
OpenPGP应用的
功能规范
版本1.1
作者:
AchimPietig
作者:
AchimPietig
PPCCardSystemsGmbH
Senefelderstr.10
33100Paderborn
Germany
Email:
a.pietig@ppc-card.de
achim@
Thisdocumentandtranslationsofitmaybecopiedandfurnishedtoothers,and
derivativeworksthatcommentonorotherwiseexplainitorassistinitsimplementation
maybeprepared,copied,publishedanddistributed,inwholeorinpart,without
restrictionofanykind,providedthatthecopyrightnoticeandthisparagraphare
includedonallsuchcopiesandderivativeworks.However,thisdocumentitselfmay
notbemodifiedinanyway,suchasbyremovingthecopyrightnoticeorreferences.
©2004AchimPietig,PPCCardSystemsGmbH,Paderborn
PPCCardSystemsGmbHandtheauthordonotassumeresponsibilitynorgiveaguaranteeforthecorrectness
and/orcompletenessofthefeaturesandfunctionsdescribedinthisdocument.
PPCCardSystemsGmbHandtheauthorareunabletoacceptanylegalresponsibilityorliability
forincorrectand/orincompletedetailsandtheirconsequences.
Furthermore,PPCCardSystemsGmbHandtheauthorreservestherighttorevisethesespecificationsfortechnicalreasons
andmakeamendmentsand/orupdatestothesame.
历史变化:
V1.0到V1.1
●改变了GENERATEASYMMETRICKEYPAIR命令的访问权限,总是使得P1=81(读取公钥)。
●文献的调整
●具有不同访问权限的私有的新的数据对象。
这是一个可选特征项,在扩展功能中描述
●描述密钥产生日期/时刻的新的数据对象
●CHV状态字节(C4)数据对象。
在GETDATA命令中作为一个对象强制使用
1介绍
这篇功能规范描述了ISO智能卡操作系统中的OpenPGP应用的功能,还有他定义卡和终端接口时所遵循的原则。
本文中要紧为OpenPGP软件与以PC/SC为基础的标准读卡器之间的接口问题。
解决方案要紧关怀如下内容:
●国际标准的使用
●幸免与其他专利冲突
●GNU公用证书下的软件的免费使用
●与描述智能卡操作系统无关
●今后增加功能时的便捷性
●通用性
因为这篇规范并不涉及以下内容:
描述卡片的所有命令和数据文件,卡片提供的安全功能,涉及多个应用的功能特征,例如协议,也不描述卡片的通用电气机械特征。
特不地,本规范详细描述了与应用相关的数据对象和他们各自的内容格式。
应用数据的内容只有在其表现出不变因素的时候才会被描述。
除了特不指定,文章中的编码值差不多上十六进制格式的。
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统一资源定位符
UTF-8UCS转化格式8(兼容US-ASCII七位编码)
2要求概要
OpenPGP应用的设计目标是能够在几个兼容ISO的智能卡操作系统中运行。
因此OpenPGP能够在几种不同制造商的芯片上运行。
实现过程中,下述的所有需求必须完全满足。
卡片:
●完全支持7816-3的ATR指令
⏹OpenPGP评估了卡片兼容性的历史特征
●至少支持ISO7816-3T=1或者T=0中的一种传输协议
⏹最好是T=1(支持链和扩展Lc/Le)
●卡片必须支持不同的传输协议
⏹ATR可能指示不同的传输协议(比如T=0和T=1)
⏹不同的协议应该支持PPS选择
●依照ISO7816-3(Fi/Di),高速模式是必须的(达到芯片所能达到的最大值)
⏹卡片应该在卡片性能中明示那个特征
⏹假如不支持扩展Lc/Le,那么卡片应该支持命令链或者用GETRESPONSE命令响应大数据对象。
读卡器:
●应该支持PC/SC驱动
⏹PC/SC应该能够在好几种平台上使用(比如:
win32,Linux,Macintosh)
●应该支持T=1和T=0
●应该支持高速协议(PPS)
●应该支持扩展Le/Lc
2.1本版本的限制
本版本的卡中OpenPGP应用和终端OpenPGP应用有一些限制。
要紧缘故是实际中的卡和读卡器(有PC/SC)不能满足所有的要求
终端:
●可能不支持扩展的Lc/Le(尽管卡支持扩展Lc/Le也只能使用短的Lc/Le)
●可能不支持ECC和DSA(所用的功能只使用RSA算法)
卡:
●可能不支持高速协议(这种情况下,终端默认为ISO标准值)
●可能不支持扩展的Lc/Le
●卡片应该支持RSA(最低1024位)
PCSC
●可能不支持高速协议(这种情况下,终端默认为ISO标准值)
●可能不支持扩展的Lc/Le
3目录结构
下图给出了与OpenPGP应用相关的目录和数据对象的一个概览。
安全相关的数据(例如:
密码。
CHV)会依照使用的OS而被存储(文件,数据对象或者其他)
4OpenPGP应用中数据对象的目录
DF_OpenPGP目录和数据对象组成了OpenPGP应用。
卡片中的专用文件(DF)还可能存在着其他应用.
4.1MF和DF中的数据文件和对象
OpenPGP应用可能会使用全局CHV(持卡人验证)。
这些数据可能会被存放在主控文件中(MF),也可能在其他专用文件中(DF)或者当前OS的专门路径中。
另外,所有应用和专门密钥的全局信息也可能被存放在MF中
4.1.1EF_DIR
那个MF(文件标志符:
’2F00’)中的文件假如存在的话,可能包含一个或多个iso/iec7816-4中的应用模板和应用标志符。
尽管OpenPGP应用并不请求和计算那个数据文件,然而可能会被第三方用来声明应用。
他也被那些不支持用AID运行SELECTFILE命令的卡所用。
下列的入口应该被添加进来:
●应用标志符(tag‘4F’),应该只使有具有意义的值(6字节=D27600012401)
●应用标签名(tag‘50’),应用的标签名应该包含如下的UTF-8编码的文字:
OpenPGP
4.2OpenPGP的DF
OpenPGP的应用目录能够在卡中的任意地点存放。
没有固定的文件标志符(FID),因此在任何情况下它都专门容易为应用所合并。
假如需要FID的话,能够由卡片生产商或者其他任何机构所指定。
目录中包含应用的所有数据对象。
所有给定的FCP(文件操纵参数)差不多上实现的信息参数,在响应SELECT
FILE命令的时候能够选择使用。
终端中的OpenPGP应用可不能计算FCP的Tag。
OpenPGP应用使用GETDATA命令在与应用相关数据(Tag6E)中查找到AID(Tag4F的数据对象)。
DF_OpenPGP中可能存在的文件操纵参数(FCP)
4.2.1应用标志符(AID)
能够使用唯一应用标志符来选择OpenPGP应用(参见SELECTFILE命令)。
AID有16字节长,使用下面的方法进行编码。
卡中的每一个AID差不多上唯一的,同时要求那个值被整合到证书中去,比如用来进行客户端/服务器验证的证书。
OpenPGP的AID在FSFEuropee.V中注册
RID应用注册提供者的标志符(OpenPGP的唯一标志符),ISO7816-5
PIX所有权应用标注符扩展(为OpenPGP应用定义)
Applicetion应用指示位
Version应用的版本号
Manufacturer应用(卡片)制造商的唯一编码
SerialNumber唯一序列号
RFU保留位
Application:
那个值(1字节)指示应用。
今后,在FSFEuropee.V.的操纵之下能够被设计用来指示不同的应用。
下列的值差不多被定义
01保留
02OpenPGP应用(标准)
0F保留
Version:
版本号(2字节,BCD)给出了当前应用的状态信息。
通过那个值能够通知进行更新。
版本号定义如下
字节1字节2
主版本号次版本号(取值范围:
00-99)
举例:
1.0被编码成0100
2.10201
11.71107
Manufacturer:
为了在开放网络中(比如密钥服务器)标识卡片和登陆一台电脑,就必须要有一个应用号。
因为上述缘故,每一个制造卡片的卡片制造商或者部署应用的个人化操作者都必须有一个唯一的标记。
那个制造商标志符由FSFEuropee.V.操纵,并免费分发给卡片制造商。
只有注册了的制造商才同意生产与OpenPGP兼容的应用。
系统运行方式类似网络上的物理地址码(MAC)。
2个字节采纳二进制编码,0000和FFFF被保留用来测试。
Serialnumber:
制造商治理下的每一个OpenPGP应用都有一个唯一序列号。
制造商应该保证现实世界中没有两个重复的序列号(如同网络中的物理地址码一样)。
序列号有4个字节的长度,采纳MSB——LSB的格式(高有效位,低有效位)。
关于制造商来讲,第一个应用从00000001开始并自动增加
4.2.2OpenPGP应用的用户认证
OpenPGP使用3个本地密码来验证使用者,称之为持卡人验证(CHV1,CHV2最低要求6个字符,CHV3最低要求8个字符)。
CHV的格式是UTF8(大小写敏感)。
卡片所能支持的每一个CHV最大长度被称之为CHV最大长度数据对象。
只有相关的字节被CHV命令使用,没有填充和扩充。
CHV的存储取决于当前的OS。
能够使用全局CHV,然而必须将其映射为应用本地的CHV。
CHV1是命令PSO:
CDS的访问条件。
CHV2是下列命令的访问条件:
PSO:
DEC,INT-AUT,GETDATA,PUT。
CHV3是下列命令的访问条件:
RESETRETRYCOUNTER,PUTDATA,GENERATEASYMMETRICKEYPAIR(密钥生成)。
所有CHV的错误计数器被初始化为3。
在正确验证了CHV后,错误计数器能够被GETDATA命令读取。
除非进行卡片重启,或者选择不同的DF,或者专门指令的内部重启,否则相应CHV的访问状态会一直有效。
假如卡片未被个人化,或者没有设置CHV。
那么CHV的默认的值如下:
CHV1和CHV2=“123456”(6字节,313233343536);CHV3=“12345678”(8字节,3132333435363738)。
强烈要求持卡人更改这些值。
因为关于使用者来讲,CHV1和CHV2的使用比较类似,直到终端应用同步这些值。
4.3数据对象(DO)
为了与终端的接口比较简单,为了使OpenPGP应用与其它操作系统的交互比较方便,所有与应用相关的数据元素差不多上采纳数据对象的形式进行存储的。
终端能够仅仅使用SELECTFILE,GETDATA,PUTDATA和加密命令即能够与应用进行交互运行。
改变任何的文件标志符,短文件标志符,文件类型或者文件结构关于终端接口都没有阻碍。
DO使用ISO规定的(比如7816-6)TLV格式进行存储。
4.3.1GETDATA的数据对象
GETDATA应该支持下列表格中的数据对象。
至少应该能够在OpenPGP的EF中访问他们。
所有的数据对象差不多上共享的也能够被其它应用所使用。
简单数据对象在GETDATA命令下仅仅返回值。
结构数据对象还要返回他的标签和长度。
在结构数据对象中可能会有附加的数据对象,然而终端的OpenPGP应用并不计算他的值。
使用GETDAT命令时,相连的数据对象可能会被看作一个对象。
OpenPGP只使用一般数据对象。
结构数据对象中的数据次序可能会有所变化
4.3.2PUTDATA的数据对象
PUTDATA命令支持下列数据对象。
至少应该能够在OpenPGP的EF中访问他们。
4.3.3数据对象详述
下面的章节详细描述了一些对象,尤其是私有对象。
(具体对象需要时再翻译)
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编码,ASCII小写字母。
(例如:
de=德语,en=英语,nl=荷兰语,fr=法语)。
至少有一个条目(2字节),第一个条目具有最高优先使用权。
那个信息能够被终端用来与做用户的接口(比如文字的语言类不)
4.3.3.4性不
依照iso5218那个数据元素有一个字节,表示一个人的性不.下面的值在OpenPGP中被定义:
男性31
女性32
未知39
终端能够使用这些信息
4.3.3.5扩展性能
卡片利用那个表格向终端明示了自己的附加特征。
假如位值被设置为1,则表示此功能可用,假如为0则表示此功能不可用。
所有位能够同时设置。
扩展性能的编码:
4.3.3.6算法属性
那个数据对象指示了卡片所支持的算法。
终端在使用密钥导入功能的时候应该会用到那个信息。
卡片生成密钥的时候会使用这些格式,这些格式与相关命令的输出格式也相关。
RSA:
本版本只定义了RSA算法的内容。
4.3.3.7私钥模
假如卡片支持密钥导入(参见扩展性能),相应私钥中的每一信息段将会按照如下方法编码。
只使用强制值(需要的话)。
函数并不管密钥在卡内是如何存储的。
我们假设卡片具有依照输入产生内在值(比如,使用RSA产生余数定理部分)的功能。
函数可不能设置相应的指纹值。
本版本只定义RSA密钥的输入,同时数据对象的输入顺序是固定的
这些数据对象的长度必须符合其算法属性中给定的长度(C1-C3),比如,假如模数N的长度是1024位,那么P和Q则固定的差不多上512位。
4.3.4数据对象的长度域
依照ISO7816-4,TLV结构中的长度域具有如下的格式:
5安全架构
所有的命令和数据都在COS的安全操纵之下。
ISO为了安全的目的定义了安全机制,属性(比如FCP)和环境。
因为那个特征特不复杂同时卡和卡之间还不一样,因此OpenPGP并不计算与卡安全相关的对象。
因此本章节仅仅是定义所有命令和数据访问条件的一般性做法,以供开发者参考。
描述的安全特征是卡片必须要有的,然而编码和实现的方法取决于卡片开发者,卡片制造者或者个人化者。
私有密钥和口令不能被任何命令和函数读出到卡外。
命令和数据的访问条件必须在全部满足时方可访问。
下面的表格描述了OpenPGP应用所有的访问条件。
关于所有操作系统的函数和命令来讲,READ是一样的,其作用是将数据读取出来。
WRITE也类似,其作用是改变芯片存储其中的数据。
在处理结构化的数据对象时,其中的每一个子对象的访问条件都必须得到满足。
相关命令的访问条件:
数据对象的访问条件:
6历史字节(ATR)
在接收到卡片的ATR(重置响应)后,格式字节(T0)依照iso7816-3将历史字节放置在字节的1-4位上。
关于OpenPGP应用来讲相当于放置了一个与卡片性能相关的数据对象。
能够在iso7816-4的历史字节编码中找到
第一个历史字节是一个类不指示字节。
假如类不指示字节被设备为00,10或者80,则遵从ISO的格式。
其它的任何值指示使用私有格式
●假如第一个历史字节被设置为00,那么剩下的历史字节由可选的COMPACT-TLV数据对象组成,同时在其后面还跟有状态指示符(最后的3个字节,不在TLV中)
●假如第一个历史字节被设置为80,那么剩下的历史字节由可选的COMPACT-TLV数据对象组成,最后一个数据对象可能包含一个1字节,或者2字节,或者3字节的状态指示符。
●假如类不指示符被设置为10,那么后续字符为DIR参考数据。
参考数据之后为COMPACT-TLV格式字节
COMPACT-TLV格式用其第一个字节的5-8位表示一个标签(tag),用1-4位表示长度。
在OpenPGP应用中只有TL是73才是与OpenPGP相关的。
它表示一个卡片性能的数据对象,有3个字节的长度
6.1卡片性能
依照iso7816-4那个数据元素由3个软件功能表组成(1字节1个功能表)。
第一个软件功能表指示了卡片所支持的选择方法。
第二个软件功能表是数据编码字节,第三个软件功能表指示了是否支持下列功能:
链命令,扩展Lc/Le域,逻辑通道。
当某一位被设置为1时,表示功能可用(除非特不指定),设置为0表示功能不可用。
位的设置能够同时进行。
关于OpenPGP来讲,只有第三个功能表与应用相关(本版本中链接功能可不能被采纳)。
命令链,长度域和逻辑通道(第三字节)
7命令
OpenPGP应用的功能是依照iso7816-4和iso7816-8的功能来建立的。
因此外部能够使用标准OS命令与其交互。
这取决于当前的OS和命令编码的格式。
7.1ISO标准命令的使用
下面的表格描述了符合ISO标准的操作系统的标准命令,这些命令被OpenPGP所使用。
尽管只有给出的命令包含字节(P1/P2)应该被实现,然而卡片也能够提供其他函数。
其他附加的命令不在本规范的范围之内
7.2命令详述
7.2.1SELECTFILE命令
7.2.2VERIFY命令
7.2.3CHANGEREFERENCEDATA命令
7.2.4RESETRETRYCOUNTER命令
7.2.5GETDATA命令
7.2.6PUTDATA命令
7.2.7GETRESPONSE命令
7.2.8PSO:
COMPUTEDIGITALSIGNATURE命令
7.2.9PSO:
DECIPHER命令
7.2.10INTERNALAUTHENTICATE命令
7.2.11GENERALASYMMETRICKEYPAIR命令
7.2.12GETCHALLENGE命令
7.3不同IO协议下的命令用法
OpenPGP应用使用T=1协议作为标准协议。
其他卡内的协议也能够使用。
OpenPGP能够在任何协议下运行,只要读卡器的PC/SC驱动支持协议。
7.4类型字节定义
关于OpenPGP来讲,所有的命令均使用依照ISO编码的CLA。
CLA为00,其意思为:
标准命令中没有安全信息(SM)的CLA(命令链中最后或者仅有的命令)
7.5安全消息
本版本的OpenPGP没有采纳安全消息
7.6逻辑通道
本版本的OpenPGP没有使用逻辑通道。
所有命令使用通道号为0的通道
7.7状态字节
接收到命令之后,芯片返回两个状态字节(返回码)。
对卡来讲iso7816-4的所有编码都可用,或者也能够自己指定内容。
下面的表格列出了状态字的可能编码(部分)
8文献
DIN(2000):
DINV66291-1(Prenorm):
Chipcardswithdigitalsignatureapplication/function
accordingtoSigGandSigV,Part1:
ApplicationInterface,Version1.0
ISO/IEC(2004):
ISO/IECCD7816-3,Identificationcards-Integratedcircuit(s)cardswithcontacts
-Part3:
Electronicsignalsandtransmissionprotocols
ISO/IEC(2004):
ISO/IECFDIS7816-4,Informationtechnology-Identificationcards–Integratedcircuit(s)cardswithcontacts-Part4:
Inter-industrycommandsforinterchange
ISO/IEC(2004):
ISO/IECDIS7816-6,Identificationcards-Integratedcircuit(s)cardswithcontacts
-Part6:
Interindustrydataelementsforinterchange
ISO/IEC(2004):
ISO/IECDIS7816-8,Identificationcards-Integratedcircuit(s)cardswithcontacts,Part8:
Interindustrycommandsforacryptographictoolbox
RSALaboratories(2002):
PKCS#1v2.1:
RSAEncryptionStandard
TeleTrusTDeutschlande.V.(2000):
GermanOfficeIdentityCard,(ElektronischerDienstausweis),Version1.0
TheInternetSociety(1998):
RFC2440:
OpenPGPMessageF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ISO 智能卡 OpenPGP 应用 功能 规范