《智能卡基础知识desfire卡》由会员分享,可在线阅读,更多相关《智能卡基础知识desfire卡(29页珍藏版)》请在金锄头文库上搜索。
1、智能卡基础知识-Desfire 内容概要 一、Desfire卡识别 二、Desfire卡存储结构举例 三、Desfire卡应用及文件介绍 四、Desfire卡认证与指令 五、Desfire卡主要操作指令时序 一、Desfire卡识别 如何识别出Desfire卡? Desfire卡属于TPYE A卡。 可以通过ATQA编码识别: 0200:M1 S70 4K 0400:M1 S50 1K 0800:CPU 4403:DESFire android.nfc.tech.NfcA类中getAtqa()方法获取。 (ATQA共有16位,根据bit7和bit8来判断是几级UID) 二、Desfire卡存储
2、结构举例 Desfire卡存储结构举例 APP AIDFile idSizeFile Type 1 132 BytesStandard Data File 264 BytesStandard Data File 332 BytesBackup Data File 46*16 BytesCyclic Record File 54 BytesValue File . 2 1 2 3 . . 三、Desfire卡应用及文件介绍 1、Desfire卡存储应用及文件介绍 Desfire卡存储是由应用和文件组成的。 不同的应用可以代表不同使用的场景。存储空间允许的情 况下可以创建多个应用,满足多种用途。
3、每个应用下可以创建多个文件,分为标准文件、备份文 件、循环文件、值文件。 标准文件可存储固定数据,备份文件存储需要更改的一般 存储数据,循环文件存储历史记录文件,值文件存储数值 用于钱包应用。 2、白卡改变key过程 1、寻卡选卡 2、Native TDES认证 3、Native TDES格式的key改为AES格式 key 4、AES卡级的主密钥(PMK)认证 5、格式化卡片 Native TDES 认证过程 StepCommand Data message 1Initiating authentication Command by PCD 0a00 2PICC 3Rnd B (Ek(Rnd
4、B) isdeciphered) 4fb45cb55ef80f05 4PCD generates RndA 0102030405060708 5PCD prepares RndB b45cb55ef80f054f 6RndA + RndB b45cb55ef80f054f0102030405060708 7DESFire Native enciphered ek(RndA + RndB) cead373db80eabf82f898a9e9d073351 8PCDs response and its own Challenge afcead373db80eabf82f898a9e9d073351
5、 9PICCs response 00 10Rnd A (Ek(Rnd A) is deciphered 0203040506070801 11PCD prepare Rnd A 0102030405060708 12PCD compares sent and Received Rnd A 0102030405060708?0102030405060708 13Generate session key* 0203044fb45cb5010203044fb45cb5 Key number:0x00 Key:00000000000000000000000000000000 改变TDES 为AES认
6、证 stepcommand Data message 1Key number to change 80(master key is key number 0,but for AES type two MS bits are set to 10b) 2New key value will be 00000000000000000000000000000000 3Key version of the new Key 00,key version is only required for AES key type 4Currently the application authenticated wi
7、th the application master key (key nr 0x00),and the session key 010203044fb45cb5010203044fb45cb5DESFire native TDES session key 5CRC16 of (New key and version) 7545 CRC16 is calculated on(0000000000000000000000000000000000) 65 byte (0000000000)Padding is added to make multiple of 8 byte 000000000000
8、000000000000000000000075450000000000 7DESFire native enciphering as the current authentication has been performed in native TDES mode 8158047d2c2213ca303b75e1ec4b84eb604fc314f32c40b6 8Send Change key Command C4808158047d2c2213ca303b75e1ec4b84eb604fc314f32c40b 6 9Response of the card 00 session key:0
9、10203044fb45cb5010203044fb45cb5 3、白卡创建应用、文件过程 1、选中应用000 2、创建应用001、002(设置AID、KeySettings、NumOfKeys) 3、选中应用001 4、用卡主密钥(PMK),进行AES认证 5、更改应用001的AMKey ,key全改 6、创建标准文件1 7、创建标准文件2 8、创建备份文件3 9、创建钱包文件4 10、创建循环文件5 11、选中应用002(循环“4”到“10”,根据卡存储结 构创建文件) 4、文件初始化读写数据 1、选中应用001 2、用文件1对应的Key,进行认证 3、读写文件1 4、对文件2、文件3、文
10、件4、文件5操作仿照“2”到“3”过程 5、存在改写备份文件3、钱包文件4、循环文件5文件内容, 写卡完毕后,发C7指令完成真正写卡 四、Desfire卡认证与指令 TDES/AES的认证 根据下图,参见第三章数据。 卡操作指令: Security Related Commands: Authenticate、ChangeKeySettings、ChangeKey、GetKeyVersion 卡操作指令: PICC Level Commands: CreateApplication、DeleteApplication、GetApplication、SelectApplication、 Form
11、atPICC、GetVersion 卡操作指令: Application Level Commands: GetFileIDs、GetFileSettings、ChangeFileSettings、CreateStdDataFile、 CreateBackupDataFile、CreateValueFile、CreateLinearRecordFile、 CreateCyclicRecordFile、DeleteFile 卡操作指令: Data Manipulation Commands: ReadData、WriteData、GetValue、Credit (increase)、Debit
12、(decrease)、 LimitedCredit、WriteRecord、ReadRecords、ClearRecordFile、 CommitTransaction、AbortTransaction 卡操作指令举例: CreateApplication Send:CA 00 00 01 0B 8E Receive:00 卡操作指令举例: CreateStaDataFile Send:CD 01 01 34 12 20 00 00 Receive:00 注1:设置通讯协议,01代表send with MAC, 注2:2Byte设置读写权限相关的key,每个key number占半个Byte,
13、低字节在 前。 高字节 低字节 *发送命令时低字节在前 注3:低字节在前的HEX码,20代表文件大小为32字节 CmdFile Comset Access rightFilesize Cd01013412200000 注:1注:2注:3 Read rightWrite right Read & write rightChange access right Key1Key2Key3Key4 卡操作指令举例: CreateBackupDataFile Send:CD 01 01 34 12 20 00 00 Receive:00 注1:设置通讯协议,01代表send with MAC, 注2:2B
14、yte设置读写权限相关的key,每个key number占半个Byte,低字节在 前。 高字节 低字节 *发送命令时低字节在前 注3:低字节在前的HEX码,20代表文件大小为32字节,BackupdataFile实际在 卡中占用的空间大小是建立时filesize的两倍 CmdFile Comset Access rightFilesize CB01013412200000 注:1注:2注:3 Read rightWrite right Read & write rightChange access right Key1Key2Key3Key4 卡操作指令举例: CreateValueFile
15、Send:CC 01 01 34 12 00 00 00 00 50 C3 00 00 C8 00 00 00 03 Receive:00 注1、2参见CreateStaDataFile。 注3: 设置钱包文件的最小值,可为负,低字节在前(4byte signed integer )。 注4: 设置钱包文件的最大值,低字节在前(4byte signed integer)。 注5: 设置钱包初始值。 注6: bit 0控制limitedCredit命令是否可用、bit 1 控制 freegetvalue命令是否可 用,0可用1不可 CmdFile Comset Access right Lowe
16、r limit Upper limit valueLimited Credit Enabled CC010134124byte4byte4byte00 注:1注:2注:3注:4注:5注:6 卡操作指令举例: CreateCyclicRecordFile Send: C0 01 01 34 12 20 00 00 10 00 00 Receive:00 注1、2参见CreateStaDataFile。 注3:此字节代表一条多大,低字节在前的HEX码,0x20代表一条记录大小为 32字节。 注4:最多记多少条记录,低字节在前的HEX码,0x10表示最多记16条记录 。 CmdFile ComsetAccess rightRecordsizeMaxNumofRecord C00101341220 00 0010 00 00 注:1注:2注:3注:4 卡操作指令举例: ReadData Send: BD 03 000000 1500