1.一种无临时密钥泄露的区块链双密钥隐匿地址协议的实现方法,其特征在于,所述无临时密钥泄露的区块链双密钥隐匿地址协议的实现方法包括以下步骤:第一步,生成交易发送方双密钥对和接收方双密钥对,双密钥对为扫描密钥对和支付密钥对,并将双公钥公布在区块链上;
第二步,交易记录数据库的维护是每个用户维护一个本地的交易记录数据库,包括记录自己作为发送方发送给相应接收方的交易和记录自己作为接收方接收到相应发送方的交易;本地交易记录数据库中的交易次数进行加密存储;用户对交易记录表的操作包括查询与其他用户的交易次数、更新与其他用户的交易次数和插入新的交易记录;
第三步,在进行转账交易时,隐匿交易接收方的地址;
所述第三步的隐匿交易包括以下步骤:
步骤一,发送方在交易记录表TableS中查询与相应接收方的交易次数NumRT;
步骤二,发送方根据交易次数NumRT,计算交易临时私钥r=H(NumRT);H(content)为哈希函数;
步骤三,发送方计算交易的一次性临时输出地址TAddr=pubKRT1+H(r*pubKRT2)*G;G是椭圆曲线上的基点;
步骤四,发送方往交易临时输出地址TAddr发布转账交易;
步骤五,在此次交易之前,发送方已与相应接收方进行过交易,则在发布转账交易后,发送方将交易记录表TableS中与相应接收方的交易次数加1,NumRT=NumRT+1;在此次交易之前,发送方未与相应接收方进行过交易,则在发布转账交易后,发送方在交易记录表TableS中新增与相应接收方的交易记录,此时,交易次数为1,即NumRT=1;
步骤六,接收方扫描区块链系统中产生的交易,获得相应交易的临时地址值,记为TAddrScan;
步骤七,接收方在交易记录表TableR中查询与相应发送方的交易次数NumST;
步骤八,接收方根据交易次数NumST,计算交易临时公钥R=H(NumST)*G;
步骤九,接收方计算TAddr’=pubKRT1+H(priKRT2*R)*G;
步骤十,地址TAddr’=TAddrScan,即TAddr’=TAddr,接收方计算确认交易的私钥txSK=priKRT1+H(priKRT2*R),确认该笔交易;另外,对于发送方与接收方的交易次数相等,NumRT=NumST;
步骤十一,在此次交易之前,接收方已与相应发送方进行过交易,则在发布转账交易后,接收方将交易记录表TableR中与相应发送方的交易次数加1,即NumST=NumST+1;在此次交易之前,接收方未与相应发送方进行过交易,则在发布转账交易后,接收方在交易记录表TableR中新增与相应发送方的交易记录;此时,交易次数为1,NumST=1;
另外,交易临时输出地址TAddr和确认交易私钥txSK之间的关系如下:
txSK*G=(priKRT1+H(priKRT2*R))*G=TAddr。
2.如权利要求1所述的无临时密钥泄露的区块链双密钥隐匿地址协议的实现方法,其特征在于,所述生成交易发送方双密钥对和接收方双密钥对具体包括:步骤一,接收方生成自己的支付密钥对和扫描密钥对,支付密钥对(pubKRT1,priKRT1)和扫描密钥对(pubKRT2,priKRT2);
步骤二,接收方将自己的双公钥pubKRT1和pubKRT2公布到区块链上;
步骤三,发送方从区块链上获得接收方的双公钥pubKRT1和pubKRT2;
发送方生成双密钥对的步骤与接收方相同。
3.如权利要求2中所述的无临时密钥泄露的区块链双密钥隐匿地址协议的实现方法,其特征在于,所述生成交易发送方双密钥对和接收方双密钥对过程形式:密钥对生成函数keyGen(),在用户端生成用户的公私钥对;生成成功,返回用户公私钥对pubK和priK;生成失败,返回NULL;其中,pubK=priK*G,G是椭圆曲线上的基点,且系统中G的取值是相同的;
另外,用(pubKRT1,priKRT1) 和(pubKRT2,priKRT2)表示交易接收方的支付密钥对和扫描密钥对。
4.如权利要求1中所述的无临时密钥泄露的区块链双密钥隐匿地址协议的实现方法,其特征在于,所述第二步的交易记录数据库中的交易次数进行加密存储,加密方式是通过对称密钥K加密交易次数,并将对称密钥K用公钥pubKRT2进行非对称加密。
5.如权利要求1所述的无临时密钥泄露的区块链双密钥隐匿地址协议的实现方法,其特征在于,所述第二步的交易记录的形式:(1)查询交易次数函数queryTx(SRT,Table),查询与相应接收方或者发送方的交易次数;参数SRT表示一个接收方或者一个发送方,Table表示交易记录表TableS或者TableR;表中存在相应记录,返回解密后的交易次数TxNum;表中不存在相应记录,返回0;
(2)更新交易次数函数updateTxNum(SRT,Table,Enc(TxNum+1)),queryTx()的返回值不为0,进行交易后,更新与相应接收方或者发送方的交易次数记录,相应的交易次数加1;
参数SRT表示一个接收方或者一个发送方,Table表示交易记录表TableS或者TableR,Enc(TxNum+1)表示更新后的交易次数的密文;更新成功,返回true;更新不成功,返回false;
(3)插入交易记录函数insertTx(SRT,Table,Enc(1)),queryTx()的返回值为0,进行交易后,插入与相应接收方或者发送方的交易记录,交易次数为1;参数SRT表示一个接收方或者一个发送方,Table表示交易记录表TableS或者TableR,Enc(1)表示插入交易次数为1的密文;插入成功,返回true;插入不成功,返回false。
6.如权利要求1所述的无临时密钥泄露的区块链双密钥隐匿地址协议的实现方法,其特征在于,所述第三步的隐匿交易形式:(1)哈希函数H(content),实现对内容的哈希加密处理;参数content表示哈希加密的密文内容;哈希加密成功,返回哈希加密结果content_H;哈希加密不成功,返回NULL;
(2)转账交易函数TxTranfer(ST,txAddr),交易发送方将资金转入目的地址中;参数ST表示交易发送方,txAddr表示此次转账的目的地址;转账成功,返回true;转账不成功,返回false;
(3)交易扫描函数TxScan(),交易接收方扫描区块链中产生的交易;扫描成功,返回相应交易的地址值TAddrScan;扫描不成功,返回NULL。
7.一种实现权利要求1~6任意一项所述无临时密钥泄露的区块链双密钥隐匿地址协议的实现方法的信息数据处理终端。
8.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1‑6任意一项所述的无临时密钥泄露的区块链双密钥隐匿地址协议的实现方法。