再來,『細說NFC TAG』之特異功能
有了這些特異功能,很多應用如:繕本的認證、名酒的真偽辨識、正廠耗材的識別、尊榮購物的回饋......等等,都可以實現;有別於只是用來傳遞NDEF訊息的基本應用,NFC Tag的大有搞頭,值得你繼續看下去。
別讓 NFC TAG 的特異功能,睡著了!
不管你是用NFC手機,還是特製的 NFC Reader 設備來感應 NFC Tag,一定都會要先取得在感應區內,首先回應的那個 Tag 的 UID,然後下達選取(SELECT)的命令之後,就可以開始存取此Tag的記憶體內容。
這一連串的前置動作,如果是用 NFC手機的話,它會在你掃瞄(Scan) NFC Tag時,就自動幫你做完;先前也提到,如果 Tag內含有 NDEF訊息,手機會一起試著解析。但,如果 Tag有啟動所謂的『保護機制』,任何存取動作就必須先通過密碼的認證(Password Authentication)機制。
在前文中,你應該知道目前有五種類型的NFC Tag,不巧的是這些Tag 所採用的晶片,幾乎每一款都不一樣;只有同一類型的晶片,會使用相同的通信協定;其他的如:記憶體容量的大小、存取的命令與設置的機制等,可能都有些許上的差異。所以筆者只就『NFC Re-Writer』這個App所支援的Tag作為範例,來進一步了解這些Tag常具備的特異功能。
首先,我們來看一Tag晶片裡面的記憶體,因為Tag本身沒有帶電源,也就是說隨時可能會斷電。在這種情況下,使用所謂的 EEPROM 記憶體最為合適;意即只要你在有電的狀況下所寫入的資料,即使突然斷電了也不會被忘掉。這些 NFC Tag 記憶體的存取的方式,會因為功能性的不同分成:
- OTP:只能做一次性的設定,用於存取設定的上鎖;
- R/W:而大部分的內容是可以自由讀寫的,除非啟動了密碼保護機制;
- W/O:再有少部分是只能寫不能讀,如設定的密碼與回應訊息等;
- R/O:唯獨的記憶體通常就在Tag的開頭,如UID之類,是不能被竄改的。另外,還有對應如截斷狀態、感讀計數器,這些隨時更新的特殊記憶體等。
如果你是『真Maker』,看到這裡應該會躍躍欲試,覺得大有可為了吧!因為有了這些特異功能,很多應用如:繕本的認證、名酒的真偽辨識、正廠耗材的識別、尊榮購物的回饋......等等,都可以實現;有別於只是用來傳遞NDEF訊息的基本應用,NFC Tag的大有搞頭,值得你繼續看下去。
言歸正傳,這些特異功能有:
- 密碼認證,用來限制記憶體的存取權限:大多數的晶片,如:NTAG213/215、SIC43NT等,都提供了32-Bit的密碼(4個位元組)的保護,來確認是否有權限來存取保護區內的記憶體;在設定完密碼之後,每次Tag上電,要存取保護區的記憶體時,必須先完成 "PWD-AUTH (0x1B)" 的密碼認證指令後,才能完整存取保護區。
- 動態NDEF,映射UID、滾動碼與狀態:例如:NTAG213/215 可以經由調整操作設置(Configuration Pages)的參數,來將UID與感讀計數映射到NDEF的訊息內;而SIC43NT可以設定一把長80-Bit的金鑰,在每次存取NDEF內容便產生一滾動碼並映射到原NDEF之中。(參考下圖)
- UID簽證,確保無仿造的偽品發生:NXP為其NTAG系列的UID,例如NTAG213/215/424DNA,均簽發一ECC檢覈的憑證,可以使用憑證讀取"READ_SIG (0x3C)"命令來讀出憑證(Original Signature) ,並以該系列的公鑰(Public Key)驗證。
- 截斷 (Tampering) 偵測,可作為新品封條:例如:NTAG213TT、SIC43NT,提供一路封閉迴路作為截斷偵測之用,當此迴路斷開時,會將此狀態映射到NDEF之中,或記錄於專屬的記憶體中以供讀取。
這些特異功能,可以在 NFC Re-Writer App主畫面下的『TAG KIT』選項裡找到,如果Maker手邊有這樣的Tag,要怎麼發揮,就看如何擘劃你的App大計了。
