CN110377225B - 一种支持外包数据安全转移与可验证删除的方法 - Google Patents
一种支持外包数据安全转移与可验证删除的方法 Download PDFInfo
- Publication number
- CN110377225B CN110377225B CN201910435689.3A CN201910435689A CN110377225B CN 110377225 B CN110377225 B CN 110377225B CN 201910435689 A CN201910435689 A CN 201910435689A CN 110377225 B CN110377225 B CN 110377225B
- Authority
- CN
- China
- Prior art keywords
- data
- cloud server
- transfer
- data owner
- owner
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2143—Clearing memory, e.g. to prevent the data from being stolen
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于云存储的数据处理技术领域,公开了一种支持外包数据安全转移与可验证删除的方法,首先在将密文外包到云服务器A后,数据所有者检查存储结果并删除文件的本地备份;然后数据所有者为了享受更合适的存储服务或出于客观因素,中途更换云存储服务供应商,并将外包数据从原始云服务器A迁移到目标云服务器B,并检查转移结果;最后当数据转移完成或数据所有者不再需要数据时,要求云服务器删除数据并检查删除结果。通过安全分析证明本发明的新方案可以满足所需的安全需求。最后,仿真实验表明,本发明新方案非常高效和实用。
Description
技术领域
本发明属于云存储的数据处理技术领域,尤其涉及一种支持外包数据安全转移与可验证删除的方法。
背景技术
目前,最接近的现有技术:云计算是一种新兴的非常有前景的基于互联网的计算模式,它通过网络将大规模分布式存储资源、计算资源和网络带宽连接在一起。通过使用这些资源,它可以为租户提供许多高质量的服务。由于吸引人的优势,云服务(尤其是云存储服务)已得到广泛应用。通过使用云存储服务,资源受限的数据所有者能够将其大规模个人文件外包给到云服务器,这可以大大降低数据所有者的本地存储开销。根据全球云指数显示,2019年互联网消费者数量将达到约36亿,其中约55%(约20亿)将使用云存储服务。
由于云存储服务广阔的市场前景,越来越多的公司(如微软,亚马逊,华为,阿里巴巴)纷纷投资云存储服务,它们提供的云存储服务在价格、安全性、访问速度等方面具有明显的差异。为了享受更合适自己的云存储服务,数据所有者可能会中途更换云存储服务供应商。因此,他们需要将外包数据从一个云服务器转移到另一个云服务器,然后从原来的云服务器中删除已经被转移的数据。据思科的调查报告显示,到2021年底,云数据流量预计将占总数据流量的95%,而云服务器间的数据流量将占云数据流量总量的14%。可以预见,不同云服务器之间的数据传转移将成为数据所有者的一项基本需求。
目前针对数据转移与删除已经有较多成果,如通过存储设备(CN201710443366.X)、蓝牙技术(CN201711456678.0)等方法进行转移,但对于云服务器间的数据转移与被转移数据的删除仍缺乏有效的方法。为了实现数据在不同云服务器之间的安全转移,防止被转移数据在迁移过程中泄露隐私信息,一个采用加密算法的外包数据转移应用程序Cloudsfer已经被设计出来,但是该应用程序无法验证被转移数据的完整性,同时无法从原始云服务器上删除被转移的数据。为了安全删除外包数据,Xue提出了一种基于密钥策略属性的加密方案,可以实现外包数据的细粒度访问控制与确定性删除(L.Xue,Y.Yu,Y.Li,et al.,Efficient attribute-based encryption with attributerevocation for assured data deletion,Information Sciences,Vol.479,pp.640-650,2019)。如果云服务器没有诚实地删除外包数据,它将被数据所有者检测到。然而,该方案的数据删除与结果验证过程需要一个可信的第三方协助,但在云环境下无法找到一个完全可信的第三方。为此,Yang提出了一个基于区块链的外包数据删除方案(C.Yang,X.Chen andY.Xiang,Blockchain-based publicly verifiable data deletion scheme for cloudstorage,Journal of Network and Computer Applications,Vol.103,pp.185-193,2018)。数据所有者不需要任何可信第三方即可实现外包数据的安全删除,并高效地验证删除结果。
然而,上述的这些方案仅支持删除操作,没有考虑外包数据在不同云服务器间的转移问题。为了同时实现外包数据的转移与删除,Yu提出一个数据所有性验证方案,该方案还可以实现外包数据在两个不同云服务器间的安全转移(Y.Yu,J.Ni,W.Wu,et al.,Provable data possession supporting secure data transfer for cloud storag,BWCCA 2015,pp.38-42,2015)。然而,他们的方案在数据删除过程中效率很低,因为它们通过重加密被转移的数据而达到删除目的,这个过程需要数据所有者上传许多信息。在该方案基础上,Xue提出了一个可验证的外包数据转移方案,数据所有者可以通过数据所有性验证方案来检查数据完整性,并通过基于编号的Merkle哈希树来实现删除结果的验证性。然而,在转移、删除和验证过程中需要可信第三方的协助,这使方案无法在实际中广泛应用。为此,Yang使用向量承诺来设计一种新的可验证外包数据转移和删除方案(C.Yang,J.Wang,X.Tao,et al.,Publicly verifiable data transfer and deletion scheme forcloud storage,ICICS 2018,pp.445-458,2018)。该方案无需任何第三方即可实现外包数据的可验证转移与删除。然而,验证过程所需的计算量与数据记录数成正比,这降低了方案的效率。
综上所述,现有技术存在的问题是:在云存储中数据的管理权与所有权分离,导致数据所有者不能直接对数据进行任何操作。外包数据在不同云服务器间的转移与删除均由云服务器代为执行。但是,出于自身利益考虑,云服务可能不诚实地执行转移与删除操作,并返回错误的结果欺骗数据所有者。而现有的技术方案不仅验证过程效率低,资源消耗大,还需要一个可信第三方辅助,这限制了其在实际应用中的推广。
解决上述技术问题的难度:在商业模式下,云服务器是自私的。如何不依靠可信第三方实现外包数据转移与删除结果的公开可验证,及时发现云服务器的恶意行为是本发明解决的一个技术难点。此外,在如今信息化高速发展的今天,数据量急速增加,如何不受数据量的影响实现高效的转移与删除结果验证是本发明解决的另一个技术难点。
解决上述技术问题的意义:实现高效的、无需可信第三方辅助的外包数据转移与删除方案,不仅降低了数据所有者端的计算开销和存储资源消耗,还在很大程度上保护了数据所有者的隐私,有效防止隐私泄露。这对于加速云存储服务的普及、云服务器间的数据安全转移有很大的推动作用。
发明内容
针对现有技术存在的问题,本发明提供了一种支持外包数据安全转移与可验证删除的方法。
本发明是这样实现的,一种支持外包数据安全转移与可验证删除的方法,所述支持外包数据安全转移与可验证删除的方法包括:
首先在将密文外包到云服务器A后,数据所有者检查存储结果并删除文件的本地备份;
然后数据所有者为了享受更合适的存储服务或出于客观因素,中途更换云存储服务供应商,并将外包数据从原始云服务器A迁移到目标云服务器B,并检查转移结果;
最后当数据转移完成或数据所有者不再需要数据时,要求云服务器删除数据并检查删除结果。
进一步,所述支持外包数据安全转移与可验证删除的方法具体包括:
步骤一,初始化:分别为数据所有者、云服务器A和云服务器B生成ECDSA公私钥对(PKO,SKO),(PKA,SKA)和(PKB,SKB);数据所有者选择k个安全的单向抗碰撞哈希函数f1,…,fk,它们将[1,n]中的整数映射到CBF中的不同单元格,即fi:[1,n]→[1,m];数据所有者为将被外包到云服务器A的文件选择一个独一无二的标签tagf;
步骤二,数据加密:数据所有者使用安全的加密算法对外包数据进行加密,并将密文数据集发送给云服务器A;
步骤三,数据外包:云服务器A保存数据集并生成相关的存储证据;数据所有者可以检查存储结果并删除文件的本地备份;
步骤四,数据转移:当数据所有者想要更换云存储服务供应商时,他需要将部分数据块,甚至整个文件从原始云服务器A转移到目标云服务器B;
步骤五,转移结果验证:在数据迁移之后,云服务器B检查转移的正确性并将转移结果返回给数据所有者;
步骤六,数据删除:当不再需要数据或数据已被成功转移到云服务器B时,数据所有者可能需要云服务器A删除数据块。
进一步,所述步骤二数据所有者使用安全的加密算法对外包数据进行加密具体包括:
1)首先,数据所有者将需外包的文件划分为n’块;同时,数据所有者在随机的位置插入n-n’个随机的数据块;然后数据所有者将随机位置记录在表PF中,外包文件表示为F=(m1,…,mn);
2)对于每个数据块mi,数据所有者随机选择一个独一无二的整数ai作为mi的索引,并计算数据加密密钥ki=H(tagf||ai||SKO),其中i=1,2,...,n;数据所有者使用密钥ki将数据块mi加密:同时计算哈希值Hi=H(tagf||ai||Ci),其中,Enc是一种IND-CPA安全的对称加密算法;数据所有者将数据集D={(ai,Ci)}i∈{1,n]连同文件标签tagf一起发送给云服务器A。
进一步,所述步骤三云服务器A保存数据集并生成相关的存储证据,数据所有者检查存储结果并删除文件的本地备份具体包括:
1)在接收到D和tagf后,云服务器A保存数据集D,并使用索引(a1,a2,…,an)构建计数型布隆过滤器CBFs;同时,云服务器A保存文件标签tagf作为外包数据集D的索引;云服务器A计算签名并发送存储证据λ=(CBFs,Ts,sigs)给数据所有者,其中Sign是ECDSA签名算法,Ts是时间戳;
2)接收到存储证据λ后,数据所有者验证存储证据的有效性,数据拥有者首先检查签名sigs的有效性;如果sigs是无效的,那么数据所有者退出并输出失败;否则,数据所有者从快索引集(a1,a2,…,an)中随机选择其中的一半来检查CBFs的正确性。如果CBFs不正确,那么数据所有者退出并输出失败;否则,数据所有者删除文件的本地备份。
进一步,所述步骤四当数据所有者想要更换云存储服务供应商时,需要将部分数据块,甚至整个文件从原始云服务器A转移到目标云服务器B具体包括:
1)首先,数据所有者生成块索引集φ,其标识需要转移的数据块;然后数据所有者计算签名其中Tt是时间戳;数据所有者生成转移请求Rt=(transfer,tagf,φ,Tt,sigt),并将其发送给原始云服务器A;同时,数据所有者将哈希值{Hi}i∈φ发送给目标云服务器B;
进一步,所述步骤五在数据迁移之后,目标云服务器B检查转移的正确性并将转移结果返回给数据所有者具体包括:
1)首先,目标云服务器B检查数据转移请求Rt和签名sigta的有效性;如果不是两个都有效,则云服务器B退出并输出失败;否则,云服务器B检查等式Hi=H(tagf||ai||Ci)是否成立,其中i∈φ。如果Hi≠H(tagf||ai||Ci),则云服务器B将会要求云服务器A再次发送数据块(ai,Ci);否则,云服务器B执行2);
3)收到转移证据π后,数据所有者可以检查数据转移结果,数据所有者检查签名sigtb的有效性;同时,数据所有者从块索引集φ中随机选择一半的索引来验证计数布隆过滤器CBFb的正确性;当且仅当所有验证都通过时,数据所有者才相信转移证据是有效的,并且相信云服务器B诚实地存储被转移的数据。
进一步,所述步骤六当不再需要数据或数据已被成功转移到云服务器B时,数据所有者可能需要云服务器A删除数据块具体包括:
1)首先,数据所有者生成块索引集ψ,它将标记需要删除的数据块,如果数据所有者想要删除被转移的数据块,则等式ψ=φ成立;然后数据所有者计算签名其中Td是时间戳;最后,数据所有者生成数据删除请求Rd=(delete,tagf,ψ,Td,sigd)并将其发送给云服务器A;
2)接收到删除请求Rd后,云服务器A检查Rd的有效性;如果Rd是无效的,那么云服务器A退出并输出失败;否则,云服务器A通过重写删除数据块{(ai,Ci)}i∈ψ;同时,云服务器A从CBFs中删除{aq}q∈ψ并获得新的计数型布隆过滤器CBFd;最后,云服务器A计算签名sigda=Sign(delete||Rd||CBFd),并将数据删除证据τ=(sigda,CBFd)返回给数据所有者;
3)接收到数据删除证据τ后,数据所有者检查签名sigda的有效性;如果签名sigda是无效的,那么数据所有者退出并输出失败;否则,数据所有者从块索引集ψ中随机选择一半的索引来检查等式CBF(aq)=0并确定aq是否属于CBFd。如果等式成立,那么数据所有者相信τ是有效的;之后如果数据所有者在云服务器A上发现数据块{(ai,Ci)}i∈ψ,则他有权向云服务器A索赔。
本发明的另一目的在于提供一种应用所述支持外包数据安全转移与可验证删除的方法的云服务器。
综上所述,本发明的优点及积极效果为:不仅可以实现外包数据从原始云服务器到目标云服务器的安全转移,还可以实现被转移数据从原始云服务器上的可验证删除。如果原始云服务器没有按照数据所有者的要求如实地迁移或删除相应的数据,则任何验证者(不仅限于数据所有者和目标云服务器)都可以通过验证返回的相关证据来发现这些恶意操作。此外,通过安全分析证明本发明的新方案可以满足所需的安全需求。最后,仿真实验表明,本发明新方案非常高效和实用。
附图说明
图1是本发明实施例提供的支持外包数据安全转移与可验证删除的方法流程图。
图2是本发明实施例提供的布隆过滤器示意图。
图3是本发明实施例提供的计数型布隆过滤器示意图。
图4是本发明实施例提供的系统方案示意图。
图5是本发明实施例提供的支持外包数据安全转移与可验证删除的方法实现流程图。
图6是本发明实施例提供的数据加密的时间开销示意图。
图7是本发明实施例提供的存储和验证的时间开销示意图。
图8是本发明实施例提供的数据转移的时间开销示意图。
图9是本发明实施例提供的数据删除的时间开销图。
图10是本发明实施例提供的数据删除结果验证的时间开销示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在云存储中,数据所有者可以将他们的大规模数据存储到云服务器上,从而尽可能降低本地的存储成本。云存储由于具有诸多吸引人的优势,在日常生活和工作中得到了广泛的应用。然而,在云存储中数据的管理权与所有权分离,导致数据所有者不能直接对数据进行任何操作。因此,外包数据的转移和删除已经成为两个严峻的安全挑战。为了使外包数据的转移和删除操作更加安全,本发明设计了新的基于计数型布隆过滤器方案,能够实现外包数据从原始云服务器到目标云服务器的可验证转移,并在目标云服务器上验证被转移数据的完整性。此外,如果数据所有者不再需要某些数据块,他可以从云服务器删除这些数据块,并通过验证返回的删除证据来检查删除的结果。最后证明了所提出的方案不仅能满足期望的安全性要求,而且能具有实用性和高效性。
下面结合附图对本发明的应用原理作详细的描述。
如图1所示,本发明实施例提供的支持外包数据安全转移与可验证删除的方法包括以下步骤:
S101:在将密文外包到云服务器A后,数据所有者可以检查存储结果并删除文件的本地备份;
S102:数据所有者为了享受更合适的存储服务或出于一些客观因素,会中途更换云存储服务供应商,并将一些外包数据从原始云服务器A迁移到目标云服务器B,并检查转移结果;
S103:当数据转移完成或数据所有者不再需要数据时,要求云服务器删除数据并检查删除结果。
下面结合附图对本发明的应用原理作进一步的描述。
1.预备知识
布隆过滤器(BF)是一种非常节省空间的数据结构,可用于测试集合是否包含指定元素。与其他数据结构不同,无论有多少个元素,BF插入新元素或验证元素是否属于集合所需的时间开销是恒定的。
一般来说,BF可以看作是一个带有k个独立哈希函数的m比特长的位数组,其中哈希函数可以定义如下:hi(·):[0,1]*→{0,1,2,…,m}。如果要向集合中插入元素,本发明只需要将h1(x),h2(x),…,hk(x)对应位置的值设置为1。为了判断元素x是否属于集合,只需检查hi(x)对应位置的值是否都为1,如果不是,则元素不属于集合。如图2给出了BF的一个例子,本发明可以看到元素x,y和z都属于集合。但是,元素v不属于该集合。注意,BF存在误判率,这意味着即使与元素w对应的位置的值都是1,但该元素可能不属于集合,例如图2中的元素w。这是因为值为1的位置都可能是其他元素作用产生的。误判率与哈希函数k的数量,BF的长度m和元素的数量n有关。
另外,BF不支持从集合中删除元素。为了解决这个缺点,提出了计数型布隆过滤器(CBF)。作为BF的一个变型,CBF使用计数器单元来替换每个“比特”位,如图3所示。为了插入元素y,需要将k个对的计数器的值增加1,计数器的索引也由散列值h1(y),h2(y),…,hk(y)确定。相反,删除操作只需将k个对应的计数器减1。
2.问题陈述
本发明将首先简要介绍系统框架和潜在的安全挑战,然后确定本发明的新方案应该满足的安全目标。
2.1.系统框架
在本发明的新方案中,本发明的目标是实现外包数据在两个不同云服务器之间的安全转移以及可靠删除。因此,本发明的系统结构将包括三个实体,如图4所示。
在本发明的场景事例中,云服务器A和B为数据所有者提供高质量的云存储服务。资源受限的数据所有者将其大规模个人数据外包给云服务器A,从而减少本地的软件/硬件开销和人力资源投资。此外,数据所有者可能需要云服务器A将一些数据块迁移到云服务器B,或者从存储介质中删除一些数据。本发明定义云服务器A为原始云服务器,它需要将一些数据块迁移到目标云服务器B,并删除这些已经被转移的数据块。但是,出于经济原因,云服务器A可能不会如实地执行这些操作。
此外,本发明可以假设云服务器A和云服务器B属于两个不同的公司,它们不会串通欺骗数据所有者。因此,两个云服务器将独立地遵循协议。此外,本发明可以假设目标云服务器B不会恶意诽谤原始云服务器A。
2.2.设计目标
在本发明的新方案中,本发明应实现以下三个设计目标。
1)数据机密性。一般来说,外包文件可能包含一些数据所有者的隐私信息。从数据所有者的角度来看,这些隐私信息应该被严格保密。因此,为了保护数据机密性,数据所有者需要利用安全算法来加密外包文件,然后将其密文上传到云服务器。
2)数据的完整性。云服务器A可能只迁移部分数据到云服务器B以节省网络带宽,或者将一些不相关的数据发送给云服务器B。此外,数据在转移过程中可能被破坏,例如恶意修改和删除。因此,数据所有者和云服务器B都应该能够验证被转移数据的完整性,以确保数据块完好无损。
3)可公开验证性。为了经济利益,云服务器A可能不会将数据诚实地迁移到目标云服务器B,或不会按要求删除数据。因此,从数据所有者的角度来看,需要满足外包数据转移和删除结果的可验证性。
3.提出的方案
本发明将详细描述本发明提出的基于CBF的外包数据可验证转移与删除方案。本发明假设数据所有者已通过身份验证并成为云服务器A和云服务器B的合法租户。
3.1.概述
所提出的新方案的主要过程如图5所示。由于外包文件可能包含一些敏感信息,因此数据所有者必须在上传之前对文件进行加密,以保护数据机密性。在将密文外包到云服务器A后,数据所有者可以检查存储结果并删除文件的本地备份。随后,数据所有者为了享受更合适的存储服务或出于一些客观因素,会中途更换云存储服务供应商,并将一些外包数据从原始云服务器A迁移到目标云服务器B,并检查转移结果。最后,当数据转移完成或数据所有者不再需要数据时,他会要求云服务器删除数据并检查删除结果。
3.2.详细方案
本发明提出的新方案主要包含六个算法,具体如下所述。
步骤1.初始化:本阶段先分别为数据所有者、云服务器A和云服务器B生成ECDSA公私钥对(PKO,SKO),(PKA,SKA)和(PKB,SKB)。然后,数据所有者选择k个安全的单向抗碰撞哈希函数f1,…,fk,它们将[1,n]中的整数映射到CBF中的不同单元格,即fi:[1,n]→[1,m]。此外,数据所有者为将被外包到云服务器A的文件选择一个独一无二的标签tagf。
步骤2.数据加密:为了保护外包数据机密性,数据所有者使用安全的加密算法对外包数据进行加密。
1)首先,数据所有者将需外包的文件划分为n’块。同时,数据所有者在随机的位置插入n-n’个随机的数据块,以保证在数据转移和删除后计数型布隆过滤器不为空。然后数据所有者将这些随机位置记录在表PF中。因此,外包文件可以表示为F=(m1,…,mn)。
2)对于每个数据块mi,数据所有者随机选择一个独一无二的整数ai作为mi的索引,并计算数据加密密钥ki=H(tagf||ai||SKO),其中i=1,2,...,n。然后,数据所有者使用密钥ki将数据块mi加密:同时计算哈希值Hi=H(tagf||ai||Ci),其中,Enc是一种IND-CPA安全的对称加密算法。最后,数据所有者将数据集D={(ai,Ci)}i∈[1,n]连同文件标签tagf一起发送给云服务器A。
步骤3.数据外包:云服务器A保存数据集并生成相关的存储证据。然后,数据所有者可以检查存储结果并删除文件的本地备份。
1)在接收到D和tagf后,云服务器A保存数据集D,并使用索引(a1,a2,…,an)构建计数型布隆过滤器CBFs。同时,云服务器A保存文件标签tagf作为外包数据集D的索引。最后,云服务器A计算签名并发送存储证据λ=(CBFs,Ts,sigs)给数据所有者,其中Sign是ECDSA签名算法,Ts是时间戳。
2)接收到存储证据λ后,数据拥有者可以验证存储证据的有效性。更具体地说,数据拥有者首先检查签名sigs的有效性。如果sigs是无效的,那么数据所有者退出并输出失败;否则,数据所有者从块索引集(a1,a2,…,an)中随机选择其中的一半来检查CBFs的正确性。如果CBFs不正确,那么数据所有者退出并输出失败;否则,数据所有者删除文件的本地备份。
步骤4.数据转移:当数据所有者想要更换云存储服务供应商时,他需要将一些数据块,甚至整个文件从原始云服务器A转移到目标云服务器B。
1)首先,数据所有者生成块索引集φ,其标识需要转移的数据块。然后数据所有者计算签名其中Tt是时间戳。之后,数据所有者生成转移请求Rt=(transfer,tagf,φ,Tt,sigt),并将其发送给原始云服务器A。同时,数据所有者将哈希值{Hi}i∈φ发送给目标云服务器B。
步骤5.转移结果验证:在数据迁移之后,目标云服务器B检查转移的正确性并将转移结果返回给数据所有者。
1)首先,目标云服务器B检查数据转移请求Rt和签名sigta的有效性。如果不是两个都有效,则云服务器B退出并输出失败;否则,云服务器B检查等式Hi=H(tagf||ai||Ci)是否成立,其中i∈φ。如果Hi≠H(tagf||ai||Ci),则云服务器B将会要求云服务器A再次发送数据块(ai,Ci);否则,云服务器B执行第2)步。
3)收到转移证据π后,数据所有者可以检查数据转移结果。具体而言,数据所有者检查签名sigtb的有效性。同时,数据所有者从块索引集φ中随机选择一半的索引来验证计数布隆过滤器CBFb的正确性。当且仅当所有验证都通过时,数据所有者才相信转移证据是有效的,并且相信云服务器B诚实地存储被转移的数据。
步骤6.数据删除:当不再需要数据或数据已被成功转移到云服务器B时,数据所有者可能需要云服务器A删除一些数据块。
1)首先,数据所有者生成块索引集ψ,它将标记需要删除的数据块(注意,如果数据所有者想要删除被转移的数据块,则等式ψ=φ成立)。然后数据所有者计算签名其中Td是时间戳。最后,数据所有者生成数据删除请求Rd=(delete,tagf,ψ,Td,sigd)并将其发送给云服务器A。
2)接收到删除请求Rd后,云服务器A检查Rd的有效性。如果Rd是无效的,那么云服务器A退出并输出失败;否则,云服务器A通过重写删除数据块{(ai,Ci)}i∈ψ。同时,云服务器A从CBFs中删除{aq}q∈ψ并获得新的计数型布隆过滤器CBFd。最后,云服务器A计算签名sigda=Sign(delete||Rd||CBFd),并将数据删除证据τ=(sigda,CBFd)返回给数据所有者。
3)接收到数据删除证据τ后,数据所有者检查签名sigda的有效性。如果签名sigda是无效的,那么数据所有者退出并输出失败;否则,数据所有者从块索引集ψ中随机选择一半的索引来检查等式CBF(aq)=0并确定aq是否属于CBFd。如果等式成立,那么数据所有者相信τ是有效的。此后,如果数据所有者在云服务器A上发现数据块{(ai,Ci)}i∈ψ,则他有权向云服务器A索赔。
备注1.等式CBF(aq)=0成立意味着对于所有的q∈ψ,至少有一个aq使得等式hi(aq)=0成立,那么表示aq不属于计数型布隆过滤器CBFd。
下面结合安全性分析对本发明的应用原理作进一步的描述。
(1)数据机密性:外包数据机密性是指如果没有相应的数据解密密钥,任何攻击者都无法从密文中获得任何明文信息。在上传数据之前,数据所有者使用IND-CPA安全AES算法加密外包文件。此外,数据所有者对数据解密密钥进行保密。也就是说,任何攻击者都无法获得解密密钥进而恶意地获取明文信息。因此,本发明的方案可以保证外包数据的机密性。
(2)数据完整性。数据完整性是指被转移的数据块必须完好无损,否则目标云服务器B拒绝接受数据块。接收到来自云服务器A的数据块(ai,Ci)和来自数据所有者的哈希值Hi后,云服务器B检查等式Hi=H(tagf||ai||Ci),其中i∈φ。注意,哈希值{Hi}i∈φ由数据所有者用安全的单向哈希函数计算所得。因此,云服务器A和其他攻击者不能伪造一个新的数据块(ai,Ci′)使等式Hi=H(tagf||ai||Ci′)成立。也就是说,如果云服务器A只发送部分数据,或者将一些不相关的数据块转移给云服务器B,或者数据块在迁移过程中被攻击者篡改了,那么云服务器B可以检测到这些恶意行为,且不会接受这些数据块。因此,本发明的方案可以保证被转移数据块的完整性。
(3)可公开验证性:下面本发明将分别分析数据转移结果和数据删除结果的可验证性。
拥有数据转移证据π=(sigta,sigtb,CBFb)和数据转移请求Rt的验证者能够验证转移结果。具体而言,验证者首先检查转移请求Rt的有效性。如果Rt是有效的,则说明数据所有者确实请求将数据块迁移到云服务器B。然后验证者进一步验证签名sigta和sigtb的有效性。由于目标云服务器B不会与原始云服务器A串通,以欺骗数据所有者。因此,当且仅当两个签名都有效时,验证者才能相信返回的数据转移结果。另外,验证者可以通过验证返回的计数型布隆过滤器CBFb来检查云服务器B是否诚实地维护被转移的数据。
另外,拥有数据删除证据τ=(sigda,CBFd)和删除请求Rd的验证者可以验证删除结果。首先,验证者检查删除请求Rd的有效性。如果删除请求Rd是无效的,那么说明数据所有者从未要求删除数据块;否则,验证者进一步验证签名sigda的有效性和计数型布隆过滤器CBFd的正确性。当且仅当所有验证都通过时,验证者认为删除证据τ是正确的。因此,如果数据所有者随后在云服务器A上发现数据块{(ai,Ci)}i∈ψ,则有权向云服务器A索赔。
虽然计数型布隆过滤器存在误判率,但本发明可以降低其概率。根据文献分析,误判率是Pf=(1-e-kn/m)k,其中m是计数布隆过滤器的长度,n和k分别代表元素的数量和计数型布隆过滤器包含的哈希函数个数。当k=ln2*(m/n)时,误判率Pf达到最小值,约为(0.6185)m/n。在本发明的方案中,本发明令k=20和m/n=29,因此,误判率Pf约等于2-20,可以忽略不计。
下面结合仿真实验对本发明的应用效果作详细的描述。
本发明通过仿真实验提供方案的性能评估。更具体地说,本发明使用OpenSSL库和PBC库在配备有4G内存和Intel(R)Core(TM)i5-4590处理器笔记本电脑上模拟本发明的方案。另外,本发明假设计数型布隆过滤器包含20个哈希函数,计数型布隆过滤器的大小与数据块的数量的比值是29。此外,本发明省略了一些额外的开销,例如通信和加法。
外包文件往往包含一些应保密的敏感信息,因此,数据所有者必须在外包之前对文件进行加密。主要的计算开销来自数据加密密钥生成、数据块加密和哈希值计算,时间开销如图6所示。从图6中本发明可以发现时间开销将随着加密数据的大小和数据块的数量增加而递增。由于数据加密操作是一次性的,并且可以离线完成。因此,可以说本发明的方案在数据加密阶段是高效的。
将数据集上传到云服务器A后,数据所有者能够验证存储结果。为了生成存储证据,云服务器A需要计算20n个哈希值并生成一个签名。然后,数据所有者执行签名验证操作并计算10n个哈希值以验证存储证据的有效性,效率评估如图7所示。虽然时间开销会随着数据块的数量而增加,但是所耗时间非常小,对数据所有者而言是可以接受的。
为了实现数据安全转移和转移结果验证,数据所有者需要分别执行一个签名生成和签名验证操作,并计算10l个哈希值,其中l是需要转移的数据块的数量。然后,云服务器A和云服务器B需要生成两个签名,还需要验证三个签名并计算21l哈希值以完成数据转移,时间开销如图8所示。虽然时间成本会随着被转移数据块的数量递增而递增,但是大部分的运算是云服务器A和云服务器B完成的。因此,对于数据所有者而言,本发明的方案是高效的。
最后,数据所有者需要删除一些数据块并验证删除结果。数据所有者需要计算一个签名以生成删除请求。然后云服务器A需要分别计算一个签名并执行一个签名验证操作,同时需要计算20p哈希值以生成删除证据,其中p是需要删除的数据块的数量,图9给出了数据删除的耗时。随后,数据所有者可以通过验证证据来检查删除结果,时间开销如图10所示。
本发明解决两个不同云服务器之间数据的安全转移和可验证删除问题。在将数据外包给云服务器之前,数据所有者随机地将一些不相关的数据块插入到外包文件中。在将数据块迁移到云服务器B后,云服务器B将验证所接收数据块的完整性,并向数据所有者返回转移证据。数据所有者可以验证转移结果,以确保成功迁移数据块。通过使用ECDSA和CBF,云服务器A能够生成新的计数型布隆过滤器作为删除的证据,并且数据所有者可以验证证据的有效性确保数据块已确实被删除。通过安全性分析和仿真结果,验证了本发明所提方案的安全性和实用性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种支持外包数据安全转移与可验证删除的方法,其特征在于,所述支持外包数据安全转移与可验证删除的方法包括:
首先在将密文外包到云服务器A后,数据所有者检查存储结果并删除文件的本地备份;
然后数据所有者为了享受更合适的存储服务或出于客观因素,中途更换云存储服务供应商,并将外包数据从原始云服务器A迁移到目标云服务器B,并检查转移结果;
最后当数据转移完成或数据所有者不再需要数据时,要求云服务器删除数据并检查删除结果;
所述支持外包数据安全转移与可验证删除的方法具体包括:
步骤一,初始化:分别为数据所有者、云服务器A和云服务器B生成ECDSA公私钥对(PKO,SKO),(PKA,SKA)和(PKB,SKB);数据所有者选择k个安全的单向抗碰撞哈希函数f1,…,fk,它们将[1,n]中的整数映射到计数型布隆过滤器CBF中的不同单元格,即fi:[1,n]→[1,m];数据所有者为将被外包到云服务器A的文件选择一个独一无二的标签tagf;
步骤二,数据加密:数据所有者使用安全的加密算法对外包数据进行加密,并将密文数据集发送给云服务器A;
步骤三,数据外包:云服务器A保存数据集并生成相关的存储证据;数据所有者可以检查存储结果并删除文件的本地备份;
步骤四,数据转移:当数据所有者想要更换云存储服务供应商时,他需要将部分数据块,甚至整个文件从原始云服务器A转移到目标云服务器B;
步骤五,转移结果验证:在数据迁移之后,云服务器B检查转移的正确性并将转移结果返回给数据所有者;
步骤六,数据删除:当不再需要数据或数据已被成功转移到云服务器B时,数据所有者需要云服务器A删除数据块。
2.如权利要求1所述的支持外包数据安全转移与可验证删除的方法,其特征在于,所述步骤二数据所有者使用安全的加密算法对外包数据进行加密具体包括:
1)首先,数据所有者将需外包的文件划分为n′块;同时,数据所有者在随机的位置插入n-n′个随机的数据块;然后数据所有者将随机位置记录在表PF中,外包文件表示为F=(m1,…,mn);
3.如权利要求2所述的支持外包数据安全转移与可验证删除的方法,其特征在于,所述步骤三云服务器A保存数据集并生成相关的存储证据,数据所有者检查存储结果并删除文件的本地备份具体包括:
1)在接收到D和tagf后,云服务器A保存数据集D,并使用索引(a1,a2,…,an)构建计数型布隆过滤器CBFs;同时,云服务器A保存文件标签tagf作为外包数据集D的索引;云服务器A计算签名并发送存储证据λ=(CBFs,Ts,sigs)给数据所有者,其中Sign是ECDSA签名算法,Ts是时间戳;
2)接收到存储证据λ后,数据所有者验证存储证据的有效性,数据所有者首先检查签名sigs的有效性;如果sigs是无效的,那么数据所有者退出并输出失败;否则,数据所有者从块索引集(a1,a2,…,an)中随机选择其中的一半来检查CBFs的正确性;如果CBFs不正确,那么数据所有者退出并输出失败;否则,数据所有者删除文件的本地备份。
4.如权利要求1所述的支持外包数据安全转移与可验证删除的方法,其特征在于,所述步骤四当数据所有者想要更换云存储服务供应商时,需要将部分数据块,甚至整个文件从原始云服务器A转移到目标云服务器B具体包括:
1)首先,数据所有者生成块索引集φ,其标识需要转移的数据块;然后数据所有者计算签名其中Tt是时间戳,文件标签tagf;数据所有者生成转移请求Rt=(transfer,tagf,φ,Tt,sigt),并将其发送给原始云服务器A;同时,数据所有者将哈希值{Hi}i∈φ发送给目标云服务器B;
5.如权利要求4所述的支持外包数据安全转移与可验证删除的方法,其特征在于,所述步骤五在数据迁移之后,目标云服务器B检查转移的正确性并将转移结果返回给数据所有者具体包括:
1)首先,目标云服务器B检查数据转移请求Rt和签名sigta的有效性;如果不是两个都有效,则云服务器B退出并输出失败;否则,云服务器B检查等式Hi=H(tagf||ai||Ci)是否成立,其中i∈φ;如果Hi≠H(tagf||ai||Ci),则云服务器B将会要求云服务器A再次发送数据块(ai,Ci);否则,云服务器B执行2);
3)收到转移证据π后,数据所有者可以检查数据转移结果,数据所有者检查签名sigtb的有效性;同时,数据所有者从块索引集φ中随机选择一半的索引来验证计数布隆过滤器CBFb的正确性;当且仅当所有验证都通过时,数据所有者才相信转移证据是有效的,并且相信云服务器B诚实地存储被转移的数据。
6.如权利要求5所述的支持外包数据安全转移与可验证删除的方法,其特征在于,所述步骤六当不再需要数据或数据已被成功转移到云服务器B时,数据所有者需要云服务器A删除数据块具体包括:
1)首先,数据所有者生成块索引集ψ,它将标记需要删除的数据块,如果数据所有者想要删除被转移的数据块,则等式ψ=φ成立;然后数据所有者计算签名其中Td是时间戳;最后,数据所有者生成数据删除请求Rd=(delete,tagf,ψ,Td,sigd)并将其发送给云服务器A;
2)接收到删除请求Rd后,云服务器A检查Rd的有效性;如果Rd是无效的,那么云服务器A退出并输出失败;否则,云服务器A通过重写删除数据块{(ai,Ci)}i∈ψ;同时,云服务器A从CBFs中删除{aq}q∈ψ并获得新的计数型布隆过滤器CBFd;最后,云服务器A计算签名sigda=Sign(delete||Rd||CBFd),并将数据删除证据τ=(sigda,CBFd)返回给数据所有者;
3)接收到数据删除证据τ后,数据所有者检查签名sigda的有效性;如果签名sigda是无效的,那么数据所有者退出并输出失败;否则,数据所有者从块索引集ψ中随机选择一半的索引来检查等式CBF(aq)=0并确定aq是否属于CBFd;如果等式成立,那么数据所有者相信τ是有效的;之后如果数据所有者在云服务器A上发现数据块{(ai,Ci)}i∈ψ,则他有权向云服务器A索赔。
7.一种应用权利要求1~6任意一项所述支持外包数据安全转移与可验证删除的方法的云服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910435689.3A CN110377225B (zh) | 2019-05-23 | 2019-05-23 | 一种支持外包数据安全转移与可验证删除的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910435689.3A CN110377225B (zh) | 2019-05-23 | 2019-05-23 | 一种支持外包数据安全转移与可验证删除的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110377225A CN110377225A (zh) | 2019-10-25 |
CN110377225B true CN110377225B (zh) | 2023-04-28 |
Family
ID=68248728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910435689.3A Active CN110377225B (zh) | 2019-05-23 | 2019-05-23 | 一种支持外包数据安全转移与可验证删除的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110377225B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111832073B (zh) * | 2020-07-05 | 2023-07-18 | 桂林电子科技大学 | 云环境中支持外包数据动态插入的确定性删除方法 |
CN111949602A (zh) * | 2020-07-16 | 2020-11-17 | 桂林电子科技大学 | 一种支持完整性验证的外包数据安全迁移方法与系统 |
CN114153382B (zh) * | 2021-11-04 | 2023-09-26 | 桂林电子科技大学 | 云存储中支持数据可验证删除的高效数据迁移方法、系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923568A (zh) * | 2010-06-23 | 2010-12-22 | 北京星网锐捷网络技术有限公司 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
CN104426952A (zh) * | 2013-08-28 | 2015-03-18 | 华为技术有限公司 | 一种数据迁移方法、设备及系统 |
CN108377237A (zh) * | 2018-02-05 | 2018-08-07 | 江苏大学 | 用于云端密文存储的具有所有权管理的数据去重系统及其数据去重方法 |
CN108418796A (zh) * | 2018-01-30 | 2018-08-17 | 西安电子科技大学 | 云数据多副本完整性验证及关联删除的方法、云存储系统 |
CN108599923A (zh) * | 2018-02-26 | 2018-09-28 | 华南师范大学 | 云计算服务器间数据高效安全传输的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11086662B2 (en) * | 2016-08-24 | 2021-08-10 | Ashish Khurange | Method and system of migrating applications to a cloud-computing environment |
-
2019
- 2019-05-23 CN CN201910435689.3A patent/CN110377225B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923568A (zh) * | 2010-06-23 | 2010-12-22 | 北京星网锐捷网络技术有限公司 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
CN104426952A (zh) * | 2013-08-28 | 2015-03-18 | 华为技术有限公司 | 一种数据迁移方法、设备及系统 |
CN108418796A (zh) * | 2018-01-30 | 2018-08-17 | 西安电子科技大学 | 云数据多副本完整性验证及关联删除的方法、云存储系统 |
CN108377237A (zh) * | 2018-02-05 | 2018-08-07 | 江苏大学 | 用于云端密文存储的具有所有权管理的数据去重系统及其数据去重方法 |
CN108599923A (zh) * | 2018-02-26 | 2018-09-28 | 华南师范大学 | 云计算服务器间数据高效安全传输的实现方法 |
Non-Patent Citations (1)
Title |
---|
云存储完整性验证密码学技术研究进展;王玉钰等;《信息安全学报》;20170731;第2卷(第3期);第23-35页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110377225A (zh) | 2019-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2019204725B2 (en) | Retrieving access data for blockchain networks using highly available trusted execution environments | |
AU2019204708B2 (en) | Retrieving public data for blockchain networks using highly available trusted execution environments | |
JP6841911B2 (ja) | 情報保護用のシステム及び方法 | |
US20190295069A1 (en) | Systems and methods for integrating cryptocurrency wallet identifiers with digital certificates | |
US8997198B1 (en) | Techniques for securing a centralized metadata distributed filesystem | |
KR20210040078A (ko) | 안전한 보관 서비스를 위한 시스템 및 방법 | |
US11121876B2 (en) | Distributed access control | |
CN110377225B (zh) | 一种支持外包数据安全转移与可验证删除的方法 | |
US11405198B2 (en) | System and method for storing and managing keys for signing transactions using key of cluster managed in trusted execution environment | |
US11893577B2 (en) | Cryptographic key storage system and method | |
CN113169866A (zh) | 使用同时密钥发布来防止共谋的技术 | |
Liu et al. | A blockchain-based privacy preservation scheme in multimedia network | |
Chen et al. | ToAM: a task-oriented authentication model for UAVs based on blockchain | |
CN114978664A (zh) | 一种数据共享方法、装置及电子设备 | |
JP2002529778A (ja) | 共有無作為性の分散暗号化への組み込み | |
Xie et al. | A novel blockchain-based and proxy-oriented public audit scheme for low performance terminal devices | |
CN111737708B (zh) | 一种支持外包数据高效更新的可验证删除方法及系统 | |
WO2024011863A9 (zh) | 通信方法、装置、sim卡、电子设备和终端设备 | |
Parisi | Securing Blockchain Networks like Ethereum and Hyperledger Fabric: Learn advanced security configurations and design principles to safeguard Blockchain networks | |
CN111769956A (zh) | 业务处理方法、装置、设备及介质 | |
Khaba et al. | Remote data integrity checking in cloud computing | |
Zhang et al. | Data Integrity Verification Scheme Based on Blockchain Smart Contract | |
EP4395232A1 (en) | Authentification blockchain addresses | |
Sada et al. | Data Integrity Verification in Cloud Computing | |
Wang et al. | Blockchain-Based Integrity Auditing with Secure Deduplication in Cloud Storage |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |