一种基于nfc近场通信技术的移动支付装置及其方法

文档序号:8004875阅读:188来源:国知局
一种基于nfc近场通信技术的移动支付装置及其方法
【专利摘要】本发明公开了一种基于NFC近场通信技术的移动支付装置及其方法,将NFC技术与硬件加密结合:本发明首次将NFC技术与硬件加密结合应用于移动终端支付领域,相比传统的动态口令等软件加密,安全性及可靠性更高;本发明的移动支付装置,采用折叠式设计,在不使用时,将显示屏折叠,放进移动支付装置外壳中,占用空间小且对显示屏进行了有效的保护,防止显示屏在移动携带的过程中损坏。本发明的支付装置体积小,易携带,可集成为一张带液晶屏的卡片;本发明中,采用硬件加密的方式,将密钥存储在硬件内,能够在硬件上保证私钥的安全性,外界无法通过移动终端获取支付装置内的私钥,降低了密钥泄露的可能性,从而使得支付更加安全。
【专利说明】一种基于NFC近场通信技术的移动支付装置及其方法
【技术领域】
[0001]本发明涉及一种基于NFC近场通信技术的移动支付装置及其方法,属于移动支付 【技术领域】。
【背景技术】
[0002]网络购物模式的兴起,带动网上支付系统的发展,更便捷、更安全地进行在线支付 成为了所有用户和商家追求的目标。作为网络支付的里程碑,U盾使得用户在计算机等相 对固定的平台上能够更快捷、安全的支付。而移动支付,则是未来支付的重要发展方向。
[0003]对于移动支付,其安全性是首先要解决的问题。目前,影响移动支付安全的主要因 素有以下几个:
[0004](I)无线网络的安全漏洞
[0005]在移动通信网络中,移动设备与固定网络信息中心之间的所有通信都通过无线接 口传输,而无线接口是开放的,任何拥有适当无线设备的人,均可以通过窃听无线信道而获 得传输信息,甚至可以修改、插入、删除或重传无线接口中传输的信息。
[0006](2)移动设备的安全隐患
[0007]移动设备的不安全因素主要表现在用户身份、账户信息和认证密钥丢失;移动设 备被攻击和数据破坏;SIM卡被复制;RFID被解密等。目前的手机等移动终端普遍缺乏使用 RSA, AES等加解密算法的安全防护措施,同时在传统的互联网环境中,USB Key被广泛地用 作这一用途。然而,在移动终端上对USB并没有相应支持。
[0008]目前,现有技术中,移动终端(例如手机等)上的支付行为多采用短信验证码、动态 口令等形式,但是均存在缺陷:
[0009]短信验证码缺点:可靠性差,当手机信号不畅通时难以完成身份认证,甚至可能被 监听者利用网络延时进行数据窃取或攻击。
[0010]动态口令缺点:需要生成动态口令的支付装置与服务器时钟完全一致,系统精度 要求高;应用成本较高,需要一台额外的服务器接受来自认证服务器中继的请求。
[0011]NFC近场通信技术(Near Field Communication, NFC),是一种短距离的高频无线 通信技术,下兼容RFID (射频识别),但与RFID有区别。NFC近场通信技术可以在单一芯 片上集成非接触式读卡器、非接触式智能卡和点对点的通信功能,运行在13.56MHz的频率 范围内,都在大约IOcm范围内建立设备之间的连接,传输速率可为106kbit/s,212kbit/s, 424kbit/s,甚至可提高到848kbit/s。NFC采用双向识别和连接,通信双方不存在固定的主 从关系,通信可以由任意一个NFC设备发起。
[0012]NFC设备工作模式有以下三种:
[0013]卡模式(Card emulation):该模式下NFC设备相当于一张采用RFID技术的IC卡, 可以用于商场刷卡、公交卡、门禁管制,车票,门票等场合。此种方式下,卡片通过非接触读 卡器的RF域来供电,即便是移动终端(如手机)处于关机状态下也可以工作。
[0014]点对点模式(P2P mode):该模式可用于数据交换,传输距离较短,但传输速度快,功耗低。将两个具备NFC功能的设备连接,可以实现如交换图片、同步通讯录等点对点数据 传输。
[0015]读卡器模式(Reader/writer mode):作为非接触读卡器使用,典型应用场景为从 海报或者展览信息电子标签上读取相关信息。
[0016]NFC设备之间传输数据的格式为NDEF (NFC Data Exchange Format,NFC数据 交换格式),NDEF是一种轻量级的紧凑二进制格式,能够承载URL (网页地址)等类型的数 据。设备间所传递数据则被称为NdefMessage (NDEF消息)。每个NdefMessage中包含 若干NdefRecord (NDEF记录),每条NdefRecord包含一个头部(Header)和一个有效载荷 (Payload),记录中的数据类型和大小由头部注明,记录内容可以是URL、MME (多用途互联 网邮件扩展)或者NFC自定义的数据类型。若使用NFC定义的数据类型,载荷内容必须被定 义在一个NFC记录类型定义(RTD )文档中。

【发明内容】

[0017]本发明的目的是针对移动终端在进行移动支付时安全性及可靠性低、支付装置携 带不方便、易受干扰等问题,提出一种基于NFC近场通信技术的移动支付装置及其方法。本 发明实现了移动终端支付时的电子签名和数字认证,采用硬件加密方式,确保交易的保密 性、真实性、完整性和不可否认性。
[0018]一种基于NFC近场通信技术的移动支付装置,包括外壳、显示屏、旋转模块、按键、 微处理器、第一 NFC模块、供电模块和开关;
[0019]移动终端内设有第二 NFC模块;
[0020]外壳侧面设有凹槽,旋转模块通过旋转轴固定在外壳的凹槽内,显示屏与按键固 定在旋转模块上,微处理器、供电模块和第一 NFC模块位于外壳内部;
[0021]显示屏用于显示支付信息显示,按键用于查看显示屏信息、确认支付、取消支付以 及重启支付装置;
[0022]开关位于外壳上,开关控制供电模块对显不屏、微处理器、第一 NFC模块的供电;
[0023]供电模块包括锂电池和充电口,供电模块利用锂电池为显示屏、微处理器、第一 NFC模块供电,外界通过充电口对锂电池充电;
[0024]微处理器包括控制模块、硬件加密模块;
[0025]硬件加密模块内设有密钥区,密钥区内存储有RSA私钥,硬件加密模块设有PIN码 功能,通过PIN码对支付装置进行访问控制;硬件加密模块内设有哈希算法和RSA加解密算 法,能够实现数据验证、数据摘要、数据加解密和签名;
[0026]控制模块具有控制功能,用于控制显示屏、按键及第一 NFC模块与包含第二 NFC模 块的移动终端之间的通信;
[0027]第一 NFC模块与第二 NFC模块之间采用NFC技术进行通信。
[0028]一种基于NFC近场通信技术的移动支付装置的支付方法,包括以下内容:
[0029]移动终端向支付装置发送数据的方法:
[0030]I)、移动终端通过用户输入或自动生成的方式,获得一条或若干条需要发送的数 据,包括在双向身份认证过程中为银行端发送的随机数以及Hash值;PIN码认证过程中为 用户输入的PIN码;还包括银行发送的账单信息,上述数据可为字符串、整数、浮点数或数组,非字符串类型数据在发送前转换为字符串类型;
[0031]2)、移动终端通过getBytes ()函数将每一条数据都转换为字节型数组byte □,即十六进制数据;
[0032]3)、移动终端将byte []类型的十六进制数据传入NdefRecord(short tnf, byte [] type, byte [] id, byte [] payload)构造函数,得到NdefRecord类型对象,从而将每一条数据格式转化为NdefRecord类型;构造函数中tnf为NDEF数据类型,type为数据格式的具体声明,id为标识符的元数据,payload为要传输的数据内容;
[0033]4)、移动终端将 NdefRecord 类型数据传入 NdefMessage (NdefRecord[]records) 构造函数,得到NdefMessage类型的数据,该数据中包含前述的一条或若干条NdefRecord 类型的数据,该类型的数据即为支持NFC功能的设备间进行通信时所使用的标准数据格式 NDEF,符合SNEP协议所要求的标准,为移动终端与装置之间直接交互的内容;
[0034]支付装置接收移动终端所发送数据的方法:
[0035]1)、支付装置通过开关启动电源后,调用rxNDEFPayloadO函数,使支付装置处于等待数据的状态,准备接收一个能够匹配SNEP协议所规范的NdefMessage类型数据;
[0036]2)、当有数据信息传来时,支付装置首先检测传递信息的设备能否支持点对点通信,若检测通过则接收该数据;接收该数据时会先验证数据完整性,若数据完整则将该数据存为NdefMessage类型;
[0037]3)、支付装置通过getRecordO [i]函数从NdefMessage类型数据中提取之前移动终端中封装好的若干条NdefRecord类型数据;
[0038]4)、支付装置通过getNDEFChar ()函数,将NdefRecord类型数据转化为char []; 在其末尾添加结束标识符,即可将其转换为字符串;上述方式完成了从移动终端到支付装置数据的传递;
[0039]支付装置向移动终端发送数据的方法:
[0040]I)、支付装置获得一条或多条需要发送的数据,该数据由移动终端发送的数据经过解密以及数据比对后生成,包括数字签名、身份认证是否通过的确认信息以及需要发送至移动终端的数据,上述数据可为字符串、整数、浮点数或数组,非字符串类型数据在发送前转换为字符串类型;
[0041]2)、利用 createNDEFShortRecord (uint8_t%iessage, uint8_t payloadLength, uint8_ t*&NDEFMessage)函数,其中^message为要传输的数据内容,payloadLength为数据长度, NDEFMessage为要发送的NdefMessage类型数据;该函数首先填充NdefRecord的头部,再将字符串数据添加为负载,实现将每一条字符串类型数据分别转换为NdefRecord类型数据,并直接封装为NdefMessage类型数据,同时返回数据长度txLength,用于判断NdefMessage是否成功生成;
[0042]3)、利用 pushPayload (txNDEFMessagePtr, txLength)函数,其中 txNDEFMessagePtr 为要发送的Ndeflfessage数据,txLength为数据长度;该函数调用数据链路层中的 openNNPClientLink()函数,若连接成功建立则调用 clientLinkTxData((uint8_t*) snepMessage, Iength+SNEP_MESSAGE_HDR_LEN)函数,进行一次 NdefMessage 类型数据的发送;
[0043]移动终端接收支付装置所发送数据的方法:[0044]I )、根据移动终端所包含的第二 NFC模块的特性,若开启NFC功能,当移动终端处 于屏幕点亮状态并解锁,移动终端一直处于等待接收消息状态;
[0045]2)、当移动终端在能够识别的范围内检测到支付装置发送数据所产生的射频场 时,自动接收支付装置所发送的NdefMessage类型数据;
[0046]3)、通过getRecords () [i]函数,提取NdefMessage数据中包含的一条或若干条 NdefRecord数据,再通过getPay1adO函数得到byte []类型数据;
[0047]4)、将byte[]类型数据传入String (byte [] data)构造函数,即可获得字符串类型 数据;上述方式完成了从支付装置到移动终端数据的传递。
[0048]一种基于NFC近场通信技术的移动支付装置的支付方法,在移动终端上,使用支 付装置进行支付的方法包括:
[0049]I)、用户需要支付时,向银行提交待支付账单;
[0050]2)、在移动终端进行刷新,得到银行推送给移动终端的账单信息,点击账单进行支 付,同时将支付装置贴于移动终端之后,移动终端提示“输入PIN码”,PIN码输入正确后,支 付装置开始与银行端服务器进行身份验证;
[0051]3)、双向身份认证过程中一共利用了两对密钥,其中一对设为Rl,另一对设为R2, 其中Rl的私钥在支付装置出厂时已被内置到支付装置内,Rl的公钥由银行保存;支付装置 利用Rl私钥签名,银行利用Rl公钥解密,验证用户身份;R2公钥在用户每次进行账单请求 时,移动终端从银行端获取,R2的私钥则由银行保存;银行利用R2私钥签名,移动终端利用 R2公钥解密,验证银行身份,上述方式即实现了双向身份认证;
[0052]银行端服务器产生一个随机数X及其Hash值,并用R2的私钥对Hash值进行签名 为密文A,通过socket通信将随机数X与数字签名一起发送给移动终端;移动终端收到随 机数X和数字签名后,用同样的Hash算法对随机数X计算出Hash值,然后与用移动终端从 银行端获取的R2公钥对数字签名进行解密解出的Hash值相比较;如两Hash值相等则银行 端身份得以确认;此后,移动终端将该随机数X及其Hash值通过的第二 NFC模块发送至支 付装置;支付装置得到随机数X及其Hash值后,以预先和银行约定好的随机数生成算法,利 用随机数X和预先和银行约定好的其它信息,生成新的随机数Y和相应的Hash值,再用Rl 私钥签名后发回银行;此时银行也以相同的算法计算新的随机数Y ;银行用Rl公钥解密,并 验证Hash值正确,银行比较两个新的随机数是否相同,若均相同则支付装置所有者的身份 得以确认,至此双向认证完成;
[0053]4)、双向身份认证成功后,移动终端及支付装置会提示身份认证成功;此后,银行 端利用Rl的公钥对待支付账单的商品名称、金额、交易日期及流水号进行加密为密文B,然 后将密文B传输到移动终端上,再通过移动终端传输到支付装置中,支付装置使用Rl的私 钥对接受到的密文B进行解密得到明文账单信息,并将该明文所表示的待支付账单的商品 名称、金额、交易日期及流水号在显示屏上显示。此时,如果确认支付,按下显示屏旁的确认 支付按钮,如果取消支付,按下显示屏旁的取消按钮。确认支付后,支付装置用Rl私钥对 代表支付成功的命令进行数字签名,通过支付装置的第一 NFC模块传输给移动终端的第二 NFC模块,移动终端通过socket网络通信将代表支付成功的命令及其数字签名传输给银行 端服务器,银行端用Rl的公钥解密数字签名。若签名信息无误,则从该银行账户扣去相应 金额,并返还已支付状态的信息给移动终端;在移动终端上点击刷新,该账单状态由待支付变为已支付。
[0054]本发明的优点在于:
[0055](I)将NFC技术与硬件加密结合:本发明首次将NFC技术与硬件加密结合应用于移动终端支付领域,相比传统的动态口令等软件加密,安全性及可靠性更高;
[0056](2)体积小:本发明的移动支付装置,采用折叠式设计,在不使用时,将显示屏折叠,放进移动支付装置外壳中,占用空间小且对显示屏进行了有效的保护,防止显示屏在移动携带的过程中损坏。本发明的支付装置体积小,易携带,可集成为一张带液晶屏的卡片;
[0057](3)硬件加密移动支付方式-支付安全:本发明中,采用硬件加密的方式,将密钥存储在硬件内,能够在硬件上保证私钥的安全性,外界无法通过移动终端获取支付装置内的私钥,降低了密钥泄露的可能性,从而使得支付更加安全;
[0058](4)硬件加密移动支付方式-支付快捷:本发明中,采用硬件加密的方式,硬件加密的处理速度更快,从而使得支付更加快捷;
[0059](5) NFC通信-支付安全:由于手机等移动终端本身体积较小,如果使用数据线进行连接则使用时非常不方便,如果使用传统的Wifi等无线方式,进行身份认证以及支付, 在安全方面可能会产生问题。本发明综合考虑安全性与便捷性,采用NFC近场通信作为通信手段,同移动终端信息传输的距离近,速度快,使得窃听者没有机会截取支付装置与移动终端信道中的信息。本发明充分利用了 NFC的特点,既利用其本身属于无线连接的特性,实现了本发明移动支付装置与移动终端的无线通信,满足了简洁性,也利用了其有效通信距离短这一特点加强了信道的安全性;
[0060](6)集成度高:本发明装置的硬件电路自行设计,将独立的液晶屏幕、按键、NFC模块及核心微处理器集成化,充分利用嵌入式系统宝贵的硬件资源。
[0061](7)认证安全:银 行端服务器和支付装置之间能够进行双向数字认证,可防止钓鱼网站和非法身份用户的欺诈行为。
[0062](8)使用方便:本发明移动性好,便于携带,支付时只需将其贴于移动终端后侧即可使用。
【专利附图】

【附图说明】
[0063]图1是本发明的正视结构示意图;
[0064]图2是本发明的侧视结构示意图;
[0065]图3是本发明与移动设备位置关系结构示意图。
[0066]图中:
[0067]1-外壳2-旋转模块3-显示屏
[0068]4_按键5_微处理器6_第一 NFC模块
[0069]7-第二 NFC模块8-移动终端9_供电模块
[0070]10-开关
【具体实施方式】
[0071]下面将结合附图和实施例对本发明作进一步的详细说明。
[0072]本发明是一种基于NFC近场通信技术的移动支付装置,如图1所示,包括外壳1、旋转模块2、显不屏3、按键4、微处理器5、第一 NFC模块6、供电模块9和开关10 ;
[0073]第二 NFC模块7位于移动终端8内。
[0074]外壳I侧面设有凹槽,旋转模块2通过旋转轴固定在外壳I的凹槽内,旋转模块2 能够绕旋转轴进行转动,显示屏3与按键4固定在旋转模块2上,微处理器5与第一 NFC模 块6位于外壳I内部。
[0075]开关10控制供电模块9对显不屏3、微处理器5、第一 NFC模块6的供电。
[0076]供电模块9包括锂电池和充电口,供电模块9利用锂电池为显示屏3、微处理器5、 第一 NFC模块6供电,供电模块9提供充电功能,可以利用充电口对锂电池充电。
[0077]本发明采用锂电池供电,电池寿命长且能够有效减小装置体积,使得本发明的支 付装置携带更加方便。
[0078]微处理器5包括控制模块、硬件加密模块;
[0079]硬件加密模块内设有密钥区,密钥区内存储有RSA私钥,硬件加密模块设有PIN码 功能,通过PIN码对支付装置进行保护。硬件加密模块内设有哈希算法和RSA加解密算法, 能够实现数据验证、数据摘要、数据加解密和签名。
[0080]所述RSA加解密算法为1024位及以上。
[0081]硬件加密模块能够实现RSA加解密运算,并保存支付装置预置的私钥,杜绝了密 钥在移动终端8内存中出现的可能性,大大提高了安全性。
[0082]本发明的硬件加密模块的加密方式中:
[0083]1、硬件PIN码保护
[0084]黑客需要同时取得用户的支付装置硬件以及支付装置的PIN码,才可以进行支 付。即使用户的PIN码被泄漏,只要用户持有的支付装置不被盗取,合法用户的身份就不会 被仿冒;如果用户的支付装置遗失,拾到者由于不知道用户PIN码,也无法仿冒合法用户的 身份。
[0085]2、安全密钥存储
[0086]支付装置的密钥存储于安全的密钥区中,外部用户无法直接读取,对密钥文件的 读写和修改都必须由支付装置内的程序调用。从支付装置接口的外面,没有任何一条命令 能够对密钥区的内容进行读出、修改、更新和删除。
[0087]3、公钥密码体制
[0088]公钥密码体制和数字证书从密码学的角度上保证了支付装置的安全性。整个认证 过程利用了两对密钥Rl和R2,其中Rl的私钥在支付装置出厂时已被内置到支付装置内, Rl的公钥由银行保存。支付装置利用Rl私钥签名,银行利用Rl公钥解密,可以验证用户身 份。每次进行账单请求时,移动终端从银行端获取R2公钥,R2的私钥则由银行保存。银行 利用R2私钥签名,移动终端利用R2公钥解密,可以验证银行身份。上述方式即实现了双向 身份认证。在支付装置初始化的时候,先将密码算法程序预置在微处理器的内存中,在用户 得到支付装置之前,系统已经将Rl私钥(用于返还数据签名及银行Rl公钥所加密数据的解 密)内置到支付装置里面去,存储于密钥区,不允许外部访问。进行数字签名时以及非对称 解密运算时,有密钥参与的密码运算只在芯片内部即可完成,全过程中密钥可以不出支付 装置介质,以此来保证以支付装置为存储介质的数字证书认证在安全上无懈可击。
[0089]4、硬件实现加密算法[0090]支付装置的微处理器5为高性能安全芯片,可以实现数据验证、数据摘要、数据加 解密和签名的各种算法,加解密运算在支付装置内进行,保证了用户密钥不会出现在移动 终端内存中,不易出现信息泄露的问题。
[0091]微处理器5中的控制模块具有控制功能,用于控制显示屏3、按键4及第一 NFC模 块6与包含第二 NFC模块7的移动终端8之间的通信。
[0092]如图3所示,用户进行消费时,向银行端提交待付款信息,待付款信息包括订单 号、金额以及用户所购物品的名称,银行端将待付款信息存于数据库中。用户通过移动终端 8进行支付时,银行端推送待付款信息给移动终端8。支付装置的第一 NFC模块6与移动终 端8的第二 NFC模块7贴紧,通过移动终端8输入PIN码,微处理器5的硬件加密模块对 PIN码进行验证,验证正确后,控制支付装置与银行端服务器进行身份验证。
[0093]银行端服务器产生一个随机数X及其Hash值,并用R2的私钥对Hash值进行签名 为密文A,通过socket通信将随机数X与数字签名一起发送给移动终端。移动终端收到随 机数X和数字签名后,用同样的Hash算法对随机数X计算出Hash值,然后与用移动终端获 取的R2公钥对数字签名进行解密解出的Hash值相比较。如两Hash值相等则银行端身份得 以确认。此后,移动终端将该随机数X及其Hash值通过移动终端8的第二 NFC模块7发送 至支付装置。支付装置得到随机数X及其Hash值后,以一个事先和银行约定好的随机数生 成算法,利用随机数X和一些其它信息(其他信息可为任意值,事先约定好即可),生成新的 随机数Y和相应的Hash值,再用私钥加密后发回银行。此时银行也以相同的算法计算新的 随机数Y。银行用Rl公钥解密,并验证Hash值正确,接下来银行比较两个新的随机数是否 相同,若均相同则支付装置所有者的身份得以确认。至此双向认证完成。双向身份认证成 功后,移动终端会提示身份认证成功。此后,银行端利用Rl的公钥对待支付账单的商品名 称、金额、交易日期及流水号等重要信息进行加密为密文B,然后将密文B传输到移动终端8 上,再通过移动终端8传输到支付装置中,支付装置使用Rl的私钥对接受到的密文B进行 解密得到明文账单信息,并将该明文所表示的待支付账单的商品名称、金额、交易日期及流 水号等重要信息在显示屏3上显示。
[0094]此时显示屏3上显示支付订单号和订单金额,通过按键4对显示屏3显示信息进 行查看,按键4包括上下翻页按钮、确定按钮、取消按钮、重启按钮,上下翻页按钮用于对显 示屏3显示信息翻页,确定按钮用于核对显示信息正确后,用户确认执行本次支付以及硬 件加密模块进行数字签名,取消按钮用于取消本次支付,重启按钮用于重启支付装置。
[0095]用户通过确认键进行数字签名后,支付装置生成代表支付成功的命令,并用Rl的 私钥进行数字签名,通过支付装置的第一 NFC模块6传输给包含第二 NFC模块7的移动终端 8,移动终端8通过socket网络通信将代表支付成功的命令及其数字签名传输给银行端服 务器,银行端用Rl的公钥解密数字签名,若签名信息无误,则从该银行账户扣去相应金额, 并返还已支付状态的信息给移动终端,完成支付。
[0096]支付装置的第一 NFC模块6传输给移动终端8的第二 NFC模块7之间进行数据交 换时主要利用了 NDEF、LLCP以及SNEP三个协议,第一 NFC模块6的输出信息为十六进制 数据,十六进制数据通过NDEF协议,形成NDEF格式数据,再进行SNEP协议打包,然后数据 通过NFC数据传输至第二 NFC模块7,第二 NFC模块7的接收信息经过SNEP协议解包得到 NDEF格式数据,通过NDEF协议,第二 NFC模块7接收到十六进制数据。第二 NFC模块7输出数据,第一 NFC模块6接收数据时,同上述过程。整个过程使用了 LLCP协议,以保证数据的可靠性。[0097]本发明通过对NFC技术的合理使用,克服了有线连接的连接复杂性与其他无线连接可能带来的不安全性,保证了装置整体的简洁与安全。
[0098]移动终端向装置发送数据的方法:
[0099]1、首先移动终端需要通过用户输入或自动生成等方式获得一条或若干条需要发送的数据,包括在双向身份认证过程中为银行端发送的随机数以及Hash值;PIN码认证过程中为用户输入的PIN码;还包括银行发送的账单信息,上述数据可为字符串、整数、浮点数或数组,非字符串类型数据在发送前转换为字符串类型;
[0100]2、移动终端通过getBytes ()函数将每一条数据都转换为字节型数组(byte[]), 其本质即为十六进制数据。
[0101]3、移动终端将2中所述byte []类型数据传入NdefRecord (short tnf, byte [] type, byte [] id, byte [] payload)构造函数,得到NdefRecord类型对象,从而将每一条数据格式转化为NdefRecord类型;构造函数中tnf为NDEF数据类型,type为数据格式的具体声明,id为标识符的元数据,payload为要传输的数据内容;
[0102]4、移动终端将 3 中所述 NdefRecord 类型数据传入 NdefMessage (NdefRecord[] records)构造函数,得到NdefMessage类型的数据,该数据中包含前述的一条或若干条 NdefRecord类型的数据,该类型的数据即为支持NFC功能的设备间进行通信时所使用的标准数据格式,符合SNEP协议所要求的标准,为移动终端与装置之间直接交互的内容。
[0103]支付装置接收移动终端所发送数据的方法:
[0104]1、支付装置电源启动后调用rxNDEFPayloadO函数,使支付装置处于等待数据的状态,准备接收一个能够匹配SNEP协议所规范的NdefMessage类型数据;
[0105]2、当有数据信息传来时,支付装置首先检测传递信息的设备能否支持点对点通信,若检测通过则接收该数据。接收该数据时会先验证数据完整性,若数据完整则将该数据存为NdefMessage类型;
[0106]3、支付装置通过getRecordO [i]函数从NdefMessage类型数据中提取之前移动终端中封装好的若干条NdefRecord类型数据;
[0107]4、支付装置通过getNDEFChar ()函数,将NdefRecord类型数据转化为char []。在其末尾添加结束标识符即可将其转换为字符串;上述方式完成了从移动终端到支付装置数据的传递。
[0108]支付装置向移动终端发送数据的方法:
[0109]1、支付装置首先获得一条或多条需要发送的数据,该数据由移动终端发送的数据经过解密以及数据比对等过程后生成,包括数字签名、身份认证是否通过的确认信息等上文所述需要发送至移动终端的数据,上述数据可为字符串、整数、浮点数或数组,非字符串类型数据在发送前转换为字符串类型;
[0110]2、利用 createNDEFShortRecord(uint8_ _t*message,uint8_t payloadLength, uint8_ t*&NDEFMessage)函数,其中^message为要传输的数据内容,payloadLength为数据长度, NDEFMessage为要发送的NdefMessage类型数据;该函数首先填充NdefRecord的头部,再将字符串数据添加为负载,实现将每一条字符串类型数据分别转换为NdefRecord类型数据,并直接封装为NdefMessage类型数据,同时返回数据长度txLength,用于判断NdefMessage是否 成功生成;
[0111]3、利用 pushPayload (txNDEFMessagePtr, txLength)函数,其中 txNDEFMessagePtr 为要发送的Ndeflfessage数据,txLength为数据长度;该函数调用数据链路层中的 openNNPClientLink()函数,若连接成功建立则调用 clientLinkTxData((uint8_t*) snepMessage, Iength+SNEP_MESSAGE_HDR_LEN)函数,进行一次NdefMessage类型数据的发送。
[0112]移动终端接收装置所发送数据的方法:
[0113]1、根据移动终端所包含的NFC模块的特性,若开启NFC功能,只要移动终端处于屏 幕点亮状态并解锁,移动终端就一直处于等待接收消息状态;
[0114]2、当移动终端在能够识别的范围内检测到装置发送数据所产生的射频场时,会自 动接收装置所发送的NdefMessage类型数据;
[0115]3、通过getRecords () [i]函数,提取NdefMessage数据中包含的一条或若干条 NdefRecord数据,再通过getPay1adO函数得到byte[]类型数据;
[0116]4、将3中所述byte[]类型数据传入String (byte [] data)构造函数,即可获得字 符串类型数据;上述方式完成了从支付装置到移动终端数据的传递。
[0117]在移动终端上,使用支付装置进行完整支付的方法:
[0118]1、用户需要支付时,在网页浏览器上输入银行账户号,点击确认支付账单按钮,然 后打开移动终端的软件,输入用户名和密码进行登录(此时用户名和密码是和银行服务器 数据库里的存储的数据相互匹配认证)。
[0119]2、登录成功后,点击刷新按钮,可得到银行推送给移动终端的账单信息,点击任一 条账单进行支付,同时将支付装置贴于移动终端后侧,系统提示“输入PIN码”,PIN码输入 正确后,支付装置开始与银行端服务器进行身份验证。
[0120]3、双向身份认证过程中一共利用了两对密钥,其中一对设为Rl,另一对设为R2, 其中Rl的私钥在支付装置出厂时已被内置到支付装置内,Rl的公钥由银行保存。支付装 置利用Rl私钥签名,银行利用Rl公钥解密,可以验证用户身份。R2公钥在用户每次进行账 单请求时,移动终端从银行端获取,R2的私钥则由银行保存。银行利用R2私钥签名,移动 终端利用R2公钥解密,可以验证银行身份。上述方式即实现了双向身份认证。
[0121]银行端服务器产生一个随机数X及其Hash值,并用R2的私钥对Hash值进行签名 为密文A,通过socket通信将随机数X与数字签名一起发送给移动终端。移动终端收到随 机数X和数字签名后,用同样的Hash算法对随机数X计算出Hash值,然后与用移动终端从 银行端获取的R2公钥对数字签名进行解密解出的Hash值相比较。如两Hash值相等则银 行端身份得以确认。此后,移动终端将该随机数X及其Hash值通过的第二 NFC模块7发送 至支付装置。支付装置得到随机数X及其Hash值后,以一个事先和银行约定好的随机数生 成算法,利用随机数X和一些其它信息(其他信息可为任意值,事先约定好即可),生成新的 随机数Y和相应的Hash值,再用Rl私钥签名后发回银行。此时银行也以相同的算法计算 新的随机数Y。银行用Rl公钥解密,并验证Hash值正确,接下来银行比较两个新的随机数 是否相同,若均相同则支付装置所有者的身份得以确认。至此双向认证完成。
[0122]4、双向身份认证成功后,移动终端及支付装置会提示身份认证成功。此后,银行端 利用Rl的公钥对待支付账单的商品名称、金额、交易日期及流水号等重要信息进行加密为密文B,然后将密文B传输到移动终端上,再通过移动终端传输到支付装置中,支付装置使 用Rl的私钥对接受到的密文B进行解密得到明文账单信息,并将该明文所表示的待支付账 单的商品名称、金额、交易日期及流水号等重要信息在显示屏3上显示。此时按下显示屏3 旁的确认支付按钮(按下取消按钮可以取消本次交易),移动终端则提示支付成功。并用Rl 的私钥进行数字签名,通过支付装置的第一 NFC模块6传输给移动终端的第二 NFC模块7, 第一 NFC模块6与第二 NFC模块7采用NFC近场通信技术,移动终端通过socket网络通信 将代表支付成功的命令及其数字签名传输给银行端服务器,银行端用Rl的公钥解密数字 签名,若签名信息无误,则从该银行账户扣去相应金额,并返还已支付状态的信息给移动终 端,完成支付;在移动终端点击刷新,该账单状态由待支付变为已支付。
[0123]本发明并不局限于实例中所描述的技术,它的描述是说明性的,并非限制性的,本 发明的权限由权利要求所限定,基于本【技术领域】人员依据本发明所能够变化、重组等方法 得到的与本发明相关的技术,都在本发明的保护范围内。
【权利要求】
1.一种基于NFC近场通信技术的移动支付装置,其特征在于,包括外壳、显示屏、旋转模块、按键、微处理器、第一 NFC模块、供电模块和开关;移动终端内设有第二 NFC模块;外壳侧面设有凹槽,旋转模块通过旋转轴固定在外壳的凹槽内,显示屏与按键固定在旋转模块上,微处理器、供电模块和第一 NFC模块位于外壳内部;显示屏用于显示支付信息显示,按键用于查看显示屏信息、确认支付、取消支付以及重启支付装置;开关位于外壳上,开关控制供电模块对显不屏、微处理器、第一 NFC模块的供电;供电模块包括锂电池和充电口,供电模块利用锂电池为显示屏、微处理器、第一 NFC模块供电,外界通过充电口对锂电池充电;微处理器包括控制模块、硬件加密模块;硬件加密模块内设有密钥区,密钥区内存储有RSA私钥,硬件加密模块设有PIN码功能,通过PIN码对支付装置进行访问控制;硬件加密模块内设有哈希算法和RSA加解密算法,能够实现数据验证、数据摘要、数据加解密和签名;控制模块具有控制功能,用于控制显示屏、按键及第一 NFC模块与包含第二NFC模块的移动终端之间的通信;第一 NFC模块与第二 NFC模块之间采用NFC技术进行通信。
2.根据权利要求1所述的一种基于NFC近场通信技术的移动支付装置,其特征在于,所述RSA加解密算法为1024位及以上。
3.根据权利要求1所述的一种基于NFC近场通信技术的移动支付装置,其特征在于,所述的按键包括上下翻页按钮、确定按钮、取消按钮、重启按钮,`上下翻页按钮用于对显示屏显示信息翻页,确定按钮用于核对显示信息正确后,用户确认执行本次支付以及硬件加密模块进行数字签名,取消按钮用于取消本次支付,重启按钮用于重启支付装置。
4.根据权利要求1所述的一种基于NFC近场通信技术的移动支付装置,其特征在于, 第一 NFC模块与第二 NFC模块之间的数据通信,利用了 NDEF、LLCP以及SNEP三个协议,第二 NFC模块接收数据,第一 NFC模块输出数据时,第一 NFC模块的输出信息为十六进制数据,十六进制数据通过NDEF协议,形成NDEF格式数据,再进行SNEP协议打包,然后数据通过NFC数据传输至第二 NFC模块,第二 NFC模块的接收信息经过SNEP协议解包得到NDEF 格式数据,通过NDEF协议,第二 NFC模块接收到十六进制数据;第二 NFC模块输出数据,第一 NFC模块接收数据时与第二 NFC模块接收数据,第一 NFC模块输出数据时过程相同。
5.一种基于NFC近场通信技术的移动支付装置的支付方法,其特征在于,包括以下内容:移动终端向支付装置发送数据的方法:I )、移动终端通过用户输入或自动生成的方式,获得一条或若干条需要发送的数据,包括在双向身份认证过程中为银行端发送的随机数以及Hash值;PIN码认证过程中为用户输入的PIN码;还包括银行发送的账单信息,上述数据可为字符串、整数、浮点数或数组,非字符串类型数据在发送前转换为字符串类型;2)、移动终端通过getBytes ()函数将每一条数据都转换为字节型数组byte [],即十六进制数据;3)、移动终端将byte []类型的十六进制数据传入NdefRecord (short tnf, byte [] type, byte[] id, byte [] payload)构造函数,得到NdefRecord类型对象,从而将每一条数据格式转化为NdefRecord类型;构造函数中tnf为NDEF数据类型,type为数据格式的具体声明,id为标识符的元数据,payload为要传输的数据内容;4)、移动终端将 NdefRecord 类型数据传入 NdefMessage (NdefRecord[]records)构造函数,得到NdefMessage类型的数据,该数据中包含前述的一条或若干条NdefRecord类型的数据,该类型的数据即为支持NFC功能的设备间进行通信时所使用的标准数据格式 NDEF,符合SNEP协议所要求的标准,为移动终端与装置之间直接交互的内容;支付装置接收移动终端所发送数据的方法:1)、支付装置通过开关启动电源后,调用rxNDEFPayloadO函数,使支付装置处于等待数据的状态,准备接收一个能够匹配SNEP协议所规范的NdefMessage类型数据;2)、当有数据信息传来时,支付装置首先检测传递信息的设备能否支持点对点通信,若检测通过则接收该数据;接收该数据时会先验证数据完整性,若数据完整则将该数据存为 NdefMessage 类型;3)、支付装置通过getRecordO[i]函数从NdefMessage类型数据中提取之前移动终端中封装好的若干条NdefRecord类型数据;4)、支付装置通过getNDEFChar()函数,将NdefRecord类型数据转化为char[];在其末尾添加结束标识符,即可将其转换为字符串;上述方式完成了从移动终端到支付装置数据的传递;支付装置向移动终端发送数据的方法:1)、支付装置获得一条或多条需要发送的数据,该数据由移动终端发送的数据经过解密以及数据比对后生成,包括数字签名、身份认证是否通过的确认信息以及需要发送至移动终端的数据,上述数据可为字符串、整数、浮点数或数组,非字符串类型数据在发送前转换为字符串类型;2)、利用createNDEFShortRecord(uint8_t*message, uint8_t payloadLength, uint8_ t*&NDEFMessage)函数,其中^message为要传输的数据内容,payloadLength为数据长度,NDEFMessage为要发送的NdefMessage类型数据;该函数首先填充NdefRecord的头部,再将字符串数据添加为负载,实现将每一条字符串类型数据分别转换为NdefRecord 类型数据,并直接封装为NdefMessage类型数据,同时返回数据长度txLength,用于判断 NdefMessage是否成功生成;3)、利用pushPayload(txNDEFMessagePtr, txLength)函数,其中 txNDEFMessagePtr 为要发送的NdefMessage数据,txLength为数据长度;该函数调用数据链路层中的 openNNPClientLink ()函数,若连接成功建立则调用 clientLinkTxData ((uint8_t*) snepMessage, Iength+SNEP_MESSAGE_HDR_LEN)函数,进行一次 NdefMessage 类型数据的发送;移动终端接收支付装置所发送数据的方法:1)、根据移动终端所包含的第二NFC模块的特性,若开启NFC功能,当移动终端处于屏幕点亮状态并解锁,移动终端一直处于等待接收消息状态;2)、当移动终端在能够识别的范围内检测到支付装置发送数据所产生的射频场时,自动接收支付装置所发送的NdefMessage类型数据;3)、通过getRecordsO[i]函数,提取NdefMessage数据中包含的一条或若干条 NdefRecord数据,再通过getPay1adO函数得到byte []类型数据;4)、将byte[]类型数据传入String(byte [] data)构造函数,即可获得字符串类型数据;上述方式完成了从支付装置到移动终端数据的传递。
6.一种基于NFC近场通信技术的移动支付装置的支付方法,其特征在于,在移动终端上,使用支付装置进行支付的方法包括:1)、用户需要支付时,向银行提交待支付账单;2)、在移动终端进行刷新,得到银行推送给移动终端的账单信息,点击账单进行支付, 同时将支付装置贴于移动终端后侧,移动终端提示“输入PIN码”,PIN码输入正确后,支付装置开始与银行端服务器进行身份验证;3)、双向身份认证过程中一共利用了两对密钥,其中一对设为R1,另一对设为R2,其中 Rl的私钥在支付装置出厂时已被内置到支付装置内,Rl的公钥由银行保存;支付装置利用 Rl私钥签名,银行利用Rl公钥解密,验证用户身份;R2公钥在用户每次进行账单请求时,移动终端从银行端获取,R2的私钥则由银行保存;银行利用R2私钥签名,移动终端利用R2公钥解密,验证银行身份,上述方式即实现了双向身份认证;银行端服务器产生一个随机数X及其Hash值,并用R2的私钥对Hash值进行签名为密文A,通过socket通信将随机数X与数字签名一起发送给移动终端;移动终端收到随机数 X和数字签名后,用同样的Hash算法对随机数X计算出Hash值,然后与用移动终端从银行端获取的R2公钥对数字签名进行解密解出的Hash值相比较;如两Hash值相等则银行端身份得以确认;此后,移动终端将该随机数X及其Hash值通过的第二 NFC模块发送至支付装置;支付装置得到随机数X及其Hash值后,以预先和银行约定好的随机数生成算法,利用随机数X和预先和银行约定好的其它信息,生成新的随机数Y和相应的Hash值,再用Rl私钥签名后发回银 行;此时银行也以相同的算法计算新的随机数Y ;银行用Rl公钥解密,并验证 Hash值正确,银行比较两个新的随机数是否相同,若均相同则支付装置所有者的身份得以确认,至此双向认证完成;4)、双向身份认证成功后,移动终端及支付装置会提示身份认证成功;此后,银行端利用Rl的公钥对待支付账单的商品名称、金额、交易日期及流水号进行加密为密文B,然后将密文B传输到移动终端上,再通过移动终端传输到支付装置中,支付装置使用Rl的私钥对接受到的密文B进行解密得到明文账单信息,并将该明文所表示的待支付账单的商品名称、金额、交易日期及流水号在显示屏上显示;此时,如果确认支付,按下显示屏旁的确认支付按钮,如果取消支付,按下显示屏旁的取消按钮,确认支付后,支付装置则提示支付成功; 并用Rl私钥对代表支付成功的命令进行数字签名,通过支付装置的第一NFC模块传输给移动终端的第二 NFC模块,移动终端通过socket网络通信将代表支付成功的命令及其数字签名传输给银行端服务器,银行端用Rl的公钥解密数字签名,若签名信息无误,则从该银行账户扣去相应金额,并返还已支付状态的信息给移动终端;在移动终端上点击刷新,该账单状态由待支付变为已支付。
【文档编号】H04L9/32GK103501191SQ201310366905
【公开日】2014年1月8日 申请日期:2013年8月21日 优先权日:2013年8月21日
【发明者】王越, 曹竞超, 冯采, 杨复淮 申请人:王越, 曹竞超, 冯采, 杨复淮
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1