GP SCP02协议 - 认证&个人化实例详解

一、概述

在智能卡中,卡可卡外实体都可以作为安全消息的发送实体和接收实体。SCP02是卡和卡外实体之间,用于保证实体认证、数据完整性和保密性的安全通道协议。

二、apdu命令

INITIALIZE UPDATE 命令

CodeValueMeaning
CLA‘80’
INS‘50’INITIALIZE UPDATE
P1‘xx’Key version
P2‘xx’Key Identifier
Lc‘08’Length of host challenge
Data‘xx xx…’Host challenge
Le‘00’

EXTERNAL AUTHENTICATE 命令

CodeValueMeaning
CLA‘84’
INS‘82’EXTERNAL AUTHENTICATE
P1‘xx’Security level
P2‘00’Reference control parameter P2
Lc‘10’Length of host cryptogram and MAC
Data‘xx xx…’Host cryptogram and MAC
Le
三、apdu命令实例

命令1:选择应用
命令2:INITIALIZE UPDATE
命令3:EXTERNAL AUTHENTICATE
命令4:Storedata info1
命令5:Storedata info2

//----------------------------------------------------------------------------------------------------
cm>  /send 00a404000701020304040500
 => 00 A4 04 00 07 01 02 03 04 04 05 00                                                           
 <= 90 00

cm>  /send 80500000080102030405060708
 => 80 50 00 00 08 01 02 03 04 05 06 07 08                                                   
 <= 00 00 F9 02 71 E3 BB AD BD CD FF 02 00 01 71 CF A1 BC 96 CF 29 D3 3E 95 48 F8 1B FE 90 00

cm>  /send 84820100104CBB168327EB4571AB5AF6CED2CB807F
 => 84 82 01 00 10 4C BB 16 83 27 EB 45 71 AB 5A F6 CE D2 CB 80 7F                                   
 <= 90 00

cm>  /send 84E200001B020210010101010101010101010101010101016F8FDC36D3538D7D
 => 84 E2 00 00 1B 02 02 10 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 6F 8F DC 36 D3 53 8D 7D   
 <= 90 00

cm>  /send 84E200001B030310020202020202020202020202020202028FC5AF3B817DEA31
 => 84 E2 00 00 1B 03 03 10 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 8F C5 AF 3B 81 7D EA 31 
 <= 90 00                                              
//----------------------------------------------------------------------------------------------------

四、命令计算过程分解

前提条件:
STATIC ENC KEY: 404142434445464748494A4B4C4D4E4F   
STATIC MAC KEY: 404142434445464748494A4B4C4D4E4F   
STATIC DEK KEY: 404142434445464748494A4B4C4D4E4F

解析INITIALIZE UPDATE命令返回数据:

Key diversification dataKey informationSequence CounterCard challengeCard cryptogram
0000F90271E3BBADBDCDFF02000171CFA1BC96CF29D33E9548F81BFE

1、第一步由SCP02 static keys计算SESSION KEY:
(1)ENC SESSION KEY计算方法:   
使用算法:3DES - CBC模式加密(输入数据不再补位,icv为0)
使用key:static ENC key (404142434445464748494A4B4C4D4E4F)
输入数据:2字节S-ENC常量 + 2字节Sequence Counter + 12字节‘00’填充 (01820001000000000000000000000000)
ENC SESSION KEY: 25C9794A1205FF244F5FA0378D2F8D59

(2)C-MAC SESSION KEY计算方法:    
使用算法:3DES - CBC模式加密(输入数据不再补位,icv为0)
使用key:static ENC key (404142434445464748494A4B4C4D4E4F)
输入数据:2字节C-MAC常量 + 2字节Sequence Counter + 12字节‘00’填充 (01010001000000000000000000000000)
ENC SESSION KEY: 9BED98891580C3B245FE9EC58BFA8D2A

2、Host Authentication Cryptogram计算方法:
使用算法:3DES CBC运算,icv为0
使用key: ENC SESSION KEY(25C9794A1205FF244F5FA0378D2F8D59)
输入数据:2字节Sequence Counter + 6字节Card Challenge + 8字节host challenge,数据需要‘80’方式填充(0001 71CFA1BC96CF 0102030405060708 8000000000000000)
结果:DBE5F78F49944BA28198A656419307304CBB168327EB4571
Host Authentication Cryptogram为取上述结果的后8字节:4CBB168327EB4571

3、8482 C-MAC 计算
使用算法:RetailMAC3 ,前面都为des加密,最后一组为3des加密,    icv为0
使用key: C-MAC SESSION KEY ( 9BED98891580C3B245FE9EC58BFA8D2A     )
输入数据: “8482” + LEVEL(“01”)+ “0010” + HostCrypt(第四步的值) + “800000”
ToMac数据:  8482010010 4CBB168327EB4571 800000
结果:  AB5AF6CED2CB807F
8482命令发送数据: 84820100104CBB168327EB4571AB5AF6CED2CB807F  (MAC数据+MAC)

注意1:EXTERNAL AUTHENTICATE命令的P1表示安全级别,LEVEL=01表示需要CMAC,那么随后所有经过安全通道的命令都要验证CMAC。如果LEVEL=00,那么加下来的命令不需要MAC验证。

4、storedata命令 mac计算
注意2:EXTERNAL AUTHENTICATE之后的命令中,计算CMAC的icv都是用上条apdu命令的CMAC值。先将上次命令的Mac值,用singledes加密,密钥为session mac的前8个字节,icv为0。

(1)第一条storedata
AB5AF6CED2CB807F   =加密完=> 56556286C0325DA9
icv: 56556286C0325DA9
使用key: session mac key(9BED98891580C3B245FE9EC58BFA8D2A)
输入数据:84E200001B02021001010101010101010101010101010101 
结果:6F8FDC36D3538D7D
最后发送的命令:84E200001B020210010101010101010101010101010101016F8FDC36D3538D7D

(2)第二条storedata
6F8FDC36D3538D7D  =加密完=>  0B0B61C8761F80B0
icv: 0B0B61C8761F80B0
使用key: session mac key(9BED98891580C3B245FE9EC58BFA8D2A)
输入数据:84E200001B03031002020202020202020202020202020202 
结果:8FC5AF3B817DEA31
最后发送的命令:84E200001B030310020202020202020202020202020202028FC5AF3B817DEA31

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: gp scp03协议是一种用于保护智能卡(SIM卡)上敏感数据和实现安全通信的协议。下面是gp scp03协议的流程: 1. 初始化阶段:在这个阶段,首先需要建立与智能卡的安全通道。终端设备发送初始化命令到智能卡,卡片通过认证验证终端设备,并生成一个公共密钥对和一个会话密钥。 2. 外部认证阶段:通过会话密钥进行外部认证,终端设备和智能卡都需要生成一些认证数据,并进行互相验证。这个阶段主要是确保双方身份的合法性,并认证双方的身份。 3. 密钥派生阶段:通过使用会话密钥,生成一系列用于后续通信的密钥。这些密钥用于保护数据的机密性、完整性和可用性。 4. 安全通信阶段:在这个阶段,终端设备和智能卡通过会话密钥进行加密和解密操作,以保护通信数据的机密性。同时,还使用会话密钥进行消息认证码(MAC)计算,以确保通信数据的完整性。 5. 会话密钥更新阶段:为了提高安全性,会话密钥需要定期更新。终端设备和智能卡通过一系列协商和认证过程,生成新的会话密钥,并更新到双方的安全通道中,以确保后续通信的安全性。 总体来说,gp scp03协议通过建立安全通道、进行身份认证和密钥派生,以及使用会话密钥进行加密和消息认证,实现了对智能卡上敏感数据的保护和安全通信的需求。这个协议的流程设计合理,安全性较高,适用于各种需要保护数据和实现安全通信的应用场景。 ### 回答2: GP SCP03(Global Platform Secure Channel Protocol 03)是一种安全通信协议,用于在全球平台(Global Platform)环境下建立和维护一个安全的通道。该协议提供了保护存储在智能卡中的数据和执行的应用程序的机制。 GP SCP03的流程如下: 1. 初始化:在建立安全通道之前,智能卡和终端之间需要进行初始化。终端会发送一个初始化请求给智能卡,并协商使用的安全算法和密钥等参数。 2. 密钥协商:智能卡和终端根据初始化阶段协商的参数,生成用于通信的会话密钥。这个密钥将用于后续的数据加密和解密过程。 3. 建立安全通道:智能卡和终端根据协商好的参数进行安全通道的建立。在这个过程中,终端计算一个挑战码(Challenge),发送给智能卡进行验证。智能卡使用会话密钥计算一个响应码(Response),并返回给终端。终端验证响应码的有效性后,安全通道建立完成。 4. 数据传输:建立安全通道后,智能卡和终端可以进行安全的数据传输。数据传输过程中,使用会话密钥进行数据的加密和解密,以保证数据的机密性。 5. 安全通道维护:在数据传输期间,智能卡和终端可以通过协商好的协议对通道进行维护。例如,当通道密钥过期或不安全时,可以重新协商生成新的密钥。 总结来说,GP SCP03协议流程包括初始化、密钥协商、建立安全通道、数据传输和安全通道维护等步骤。通过这个流程,智能卡和终端可以安全地进行通信,保护存储在智能卡中的数据和应用程序的安全。 ### 回答3: GP SCP03(GlobalPlatform Secure Channel Protocol 03)是一种用于建立安全通道的协议,主要用于保护智能卡与读卡器之间的通信安全。 GP SCP03协议的流程如下: 1. 随机数交换:通信的双方,即智能卡和读卡器,首先互相交换随机数。智能卡和读卡器各自生成一个随机数,并将生成的随机数发送给对方。 2. 密钥派生:双方使用交换后的随机数作为输入,通过派生算法生成会话密钥。该密钥将用于后续的加密和解密操作,确保通信的机密性。 3. 密钥协商:双方使用加密算法和密钥派生算法,协商确定用于后续通信的加密和解密密钥,并进行密钥协商验证。密钥协商过程中的各个步骤,如密钥计算、密钥验证等,都需要使用会话密钥进行加密和解密。 4. 安全消息传输:通信双方使用协商好的密钥进行加密和解密操作,实现安全通信。在传输过程中,数据包被加密以保护数据的机密性,同时还进行了消息完整性校验,保证传输的数据未被篡改。 GP SCP03协议通过以上流程,实现了智能卡与读卡器之间的安全通信。通过交换随机数、密钥派生和协商、以及加密和解密操作,确保通信过程中数据的机密性和完整性。这为智能卡应用提供了更高的安全性,保护用户的隐私和数据安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值