首页 / 专利库 / 银行与财务事项 / 比特币地址 / 有效保护用户隐私的比特币交易查询方法

有效保护用户隐私的比特币交易查询方法

阅读:381发布:2020-05-17

专利汇可以提供有效保护用户隐私的比特币交易查询方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种有效保护用户隐私的 比特币 交易查询方法,一方面,利用运行在全 节点 中的飞地作为代理执行交易查询,飞地将重组 区 块 链 数据结构,生成新交易文件 数据库 和对应的索引树结构,从而提高交易查询效率。另一方面,交易查询在飞地中进行,特权或非特权的 软件 都无法 访问 飞地,飞地采用Path ORAM操作访问加密存储在全节点中的索引树和交易文件数据库,从而保护对这些数据的访问模式,解决全节点对轻量级客户端交易查询的隐私威胁。,下面是有效保护用户隐私的比特币交易查询方法专利的具体信息内容。

1.一种有效保护用户隐私的比特币交易查询方法,其特征在于,包括:
由全节点创建安全飞地,由安全飞地读取全节点中存储的链,将区块链转换成访问模式不可见的交易文件数据库和交易索引树,并通过Path ORAM技术实现对交易文件数据库和交易索引树的读写操作;
轻量级客户端与安全飞地执行远程认证协议,在协议中二者实现密钥共享,之后轻量级客户端与安全飞地的所有通信都采用共享的密钥进行加密;
轻量级客户端向安全飞地发送交易查询请求
安全飞地根据交易查询请求中携带的交易关键词类型决定需要搜索的交易索引树,并产生相应的响应消息反馈给轻量级客户端;
轻量级客户端接收响应消息,如果其中包含相应交易文件,则根据SPV原理验证SPV证明是否有效。
2.根据权利要求1所述的一种有效保护用户隐私的比特币交易查询方法,其特征在于,该方法还包括:预先进行区块链同步的步骤:全节点连接到比特币P2P网络并同步整个区块链;轻量级客户端连接到比特币P2P网路,并同步所有区块头
3.根据权利要求1所述的一种有效保护用户隐私的比特币交易查询方法,其特征在于,所述由安全飞地读取全节点中存储的区块链,将区块链转换成访问模式不可见的交易文件数据库和交易索引树,并通过Path ORAM技术实现对交易文件数据库和交易索引树的读写操作包括:
安全飞地进行数据结构的初始化;通过初始化生成两个访问模式不可见的数据结构:
交易文件数据库和交易索引树;安全飞地能够为不同类型交易关键词分别生成一个交易索引树;交易关键词以前缀树的形式组织,并将前缀树运行Path ORAM写入交易索引树中;
安全飞地从全节点读取区块,并验证区块的有效性;
验证通过后,安全飞地根据区块中的交易生成Merkle树,并为每个交易生成其SPV证明;然后,将交易、交易的SPV证明、区块高度以及区块哈希放在一起形成一个交易文件,并生成一个临时的文件编号;
安全飞地计算交易的哈希作为交易哈希关键词,然后安全飞地扫描交易的每个输入脚本和输出脚本提取公钥哈希关键词;提取公钥哈希关键词过程中,输入输出脚本中的公钥将转换成公钥哈希,脚本哈希也被归类为公钥哈希中;随后,安全飞地生成或<(PKH1,PKH2,…,PKHm),TxFID>这样的表项,其中TxH是交易哈希,TxFID是交易文件编号,PKHi是交易中包含的第i个公钥哈希;
安全飞地随机读取交易文件数据库中的一条路径,然后安全飞地将交易文件写入相应路径中的某个节点并记录该交易文件的位置图;随后,安全飞地将或<(PKH1,PKH2,…,PKHm),TxFID>中的交易文件编号TxFID替换成相应位置图;安全飞地根据保存的根节点位置图读取前缀树的根节点;根据交易哈希的第一个字符决定读取哪个孩子节点;每读取一个前缀树节点,安全飞地判断其是否是叶子节点,如果是则将<交易哈希,位置图>存储在相应叶子节点中,如果叶子节点已经存储足够的<交易哈希,位置图>,安全飞地将相应叶子节点分裂成n个孩子节点,并将<交易哈希,位置图>按照交易哈希的下一个字符分别存储在对应的孩子节点中;如果不是其叶子节点,安全飞地利用交易哈希的下一个字符判断读取哪个孩子节点;最后,安全飞地将前缀树的叶子节点写入交易索引树中,随后更新父亲节点中相应叶子节点的位置图;继续以上过程直到将前缀树的根节点也写入交易索引树,根节点的位置图仍将存储在安全飞地中。
4.根据权利要求3所述的一种有效保护用户隐私的比特币交易查询方法,其特征在于,所述轻量级客户端向安全飞地发送交易查询请求中包括:查询交易的关键词以及查询的起始块;交易关键词为交易哈希或比特币地址;查询的起始块表明轻量级客户端只需要相应区块之后的匹配关键词的交易,它采用区块高度进行标识。
5.根据权利要求4所述的一种有效保护用户隐私的比特币交易查询方法,其特征在于,所述安全飞地根据交易查询请求中携带的交易关键词类型决定需要搜索的交易索引树,并产生相应的响应消息反馈给轻量级客户端包括:
安全飞地判断交易关键词类型,决定需要搜索的交易索引树;
安全飞地根据根节点的位置图读取前缀树的根节点;然后根据交易哈希的第一个字符决定读取哪个孩子节点;每读取一个前缀树节点,安全飞地判断其是否是叶子节点,如果不是,则利用交易哈希的下一个字符判断读取哪个孩子节点;如果是则搜索<交易哈希,位置图>表项中是否有匹配交易关键词的表项;
安全飞地搜索完前缀树的叶子节点后,如果存在匹配交易关键词的<交易哈希,位置图>则根据该位置图从交易文件数据库中读取交易文件;如果不存在匹配,安全飞地随机读取交易文件数据库的一条路径;
如果交易搜索后存在匹配交易关键词的交易文件,安全飞地判断交易文件是否符合查询需求,即验证交易文件中的区块高度是否大于或等于交易查询请求中起始块的区块高度;如果交易搜索后没有匹配的交易文件,则跳到下一步;
安全飞地将交易文件以及安全飞地当前最新区块的区块头填入固定大小的响应消息中,如果交易文件小于等于固定大小,则填充随机字符串;如果交易文件大于固定消息大小,则安全飞地返回交易文件过大的通知消息;如果不存在匹配的交易文件,则安全飞地返回交易不存在的通知消息;上述三类响应消息大小相同,且通过安全信道发送给轻量级客户端。
6.根据权利要求1所述的一种有效保护用户隐私的比特币交易查询方法,其特征在于,所述轻量级客户端接收响应消息,如果其中包含相应交易文件,则根据SPV原理验证SPV证明是否有效包括:
如果接收的响应消息包含交易文件,轻量级客户端根据交易文件中的区块高度读取本地区块头,并比较该区块头的哈希是否与交易文件中的区块哈希一致;如果一致,轻量级客户端验证交易文件中SPV证明的有效性;最后,轻量级客户端比较本地最新区块头和响应消息中的区块头;如果本地区块头较新,轻量级客户端判断是否再次执行查询请求,并将响应消息的区块作为起始块;如果响应消息中的区块头较新,轻量级客户端连接比特币P2P网络同步最新的区块头;如果本地区块头较新且发现响应消息中的区块头并不存在本地区块链中,则轻量级客户端更换提供服务的全节点。
7.根据权利要求1所述的一种有效保护用户隐私的比特币交易查询方法,其特征在于,该方法还包括查询数据库更新的步骤,该步骤包括:
当比特币P2P网络中有新的区块产生,全节点同步相应区块到本地,随后将区块发送给安全飞地,安全飞地验证区块的有效性;
验证通过后,安全飞地根据区块中的交易生成Merkle树,并为每个交易生成其SPV证明;然后,安全飞地将交易、交易的SPV证明、区块高度以及区块哈希放在一起形成一个交易文件,并生成一个临时文件编号;
安全飞地计算交易的哈希作为交易哈希关键词,然后安全飞地扫描交易的每个输入脚本和输出脚本提取公钥哈希关键词;提取公钥哈希关键词过程中,输入输出脚本中的公钥将转换成公钥哈希,脚本哈希也被归类为公钥哈希中;随后,安全飞地生成或<(PKH1,PKH2,…,PKHm),TxFID>这样的表项;
安全飞地执行交易查询找到前缀树的叶子节点,检查是否已经存在匹配关键词的表项;如果已有匹配的表项,那么安全飞地根据匹配表项中的位置图读取旧交易文件所在的路径,将新的交易文件和旧的交易文件一起重新写入交易文件数据库,同时更新交易索引树;如果不存在匹配的表项,那么安全飞地随机读取交易文件数据库的一条路径,将交易文件写入其中一个数据块,同时更新交易索引树。

说明书全文

有效保护用户隐私的比特币交易查询方法

技术领域

[0001] 本发明涉及比特币链技术领域,尤其涉及一种有效保护用户隐私的比特币交易查询方法。

背景技术

[0002] 在比特币系统中,全节点需要下载和保存完整的区块链,并因此能独立验证新的交易和区块的有效性。截止2019年6月,一个全节点需要超过200GB的硬盘空间来存储完整的区块链,而且这一存储空间需求还在随着时间不断增长。因而,在资源受限的移动设备上存储整个区块链是不可行的,比如手机、平板电脑等。为了解决这个问题,简易支付验证(Simplified Payment Verification,简称SPV)方法被提出以实现轻量级客户端。通过该方法,轻量级客户端只需下载和验证全部区块头而非整个区块链。当轻量级客户端需要验证一个交易是否被包含在区块链的一个区块中,它从保存整个区块链的全节点处下载对应的SPV证明。一个SPV证明是Merkle树的一个分支,该分支将该交易绑定到所在区块的区块头。
[0003] 在SPV中,为了实现支付验证或者账户余额查询,轻量级客户端需要从全节点处下载交易以及交易的SPV证明。轻量级客户端将交易的哈希或者比特币地址作为关键词发送给全节点,然后全节点根据这些关键词在比特币区块链上搜索匹配关键词的交易,随后根据完整的区块信息生成匹配交易的SPV证明。最后,全节点将匹配交易关键词的交易及其SPV证明返回给轻量级客户端。
[0004] 然而,这种基于SPV的交易查询方式使得服务轻量级客户端的全节点知道哪些交易与该轻量级客户端相关。这很明显泄露了轻量级客户端的隐私。全节点可以根据这些交易获知轻量级客户端所拥有的比特币地址。此外,全节点还可以把这些比特币地址与轻量级客户端的IP地址关联起来。最后,结合一些公开的信息(如商店地址),全节点可以进一步推断轻量级客户端的购物习惯。
[0005] 目前减少基于SPV的交易查询中隐私泄露的方法主要有两类。第一类是采用Bloom过滤器来减轻轻量级客户端的隐私泄露。该技术允许轻量级客户端定义一个匿名集合来隐藏它的真实地址。轻量级客户端将比特币地址嵌入到Bloom过滤器中,然后发送给全节点。Bloom过滤器的误报率意味着通过过滤器的交易可能与轻量级客户端无关。当全节点同步到一个新生成的区块,它首先检查其中每个交易的输入或输出是否匹配Bloom过滤器。如果有匹配的输入或输出,全节点能把包含该输入或输出的交易发送给轻量级客户端。本质上,Bloom过滤器给出一个在隐私保护和通信开销之间做权衡的方法。这意味着实际使用中该方法不能同时实现轻量级客户端高的隐私保护效果和低的通信开销。
[0006] 另一类保护交易查询隐私的方法是采用匿名通信网络。轻量级客户端可以通过像Tor这样的匿名通信网络与全节点相连,然后发送查询请求来查询相应的交易。然而在2015年的IEEE安全与隐私研讨会(IEEE Symposium on Security and Privacy)上,Biryukov和Pustogarov发表的《Bitcoin over Tor isn’t a good idea》表明比特币的黑名单机制使得采用Tor查询交易的轻量级客户端更易受到解匿名攻击。而且在2018年的IEEE安全与隐私研讨会,Henry等发表的《Blockchain access privacy:Challenges and directions》指出政府或组织机构经常阻塞Tor,这是因为Tor常被用于非法目的。这也是一些区块链系统不采用Tor的原因,比如Ripple区块链。最后,比特币节点数量远超过Tor的节点数量,因此Tor不能支持庞大的比特币网络。
[0007] 以英特尔SGX(Software Guard Extensions)为代表的安全飞地(secure enclave)技术,为同时实现轻量级客户端交易查询的高强度隐私保护和低通信开销提供了有效方法。SGX提供了一种基于处理器硬件的可信执行环境,将应用程序执行环境隔离出来,形成安全飞地的抽象。安全飞地在初始化完成之后,处理器计算安全飞地内数据和代码的哈希值,该哈希值被称为安全飞地的度量,用于标识和区分安全飞地。SGX技术对安全飞地提供以下安全机制:
[0008] 1)隔离。SGX提供的隔离可以防止其他进程和特权代码(比如OS或管理程序)在安全飞地运行时读取或修改安全飞地的内存。安全飞地的安全边界只包含处理器和它自身。
[0009] 2)密封。SGX提供的密封允许安全飞地将需要长期存储的数据通过只有安全飞地知道的密钥加密后存储在安全飞地之外。为保证数据安全,安全飞地在读取这些加密数据时验证其完整性。
[0010] 3)认证。SGX提供的认证允许安全飞地发出可远程验证的断言声明。断言声明通常包括安全飞地的度量、安全飞地签发者的签名,以及用户自定义数据。经过验证的断言声明表明安全飞地按照预期安全地在支持SGX的平台上初始化并运行。而且在远程认证过程中,用户可以和安全飞地协商会话密钥,该密钥可用于实现一条用户与安全飞地间的安全信道。
[0011] 运行在全节点中的安全飞地可以充当轻量级客户端的可信查询代理。轻量级客户端将查询请求通过安全信道发送给安全飞地,安全飞地在全节点的区块链上执行交易搜索然后将结果返回给轻量级客户端。然而,单独使用安全飞地仍存在隐私泄露问题。由于安全飞地容量有限(截至2019年6月,安全飞地最大容量为128MB),区块链仍存储在不可信的全节点处。这种情况下,对区块链的访问模式仍然威胁到轻量级客户端的交易查询隐私。Matetic等在2019年USENIX安全大会(USENIX Security Symposium)上发表的《BITE:
Bitcoin lightweight client privacy using trusted execution》提出使用安全飞地保护轻量级客户端的隐私。他们提出安全飞地一块块地扫描区块链进行交易搜索来隐藏对区块链的访问模式,其隐藏效果与扫描的区块个数有关。然而,这意味着在飞地中执行交易搜索的输入/输出(I/O)开销与扫描区块的个数线性相关。

发明内容

[0012] 本发明的目的是为轻量级客户端提供一种有效保护用户隐私的比特币交易查询方法,防止查询信息泄露给提供查询服务的全节点,并且提高了交易查询效率。
[0013] 本发明的目的是通过以下技术方案实现的:
[0014] 一种有效保护用户隐私的比特币交易查询方法,包括:
[0015] 由全节点创建安全飞地,由安全飞地读取全节点中存储的区块链,将区块链转换成访问模式不可见的交易文件数据库和交易索引树,并通过Path ORAM技术实现对交易文件数据库和交易索引树的读写操作;
[0016] 轻量级客户端与安全飞地执行远程认证协议,在协议中二者实现密钥共享,之后轻量级客户端与安全飞地的所有通信都采用共享的密钥进行加密;
[0017] 轻量级客户端向安全飞地发送交易查询请求;
[0018] 安全飞地根据交易查询请求中携带的交易关键词类型决定需要搜索的交易索引树,并产生相应的响应消息反馈给轻量级客户端;
[0019] 轻量级客户端接收响应消息,如果其中包含相应交易文件,则根据SPV原理验证SPV证明是否有效。
[0020] 由上述本发明提供的技术方案可以看出,一方面,利用运行在全节点中的安全飞地作为代理,执行交易查询。安全飞地将重组区块链数据结构,生成新交易文件数据库和对应的交易索引树,从而提高交易查询效率。另一方面,交易查询在飞地中进行,特权或非特权的软件都无法访问飞地,飞地采用基于路径的访问模式不可见存储器(Path ORAM)技术来访问加密存储在全节点中的交易索引树和交易文件数据库,从而保护对这些数据的访问模式,解决全节点对轻量级客户端交易查询的隐私威胁。附图说明
[0021] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
[0022] 图1为本发明实施例提供的一种有效保护用户隐私的比特币交易查询方法结构示意图;
[0023] 图2为本发明实施例提供的一种有效保护用户隐私的比特币交易查询方法的框架图;
[0024] 图3为本发明实施例提供的访问模式不可见数据结构示例图。

具体实施方式

[0025] 下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
[0026] 本发明实施例为轻量级客户端提供一种有效保护用户隐私的比特币交易查询方法,防止查询信息泄露给提供查询服务的全节点,并且提高了交易查询效率。本发明利用运行在全节点中的安全飞地作为代理,执行交易查询。安全飞地将重组区块链数据结构,生成新的访问模式不可见的交易文件数据库和对应的交易索引树。访问模式不可见的交易索引树是通过Path ORAM技术将交易关键词组成的前缀树写入一个总节点数目为N的完全二叉树中。这样一来,飞地在执行交易搜索时的I/O开销被降到O(mlogN),其中m是本发明中交易关键词组成的前缀树的树高。
[0027] 如图1所示,本发明采用的技术方案主要包含如下实体:轻量级客户端、全节点、包含在全节点中的安全飞地,以及比特币的P2P网络。在进行交易查询之前,轻量级客户端和全节点分别与比特币的P2P网络连接,同步区块链信息。其中轻量级客户端只同步区块头,而全节点同步所有的区块数据。之后,由全节点根据公开的安全飞地代码实例化一个安全飞地,由安全飞地读取全节点中存储的区块链,将区块链转换成交易文件数据库和交易索引树,安全飞地对加密的交易文件数据库和交易索引树的访问模式仍有可能泄漏轻量级客户端的查询隐私给全节点,因此,安全飞地通过Path ORAM技术实现对交易文件数据库和交易索引树的读写操作。在此之前,轻量级客户端与安全飞地执行远程认证协议,在协议中二者实现密钥共享,之后轻量级客户端与飞地的所有通信都采用共享的密钥进行加密;此后,轻量级客户端向飞地发送交易查询请求;飞地根据交易查询请求中携带的交易关键词类型决定需要搜索的交易索引树,并产生相应的响应消息反馈给轻量级客户端;轻量级客户端接收响应消息,如果其中包含相应交易文件,则根据SPV原理验证SPV证明是否有效。本发明的上述方案不仅解决全节点对比特币轻量级客户端交易查询的隐私威胁,而且降低了轻量级客户端的通信开销,提高了安全飞地中交易的查询效率,其中交易查询效率包括减少轻量级客户端的通信开销以及安全飞地的计算开销。
[0028] 为了便于理解,下面结合图2对本发明做详细的介绍。
[0029] 一、区块链同步。
[0030] 全节点连接到比特币P2P网络并同步整个区块链;轻量级客户端连接到比特币P2P网路,并同步所有区块头。
[0031] 二、区块链重组。
[0032] 本步骤优选实施方式如下:
[0033] 1)安全飞地初始化。
[0034] 全节点根据公开的、可验证的安全飞地代码创建安全飞地,安全飞地创建后内嵌比特币创世区块哈希。
[0035] 2)访问模式不可见的数据结构初始化。
[0036] 安全飞地运行Path ORAM进行数据结构的初始化;通过初始化生成两个访问模式不可见的数据结构:交易文件数据库和交易索引树。上述的两个数据结构是访问模式不可见的,全节点通过观察安全飞地对这两个数据结构的访问模式,无法判断飞地真正访问数据结构的哪部分数据,以及飞地对数据结构执行的哪种操作。安全飞地能够为不同类型交易关键词分别生成一个交易索引树。本发明主要考虑两类交易关键词:交易哈希和公钥哈希。所以交易索引树结构包含基于交易哈希的交易索引树和基于公钥哈希的交易索引树。交易关键词以前缀树的形式组织,前缀树运行Path ORAM写入交易索引树中。
[0037] 如图3所示,访问模式不可见的数据结构初始化就是生成一个节点数目为N的完全二叉树。完全二叉树中每个节点被称为一个桶(bucket),每个桶最多能存放Z个加密的数据块。安全飞地在初始化完全二叉树时先将所有的数据块采用加密的无效数据块填充。完全二叉树的每个叶子节点都有一个标号。安全飞地对访问模式不可见数据结构的访问都是对完全二叉树的一条从某个叶子节点(比如标号为i的叶子节点)到根节点的路径(简称为路径-i)进行访问,会将这条路径上的所有数据块读取到安全飞地中。安全飞地解密所有数据块,找到真正读取的数据块,在完成对数据的处理后为真正读取的数据块随机分配一个新的叶子节点j,并将所有数据重新写回到这条路径。写入过程中,真正读取的数据块将尽可能写入靠近叶子节点j的地方。比如,安全飞地先尝试路径i与路径j重叠部分最靠近叶子节点j的桶是否能容纳数据块Dk,如果可以就写入;如果不可以则尝试将Dk写入该桶的父节点处。如果根节点也无法容纳Dk,那么Dk将暂时保存在安全飞地中,等待安全飞地读取下一个路径m时将Dk写入路径j与m重叠的节点处。
[0038] 访问模式不可见的数据结构中的有效数据都会被随机分配一个叶子节点i,并且有效数据将被加密存储在路径i的某个数据块中。所谓的有效数据,在交易文件数据库中指的是交易文件,在交易索引树中指的是前缀树的节点。每个有效数据都具备一个编号j,该数据编号j和分配的路径i一起被称为该有效数据的位置图。利用该位置图,安全飞地可以通过读取路径i,随后在路径中查找数据编号为j的数据。如图3所示,数据块D5的位置图就是(D5,3),安全飞地访问数据块D5时通过读取路径3,然后在路径的所有数据块中找寻编号为5的数据块。
[0039] 注意到,交易文件数据库和交易索引树初始化获得的完全二叉树具备不同的参数,比如节点数目N可能不同,每个加密的数据块大小不同等。
[0040] 安全飞地对交易索引树的初始化还需要将初始化的前缀树写入完全二叉树中。为此,安全飞地先初始化一个前缀树。初始化后的前缀树只有根节点和n(例如,n=16)个叶子节点。安全飞地为所有前缀树的节点(nidi)随机分配一个完全二叉树的叶子节点j,(nidi,j)被称为该前缀树节点的位置图。前缀树的每个非叶子节点都会存储其所有孩子节点的位置图,前缀树根节点的位置图将存储在安全飞地中。之后,安全飞地将每个前缀树的节点写入完全二叉树中。安全飞地从前缀树的叶子节点开始,查看其父节点中该叶子节点的位置图(nidi,j),读取完全二叉树的路径j,解密路径上的所有数据块,保留有效数据,将所有有效数据和新加入的前缀树叶子节点数据加密写入路径j。安全飞地重复上述过程直到将初始化的前缀树节点全部写入初始化的完全二叉树中。
[0041] 3)读取区块。
[0042] 安全飞地发送读取区块请求给全节点,区块采用区块高度标识,创世区块的区块高度为0,安全飞地从创世区块开始读取。每读取一个区块,安全飞地验证区块的有效性,包括:a)验证工作量证明,即区块头的哈希是否满足区块头中的难度目标;b)验证链式结构,即前一个区块哈希是否指向一个有效区块;c)验证Merkle根,安全飞地根据区块中的交易生成Merkle树,然后比较生成的Merkle树的根节点是否与区块头中的Merkle根一致。
[0043] 4)交易文件生成。
[0044] 验证通过后,安全飞地根据区块中的交易生成Merkle树,并为每个交易生成其SPV证明;然后,将交易、交易的SPV证明、区块高度以及区块哈希放在一起形成一个交易文件,并生成一个临时的文件编号。
[0045] 5)交易关键词提取。
[0046] 安全飞地提取交易中的关键词,并生成<交易关键词,交易文件编号>表项;
[0047] 安全飞地计算交易哈希作为交易哈希关键词,然后安全飞地扫描交易的每个输入脚本和输出脚本提取公钥哈希关键词。提取公钥哈希关键词过程中,输入输出脚本中的公钥将转换成公钥哈希,脚本哈希也被归类为公钥哈希中。随后,安全飞地生成或<(PKH1,PKH2,…,PKHm),TxFID>这样的表项,其中TxH是交易哈希,TxFID是交易文件编号,PKHi是交易中包含的第i个公钥哈希。
[0048] 6)交易及关键词数据写入。
[0049] 安全飞地随机读取交易文件数据库中的一条路径,然后安全飞地将交易文件写入相应路径中的某个节点并记录该交易文件的位置图;随后,安全飞地将或<(PKH1,PKH2,…,PKHm),TxFID>中的交易文件编号TxFID替换成相应位置图。
[0050] 以交易哈希作为关键词为例,交易哈希是一串16进制字符,字符串长度为64。安全飞地根据保存的根节点位置图读取前缀树的根节点;根据交易哈希的第一个字符决定读取哪个孩子节点;每读取一个前缀树节点,安全飞地判断其是否是叶子节点,如果是则将<交易哈希,位置图>存储在相应叶子节点中,如果叶子节点已经存储足够的<交易哈希,位置图>,安全飞地将相应叶子节点分裂成n(例如,n=16)个孩子节点,并将<交易哈希,位置图>按照交易哈希的下一个字符分别存储在对应的孩子节点中;如果不是其叶子节点,安全飞地利用交易哈希的下一个字符判断读取哪个孩子节点;最后,安全飞地将前缀树的叶子节点通过写入交易索引树中,随后更新前缀树中其父亲节点中该节点的位置图;继续以上过程直到将前缀哈希树的根节点也写入交易索引树,根节点的位置图仍将存储在安全飞地中。
[0051] 三、远程认证及密钥共享。
[0052] 轻量级客户端与安全飞地执行Intel提供的远程认证协议,在协议中二者实现密钥共享。随后轻量级客户端与安全飞地的所有通信都采用该共享密钥进行加密。
[0053] 四、交易查询请求。
[0054] 所述轻量级客户端向安全飞地发送交易查询请求中包括:查询交易的关键词以及查询的起始块;交易关键词为交易哈希或比特币地址;查询的起始块表明轻量级客户端只需要相应区块之后的匹配关键词的交易,它采用区块高度进行标识。
[0055] 五、交易搜索。
[0056] 本步骤优选实施方式如下:
[0057] 1)区分关键词类型。
[0058] 安全飞地判断交易关键词类型,决定需要搜索的交易索引树。以下仍以基于交易哈希的交易索引树为例,将交易哈希表示成16进制的字符串。
[0059] 2)搜索交易索引树。
[0060] 安全飞地根据根节点的位置图读取前缀树的根节点所在路径,解密路径上所有数据,找到前缀树的根节点;然后根据交易哈希的第一个字符决定读取哪个孩子节点,读取孩子节点操作就是读取孩子节点所在路径上的所有数据,解密路径上的所有数据,然后找到孩子节点;每读取一个前缀树节点,安全飞地判断其是否是叶子节点,如果不是,则利用交易哈希的下一个字符判断读取哪个孩子节点;如果是则搜索<交易哈希,位置图>表项中是否有匹配交易关键词的表项。
[0061] 3)读取交易文件。
[0062] 安全飞地搜索完前缀树的叶子节点后,如果存在匹配交易关键词的<交易哈希,位置图>则根据该位置图从交易文件数据库中读取交易文件;如果不存在匹配,安全飞地随机读取交易文件数据库的一条路径,这用于防止查询结果的泄漏,全节点不能通过观察飞地执行索引树搜索后是否读取交易文件判断轻量级客户端查询的交易是否已经写入区块链中。
[0063] 4)数据结构更新。
[0064] 安全飞地将交易文件重新写入交易文件数据库,根据Path ORAM算法,交易文件将更换新的位置图,所以安全飞地将更新前缀树叶子节点中的<交易哈希,位置图>表项。随后,安全飞地将前缀树的叶子节点重新写入交易索引树中,前缀树叶子节点的位置图将发生更换,所以安全飞地随后更新其父亲节点中该叶子节点的位置图,类似地,安全飞地将前缀树叶子节点的父亲节点写入交易索引树,并更新其祖父节点中关于父亲节点的位置图,安全飞地继续该过程直到将前缀树的根节点也写入交易索引树。根节点的位置图仍将存储在安全飞地中。
[0065] 六、交易查询响应。
[0066] 本步骤优选实施方式如下:
[0067] 1)交易文件筛选。
[0068] 如果交易搜索后存在匹配交易关键词的交易文件,安全飞地判断交易文件是否符合查询需求,即验证交易文件中的区块高度是否大于或等于交易查询请求中起始块的区块高度;如果交易搜索后没有匹配的交易文件,则跳到下一步。
[0069] 2)响应消息生成。
[0070] 安全飞地将交易文件以及安全飞地当前最新区块的区块头填入固定大小的响应消息中,如果交易文件小于等于固定大小,则填充随机字符串;如果交易文件大于固定消息大小,则安全飞地返回交易文件过大的通知消息;如果不存在匹配的交易文件,则安全飞地返回交易不存在的通知消息;上述三类响应消息大小相同。
[0071] 3)发送响应交易。
[0072] 安全飞地将响应消息通过安全信道发送给轻量级客户端。
[0073] 4)查询结果验证。
[0074] 轻量级客户端判断响应消息类型。如果包含交易文件,轻量级客户端根据交易文件中的区块高度读取本地区块头,并比较该区块头的哈希是否与交易文件中的区块哈希一致。如果一致,轻量级客户端验证交易文件中SPV证明的有效性。最后,轻量级客户端比较本地最新区块头和响应消息中的区块头。如果本地区块头较新,轻量级客户端可根据需求判断是否再次执行查询请求,并将响应消息的区块作为起始块。比如支付交易验证则不需要继续执行交易查询,而余额查询则轻量级客户端可继续执行交易查询。如果响应消息中的区块头较新,轻量级客户端连接比特币P2P网络同步最新的区块头。如果本地区块头较新且发现响应消息中的区块头并不存在本地区块链中,则轻量级客户端更换提供服务的全节点。
[0075] 七、查询数据库更新。
[0076] 本步骤优选实施方式如下:
[0077] 1)读取区块。
[0078] 当比特币P2P网络中有新的区块产生,全节点同步相应区块到本地,随后将区块发送给安全飞地,安全飞地验证区块的有效性。
[0079] 2)交易文件生成。
[0080] 验证通过后,安全飞地根据区块中的交易生成Merkle树,并为每个交易生成其SPV证明。然后,安全飞地将交易、交易的SPV证明、区块高度以及区块哈希放在一起形成一个交易文件,并生成一个临时文件编号;
[0081] 3)交易关键词提取。安全飞地计算交易文件的哈希作为交易哈希关键词,然后安全飞地扫描交易的每个输入脚本和输出脚本提取公钥哈希关键词;提取公钥哈希关键词过程中,输入输出脚本中的公钥将转换成公钥哈希,脚本哈希也被归类为公钥哈希中;随后,安全飞地生成或<(PKH1,PKH2,…,PKHm),TxFID>这样的表项;
[0082] 4)交易查询。
[0083] 查询数据库更新时,进行交易查询是为了找到交易对应的关键词应当写入的前缀树叶子节点。通常,在交易哈希作为关键词的情况下,不会出现有匹配的表项;在公钥哈希作为关键词的情况下,才有可能有匹配的表项。
[0084] 5)交易文件写入。
[0085] 如果交易查询发现存在匹配的表项,即已有包含该交易关键词的交易文件存放在交易文件数据库中,那么安全飞地根据匹配表项中的位置图读取旧交易文件在交易文件数据库的路径i,随后为新的交易文件和旧的交易文件随机分配路径j,将新的交易文件和旧的交易文件一起重新写入路径i和路径j重叠的路径中;如果交易查询不存在匹配的表项,那么安全飞地随机读取交易文件数据库的一条路径,将交易文件写入其中一个数据块。
[0086] 6)交易索引树更新。
[0087] 采用前文步骤二的6)的方式更新交易索引树。
[0088] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0089] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈