APP下载

基于RFID与NFC技术的防伪认证系统的研究与应用

2017-09-23孙林娟张新荣

计算机应用与软件 2017年9期
关键词:商品信息电子标签防伪

蒋 辉 孙林娟 张新荣

1(天津大学仁爱学院计算机科学与技术系 天津 301636)2(天津大学计算机科学与技术学院 天津 300072)

基于RFID与NFC技术的防伪认证系统的研究与应用

蒋 辉1孙林娟1张新荣2

1(天津大学仁爱学院计算机科学与技术系 天津 301636)2(天津大学计算机科学与技术学院 天津 300072)

针对商品市场现有的防伪认证方式,在分析和研究RFID技术和NFC技术的基础上,提出一套相对完整的防伪认证设计思路,并设计与实现了一个防伪认证系统原型。该防伪认证系统以RFID射频标签作为信息载体,以手机NFC设备作为射频标签读写器,结合数据中心的应用系统来完成商品真伪性的验证。该系统采用JavaEE平台进行设计开发,对企业进行商品防伪认证在思路和技术方面有一定的借鉴和指导意义。

NFC RFID 防伪 射频识别 电子标签

0 引 言

随着我国社会经济的快速发展,出现了企业或个人,为了自身利益,生产和出售假冒伪劣商品的现象,导致假冒伪劣商品的生产和流通日益泛滥,涉及行业和商品种类众多,严重损害了企业和消费者的利益和安全。如何通过相关信息化技术手段,对商品的真伪性进行鉴别,防止假冒伪劣商品在市场上流通和销售,成为一项亟待解决的重要问题。

目前,已经被广泛应用的比较成熟的防伪技术有条码防伪、光学防伪、生物防伪、材料防伪、印刷防伪和RFID防伪等,整体来说,基于RFID技术的防伪技术有着较高的性能。因此,本文所提出的防伪系统也采用了RFID部分技术。

1 RFID与NFC技术简介

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电子标签的无线通信。

2 防伪认证系统设计思路

在本文中,运用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 防伪认证基本流程

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 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检索商品基本信息。

4 防伪认证系统测试部分

系统测试部分,本文根据香烟商品的基本数据来设计系统测试用例,通过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导致的,这样会引起密钥的不相等,导致认证结果为“伪品”。

5 结 语

本文基于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。蒋辉,讲师,主研领域:软件工程,移动互联网与大数据处理,企业信息化。孙林娟,讲师。张新荣,教授。

猜你喜欢

商品信息电子标签防伪
RFID电子标签在全钢子午线轮胎中的应用
探讨RFID应用于防伪
INTEGRITYTM ECO100再生缝纫线引入防伪技术
信息技术在印刷包装防伪上的应用分析
图书馆不同领域的电子标签敏感信息智能过滤系统设计
电子防伪技术专利综述
备战双十一
电子商务背景下商品信息检索问题研究
RFID技术中防碰撞算法的改进
加强医院采购管理工作的思考与实施