DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1317|回复: 0
打印 上一主题 下一主题

[待整理] 用于移动支付的电子收据设计与实现

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 08:08:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一 简介
        1.1 电子支付与电子收据
        随着互联网以及移动终端技术的发展,手机支付技术将会越来越流行。
         
        手机支付是指允许移动用户通过手机对所消费的商品或者服务进行账务支付的一种服务方式。移动支付产业属于新兴产业,有非常广阔的发展前景。而一旦提起移动支付,电子收据就势在必行。目前在北美,电子收据的研发已经成熟,并走向了市场。
         
        与纸质收据相比,电子收据具有不可比拟的优势。纸质收据不但浪费资源而且制造“垃圾”,而且非常碍事,不利于保存,容易遗失或者损坏。而电子收据保存简单,只需要存储在手机的存储器中,也可以导出存储到别的存储介质中保存。使用电子收据也将非常简单,一切都是电子化的过程,用户只需要提供自身的帐号信息就能够使用票据。
         
        一旦手机支付流行起来,就像谷歌钱包一样,电子收据将会形成一种模式。为了保证电子收据服务的可靠性和可用性,电子收据需要使用一种签名算法。这种签名算法需要快速、安全。电子签名必须具有不可抵赖性和不可仿冒性。
         
        1.2 电子收据
        本项目所实现的技术是面向移动支付服务中的一个必要环节:电子收据凭证。电子收据的核心部分是数字签名技术。使用数字签名技术需要三方的参与:可信第三方(仲裁)、商家以及消费者。所有使用电子收据服务的商家事先公布必要的签名信息(公钥)。消费者消费之后从商家获得电子收据,并从可靠的第三方获得商家的公钥,从而验证该收据的有效性。由于电子签名的不可伪造性,消费者之后能够利用可信第三方的信息和自己手机存储器上的收据信息来证明消费的单据,从而维护自己的权益。
         
        二 基于彩虹算法的数字签名技术
        2.1 数字签名介绍
        数字签名是一中认证机制,它使得消息的产生着可以添加一个起签名作用的码字。通过计算消息的散列值并用产生者的私钥加密散列值来生成签名。签名保证了消息的来源和完整性。
         
        数字签名可以用于双向认证和单向认证。双向认证使得通信的双方对相互的身份感到放心,并交换会话密钥。而单向认证的时候,接收方能够确保消息的确来源于发送方,而且发送方无法抵赖层放松的消息。
         
        数字签名包含几个特征:签名能够验证签名者、签名日期和时间;签名能够验证被签的消息内容;签名能够由第三方仲裁,以解决争执。
         
        一个能够应用的数字签名算法需要满足以下几个最基本的条件:产生和识别签名是容易的;伪造签名是不可能的;保存签名备份是可行的。
         
        2.2 数字签名安全性与不可抵赖性
        在本项目中,使用数字签名的作用是使电子收据的接受方(消费者)能够确认收据来源的权威性,而且使商家不能够抵赖已进行的交易,以电子票据的方式保护消费者的权益。
         
        由于数字签名的不可伪造性,当发现争执的时候,消费者能够用保存在终端(手机)之中的消费数据中的签名,证明消费过程和权益。数字签名和普通的纸质票据具有同样的法律效力,且数字签名具有易携性和非易失性的特点,必会在将来得到大规模的应用。
         
        2.3 签名的过程
        在本项目签名的过程中涉及到商家(发送方),消费者(接收方),可能还涉及到第三方仲裁者。我们假设商家已经将其公钥公布出去。当消费者进行消费的时候,已经其公钥了。那么,当需要产生一个签名票据的时候,商家将票据信息(时间日期商品数量价格厂家名字等等)做一个HASH,得到一个固定字长的序列,假设为M,然后用其私钥对该M进行加密,即得到S=Eprivate(H(M))。然后将其发送给接收方。接收方就可以保存M||S作为电子票据。
         
        那么如何验证发送方的签名呢?消费者只需要计算S1=Epublic(S),然后计算S2 =H(M),再判断S1与S2是否相等即可。相等则签名的验证通过,否则不通过。如下图示:
         
        签名与验证过程:
       

        2.4 彩虹算法
        彩虹算法是一种多变量公钥密钥体制的签名算法。多变量密码体制(MPKC)被认为是能够抵御基于量子计算机攻击的新型公钥密码体制之一。其基本理论依据是基于求解有限域上的一组随机选择的非线性方程组的困难性。这是一个NP难问题,即使是使用量子计算机也不会减少破解其的困难性。彩虹算法被认为是MPKC体系发展至今,一个公认的安全可靠的签名算法。彩虹算法是基于油醋算法的变形,其可以理解为多层的非平衡油醋。而油醋多项式的特征是:油变量仅以线性形式出现的二次多项式。当签名者随机选取醋变量的值后,通过求解多元一次方程组即可得出签名信息。而验证者只需做简单的算术运算即可验证签名是否正确。签名和验证的过程都效率都十分高。同时,在彩虹体系中,公钥是油醋变量混合在一起的非线性方程,具有很高的安全性。
         
        三 系统整体架构与工作流程
        3.1 软件架构
        商家PC端手机发送商品以及交易信息到FPGA开发板,开发板上实现彩虹签名算法,开发板对商品信息做了签名之后,通过蓝牙将电子收据发送到手机Android端。Android手机在蓝牙端接收到电子收据后,从第三方获取公钥,并在本地验证电子收据签名的有效性。有效则交易完成,否则可重新要求商家签发电子收据。
         
        3.2 硬件架构
        PC端通过蓝牙与FPGA板块通信,实现交易信息的发送。FPGA板通过蓝牙与手机android端通信,实现签名完成后的电子收据的发送。
         
       

         
        3.3 系统工作数据流
        首先商家向权威第三方注册,公布自己的公钥。在交易之后,商家首先将交易信息(时间、商品、数量和价格等等信息)以及自己的私钥发送到FPGA板上,FPGA板对交易信息做签名,连同商品信息一道,作为电子收据,通过蓝牙通信发送到移动android终端。移动终端从第三方获取公钥信息,并在手机本地做签名的验证。验证通过则保存该电子收据作为交易凭证,交易过程结束。如下图
         
       

         

        而当发生纠纷消费者需要维权的时候,由于可信的第三方保存着商家的公钥,而拥有公钥的实体都可以进行电子收据签名的认证。是商家不能抵赖电子收据所表示的进行过的电子交易。
        四 具体实现
        4.1 蓝牙通信的实现
        本项目的蓝牙是使用HC-05嵌入式蓝牙串口通讯模块实现的。fpga开发板通过控制蓝牙串口通信模块,使用AT指令与手机android端进行数据交换。手机android端在与fpga板成功对接之后,利用蓝牙通信技术与fpga板子通信。从fpga板子上获取经过电子签名之后的电子收据。
         
        4.2 密钥芯片的实现
        本项目的核心模块是密钥模块。即使为电子收据做签名的硬件模块。使用verilogHDL语言实现,并生成为一个IP核。使用开发板上的microblaze核来实现所有的逻辑业务,将实现彩虹签名算法的ip核作为一个被调用的模块添加进来。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-27 14:45 , 耗时 0.104472 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表