- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
本文是自己学习SCP02(SecureChannelProtocol02)的一次记录,分析如何基于SCP02
与安全域进行安全通信
本文规范细节参考GlobalPlatformCardSpecification2.2.1,下文引用该文档时会简称
GPC2.2.1
测试环境
一张实现了GPC2.2.1的智能卡
首先,根据GPC2.2.1-E.1.1章节可知
SCP02支持多种配置选项,比如可以配置初始化安全通道使用显式(explicit)模式
还是隐式(implicit)模式,使用3个安全通道密钥(S-ENC,S-MAC和DEK)还是一个基
本密钥(basekey)等
安全域的SCP02配置由i参数决定
所以与安全域建立SCP02通道前需要确定安全域的SCP02i参数的值
这里我已经事先创建好一个SCP02i值为0x55的安全域,下文介绍在不知道的情况下如何
获取
根据GPC2.2.1-H.2StructureofCardRecognitionData章节描述
Tag64.TheOID{globalPlatform4scpi}identifiestheSecureChannelProtocolofthe
IssuerSecurityDomain.scpidentifiestheSecureChannelProtocolidentifierasdefined
insection10.7-SecureChannelProtocolIdentifier.iidentifiestheeventual
implementationoptionsasdefinedinappendixD.1.1-SCP01SecureChannelforSCP01,
appendixE.1.1-SCP02SecureChannelforSCP02orappendixF.1.1-SCP10Secure
ChannelforSCP10
可以得知SCP02i参数的值在CardRecognitionData的Tag64中
CardRecognitionData可以使用GETDATA指令获取到,具体参考GPC2.2.1-11.3GET
DATACommand,以我的测试卡为例,具体的APDU交互如下
00A4040010A0000000660000000000000000000002#SELECTSD
6F188410A0000000660000000000000000000002A5049F6501FF9000
80CA006600#GETDATA
663D733B06072A864886FC6B01600B06092A864886FC6B020202630906072A864886FC6B03640B06092A864886FC
6B040255640B06092A864886FC6B0480009000
GETDATA响应中640B06092A864886FC6B040255就包含了SCP02i参数
64#Applicationtag4
0B#LENGTH
06#OIDTAG
09#OIDLENGTH
2A864886FC6B040255#{globalPlatform4scpi}
参考GPC2.2.1-H.1DataValues章节,可对2A864886FC6B040255进一步解析
2A864886FC6B#表示globalPlatformOID,固定值
04#固定值
02#表示SCP02
55#i值
因此我的测试卡的安全域的SCP02i参数的值为0x55
每个位的含义见TableE-1:ValuesofParameteri
b8b7b6b5b4b3b2b1Description
3SecureChannel
Reserved1
文档评论(0)