知識(shí)匯總)
學(xué)習(xí)一下 NFC 的基礎(chǔ)知識(shí) ...... 矜辰所致前言最近一直在使用沁恒藍(lán)牙芯片 CH585作為一款藍(lán)牙芯片它居然還支持 NFC支持讀卡器 (PCD) 模式和卡 (PICC) 模式無需外接芯片就可以實(shí)現(xiàn) NFC 功能可簡化硬件電路設(shè)計(jì)降低硬件成本和開發(fā)難度。博主之前對 NFC 的了解有限所以需要從基礎(chǔ)開始好好了解一下 NFC 的一些基礎(chǔ)知識(shí)所以本文內(nèi)容就是 NFC 的基礎(chǔ)知識(shí)學(xué)習(xí)。我是矜辰所致全網(wǎng)同名盡量用心寫好每一系列文章不浮夸不將就認(rèn)真對待學(xué)知識(shí)的我們矜辰所致金石為開目錄前言一、什么是 NFC1.1 NFC 基本概念1.2 NFC 與 RFID 的關(guān)系二、NFC 的三種工作模式三、NFC 協(xié)議體系3.1 簡化的三層模型3.2 ISO 14443 四個(gè) Part 與 Type A/B 的關(guān)系3.3 不同模式對應(yīng)的協(xié)議棧四、常用的 NFC 卡片/標(biāo)簽五、NFC 數(shù)據(jù)格式5.1 NDEF5.2 NDEF 的結(jié)構(gòu)六、NFC (ISO14443-A) 完整通信流程結(jié)語一、什么是 NFC有了 AI 以后這些常見技術(shù)的理論基礎(chǔ)介紹 AI 會(huì)更詳細(xì)也更加全面本文意在概括總結(jié)方便大家查詢一些關(guān)鍵點(diǎn)。1.1 NFC 基本概念NFC 全稱 Near Field Communication是一種基于 13.56MHz 頻段的超短距離高頻無線通信技術(shù)。它的一些特點(diǎn)電感耦合通信NFC 依賴讀寫器天線與標(biāo)簽線圈之間的電感耦合方式完成能量傳輸與數(shù)據(jù)交互是無源卡片正常工作的核心原理。通信距離極短 近距離才能通信 通訊距離通常在 0~10cm 。被動(dòng)免供電普通 NFC卡片無電池靠讀卡器磁場感應(yīng)取電工作。雙向通信既可以讀卡也可以模擬成卡被讀卡器讀數(shù)據(jù)傳輸速率106 / 212 / 424 kbps 。調(diào)制方式100% ASKType A搭配 NRZ 基帶編碼由硬件完成底層解析。NFC 憑借通信距離近、功耗低、無需配對、連接快速的優(yōu)勢被廣泛應(yīng)用于非接觸式支付、門禁刷卡、公共交通、智能電子標(biāo)簽、設(shè)備快速配對等物聯(lián)網(wǎng)交互場景。1.2 NFC 與 RFID 的關(guān)系RFID 是廣義射頻識(shí)別技術(shù)頻率范圍很廣125KHz、13.56MHz、900MHz、2.4GHz。大多為單向識(shí)別、通信距離遠(yuǎn)、功能單一多用于門禁溯源、工業(yè)識(shí)別、倉儲(chǔ)管理等場景。NFC 是從 RFID 發(fā)展而來NFC 只工作在 13.56MHz增加了點(diǎn)對點(diǎn)通信能力 。具備貼臉通信、無需復(fù)雜配對、低功耗、高安全性的特點(diǎn)主打智能設(shè)備一碰即用的輕量化交互場景。二、NFC 的三種工作模式NFC 的通信的三種工作模式讀卡器模式Reader/Writer設(shè)備主動(dòng)發(fā)射磁場主動(dòng)讀取外部 NFC 卡片/標(biāo)簽。讀卡器設(shè)備供電 。CH585 對應(yīng)PCD 模式場景刷卡機(jī)、讀NTAG標(biāo)簽、讀門禁M1卡卡模擬模式Card Emulation設(shè)備自身模擬成一張 NFC 卡片被動(dòng)等待手機(jī)/讀卡器來讀取自己。卡片設(shè)備自己供電 。CH585 對應(yīng)PICC 模式場景手機(jī)刷門禁、CH585模擬 NFC 名片、一碰打開網(wǎng)址、藍(lán)牙 OOB 配對點(diǎn)對點(diǎn)模式P2P兩臺(tái) NFC 設(shè)備直接交換數(shù)據(jù)。應(yīng)用相對較少。CH585 不支持P2P 。雙方都自己供電。三、NFC 協(xié)議體系3.1 簡化的三層模型為了方便理解結(jié)合 CH585 的讀卡/卡模擬應(yīng)用場景我們可以把 NFC 協(xié)議棧簡化為三層模型物理射頻層定義 13.56MHz 載波、調(diào)制編碼、射頻電氣特性由芯片 NFC 基帶硬件實(shí)現(xiàn)。本層負(fù)責(zé) 13.56 MHz 載波的產(chǎn)生/接收、信號(hào)調(diào)制與解調(diào)、射頻場的能量傳輸。——常用的協(xié)議如下ISO/IEC 14443?ANFC?A100% ASK 調(diào)制 106 kbps 基礎(chǔ)速率國內(nèi)最常用M1 卡、門禁卡、公交卡大多基于此。ISO/IEC 14443?BNFC?B10% ASK 調(diào)制調(diào)制指數(shù) 8%~14%NRZ 編碼106 kbps調(diào)制深度淺、抗干擾更好常用于二代身份證、部分金融卡。這里的 10% 是指調(diào)制指數(shù) 10%允許 8%?14% 區(qū)間并不是載波衰減到原來 10%ISO/IEC 18092NFCIP?1 / NFC?FFeliCa索尼 FeliCa 標(biāo)準(zhǔn)日本交通卡支持P2P 點(diǎn)對點(diǎn)通信速率 212/424kbps。ISO/IEC 15693NFC?V遠(yuǎn)距離 RFID可讀距離可達(dá) 1 米用于資產(chǎn)標(biāo)簽、倉儲(chǔ)?!獙τ?CH585 只支持 ISO14443-A 協(xié)議106 kbps 該層由內(nèi)部 NFC 硬件基帶完全實(shí)現(xiàn)負(fù)責(zé)磁場供電、信號(hào)收發(fā)與底層解調(diào)。數(shù)字鏈路層定義尋卡、防碰撞、卡片選擇、幀傳輸交互規(guī)則沁恒 CH585 庫提供該層基礎(chǔ)子程序。本層負(fù)責(zé)怎么找到卡、怎么不撞車、怎么把數(shù)據(jù)包拆成幀發(fā)出去。——常用的協(xié)議如下ISO/IEC 14443-3初始化與防碰撞規(guī)定尋卡、防碰撞、選卡的交互流程PCD 發(fā) REQA/WUPA → PICC 回 ATQA → 防碰撞循環(huán)獲取 UID→ SELECT → SAK。 這是所有 14443-A 設(shè)備必須實(shí)現(xiàn)的底層握手。 CH585 庫主要封裝這一部分。ISO/IEC 14443-4傳輸協(xié)議 TCL:在防碰撞選卡之后定義面向連接的數(shù)據(jù)傳輸協(xié)議塊類型I 塊/R 塊/S 塊、幀確認(rèn)、重傳、超時(shí)、多應(yīng)用選擇等。14443-3 是開始的握手機(jī)制14443-4 是握手完畢后的通訊。NFC Forum Digital ProtocolNFC Forum 在 ISO 標(biāo)準(zhǔn)之上定義的數(shù)字協(xié)議層和活動(dòng)規(guī)范統(tǒng)一了不同射頻技術(shù)A/B/F的設(shè)備發(fā)現(xiàn)、初始化、協(xié)議切換流程是多模式 NFC 設(shè)備如手機(jī)的互通基礎(chǔ)。LLCPP2P 模式鏈路控制協(xié)議設(shè)備之間連接管理、分幀、多路復(fù)用?!獙τ?CH585 官方 NFC 庫已封裝該層核心協(xié)議邏輯開發(fā)者可直接調(diào)用 API 完成卡片激活與基礎(chǔ)通信。應(yīng)用層定義標(biāo)簽內(nèi)存布局、讀寫命令、NDEF 數(shù)據(jù)格式包含部分廠商私有協(xié)議該層需要開發(fā)者自行編寫業(yè)務(wù)代碼實(shí)現(xiàn)數(shù)據(jù)解析與交互。本層負(fù)責(zé)傳過去的數(shù)據(jù)是什么傳過去的數(shù)據(jù)是 NDEF 還是 M1 私有命令是 URL 還是文本是門禁扇區(qū)數(shù)據(jù)還是支付 APDU——常用的協(xié)議如下NDEFNFC Data Exchange FormatNFC 數(shù)據(jù)交換格式NFC 通用數(shù)據(jù)封裝格式 是所有 NFC 標(biāo)簽、P2P、卡模擬互通的數(shù)據(jù)基礎(chǔ)。RTDRecord Type DefinitionRTD 是依附于 NDEF 的不是獨(dú)立格式定義 NDEF 記錄里裝的是什么類型的數(shù)據(jù)文本、URI、SmartPoster、藍(lán)牙 OOB 配對記錄等。ISO 7816?4智能卡 APDU 命令集Type4 標(biāo)簽、DESFire 卡使用。廠商私有命令集MIFARE Classic (M1) 認(rèn)證 / 讀塊 / 寫塊MIFARE DESFire APDUFeliCa 服務(wù)?塊指令。.最后還有一個(gè)特殊點(diǎn)的Tag Type 1~5 Operation Specifications定義 5 種標(biāo)簽類型的讀寫操作方式是讀卡器操作不同標(biāo)簽的操作手冊。Tag Type Operation 規(guī)范嚴(yán)格說是跨層的既規(guī)定鏈路層交互細(xì)節(jié)又規(guī)定應(yīng)用層數(shù)據(jù)布局。它定義了如何把 NDEF 數(shù)據(jù)寫入不同類型的標(biāo)簽芯片這些規(guī)范是給 NFC 控制器/手機(jī) OS 的驅(qū)動(dòng)開發(fā)者看的不是給應(yīng)用開發(fā)者看的Type 2基于 NFC-A最常見NTAG 系列CH585 讀卡模式主要對象。Type 4基于 14443-A/B ISO 7816-4大容量、支持文件系統(tǒng)和安全應(yīng)用?!獙τ?CH585PCD 模式下開發(fā)者編寫讀卡/寫卡業(yè)務(wù)邏輯PICC 模式支持 NDEF 數(shù)據(jù)交互功能是電子名片、藍(lán)牙 OOB 配對的基礎(chǔ)。這些業(yè)務(wù)邏輯需自行實(shí)現(xiàn)。3.2 ISO 14443 四個(gè) Part 與 Type A/B 的關(guān)系很多小伙伴搞不懂14443?A和14443?2的區(qū)別其根源就是兩套命名體系混用。首先我們要知道 ISO 14443 不是一個(gè)單獨(dú)的標(biāo)準(zhǔn)而是一組標(biāo)準(zhǔn)分成 4 個(gè) Part Part1物理特性卡片機(jī)械、尺寸Part2射頻功率和信號(hào)接口 → 調(diào)制、ASK、編碼Type?A / Type?B 在這里定義Part3初始化與防碰撞協(xié)議 → REQA、防碰撞、SELECT、SAKPart4傳輸協(xié)議 TCL → 塊傳輸、APDU我們用一張圖表示一下所以回到我們上面的問題14443-A 和 14443-2 關(guān)系14443-2 14443 標(biāo)準(zhǔn)的第 2 部分射頻功率與信號(hào)接口14443-A 14443 標(biāo)準(zhǔn)中 Type A 這種調(diào)制/編碼方案它分布在 Part 2、Part 3 里。14443?A不是等于 Part2Type?APart2 定義射頻調(diào)制 Part3 定義 A 類型防碰撞算法兩者組合起來才叫 14443?A。Type?BPart2 的 B 調(diào)制 Part3 的 B 防碰撞。.之前寫的 ISO/IEC 14443?A 其實(shí)是 Part 2 Part 3 的 Type A 分支 的統(tǒng)稱不是單指某一個(gè) Part 。3.3 不同模式對應(yīng)的協(xié)議棧這里不討論點(diǎn)對點(diǎn)模式協(xié)議棧對照圖如下舉個(gè) CH585 的簡單例子應(yīng)用層NDEF RTD傳輸層M1 / Type 2 不需要鏈路層ISO 14443-3 (NFC-A)物理射頻層ISO 14443-2 (NFC-A)四、常用的 NFC 卡片/標(biāo)簽下表匯總市面上常見 NFC 卡片與標(biāo)簽名稱標(biāo)準(zhǔn) / 標(biāo)簽類型容量是否需要認(rèn)證核心特點(diǎn)典型用途NTAG 213/215/216ISO 14443-ANFC ForumType 2144B ~ 888B? 無需認(rèn)證可選密碼保護(hù)支持標(biāo)準(zhǔn)NDEF、手機(jī)直接識(shí)別、成本低、NTAG 213F 可配密碼保護(hù)智能貼紙、電子名片、WiFi 標(biāo)簽、網(wǎng)址分享、藍(lán)牙配對MIFARE ClassicM1 / S50 / S70ISO 14443-ANXP 私有命令1KB / 4KB? 需要 Key A/B16/32 扇區(qū)結(jié)構(gòu)、Crypto1 加密已破解、非標(biāo)準(zhǔn) NDEF、需專用 App 讀寫小區(qū)門禁、電梯卡、校園飯卡、考勤卡國內(nèi)最泛濫MIFARE UltralightEV1 / CISO 14443-ANFC ForumType 248B ~ 192B? 無需認(rèn)證比 NTAG 更簡單、成本最低、可鎖定為只讀Ultralight C 支持 3DES一次性門票、活動(dòng)手環(huán)、廉價(jià)海報(bào)標(biāo)簽MIFARE DESFireEV1/EV2/EV3ISO 14443-ANFC ForumType 42KB / 4KB / 8KB? 需要 AES 密鑰AES 加密、真隨機(jī)數(shù)、支持文件系統(tǒng)、走 APDU、安全性高高安全門禁、銀行卡、電子錢包、公交卡新一代FeliCaJIS X 6319-4NFC ForumType 3多種? 需要密鑰索尼標(biāo)準(zhǔn)、處理速度極快、支持多服務(wù)/多應(yīng)用分區(qū)日本交通卡Suica/Pasmo、香港八達(dá)通、索尼設(shè)備銀行卡PBOC/EMVISO 14443-A/BEMVCo 規(guī)范視芯片而定? 需要支付密鑰符合 EMVCo 規(guī)范、支持脫機(jī)/聯(lián)機(jī)交易、卡片本身即安全元件銀聯(lián)閃付、Visa/Mastercard 非接觸支付二代身份證ISO 14443-B較大? 國密 SM1 認(rèn)證符合國標(biāo)、10% ASK 調(diào)制、抗干擾強(qiáng)、不可復(fù)制中國大陸居民身份證ISO 15693 標(biāo)簽ISO 15693NFC ForumType 5小 ~ 中可選讀取距離最遠(yuǎn)~1m、防碰撞機(jī)制為時(shí)隙 ALOHA與 14443-A 的位沖突檢測不同圖書館圖書、物流托盤、資產(chǎn)管理、倉儲(chǔ)盤點(diǎn)CH585 只支持 ISO 14443-A 協(xié)議體系下的卡片實(shí)際會(huì)碰到的主要是三類M1 卡Crypto1 硬件加速門禁場景主力、NTAG 系列NDEF 標(biāo)簽智能貼紙場景屬于Type2 卡、Ultralight低成本 Type 2 標(biāo)簽。其中 Type 2 vs M1 卡的關(guān)鍵區(qū)別對比項(xiàng)Type 2 標(biāo)簽如 NTAGM1 卡Classic標(biāo)簽類型NFC Forum Type 2不屬于 NFC Forum 標(biāo)準(zhǔn)標(biāo)簽類型數(shù)據(jù)格式標(biāo)準(zhǔn) NDEF手機(jī)直接識(shí)別NXP 私有格式手機(jī)無法直接讀內(nèi)容是否需要認(rèn)證讀取無需認(rèn)證部分型號(hào)支持可選寫密碼保護(hù)必須 Key A/B 認(rèn)證才能讀扇區(qū)結(jié)構(gòu)無扇區(qū)線性頁式存儲(chǔ)每頁 4 字節(jié)S50 (1K)16 扇區(qū) ×4 塊常見S70 (4K)40 扇區(qū)前 32 扇區(qū)每扇 4 塊、后 8 扇區(qū)每扇 16 塊用途智能貼紙、電子名片、WiFi 標(biāo)簽門禁卡、飯卡、電梯卡手機(jī)兼容性極高所有帶 NFC 的手機(jī)都能讀只能讀 UID扇區(qū)數(shù)據(jù)需專用 App五、NFC 數(shù)據(jù)格式5.1 NDEFNDEFNFC Data Exchange FormatNFC 數(shù)據(jù)交換格式是一套統(tǒng)一數(shù)據(jù)包封裝格式。NDEF 是 NFC 生態(tài)里唯一被所有手機(jī)操作系統(tǒng)原生支持的數(shù)據(jù)格式:NFC 的底層射頻標(biāo)準(zhǔn)有四種A/B/F/V芯片廠商有 NXP、索尼、ST 等操作系統(tǒng)有 Android、iOS、HarmonyOS。不管你底層是 NFC-A 還是 NFC-F不管你芯片是 NTAG 還是 FeliCa只要數(shù)據(jù)是 NDEF 格式任何帶 NFC 的手機(jī)都能讀懂。NDEF 是 NFC 世界的通用語言。絕大多數(shù)民用 NFC 體驗(yàn)碰手機(jī)觸發(fā) URL、電子名片、藍(lán)牙配對全部依賴 NDEF面向 APP 開發(fā)的教程中APP 層拿到手的就是 NDEF 數(shù)據(jù)包。但是也要注意一下也不是所有 NFC 場景必須使用NDEF 必須 / 適合 NDEFNTAG/Ultralight (Type2)、CH585PICC_T2T虛擬 Type2 標(biāo)簽、Type3/Type4/Type5 標(biāo)準(zhǔn)標(biāo)簽實(shí)現(xiàn)一碰跳轉(zhuǎn)網(wǎng)址、電子名片、藍(lán)牙 OOB 一碰配對。不使用 NDEFMIFARE Classic (M1) 門禁卡使用 NXP 私有扇區(qū)數(shù)據(jù)Type 4 CPU 卡 / 銀行卡走 EMVCo ISO 7816-4 APDU不使用 NDEF但 Type 4 NDEF 標(biāo)簽如某些大容量標(biāo)簽仍支持 NDEF。5.2 NDEF 的結(jié)構(gòu)一條 NDEF 消息 (Message) 由一條或多條 NDEF 記錄 (Record) 組成。每個(gè) Record 由三部分核心構(gòu)成Header 頭部標(biāo)記數(shù)據(jù)起始、結(jié)束、長度、多記錄標(biāo)識(shí)Type (RTD) 類型定義數(shù)據(jù)用途網(wǎng)址 / 文本 / 藍(lán)牙配對Payload 載荷真實(shí)業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu)如下圖所示 實(shí)際上的 NDEF Record 的完整字節(jié)布局如下Header │ Type Len │ Payload Len │ ID Len │ Type │ ID … │ Payload.(1 byte)│ (1 byte) │ (1 or 4 bytes) │(if IL1) │ (變長) │(if IL1) │ (變長)舉個(gè) Record 的例子往 NTAG 里寫一個(gè) URLhttps://www.example.comD1 55 11 03 77 77 2E 65 78 61 6D 70 6C 65 2E 63 6F 6D│ │ │ │ └──────── “www.example.com” ────────┘│ │ │ └── 前綴碼 0x03 自動(dòng)補(bǔ)全 “https://www.”│ │ └── Payload 長度 17 字節(jié)│ └── Type ‘U’URI 記錄└── Header 0xD1第一條最后一條短記錄Well-Known這個(gè)解析后期需要再去研究手機(jī)讀到這段數(shù)據(jù) → 看 Type 是 U → 知道是 URI → 用前綴碼補(bǔ)全 → 打開瀏覽器。六、NFC (ISO14443-A) 完整通信流程最后我們來講一下 NFC 通訊流程概括來說所有卡片必須走射頻 → REQA → ATQA → 防碰撞 → SELECT → SAK 先上一張示意圖射頻場常駐PCD 持續(xù)開啟 13.56MHz 射頻場磁場常開卡片靠近即可感應(yīng)取電、上電激活。尋卡請求REQAPCD 循環(huán)發(fā)送REQA(0x26)含義在場內(nèi)的 A 卡請應(yīng)答。卡片應(yīng)答ATQAPICC 回復(fù) ATQA如 Type20x4400、M10x0004攜帶信息卡類型、UID 長度、是否支持防碰撞、是否支持 14443-4 協(xié)議。防碰撞仲裁核心機(jī)制多張卡片同時(shí)在場時(shí)PCD 發(fā)送 0x93 防碰撞幀 NVB通過二進(jìn)制位比對逐個(gè)篩選最終唯一獲取整張卡完整 UID屏蔽其他卡片。選中唯一卡片SELECTPCD 攜帶完整 UID 發(fā)送 SELECT 命令指定目標(biāo)卡片場內(nèi)其他卡片進(jìn)入靜默狀態(tài)??ㄆ途w應(yīng)答SAKPICC 返回 SAK 字節(jié)決定后續(xù)所有通信分支最重要分界點(diǎn)SAK0x00Type2 標(biāo)簽NTAG/Ultralight→ 直接頁讀寫、支持 NDEF。SAK0x08M1 Classic 卡 → 私有 Crypto1 協(xié)議需要扇區(qū)密鑰認(rèn)證。SAK0x20支持 ISO14443-4 (TCL) → 必須額外發(fā)送 RATS 開啟傳輸層Type4 CPU 卡 / 銀行卡。針對不同的卡進(jìn)行不同的處理方式Type2 標(biāo)簽 (NTAG/Ultralight)無認(rèn)證環(huán)節(jié)直接讀寫頁數(shù)據(jù)、解析 NDEF。M1 門禁卡必須執(zhí)行 KeyA/KeyB 扇區(qū)認(rèn)證認(rèn)證通過才能讀寫對應(yīng)扇區(qū)。Type4 CPU 卡執(zhí)行 RATS 初始化 → 開啟 TCL 傳輸層 → 走 APDU 指令通信。業(yè)務(wù)讀寫操作根據(jù)卡片類型執(zhí)行對應(yīng)操作讀 UID、讀寫存儲(chǔ)數(shù)據(jù)、NDEF 解析、密鑰校驗(yàn)、業(yè)務(wù)交互等卡片休眠HALT通信完成后 PCD 發(fā)送 HALT 指令卡片進(jìn)入休眠不再響應(yīng)普通指令等待下次 WUPA 喚醒從卡片靠近到讀到數(shù)據(jù)中間有 4~6 次握手交互在 CH585 實(shí)際應(yīng)用中可以通過一些有效手段做到低功耗檢卡具體的體現(xiàn)在博主后期 NFC 的文章中會(huì)有說明。結(jié)語本文主要記錄了一些 NFC 基知識(shí)同時(shí)結(jié)合了 CH585 的應(yīng)用做了一些必要的說明在后面博主會(huì)帶大家看一看 CH585 的 NFC 使用示例以及 寫一寫 NFC 關(guān)鍵的天線設(shè)計(jì)問題的相關(guān)博文。好了本文就到這里。謝謝大家