m1卡工作原理和相关总结
Mifare 1非接触IC卡技术说明
1 特性
1.1 MIFARE RF 接口 (ISO/IEC 14443 A)
· 非接触数据传输并提供能源(不需电池)
· 工作距离:可达100mm (取决于天线尺寸结构)
· 工作频率:13.56 MHz
· 快速数据传输:106 kbit/s
· 高度数据完整性保护:16 Bit CRC,奇偶校验,位编码,位计数
· 真正的防冲突
· 典型票务交易: < 100 ms (包括备份管理)
1.2 EEPROM
· 1 Kbyte,分为16个区,每区4个块,每块16字节。
· 用户可定义内存块的读写条件
· 数据耐久性10年
· 写入耐久性100.000次
1.3 安全性
· 相互三轮认证(ISO/IEC DIS9798-2)
· 带重现攻击保护的射频通道数据加密
· 每区(每应用)两个密钥,支持密钥分级的多应用场合
· 每卡一个唯一序列号
· 在运输过程中以传输密钥保护对EEPROM的访问权
2 概述
MIFARE MF1是符合ISO/IEC 14443A的非接触智能卡。其通讯层(MIFARE RF 接口)符合ISO/IEC 14443A标准的第2和第3部分。其安全层支持域检验的CRYPTO1数据流加密。
2.1 非接触能源和数据传递
在MIFARE卡中,芯片连接到一个几匝的天线线圈上,并嵌入塑料中,形成了一个无源的非接触卡。不需要电池。当卡接近读写器天线时,高速的RF通讯接口将以106 kBit/s 的速率传输数据。
2.2 防冲突
智能的防冲突功能可以同时操作读写范围内的多张卡。防冲突算法逐一选定每张卡,保证与选定的卡执行交易,不会导致与读写范围内其他卡的数据冲突。
2.3 用户便捷性
MIFARE是针对用户便捷性优化的。例如,高速数据传输使得完整的票务交易在不到100 ms内处理完毕。因此用户不必在读写器天线处停留,形成高的通过率,减少了公共汽车的登车时间。在交易时,MIFARE卡可以留在钱包里,甚至钱包里有硬币也不受影响。
2.4 安全
安全的重点是防欺诈。相互随机数和应答认证、数据加密和报文鉴别检查和,防止各种破解和篡改,使其更适于票务应用。不可更改的序列号,保证了每张卡的唯一性。
2.5 多应用功能
MIFARE提供了可以与CPU卡媲美的真正多应用功能。每区两个不同的密钥支持采用分级密钥的系统。
3 功能说明
3.1 方框图说明
MF1 S50集成电路芯片内含1 Kbyte EEPROM、RF接口和数字控制单元。能量和数据通过天线传输,卡中天线为几匝线圈,直接连接到芯片上。.不再需要额外的组件。
· RF接口:
– 调制解调器
– 检波器
– 时钟发生器
– 上电复位
– 稳压器
· 防冲突:读写范围内的几张卡可以逐一选定和操作。
· 认证:在所有存储器操作之前进行认证过程,以保证必须通过各块指定的密钥才能访问该块。
· 控制和算术逻辑单元:数值以特定的冗余格式存储,可以增减。
· EEPROM接口
· 加密单元:域验证的CRYPTO1 数据流加密,保证数据交换的安全。
· EEPROM: 1 Kbyte,分16区,每区4块。每一块有16字节。每区的最后一块称作“尾块”,含有两个密钥和本区各块的读写条件。
3.2 通讯原理
命令由读写器发出,根据相应区读写条件受数字控制单元的控制。
3.2.1 呼叫(REQUEST STANDARD / ALL)
卡上电复位后,通过发送request应答码(ATQA 符合ISO/IEC 14443A),能够回应读写器向天线范围内所有卡发出的request 命令。
3.2.2 防冲突循环(ANTICOLLISION LOOP)
在防冲突循环中,读回一张卡的序列号。如果在读写器的工作范围内有几张卡,它们可以通过唯一序列号区分开来,并可选定以进行下一步交易。未被选定的卡转入待命状态,等候新的request命令。
3.2.3 选卡(SELECT CARD)
读写器通过select card命令选定一张卡以进行认证和存储器相关操作。该卡返回选定应答码(ATS= 08h),明确所选卡的卡型。
3.2.4 三轮认证(3 PASS AUTHENTICATION)
选卡后,读写器指定后续读写的存储器位置,并用相应密钥进行三轮认证。认证成功后,所有的存储器操作都是加密的。
3.2.5 存储器操作
认证后可执行下列操作:
· 读数据块
· 写数据块
· 减值:减少数据块内的数值,并将结果保存在临时内部数据寄存器中。
· 加值:增加数据块内的数值,并将结果保存在数据寄存器中。
· 恢复:将数据块内容移入数据寄存器。
· 转存:将临时内部数据寄存器的内容写入数值块。
3.3 数据完整性
在读写器和卡之间的非接触通讯链接中实施下列机制,以保证数据传输的可靠性:
· 每块16 bit CRC
· 每字节的奇偶位
· 位计数检查
· 位编码,以区分”1”、 ”0”和无信息。
· 通道监控(协议序列和位流分析)
3.4 安全
采用符合ISO 9798-2的三轮认证,以保证高度的安全性。
3.4.1 三轮认证流程
a) 读写器指定要访问的区,并选择密钥A或B。
b) 卡从位块读区密钥和访问条件。然后,卡向读写器发送随机数。(第一轮)
c) 读写器利用密钥和随机数计算回应值。回应值连同读写器的随机数,发送给卡(第二轮)。
d) 卡通过与自己的随机数比较,验证读写器的回应值,再计算回应值并发送(第三轮)。
e) 读写器通过比较,验证卡的回应值。
在第一个随机数传送之后,卡与读写器之间的通讯都是加密的。
3.5 RF接口
RF接口符合非接触智能卡标准ISO/IEC 14443A。
读写器的载波电磁场始终存在(发送中有短暂中断),因为它用作卡的电源。对于两个方向的数据通讯,每个数据帧都只有一个起始位。所传送的每个字节末尾都有一个奇偶校验位(奇校验)。选定块最低地址字节的最低位首先传送。最大帧长为163 bit(16数据字节 + 2个CRC字节 = 16 * 9 + 2 * 9 + 1 起始位)。
3.6 存储器组织
1024 x 8 bit EEPROM存储器分为16区,每区4块,每块16字节。
在擦处后的状态下,EEPROM的单元读为逻辑“0”,写后的状态下读为“1”。
块内字节编号 |
||||||||||||||||||||
扇区 |
块 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
说明 |
||
15 |
3 |
KEY A |
控制位 |
KEY B |
扇区15尾块 |
|||||||||||||||
2 |
数据 |
|||||||||||||||||||
1 |
数据 |
|||||||||||||||||||
0 |
数据 |
|||||||||||||||||||
14 |
3 |
KEY A |
控制位 |
KEY B |
扇区14尾块 |
|||||||||||||||
2 |
数据 |
|||||||||||||||||||
1 |
数据 |
|||||||||||||||||||
0 |
数据 |
|||||||||||||||||||
: : : |
: : : |
|||||||||||||||||||
1 |
3 |
KEY A |
控制位 |
KEY B |
扇区1尾块 |
|||||||||||||||
2 |
数据 |
|||||||||||||||||||
1 |
数据 |
|||||||||||||||||||
0 |
数据 |
|||||||||||||||||||
0 |
3 |
KEY A |
控制位 |
KEY B |
扇区0尾块 |
|||||||||||||||
2 |
数据 |
|||||||||||||||||||
1 |
数据 |
|||||||||||||||||||
0 |
制造商占用块 |
3.6.1 厂商代码块
这是第1区的第1块(块0)。它含有集成电路制造商数据。出于安全和系统需求,此块是制造商在生产过程中编程后写保护的。
3.6.2 数据块
各区均有3个16字节的块用于存储数据(区0只有两个数据块以及一个只读的厂商代码块)。
数据块可以通过读写控制位设置为:
· 读写块,例如用于非接触门禁管理
· 数值块,例如用于电子钱包,另有可直接控制存储值的命令,如增值、减值。
在任何存储器操作之前必须执行认证命令。
3.6.2.1数值块
数值块具有电子钱包功能(有效命令:read, write, increment,decrement, restore, transfer)。
数值块有固定的数据格式,以便于错误检测、纠错和备份管理。
数值块只能通过以数值块格式的写操作生成:
· 数值:有符号4字节数值。数值的最低字节存储在最低地址字节。负值以标准的2的补码形式存储。出于数据完整性和安全原因,数值存储三次,两次不取反,一次取反。
· 地址(Adr):1字节地址,当进行备份管理时,可用于保存块的地址。地址保存四次。两次取反,两次不取反。在increment、decrement、restore和transfer 操作中,地址保持不变。它只能通过write命令更改。
字节号 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
说明 |
数值 |
数值 |
数值 |
Adr |
Adr |
Adr |
Adr |
3.6.3 尾块(块3)
各区均有一个尾块,存有:
· 密钥A和B(可选),读时返回逻辑“0”。
· 该区四个块的读写条件,存储在字节6至9 。读写控制位也指定了数据块的类型(读写块或数值块)。
如果不需要密钥B,块3的最后6字节可以用作数据字节。
尾块的字节9可用于用户数据。因为此字节享有与字节6、7、8相同的读写权限。
字节号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
说明 |
密钥A |
读写条件 |
密钥B(可选) |
3.7 存储器读写
必须如前所述,先选定卡并通过认证,才能执行存储器操作。
存储器操作 |
||
操作 |
说明 |
使用块型 |
读 |
读存储器块 |
读写、数值和尾块 |
写 |
写存储器块 |
读写、数值和尾块 |
增值 |
增加块的内容,并将结果存入内部寄存器 |
数值 |
减值 |
减少块的内容,并将结果存入内部寄存器 |
数值 |
转存 |
将内部寄存器内容写入块中 |
数值 |
恢复 |
将块中内容写入内部寄存器 |
数值 |
对指定块可以执行的存储器操作取决于所用的密钥和存储在相应尾块中的读写条件。
3.7.1 读写条件
每个数据块和尾块的读写条件均由3个bit定义,并以非取反和取反形式保存在各个区的尾块中。
读写控制位管理着使用密钥A和B读写存储器的权限。如果知道相关的密钥,并且当前读写条件允许,读写条件是可以更改的。
读写控制位 |
有效命令 |
|
块 |
说明 |
C13 C23 C33 |
read, write |
® |
3 |
尾块 |
C12 C22 C32 |
read, write, increment, decrement, transfer, restore |
® |
2 |
数据块 |
C11 C21 C31 |
read, write, increment, decrement, transfer, restore |
® |
1 |
数据块 |
C10 C20 C30 |
read, write, increment, decrement, transfer, restore |
® |
0 |
数据块 |
注意:在每一次存储器读写时,内部逻辑会验证存储条件的格式。如果发现个是错误,这个区将被永久性锁死。
注意:在下列说明中,读写控制位是仅以非取反形式表述的。
MF1的内部逻辑保证了命令只有在通过认证后才被执行。
3.7.2 尾块的读写条件
对密钥和控制位的读写取决于尾块(块3)的访问控制位,分为“禁止”、“KEY A”、“KEY B”和“KEY A|B”( KEY A或KEY B)。
访问控制位 |
所控制的访问对象 |
注释 |
|||||||
KEY A |
访问控制位 |
KEY B |
|||||||
C1 |
C2 |
C3 |
读 |
写 |
读 |
写 |
读 |
写 |
|
0 |
0 |
0 |
禁止 |
Key A |
Key A |
Key B |
Key A |
Key A |
Key B可读 |
0 |
1 |
0 |
禁止 |
禁止 |
Key A |
禁止 |
Key A |
禁止 |
Key B可读 |
1 |
0 |
0 |
禁止 |
Key B |
Key A|B |
禁止 |
禁止 |
Key B |
|
1 |
1 |
0 |
禁止 |
禁止 |
Key A|B |
禁止 |
禁止 |
禁止 |
|
0 |
0 |
1 |
禁止 |
Key A |
Key A |
Key A |
Key A |
Key A |
Key B可读 传输配置状态 |
0 |
1 |
1 |
禁止 |
Key B |
Key A|B |
Key B |
禁止 |
Key B |
|
1 |
0 |
1 |
禁止 |
禁止 |
Key A|B |
Key B |
禁止 |
禁止 |
|
1 |
1 |
1 |
禁止 |
禁止 |
Key A|B |
禁止 |
禁止 |
禁止 |
注:灰色行为key B可读并可用于存储数据的访问控制条件。
尾块和key A被预定义为传输配置状态。因为在传输配置状态下key B可读,新卡必须用key A认证。
因为访问控制位本身也可以禁止访问,所以个人化时应当特别小心。
3.7.3 数据块的访问控制条件
对数据块(块0至2)的读写访问取决于其访问控制位,分为“禁止”、“KEY A”、“KEY B”和“kEY A|B”( KEY A或KEY B)。相关访问控制位的设置确定了其用途以及相应的可用命令。
· 读写块:允许读、写操作。
· 数值块:运行另外的数值操作——加值、减值、转存和恢复。在用于非充值卡的一种情况(‘001’)下,只能够读和减值。在另一种情况(‘110‘)下,可以用key B充值。
· 制造厂商块:只读,不受访位控制位设置的影响!
· 密钥管理:在传输配置状态下,必须用key A 认证。
访问控制位 |
所控制的访问操作 |
用途 |
|||||
C1 |
C2 |
C3 |
读 |
写 |
加值 |
减值 转存 恢复 |
|
0 |
0 |
0 |
key A|B1 |
key A|B1 |
key A|B1 |
key A|B1 |
传输配置状态 |
0 |
1 |
0 |
key A|B1 |
key B1 |
禁止 |
禁止 |
读写块 |
1 |
0 |
0 |
key A|B1 |
key B1 |
禁止 |
禁止 |
读写块 |
1 |
1 |
0 |
key A|B1 |
key B1 |
key B1 |
key A|B1 |
数值块 |
0 |
0 |
1 |
key A|B1 |
禁止 |
禁止 |
key A|B1 |
数值块 |
0 |
1 |
1 |
key B1 |
key B1 |
禁止 |
禁止 |
读写块 |
1 |
0 |
1 |
key B1 |
禁止 |
禁止 |
禁止 |
读写块 |
1 |
1 |
1 |
禁止 |
禁止 |
禁止 |
禁止 |
读写块 |
1 如果相应扇区尾块Key B可读,则不得用作认证(前表中所有灰色行)。后果:如果读写器试图用灰色行的访问控制条件以Key B认证任何扇区的任何块,卡将在认证后拒绝所有后续存储器访问。
m1卡工作原理和相关总结相关推荐
- Nginx工作原理及相关介绍
Nginx工作原理及相关介绍 一.Nginx工作原理与模块介绍 1.Nginx基本工作原理 NGINX以高性能的负载均衡器,缓存,和web服务器闻名.Nginx由内核和模块组成,其中,内核的设计非常微 ...
- LVS的工作原理和相关算法
首先我们要了解LVS的工作机制: LVS里Director本身不响应请求,只是接受转发请求到后方,Realservers才是后台真正响应请求. LVS 工作原理基本类似DNAT,又不完全相像,它是一种 ...
- HashMap的工作原理及其相关的知识点
2019独角兽企业重金招聘Python工程师标准>>> 先来些简单的问题 "你用过HashMap吗?" "什么是HashMap?你为什么用到它?&quo ...
- 了解WiFi的原理、工作原理以及相关的标准。
Wi-Fi 是 Wireless Fidelity 的缩写,是无线局域网 (WLAN) 的一种常用技术.它使用频率为 2.4GHz 和 5GHz 的高频电波传送数据. Wi-Fi 工作原理: 发送端: ...
- 浏览器工作原理及相关内核、技术介绍
BY XIAOMING · 2014 年 1 月 16 日. 正文开始: 一.浏览器工作原理(简化版) 1.浏览器用来干什么用 浏览器的主要功能是将用户请求访问的web资源呈现出来,它需要从服务器请求 ...
- 详解滤波电路工作原理及相关参数计算
在整流电路输出的电压是单向脉动性电压,不能直接给电子电路使用.所以要对输出的电压进行滤波, 消除电压中的交流成分,成为直流电后给电子电路使用.在滤波电路中,主要使用对交流电有特殊阻抗特性的器件,如:电 ...
- NDS烧录卡工作原理研究
最近开发一个ARM上的项目.突然发现,我用的嵌入式操作系统没有文件系统,得通过直接寻址的方式调用应用程序.我联想到nds,我觉得nds的操作系统应该也是没有文件系统的,slot1和slot2在系统中会 ...
- Linux下轻松理解防火墙的工作原理及相关设置(三)firewalld服务、包括Direct Rules 和Rich Rules (地址伪装和转发)
文章目录 firewalld概述 firewall和iptables的不同 firewalld常用命令 firewalld基本管理 1.图形化操作 firewall-config 2.命令化操作 火墙 ...
- M1卡破解(自从学校升级系统之后,还准备在研究下)
M1卡说明及使用proxmark3破解方法 看了网上写的一些关于M1卡的文章,多数有些误导之嫌.首先谈谈M1卡的规格,M1卡的容量为1KB,好多网上写8KB,这里其实是有个误区,应该是8K位.1Byt ...
最新文章
- JAVA NIO存在的问题
- python3.7 6如何安装-深度linux安装Python3.7.6
- 1.关于QT中的Graphics绘图,定时器,动画,将窗口中的内容打印到图片上,打印机,打印预览
- 51单片机——LCD1602
- vscode安装swift插件_使用 Webpack 优化 VS Code 插件加载性能
- 【数据湖加速篇】 —— 数据湖结构化数据优化与查询加速方案
- 实战_05_SpringBoot整合redis单机版本
- ue4如何恢复初始状态_如何解决三菱伺服电机上常见报警代码
- 模拟组合键 postmessage ctrl+v_《模拟江湖》:TapTap热门榜单第一,测试版评分8.0的汉家松鼠工作室新作...
- 返回一个不确定的对象_我有一个Android必备知识点,你确定不了解一下?
- python 类 super_python的类的super()
- 淘淘商城:显示查询页面
- python博弈论代码_博弈论(示例代码)
- JavaWeb项目上云教程(Java项目在腾讯云上部署操作教程)
- 计算机专业毕业论文格式,2016年计算机专业毕业论文内容及格式要求
- Ctrl + Alt + A ,唯一的截屏快捷键?
- 2022年,英文科技论文写作与学术报告期末考试答案(仅供参考)
- ‘xxx‘ “将对您的电脑造成伤害。 您应该将它移到废纸篓。”mac一直弹窗并关不掉的解决方式
- 百度鹰眼轨迹和虎鲸数据平台之浅谈
- 【Linux 中国】Simula 诞生之前的面向对象程序设计
热门文章
- Android的证书验证过程
- error LNK2001: 无法解析的外部符号 解决方法
- 屏避小米盒子开机广告方法
- 如何使用音频转换器快速转换音频格式?
- 如何利用人工智能技术在零售业做产品创新——京东无人超市的成长之路
- 干货文稿|当模型预测控制遇见机器学习
- php中网页字体颜色的代码,HTML5画布如何设置字体颜色?(代码示例)
- 数据分析学习笔记2020/7/20——matplotlib绘制条形图
- springMVC源码分析--访问请求执行ServletInvocableHandlerMethod和InvocableHandlerMethod
- Python 中 selenium 设置参数,不打开可视化页面,后台执行爬虫程序