NFC基础知识学习
背景知識
近場通信(Near Field Communication,簡稱NFC),是一種新興的技術(shù),使用了NFC技術(shù)的設(shè)備(例如移動電話)可以在彼此靠近的情況下進(jìn)行數(shù)據(jù)交換,是由非接觸式射頻識別(RFID)及互連互通技術(shù)整合演變而來的,通過在單一芯片上集成感應(yīng)式讀卡器、感應(yīng)式卡片和點對點通信的功能,利用移動終端實現(xiàn)移動支付、電子票務(wù)、門禁、移動身份識別、防偽等應(yīng)用。NFC可以理解為是RFID的一個子集。目前手機(jī)比較火的“碰一碰”功能就依托于該技術(shù)。
ISO/IEC 14443定義了TypeA、TypeB兩種卡片讀寫標(biāo)準(zhǔn):
Type A型卡在讀寫機(jī)上向卡傳送信號時,是通過13.56MHz的射頻載波傳送信號。其采用方案為同步、改進(jìn)的Miller編碼方式,通過100%ASK傳送;當(dāng)卡向讀寫機(jī)具傳送信號時,通過調(diào)制載波傳送信號。使用847kHz的副載波傳送Manchester編碼。
而Type B型卡在讀寫機(jī)具向卡傳送信號時,也是通過13.56MHz的射頻載波信號,但采用的是異步、NRZ編碼方式,通過用10%ASK傳送的方案;在卡向讀寫機(jī)具傳送信號時,則是采用的BPSK編碼進(jìn)行調(diào)制。
對比兩種卡型,可以看出,Type B型與Type A型卡相比有以下優(yōu)勢:
(1)芯片具有更高的安全性。接收信號時,不會因為能量損失而使芯片內(nèi)部邏輯及軟件工作停止。
(2)支持更高的通訊速率。Type A最大的數(shù)據(jù)通訊速率為150Kbit/s -200Kbit/s ,應(yīng)用10%ASK技術(shù)的Type B至少可支持400Kbit/s 的速率。
(3)外圍電路設(shè)計簡單。讀寫機(jī)具到卡以及卡到讀寫機(jī)具的編碼方式均采用NRZ方案,電路設(shè)計對稱,設(shè)計時可使用簡單的UARTS。
(4)抗干擾能力強。負(fù)載波采用BPSK調(diào)制技術(shù),較Type A方案降低了6dB的信號聲。
在ISO/IEC 14443-3規(guī)定了TYPEA,TYPEB 的防沖突機(jī)制。二者防沖突機(jī)制的原理完全不同。前者是基于BIT沖突檢測協(xié)議,后者則是通過字節(jié)、幀及命令完成防沖突。防沖突機(jī)制使非接觸式IC卡能進(jìn)行并行操作,及在多張卡同時進(jìn)入有效操作區(qū)后,可對其進(jìn)行有條不紊的操作,這樣就使 選定卡片的數(shù)據(jù)不受其它卡數(shù)據(jù)干擾,攜帶有多種卡的用戶可不必尋找正確的一張卡,只用算法編程,讀寫機(jī)具即可自動做到選取正確的一張卡進(jìn)行后續(xù)操作。這樣方便了操作,提高了應(yīng)用的并行性,也提高了系統(tǒng)的速度。
關(guān)于兩種類型的卡片的分類:
. ├── TypeA卡 │ ├── MifareOne(市面上的卡大部分都是M1卡,廣泛應(yīng)用于公交、地鐵、門禁等諸多領(lǐng)域) │ │ ├── S50 (容量:1K) │ │ ├── S70 (容量:4K) │ │ └── ... │ ├── NTAG │ │ ├── NTAG213(容量:180Bytes 可讀寫:144Bytes) │ │ ├── NTAG215(容量:540Bytes 可讀寫:504Bytes) │ │ ├── NTAG216(容量:924Bytes 可讀寫:888Bytes) │ │ └── ... │ ├── UID卡(M1模擬卡,可以隨意修改UID) │ └── ... └── TypeB卡└── CPU卡(如居民二代身份證、部分銀行卡等)MifareOne卡(M1卡)
M1卡常見的卡片型號分為S20卡、S50卡、S70卡等,區(qū)別在于存儲大小不同,以應(yīng)用最廣泛的S50卡為例:
S50分為16個扇區(qū)、每個扇區(qū)4塊(0~3 Block)、共64塊,每塊16個字節(jié)。
按塊號編址為0~63,第0扇區(qū)的塊0用于存放廠商代碼,已經(jīng)固化不可更改。
其它扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,用于存儲數(shù)據(jù),塊3為控制塊,分別存放:
密碼A(6bytes)、存取控制(4bytes)、密碼B(6bytes)
每個扇區(qū)的密碼和存取控制是獨立的,可以根據(jù)實際需要設(shè)定各自的密碼及存取控制。三個控制位以正和反兩種形式存在于存取控制字節(jié)中,決定了該塊的訪問權(quán)限。如果進(jìn)行減值操作,必須驗證KEYA, 如果進(jìn)行加值操作,必須驗證KEYB。
注意:
詳細(xì)參考鏈接:
Type A型和Type B型卡的主要區(qū)別
Mifare和CPU卡簡介與比較
Mifare Classic 破解參考:http://t.zoukankan.com/k1two2-p-5415400.html
NTAG卡
NTAG213、NTAG215和NTAG216由恩智浦半導(dǎo)體公司開發(fā),并作為標(biāo)準(zhǔn)NFC標(biāo)簽IC與NFC設(shè)備或NFC兼容型近距離耦合設(shè)備配合,廣泛用于市場應(yīng)用,如零售、游戲和消費電子等。NTAG213、NTAG215和NTAG216(后文通稱為NTAG21x)設(shè)計為完全符合NFC Forum類型2標(biāo)簽和ISO/IEC14443類型A規(guī)范。
目標(biāo)應(yīng)用包括戶外和印刷媒體智能廣告、SoLoMo應(yīng)用、產(chǎn)品驗證、NFC貨架標(biāo)簽、手機(jī)配套標(biāo)簽。目標(biāo)用例包括戶外智能廣告、產(chǎn)品認(rèn)證、手機(jī)配套標(biāo)簽、藍(lán)牙或Wi-Fi配對、電子貨架標(biāo)簽和名片。還可對NTAG21x存儲器進(jìn)行分段,以同時部署多個應(yīng)用。
以NTAG216卡片為例:
EEPROM 以4 字節(jié)為1 個Block 來組織,READ 和WRITE 均以Block 地址作為最小尋址單位,READ 指令中的地址為讀取的起始地址,依次讀出4 個Block 的數(shù)據(jù)。WRITE 指令每次寫入當(dāng)前地址對應(yīng)的Block。
扣除制造商信息區(qū)和配置信息區(qū)后,用戶可以使用的數(shù)據(jù)空間為Block 04h~E1h,總計222 Blocks,即888 字節(jié)。E2h 存儲Dynamic Lock Bytes。E3h~FBh 為芯片配置信息區(qū),FCh~FFh 為制造商信息區(qū)。整體空間劃分示意圖如下:
NTAG卡的序列號也就是UID一共有七個,存放在page0, page1中, 其中UID0-UID2在page0中的前三個字節(jié),第四個字節(jié)是卡類型與前3個字節(jié)的UID的BCC異或校驗。UID3-UID6在page1中,UID3-UID6的BCC校驗在page2的第一個字節(jié)。
BER與TLV
BER(BasicEncoding Rules)是一種編碼規(guī)格說明,描述如何將 ASN.1 類型的值編碼成字節(jié)串(string of octets)的方法。其他編碼規(guī)則是在BER的基礎(chǔ)上添加新的規(guī)則構(gòu)成,比如 DER。
TLV是BER編碼的一種,為了使手機(jī)準(zhǔn)確識別出多種或多段NFC標(biāo)簽信息,需要使用TLV格式。BER傳輸語法的格式一直是TLV 三元組 <Tag,Length, Value>, 每一段占一個字節(jié)。其中Value部分可以嵌套另一個 TLV,其格式如下:
-
Tag字段的含義
Tag分為3部分,最高兩位,第六位和低五位。
bit8~bit7:組合代表tag所屬類型
00 通用級 universal class 01 應(yīng)用級 application class 10 規(guī)范級 context-specific class 11 私有級 private classbit6:是否具有嵌套的TLV子結(jié)構(gòu)。
bit5~bit1:如果為全1,則Tag擴(kuò)展至后續(xù)的字節(jié),否則是具體的Tag正文。
Tag后續(xù)字節(jié):
bit8:為1時存在后續(xù)字節(jié),為0時不存在后續(xù)字節(jié)
bit7~bit1:Tag正文 -
Length字段含義:
首字節(jié)bit8:
如果為0,則該Length僅有1字節(jié),bit7~bit1值代表Value字段的長度。
如果為1,則表示長度有擴(kuò)展字節(jié),bit7~bit1值代表后續(xù)擴(kuò)展的字節(jié)數(shù),后續(xù)擴(kuò)展字節(jié)數(shù)表示Value字段的長度。
-
Value字段含義:
Value數(shù)據(jù)段一般沒有特定的編碼規(guī)則,但在某些場合,如果首字節(jié)的Bit8為1時,需要前補0x00。
例如,如果Value1=0x74F2,Value2=0xB34A,則需要將Value2重新轉(zhuǎn)換為0x00B34A,對應(yīng)Length長度+1。
通常,我們將NDEF格式數(shù)據(jù)放在Value數(shù)據(jù)段。
NDEF (NFC Data Exchange Format)
NDEF是NFC的一種標(biāo)準(zhǔn)化的數(shù)據(jù)格式,可用于在任何兼容的NFC設(shè)備與另一個NFC設(shè)備或標(biāo)簽之間交換信息。
數(shù)據(jù)格式由NDEF消息和NDEF記錄組成。該標(biāo)準(zhǔn)由NFC論壇維護(hù),可以免費獲得參考,但需要接受許可協(xié)議才能下載。
NFC數(shù)據(jù)交換格式(NDEF)是一種標(biāo)準(zhǔn)化的數(shù)據(jù)格式,可用于在任何兼容的NFC設(shè)備和另一個NFC設(shè)備或標(biāo)簽之間交換信息。該數(shù)據(jù)格式由NDEF信息和NDEF記錄組成。
NDEF格式用于存儲和交換信息,如URI、純文本等,使用一種普遍理解的格式。像一些NFC標(biāo)簽可被配置為NDEF標(biāo)簽,由一個NFC設(shè)備寫入可以被任何其他NDEF兼容設(shè)備理解和訪問的數(shù)據(jù)(NDEF記錄)。
NDEF信息也可以用來在兩個活躍的NFC設(shè)備之間以 "點對點 "模式交換數(shù)據(jù)。通過在通信過程中遵守NDEF數(shù)據(jù)交換格式,那些本來對彼此沒有任何意義或共同語言的設(shè)備能夠以一種有組織的、可相互理解的方式分享數(shù)據(jù)。
NDEF消息是NDEF記錄的基本 "運輸 "機(jī)制,每個消息包含一個或多個NDEF記錄。
詳細(xì)NDEF格式可參考:NDEF 技術(shù)規(guī)范
總結(jié)
- 上一篇: 小算法
- 下一篇: 华为交换机关闭网口_华为交换机如何关闭网