蔣 輝 孫林娟 張新榮
1(天津大學仁愛學院計算機科學與技術系 天津 301636)2(天津大學計算機科學與技術學院 天津 300072)
基于RFID與NFC技術的防偽認證系統的研究與應用
蔣 輝1孫林娟1張新榮2
1(天津大學仁愛學院計算機科學與技術系 天津 301636)2(天津大學計算機科學與技術學院 天津 300072)
針對商品市場現有的防偽認證方式,在分析和研究RFID技術和NFC技術的基礎上,提出一套相對完整的防偽認證設計思路,并設計與實現了一個防偽認證系統原型。該防偽認證系統以RFID射頻標簽作為信息載體,以手機NFC設備作為射頻標簽讀寫器,結合數據中心的應用系統來完成商品真偽性的驗證。該系統采用JavaEE平臺進行設計開發,對企業進行商品防偽認證在思路和技術方面有一定的借鑒和指導意義。
NFC RFID 防偽 射頻識別 電子標簽
隨著我國社會經濟的快速發展,出現了企業或個人,為了自身利益,生產和出售假冒偽劣商品的現象,導致假冒偽劣商品的生產和流通日益泛濫,涉及行業和商品種類眾多,嚴重損害了企業和消費者的利益和安全。如何通過相關信息化技術手段,對商品的真偽性進行鑒別,防止假冒偽劣商品在市場上流通和銷售,成為一項亟待解決的重要問題。
目前,已經被廣泛應用的比較成熟的防偽技術有條碼防偽、光學防偽、生物防偽、材料防偽、印刷防偽和RFID防偽等,整體來說,基于RFID技術的防偽技術有著較高的性能。因此,本文所提出的防偽系統也采用了RFID部分技術。
1.1 RFID技術
RFID射頻識別是一種自動識別技術,它以電子標簽(內含芯片)來標識物體,通過無線射頻信號來獲取物體的相關數據,并對物體加以識別。RFID技術無需與被識別物體直接接觸,即可完成物體信息的輸入和處理,能快速、實時、準確地采集和處理物體的信息。相比條碼技術,RFID標簽具備抗污損能力高、安全性高、信息容量大、可跟蹤等優點,在目前的物聯網應用中,應用廣泛。表1為幾種防偽技術的比較。

表1 防偽技術比較[1]
1.2 NFC技術
NFC近場通信技術是由非接觸式射頻識別(RFID)及互聯互通技術整合演變而來,在單一芯片上結合感應式讀卡器、感應式卡片和點對點的功能,能夠在短距離內與兼容設備進行識別和數據交換處理。該技術的工作頻率為13.56 MHz,目前被廣泛應用在手機支付、門禁系統、交通一卡通、登機驗證等領域,目前該項技術在日韓被廣泛應用。
在實際應用中,RFID平臺由RFID電子標簽、RFID閱讀器和特定應用系統組成。電子標簽作為信息載體,電子標簽的閱讀器通過與RFID電子標簽進行無線通信,可以實現對標簽內容的讀寫操作。本文中,由內置了NFC設備的手機充當RFID電子標簽的閱讀器,通過NFC技術實現手機與RFID電子標簽的無線通信。
在本文中,運用RFID標簽技術和NFC技術,設計并實現一個商品防偽系統原型。以RFID電子標簽作為信息載體,內置NFC設備的手機作為電子標簽閱讀器,通過NFC通信技術實現對電子標簽的讀寫,并借助服務器端數據中心的相關應用和算法來鑒別商品真偽性。下面將通過三個基本階段來分別介紹系統組成部分。
2.1 RFID電子標簽初始化階段
本階段工作采用Java語言編寫基于Android平臺的標簽初始化APP應用模塊。在該模塊里,首先,讀取RFID電子標簽原始Id(每一個標簽都有一個全球唯一的Id碼,本文命名為tagid),然后通過該APP模塊中定義的網絡通信組件HttpUtil,將該tagid發送到數據中心。數據中心基于該tagid,利用特定的算法計算出該tagid對應的密鑰(key),再通過HttpUtil通信組件將密鑰傳回到APP客戶端。然后通過該APP模塊中定義的writeTag方法將生成的密鑰(key)寫入RFID電子標簽的指定扇區位置,同時將tagid和密鑰(key)寫入服務器端的數據中心,該階段的基本流程如圖1所示。

圖1 RFID標簽初始化流程
2.2 商品信息初始化階段
本階段主要工作就是將RFID電子標簽的原始Id與商品信息進行一一對應關聯。
通過商品信息初始化APP應用,讀取出電子標簽的tagid,將其發送到服務器端的數據中心,通過數據中心的商品信息業務管理模塊將該tagid與商品信息進行對應關聯,寫入數據中心;與此同時,商品信息的主屬性(商品編號)添加到RFID電子標簽基本信息數據庫表中,商品基本信息添加到商品信息數據庫表中,至此,商品信息初始化工作完成。該階段的大致流程如圖2所示。

圖2 商品信息初始化流程
2.3 防偽認證階段
本階段采用防偽認證APP應用來掃描粘貼在商品上的RFID電子標簽(注意,針對不同種類的商品,電子標簽應該以不同且合適的方式與商品進行粘貼),防偽認證APP應用程序獲取電子標簽的tagid和通過定義的readTag方法讀取與其對應的密鑰(key),通過設計和編寫的網絡通信組件HttpUtil中的sendRequest方法,將tagid發送到服務器端的數據中心,并調用數據中心用于計算密鑰(key)的方法:generateKey(byte[] tagid),并將密鑰(key)返回到防偽認證APP客戶端;如果RFID電子標簽中的密鑰(key)與數據中心返回的密鑰(key)相同,則在防偽認證APP客戶端認證結果界面顯示“正品”的認證結果和該商品的基本信息;如果不相等,則顯示“偽品”認證結果。使用“英文作者”樣式。圖3為防偽認證基本流程。

圖3 防偽認證基本流程
本系統采用JavaEE技術平臺進行設計與實現,采用MySQL數據庫管理軟件來維護和管理數據中心的數據。系統采用Spring MVC+Hibernate框架,按照規范的MVC設計模式,運用Internet進行網絡傳輸、無線WiFi、無線GPRS網絡接入等多種通信方式,系統平臺整體包括三個APP應用和服務器端應用,如圖4所示。

圖4 防偽認證系統整體組成圖
3.1 APP設計關鍵技術點說明
在RFID電子標簽初始化APP應用模塊、商品信息初始化APP應用模塊和防偽認證APP應用模塊中,都需要獲取RFID電子標簽的tagid,在Android平臺中,我們首先借助NFC應用API,通過以下語句代碼來獲取電子標簽實體對象:
Tag tag = getIntent().getParacelableExtra
(NfcAdapter.EXTRA_TAG);
然后,調用Tag類中的getId()方法獲取電子標簽的原始Id,代碼如下:
byte[] tagID = tag.getId();
定義了readTag和writeTag兩個用于讀寫RFID電子標簽信息的方法,方法聲明如下:
public byte[] readTag(MifareClassic mfc,
int sectorIndex,int blockIndex)
public void writeTag(MifareClassic mfc,
int sectorIndex,int blockIndex,byte[] data)
其中,readTag方法通過指定分區位置(sectorIndex)和數據塊位置(blockIndex)來對電子標簽進行數據讀取操作;writeTag方法也通過指定分區位置和數據塊位置,將字節數組類型的數據寫入到RFID電子標簽中。
需要注意的是,從RFID標簽扇區中讀取出來的數據都是以字節數組的形式存在,因此,在系統設計實現時,需要對讀寫參數和返回值加以相應變換處理,數據庫中都是將字節數組以字符串存儲。
編寫APP與數據中心通信工具類HttpUtil, 通過使用Java網絡編程技術實現,其核心代碼如下:
public static String sendRequest(Map
params, String servlet, String encode) {
StringBuffer buffer = new StringBuffer();
if (null != params && !params.isEmpty()) {
for (Map.Entry
params.entrySet()){
buffer.append(entry.getKey()).append("=").append(
URLEncoder.encode(entry.getValue())).append("&");}
buffer.deleteCharAt(buffer.length() - 1);}
url = new URL(serverURL + servlet);
HttpURLConnection urlConnection =
(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("POST");
byte[] data = buffer.toString().getBytes();
OutputStream outputStream =
urlConnection.getOutputStream();
outputStream.write(data);
outputStream.close();
if (200 == responseCode)
result =changeInputStream
(urlConnection.getInputStream(), encode);
return result;}
代碼中的粗體部分changeInputStream方法,由于篇幅問題,沒有在文中寫出,該方法主要是接收一個輸入流,將該輸入流轉為字符串輸出。
通過上述代碼中的sendReuqest方法將APP客戶端請求發送到服務器端的指定servlet控制器組件,servlet控制器組件將調用具體業務邏輯處理組件完成請求處理,并將響應結果返回給HttpUtil通信組件。注意,由于在HttpUtil組件的sendRequest方法中,返回結果是Inpustream輸入流,因此,服務器端servlet控制器的輸出結果也應該是OutputStream輸出流,具體代碼如下:response.getOutputStream().write(result.getBytes("utf-8"));然后通過HttpUtil通信組件將響應結果返回給app客戶端。
3.2 數據中心設計與實現
為了簡化問題,數據庫設計部分只描述RFID電子標簽實體的核心屬性和商品實體的基本屬性,E-R模型如圖5所示。

圖5 RFID電子標簽實體與product實體聯系
其中,RFID電子標簽實體的屬性有兩個,分別是tagid和product_id,其中tagid是主屬性,product_id作為外鍵,應用product實體的主屬性pid;product實體有4個屬性,分別是pid、product_name、category、information,其中pid是主屬性,兩個實體通過pid關聯起來。
數據中心核心業務處理方法如下:
(1) public byte[] getKey(final byte[] tagid)
該方法用于計算獲取RFID電子標簽的密鑰key,基于tagid來生成對應的密鑰(key),生成密鑰(key)的算法是該系統比較重要的部分,關系到系統是否能夠真正起到防偽的可能性,由于該算法具有保密性,在本文中不再詳細說明。
(2) public boolean addRFID(final RFID rfid)
該方法用于添加標簽基本信息,在代碼實現中,運用Hibernate框架的對象關系映射(Object-Relationship Mapping,簡稱ORM)機制,結合FRID.hbm.xml文件,將RFID對象添加到數據庫中。
(3) public boolean initProduct(final Product product)
該方法用于完成商品基本信息初始化工作,具體實現機制與addRFID()方法類似,但是在該方法里面包括兩個原子操作(atomic operation),分別是addProduct(final Product product)和addPid(final String pid)。其中,addProdcut()用于將商品基本信息添加到product數據表中,addPid()用于將商品的主屬性pid添加到RFID電子標簽數據表中,用于兩個數據表進行關聯。代碼實現時,采用數據庫事務機制保證兩個操作要么都成功執行,要么都不執行(事務回滾rollback),具體如下:
public boolean initProduct(final Product product)
……
try{
connection.setAutoCommit(false);
addProdcut(product);
addPid(pid);
connection.commit();
}catch(Exception e)
{ connection.rollback();}
(4) public boolean isEquals(final byte[] tagid,final byte[] key)
該方法用于判斷RFID電子標簽中的密鑰與數據中心生成的密鑰是否相等。
(5) public Product getProduct(final byte[] tagid)
該方法根據tagid檢索對應的商品信息,具體實現過程:在RFID電子標簽數據表中根據tagid檢索pid,然后在product數據表中再根據pid檢索商品基本信息。
系統測試部分,本文根據香煙商品的基本數據來設計系統測試用例,通過RFID電子標簽初始化APP和商品信息初始化APP對系統防偽認證基礎進行實施。
4.1 設計系統測試用例
由于數據庫中tagid是以字符串存儲的,而電子標簽中tagid是以字節數組的形式存在。因此在系統中也定義了進行字節數組與字符串轉換的方法。結合系統業務邏輯和數據庫設計要求,為RFID電子標簽準備了兩組數據,如表2所示。

表2 數據庫RFID信息
本系統測試數據以利群香煙的基本數據為例,準備了兩組商品基本數據,如表3所示。

表3 數據庫商品信息
4.2 測試結果

圖6 測試結果
圖6左邊的測試效果是利用了表2的第2組數據和表3的第2組數據進行測試的結果,tagid為0X83142EF5,根據密鑰生成算法獲取密鑰(key),通過writeTag方法寫入指定分區的數據塊中,防偽認證時,通過tagid來計算得到的密鑰與寫入電子標簽中的密鑰是相同的。因此,系統顯示“正品”的認證結果并顯示商品的基本信息;而圖6右邊的測試效果是我們人為地修改了數據庫表中的tagid導致的,這樣會引起密鑰的不相等,導致認證結果為“偽品”。
本文基于NFC技術和RFID標簽技術,實現了方便消費者用于產品防偽認證系統,為進行防偽認證提供了一個有效而可行的具體解決方案。本系統仍然存在很多不足之處,比如產品信息溯源、網絡安全、算法抗破解等具體問題還有待進一步的研究與完善。而這些問題是保證防偽系統能夠真正起到防偽打假的決定性基礎因素,而且移動設備內置NFC設備的普及、給商品粘貼RFID標簽(會增加商品的成本)等問題有待進一步的發展和推廣,這些都需要商品廠家、智能手機生產商、政府相關職能部門和消費者的防偽意識等諸多方面的協作才能有效實施。
[1] 蘆佳,衛強,陳兵. 基于RFID技術的防偽平臺的設計與實現[J]. 計算機技術與發展, 2012(5):233-236.
[2] 何飛,馬紀豐,梁浩.基于RFID技術的酒類溯源防偽系統研究與應用[J].現代電子技術,2015,38(8):99-102.
[3] 吳思楠,周世杰,秦志光.近場通信技術分析[J]. 電子科技大學學報, 2007(6):1296-1299.
[4] 辛卓.基于NFC的移動導醫系統設計[J].軟件導刊,2015,14(6):104-106.
[5] 孫恒.基于NFC技術和云服務的新型門禁系統設計與實現[J]. 實驗室研究與探索,2016,35(1):114-120.
[6] 徐磊,周喜,馬玉鵬,等. 一種基于NFC手機的RFID中間件的設計與實現[J]. 計算機與現代化,2014(2):90-94.
[7] 張玉清,王志強,劉奇旭,等.近場通信技術的安全研究進展與發展趨勢[J].計算機學報,2016,39(6):1190-1207.
[8] 蘇婕,王忠.基于NFC技術的巡更巡檢管理系統的設計與實現[J].計算機工程與設計,2015,36(4):1069-1071.
[9] 佚名. NFC防偽溯源系統解決防偽難題[J]. 中國自動識別技術, 2016(5):38-38.
[10] 馬紀豐.安全RFID與NFC手機的互動防偽應用[J].中國防偽報道,2014(11):92-95.
[11] 賈蓓,鎮明敏,杜磊,等.Java Web整合開發實戰:基于Struts 2+Hibernate+Spring[M].清華大學出版社,2013.
RESEARCHANDAPPLICATIONOFSECURITYAUTHENTICATIONSYSTEMBASEDONRFIDANDNFCTECHNOLOGY
Jiang Hui1Sun Linjuan1Zhang Xinrong21
(DepartmentofComputerScienceandTechnology,TianjinUniversityRenaiCollege,Tianjin301636,China)2(SchoolofComputerScienceandTechnology,TianjinUniversity,Tianjin300072,China)
Facing the present security authentication methods in the commodity market, based on RFID and NFC technology, this paper puts forward a relatively complete security authentication system plan, and designs and implements a security authentication system prototype. With RFID radio frequency tag as the information carrier, mobile phone NFC device as a radio frequency tag reader, together with the application system of database center, the system can be used as a tool to test the authentication of commodities. Moreover, the system adopts JavaEE platform for design and development. It has certain reference and guiding significance for enterprises to carry out anti-counterfeit certification of goods in terms of ideas and techniques.
NFC RFID Security authentication Radio frequency identification Electronic tag
TP311
A
10.3969/j.issn.1000-386x.2017.09.062
2017-03-22。蔣輝,講師,主研領域:軟件工程,移動互聯網與大數據處理,企業信息化。孫林娟,講師。張新榮,教授。