您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 02智能卡基础知识Desfire卡
智能卡基础知识-Desfire内容概要一、Desfire卡识别二、Desfire卡存储结构举例三、Desfire卡应用及文件介绍四、Desfire卡认证与指令五、Desfire卡主要操作指令时序一、Desfire卡识别如何识别出Desfire卡?Desfire卡属于TPYEA卡。可以通过ATQA编码识别:0200:M1S704K0400:M1S501K0800:CPU4403:DESFireandroid.nfc.tech.NfcA类中getAtqa()方法获取。(ATQA共有16位,根据bit7和bit8来判断是几级UID)二、Desfire卡存储结构举例Desfire卡存储结构举例APPAIDFileidSizeFileType1132BytesStandardDataFile264BytesStandardDataFile332BytesBackupDataFile46*16BytesCyclicRecordFile54BytesValueFile...2123......三、Desfire卡应用及文件介绍1、Desfire卡存储应用及文件介绍•Desfire卡存储是由应用和文件组成的。•不同的应用可以代表不同使用的场景。存储空间允许的情况下可以创建多个应用,满足多种用途。•每个应用下可以创建多个文件,分为标准文件、备份文件、循环文件、值文件。•标准文件可存储固定数据,备份文件存储需要更改的一般存储数据,循环文件存储历史记录文件,值文件存储数值用于钱包应用。2、白卡改变key过程1、寻卡选卡2、NativeTDES认证3、NativeTDES格式的key改为AES格式key4、AES卡级的主密钥(PMK)认证5、格式化卡片NativeTDES认证过程StepCommandDatamessage1InitiatingauthenticationCommandbyPCD>0a002PICC<3RndB(Ek(RndB)isdeciphered)=4fb45cb55ef80f054PCDgeneratesRndA=01020304050607085PCDpreparesRndB’=b45cb55ef80f054f6RndA+RndB’=b45cb55ef80f054f01020304050607087DESFireNativeencipheredek(RndA+RndB’)=cead373db80eabf82f898a9e9d0733518PCD’sresponseandit’sownChallenge>afcead373db80eabf82f898a9e9d0733519PICC’sresponse<0010RndA(Ek(RndA)isdeciphered=020304050607080111PCDprepareRndA=010203040506070812PCDcomparessentandReceivedRndA=0102030405060708?010203040506070813Generatesessionkey*=0203044fb45cb5010203044fb45cb5Keynumber:0x00Key:00000000000000000000000000000000改变TDES为AES认证stepcommandDatamessage1Keynumbertochange=80(masterkeyiskeynumber0,butforAEStypetwoMSbitsaresetto10b)2Newkeyvaluewillbe=000000000000000000000000000000003KeyversionofthenewKey=00,keyversionisonlyrequiredforAESkeytype4Currentlytheapplicationauthenticatedwiththeapplicationmasterkey(keynr0x00),andthesessionkey=010203044fb45cb5010203044fb45cb5DESFirenativeTDESsessionkey5CRC16of(Newkeyandversion)=7545CRC16iscalculatedon(0000000000000000000000000000000000)65byte(0000000000)Paddingisaddedtomakemultipleof8byte=0000000000000000000000000000000000754500000000007DESFirenativeencipheringasthecurrentauthenticationhasbeenperformedinnativeTDESmode=8158047d2c2213ca303b75e1ec4b84eb604fc314f32c40b68SendChangekeyCommand>C4808158047d2c2213ca303b75e1ec4b84eb604fc314f32c40b69Responseofthecard<00sessionkey:010203044fb45cb5010203044fb45cb53、白卡创建应用、文件过程1、选中应用0002、创建应用001、002(设置AID、KeySettings、NumOfKeys)3、选中应用0014、用卡主密钥(PMK),进行AES认证5、更改应用001的AMKey,key全改6、创建标准文件17、创建标准文件28、创建备份文件39、创建钱包文件410、创建循环文件511、选中应用002(循环“4”到“10”,根据卡存储结构创建文件)4、文件初始化读写数据1、选中应用0012、用文件1对应的Key,进行认证3、读写文件14、对文件2、文件3、文件4、文件5操作仿照“2”到“3”过程5、存在改写备份文件3、钱包文件4、循环文件5文件内容,写卡完毕后,发C7指令完成真正写卡四、Desfire卡认证与指令TDES/AES的认证根据下图,参见第三章数据。卡操作指令:SecurityRelatedCommands:Authenticate、ChangeKeySettings、ChangeKey、GetKeyVersion卡操作指令:PICCLevelCommands:CreateApplication、DeleteApplication、GetApplication、SelectApplication、FormatPICC、GetVersion卡操作指令:ApplicationLevelCommands:GetFileIDs、GetFileSettings、ChangeFileSettings、CreateStdDataFile、CreateBackupDataFile、CreateValueFile、CreateLinearRecordFile、CreateCyclicRecordFile、DeleteFile卡操作指令:DataManipulationCommands:ReadData、WriteData、GetValue、Credit(increase)、Debit(decrease)、LimitedCredit、WriteRecord、ReadRecords、ClearRecordFile、CommitTransaction、AbortTransaction卡操作指令举例:CreateApplicationSend:CA0000010B8EReceive:00卡操作指令举例:CreateStaDataFileSend:CD01013412200000Receive:00注1:设置通讯协议,01代表sendwithMAC,注2:2Byte设置读写权限相关的key,每个keynumber占半个Byte,低字节在前。高字节低字节*发送命令时低字节在前注3:低字节在前的HEX码,20代表文件大小为32字节CmdFileComsetAccessrightFilesizeCd01013412200000注:1注:2注:3ReadrightWriterightRead&writerightChangeaccessrightKey1Key2Key3Key4卡操作指令举例:CreateBackupDataFileSend:CD01013412200000Receive:00注1:设置通讯协议,01代表sendwithMAC,注2:2Byte设置读写权限相关的key,每个keynumber占半个Byte,低字节在前。高字节低字节*发送命令时低字节在前注3:低字节在前的HEX码,20代表文件大小为32字节,BackupdataFile实际在卡中占用的空间大小是建立时filesize的两倍CmdFileComsetAccessrightFilesizeCB01013412200000注:1注:2注:3ReadrightWriterightRead&writerightChangeaccessrightKey1Key2Key3Key4卡操作指令举例:CreateValueFileSend:CC010134120000000050C30000C800000003Receive:00注1、2参见CreateStaDataFile。注3:设置钱包文件的最小值,可为负,低字节在前(4bytesignedinteger)。注4:设置钱包文件的最大值,低字节在前(4bytesignedinteger)。注5:设置钱包初始值。注6:bit0控制limitedCredit命令是否可用、bit1控制freegetvalue命令是否可用,0可用1不可CmdFileComsetAccessrightLowerlimitUpperlimitvalueLimitedCreditEnabledCC010134124byte4byte4byte00注:1注:2注:3注:4注:5注:6卡操作指令举例:CreateCyclicRecordFileSend:C001013412200000100000Receive:00注1、2参见CreateStaDataFile。注3:此字节代表一条多大,低字节在前的HEX码,0x20代表一条记录大小为32字节。注4:最多记多少条记录,低字节在前的HEX码,0x10表示最多记16条记录。CmdFileComsetAccessrightRecordsizeMaxNumofRecordC001013412200000100000注:1注:2注:3注:4卡操作指令举例:ReadDataSend:BD03000000150000(读file03中0x15个字节数据)Receive:000102030405060708090A0B0C0D0E0F101112131415WriteData(向file03写0x15个字节数据)Send:3D030000001500000102030405060708090a0b0c0d0e0f101112131415Receive:00GetValueSend:6C04(获取文件04中金额值)Receive:00C8000000CreditSend:0C0402000000(增加文件04金额)Receive:00DedbitSend:DC0402000000(减少文件04金额)Receive:00卡操作指令举例:ReadRecordsSend:BB05000000150000(记录文件05中读取0x15个字节数据)Receive:000102030405060708090A0B0C0D0E0F101112131415WriteRecord(记录文件05中写入0x15个字节数据)Send:3B050000001500000102030405060708090a0b0c0d0e0f101112131415Receive:00ClearRecor
本文标题:02智能卡基础知识Desfire卡
链接地址:https://www.777doc.com/doc-3639584 .html