基于椭圆曲线算法的移动小额可分支付
来源:互联网 发布:select sql语句 编辑:程序博客网 时间:2024/04/28 23:50
随着科技发展,移动电子商务已逐步进入人们的日常生活,在移动电子商务中网络银行和网络购物等商务活动的出现正在逐渐改变着人们的购物方式、消费观念和生活理念。
移动可分小额支付技术提供一个能安全支付的移动电子商务系统,用户需要交易前,先到银行取出电子现金,交易的每一笔现金不必由银行签发,然后独立、分批次地消费出电子现金。本文所设计的移动可分电子现金在保证了电子现金支付的正确性、不可伪造性、重复花费者身份的可揭示性、面额的可分性、电子现金流通的公平性的同时,具有更小的计算量、存储量、内存占用以及更高的在线处理效率,更适用于计算能力、存储空间、内存空间、网络传输流量及电源供给均非常有限的个人移动支付设备。
本系统主要通过研究椭圆曲线、盲签名技术,设计了移动可分小额支付系统的主要协议,包括开户协议、取款协议、支付协议和存款协议。
椭圆曲线密码系统
类似RSA系统存在大数分解或求离散对数难解问题,椭圆曲线密码技术的的难解问题加法操作和数乘操作。等式Q=kP,其中P,Q是椭圆曲线上的点。由k、P易求Q,反之由P、Q求k却相当困难,这称为椭圆曲线上的离散对数问题(Elliptic Curve Discrete Logarithm Problem,ECDLP)。
椭圆曲线公钥密码算法
目前椭圆曲线上的公钥密码体制倍受关注,普遍认为椭圆曲线公钥密码体制[31]有较好的安全性和加解密速度快的特点。因而出现了许多椭圆曲线公钥密码的有效算法。下面介绍本文使用的椭圆曲线公钥密码算法。
1)椭圆曲线的建立:
在Fp有限基域上定义椭圆曲线E:y2=x3+ax+b和E上的一个素数阶为n的点P=(xP,yP),其中椭圆曲线参数a和b,以及点P和阶n均公开。
2)密钥生成:
根据设计好的系统,用户可以执行下列计算:
①在[1,n-1]中随机选取一个整数d,作为用户的私钥。
②计算公钥点Q=dP。
3)加密算法:
A向B发送信息m时,A执行下列步骤:
①先查找用户B的公钥Q。
②将信息m转化为E(Fp)上的点M(m,ym) 。
③在[1,n-1]中选取一个随机整数k。
④计算点C0=kP。
⑤计算点C1=M+kQ。
⑥传递加密数据(C0, C1)给用户B。
4)解密算法:
B对从A收到的密文(C0, C1)进行解密。B执行下列步骤:
①使用B的私钥d,计算点M=C1-dC0。
②从点M中取出横坐标m即恢复出数据m。
基于ECDLP的盲数字签名和验证
普通数字签名时签名者总是要先知道数据中的内容,再实施签名,这是通常办公事务流程。有时需要某个人对数字签名,但不能让他知道数据内容,称为盲签名技术。D.Chaum于1983 年首先提出了盲签名[32],因为具有盲性,可以有效保护所签署的消息,所以在电子商务、电子选举等领域得到广泛应用。
盲签名允许消息拥有者先盲化消息,然后让签名者对盲化的消息签名,最后消息拥有者对签名去盲变换,得到签名者关于原消息的签名。它的协议包含:发送者用盲因子盲化消息,然后把盲化消息发送给签名者,即消息盲化;签名者在不知道真实消息的具体内容的情况下签名盲消息,即盲消息签名;发送者去盲因子,得到原消息的签名,即恢复签名。
盲签名除了满足一般数字签名条件外,还须满足以下两条性质:
1)签名者看不见其所签署的消息的具体内容。
2)不可追踪签名消息。即公布了签名消息后,签名者无法知道这是他哪次签署的。
D.Chaum曾经给盲签名一个非常直观的说明:盲签名就是先在信封里放进隐蔽的文件,而打开这个信封就是除去盲因子的过程,任何人不能阅读在信封中的文件。对文件签名即通过放一张复写纸在信封里,在信封上签名时,通过复写纸签名便签到文件上。
安全的盲签名应具有下列性质:
1)最基本的性质:不可伪造性,即其他任何人都不能以签名者的名义生成有效的盲签名。
2)不可抵赖性。即签名者无法否认自己对消息的签名。
3)盲性。签名者即使签名了某条消息,他也不可能知道消息的具体内容。
4)不可跟踪性。一旦消息的签名公开,签名者不能知道这条消息是自己何时签署的。
这四条性质既是设计的标准,又是判断性能优劣的根据。
代码基于c++实现,只是出于研究目的。
GitHub:https://github.com/ziyunhx/MobliePay
本文来自 NewIdea 的博客,作者 ziyunhx 。
原文地址:http://www.cnblogs.com/NewIdea/p/MobliePay.html
转载请注明出处,否则拒绝转载!
- 基于椭圆曲线算法的移动小额可分支付
- 椭圆曲线算法
- 椭圆曲线算法:入门
- 椭圆的曲线模拟
- 椭圆曲线密码算法介绍
- 椭圆曲线密码算法介绍
- ecdsa 椭圆曲线数字签名算法
- 椭圆曲线加密算法的证书
- SM2椭圆曲线公钥密码算法
- 关于SM2椭圆曲线密码算法
- 【比特币】椭圆曲线数字签名算法-ECDSA
- SM2椭圆曲线公钥密码算法
- 椭圆曲线
- 椭圆曲线
- 椭圆曲线
- ECPP——利用有限域上的椭圆曲线,精确判定素数的算法
- 现代应用密码学中椭圆曲线求点集E以及点乘算法的java代码实现
- 求椭圆曲线上的整点
- Extjs4 MVC Controlller中refs使用
- HDU-1063 a^b高精度 (Java)
- 大学英语六级听力短文——Dictation Instructions
- POJ 2668 Game of Lines
- 安卓内核开发-tiny210v2上的程序烧写
- 基于椭圆曲线算法的移动小额可分支付
- TCP和UDP报头比较
- URAL 1980 Road to Investor(二分+最短路)
- DM6467开发之U-Boot移植(3)——U-Boot移植测试
- Linux 用户态与内核态的交互
- 什么是swing/SWT与/JFace/RCP/插件开发
- Lua中的捕获
- UVa 11069 A Graph Problem (斐波那契)
- 大学英语六级听力短文——001(Education in China)