基于NFC的电子凭证系统研究

2016-02-24 08:34陈鹏辉谢四江汤华溢刘金铄
北京电子科技学院学报 2016年2期
关键词:公钥凭证客户端

陈鹏辉谢四江汤华溢刘金铄

基于NFC的电子凭证系统研究

陈鹏辉1,2谢四江1,2汤华溢1刘金铄1

1.北京电子科技学院,北京 100070 2.西安电子科技大学计算机学院,陕西西安 710071

随着移动互联网与智能手机的普及,人们处理事务的方式已经从线下转移到线上,在线购票与验票都可以使用手机来完成。因此本文通过分析现有电子凭证系统的不足和Android手机存在的安全性问题,结合NFC和SE设计并实现了一个安全的电子凭证系统,实现了电子票据在手机中的安全存储和在系统各部分间的安全传输。该系统独立于已有的网上售票系统,并作为它们的功能补充,可以直接在验证终端验证电子凭证且验证过程不需联网即可完成。

电子凭证;近场通讯;安全单元

引言

随着智能手机的普及,人们越来越多的依靠手机来处理生活中的事务。近年来,带有NFC(Near Field Communication,近场通信)功能模块手机的出现也使NFC应用得到了推广[1],火车票、电影票、演出门票等实体票据都可以以电子凭证的形式储存在手机中。实体票据具有换票等待时间长,防伪困难,验票流程复杂等缺点,用电子凭证代替实体票据是电子票务发展的趋势。

目前的电子凭证都是以数字串、二维码、NFC标签的形式储存网址或验证码信息,验证设备通过输入数字串、扫描二维码或靠近NFC标签得到凭证信息并验证,验证通过后再为用户发放实体票据。这种形式的电子凭证容易复制、缺乏必要的安全机制、需要联网验证且在验证通过后换取纸质票据才能使用。而本文设计一种新型电子凭证系统,该系统省去了换票的过程,它直接为用户发放包含真实票据信息的电子凭证,不需要再换取纸质票据,系统验证电子凭证即可控制访问权限。本系统不改变原有的在线售票系统,而是加入一个可信的第三方机构来确保电子凭证的安全性,添加一个自动验票终端来控制访问权限,该验票终端可以和原来的验票方式并存。

1 电子凭证相关技术

1.1 NFC技术

NFC是一种利用无线射频技术实现设备间通信的近距离无线通信技术[2],该技术由RFID (Radio Frequency Identification,射频识别)演变而来[3],并向下兼容 RFID。NFC最早由Sony和Philips两家公司于2002年年末推出,主要用于为手持设备提供M2M(Machine to Machine,机对机)的通信。调查公司ABI预测,到2017年年底NFC在用设备将达到19.5亿台。由于NFC的安全性突出,它在手机支付、访问控制等领域应用十分广泛。它有三种运行模式:读写器模式、P2P(Peer-to-Peer)模式和卡模拟模式[4]。

本文基于NFC的P2P运行模式设计了电子凭证系统。NFC P2P协议由模拟信号层(Analogue)、数字协议层(Digital Protocol)和逻辑链路层(Logical Link Control)三层组成。该协议的最上层为LLC(Logical Link Control,逻辑链路控制)层,它使用的协议是LLCP(LLC Protocol,逻辑链路控制协议)[5],为上层提供无连接和面向连接两种数据传输服务。LLC层更像是底层实现,它关注更多的是物理寻址、链路管理以及数据传输方面的事情。因此NFC又在LLC层之上添加了 SNEP(Simple NDEF Exchange Protocol,简单NDEF交换协议)以方便用户使用。SNEP使两个NFC设备之间可以直接交换 NDEF(NFC Data Exchange Format,NFC数据交换格式)消息[6],它使用的是LLC层提供的面向连接的数据传输服务。

1.2 NFC手机

NFC手机是带有NFC功能模块的手机,它的NFC功能部件主要有主机控制器、NFC控制器、安全单元和天线,如图1所示。SE(Secure Element,安全单元)和 NFCC(NFC Controller,NFC控制器)通过SWP(Single Wire Protocol,单线协议)或 S2C(SignalIn/SignalOut Connection Interface)进行数据交互,SE上会运行一些安全的应用程序,NFC控制器负责将数据通过SWP或S2C传递给SE中的应用程序进行处理。NFCC通过HCI(Host Controller Interface,主机控制接口)与主机控制器交换数据,而SE可以通过ISO 7816协议与主机控制器交换数据。

NFC手机中必须包含有供用户使用的应用程序,且SE中也必须有安全的应用程序。SE是由GP(Global Platform,全球平台组织)提出的一个能够防止篡改的平台[7],它能够按照事先规定好的规则安全地运行应用程序以及保存数据。NFC和SE配合才能完成安全的数据交换,目前常用的组合方式有三种:SE为一个嵌入式安全芯片、SE为一个安全的SD卡、SE为一个特制的安全SIM卡。这些组合方案一般是为NFC卡模拟服务的,本系统使用NFC的P2P模式进行电子凭证的验证,但为了安全存储电子凭证,本系统使用安全SD卡作为SE存储用户的私钥。

2 设计与实现

2.1 系统组成

本文结合NFC的P2P运行模式和SE设计了一个安全的第三方电子凭证系统,该系统为售票系统提供电子凭证的储存、下载和验证功能,它由电子凭证服务器、手机客户端和验证终端组成。该系统有电子凭证系统管理员、售票系统管理员、客户和验证终端管理员四个参与者。电子凭证系统管理员负责电子凭证模板的创建、修改和删除,并负责为用户发放公钥证书;售票系统管理员在使用本系统前要进行注册,注册时需要提供它的公钥信息,而它的私钥用来对电子凭证进行签名;客户在使用本系统前需要安装手机客户端并注册,注册时需要先在SE中安装对应的安全应用并生成客户的公私钥对,公钥传给服务器用来对电子凭证加密,私钥存放在SE中用来在验证时对电子凭证解密;验证终端完成电子凭证的验证并控制访问权限,在验证前需要获得电子凭证发行商的公钥证书,用公钥证书验证电子凭证的合法性。系统工作流程如图2所示,它的具体工作流程如下:

1)客户通过手机或电脑购票系统完成在线订票,在订票时需要填写本系统手机客户端注册的用户名,以确保将电子凭证发放给相应的购票用户。

2)售票系统根据客户提供的用户名将票务信息和对这些信息的签名作为电子凭证发送给电子凭证服务器。

3)客户登录电子凭证手机客户端,请求获得电子凭证,服务器用客户公钥加密电子凭证后发送给客户。

4)客户用私钥解密电子凭证后与验证终端通信验证电子凭证。

5)验证终端控制对地点的访问。

2.2 系统功能

本系统由电子凭证服务器、手机客户端和验证终端三部分组成,系统功能图如图3所示。

1.电子凭证服务器功能

模板管理:系统管理员可以根据不同的应用场景添加、修改和删除模板。以电影票模板为例,它应该包括:用户名、影院名称、时间、地点、场次、影片名称、座位号和商家签名。

售票系统接口:本系统主要为商家提供电子凭证的存储和验证功能,售票系统根据该接口规范向电子凭证服务器提供电子凭证。

手机客户端接口:本系统为手机客户端提供注册、登录、修改个人信息、下载电子凭证等接口。

证书下载接口:系统为每一个商家生成相应的公钥证书并为验证终端提供证书的下载接口。

验证接口:验证接口记录客户的电子凭证使用信息。

2.手机客户端功能

安全单元应用:本系统使用一个安全的SD卡作为SE单元,在该安全单元中安装一个RSA密钥对生成与保存程序,在用户注册时为用户生成公私钥对并将公钥传给服务器。

注册:用户在使用本系统前必须进行注册操作,注册用户名是用户的唯一标识,它可以作为售票系统发放电子凭证的目标标识。

登录与个人信息修改:用户登录后可以修改登录口令、更改验证邮箱、更换公私钥对等。

获取电子凭证:登录用户请求服务器获得该用户公钥加密的电子凭证,该电子凭证储存在手机中,下次无需登录也可使用。

使用电子凭证:用户使用电子凭证时使用SE中存储的私钥解密电子凭证,将解密的电子凭证传给验证终端进行验证。

3.验证终端功能

获取商家公钥证书:电子凭证是由相应的商家发放的,验证终端与电子凭证服务器通信获得商家的公钥证书。

验证电子凭证:验证终端验证电子凭证的使用时间、使用地点等信息,验证完成后再验证商家的签名,如果全部验证通过则控制打开相应的闸机,将此次验证信息写入数据库。如果有使用次数限制则每次验证前从服务器端获取电子凭证的使用次数信息。

2.3 安全性分析与设计

1.服务器安全性分析与设计

考虑到电子凭证的安全,本系统使用SSL (Secure Sockets Layer,安全套接层)作为底层协议保证客户端与服务器、服务器与服务器之间的通信安全。SSL是一种成熟的安全协议,它可以认证用户和服务器,确保数据发送到正确的客户机和服务器;加密数据以防止数据中途被窃取;维护数据的完整性,确保数据在传输过程中不被改变。为了能够保证系统各组成部分之间相互认证,本系统自建CA服务器,分别为售票系统服务器、电子凭证服务器、验证终端和用户发放公钥证书。服务器之间、服务器与验证终端之间使用验证双方的SSL,手机客户端与服务器的通信因手机客户端众多且经常变动而使用只验证服务器端的SSL。

2.手机客户端安全性分析与设计

Android采用沙盒技术来运行手机中的应用,它是基于 Linux的进程与账号相结合的DAC(discretionary access control,自主访问控制)进行权限限制。虽然该技术在一定程度上保证了手机操作系统的安全,但却限制了用户使用操作系统的高级特性。当用户root了自己的Android手机后,相当于应用获得了系统的超级管理员权限。这样一来,手机中的应用就可以获得系统的任何数据,它的权限已经超越了沙盒,手机中保存的任何信息也就不再安全了[8]。因此本文使用SE来存储电子凭证的密钥信息,而在手机中存储加密的电子凭证信息,这样即使其它人能够从手机中窃取电子凭证也因其不能解密电子凭证而保证了电子凭证的安全。

本文使用的SE遵循GP规范,它搭载了JCRE(Java Card Runtime Environment,Java智能卡运行环境),该环境是为保护存储在智能卡上的敏感信息而开发的,所以它具有很高的安全性。它的数据都封装在独立于操作系统和硬件的环境中,它的虚拟机为每个应用程序之间建立了防火墙,它提供了常用的对称和非对称密码算法、加解密服务、签名服务、密钥交互服务等,它能够运行一些Applet小程序。Android为应用开发者提供了Open Mobile API,通过它可以访问安全单元,由于它的安全性有限,本系统设计一个GPManager模块完成SE的访问控制。

因为本系统使用的是只验证服务器的SSL,所以本系统又使用挑战应答方式验证客户端。登录时序图如图4所示,具体登录过程如下:

1)客户端输入用户名username,登录口令login_pwd,请求登录服务器。

2)服务器收到登录请求后生成一个随机数R,把随机数R发送给客户端。

3)客户端用得到的随机数R进行Hmac (R,SHA256(login_pwd))运算之后把它和用户名一起发送给服务器。

4)服务器得到登录信息后按用户名查询数据库得到存储的password,然后使用相同的随机数R进行Hmac(R,password)运算,运算结果和客户端传来的信息一致则验证通过,登录成功。

3.验证终端安全性分析与设计

验证终端用来对电子凭证进行验证,手机客户端传给验证终端的是未加密的电子凭证信息。手机客户端与验证终端使用NFC的P2P模式进行通信,NFC本身具有安全机制,并能够对通信内容进行加密,所以本部分的通信依靠NFC自身的安全机制即可实现手机客户端与验证终端的通信安全。因此本部分的安全性设计主要集中在验证流程的安全上,电子凭证应是针对相应的售票系统并具有日期、时间、地点等验证特征,如果电子凭证作为某种门卡使用则可以限制使用次数。根据系统的安全性需求设计了如下验证流程:

1)查看日期、时间、地点等是否与验证终端相符,相符则转第2步,不相符则转第5步。

2)用售票系统公钥证书验证电子凭证是否真实有效,有效则转第3步,无效则转第5步。

3)查看电子凭证是否有使用次数限制,没有则转第4步;有使用次数限制则向服务器请求获得该电子凭证的剩余使用次数,若使用次数为0则转第5步,不为0则转第4步并把使用次数减一信息传给服务器。

4)验证通过,绿灯闪烁并打开闸机。5)验证不通过,红灯闪烁。

2.4 系统实现

1.电子凭证服务器实现

服务器端选择Node作为开发平台,它是一个响应快速、扩展方便的网络应用平台,它采用轻量高效的非阻塞I/O模型,适合于运行实时应用。本系统的服务器基于 REST (Representational State Transfer,表述性状态传递)风格设计软件架构,它的客户端和服务器之间的交互是无状态的,从客户端到服务器的每个请求都必须包含解析请求所需的所有信息,并且这种无状态请求可以由任何可用服务器响应,这十分适合分布式的运行环境。

首先下载安装Node,之后使用npm install express安装express框架。sequelize作为Node的关系数据库ORM(Object Relational Mapping,对象关系映射)框架,提供对MySQL,SQLite和PostgreSQL数据库的访问。本系统选择PostgreSQL作为数据库。考虑到数据传输的安全性,系统采用SSL协议。作为工业标准的SSL协议已经有许多成熟的解决方案,故不自行开发,而是使用开源社区中广泛使用的OpenSSL。由于SSL是基于非对称密码的加密体系,所以在开发前需要准备用于加解密及验证的私钥和数字证书,本系统分别为CA和电子凭证服务器准备1套密钥及证书,CA的私钥用于为售票服务器、验证终端和用户证书签名。

2.手机客户端实现

手机客户端选择Android平台,按照系统功能和性能要求,客户端的实现使用Native的开发方式。Native App架构的客户端包含界面展现、业务逻辑和数据模型三个部分。选择这种架构是因为客户端要使用手机的NFC硬件资源,Native的开发方式提供了对硬件的访问接口,并且在Native开发方式下,业务形态完全由客户端控制和调度,服务器端的服务独立性较强。这种开发方式可以使客户端的表现力更加丰富,性能更好,用户体验更出色。

考虑到安全性,Android客户端与服务器的通信采用https,但是Android只支持BKS类型的证书库,所以首先用jdk提供的keytool工具导入CA根证书生成bks证书库文件。得到CA根证书的证书库文件cacerts.bks后把它放入android项目下的res/raw文件夹下面,之后在提供http连接功能的HttpHelper类中加入对https的支持。在建立连接时首先用CA证书验证服务器端证书是否是CA颁发的,然后再验证服务器是否是声称的服务器,即用STRICT_ HOSTNAME_VERIFIER进行严格限制。

为了实现Android应用与SE模块的安全通信,需要使用一个GPManager模块,它负责生成APDU(Application Protocol Data Unit,应用协议数据单元)指令以及SE管理器返回的APDU指令。GPManager模块包括四个部分:认证、应用安装、删除应用实例、查看SE状态。在与SE通信前要建立安全通道,SE中预置了1组安全通道密钥,每组安全通道密钥包括S-ENC、S-MAC、DEK三个密钥,这些密钥的作用是在安全通道的建立过程中生成临时的会话密钥。安全通道建立后就可以在SE中安装相应的安全应用。

3.验证终端实现

验证终端是布局在线下的验证设备,验证终端原型如图5所示。本系统为实物系统设计了一个运行Linux系统,以EasyARM-i.MX283A开发版作为主程序控制器,它与SMC532串口通信获得手机客户端传来的电子凭证信息,与验证服务器通信获得电子凭证发放系统的公钥证书和使用次数等信息,验证通过后通过继电器控制打开闸机,并将此次电子凭证的验证信息传给服务器。

3 结束语

移动互联网时代的来临使得智能手机成为人们日常生活中不可或缺的一部分,基于现金和纸质票据的传统票务系统已经不能满足时代的要求,而现有的电子凭证系统又缺乏必要的安全机制且验票流程比较繁琐。本文在不改变现有网上售票系统的前提下,设计了一个安全的第三方电子凭证系统,该系统可以为商家储存电子凭证、给用户发放电子凭证、验证用户的电子凭证。本系统的核心是手机客户端电子凭证的安全性,为了确保电子凭证不被非法使用,本系统使用SE生成的公钥加密存储电子凭证,使用时再用SE中的私钥解密电子凭证。而电子凭证的传输是基于SSL和NFC近距离传输的安全机制的,这大大提高了系统的可靠性和安全性,符合电子票务系统的发展要求。

[1]Seo Y D,Ahn J H.Efficient NFC Tagging Pattern-Based Contents Recommendation for Museum Viewers[J].Applied Mechanics&Materials,2013,263-266:2876-2880.

[2]Samsung Electronics.S3C6410X_UM_Rev[EB/OL].[2010-11-15].http:// www.samsung.com/global/business/semiconductor/support/brochures/downloads/systemlsi/s3c6410_datasheet_200804.pdf.

[3]陈华君,林凡,郭东辉,等.RFID技术原理及其射频天线设计[J].厦门大学学报,2005,44(S1):312-315.

[4]Ecma. ECMA - 352,Near Field Communication Interface and Protocol (NFCIP-2)[S].GENEVA:Ecma International,1st Edition,December 2003.

[5]NFC Forum.NFC Forum TS LLCP_1.0.LogicalLink ControlProtocol Technical Specification[S],December 2009.

[6]NFCDataExchangeFormat(NDEF) TechnicalSpecification.NFC Forum TM NDEF 1.0 NFC Forum-TS-NDEF_1.0[S],2006-07-24.

[7]Markantonakis K,Mayes K.An overview of the globalplatform smart card specification[J].Information Security Technical Report,2003,8(1):17-29.

[8]Miller C.Mobile attacks and defense[J].Security&Privacy,IEEE,2011,9(4):68-70.

Research on the System of Electronic Voucher Based on NFC

Chen Penghui1,2Xie Sijiang1,2Tang Huayi1Liu Jinshuo1
1.Beijing Electronic Science and Technology Institute,Beijing 100070,China; 2.School of Computer Science and Technology,Xi’dian University,Xi’an Shaanxi 710071,China

With the popularity of the mobile Internet and the Smartphone,the way people handle affairs is now shifting from offline to online.Affairs likeonline booking and tickets checking can be accomplished by using a mobile phone.Through analyzing the deficiency of the existing electronic voucher system and the security problems of Android mobile and combining the NFC and SE,this paper designs and realizes a safe electronic voucher system to achieve the security storage and the transport security of the e-note.This system can be deployed independently from the existing online ticketing services.The electronic voucher can be verified by the verification terminal immediately and this process does not need the Internet.

Electronic Voucher;Near Field Communication;Secure Element

TN918.91

A

1672-464X(2016)2-31-07

(责任编辑:鞠 磊)

本论文受“中央高校基本科研业务费”资助(项目编号328201542)

** 作者简介:陈鹏辉,1989,男,西安电子科技大学在读研究生,主要研究方向:信息安全。

猜你喜欢
公钥凭证客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
2021年《理财》《财经审计法规选编》征订单
企业所得税税前扣除凭证管理凸显九大亮点
神奇的公钥密码
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究
媒体客户端的发展策略与推广模式
畅捷通T3凭证处理常见问题解析
新华社推出新版客户端 打造移动互联新闻旗舰