AN10834-MIFARE ISOIEC 14443 PICC selection.pdf

2023-11-01 10:59

本文主要是介绍AN10834-MIFARE ISOIEC 14443 PICC selection.pdf,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

AN10834-MIFARE ISOIEC 14443 PICC selection.pdf

1简介
在读卡器(系统)和智能卡之间交换数据之前,必须正确选择智能卡。该卡选择过程(卡激活)在用于非接触式接近系统的ISO14443-3中进行了描述。非接触式应用的急剧增加使得在读卡器领域从可能数量的卡中正确选择一张非接触式卡变得更加重要。这是在制定ISO标准时预见到的,因此该标准详细描述了应用程序必须如何处理它们。

1.1如何使用本文档
选卡过程可分为两个部分:首先,通信层描述如何选择单个PICC(无论卡或应用程序的类型如何)。这一点很重要,因为规定非接触式智能卡通信的ISO标准仅描述了该通信层,与应用无关。在现场可以找到越来越多不同类型的卡和应用程序,它们都使用ISO/IEC 14443。
第二步,在选择了一张卡之后,是选择正确的应用程序,处理多个应用程序(或多张卡),或者正确地忽略外国应用程序((或多个卡)。
本文件第2节介绍了ISO/IEC 14443如何选择单个卡。防碰撞程序对于A型和B型卡都是强制性的。
除了卡激活程序之外,系统本身还必须确保PCD可以选择正确的应用程序,无论是在一张卡上使用多个应用程序,还是在不同的卡上使用不同的应用程序。在许多系统中,建议让系统选择正确的应用程序,而不是用户,这保证了快速安全的交易。如第3节所示。

在本文件中,术语“MIFARE卡”是指使用MIFARE Classic、MIFARE Ultralight、MIFARE Plus或MIFARE DESFire产品系列中的IC的非接触式卡。

ISO/IEC 14443-3描述了如何选择(“激活”)单个卡。该卡激活程序通常与现场卡的数量和应用程序的数量无关:
•此程序确保在卡激活过程中,独立于现场可用卡的数量,正确选择单个卡。
•此程序确保在整个卡激活或卡交易过程中,独立于移入字段的卡的数量,正确选择一张卡。
•此程序确保在整个卡激活或卡交易过程中,独立于移入字段的卡的数量,始终正确选择一张卡。

注:出于方便的原因,在许多非接触式系统中,卡会连续移动到现场,然后从现场取出。因此,在这样的系统中,通常无法保证交易会完成。这与卡激活程序或在单个读卡器中使用多张卡完全无关。
必须考虑一些额外的措施,以确保在整个卡交易过程中的正确功能:要么卡槽必须与接触式读卡器槽类似地使用,要么应用程序(卡上或系统中)必须为那些可能中断交易的情况提供恢复程序(撕裂保护或备份管理)。

2.1卡片轮询
ISO/IEC 14443规定,遵循ISO/IEC 14443A的板卡不得干扰遵循ISO/IEC 14443 B的板卡,反之亦然。在任何情况下,卡激活过程都以请求命令(REQA或REQB)开始,该命令仅用于检查读卡器字段中是否至少有一张卡。REQA或REQB必须在载波接通后发送,在开始传输之前至少等待5毫秒。该过程如图1所示。
注:REQA和REQB或REQB和REQA之间所需的最短时间为5毫秒。
注:对于NFC设备,“卡轮询”和“打开RF”之间必须有另一个块,因为NFC设备需要检查是否已经有可用字段。如果检测到外部场,则不允许读取器打开其自身的RF场。

在某些应用中,可能需要定期重置RF,而在其他一些应用中,载波只打开很短时间。在所有情况下,每次通信都以REQA(或REQB)开始。如果收到ATQA(或ATQB),则第2.2节中所述的“激活卡”程序会选择检测到的卡。如果没有接收到ATQA(或ATQB),则使用REQB(或REQA)。
如果系统只要求允许一张具有相关应用程序的卡进入现场,则PCD必须选择所有相关卡。然后取消选择具有外国应用程序的应用程序。必须检查应用程序正确的剩余卡:如果出示了多张此类卡,PCD必须拒绝交易。这不是通信层的一部分,在第3节中进行了描述。

2.2激活卡
卡片激活会在ATQA之后选择一张卡片。
2.2.1符合ISO/IEC 14443A的防碰撞程序
对于符合ISO/IEC 14443A的PICC,防撞程序是强制性的。恩智浦MIFARE的所有产品都支持ISO/IEC14443A。
“激活卡”包括单个卡的防冲突和选卡(适用于a型和B型)。对于符合ISO/IEC 14443-4的PICC(如MIFARE DESFire、非接触式支付卡、电子护照等),激活卡包括传输协议的正确设置,如图2所示。

3选择正确的应用程序
由于在一个标准系统中,活动PCD字段中可以有多个PICC,因此系统必须选择正确的一个,并且必须取消选择所有其他PICC。
在任何情况下,系统都必须能够将有外国申请的卡与有自己申请的卡分开,并将“外国卡”正确地排除在自己的选择过程之外。该系统必须能够排除包含外国应用程序的卡,尤其是在那些系统要求操作仅限于“一张卡”的情况下。

注:
这个选择过程与应用程序有关,但与通信无关!
这种选择的原则总是一样的:选择并查询字段中的每一张卡,以检查它是否包含相关应用程序。如果字段中有多张卡包含相关应用程序,则系统必须优先处理这些卡或拒绝交易。
如果只有一张卡包含相关应用程序,则系统必须执行交易——与字段中的卡数无关。
以下部分描述了如果系统中仅使用一种类型的卡(例如仅MIFARE产品),如何正确选择相关应用程序。然而,该过程当然也可以扩展到使用不同类型的卡操作应用程序。

3.1选择MIFARE产品应用
在许多情况下,系统需要选择一张MIFARE产品卡(如MIFARE Classic 1K或MIFARE经典4K或MIFARE Ultralight)。在所有这些情况下,PCD不使用传输协议,而是仅根据ISO/IEC 14443-3选择卡。之后,应用程序运行与应用程序相关的命令(如MIFARE Classic 1K或MIFARE经典4K的Authentication或MIFARE Ultralight的Read)。

如图3(无MAD)或图4(使用MAD)所示,选择MIFARE Classic 1K或MIFARE经典4K的过程使用激活卡而不激活传输协议。在这个过程中,每个符合ISO/IEC14443-4的卡都被选择并正确地停止。提供MIFARE仿真和ISO/IEC14443-4协议层的双接口卡在这里被自动正确地激活为MIFARE产品卡。
如果现场有多张带有相关应用程序的MIFARE产品卡,则此过程将返回错误。“重新激活卡”使用WUPA和Select命令。
注意:如果使用Read命令而不是Authentication,那么MIFARE Ultralight版本也可以使用如图3所示的相同过程。

3.2选择符合ISO14443-4标准的应用程序
在许多使用符合ISO/IEC 14443-4的卡的应用中,需要从多个卡中正确选择一个卡。即使交易需要寻址多张卡,通常每个系统都使用按顺序寻址卡的交易流。因此,即使ISO/IEC 14443协议激活允许并行使用CID和多个卡,也应分别激活(和停用)每个卡。
注意:为了更好的通信稳定性,如果没有其他要求,建议仅激活并选择当前交易中正在使用的卡。
图5显示了在DESFire卡上选择应用程序的示例。不包含相关应用程序的所有其他卡都会被系统忽略(即正确取消选择)。如果向读卡器出示了一张以上具有此类相关应用程序的DESFire卡,系统将拒绝交易。

“重新激活卡”使用WUPA和Select命令。
使用ISOSelect,相同的原理可以用于选择其他类型卡上的其他应用程序,例如MIFARE Plus SL3卡上的票务应用程序、JCOP卡上的支付应用程序或eMRTD上的电子护照应用程序,或智能手机上的数字MIFARE卡。

3.3在一次交易中使用多张卡
在某些情况下,系统可能需要在同一交易期间并行处理两张或多张卡。在这种情况下,系统可以在一次交易期间使用协议的CID来激活和寻址每个卡。
选择过程与图5所示相同,可以使用不同的CID来选择每一张卡,处理的次数与字段中的卡一样多。

3.4 MIFARE产品的检测
关于如何检测哪种MIFARE产品被呈现给读者的详细信息,请参阅[4]。
如果系统的目标是与MIFARE产品以及MIFARE 2GO一起工作,那么关于如何设计应用程序选择的所有相关信息都可以在[5]和[6]中找到。

这篇关于AN10834-MIFARE ISOIEC 14443 PICC selection.pdf的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/322486

相关文章

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

使用Python实现PDF与SVG互转

《使用Python实现PDF与SVG互转》SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式,本文将详细介绍如何使用Python实现SVG和PDF之间的相互转... 目录使用工具使用python将SVG转换为PDF使用Python将SVG添加到现有PDF中使用Python将PD

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主