CN111709745A - 一种基于sgx的区块链交易安全保护***及其方法 - Google Patents
一种基于sgx的区块链交易安全保护***及其方法 Download PDFInfo
- Publication number
- CN111709745A CN111709745A CN202010518467.0A CN202010518467A CN111709745A CN 111709745 A CN111709745 A CN 111709745A CN 202010518467 A CN202010518467 A CN 202010518467A CN 111709745 A CN111709745 A CN 111709745A
- Authority
- CN
- China
- Prior art keywords
- transaction
- blockchain
- request
- data
- security
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3823—Payment protocols; Details thereof insuring higher security of transaction combining multiple encryption tools for a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种基于SGX的区块链交易安全保护***及其方法。该***包括用户侧基于区块链钱包应用的轻量型客户端***和区块链上基于全节点的服务端***。轻量型客户端与全节点服务端建立可信加密渠道,轻量型客户端通过该可信加密渠道向全节点发送加密的用户请求,包括交易验证、交易构造等。全节点在SGX安全区内解密并处理用户请求,通过茫然随机访问来进行交易数据的本地存取,从而满足请求处理需求。本发明的方法为区块链轻量型客户端的交易验证和发起交易过程提供了隐私安全保护,有效防止用户隐私被攻击者窃取。
Description
技术领域
本发明涉及信息技术安全领域,特别涉及一种基于SGX的区块链交易安全保护***及其方法。
背景技术
目前,中心化的网络服务***提供了便捷的交易、支付、沟通渠道,但在用户使用服务的过程中,服务的提供者和网络的提供者都能收集用户的使用记录和痕迹,使得用户的隐私安全容易受到威胁。随着比特币的兴起和应用,作为比特币底层架构的区块链技术提供了去中心化的交易方式,近年来引起广泛关注。
区块链本质是一个去中心化的分布式账本,具有数据不可篡改、***集体维护、交易公开透明等优势。然而,区块链***的设计要求每个区块链网络的参与者必须维护整个区块链数据,这就使得智能手机等移动设备难以直接接入区块链网络。为此,比特币提供了SPV(Simple Payment Verification)模式,允许用户运行轻量型客户端,只需要保存区块链的极少部分信息,在全节点的帮助下完成交易的验证。这虽然可以使移动端用户使用区块链服务,但是也让***在全节点处产生了中心化,具有和传统的中心化服务同样的隐私威胁性。为了改善这种情况,比特币在后续的改进方案中提出了Bloom过滤器,但现有的研究证明其存在较高的被攻击的风险。因此,区块链的交易隐私安全亟需进一步的安全保护。
英特尔公司于2013年提出了SGX(Software Guard Extensions)安全保护机制,它是一套基于硬件的扩展指令和安全保护机制,允许应用程序在设计时分割可信部分和不可信部分,为可信部分的代码和数据创建可信的加密内存区域,从而保证运行过程中代码的完整性和数据的一致性,这个加密的内存区域被称为安全区(enclave)。安全区中的数据只能被安全区中的代码访问,并且任何同一平台上的恶意软件、特权软件甚至是操作***本身都无法对安全区进行访问,从而确保安全区内部的数据不会被泄露或者恶意篡改。
ORAM(Oblivious Random Access Machine,茫然随机访问机)是一种隐藏IO操作的数据访问模式的加密方案,通过一次性读入多个数据来隐藏真正想要获得的数据内容,即使两次请求访问了相同的内容,两次请求读入的数据也不相一致。这使得第三方无法通过数据访问模式来推断出用户隐私。
发明内容
针对现有技术的不足,本发明提供一种基于SGX的区块链交易安全保护***及其方法。通过引入SGX的硬件保护机制,构建受保护的区块链安全交易环境。同时,本***不需要特定区块链架构等条件,只需要提供SGX支持的运行环境,即可与其他安全防护措施同时使用,保护区块链的交易安全。
本发明提供如下所述的解决方案:
一种基于SGX的区块链交易安全保护***,包括:
区块链客户端,获取用户指定的地址,根据需求构造交易请求,并将交易请求通过可信加密渠道发送给区块链全节点;通过可信加密渠道接收区块链全节点的返回结果;
区块链全节点,包括位于安全区内的SGX加密模块、安全存取模块、交易验证模块、交易构造模块和位于***磁盘上的本地安全存储;
所述SGX加密模块,提供验证信息和SGX访问密钥;
所述安全存取模块,将区块链上交易数据读取后整理归类,在本地安全存储中加密存储区块链上的交易数据;
所述交易验证模块,对区块链客户端的交易验证请求执行操作,通过SGX访问密钥进入安全区内调用交易获取函数,在安全区内打包交易数据并且返回到安全区外,最终发回区块链客户端;
所述交易构造模块,对区块链客户端发来的构造交易请求执行操作,通过所述SGX访问密钥进入安全区内调用交易构造函数,在安全区填充交易信息并返回到安全区外,最终向区块链网络广播该交易并向区块链客户端发回成功信息。
在本发明的一个优选实施案例中,所述的区块链客户端包括:
所述钱包应用模块,保存用户的交易地址,并向用户展示当前各个交易地址的货币持有情况和交易结果信息;
请求构造模块,构建满足用户需求和安全性要求的请求包,通过可信加密渠道发送给区块链全节点;通过可信加密渠道接收来区块链全节点的响应包,解包获取请求的交易地址或交易结果信息,返回给钱包应用模块。
本发明还公开了一种基于SGX的区块链交易安全保护方法,其包括如下步骤:
1)区块链客户端获取用户指定的地址,根据需求构造用户请求,并将请求通过可信加密渠道以请求包形式发送给区块链全节点;
2)区块链全节点接收通过可信加密渠道发来的用户请求,根据请求类型由交易验证模块或交易构造模块进行处理;
交易验证模块对区块链客户端的交易验证请求执行操作,通过SGX访问密钥进入安全区内调用交易获取函数,根据请求包内地址列表,通过安全存取模块从本地安全存储中读取交易数据,在安全区内打包交易数据为响应包并最终发回区块链客户端;
交易构造模块对区块链客户端发来的构造交易请求执行操作,通过所述SGX访问密钥进入安全区内调用交易构造函数,根据请求包内地址列表,通过安全存取模块从本地安全存储中读取交易数据,检查交易历史是否满足此次请求,当不满足时向区块链客户端返回包含失败信息的响应包;当满足时,根据用户请求构造交易,最终向区块链网络广播该交易并向区块链客户端发回包含成功信息的响应包。
在本发明的一个优选实施方案中,所述的请求包大小为固定阈值,根据请求信息所占的空间与设定的阈值相比,若空间仍有剩余则填充剩余空间,若空间不足则将多出部分重新打包进新的请求包,并且标记上一个请求包不为最后一个请求包,若空间仍不足,则重复此操作直至地址信息全部被打包进请求包。
在本发明的一个优选实施方案中,所述的区块链客户端随机生成额外的请求包并在随机时间点向区块链全节点进行发送。
在本发明的一个优选实施方案中,所述的区块链客户端在初次运行时,与区块链全节点上的安全区通过建立可信加密渠道;在每次运行时对该渠道进行测试通信。
在本发明的一个优选实施方案中,所述的区块链全节点在处理交易验证请求包前还包括如下步骤:
a)初始化安全区
***在启动后,为安全区分配内存空间,上载程序运行所需代码和数据,生成验证信息和访问密钥,通过SGX提供的远程认证服务与区块链客户端建立可信通信渠道;
b)初始化交易数据
区块链全节点与区块链网络同步,下载整条区块链数据;当同步完成后,区块链全节点将扫描整条区块链数据,通过安全区内的安全存取模块在本地安全存储空间上存储数据。
在本发明的一个优选实施方案中,安全存取模块使用安全区内随机生成的密钥以数据块的形式加密和存储交易数据,确保该交易数据只能由该安全区读取,且外部***无法得知安全区读取了哪一部分交易数据。
在本发明的一个优选实施方案中,交易信息以数据块为单位加密存储,每个数据块拥有固定相同的大小,每个数据块包含以下信息:区块链地址、与该地址相关的交易数据;所有数据块以二叉树形式存储,每个二叉树节点上都有相同数量的数据块,每个数据块以区块链地址为索引,在位置图中指明对应数据块存在于何条二叉树路径上。
在本发明的一个优选实施方案中,所述的响应包为大小为固定阈值,根据交易信息所占的空间与设定的阈值相比,若空间仍有剩余则填充剩余空间,若空间不足则将多出部分重新打包进新的响应包,并且标记上一个响应包不为最后一个响应包,若空间仍不足,则重复此操作直至交易信息全部被打包进响应包。
与现有技术相比,本发明拥有以下优势:
(1)本发明的基于SGX的区块链上交易安全保护***兼具安全性、可用性和通用性,能有效抵御恶意软件在多个环节对用户数据的嗅探和破解,有效保护用户的交易隐私;
(2)客户端的操作分为两个部分,对于客户端的钱包应用部分,可使用现有的各类软硬件钱包代替,***兼容性好;
(3)对于用户的地址、交易等隐私信息,只能在全节点的安全区内进行,外部程序无法得知用户信息以及对应的操作,这些信息不会以明文的形式存在于任何不可信的内存或磁盘空间中,从而能够抵御泄露攻击;
(4)本发明统一了不同操作的交互数据包大小、不同操作对于外部数据的访问过程,使得特权软件和操作***无法从数据访问模式来推断用户信息,客户端侧通过随机时间点发送无效请求来避免第三方通过请求时间来推断用户信息,这能有效降低用户信息间接泄露的可能性,切实保护用户隐私。
附图说明
图1为基于SGX的区块链交易安全保护***结构和工作流程示意图;
图2为区块链客户端初始化和发起交易的流程示意图;
图3为区块链全节点初始化的流程示意图;
图4为全节点安全区处理用户发起的请求的流程示意图;
图5为安全存取模块进行数据存取时的数据结构和流程示意图。
具体实施方式
下面结合附图和实施例对本发明进行进一步详细描述。必须声明,描述中的数据包格式等规范信息只需要在同一***内统一,在***的不同具体实现时可进行调整,所给出图示和文字描述仅起范例作用,所有基于此的修改应当全部视为在本发明范围内。
本实施例的基于SGX的区块链交易安全保护***,包括区块链客户端和区块链全节点两部分。
(1)用户侧基于区块链钱包应用的客户端***(区块链客户端),包括:
钱包应用模块,保存用户的交易地址等基本信息,并且向用户展示当前各个交易地址的货币持有情况等高级信息。本发明不对该模块的具体实现作假设,任何能实现所述功能的钱包应用都可以作为该模块的替代品;
请求构造模块,基于用户的需求和对应操作,构建满足用户需求和安全性要求的请求包,并且发送给区块链全节点。
(2)区块链上基于全节点的服务端***(区块链全节点),包括:
SGX加密模块,基于SGX安全防护技术提供的扩展指令生成可信执行空间,对外提供验证信息和通信访问密钥;上述可信执行空间为安全区运行所需的加密内存空间,用于存储用户请求信息以及用户请求处理函数。可信执行空间可以认为是“安全区”的一部分,SGX安全区的数据存放在可信执行空间中,执行过程在可信执行空间中完成。
安全存取模块,位于SGX安全区内,将区块链上交易数据读取后整理归类,在服务端的本地存储空间中开辟一块区域,通过ORAM算法加密存储区块链上的交易数据,这些交易数据能且仅能由创立它的安全区进行读取和修改;
本地安全存储,存储上述安全存取模块的交易数据;
交易验证模块,对客户端发来的交易验证请求执行操作,通过所述SGX访问密钥进入安全区内调用交易获取函数,在安全区内打包交易数据并且返回到安全区外,最终发回客户端,实现用户对交易的验证请求;
交易构造模块,对客户端发来的构造交易请求执行操作,通过所述SGX访问密钥进入安全区内调用交易构造函数,在安全区填充交易信息并返回到安全区外,最终向区块链网络广播该交易。
上述各模块中,SGX加密模块、安全存取模块、交易验证模块、交易构造模块位于SGX安全区内,SGX安全区外的不可信空间中存在中转程序用于调用各模块,本地安全存储位于***磁盘上。上述可信执行空间的验证信息由SGX安全区内的执行代码等对外公开的数据通过给定的方式生成,外部用户可以通过验证信息确保SGX安全区内代码正确执行。
整个***的流程控制如图1所示,后续将对这两部分进行分别阐述。在整个***部署之前,***的所有者需要根据对应的区块链网络环境设置如下两个参数:
(1)请求包规格阈值。***根据区块链网络上每个交易涉及的地址数量的平均值来确定请求包规格阈值,所有来自客户端的请求包都固定为该阈值大小;
(2)响应包规格阈值。***根据区块链网络上每个地址关联的交易数量的平均值来确定响应包规格阈值,所有来自全节点的响应包都固定为该阈值大小。
区块链客户端分为两个模块:钱包应用模块、请求构造模块,其流程控制如图2所示,具体如下:
(1)客户端初始化;
当区块链客户端初次运行时,与区块链全节点上安全区通过约定的安全模式建立可信加密渠道,并且在每次运行时对该渠道进行测试通信。如果该加密渠道建立失败或者测试通信时存在问题,则告知用户无法使用该区块链客户端,指示用户进行检查网络连接情况或者咨询服务提供商等操作;
(2)客户端启动;
若区块链客户端的钱包应用模块上存在身份认证机制,则需要用户通过该身份认证以解锁对应的地址,否则该区块链客户端上的地址均可视为已被解锁。区块链客户端需要获取用户所持有的地址对应的货币数量,在启动时、定期自动或者用户手动选择时将所有已经解锁的地址发送至请求构造模块;
(3)请求构造模块获得地址时,根据***指定的请求包格式来对地址进行打包;
基于地址等信息所占的空间与前述设定的请求包阈值相比,若空间仍有剩余则以零位填充等空间填充方式填充剩余空间,若空间不足则将多出部分重新打包进新的请求包,并且标记上一个请求包不为最后一个请求包,若空间仍不足,则重复此操作直至地址信息全部被打包进请求包;
(4)请求包构造完成后,区块链客户端将请求包通过前述加密渠道发送至区块链全节点的安全区,等待区块链全节点的响应;
(5)区块链客户端通过前述加密渠道收到来自区块链全节点的响应包。区块链客户端按照约定的格式对响应包进行解包,获取请求的交易地址或交易结果信息,返回给钱包应用模块;
(6)钱包应用模块根据获得的信息,经过处理后反馈给使用区块链客户端的用户。
区块链全节点的初始化过程涉及***环境检测、安全区初始化、区块链数据初始化,其流程控制如图3所示,具体如下:
(1)***环境检测;
首先检查***运行环境是否符合需求,例如SGX硬件支持是否正常运行等。如果不满足此类需求,则运行可附加的修复程序或者通知管理人员修复,并且向***运行方和使用方告知该***安全性目前无法保证。理论上不推荐用户在此时使用该***,但是本***的安全保护不影响程序功能的正常运行,因而不限制该行为;
(2)安全区初始化;
环境确认完成后,将按照如下所述过程进行安全区初始化:
(2-1)测量安全区内预定运行的代码和数据预计占用空间,根据安全区内预定运行的代码数据、SGX硬件信息、当前时间等交叉生成验证信息和访问密钥;
(2-2)为安全区分配对应内存空间,上载运行所需代码和数据,之后删除安全区外部内存中的相应数据,保证这部分数据只存在于安全区内;
(2-3)通过SGX提供的远程认证服务来与客户端建立可信加密渠道。
(3)全节点区块链功能初始化;
本***执行对应区块链***的全节点功能部署脚本,同步整条区块链数据,整理并生成最新状态的未使用交易输出(UTXO)数据库,用于快速检查交易信息。
(4)安全区数据初始化;
在步骤(3)完成后,***将调用安全区内的安全存取模块中的函数,使用ORAM算法将步骤(3)中生成的UTXO数据库转化成加密的数据库,后续产生的新的交易将通过同样的方式存放到加密数据库中(加密数据库位于本地安全存储中)。
(5)经过以上步骤,***完成了初步初始化,可以接收来自客户端的信息并处理。
区块链全节点分为SGX加密模块、安全存取模块、本地安全存储、交易验证模块、交易构造模块,处理交易时,其流程控制如图4所示,具体如下:
(1)通过可信加密渠道接收区块链客户端发来的交易请求;
区块链客户端的请求需携带安全区的访问密钥,当该访问密钥验证通过时,才可对交易请求后续处理,否则将其视为无效数据或返回失败信息。
(2)根据用户的请求包中的标识位确定用户的请求类型;
通常情况下,请求分为交易验证请求和交易构造请求,分别交由交易验证模块和交易构造模块处理。基于区块链***的构造不同,可能会划分出其他类型的请求,可以通过增加标识位的方式来扩展需求类型,并且交由新的模块处理,这些模块需要位于SGX安全区内,通过安全存取模块向持久化存储设备读取和写出数据,并且仅将处理结果返回。后续内容将仅描述交易验证过程和交易构造过程。
(3)交易验证处理:该部分使用SGX加密模块、交易验证模块和安全存取模块,同时涉及本地安全存储,共同完成交易的验证。交易验证模块的作用是接收来自用户的交易验证请求,对地址对应的交易进行验证操作,并将对应的交易发送回区块链客户端,该过程通过调用SGX加密模块,在本地安全存取模块的协助下完成交易的读取和验证,完成用户的请求。如果该过程中发生异常,则通知用户存在的问题。
具体包括以下步骤:
(3-1)对发来的请求包,检查该请求包是否为此次请求的最后一个请求包。每个请求包都包含一个特殊的标志位,其一值表明该请求包为此次请求的最后一个请求包,另一值表明该请求未完整,存在下一个请求包。当一次请求中全部请求包被收集时,开始进行处理操作;
(3-2)根据请求包内地址列表,通过安全存取模块取得每个地址对应的经过加密的交易列表,将数据读入安全区进行解密;
(3-3)将交易打包成响应包。基于交易等信息所占的空间与前述设定的响应包阈值相比,若空间仍有剩余则以零位填充等空间填充方式填充剩余空间,若空间不足则将多出部分重新打包进新的响应包,并且标记上一个响应包不为最后一个响应包,若空间仍不足,则重复此操作直至交易信息全部被打包进响应包。
(3-4)通过前述可信加密渠道将响应包发送至区块链客户端。
(4)交易构造处理:该部分使用SGX加密模块、交易构造模块和安全存取模块,同时涉及本地安全存储,共同完成交易的构造和发布。交易构造模块的作用是接收来自用户的交易构造请求,执行交易的构造和发布功能,该过程通过调用SGX加密模块,在安全存取模块的协助下完成交易的构造和发布,完成用户的请求。如果该过程中发生异常,则通知用户存在的问题。
具体包括以下步骤:
(4-1)对发来的请求包,检查该请求包是否为此次请求的最后一个请求包。每个请求包都包含一个特殊的标志位,其一值表明该请求包为此次请求的最后一个请求包,另一值表明该请求未完整,存在下一个请求包。当一次请求中全部请求包被收集时,开始进行处理操作;
(4-2)根据请求包内地址列表,通过加密存取模块取得每个地址对应的经过加密的交易列表,将数据读入安全区进行解密;
(4-3)根据获取的交易列表,检查用户提供的地址对应的未使用交易输出(货币)是否满足此次交易需求。如果满足,则根据用户的信息,使用此交易列表构造符合用户请求的交易,将交易内容广播到区块链网络上,并生成成功处理的结果;如果不满足,则根据原因生成处理失败的结果;
(4-4)将结果打包成响应包。基于处理结果所占的空间与前述设定的响应包阈值相比,若空间仍有剩余则以零位填充等空间填充方式填充剩余空间,若空间不足则将多出部分重新打包进新的响应包,并且标记上一个响应包不为最后一个响应包,若空间仍不足,则重复此操作直至所有信息全部被打包进响应包。
(4-5)通过前述可信加密渠道发送至客户端。
上述过程中,涉及安全存取模块和本地安全存储。本地安全存储使用Path ORAM算法的思想进行加密,但不排除其他ORAM算法或者其他提供相同安全性的加密算法,其构造如图5所示,包括位置图,加密数据块和临时存储数组。其具体过程如下:
(1)数据存储方式:交易信息以数据块为单位加密存储,每个数据块拥有固定相同的大小。每个数据块包含以下信息:区块链地址、与该地址相关的交易数据(包括交易输出和交易输入)。所有数据块以二叉树形式存储,每个二叉树节点上都有相同数量的数据块,若数量不足以填满节点则需以空块填充至满,该二叉树的叶子节点按0,1,2,3……n-1(n为二叉树叶子节点数量)顺序标号。每个数据块以区块链地址为索引,在位置图中指明对应数据块存在于何条二叉树路径上,例如,区块链地址为x的数据块在位置图中对应标号i(i∈(0,n-1)),表明区块链地址为x的数据块在二叉树根节点至标号i叶子节点的路径上。
(2)数据存取过程:若需进行本地数据处理,例如读取交易数据、新增交易数据等时,安全区执行如下操作:
(2-1)若当前内存中没有加载位置图信息,则从本地存储恢复加密的位置图信息,使用预定的密钥对其进行解密。该密钥由安全区通过硬件和代码数据本地交叉随机生成,难以被外界获取;
(2-2)对请求涉及的区块链地址x,检查安全区内部临时数组中是否存在对应数据块y。若存在,则直接根据数据处理需求处理数据(例如读取、修改、新增操作),并生成随机数i(i∈(0,n-1),n为二叉树叶子节点数量);若不存在,则检查位置图中对应的叶子节点标号,获得叶子节点标号i;
(2-3)将二叉树根节点至标号i叶子节点的路径上各节点包含的数据块全部读入安全区,使用预定的密钥对其进行解密。若尚未获得所需数据块y,则在安全区内通过区块链地址x获取对应数据块y,根据数据处理需求处理数据,若已获得数据则不进行操作;
(2-4)为区块链地址x对应的数据块y分配随机的新标号k,将其写入位置图;
(2-5)随机遍历内部临时数组中的所有数据块,将其尽可能写回上述读入的路径,并且写回位置必须满足该数据块在位置图上对应的标号;
(2-6)完成数据的存取过程,按设计要求返回相应数据。
本发明的***在运行过程中,能在如下阶段保证交易的安全性:
(1)区块链客户端向区块链全节点发送安全的请求;
(2)区块链全节点在安全区内处理区块链客户端的请求,返回请求的交易数据或者在区块链上广播交易;
所述步骤(1)中通过以下步骤确保区块链客户端发送请求的安全性:
(1-1)用户选定希望使用的地址;
用户将在区块链客户端中选择希望使用的一个或多个地址,这些地址由上述的钱包应用模块提供。可使用任何安全的钱包应用模块来确保这些地址存储和读取的安全,对此不设限制。
(1-2)区块链客户端将地址等信息打包成安全的请求包;
获取用户指定的地址后,区块链客户端将这些地址打包进请求包内,如果是发起交易的请求,则附加交易相关的信息,例如交易对象的地址、交易的数额等,请求包中存在额外标识位来表明该请求包的请求类型。进一步地,为了防止请求包大小和发送时间等方面透露用户信息,请求包需要满足以下条件以确保安全性:
(1-2a)请求包大小为固定值,以防止基于请求包大小的信息泄露。基于区块链网络的交易情况统计,确定能够满足绝大部分交易需求的地址容量,以此设定请求包大小阈值。若所选定的地址打包后小于设定的阈值,则填充至该阈值;
(1-2b)若用户选定的地址数量超过请求包所能容纳的地址数量,则对其进行分割。请求包中存在额外标识位,用于表明该请求包是否为用户一次请求中的最后一个包,以此来进行数据的分割;
(1-2c)随机生成额外的请求包并在随机时间点发送,以防止基于请求发起时间的信息泄露。若用户只在交易出现在区块链网络上时发起验证请求,则用户的地址就能被锁定于请求时间前后产生的交易所用地址中,容易被攻击者猜中。为了防止此类攻击,客户端会在随机时间点生成并发送额外的请求包。
(1-3)通过可信加密渠道发送给全节点。
区块链客户端将与区块链全节点上的安全区建立可信加密渠道,以此来传输数据并防止该数据直接被第三者获取。以安全套接层(SSL)或传输层安全协议(TLS)为基础建立可信加密渠道为优先,但是不排除使用其他加密技术进行通信的方法。
所述步骤(2)中通过以下步骤确保区块链全节点处理交易验证请求的安全性:
(2-1)***自检;
***启动时,需要检查***运行环境是否符合需求,例如SGX硬件支持是否正常运行等。如果不满足此类需求,则运行可附加的修复程序或者通知管理人员修复,并且向***运行方和使用方告知该***安全性目前无法保证。理论上不推荐用户在此时使用该***,但是本***的安全保护不影响程序功能的正常运行,因而不限制该行为。
(2-2)初始化安全区;
在***启动后,需要为安全区分配内存空间,上载程序运行所需代码和数据,生成验证信息和访问密钥,通过SGX提供的远程认证服务来与区块链客户端建立可信通信渠道。
(2-3)初始化交易数据;
区块链全节点需要与区块链网络同步,下载整条区块链数据。当同步完成后,***将扫描整条区块链数据,通过安全区内的加密存取模块在本地磁盘上存储该安全区专用的未使用交易输出(UTXO)数据库,该数据库使用安全区内随机生成的密钥以数据块的形式加密,并且按照Path ORAM算法加密存储,从而确保该数据库只能由该安全区读取,并且外部***无法得知安全区读取了哪一部分数据。数据按照“地址-交易列表”进行存储,当某个地址对应的交易数量大于数据块容纳的交易数量时,会对其进行标记并且分割数据块。
(2-4)从可信加密渠道获取用户请求包;
(2-5)在SGX安全区内处理用户请求。***将根据用户请求包的额外标识位确定请求包类型,根据请求包类型来决定对用户请求的处理过程;
(2-6)将处理结果进行返回。将生成的响应包通过之前建立的可信加密渠道发送给客户端。如果是发起交易的请求,则额外需要将生成的交易广播到区块链网络上。
Claims (10)
1.一种基于SGX的区块链交易安全保护***,其特征在于包括:
区块链客户端,获取用户指定的地址,根据需求构造交易请求,并将交易请求通过可信加密渠道发送给区块链全节点;通过可信加密渠道接收区块链全节点的返回结果;
区块链全节点,包括位于安全区内的SGX加密模块、安全存取模块、交易验证模块、交易构造模块和位于安全区外***磁盘上的本地安全存储;
所述SGX加密模块,提供验证信息和SGX访问密钥;
所述安全存取模块,将区块链上交易数据读取后整理归类,在本地安全存储中加密存储区块链上的交易数据;
所述交易验证模块,对区块链客户端的交易验证请求执行操作,通过SGX访问密钥进入安全区内调用交易获取函数,在安全区内打包交易数据并且返回到安全区外,最终发回区块链客户端;
所述交易构造模块,对区块链客户端发来的构造交易请求执行操作,通过所述SGX访问密钥进入安全区内调用交易构造函数,在安全区填充交易信息并返回到安全区外,最终向区块链网络广播该交易并向区块链客户端发回成功信息。
2.根据权利要求1所述的基于SGX的区块链交易安全保护***,其特征在于所述的区块链客户端包括:
所述钱包应用模块,保存用户的交易地址,并向用户展示当前各个交易地址的货币持有情况和交易结果信息;
请求构造模块,构建满足用户需求和安全性要求的请求包,通过可信加密渠道发送给区块链全节点;通过可信加密渠道接收来区块链全节点的响应包,解包获取请求的交易地址或交易结果信息,返回给钱包应用模块。
3.一种基于SGX的区块链交易安全保护方法,其特征在于:
1)区块链客户端获取用户指定的地址,根据需求构造用户请求,并将请求通过可信加密渠道以请求包形式发送给区块链全节点;
2)区块链全节点接收通过可信加密渠道发来的用户请求,根据请求类型由交易验证模块或交易构造模块进行处理;
交易验证模块对区块链客户端的交易验证请求执行操作,通过SGX访问密钥进入安全区内调用交易获取函数,根据请求包内地址列表,通过安全存取模块从本地安全存储中读取交易数据,在安全区内打包交易数据为响应包并最终发回区块链客户端;
交易构造模块对区块链客户端发来的构造交易请求执行操作,通过所述SGX访问密钥进入安全区内调用交易构造函数,根据请求包内地址列表,通过安全存取模块从本地安全存储中读取交易数据,检查交易历史是否满足此次请求,当不满足时向区块链客户端返回包含失败信息的响应包;当满足时,根据用户请求构造交易,最终向区块链网络广播该交易并向区块链客户端发回包含成功信息的响应包。
4.根据权利要求3所述的区块链交易安全保护方法,其特征在于所述的请求包大小为固定阈值,根据请求信息所占的空间与设定的阈值相比,若空间仍有剩余则填充剩余空间,若空间不足则将多出部分重新打包进新的请求包,并且标记上一个请求包不为最后一个请求包,若空间仍不足,则重复此操作直至地址信息全部被打包进请求包。
5.根据权利要求3所述的区块链交易安全保护方法,其特征在于,所述的区块链客户端随机生成额外的请求包并在随机时间点向区块链全节点进行发送。
6.根据权利要求3所述的区块链交易安全保护方法,其特征在于,所述的区块链客户端在初次运行时,与区块链全节点上的安全区通过建立可信加密渠道;在每次运行时对该渠道进行测试通信。
7.根据权利要求3所述的区块链交易安全保护方法,其特征在于,所述的区块链全节点在处理交易验证请求包前还包括如下步骤:
a)初始化安全区
***在启动后,为安全区分配内存空间,上载程序运行所需代码和数据,生成验证信息和访问密钥,通过SGX提供的远程认证服务与区块链客户端建立可信通信渠道;
b)初始化交易数据
区块链全节点与区块链网络同步,下载整条区块链数据;当同步完成后,区块链全节点将扫描整条区块链数据,通过安全区内的安全存取模块在本地安全存储空间上存储数据。
8.根据权利要求3所述的区块链交易安全保护方法,其特征在于,安全存取模块使用安全区内随机生成的密钥以数据块的形式加密和存储交易数据,确保该交易数据只能由该安全区读取,且外部***无法得知安全区读取了哪一部分交易数据。
9.根据权利要求8所述的区块链交易安全保护方法,其特征在于,交易信息以数据块为单位加密存储,每个数据块拥有固定相同的大小,每个数据块包含以下信息:区块链地址、与该地址相关的交易数据;所有数据块以二叉树形式存储,每个二叉树节点上都有相同数量的数据块,每个数据块以区块链地址为索引,在位置图中指明对应数据块存在于何条二叉树路径上。
10.根据权利要求3所述的区块链交易安全保护方法,其特征在于,所述的响应包为大小为固定阈值,根据交易信息所占的空间与设定的阈值相比,若空间仍有剩余则填充剩余空间,若空间不足则将多出部分重新打包进新的响应包,并且标记上一个响应包不为最后一个响应包,若空间仍不足,则重复此操作直至交易信息全部被打包进响应包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010518467.0A CN111709745A (zh) | 2020-06-09 | 2020-06-09 | 一种基于sgx的区块链交易安全保护***及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010518467.0A CN111709745A (zh) | 2020-06-09 | 2020-06-09 | 一种基于sgx的区块链交易安全保护***及其方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111709745A true CN111709745A (zh) | 2020-09-25 |
Family
ID=72539688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010518467.0A Pending CN111709745A (zh) | 2020-06-09 | 2020-06-09 | 一种基于sgx的区块链交易安全保护***及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111709745A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182615A (zh) * | 2020-09-29 | 2021-01-05 | 北京电子科技学院 | 一种基于sgx与oram技术的云计算密钥保护*** |
CN112333158A (zh) * | 2020-10-20 | 2021-02-05 | 杭州云象网络技术有限公司 | 一种基于区块链一体机的隐私保护方法及*** |
CN112560104A (zh) * | 2021-01-17 | 2021-03-26 | 梁志彬 | 一种基于云计算和区块链的数据存储方法及安全信息平台 |
CN112685776A (zh) * | 2020-12-30 | 2021-04-20 | 杭州亿房达科技有限公司 | 一种基于区块链及隐私安全计算的隐私数据可信验证方法 |
CN113055376A (zh) * | 2021-03-10 | 2021-06-29 | 电子科技大学 | 一种区块链数据保护*** |
CN113128988A (zh) * | 2021-03-04 | 2021-07-16 | 西安电子科技大学 | 一种自适应、可组合链上隐私保护交易***及方法 |
CN114465815A (zh) * | 2022-03-15 | 2022-05-10 | 浙江大学 | 一种基于区块链和sgx的访问权限控制***及方法 |
CN117708878A (zh) * | 2023-12-08 | 2024-03-15 | 中科科界(北京)科技有限公司 | 基于oram带隐私保护功能的版权信息可信检索方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107919954A (zh) * | 2017-10-20 | 2018-04-17 | 浙江大学 | 一种基于sgx的区块链用户密钥保护方法和装置 |
US20190095879A1 (en) * | 2017-09-26 | 2019-03-28 | Cornell University | Blockchain payment channels with trusted execution environments |
US20190180047A1 (en) * | 2017-12-08 | 2019-06-13 | Nec Europe Ltd. | Method and system of preserving privacy for usage of lightweight blockchain clients |
CN110245489A (zh) * | 2019-05-20 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 基于明文日志的收据存储方法、节点和*** |
WO2019185710A1 (en) * | 2018-03-29 | 2019-10-03 | NEC Laboratories Europe GmbH | Method and system of preserving privacy for usage of lightweight blockchain clients |
CN111160905A (zh) * | 2019-12-17 | 2020-05-15 | 浙江大学 | 一种区块链节点用户请求处理保护方法及装置 |
-
2020
- 2020-06-09 CN CN202010518467.0A patent/CN111709745A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190095879A1 (en) * | 2017-09-26 | 2019-03-28 | Cornell University | Blockchain payment channels with trusted execution environments |
CN107919954A (zh) * | 2017-10-20 | 2018-04-17 | 浙江大学 | 一种基于sgx的区块链用户密钥保护方法和装置 |
US20190180047A1 (en) * | 2017-12-08 | 2019-06-13 | Nec Europe Ltd. | Method and system of preserving privacy for usage of lightweight blockchain clients |
WO2019185710A1 (en) * | 2018-03-29 | 2019-10-03 | NEC Laboratories Europe GmbH | Method and system of preserving privacy for usage of lightweight blockchain clients |
CN110245489A (zh) * | 2019-05-20 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 基于明文日志的收据存储方法、节点和*** |
CN111160905A (zh) * | 2019-12-17 | 2020-05-15 | 浙江大学 | 一种区块链节点用户请求处理保护方法及装置 |
Non-Patent Citations (1)
Title |
---|
李琪等: "金融电子商务", 高等教育出版社, pages: 115 - 131 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182615A (zh) * | 2020-09-29 | 2021-01-05 | 北京电子科技学院 | 一种基于sgx与oram技术的云计算密钥保护*** |
CN112333158A (zh) * | 2020-10-20 | 2021-02-05 | 杭州云象网络技术有限公司 | 一种基于区块链一体机的隐私保护方法及*** |
CN112685776A (zh) * | 2020-12-30 | 2021-04-20 | 杭州亿房达科技有限公司 | 一种基于区块链及隐私安全计算的隐私数据可信验证方法 |
CN112560104A (zh) * | 2021-01-17 | 2021-03-26 | 梁志彬 | 一种基于云计算和区块链的数据存储方法及安全信息平台 |
CN113128988A (zh) * | 2021-03-04 | 2021-07-16 | 西安电子科技大学 | 一种自适应、可组合链上隐私保护交易***及方法 |
CN113128988B (zh) * | 2021-03-04 | 2023-11-17 | 西安电子科技大学 | 一种自适应、可组合链上隐私保护交易***及方法 |
CN113055376A (zh) * | 2021-03-10 | 2021-06-29 | 电子科技大学 | 一种区块链数据保护*** |
CN114465815A (zh) * | 2022-03-15 | 2022-05-10 | 浙江大学 | 一种基于区块链和sgx的访问权限控制***及方法 |
CN114465815B (zh) * | 2022-03-15 | 2022-11-08 | 浙江大学 | 一种基于区块链和sgx的访问权限控制***及方法 |
CN117708878A (zh) * | 2023-12-08 | 2024-03-15 | 中科科界(北京)科技有限公司 | 基于oram带隐私保护功能的版权信息可信检索方法 |
CN117708878B (zh) * | 2023-12-08 | 2024-05-03 | 中科科界(北京)科技有限公司 | 基于oram带隐私保护功能的版权信息可信检索方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111709745A (zh) | 一种基于sgx的区块链交易安全保护***及其方法 | |
CN101479984B (zh) | 用于身份管理、验证服务器、数据安全和防止中间人攻击的动态分发密钥***和方法 | |
US20100037069A1 (en) | Integrated Cryptographic Security Module for a Network Node | |
US11025415B2 (en) | Cryptographic operation method, method for creating working key, cryptographic service platform, and cryptographic service device | |
CN106452770B (zh) | 一种数据加密方法、解密方法、装置和*** | |
CN112422270B (zh) | 一种基于bc-lhe的车联网数据共享方法及*** | |
CN104520873A (zh) | 用于保护和恢复虚拟机的***和方法 | |
CN105577379A (zh) | 一种信息处理方法及装置 | |
CN102378170A (zh) | 一种鉴权及业务调用方法、装置和*** | |
CN111143247B (zh) | 存储装置数据完整性保护方法及其控制器、片上*** | |
CN108429719A (zh) | 密钥保护方法及装置 | |
CN113391880B (zh) | 一种分层双重哈希验证的可信镜像传输方法 | |
CN114157415A (zh) | 数据处理方法、计算节点、***、计算机设备和存储介质 | |
CN114285551B (zh) | 量子密钥分发方法、装置、可读存储介质及电子设备 | |
CN109246130A (zh) | 数据加密方法、装置、计算机设备及存储介质 | |
CN109254734A (zh) | 一种数据存储方法、装置、设备及计算机可读存储介质 | |
CN105337722A (zh) | 数据加密方法及装置 | |
CN108200014A (zh) | 利用智能密钥装置访问服务器的方法、装置及*** | |
CN110334531A (zh) | 虚拟机密钥的管理方法、主节点、***、存储介质及装置 | |
CN111431957B (zh) | 文件处理方法、装置、设备和*** | |
CN109302442B (zh) | 一种数据存储证明方法及相关设备 | |
CN116455572B (zh) | 数据加密方法、装置及设备 | |
CN109088729A (zh) | 一种密钥存储方法及装置 | |
EP3834361B1 (en) | Method of managing private cryptographic keys | |
US9135449B2 (en) | Apparatus and method for managing USIM data using mobile trusted module |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |