主页 > imtoken苹果钱包app > 基于部分盲签名技术的比特币支付系统及其方法和流程

基于部分盲签名技术的比特币支付系统及其方法和流程

imtoken苹果钱包app 2023-05-29 06:40:09

本发明属于密码

技术领域:

:, 进一步涉及加密货币

技术领域:

比特币莱特币量子链等交易_比特币交易信息包括收款人签名吗_比特币收款地址

: 比特币支付系统和基于部分盲签名技术的方法。 本发明基于部分盲签名技术和一次性公钥寻址技术,通过引入半可信第三方,实现了一种匿名性更好、效率更高的比特币系统。

背景技术:

比特币交易信息包括收款人签名吗_比特币收款地址_比特币莱特币量子链等交易

::比特币使用公钥作为账户地址,使得交易匿名化,从而更好地保护用户的隐私。 比特币的发行不依赖于任何金融中心,而是由比特币网络节点计算生成。 这些特性使比特币成为最受欢迎的加密货币之一。 比特币系统通过公共账本区块链记录所有交易,平均每十分钟可以生成一个新区块。 为了避免“双花”,当前交易所必须在区块之后至少再生成六个区块,交易才能被认为有效。 由此看来,比特币系统的确认支付时间至少为一小时,这带来了交易延迟; 此外,比特币系统的区块链带来了潜在的隐私泄露问题:由于区块链是公开的,攻击者可以通过分析区块链上交易的拓扑结构来实现去匿名化。 随着区块链的发展,发布的交易信息越多,就越容易去匿名化。 在 Luke Valenta 等人发表的论文“Blindcoin: Blinded, Accountable Mixes for Bitcoin”(Financial Cryptography and Data Security, 2015: 112-126)中,公开了一种基于混合中心的比特币混合系统。 系统引入混币中心,用户通过混币中心转入比特币到混币中心的统一账户,混币中心再转入等量的比特币到用户的新账户,使得攻击者无法发现用户新老账号关联,从而实现非关联。

在混币过程中,混币中心采用盲签名技术为用户转账比特币,这样即使是混币中心也无法区分用户账户的匿名性。 也就是说,系统实现了任何人都不能与用户账户关联的匿名性,比原来比特币系统任何人都可以与用户账户关联的匿名性更好。 但系统引入的第三方是类似于区块链的公共账本,用户每次与第三方交互都需要几个区块的认证,因此每次混币需要几个小时。 系统的缺点 缺点是每次延时时间过长,使系统效率低下。 NV Saberhagen 在他的论文“CryptoNotev2.0”(Bitcointalk,2013)中公开了一种类比特币的加密货币设计方法。 该方法利用地址隐匿技术,由付款人每次生成收款人的账户地址,使得只有付款人本人和拥有私钥的收款人知道收款人的账户地址。 采用环签名技术,只有拥有私钥的付款人才知道付款账户地址。 因此,加密货币比比特币具有更好的匿名性。 这种方法的缺点是环签名技术的引入带来了复杂的计算量,给原有的比特币系统增加了太多的负担。 技术实现要素:本发明针对上述现有技术的不足,提出了一种基于部分盲签名技术的高效、更加匿名的比特币系统及其方法,能够克服时延问题,更好地保护用户帐户隐私。

比特币交易信息包括收款人签名吗_比特币莱特币量子链等交易_比特币收款地址

为实现上述目的,本发明的用户比特币支付系统包括三大模块:用户模块、商户模块和半可信第三方模块; 其中: 用户模块用于生成临时的比特币公钥和私钥; 一次性公钥,将临时公钥和商品信息发送给商户模块; 盲化一次性公钥,计算支付信息,将支付信息发送给半可信第三方模块,接收半可信第三方模块发送支付承诺; 计算去盲后的支付承诺,发送给半可信第三方模块; 确认是否收到产品,如果收到,计算确认签名,否则执行责任协议,将交易承诺和临时私钥发送给半可信第三方模块; 商户模块用于接收用户模块发送的临时公钥和商品信息,计算出一次性公钥及其对应的私钥; 计算交易承诺并发送给用户模块; 判断区区块链中是否存在半可信第三方模块的支付信息,若为用户模块提供商品,否则退出系统; 半可信第三方模块,用于接收商户模块发送的支付信息; 计算共识参数,计算支付Promise并发送给用户模块; 计算用户模块最新的账户余额签名; 接收用户模块发送的非盲支付承诺,创建比特币交易; 如果执行了问责协议,验证交易承诺的合法性,并对商户模块进行问责。 本发明的比特币支付方法的具体步骤如下: (1)系统初始化: (1a)半可信第三方模块调用密钥生成算法获取公钥和公私钥帐户; (1b)半可信第三方模块三方模块随机选择当前部分盲签名算法中的一种,调用所选算法对应的密钥生成函数,得到签名公钥和私钥; (1c)半可信第三方模块构造哈希函数Hs(·):{0,1}*→Fq; 其中,{}*表示任意长度的比特串,→表示映射操作,Fq表示比特币系统使用的椭圆曲线的域; (1d)商户模块调用密钥生成算法获取账户1的公钥和私钥,再次调用密钥生成算法获取账户2的公钥和私钥; (1e) 用户模块用公众账户的公钥创建比特作为交易输出币种交易; (1f)半可信第三方模块根据以下公式对余额信息进行数字签名: 椭圆曲线数字签名算法中的签名函数,vTsk表示半可信第三方模块的签名私钥, vUpk表示用户模块在现有比特币账户中任意选择的一个比特币公钥,m表示比特币余额,t1表示数字签名的时间戳; (1g)半可信第三方模块将生成的余额信息数字签名发送给用户模块; (2) 提交订单并生成交易承诺: (2a) 用户模块调用密钥生成算法获取临时公钥和私钥; (2b) 用户模块根据以下公式计算一次性公钥: P=Hs(rvpka)G+vpkb 其中P表示一次性公钥,Hs(·)表示哈希函数比特币交易信息包括收款人签名吗,r表示临时私钥,vpka表示账户1的公钥,G表示密钥生成算法中椭圆曲线上的基点,vpkb表示账户2的公钥; (2c)用户模块将临时公钥和商品信息发送给商户模块; (2d)商户模块根据以下公式计算一次性公钥: P=Hs(vaR)G+vpkb 其中,P表示一次性公钥,Hs(·)表示哈希函数, va代表账户一,R代表临时公钥,G代表密钥生成算法中椭圆曲线上的基点,vpkb代表账户2的公钥; (2e)商户模块根据以下公式计算交易承诺: σvender=Sig(vb, R, msg) 其中,σvender表示交易承诺,Sig(·)表示椭圆曲线数字签名算法的签名函数,vb代表账户2的私钥,R代表临时公钥,msg代表产品信息; (2f)商户模块根据以下公式计算一次性公钥对应的私钥: Ps=Hs(vaR)+vb 其中,Ps表示一次性公钥对应的私钥, Hs(·)表示哈希函数,va表示账户1的私钥,R表示临时公钥,vb表示账户2的私钥; (2g)商户模块向用户模块发送交易承诺; (3) 生成支付承诺: (3a) 用户模块根据以下公式对一次性公钥进行盲化: P*=Blind(P) 其中P*表示盲化最终的一次性公钥,Blind( )表示步骤(1b)中选择的部分盲签名算法中的盲函数,P表示一次性公钥; (3b) 用户模块根据以下公式计算支付信息: σUser*=Sig(vUsk,σTTP,P*,c)]]> 其中,表示支付信息,Sig(·)表示椭圆曲线数字签名算法,vUsk表示用户模块在步骤(1f)中选择的比特币公钥对应的私钥,σTTP表示余额信息的数字签名,P*表示盲化后的一次性公钥,c代表支付的比特币数量; (3c) 用户模块将支付信息与用户模块的比特币公钥结合 (3d) 半可信第三方模块判断接收到的信息是否合法,如果合法则执行步骤(3e),否则,向用户模块发送错误信息error1表示“验证失败” 最后,执行步骤(3c); (3e)半可信第三方模块根据以下公式计算共识参数: s=τ(c) 其中,s代表共识参数,τ(·)代表在步骤(1b)中选择的共识协议的部分盲签名算法中的生成函数,c代表支付的比特币数量; (3f) 半可信第三方模块根据以下公式计算支付承诺: σPay*=BldSig(sk,s,P*)] ]> 其中,代表支付承诺,BldSig(·)代表签名function 在步骤(1b)选择的部分盲签名算法中,sk表示半可信第三方模块的签名私钥,s表示共识参数,P*表示盲的一次性公钥; (3g)半可信第三方模块根据以下公式对最新账户余额进行数字签名:σ'TTP=Sig(vTsk,vUpk,m',t'1),其中,σ'TTP代表数字最新账户余额的签名,Sig(·)代表椭圆曲线数字签名算法的签名函数,vTsk代表半可信第三方模块私钥,m'代表用户模块最新账户余额, vUpk表示用户模块在步骤(1f)中选择的比特币公钥,t'1表示数字签名的时间戳; (3h)半可信第三方模块向用户模块发送支付承诺和最新账户余额的数字签名; (4) 执行支付协议: (4a) 用户模块根据以下公式计算盲化后的支付承诺: σPay=Blind-1(σPay*)]]> 其中σPay表示盲化后的支付承诺,Blind- 1(·)表示步骤(1b)选择的部分盲签名算法中的去盲函数,表示支付承诺; (4b) 用户模块向半可信第三方模块发送去盲支付承诺; (4c) 判断半可信第三方模块接收到的可信第三方模块是否合法,如果合法则执行步骤(4d),否则向用户模块发送错误信息error1表示“认证失败”,执行步骤(4b); (4d) 半可信第三方模块创建公众账户的公钥作为交易的输入为比特币交易,以一次性公钥作为交易的输出; (5)判断区块链中是否存在合法的支付信息,如果存在则执行步骤(6),否则执行步骤(10); (6)商户模块向用户模块提供商品; (7)用户模块确认是否收到商品,如果收到则执行步骤(8)比特币交易信息包括收款人签名吗,否则执行步骤(9); (8) 根据以下公式计算并确认签名,执行步骤(10): σReceiver=Sig(r,msg) 其中,σReceiver表示确认签名,Sig(·)表示椭圆曲线数字签名函数签名算法,r表示步骤(2a)中生成的临时私钥,msg表示商品信息; (9) 执行责任协议: (9a) 用户模块将步骤(2e)中生成的交易承诺和临时私钥发送给半可信第三方模块; (9b) 判断半可信第三方模块接收到的交易承诺是否合法,如果合法则执行步骤(9c),否则向用户模块发送错误信息error1表示“验证失败”,然后执行步骤(9a); (9c) 根据以下公式Key计算一次性公钥: P=Hs(rvpka)G+vpkb 其中,P表示一次性公钥,Hs(·)表示哈希函数,r表示步骤(2a)生成的临时私钥,vpka代表账户一的公钥,G代表密钥生成算法中椭圆曲线上的基点,vpkb代表账户二的公钥; (9d)判断区块链中是否存在合法的支付信息,如果存在,则执行步骤(9e),否则,向用户模块发送“问责申请失败”的错误信息error2后,执行步骤(9a); (9e)半可信第三方模块负责商户模块; (10)退出系统。

与现有技术相比,本发明具有以下优点:第一,由于本发明的系统采用了半可信第三方,因此在认证过程中不需要等待至少六个认证块。交易,但是一旦识别出交易输入的是半可信第三方的公钥地址,直接进行交易确认,克服了现有技术中系统的时延缺陷,使得系统本发明可以减少几个小时的交易确认时间,实现快捷支付。 二、本发明方法通过生成临时公钥和私钥,为每笔交易获取一次性公钥地址,避免了现有技术中区块链的开放性带来的交易信息泄露威胁,本发明方法提高了交易的匿名性,保护了用户交易信息的隐私。 第三,本发明的方法通过调用部分盲签名算法获得盲的公钥地址,避免了现有技术中直接向公钥地址支付导致的公钥地址的连通性,使得本发明的方法提高了交易的不可链接性,保护了用户交易信息的隐私。 同时,由于部分盲签名算法的高效性,不会给原有的比特币系统增加过多的计算负担。 附图简要说明附图说明图1是本发明的系统框图; 无花果。 图2是本发明方法的流程图。 具体实施方式下面结合附图对本发明作进一步详细说明。 参见附图1,本发明系统的比特币支付系统包括三大模块:用户模块、商户模块和半可信第三方模块。 其中:用户模块,用于生成比特币的临时公钥和私钥; 计算一次性公钥,将临时公钥和商品信息发送给商户模块; 盲一次性公钥,计算支付信息,并将支付信息发送给半可信第三方模块,接收半可信第三方模块发送的支付承诺; 计算去盲后的支付承诺,发送给半可信第三方模块; 确认是否收到产品,如果收到,则计算并确认签名,否则执行责任协议,将交易承诺和临时私钥发送给半可信第三方模块。

比特币交易信息包括收款人签名吗_比特币收款地址_比特币莱特币量子链等交易

商户模块用于接收用户模块发送的临时公钥和商品信息,计算出一次性公钥及其对应的私钥; 计算交易承诺并发送给用户模块; 判断区块链中是否存在半可信,如果第三方模块的支付信息为用户模块提供商品,否则退出系统。 半可信第三方模块,用于接收商户模块发送的支付信息; 计算共识参数,计算支付承诺并发送给用户模块; 计算用户模块最新的账户余额签名; 接收用户支付承诺模块发送的去盲支付信息,创建比特币交易; 若落实问责协议,验证交易承诺的合法性,对商户模块进行问责。 参照附图2,本发明比特币支付方法的具体步骤如下。 第一步,系统初始化。 半可信第三方模块调用密钥生成算法获取公众账号的公钥和私钥。 密钥生成算法的公式如下: M=mG 其中M代表公钥,m代表随机选择的私钥,m取值范围为[1,n-1]。 G表示密钥生成算法中椭圆曲线上的基点,n表示基点的阶数。 半可信第三方模块随机选择当前部分盲签名算法中的一种,调用所选算法对应的密钥生成函数,得到签名公钥和私钥。 半可信第三方模块构造哈希函数Hs():{0,1}*→Fq; 其中{}*代表任意长度的比特串,→代表映射操作,Fq代表比特币系统中使用的椭圆曲线的域。 商户模块调用一次密钥生成算法获取账户1的公钥和私钥,再次调用密钥生成算法获取账户2的公钥和私钥。

用户模块以公众账户的公钥作为交易输出创建比特币交易。 半可信第三方模块根据以下公式对余额信息进行数字签名: σTTP=Sig(vTsk,vUpk,m,t1)椭圆曲线数字签名算法中的值 vTsk 表示半可信第三方模块的签名私钥,vUpk 表示用户模块在现有比特币账户中任意选择的一个比特币公钥,m 表示比特币余额,t1代表数字签名戳的时间。 半可信第三方模块将生成的余额信息数字签名发送给用户模块。 第二步,提交订单并生成交易承诺。 用户模块调用密钥生成算法生成临时比特币公钥和私钥。 密钥生成算法的公式如下: M=mG 其中,M代表公钥,m代表随机选择的私钥,m的取值范围为[1,n-1],G代表密钥生成算法中椭圆曲线上的值。 的基点,n表示基点的阶数。 用户模块根据以下公式计算一次性公钥: P=Hs(rvpka)G+vpkb 其中,P表示一次性公钥,Hs(·)表示哈希函数,r表示临时私钥,vpka代表账号公钥,G代表密钥生成算法中椭圆曲线上的基点,vpkb代表账户2的公钥。用户模块将临时公钥和商品信息发送给商户模块。 商户模块根据以下公式计算一次性公钥: P=Hs(vaR)G+vpkb 其中,P表示一次性公钥,Hs(·)表示哈希函数,va表示私钥账户1的密钥,R代表临时公钥,G代表密钥生成算法中椭圆曲线上的基点,vpkb代表账户2的公钥。

比特币交易信息包括收款人签名吗_比特币收款地址_比特币莱特币量子链等交易

商户模块根据以下公式计算交易承诺: σvender=Sig(vb,R,msg) 其中,σvender表示交易承诺,Sig(·)表示椭圆曲线数字签名算法的签名函数,vb表示账户2的私钥,R表示临时公钥,msg表示产品信息。 商户模块根据以下公式计算一次性公钥对应的私钥: Ps=Hs(vaR)+vb 其中,Ps表示一次性公钥对应的私钥,Hs( )代表哈希函数,va代表账户一私钥,R代表临时公钥,vb代表账户二私钥。商户模块向用户模块发送交易承诺。 第三步,生成支付承诺。 (3a) 用户模块根据下式对一次性公钥进行盲化: P*=Blind(P) 其中,P*表示被盲化的一次性公钥,Blind()表示选择的部分盲签名算法中的盲函数,P代表一次性公钥。 (3b) 用户模块根据以下公式计算支付信息: σUser*=Sig(vUsk,σTTP,P*,c)]]> 其中,表示支付信息,Sig(·)表示椭圆曲线数字签名算法,vUsk表示用户模块选择的比特币公钥对应的私钥,σTTP表示余额信息的数字签名,P*表示盲化一次性公钥,c表示数量比特币支付。 (3c) 用户模块将支付信息和用户模块的比特币公钥发送给半可信第三方模块。

(3d)半可信第三方模块判断接收到的信息是否合法,如果合法则执行步骤(3e),否则向用户模块发送错误信息error1表示“认证失败”,执行步骤( 3c). 半可信第三方收到的信息的合法性是指同时满足以下三个条件的情况: 条件1,Verify(vTpk,σTTP) = 1; 条件二、条件三,支付信息为首次使用; 其中,Verify()表示椭圆曲线数字签名算法的验证函数,vTpk表示半可信第三方模块的签名公钥,σTTP表示余额信息的数字签名,表示计算出的支付信息在步骤 (3b) 中。 (3e) 半可信第三方模块根据以下公式计算共识参数: s=τ(c) 其中s代表共识参数,τ(·)代表部分盲签名中的共识协议生成函数算法,c代表比特币的支付数量。 (3f) 半可信第三方模块根据以下公式计算支付承诺: σPay*=BldSig(sk,s,P*)]]>选择的部分盲签名算法 中的签名函数,sk 表示半可信第三方模块的签名私钥,s 表示共识参数,P* 表示盲的一次性公钥。 (3g) 半可信第三方模块根据以下公式对最新账户余额进行数字签名:σ'TTP=Sig(vTsk,vUpk,m',t'1),其中σ'TTP表示最新账户余额Signature,Sig(·)代表椭圆曲线数字签名算法的签名函数,vTsk代表半可信第三方模块私钥,m'代表用户模块最新账户余额,vUpk代表用户模块选择的比特币公钥,t1'代表数字签名的时间戳。

(3h)半可信第三方模块向用户模块发送支付承诺和最新账户余额的数字签名。 第四步,签署支付协议。 (4a) 用户模块根据以下公式计算盲化后的支付承诺: σPay=Blind-1(σPay*)]]> 其中,σPay表示盲化后的支付承诺,Blind-1(·)表示selected 部分 盲签名算法中的去盲函数代表一个支付承诺。 (4b) 用户模块向半可信第三方模块发送非盲支付承诺。 (4c)判断半可信第三方模块接收到的信息是否合法,如果合法则执行步骤(4d),否则向用户模块发送错误信息error1表示“验证失败”后,执行步骤(4b)。 半可信第三方收到的信息的合法性是指同时满足以下两个条件的情况: 条件1,未使用去盲后的支付承诺; 条件2,BldVer(pk,σPay) = 1; 其中,BldVer(·)表示所选部分盲签名算法中的验证函数,pk表示半可信第三方的签名公钥,σpay表示去盲后的支付承诺。 (4d) 半可信第三方模块创建比特币交易,以公众账户的公钥作为交易输入,一次性公钥作为交易输出。 第五步,判断区块链中是否存在合法的支付信息,如果是则转步骤六,否则转步骤十。区块链中存在合法的支付信息即意味着区块链中存在一笔比特币交易使用公众账户的公钥作为交易的输入,使用一次性公钥作为交易的输出。

步骤6,商户模块向用户模块提供商品。 步骤7,用户模块确认是否收到产品,如果是,执行步骤8,否则执行步骤9。 步骤8:根据以下公式计算确认签名后,执行步骤10:σReceiver=Sig( r, msg) 其中,σReceiver表示确认签名,Sig(·)表示椭圆曲线数字签名算法的签名函数,r表示临时私钥,msg表示产品信息。 第九步,落实问责协议。 (9a) 用户模块将生成的交易承诺和临时私钥发送给半可信第三方模块。 (9b)判断半可信第三方模块收到的交易承诺是否合法,如果合法则执行步骤(9c),否则向用户模块发送错误信息error1表示“验证失败”后,执行步骤(9a)。 条件1,Verify(vpkb,σvender)=1; 条件2,R=rG; 其中,Verify()表示椭圆曲线数字签名算法的验证函数,vpkb表示账户2的公钥,σvender表示交易承诺,R表示临时公钥,r表示临时私钥,G表示密钥生成算法中椭圆曲线上的基点。 (9c) 根据下式计算一次性公钥: P=Hs(rvpka)G+vpkb 其中,P表示一次性公钥,Hs(·)表示哈希函数,r表示临时私钥key,vpka 代表账户一 G 代表密钥生成算法中椭圆曲线上的基点,vpkb 代表账户二的公钥。

(9d)判断区块链中是否存在合法的支付信息,如果存在,则执行步骤(9e),否则,向用户模块发送错误信息error2提示“问责申请失败”后,执行步骤(9a)。 The existence of legitimate payment information in the blockchain means that there is a Bitcoin transaction in the blockchain that uses the public key of the public account as the input of the transaction and uses the one-time public key as the output of the transaction. (9e) The semi-trusted third-party module holds the merchant module accountable. Step 10, exit the system. Current page 1 1 2 3 Current page 1 1 2 3