无忧支付网首页
囊括国内所有第三方支付公司信息
为客户提供最优质的支付接口服务
24小时服务电话
站内搜索
您当前的位置:主页 > 相关文档 >

基于蓝牙的无线支付系统设计

添加时间:2018-12-19 14:31
  蓝牙作为一种常见的短距离通讯技术,其通讯距离可达10米以上,几乎所有的智能手机都支持蓝牙。传统刷卡支付需要用户签名或者在POS机机输入卡片密码,步骤繁琐且安全风险大, 在客流量巨大的商场超市,劣势更为明显。随着移动技术的发展,二维码扫码支付逐渐替代了传统刷卡支付,但扫码支付仍然存在诸多问题,例如需要在公开场合暴露手机屏幕,摄像头受到光线和距离的影响较大,在网络不佳时无法完成支付,二维码ID不能无限分配,另外也无法在用户端实现单步操作完成交易。为解决上述问题,本文试图描述一种基于蓝牙的无线支付方案,具有比扫码支付更优秀的安全性和便利性。另外如果对本方案稍加修改,可以将蓝牙POS机替换为安装有商户管理App的智能手机,以便应用到其他更加细分的支付场景,例如出租车等。如图1所示。

蓝牙POS机
  
  1、系统结构
  
  我们将交易双方分为商户和用户,商户使用蓝牙POS机+商品扫码器+支付网关,用户使用带有蓝牙功能的智能手机+支付管理App.
  
  蓝牙POS机为安装有Android操作系统,带有蓝牙/网络/USB接口的触屏版POS机。蓝牙POS机机中内置IC卡,卡中包含商户信息,商户信息具有全球唯一ID.支付管理App可以设计为在蓝牙配对之后自动唤醒,无需用户手动运行;
  
  商品扫码器用于扫描商品的条形码,可以连接到蓝牙POS机的USB接口并与之通讯;
  
  支付网关即为银联的支付服务器,用于处理最终交易报文;
  
  智能手机为普通的支持蓝牙功能的Android或者iPhone手机;
  
  支付管理App为管理用户支付凭证及支付过程的手机App,负责通过蓝牙协议与蓝牙POS机进行数据交换;如图2所示。
  
  2、详细步骤
  
  (1)商户使用商品扫码器扫描所有商品,商品信息写入到USB缓冲区,数据格式为(商品总数量N+商品1信息+商品2信息+…+商品N信息)。由于USB协议为被动传输协议,因此本步骤中的商品信息应由蓝牙POS机循环检测USB缓冲区来读取,蓝牙POS机每读取一条商品信息,就把商品总数量N减一,并把商品信息显示在屏幕上,而扫描器每扫描一件商品,就把商品总数量N加一。当所有的商品都已扫描时,商户按下蓝牙POS机中的确认键,此后蓝牙POS机在显示所有商品信息后将自动开启蓝牙功能进入待连接状态,并发出提示音。
  
  (2)用户启动支付管理App(也可以提前将此App保持在后台运行),将手机不断贴近蓝牙POS机,支付管理App循环枚举周边的蓝牙设备并读取蓝牙设备ID(即商户ID)和计算距离,根据预先设置的条件来过滤可连接蓝牙设备(例如设备ID格式必须为MERCHANT-XXX,距离必须在2m范围内)。如果发现单台符合条件的蓝牙设备,则静默完成配对和连接,如果存在多台符合条件的蓝牙设备,则显示设备列表提示用户选择目标设备。配对过程静默完成,不需要用户输入PIN码。手机连接到蓝牙POS机之后,蓝牙POS机发出提示音。
  
  (3)蓝牙POS机与支付管理App通过DH算法协商出256比特的AES密钥,DH算法可以让双方在完全没有对方任何预先信息的条件下通过明文信道创建起一个密钥。蓝牙POS机与支付管理App此后所有的数据交换都要经过AES加密,不得传送任何明文信息,以防止可能发生的旁路嗅探攻击。密钥协商大致过程如下:1)蓝牙POS机与支付管理App协定使用大质数p以及大基数g,p与g均为正整数;2)蓝牙POS机选择一个秘密整数a,计算A=ga mod p并发送给支付管理App;3)支付管理App选择一个秘密整数b,计算B=gb mod p并发送给蓝牙POS机;4)蓝牙POS机计算k=Ba mod p(k即为双方共享的AES密钥);5)支付管理App计算k=Ab mod p(k即为双方共享的AES密钥)。
  
  (4)蓝牙POS机通过已建立的加密通道向支付管理App发送详细商品信息,并进行声音提示以防止交易中止,支付管理App将商品信息和总价显示在手机屏幕供用户确认。
  
  (5)用户核对订单信息,如果发现订单有误,可以点击取消按钮,支付管理App向蓝牙POS机发送交易取消指令,交易过程中止;如果订单无误,则输入支付密码进行支付,支付管理App将银行卡号,由支付密码加盐(当前时间)而产生的CRC校验码发送到蓝牙POS机并等待交易结果,支付过程中用户端无需联网。
  
  (6)蓝牙POS机将支付信息发送至支付网关进行最终结算,接收交易结果,如果交易成功,则向支付管理App发送交易成功指令,支付管理App收到该指令后向用户展示交易成功界面;如果交易失败,则向支付管理App发送交易继续指令,支付管理App收到该指令后回到步骤5继续支付。
  
  (7)蓝牙POS机关闭蓝牙功能,回到步骤1继续处理下一位用户的订单;如图3所示。
  
  3、结语
  
  由于快捷安全以及适应性强的特点,蓝牙支付是一种极有前景的支付模式,实际上在国内某些领域已经在使用与蓝牙支付类似的NFC技术。相对于NFC支付,蓝牙支付不需要升级现有的硬件设备,大部分工作可以通过修改软件来实现。若要部署到实际生产环境,最重要的工作是制定统一的蓝牙通讯和加密协议,该协议是在蓝牙传输协议基础上的数据交换协议,蓝牙POS机与支付管理App之间通过该协议来交换数据。在本方案中,还有以下几点需做说明:
  
  (1)每个蓝牙POS机均有唯一设备ID,此设备ID需要包含其商户信息,以便支付管理App进行过滤。每次交易完成后支付管理App可以记忆商户ID以便下次静默配对,如果是新设备首次配对则需要用户手动确认配对。
  
  (2)为了加密效率起见,本文对蓝牙传输采用的加密算法为AES对称加密,由于支付过程较短且被人为操控,此加密算法的安全性已经足够。若要进一步提升安全性,则可以采用2048位RSA非对称加密,方法是在详细步骤3的基础上进行以下操作:1)蓝牙POS机使用已协商的密钥k加密自己的RSA公钥M发送给支付管理App;2)支付管理App执行解密获取蓝牙POS机的RSA公钥M;3)支付管理App使用M加密交易报文发送给蓝牙POS机;4)蓝牙POS机使用自己的RSA私钥N解密出交易报文。
  
  此加密方式要求蓝牙POS机预置一个RSA密钥对,私钥N应设置为只能使用但无法读取的状态。
  
  (3)两台蓝牙设备距离之间的距离,可以使用RSSI(Received signal strength indication)进行测算。方法是注册一个传感器服务(SENSOR_SERVICE)通知,当设备位置发生变化时就开始计算周围的蓝牙设备距离:
  
  计算公式:
  
  d=10^((abs(RSSI)-A)/(10*n))
  
  其中:
  
  d-计算所得距离(米);  
  RSSI-接收信号强度(负值);  
  A-发射端和接收端相隔1米时的信号强度;  
  n-环境衰减因子。