<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="pmc">IASC</journal-id>
<journal-id journal-id-type="nlm-ta">IASC</journal-id>
<journal-id journal-id-type="publisher-id">IASC</journal-id>
<journal-title-group>
<journal-title>Intelligent Automation &#x0026; Soft Computing</journal-title>
</journal-title-group>
<issn pub-type="epub">2326-005X</issn>
<issn pub-type="ppub">1079-8587</issn>
<publisher>
<publisher-name>Tech Science Press</publisher-name>
<publisher-loc>USA</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">27536</article-id>
<article-id pub-id-type="doi">10.32604/iasc.2022.027536</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Integrity Assurance Method of Multi-Keyword Query for Encrypted Outsourced Data</article-title><alt-title alt-title-type="left-running-head">Integrity Assurance Method of Multi-Keyword Query for Encrypted Outsourced Data</alt-title><alt-title alt-title-type="right-running-head">Integrity Assurance Method of Multi-Keyword Query for Encrypted Outsourced Data</alt-title>
</title-group>
<contrib-group content-type="authors">
<contrib id="author-1" contrib-type="author">
<name name-style="western"><surname>Wang</surname><given-names>Ling</given-names></name>
<xref ref-type="aff" rid="aff-1">1</xref>
</contrib>
<contrib id="author-2" contrib-type="author">
<name name-style="western"><surname>Ji</surname><given-names>Shan</given-names></name>
<xref ref-type="aff" rid="aff-2">2</xref>
</contrib>
<contrib id="author-3" contrib-type="author">
<name name-style="western"><surname>Wang</surname><given-names>Zhaokang</given-names></name>
<xref ref-type="aff" rid="aff-3">3</xref>
</contrib>
<contrib id="author-4" contrib-type="author" corresp="yes">
<name name-style="western"><surname>Wang</surname><given-names>Xiaowan</given-names></name>
<xref ref-type="aff" rid="aff-4">4</xref><email>wangxiaowanxian@yeah.net</email>
</contrib>
<contrib id="author-5" contrib-type="author">
<name name-style="western"><surname>Mohiuddin</surname><given-names>Ghulam</given-names></name>
<xref ref-type="aff" rid="aff-5">5</xref>
</contrib>
<contrib id="author-6" contrib-type="author">
<name name-style="western"><surname>Ren</surname><given-names>Yongjun</given-names></name>
<xref ref-type="aff" rid="aff-1">1</xref>
</contrib>
<aff id="aff-1"><label>1</label><institution>Engineering Research Center of Digital Forensics, Ministry of Education, School of Computer Science, Nanjing University of Information Science &#x0026; Technology</institution>, <addr-line>Nanjing, 210044</addr-line>, <country>China</country></aff>
<aff id="aff-2"><label>2</label><institution>Zhengde Polytechnic</institution>, <addr-line>Nanjing, 211106</addr-line>, <country>China</country></aff>
<aff id="aff-3"><label>3</label><institution>Nanjing University of Aeronautics and Astronautics</institution>, <addr-line>Nanjing, 210008</addr-line>, <country>China</country></aff>
<aff id="aff-4"><label>4</label><institution>Xi&#x2019;an University of Posts &#x0026; Telecommunications</institution>, <addr-line>Xi&#x2019;an, 710061</addr-line>, <country>China</country></aff>
<aff id="aff-5"><label>5</label><institution>Department of Cyber Security at VaporVM</institution>, <addr-line>Abu Dhabi, 999041</addr-line>, <country>United Arab Emirates</country></aff>
</contrib-group><author-notes><corresp id="cor1"><label>&#x002A;</label>Corresponding Author: Xiaowan Wang. Email: <email>wangxiaowanxian@yeah.net</email></corresp></author-notes>
<pub-date pub-type="epub" date-type="pub" iso-8601-date="2022-04-13"><day>13</day>
<month>04</month>
<year>2022</year></pub-date>
<volume>34</volume>
<issue>1</issue>
<fpage>221</fpage>
<lpage>234</lpage>
<history>
<date date-type="received"><day>20</day><month>1</month><year>2022</year></date>
<date date-type="accepted"><day>02</day><month>3</month><year>2022</year></date>
</history>
<permissions>
<copyright-statement>&#x00A9; 2022 Wang et al.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Wang et al.</copyright-holder>
<license xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>This work is licensed under a <ext-link ext-link-type="uri" xlink:type="simple" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</ext-link>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
</license>
</permissions>
<self-uri content-type="pdf" xlink:href="TSP_IASC_27536.pdf"></self-uri>
<abstract>
<p>As the data scale exceeds the petabyte level, more and more users outsource their local databases to third-party service providers to save local storage costs and avoid cumbersome local data management. However, because third-party service providers are not fully trusted, they may leak outsourced data and bring security risks to the personal privacy of data users. The service provider may also return incorrect or incomplete query results to the data user. Therefore, in this paper, we propose a Lightweight and Verifiable Multi-keyword Query Scheme for the integrity verification of multi-keyword query of outsourced data. This scheme supports multi-keyword query integrity verification and does not require a third-party auditor, combining a hash-based accumulator that provides correctness verification and a cuckoo filter that provides integrity verification to form a provably secure composite verification structure, and at the same time, it uses controllable Paillier encryption to support data update operations. This scheme strikes a balance between the cost of verification structure generation, verification object generation, and proof verification cost to enable data users to perform secure multi-keyword query while efficiently verifying the integrity of query results. The security proof and the performance analysis show that the proposed scheme is secure and efficient for practical deployment.</p>
</abstract>
<kwd-group kwd-group-type="author">
<kwd>Outsourced data</kwd>
<kwd>multi-keyword</kwd>
<kwd>query integrity</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<label>1</label>
<title>Introduction</title>
<p>Due to the rapid growth of data volume, the scale of the data management system exceeds the petabyte (PB) level, and the data management capability lags behind the data collection and storage capability. The user&#x2019;s specific data analysis needs cannot be met, and it is impossible to provide easy-to-deploy data management services [<xref ref-type="bibr" rid="ref-1">1</xref>,<xref ref-type="bibr" rid="ref-2">2</xref>]. With the explosive development of the Internet and the advancement of network technology, a new paradigm called &#x201C;Database as a Service (DaaS)&#x201D; has emerged. In the DaaS paradigm, data owners who have large amounts of data but lack data management resources outsource their data and data analysis to third-party service providers. Third-party service providers provide sufficient hardware, software, technology, and network resources to host the database and perform data management [<xref ref-type="bibr" rid="ref-3">3</xref>&#x2013;<xref ref-type="bibr" rid="ref-5">5</xref>]. By using these services, data users can achieve large-capacity storage, accelerated processing, and complex data management and analysis at a lower cost [<xref ref-type="bibr" rid="ref-6">6</xref>&#x2013;<xref ref-type="bibr" rid="ref-8">8</xref>].</p>
<p>While data outsourcing offers many convenient services, it brings many new security issues that do not exist in traditional databases because data is stored on the servers of the outsourcing service provider, the data owner no longer has direct control over the data and the service provider is not fully trusted [<xref ref-type="bibr" rid="ref-9">9</xref>,<xref ref-type="bibr" rid="ref-10">10</xref>]. In order to ensure the confidentiality of outsourced data, it is necessary to encrypt the outsourced data, which makes it difficult to perform multi-keyword query on the encrypted data [<xref ref-type="bibr" rid="ref-11">11</xref>,<xref ref-type="bibr" rid="ref-12">12</xref>]. In addition, service providers driven by their own interests or affected by factors such as software and hardware operating failures, may honestly perform partial query operations and return incorrect or incomplete query results to users [<xref ref-type="bibr" rid="ref-13">13</xref>,<xref ref-type="bibr" rid="ref-14">14</xref>]. It is necessary to provide users with a lightweight and verifiable mechanism to ensure the correctness and completeness of multi-keyword query results.</p>
<p>Therefore, this paper mainly studies the multi-keyword query integrity verification of outsourced data [<xref ref-type="bibr" rid="ref-15">15</xref>,<xref ref-type="bibr" rid="ref-16">16</xref>]. Query integrity refers to the ability to verify the correctness and completeness of the query results returned by the third-party service provider. Specifically, correctness means that data in the query results is true and error-free; completeness means that the query results are not missing and include all valid records that satisfy the query conditions. On the other hand, in order to meet users&#x2019; efficient data retrieval needs, the server allows users to input multiple keywords at once, and can perform multi-keyword query, that is, given a set of retrieved keywords, retrieve all documents containing these keywords [<xref ref-type="bibr" rid="ref-17">17</xref>,<xref ref-type="bibr" rid="ref-18">18</xref>]. Multi-keyword query can improve query efficiency and save computation and communication overhead.</p>
<p>Many solutions have been proposed in recent years to solve the problem of multi-keyword query integrity verification [<xref ref-type="bibr" rid="ref-19">19</xref>&#x2013;<xref ref-type="bibr" rid="ref-21">21</xref>]. Wang et al. [<xref ref-type="bibr" rid="ref-22">22</xref>,<xref ref-type="bibr" rid="ref-23">23</xref>] proposed a verifiable audit scheme based on Invertible Bloom Filter, which supported completeness and correctness verification of query results, and supported working in a dynamic environment. However, existing solutions that achieve both correctness and completeness verification usually require a third-party auditor (TPA). However, because TPA is not completely credible, a malicious TPA may return an opposite result to the user even if it calculates the correct authentication result. The integrity of user data will still be threatened, and TPA will also generate additional communication overhead.</p>
<p>In order to solve the above problems, this paper proposes a lightweight and verifiable multi-keyword query scheme for outsourced data. The main contributions of this paper are as follows:<list list-type="simple"><list-item><label>(1)</label>
<p>We propose a Lightweight and Verifiable Multi-keyword Query Scheme (<italic>LVMQ</italic>), which supports multi-keyword query integrity verification with low query overhead and high verification efficiency.</p></list-item><list-item><label>(2)</label>
<p>A TPA is not needed in the <italic>LVMQ</italic> scheme, and a hash-based accumulator is used to reduce communication overhead and improve system data security.</p></list-item><list-item><label>(3)</label>
<p>The <italic>LVMQ</italic> scheme combines a cuckoo filter and a hash-based accumulator to construct a provably secure composite verification structure, which strikes a balance between the verification structure generation cost, the verification object generation cost, and the proof verification cost.</p></list-item></list></p>
<p>The rest of the paper is organized as follows. Section 2 mainly introduces the existing query integrity verification methods. Section 3 introduces security threats and security requirements of the system. Section 4 introduces the data security model and related technical methods. Section 5 introduces the implementation details of the <italic>LVMQ</italic> scheme. Section 6 analyzes the security of the scheme. Section 7 analyzes the performance of the program. Section 8 gives a final summary.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Related Work</title>
<p>The data stored on the outsourcing server may be tampered with or deleted. The role of query integrity verification is to ensure that data users can verify data in the query result is correct and complete. At present, there are many schemes for query integrity verification, and these schemes can be divided into the following three verification methods [<xref ref-type="bibr" rid="ref-24">24</xref>&#x2013;<xref ref-type="bibr" rid="ref-26">26</xref>].<list list-type="simple"><list-item><label>(1)</label>
<p>Verification method based on digital signature</p></list-item></list></p>
<p>The first method is based on digital signature, mainly using digital signature chains [<xref ref-type="bibr" rid="ref-27">27</xref>,<xref ref-type="bibr" rid="ref-28">28</xref>]. The basic idea of the digital signature chain is to organize data into a chain according to a certain logical relationship, and the signature of each data is determined by itself and the logically related data together. In this way, once a certain data is deleted, the logical relationship is destroyed and the signature verification fails. The signature chain method has serious efficiency problems: signature chains are expensive to establish and maintain.</p>
<p>Pang et al. put forward a scheme for verifying the integrity of relational query results, using digital signature technology to sign each record. The correctness of the scheme was guaranteed by the signature, and the completeness was guaranteed by the signature chain. Narasimha et al. proposed a Digital Signature Aggregation and Chaining (DSAC) scheme, which first sorted all tuples by each attribute, and then generated a chained digital signature for each tuple based on the sorting result, effectively verifying the integrity of non-empty query results. Zhang et al. [<xref ref-type="bibr" rid="ref-29">29</xref>] improved the DSAC method and proposed the chain embedded signature method, which replaced the signature content of the tuple from the predecessor tuple concatenation to the predecessor primary key concatenation, reducing the number of updates.<list list-type="simple"><list-item><label>(2)</label>
<p>Verification method based on authenticated data structure</p></list-item></list></p>
<p>The second method is based on authenticated data structure [<xref ref-type="bibr" rid="ref-30">30</xref>,<xref ref-type="bibr" rid="ref-31">31</xref>]. At present, the most researched one is Merkle hash tree (MHT) and various variants based on MHT. The main idea is to generate a MHT-based index for the entire database, and complete the integrity audit by recalculating the signature on the MHT root. Most MHT-based schemes can guarantee the integrity of query results.</p>
<p>Devanbu et al. [<xref ref-type="bibr" rid="ref-32">32</xref>] first used MHT to study the verification of query results. Even if the cloud service provider (CSP) is dishonest, data users can verify the correctness of the query results. Ma et al. generated a MHT for each tuple, which reduced the communication cost of the verification process and improved the verification efficiency. Li et al. proposed the dynamic authentication index structure of outsourced database by using B&#x002B; tree. Wang et al. used MHT, Bloom Filter and Bloom Filter Tree, with tools such as pseudo-random permutation, hash function, etc., regardless of whether the query results returned by CSP are not empty, data users can verify the query integrity. Later, Wang et al. proposed a solution to support dynamic database updates, which fully realized correctness and completeness verification of the query results by data users.<list list-type="simple"><list-item><label>(3)</label>
<p>Verification method based on probability</p></list-item></list></p>
<p>The third method is based on probability [<xref ref-type="bibr" rid="ref-33">33</xref>]. The main idea is that the data owner first inserts some fake tuples into the database. However, an implicit assumption of this method is that all data users must know the fake tuples. A dishonest CSP can collude with any compromised data user and then learn about fake tuples. In addition, this method requires CSP to return all the attributes of the tuple, so it cannot support some common database operations, such as projection.</p>
<p>Sion let the data owner add a fake challenge token to the query request, forcing the CSP to execute all query requests, otherwise the probability of the CSP returning the correct challenge response will be greatly reduced. Xie et al. let the data owner add a small number of fake tuples to the outsourced database and judge whether the CSP&#x2019;s retrieval behavior was honest or not by analyzing the fake tuples in the query results.</p>
<p>In summary, many researchers have carried out extensive research on outsourced data query integrity verification methods. However, the lightweight and verifiable multi-keyword query method for outsourced data still needs to be studied.</p>
</sec>
<sec id="s3">
<label>3</label>
<title>Problem Statement</title>
<sec id="s3_1">
<label>3.1</label>
<title>Security Threats</title>
<p>Assuming that the service provider is a semi-honest but friendly server, it may not follow the recommended protocol correctly, may not return a small part of the query results, and only perform a small part of the query operation honestly, that is, it may return incorrect or incomplete query results. Communication channels involving service providers are considered insecure and may be subject to external attacks and internal attacks.<list list-type="simple"><list-item>
<p>&#x2460; External attacks: The revoked or unauthorized users try to access data outside the scope of authority, hoping to obtain sensitive information about the outsourced data through public channels.</p></list-item><list-item>
<p>&#x2461; Internal attacks: The service provider may not be able to completely send ciphertext data or additional information to the data user due to non-subjective factors such as machine failure, network failure, and hacker intrusion, or it may deliberately send incomplete or incorrect information to the data user due to subjective factors such as cost saving.</p></list-item></list></p>
</sec>
<sec id="s3_2">
<label>3.2</label>
<title>Security Requirements</title>
<p>In order to ensure the security and efficiency of the system, the proposed scheme should meet the following security requirements:<list list-type="simple"><list-item>
<p>&#x25CF; Query integrity: Data users can verify whether the query results returned by service provider (SP) are correct and complete.</p></list-item><list-item>
<p>&#x25CF; Dynamic data update: The data owner can perform a data dynamic update operation on the outsourced database.</p></list-item><list-item>
<p>&#x25CF; Lightweight: The scheme has lower communication and calculation overhead in terms of integrity verification.</p></list-item></list></p>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>Preliminaries</title>
<sec id="s4_1">
<label>4.1</label>
<title>Security Model</title>
<p>Aiming at the problem of outsourced data security, a system security model is constructed, as shown in <xref ref-type="fig" rid="fig-1">Fig. 1</xref>. Three entities are involved in the system model: data owner, data users and service provider.<list list-type="simple"><list-item>
<p>&#x25CF; Data Owner: Encrypt the data in the outsourced database, extract keywords at the same time, build a keyword index and encrypt it, outsource the encrypted data and index to the service provider together.</p></list-item><list-item>
<p>&#x25CF; Data Users: Send a query request to the service provider and use the returned query result and verification object to verify the integrity of the query result.</p></list-item><list-item>
<p>&#x25CF; Service Provider: Store encrypted data and index, manage data and provide data retrieval services to data users.</p></list-item></list></p>
<fig id="fig-1">
<label>Figure 1</label>
<caption>
<title>System model</title></caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="IASC_27536-fig-1.png"/>
</fig>
<p>The data owner extracts keywords from data files and establishes a corresponding keyword index, then encrypts index files and data files together, and outsources them to the service provider, and shares them with data users. When the data user sends a query request to the service provider for keyword query, the keyword trapdoor is first generated and sent to the service provider. After receiving the data user&#x2019;s query request, the service provider responds to the data user with the corresponding record and proof of integrity query. The data user then uses the proof to verify the correctness and completeness of the query result. If the query result is correct and complete, the data user decrypts the result and outputs Accept, otherwise outputs Reject.</p>
</sec>
<sec id="s4_2">
<label>4.2</label>
<title>Cuckoo Filter</title>
<p>Cuckoo filter [<xref ref-type="bibr" rid="ref-34">34</xref>] is a filter based on the cuckoo hash algorithm. It hashes the storage item, and stores its hash value in an array with a certain number of bits. When querying, determine whether a stored item exists by determining whether the hash of equal bits is in the array. Cuckoo filter supports dynamic deletion of items, provides better lookup performance than Bloom filter, has better space efficiency and is easier to implement.</p>
<p>The following describes the insert, lookup and delete operations of the cuckoo filter respectively.<list list-type="simple"><list-item><label>(1)</label>
<p>Insert operation</p></list-item></list></p>
<p>When inserting a new item <italic>x</italic> in the hash table, first calculate the fingerprint <inline-formula id="ieqn-1">
<mml:math id="mml-ieqn-1"><mml:mi>f</mml:mi><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mi>g</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mi>p</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:mi>int</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula> of <italic>x</italic> and two optional candidate buckets <italic>i</italic><sub>1</sub>&#x2009;&#x2190;&#x2009;<italic>hash</italic>(<italic>x</italic>) and <inline-formula id="ieqn-2">
<mml:math id="mml-ieqn-2"><mml:msub><mml:mi>i</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi>h</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>h</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2295;</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math>
</inline-formula>. Then read <italic>i</italic><sub>1</sub> and <italic>i</italic><sub>2</sub>, if there is an empty cell <italic>e</italic> in <italic>i</italic><sub>1</sub> or <italic>i</italic><sub>2</sub>, put <italic>f</italic> in the first available empty cell <italic>e</italic>. If two candidate buckets are not empty, one of the buckets will be randomly selected, and the selected existing item <italic>y</italic> will be kicked out, and the item <italic>y</italic> is placed in a spare position. If there is still item <italic>z</italic> in the alternate position, then the item <italic>z</italic> is kicked out, and so on, until the number of kicks <italic>n</italic> reaches a maximum threshold <italic>MaxNumKicks</italic>. Once the hash table is full, perform a refresh hash table operation.<list list-type="simple"><list-item><label>(2)</label>
<p>Lookup operation</p></list-item></list></p>
<p>When looking up whether a given item <italic>x</italic> belongs to the set, calculate the fingerprint <italic>f</italic> of <italic>x</italic> and two candidate buckets <italic>i</italic><sub>1</sub> and <italic>i</italic><sub>2</sub>, and then read <italic>i</italic><sub>1</sub> and <italic>i</italic><sub>2</sub>. If <italic>f</italic> matches the fingerprint of any one of the buckets <italic>i</italic><sub>1</sub> or <italic>i</italic><sub>2</sub>, it returns <italic>Success</italic>, otherwise it returns <italic>Fail</italic>.<list list-type="simple"><list-item><label>(3)</label>
<p>Delete operation</p></list-item></list></p>
<p>When deleting a given item <italic>x</italic>, calculate the fingerprint <italic>f</italic> of <italic>x</italic> and the two candidate buckets <italic>i</italic><sub>1</sub> and <italic>i</italic><sub>2</sub>, then read <italic>i</italic><sub>1</sub> and <italic>i</italic><sub>2</sub>, if <italic>f</italic> matches the fingerprint of any one of the buckets <italic>i</italic><sub>1</sub> or <italic>i</italic><sub>2</sub>, then delete the matching fingerprint from the corresponding candidate bucket.</p>
</sec>
<sec id="s4_3">
<label>4.3</label>
<title>Hash-Based Accumulator</title>
<p>The cryptographic accumulator is a one-way member hash function, which allows the user to prove that a potential element is a member of a certain set without revealing the individual members of the set. The cryptographic accumulator scheme allows elements in the finite set <italic>X</italic>&#x2009;&#x003D;&#x2009;&#x007B;<italic>x</italic><sub>1</sub>, &#x2026;, <italic>x</italic><sub><italic>n</italic></sub>&#x007D; to be accumulated into a compact and constant-sized value <italic>acc</italic><sub><italic>x</italic></sub>. The accumulator is defined as:<disp-formula id="eqn-1"><label>(1)</label>

<mml:math id="mml-eqn-1" display="block"><mml:mi>a</mml:mi><mml:mi>c</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo><mml:mi>h</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>g</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>x</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>x</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>x</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mo>.</mml:mo><mml:mo>.</mml:mo><mml:mo>.</mml:mo><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math>
</disp-formula></p>
<p>By calculating the witness <inline-formula id="ieqn-3">
<mml:math id="mml-ieqn-3"><mml:mi>w</mml:mi><mml:mi>i</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub></mml:math>
</inline-formula> of each element <italic>x</italic><sub><italic>i</italic></sub>&#x2009;&#x2208;&#x2009;<italic>X</italic> in the set and verifying <inline-formula id="ieqn-4">
<mml:math id="mml-ieqn-4"><mml:mi>h</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>w</mml:mi><mml:mi>i</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi>a</mml:mi><mml:mi>c</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:math>
</inline-formula>, the membership of element x<sub><italic>i</italic></sub> can be effectively proved.</p>
<p>The traditional accumulator will introduce a trusted third party-the accumulator manager, he can delete elements in the accumulator, and at the same time create a membership witness for any element. The only known accumulator that can be safely used in the untrusted system is the accumulator based on Merkle trees. This is because the Merkle tree does not require trapdoor values at any node during its operation, and the implementation of Rivest Shamir Adleman (RSA) algorithm and bilinear map accumulators is limited to trusted accumulator manager settings because they rely on the secret trapdoor values used for initialization and constant time operations. Hash-based dynamic accumulators have no trusted settings or manager requirements and use a perfect Merkle tree forest that allows elements to be efficiently removed from the accumulator.</p>
</sec>
</sec>
<sec id="s5">
<label>5</label>
<title>Proposed Scheme</title>
<sec id="s5_1">
<label>5.1</label>
<title>Overview</title>
<p>We propose a Lightweight and Verifiable Multi-keyword Query Scheme (<italic>LVMQ</italic>). The main idea is to choose a hash-based accumulator and combine it with a cuckoo filter to construct a provably secure composite verification structure to verify the correctness and completeness of query results without a third-party auditor. In addition, combined with controllable Paillier encryption to effectively support dynamic data update operations. As shown in <xref ref-type="fig" rid="fig-2">Fig. 2</xref>: The proposed scheme includes the following five stages: system setup, data outsourcing, data retrieval, data verification and data update. The program is a tuple consisting of eight polynomial time algorithms (<bold><italic>KeyGen</italic></bold>, <bold><italic>SigGen</italic></bold>, <bold><italic>BuildCF</italic></bold>, <bold><italic>BuildACC</italic></bold>, <bold><italic>BuildIndex</italic></bold>, <bold><italic>Proof</italic></bold>, <bold><italic>Verify</italic></bold>, <bold><italic>Update</italic></bold>). The algorithm is specifically described as follows.<list list-type="simple"><list-item><label>1)</label>
<p><inline-formula id="ieqn-5">
<mml:math id="mml-ieqn-5"><mml:mi mathvariant="bold-italic">K</mml:mi><mml:mi>e</mml:mi><mml:mi>y</mml:mi><mml:mi>G</mml:mi><mml:mi>e</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mn>1</mml:mn><mml:mrow><mml:mi mathvariant="normal">&#x03BB;</mml:mi></mml:mrow></mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>p</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula><bold>:</bold> Key generation algorithm. The data owner initializes the system parameters. Input the security parameter <italic>&#x03BB;</italic>, and output secret key <italic>sk</italic> and public key <italic>pk</italic>.</p></list-item><list-item><label>2)</label>
<p><bold><italic>SigGen</italic>(<italic>pk</italic>, <italic>sk</italic>, <italic>R</italic>)&#x2009;&#x2192;&#x2009;<italic>SC</italic><bold>:</bold></bold> Record generation algorithm. The data owner generates the signature of the record. Input public key <italic>pk</italic>, secret key <italic>sk</italic>, database <italic>R</italic>, and output metadata <italic>SC</italic> composed of ciphertext <italic>c</italic><sub><italic>ij</italic></sub> and signature <italic>&#x03C3;</italic><sub><italic>ij</italic></sub>.</p></list-item><list-item><label>3)</label>
<p><bold><italic>BuildCF</italic>(<italic>pk</italic>, <italic>sk</italic>, <italic>R</italic>)&#x2009;&#x2192;&#x2009;<italic>CF</italic></bold><bold>:</bold> Filter generation algorithm. The data owner constructs a cuckoo filter for each attribute. Input public key <italic>pk</italic>, secret key <italic>sk</italic>, database <italic>R</italic>, and output filter <italic>CF</italic>.</p></list-item><list-item><label>4)</label>
<p><bold><italic>BuildACC</italic>(<italic>pk</italic>, <italic>sk</italic>, <italic>R</italic>)&#x2009;&#x2192;&#x2009;<italic>ACC</italic></bold><bold>:</bold> Accumulator generation algorithm. The data owner constructs a hash-based accumulator for each attribute. Input public key <italic>pk</italic>, secret key <italic>sk</italic>, database <italic>R</italic>, and output accumulator <italic>ACC</italic>.</p></list-item><list-item><label>5)</label>
<p><bold><italic>BuildIndex</italic>(<italic>pk</italic>, <italic>sk</italic>, <italic>R</italic>, <italic>W</italic>)&#x2009;&#x2192;&#x2009;<italic>Index</italic></bold><bold>:</bold> Index generation algorithm. The data owner extracts keywords and builds a query index. Input public key <italic>pk</italic>, secret key <italic>sk</italic>, database <italic>R</italic>, multi-keyword set <italic>W</italic>, and output security index structure <italic>Index</italic>.</p></list-item><list-item><label>6)</label>
<p><inline-formula id="ieqn-6">
<mml:math id="mml-ieqn-6"><mml:mi mathvariant="bold-italic">P</mml:mi><mml:mi>r</mml:mi><mml:mi>o</mml:mi><mml:mi>o</mml:mi><mml:mi>f</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>p</mml:mi><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>T</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>S</mml:mi><mml:mi>C</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>C</mml:mi><mml:mi>F</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>A</mml:mi><mml:mi>C</mml:mi><mml:mi>C</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mi>P</mml:mi></mml:math>
</inline-formula><bold>:</bold> Proof generation algorithm. The service provider generates a proof and returns it to data users. Input public key <italic>pk</italic>, query request <italic>T</italic>, metadata <italic>SC</italic>, filter <italic>CF</italic>, accumulator <italic>ACC</italic>, and output proof <italic>P</italic>.</p></list-item><list-item><label>7)</label>
<p><inline-formula id="ieqn-7">
<mml:math id="mml-ieqn-7"><mml:mi mathvariant="bold-italic">V</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mi>y</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>s</mml:mi><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>p</mml:mi><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>J</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>P</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mi>A</mml:mi><mml:mi>c</mml:mi><mml:mi>c</mml:mi><mml:mi>e</mml:mi><mml:mi>p</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mrow><mml:mrow><mml:mi mathvariant="bold-italic">R</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:mrow><mml:mi>j</mml:mi><mml:mi>e</mml:mi><mml:mi>c</mml:mi><mml:mi>t</mml:mi><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math>
</inline-formula><bold>:</bold> Verification algorithm. Data users verify the integrity of query results. Input public key <italic>pk</italic>, secret key <italic>sk</italic>, set <italic>I</italic> and <italic>J</italic>, proof <italic>P</italic>, and output the verification result <italic>Accept</italic> or <italic>Reject</italic>.</p></list-item><list-item><label>8)</label>
<p><inline-formula id="ieqn-8">
<mml:math id="mml-ieqn-8"><mml:mi mathvariant="bold-italic">U</mml:mi><mml:mi>p</mml:mi><mml:mi>d</mml:mi><mml:mi>a</mml:mi><mml:mi>t</mml:mi><mml:mi>e</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:msubsup><mml:mo fence="false" stretchy="false">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:msubsup><mml:mo fence="false" stretchy="false">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>j</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:msubsup><mml:mo fence="false" stretchy="false">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:msubsup><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>S</mml:mi><mml:mi>C</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>C</mml:mi><mml:mi>F</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula><bold>:</bold> Update algorithm. Input ciphertext <italic>c</italic><sub><italic>ij</italic></sub>, signature <italic>&#x03C3;</italic><sub><italic>ij</italic></sub>, new fingerprint <italic>f</italic>, old fingerprint <italic>f&#x2019;</italic>, and output updated <italic>SC</italic> and <italic>CF</italic>.</p></list-item></list></p>
<fig id="fig-2">
<label>Figure 2</label>
<caption>
<title>Scheme process</title></caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="IASC_27536-fig-2.png"/>
</fig>
</sec>
<sec id="s5_2">
<label>5.2</label>
<title>Proposed Scheme</title>
<p>This section introduces the proposed scheme in detail. The <italic>LVMQ</italic> scheme includes five stages: system setup, data outsourcing, data retrieval, data verification and data update.</p>
<p>Suppose <italic>G</italic><sub>1</sub>, <italic>G</italic><sub>2</sub> and <italic>G</italic><sub><italic>T</italic></sub> are three multiplicative cyclic groups of prime number <italic>p</italic>, which <italic>g</italic><sub>1</sub> is generator of <italic>G</italic><sub>1</sub> and <italic>g</italic><sub>2</sub> is generator of <italic>G</italic><sub>2</sub>. Let <italic>e</italic>:<italic>G</italic><sub>1</sub>&#x2009;&#x00D7;&#x2009;<italic>G</italic><sub>1</sub>&#x2009;&#x2192;&#x2009;<italic>G</italic><sub><italic>T</italic></sub> is a bilinear mapping. &#x03A0;<sub>0</sub>&#x2009;&#x003D;&#x2009;(<italic>KeyGen</italic><sub>0</sub>, <italic>Enc</italic><sub>0</sub>, <italic>Trapdoor</italic><sub>0</sub>, <italic>Search</italic><sub>0</sub>, <italic>Dec</italic><sub>0</sub>) is a secure SSE, &#x03A0;<sub>1</sub>&#x2009;&#x003D;&#x2009;(<italic>KeyGen</italic><sub>1</sub>, <italic>Enc</italic><sub>1</sub>, <italic>Dec</italic><sub>1</sub>) is a controllable Paillier encryption. Let <inline-formula id="ieqn-9">
<mml:math id="mml-ieqn-9"><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>:</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mn>1</mml:mn></mml:mrow><mml:msup><mml:mo fence="false" stretchy="false">}</mml:mo><mml:mo>&#x2217;</mml:mo></mml:msup><mml:mo stretchy="false">&#x2192;</mml:mo><mml:msub><mml:mi>G</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math>
</inline-formula> denotes a hash function that is securely mapped to points, and <italic>h</italic><sub>2</sub>:<italic>G</italic><sub>1</sub>&#x2009;&#x2192;&#x2009;<italic>Z</italic><sub><italic>p</italic></sub> denotes a function that uniformly maps <italic>G</italic><sub>1</sub> group elements to <italic>Z</italic><sub><italic>p</italic></sub>.</p>
<sec id="s5_2_1">
<label>5.2.1</label>
<title>System Setup</title>
<p>In the system setup stage, the data owner initializes the system necessary parameters. The data owner generates secret key <italic>sk</italic>&#x2009;&#x003D;&#x2009;(<italic>k</italic><sub>0</sub>, <italic>sk</italic><sub>1</sub>, <italic>x</italic>) and public key <italic>pk</italic>&#x2009;&#x003D;&#x2009;(<italic>&#x03BB;</italic>, <italic>pk</italic><sub>1</sub>, <italic>g</italic><sub>1</sub>, <italic>g</italic><sub>2</sub>, <italic>u</italic>, <italic>v</italic>, <italic>h</italic><sub>1</sub>, <italic>h</italic><sub>2</sub>) according to algorithm <bold><italic>KeyGen</italic></bold>. The data owner then discloses <italic>pk</italic> and shares <italic>sk</italic> with the authenticated user.</p>
</sec>
<sec id="s5_2_2">
<label>5.2.2</label>
<title>Data Outsourcing</title>
<p>Suppose the data owner wants to outsource the relational database <italic>R</italic>&#x2009;&#x003D;&#x2009;(<italic>A</italic><sub>1</sub>, <italic>A</italic><sub>2</sub>, &#x2026;, <italic>A</italic><sub><italic>n</italic></sub>) to the service provider, where <italic>A</italic><sub><italic>j</italic></sub>(1&#x2009;&#x2264;&#x2009;<italic>j</italic>&#x2009;&#x2264;&#x2009;<italic>n</italic>) is the name of the <italic>j</italic>-th attribute, and <italic>a</italic><sub><italic>ij</italic></sub> is the attribute value of the attribute column <italic>A</italic><sub><italic>j</italic></sub> belonging to the <italic>i-th</italic> (1&#x2009;&#x2264;&#x2009;<italic>i</italic>&#x2009;&#x2264;&#x2009;<italic>m</italic>) record.<list list-type="simple"><list-item>
<p>&#x25CF; Database encryption</p></list-item></list></p>
<p>First, according to algorithm <bold><italic>SigGen</italic></bold>, the data owner uses an encryption algorithm to encrypt each element <italic>a</italic><sub><italic>ij</italic></sub> in the database <italic>R</italic>, generates ciphertext <italic>c</italic><sub><italic>ij</italic></sub>:<disp-formula id="eqn-2"><label>(2)</label>

<mml:math id="mml-eqn-2" display="block"><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi>E</mml:mi><mml:mi>n</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math>
</disp-formula>and sign <italic>&#x03C3;</italic><sub><italic>ij</italic></sub>:<disp-formula id="eqn-3"><label>(3)</label>

<mml:math id="mml-eqn-3" display="block"><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mrow><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>x</mml:mi></mml:msup></mml:math>
</disp-formula></p>
<p>Finally, the metadata <italic>SC</italic> composed of ciphertext &#x007B;<italic>c</italic><sub><italic>ij</italic></sub>&#x007D;<sub>1&#x2264;<italic>i</italic>&#x2264;<italic>m</italic>,1&#x2264;<italic>j</italic>&#x2264;<italic>n</italic></sub> and signature &#x007B;<italic>&#x03C3;</italic><sub><italic>ij</italic></sub>&#x007D;<sub>1&#x2264;<italic>i</italic>&#x2264;<italic>m</italic>,1&#x2264;<italic>j</italic>&#x2264;<italic>n</italic></sub> is output.<list list-type="simple"><list-item>
<p>&#x25CF; Build cuckoo filter <italic>CF</italic></p></list-item></list></p>
<p>According to algorithm <bold><italic>BuildCF</italic></bold>, the data owner constructs a cuckoo filter <italic>CF</italic><sub><italic>j</italic></sub> for the <italic>j</italic>-th attribute column. The owner calculates and generates the fingerprint <italic>f</italic>:<inline-formula id="ieqn-10">
<mml:math id="mml-ieqn-10"><mml:mi>f</mml:mi><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mi>g</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mi>p</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:mi>int</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>a</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula>, selects three random numbers <inline-formula id="ieqn-11">
<mml:math id="mml-ieqn-11"><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub></mml:math>
</inline-formula>, <inline-formula id="ieqn-12">
<mml:math id="mml-ieqn-12"><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub></mml:math>
</inline-formula> and <inline-formula id="ieqn-13">
<mml:math id="mml-ieqn-13"><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub></mml:math>
</inline-formula>, which satisfying<disp-formula id="eqn-4"><label>(4)</label>

<mml:math id="mml-eqn-4" display="block"><mml:msub><mml:mi>n</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>a</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">&#x2190;</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub></mml:math>
</disp-formula></p>
<p>Encrypt these three random numbers respectively: <inline-formula id="ieqn-14">
<mml:math id="mml-ieqn-14"><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi>E</mml:mi><mml:mi>n</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>p</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula>, <inline-formula id="ieqn-15">
<mml:math id="mml-ieqn-15"><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi>E</mml:mi><mml:mi>n</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>p</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula>, <inline-formula id="ieqn-16">
<mml:math id="mml-ieqn-16"><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi>E</mml:mi><mml:mi>n</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>p</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula> and generate auxiliary information <inline-formula id="ieqn-17">
<mml:math id="mml-ieqn-17"><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub></mml:math>
</inline-formula>. The fingerprint and auxiliary information are stored in the candidate buckets of the cuckoo filter hash table, so that the equation<disp-formula id="eqn-5"><label>(5)</label>

<mml:math id="mml-eqn-5" display="block"><mml:mi>D</mml:mi><mml:mi>e</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>D</mml:mi><mml:mi>e</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mi>D</mml:mi><mml:mi>e</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>a</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo></mml:math>
</disp-formula>is established, where <italic>n</italic><sub><italic>j</italic></sub>(<italic>a</italic>) is the total number of records whose attribute <italic>A</italic><sub><italic>j</italic></sub> value is equal to <italic>a</italic>. Finally, output filter <italic>CF</italic>&#x2009;&#x003D;&#x2009;&#x007B;<italic>CF</italic><sub><italic>j</italic></sub>&#x007D;<sub>1&#x2264;<italic>j</italic>&#x2264;<italic>n</italic></sub>.<list list-type="simple"><list-item>
<p>&#x25CF; Build a hash-based accumulator <italic>ACC</italic></p></list-item></list></p>
<p>According to algorithm <bold><italic>BuildACC</italic></bold>, the data owner constructs an accumulator <italic>ACC</italic><sub><italic>j</italic></sub>: <inline-formula id="ieqn-18">
<mml:math id="mml-ieqn-18"><mml:mi>A</mml:mi><mml:mi>C</mml:mi><mml:msub><mml:mi>C</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>g</mml:mi><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:munderover><mml:mrow><mml:mi>a</mml:mi><mml:mo lspace="thickmathspace" rspace="thickmathspace">mod</mml:mo><mml:mi>&#x03C6;</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>N</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math>
</inline-formula> for the <italic>j</italic>-th attribute. For the accumulative tree in <italic>ACC</italic>, the accumulative value <italic>acc</italic> and the root <italic>leaf</italic> are stored in each tree. Finally, the accumulator <italic>ACC</italic>&#x2009;&#x003D;&#x2009;&#x007B;<italic>ACC</italic><sub><italic>j</italic></sub>&#x007D;<sub>1&#x2264;<italic>j</italic>&#x2264;<italic>n</italic></sub> is output.<list list-type="simple"><list-item>
<p>&#x25CF; Build multi-keyword index <italic>Index</italic></p></list-item></list></p>
<p>According to algorithm <bold><italic>BuildIndex</italic></bold>, the data owner first performs word segmentation processing on the document to obtain a keyword set <italic>W</italic>&#x2009;&#x003D;&#x2009;&#x007B;<italic>w</italic><sub>1</sub>, <italic>w</italic><sub>2</sub>, &#x2026;, <italic>w</italic><sub><italic>m</italic></sub>&#x007D;. Then build an index for each data file according to the keywords, and then use a symmetric encryption algorithm to encrypt the index to form an encrypted multi-keyword index <italic>Index</italic>.<list list-type="simple"><list-item>
<p>&#x25CF; Finally, the data owner outsources the metadata <italic>SC</italic>, filter <italic>CF</italic>, accumulator <italic>ACC</italic>, and multi-keyword index <italic>Index</italic> to the service provider.</p></list-item></list></p>
</sec>
<sec id="s5_2_3">
<label>5.2.3</label>
<title>Data Retrieving</title>
<p>In the data retrieval phase, the authenticated user submits a query request to the SP to obtain the corresponding record from the outsourced database under the premise of ensuring correctness and completeness. The SP performs the query in the encrypted database, generates proofs of integrity of the query result, and sends them together to the data user.</p>
<p>Suppose a data user wants to query for records that meet <italic>A</italic><sub><italic>q</italic></sub>&#x2009;&#x003D;&#x2009;<italic>a</italic>. The following detailed process should be performed:<list list-type="simple"><list-item>
<p>&#x25CF; First, the data user selects a random value <italic>j</italic>&#x2009;&#x2208;&#x2009;<italic>J</italic>(<italic>J</italic>&#x2009;&#x003D;&#x2009;&#x007B;<italic>j</italic><sub>1</sub>, <italic>j</italic><sub>2</sub>, &#x2026;, <italic>j</italic><sub><italic>t</italic></sub>&#x007D;) for each element. Then, calculate the fingerprint <inline-formula id="ieqn-19">
<mml:math id="mml-ieqn-19"><mml:mi>f</mml:mi><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mi>g</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mi>p</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:mi>int</mml:mi></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>a</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula> and retrieve the mark <italic>T</italic><sub><italic>w</italic></sub>&#x2009;&#x2190;&#x2009;<italic>Trapdoor</italic><sub>0</sub>(<italic>a</italic>). Finally, send a query request <italic>T</italic>&#x2009;&#x003D;&#x2009;(<italic>q</italic>&#x007C;&#x007C;<italic>T</italic><sub><italic>w</italic></sub>&#x007C;&#x007C;<italic>J</italic>&#x007C;&#x007C;<italic>f</italic>&#x007C;&#x007C;&#x007B;<italic>y</italic><sub><italic>j</italic></sub>&#x007D;<sub><italic>j</italic>&#x2208;<italic>J</italic></sub>) to the service provider.</p></list-item><list-item>
<p>&#x25CF; When receiving the request <italic>T</italic>, the service provider first uses algorithm <italic>Search</italic><sub>0</sub>(<italic>t</italic>) on the <italic>q-</italic>th attribute column. The service provider then generates a proof <italic>P</italic>&#x2009;&#x003D;&#x2009;(<italic>&#x03BC;</italic>&#x007C;&#x007C;<italic>&#x03C3;</italic>&#x007C;&#x007C;<italic>R</italic>&#x007C;&#x007C;<italic>Aux</italic>). Finally, the corresponding result (&#x007B;<italic>c</italic><sub><italic>ij</italic></sub>&#x007D;<sub><italic>i</italic>&#x2208;<italic>I</italic>,<italic>j</italic>&#x2208;<italic>J</italic></sub>, <italic>P</italic>) is sent to the data user. Query in the hash table of the filter <italic>CF</italic>, if the fingerprint <italic>f</italic> is in the table, obtain the additional information <inline-formula id="ieqn-20">
<mml:math id="mml-ieqn-20"><mml:mi>A</mml:mi><mml:mi>u</mml:mi><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub></mml:math>
</inline-formula>, otherwise <italic>Aux</italic>&#x2009;&#x003D;&#x2009;&#x03D5;. Finally output the proof <italic>P</italic>&#x2009;&#x003D;&#x2009;(<italic>&#x03BC;</italic>&#x007C;&#x007C;<italic>&#x03C3;</italic>&#x007C;&#x007C;<italic>R</italic>&#x007C;&#x007C;<italic>Aux</italic>).</p></list-item></list></p>
</sec>
<sec id="s5_2_4">
<label>5.2.4</label>
<title>Data Verifying</title>
<p>When receiving the query result from the SP, the data user checks the integrity of the result. If the returned result is correct and complete, the data user decrypts &#x007B;<italic>c</italic><sub><italic>ij</italic></sub>&#x007D;<sub><italic>i</italic>&#x2208;<italic>I</italic>,<italic>j</italic>&#x2208;<italic>J</italic></sub> through <italic>Dec</italic><sub>0</sub>(&#x007B;<italic>c</italic><sub><italic>ij</italic></sub>&#x007D;<sub><italic>i</italic>&#x2208;<italic>I</italic>,<italic>j</italic>&#x2208;<italic>J</italic></sub>) and accepts them, otherwise rejects them.</p>
<p>Check the validity of the following formula.<disp-formula id="eqn-6"><label>(6)</label>

<mml:math id="mml-eqn-6" display="block"><mml:mi>e</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:msup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>g</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mover><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mo>?</mml:mo></mml:mover><mml:mo>&#x2061;</mml:mo><mml:mi>e</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:msup><mml:mo>&#x22C5;</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mn>1</mml:mn><mml:mi>&#x03BC;</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>v</mml:mi></mml:mrow></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math>
</disp-formula></p>
<p>If invalid, output <italic>Reject</italic>; otherwise, if <italic>Aux</italic>&#x2009;&#x2260;&#x2009;&#x03D5;, decrypt <inline-formula id="ieqn-21">
<mml:math id="mml-ieqn-21"><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>D</mml:mi><mml:mi>e</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>s</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula>, <inline-formula id="ieqn-22">
<mml:math id="mml-ieqn-22"><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>D</mml:mi><mml:mi>e</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>s</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula>, <inline-formula id="ieqn-23">
<mml:math id="mml-ieqn-23"><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>D</mml:mi><mml:mi>e</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>s</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula>. If <inline-formula id="ieqn-24">
<mml:math id="mml-ieqn-24"><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>&#x2260;</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>I</mml:mi><mml:mo fence="false" stretchy="false">|</mml:mo></mml:math>
</inline-formula>, it returns <italic>Reject</italic>, otherwise it returns <italic>Accept</italic>.</p>
</sec>
<sec id="s5_2_5">
<label>5.2.5</label>
<title>Data Update</title>
<p>The data owner can update records in the encrypted database. Assume that the data owner wants to update a record (<italic>a</italic><sub>1</sub>, <italic>a</italic><sub>2</sub>, &#x2026;, <italic>a</italic><sub><italic>n</italic></sub>), where <italic>a</italic><sub><italic>j</italic></sub> is the <italic>j</italic>-th attribute value. According to algorithm <bold><italic>Update</italic></bold>, for the different value <italic>a</italic> in the <italic>j</italic>-th attribute, the data owner first calculates ciphertext <italic>c</italic><sub><italic>j</italic></sub>, signature <italic>&#x03C3;</italic><sub><italic>j</italic></sub>, fingerprint <italic>f</italic><sub><italic>j</italic></sub> of the new record, and fingerprint <inline-formula id="ieqn-25">
<mml:math id="mml-ieqn-25"><mml:msubsup><mml:mi>f</mml:mi><mml:mi>j</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x2032;</mml:mi></mml:mrow></mml:msubsup></mml:math>
</inline-formula> of the old record of the record to be updated. Then, the owner sends these to the SP together. After receiving them, SP first obtains <inline-formula id="ieqn-26">
<mml:math id="mml-ieqn-26"><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub></mml:math>
</inline-formula> from the candidate bucket corresponding to <italic>CF</italic><sub><italic>j</italic></sub> through fingerprint <italic>f</italic><sub><italic>j</italic></sub>. Then calculate a new <inline-formula id="ieqn-27">
<mml:math id="mml-ieqn-27"><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub></mml:math>
</inline-formula>:<inline-formula id="ieqn-28">
<mml:math id="mml-ieqn-28"><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>&#x22C5;</mml:mo><mml:mi>E</mml:mi><mml:mi>n</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>p</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mn>2</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula> and a new <inline-formula id="ieqn-29">
<mml:math id="mml-ieqn-29"><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub></mml:math>
</inline-formula>:<inline-formula id="ieqn-30">
<mml:math id="mml-ieqn-30"><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>&#x22C5;</mml:mo><mml:mi>E</mml:mi><mml:mi>n</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>p</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mn>3</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula>. The SP stores the new <inline-formula id="ieqn-31">
<mml:math id="mml-ieqn-31"><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub></mml:math>
</inline-formula> to the correct position of <italic>CF</italic><sub><italic>j</italic></sub> and inserts &#x007B;<italic>c</italic><sub><italic>j</italic></sub>&#x007C;&#x007C;<italic>&#x03C3;</italic><sub><italic>j</italic></sub>&#x007D;<sub>1&#x2264;<italic>j</italic>&#x2264;<italic>n</italic></sub> into the <italic>SC</italic>. Finally output <italic>SC</italic>&#x2009;&#x003D;&#x2009;&#x007B;<italic>c</italic><sub><italic>j</italic></sub>&#x007C;&#x007C;<italic>&#x03C3;</italic><sub><italic>j</italic></sub>&#x007D;<sub>1&#x2264;<italic>j</italic>&#x2264;<italic>n</italic></sub> and <italic>CF</italic>&#x2009;&#x003D;&#x2009;&#x007B;<italic>CF</italic><sub><italic>j</italic></sub>&#x007D;<sub>1&#x2264;<italic>j</italic>&#x2264;<italic>n</italic></sub>.</p>
</sec>
</sec>
</sec>
<sec id="s6">
<label>6</label>
<title>Security Analysis</title>
<sec id="s6_1">
<label>6.1</label>
<title>Correctness</title>
<p>Analyze the correctness of the query results from two aspects.<list list-type="simple"><list-item><label>(1)</label>
<p>If the service provider does not modify the data, the result must be such that the formula <inline-formula id="ieqn-32">
<mml:math id="mml-ieqn-32"><mml:mi>e</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:msup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>g</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mover><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mo>?</mml:mo></mml:mover><mml:mo>&#x2061;</mml:mo><mml:mi>e</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:msup><mml:mo>&#x22C5;</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mn>1</mml:mn><mml:mi>&#x03BC;</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>v</mml:mi></mml:mrow></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math>
</inline-formula> holds. In this case, correctness can be explained as follows:<disp-formula id="eqn-7"><label>(7)</label>

<mml:math id="mml-eqn-7" display="block"><mml:mtable columnalign="right left" rowspacing=".5em" columnspacing="thickmathspace" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mi>e</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:msup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>g</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi>e</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:msubsup><mml:mi>&#x03C3;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:mi>x</mml:mi><mml:mi>r</mml:mi></mml:mrow></mml:msubsup><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>g</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mo>=</mml:mo><mml:mi>e</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi>x</mml:mi><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mi>g</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:mi>r</mml:mi><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>x</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>g</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mo>=</mml:mo><mml:mi>e</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:msup><mml:msubsup><mml:mi>g</mml:mi><mml:mn>1</mml:mn><mml:mrow><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:msubsup><mml:mi></mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:msubsup><mml:mi></mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi>r</mml:mi><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msubsup><mml:mi>g</mml:mi><mml:mn>2</mml:mn><mml:mi>x</mml:mi></mml:msubsup></mml:mrow></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mo>=</mml:mo><mml:mi>e</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:msup><mml:mo>&#x22C5;</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mn>1</mml:mn><mml:mi>&#x03BC;</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>v</mml:mi></mml:mrow></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math>
</disp-formula></p></list-item></list></p>
<p>In which, the randomly selected <inline-formula id="ieqn-33">
<mml:math id="mml-ieqn-33"><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:msubsup><mml:mo fence="false" stretchy="false">}</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:msubsup></mml:math>
</inline-formula> ensures the correctness of a single element in the database.<list list-type="simple"><list-item><label>(2)</label>
<p>If the service provider maliciously modifies the data, the probability of the service provider forging <inline-formula id="ieqn-34">
<mml:math id="mml-ieqn-34"><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x03BC;</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>&#x03C3;</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>R</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula> through the formula <inline-formula id="ieqn-35">
<mml:math id="mml-ieqn-35"><mml:mi>e</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:msup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>R</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:msub><mml:mi>g</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mover><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mo>?</mml:mo></mml:mover><mml:mo>&#x2061;</mml:mo><mml:mi>e</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:munderover><mml:mo movablelimits="false">&#x220F;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mo fence="false" stretchy="false">|</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:msup><mml:mo>&#x22C5;</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mn>1</mml:mn><mml:mi>&#x03BC;</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>v</mml:mi></mml:mrow></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math>
</inline-formula> should be negligible.</p></list-item></list></p>
</sec>
<sec id="s6_2">
<label>6.2</label>
<title>Completeness</title>
<p>In the context of controllable Paillier encryption, a service provider cannot construct a valid integrity-validated ciphertext without the help of a data owner or a data user authenticated by <bold>Theorem 1</bold>.</p>
<p><bold>Theorem 1.</bold> If the Paillier encryption scheme &#x03A0;&#x2009;&#x003D;&#x2009;(<italic>KeyGen</italic>, <italic>Enc</italic>, <italic>Dec</italic>) is <italic>IND-CPA</italic> secure and <italic>H</italic> is (<italic>t</italic>, <italic>q</italic>, <italic>L</italic>, &#x025B;)&#x2009;&#x2212;&#x2009;<italic>MAC</italic> secure, there is no adversary who can construct a valid ciphertext with a non-negligible probability.</p>
<p>Proof: Use contradictions to prove this theorem. Assuming that there is an adversary <italic>A</italic> who can construct an effective ciphertext with a non-negligible advantage, whose goal is to break the (<italic>t</italic>, <italic>q</italic>, <italic>L</italic>, &#x025B;)&#x2009;&#x2212;&#x2009;<italic>MAC</italic> security of hash <italic>H</italic>. First, <italic>B</italic> uses <inline-formula id="ieqn-36">
<mml:math id="mml-ieqn-36"><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>p</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mi>s</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mi mathvariant="normal">&#x03A0;</mml:mi><mml:mo>.</mml:mo><mml:mi>K</mml:mi><mml:mi>e</mml:mi><mml:mi>y</mml:mi><mml:mi>G</mml:mi><mml:mi>e</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mn>1</mml:mn><mml:mrow><mml:mi mathvariant="normal">&#x03BB;</mml:mi></mml:mrow></mml:msup><mml:mo stretchy="false">)</mml:mo></mml:math>
</inline-formula> and <inline-formula id="ieqn-37">
<mml:math id="mml-ieqn-37"><mml:mi>s</mml:mi><mml:msub><mml:mi>k</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo stretchy="false">&#x2190;</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thickmathspace" /><mml:mn>1</mml:mn><mml:msup><mml:mo fence="false" stretchy="false">}</mml:mo><mml:mrow><mml:mi mathvariant="normal">&#x03BB;</mml:mi></mml:mrow></mml:msup></mml:math>
</inline-formula> to set the game parameters. Then <italic>A</italic> can perform <italic>q</italic> queries at most. In each query, <italic>B</italic> randomly selects <italic>r</italic><sub><italic>i</italic></sub>, calculates <italic>c</italic><sub><italic>i</italic></sub>, and sends <italic>r</italic><sub><italic>i</italic></sub>&#x007C;&#x007C;<italic>sk</italic><sub>0</sub>&#x007C;&#x007C;<italic>c</italic><sub><italic>i</italic></sub> to <italic>H</italic>. Then <italic>B</italic> obtains the hash value <italic>h</italic><sub><italic>i</italic></sub> from <italic>H</italic> and sends (<italic>r</italic><sub><italic>i</italic></sub>, <italic>h</italic><sub><italic>i</italic></sub>, <italic>c</italic><sub><italic>i</italic></sub>) as ciphertext to <italic>A</italic>. After the query, <italic>A</italic> outputs a ciphertext (<italic>r</italic>, <italic>h</italic>, <italic>c</italic>) to <italic>B</italic> and <italic>B</italic> sends <italic>r</italic>&#x007C;&#x007C;<italic>sk</italic><sub>0</sub>&#x007C;&#x007C;<italic>c</italic> and h to <italic>H</italic>. Finally, <italic>H</italic> checks the validity of <italic>h</italic>&#x2009;&#x003D;&#x2009;<italic>H</italic>(<italic>r</italic>&#x007C;&#x007C;<italic>sk</italic><sub>0</sub>&#x007C;&#x007C;<italic>c</italic>). If the above equation is valid, then <italic>B</italic> succeeds, otherwise <italic>B</italic> fails. Suppose Pr[(<italic>r</italic>, <italic>h</italic>, <italic>c</italic>) is valid] &#x003D; <italic>&#x03B5;</italic>, and Pr[<italic>B</italic> success] &#x003D; <italic>&#x03B5;</italic>, where <italic>&#x03B5;</italic> cannot be ignored. Then <italic>B</italic> breaches (<italic>t</italic>, <italic>q</italic>, <italic>L</italic>, &#x025B;)&#x2009;&#x2212;&#x2009;<italic>MAC</italic> security of <italic>H</italic>, which is a contradiction.</p>
<p>Therefore, controllable Paillier encryption can prevent dishonest service providers from returning a small portion of the query results.</p>
</sec>
</sec>
<sec id="s7">
<label>7</label>
<title>Performance Evaluation</title>
<p>The experiment uses Pairing-based cryptography (PBC) library and OpenSSL library. Perform 100 times for each test and take the average. In order to accurately measure the overhead of the server and the client, all experiments are performed on the same machine, using Intel Xeon (R) E5-1620 3.50&#x2005;GHz CPU and 16 gb RAM to run Linux. We conduct a comprehensive experimental evaluation of the proposed scheme, including the construction time of the cuckoo filter <italic>CF</italic> and the accumulator <italic>ACC</italic> in the data outsourcing phase, as well as the communication cost and the integrity verification cost.</p>
<sec id="s7_1">
<label>7.1</label>
<title>Cost of CF Building Time</title>
<p>In the experiment, a timer is set to obtain the time for constructing the cuckoo filter <italic>CF</italic> for each different attribute, and then the average value is taken. Change the number of tuples in the database from 5000 to 40000 and initialize the size of the hash table to the total number of tuples. <xref ref-type="fig" rid="fig-3">Fig. 3</xref> plots the bar graph between the number of tuples and the construction time of the cuckoo filter <italic>CF</italic>. It can be found that the construction time increases as the total number of tuples increases. If you insert 4000 items into the hash table, the cost of construction time is 566.7 milliseconds, which is a very small overhead.</p>
<fig id="fig-3">
<label>Figure 3</label>
<caption>
<title>The building time of <italic>CF</italic></title></caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="IASC_27536-fig-3.png"/>
</fig>
</sec>
<sec id="s7_2">
<label>7.2</label>
<title>Cost of ACC Building Time</title>
<p>In the experiment, a timer is set to obtain the time for constructing the accumulator <italic>ACC</italic> for each different attribute, and then the average value is taken. <xref ref-type="fig" rid="fig-4">Fig. 4</xref> plots the bar graph between the number of tuples and the build time of the accumulator <italic>ACC</italic>. It can be found that the construction time increases as the total number of tuples increases.</p>
<fig id="fig-4">
<label>Figure 4</label>
<caption>
<title>The building time of <italic>ACC</italic></title></caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="IASC_27536-fig-4.png"/>
</fig>
</sec>
<sec id="s7_3">
<label>7.3</label>
<title>Cost of Communication</title>
<p>The communication cost in the data retrieval phase includes two parts: trapdoor cost and retrieval result cost. The cost of the trapdoor depends on the number of attributes that should be returned, namely &#x007C;<italic>J</italic>&#x007C;. Set the number of attributes that should be returned to &#x007C;<italic>J</italic>&#x007C; &#x003D; 5, 10, 15. In order to evaluate the cost of the query result, the number of tuples is changed from 1000 to 5000; the size of the hash table is also initialized to the total number of tuples. Finally, a bar graph between the number of tuples and the size of the query result is drawn and grouped according to the number of returned attributes. <xref ref-type="fig" rid="fig-5">Fig. 5</xref> shows the experimental results of the communication payload size, and compared with Wang&#x2019;s scheme, the communication cost of our proposed scheme is lower.</p>
<fig id="fig-5">
<label>Figure 5</label>
<caption>
<title>The size of communication payload</title></caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="IASC_27536-fig-5.png"/>
</fig>
</sec>
<sec id="s7_4">
<label>7.4</label>
<title>Cost of Integrity Verifying</title>
<p>Integrity verification consists of two parts: correctness and completeness. In the experiment, a timer is set to obtain the time overhead of these two parts and add them up as the time for integrity verification. Change the number of tuples from 1000 to 5000 and set the number of attributes that should be returned to &#x007C;<italic>J</italic>&#x007C; &#x003D; 5, 10, 15. The size of the hash table is also initialized to the total number of tuples. Finally, a bar graph between the number of tuples and the integrity verification time is drawn, grouped according to the number of returned attributes. <xref ref-type="fig" rid="fig-6">Fig. 6</xref> shows the experimental results of the integrity verification. It can be found that the time cost of the proposed scheme increases linearly with the number of returned attributes, and the cost is lower than that of Wang&#x2019;s scheme.</p>
<fig id="fig-6">
<label>Figure 6</label>
<caption>
<title>The time of integrity verifying</title></caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="IASC_27536-fig-6.png"/>
</fig>
</sec>
</sec>
<sec id="s8">
<label>8</label>
<title>Conclusion</title>
<p>Aiming at the problem of high communication overhead and low efficiency in multi-keyword query integrity verification of outsourced data, this paper proposes a Lightweight and Verifiable Multi-keyword Query Scheme, which does not require a third-party auditor and chooses a hash-based accumulator and combined with a cuckoo filter to construct a provably secure composite verification structure. A cuckoo filter is constructed for different attribute columns to achieve integrity verification and a hash-based accumulator is constructed to achieve correctness verification. A controllable Paillier encryption is also proposed to support dynamic data update. This method strikes a balance between the cost of verification structure generation, verification object generation and proof verification cost. In addition, we also theoretically prove the security and performance of the scheme. Finally, our experimental results demonstrate the effectiveness and efficiency of our scheme.</p>
</sec>
</body>
<back><fn-group>
<fn fn-type="other">
<p><bold>Funding Statement:</bold> This work was supported by the National Key R&#x0026;D Program of China (Grant No. 2021YFB3101104), Zhaokang Wang received the grant and the URLs to sponsors&#x2019; websites is <uri xlink:href="https://service.most.gov.cn/">https://service.most.gov.cn/</uri>. This work was supported by the National Natural Science Foundation of China (Grant No. 62072249), Yongjun Ren received the grant and the URLs to sponsors&#x2019; websites is <uri xlink:href="https://www.nsfc.gov.cn/">https://www.nsfc.gov.cn/</uri>.</p>
</fn>
<fn fn-type="conflict">
<p><bold>Conflicts of Interest:</bold> The authors declare that they have no conflicts of interest to report regarding the present study. Xiaowan Wang and Yongjun Ren are the co-corresponding authors.</p>
</fn>
</fn-group>
<ref-list content-type="authoryear">
<title>References</title>
<ref id="ref-1"><label>[1]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y. J.</given-names> <surname>Ren</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Qi</surname></string-name>, <string-name><given-names>Y. P.</given-names> <surname>Cheng</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Wang</surname></string-name> and <string-name><given-names>O.</given-names> <surname>Alfarraj</surname></string-name></person-group>, &#x201C;<article-title>Digital continuity guarantee approach of electronic record based on data quality theory</article-title>,&#x201D; <source>Computers, Materials &#x0026; Continua</source>, vol. <volume>63</volume>, no. <issue>3</issue>, pp. <fpage>1471</fpage>&#x2013;<lpage>1483</lpage>, <year>2020</year>.</mixed-citation></ref>
<ref id="ref-2"><label>[2]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>C. P.</given-names> <surname>Ge</surname></string-name>, <string-name><given-names>W.</given-names> <surname>Susilo</surname></string-name>, <string-name><given-names>Z.</given-names> <surname>Liu</surname></string-name>, <string-name><given-names>J. Y.</given-names> <surname>Xia</surname></string-name>, <string-name><given-names>L. M.</given-names> <surname>Fang</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>Secure keyword search and data sharing mechanism for cloud computing</article-title>,&#x201D; <source>IEEE Transactions on Dependable and Secure Computing</source>, vol. <volume>18</volume>, no. <issue>6</issue>, pp. <fpage>2787</fpage>&#x2013;<lpage>2800</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-3"><label>[3]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>L. M.</given-names> <surname>Fang</surname></string-name>, <string-name><given-names>M. H.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>Z.</given-names> <surname>Liu</surname></string-name>, <string-name><given-names>C. T.</given-names> <surname>Lin</surname></string-name>, <string-name><given-names>S. L.</given-names> <surname>Ji</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>A secure and authenticated mobile payment protocol against off-site attack strategy</article-title>,&#x201D; <source>IEEE Transactions on Dependable and Secure Computing</source>, vol. <volume>21</volume>, no. <issue>2</issue>, pp. <fpage>1</fpage>&#x2013;<lpage>12</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-4"><label>[4]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>S. R.</given-names> <surname>Ausekar</surname></string-name> and <string-name><given-names>S. K.</given-names> <surname>Pasupuleti</surname></string-name></person-group>, &#x201C;<article-title>Dynamic verifiable outsourced database with freshness in cloud computing</article-title>,&#x201D; <source>Procedia Computer Science</source>, vol. <volume>143</volume>, pp. <fpage>367</fpage>&#x2013;<lpage>377</lpage>, <year>2018</year>.</mixed-citation></ref>
<ref id="ref-5"><label>[5]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>T.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>N. P.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>Q.</given-names> <surname>Qian</surname></string-name>, <string-name><given-names>W.</given-names> <surname>Xu</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Ren</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>Inversion of temperature and humidity profile of microwave radiometer based on bp network</article-title>,&#x201D; <source>Intelligent Automation &#x0026; Soft Computing</source>, vol. <volume>29</volume>, no. <issue>3</issue>, pp. <fpage>741</fpage>&#x2013;<lpage>755</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-6"><label>[6]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y. J.</given-names> <surname>Ren</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Leng</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Qi</surname></string-name>, <string-name><given-names>K. S.</given-names> <surname>Pradip</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Wang</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>Multiple cloud storage mechanism based on blockchain in smart homes</article-title>,&#x201D; <source>Future Generation Computer Systems</source>, vol. <volume>115</volume>, pp. <fpage>304</fpage>&#x2013;<lpage>313</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-7"><label>[7]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>J. Y.</given-names> <surname>Hu</surname></string-name>, <string-name><given-names>K. L.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>C. B.</given-names> <surname>Liu</surname></string-name> and <string-name><given-names>K. Q.</given-names> <surname>Li</surname></string-name></person-group>, &#x201C;<article-title>A game-based price bidding algorithm for multi-attribute cloud resource provision</article-title>,&#x201D; <source>IEEE Transactions on Services Computing</source>, vol. <volume>21</volume>, no. <issue>8</issue>, pp. <fpage>345</fpage>&#x2013;<lpage>356</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-8"><label>[8]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>C. B.</given-names> <surname>Liu</surname></string-name>, <string-name><given-names>K. L.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>K. Q.</given-names> <surname>Li</surname></string-name> and <string-name><given-names>R.</given-names> <surname>Buyya</surname></string-name></person-group>, &#x201C;<article-title>A new service mechanism for profit optimizations of a cloud provider and its users</article-title>,&#x201D; <source>IEEE Transactions on Cloud Computing</source>, vol. <volume>17</volume>, no. <issue>4</issue>, pp. <fpage>156</fpage>&#x2013;<lpage>168</lpage>, <year>2017</year>.</mixed-citation></ref>
<ref id="ref-9"><label>[9]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y. J.</given-names> <surname>Ren</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Leng</surname></string-name>, <string-name><given-names>Y. P.</given-names> <surname>Cheng</surname></string-name> and <string-name><given-names>J.</given-names> <surname>Wang</surname></string-name></person-group>, &#x201C;<article-title>Secure data storage based on blockchain and coding in edge computing</article-title>,&#x201D; <source>Mathematical Biosciences and Engineering</source>, vol. <volume>16</volume>, no. <issue>4</issue>, pp. <fpage>1874</fpage>&#x2013;<lpage>1892</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-10"><label>[10]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>J.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Han</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>S. M.</given-names> <surname>He</surname></string-name>, <string-name><given-names>P. K.</given-names> <surname>Sharma</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>Multiple strategies differential privacy on sparse tensor factorization for network traffic analysis in 5G</article-title>,&#x201D; <source>IEEE Transactions on Industrial Informatics</source>, vol. <volume>18</volume>, no. <issue>3</issue>, pp. <fpage>1939</fpage>&#x2013;<lpage>1948</lpage>, <year>2022</year>.</mixed-citation></ref>
<ref id="ref-11"><label>[11]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y. J.</given-names> <surname>Ren</surname></string-name>, <string-name><given-names>F. J.</given-names> <surname>Zhu</surname></string-name>, <string-name><given-names>S. P.</given-names> <surname>Kumar</surname></string-name>, <string-name><given-names>T.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Wang</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>Data query mechanism based on hash computing power of blockchain in internet of things</article-title>,&#x201D; <source>Sensors</source>, vol. <volume>20</volume>, no. <issue>1</issue>, pp. <fpage>1</fpage>&#x2013;<lpage>22</lpage>, <year>2020</year>.</mixed-citation></ref>
<ref id="ref-12"><label>[12]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>X.</given-names> <surname>Zhou</surname></string-name>, <string-name><given-names>K. L.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>Y. T.</given-names> <surname>Zhou</surname></string-name> and <string-name><given-names>K. Q.</given-names> <surname>Li</surname></string-name></person-group>, &#x201C;<article-title>Adaptive processing for distributed skyline queries over uncertain data</article-title>,&#x201D; <source>IEEE Transactions on Knowledge &#x0026; Data Engineering</source>, vol. <volume>28</volume>, no. <issue>2</issue>, pp. <fpage>371</fpage>&#x2013;<lpage>384</lpage>, <year>2016</year>.</mixed-citation></ref>
<ref id="ref-13"><label>[13]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y. J.</given-names> <surname>Ren</surname></string-name>, <string-name><given-names>F.</given-names> <surname>Zhu</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>P.</given-names> <surname>Sharma</surname></string-name> and <string-name><given-names>U.</given-names> <surname>Ghosh</surname></string-name></person-group>, &#x201C;<article-title>Novel vote scheme for decision-making feedback based on blockchain in internet of vehicles</article-title>,&#x201D; <source>IEEE Transactions on Intelligent Transportation Systems</source>, vol. <volume>23</volume>, no. <issue>2</issue>, pp. <fpage>1639</fpage>&#x2013;<lpage>1648</lpage>, <year>2022</year>.</mixed-citation></ref>
<ref id="ref-14"><label>[14]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>C. P.</given-names> <surname>Ge</surname></string-name>, <string-name><given-names>W.</given-names> <surname>Susilo</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Baek</surname></string-name>, <string-name><given-names>Z.</given-names> <surname>Liu</surname></string-name>, <string-name><given-names>J. Y.</given-names> <surname>Xia</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>Revocable attribute-based encryption with data integrity in clouds</article-title>,&#x201D; <source>IEEE Transactions on Dependable and Secure Computing</source>, vol. 99, pp. 1, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-15"><label>[15]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>J.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>C. Y.</given-names> <surname>Jin</surname></string-name>, <string-name><given-names>Q.</given-names> <surname>Tang</surname></string-name>, <string-name><given-names>N. X.</given-names> <surname>Xiong</surname></string-name> and <string-name><given-names>G.</given-names> <surname>Srivastava</surname></string-name></person-group>, &#x201C;<article-title>Intelligent ubiquitous network accessibility for wireless-powered MEC in UAV-assisted B5G</article-title>,&#x201D; <source>IEEE Transactions on Network Science and Engineering</source>, vol. <volume>8</volume>, no. <issue>4</issue>, pp. <fpage>2801</fpage>&#x2013;<lpage>2813</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-16"><label>[16]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>C. P.</given-names> <surname>Ge</surname></string-name>, <string-name><given-names>W.</given-names> <surname>Susilo</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Baek</surname></string-name>, <string-name><given-names>Z.</given-names> <surname>Liu</surname></string-name>, <string-name><given-names>J. Y.</given-names> <surname>Xia</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>A verifiable and fair attribute-based proxy re-encryption scheme for data sharing in clouds</article-title>,&#x201D; <source>IEEE Transactions on Dependable and Secure Computing</source>, vol. <volume>21</volume>, no. <issue>7</issue>, pp. <fpage>1</fpage>&#x2013;<lpage>12</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-17"><label>[17]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>L.</given-names> <surname>Ren</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Hu</surname></string-name>, <string-name><given-names>M.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>L.</given-names> <surname>Zhang</surname></string-name> and <string-name><given-names>J.</given-names> <surname>Xia</surname></string-name></person-group>, &#x201C;<article-title>Structured graded lung rehabilitation for children with mechanical ventilation</article-title>,&#x201D; <source>Computer Systems Science &#x0026; Engineering</source>, vol. <volume>40</volume>, no. <issue>1</issue>, pp. <fpage>139</fpage>&#x2013;<lpage>150</lpage>, <year>2022</year>.</mixed-citation></ref>
<ref id="ref-18"><label>[18]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>C. P.</given-names> <surname>Ge</surname></string-name>, <string-name><given-names>Z.</given-names> <surname>Liu</surname></string-name>, <string-name><given-names>J. Y.</given-names> <surname>Xia</surname></string-name> and <string-name><given-names>L. M.</given-names> <surname>Fang</surname></string-name></person-group>, &#x201C;<article-title>Revocable identity-based broadcast proxy re-encryption for data sharing in clouds</article-title>,&#x201D; <source>IEEE Transactions on Dependable and Secure Computing</source>, vol. <volume>18</volume>, no. <issue>3</issue>, pp. <fpage>1214</fpage>&#x2013;<lpage>1226</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-19"><label>[19]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Z.</given-names> <surname>Fan</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Peng</surname></string-name>, <string-name><given-names>B.</given-names> <surname>Choi</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Xu</surname></string-name> and <string-name><given-names>S. S.</given-names> <surname>Bhowmick</surname></string-name></person-group>, &#x201C;<article-title>Towards efficient authenticated subgraph query service in outsourced graph databases</article-title>,&#x201D; <source>IEEE Transactions on Services Computing</source>, vol. <volume>7</volume>, no. <issue>4</issue>, pp. <fpage>696</fpage>&#x2013;<lpage>713</lpage>, <year>2014</year>.</mixed-citation></ref>
<ref id="ref-20"><label>[20]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>J.</given-names> <surname>Wang</surname></string-name> and <string-name><given-names>X.</given-names> <surname>Chen</surname></string-name></person-group>, &#x201C;<article-title>Efficient and secure storage for outsourced data: A survey</article-title>,&#x201D; <source>Data Science and Engineering</source>, vol. <volume>1</volume>, no. <issue>3</issue>, pp. <fpage>178</fpage>&#x2013;<lpage>188</lpage>, <year>2016</year>.</mixed-citation></ref>
<ref id="ref-21"><label>[21]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>T.</given-names> <surname>Xiang</surname></string-name>, <string-name><given-names>X.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>F.</given-names> <surname>Chen</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Yang</surname></string-name> and <string-name><given-names>S.</given-names> <surname>Zhang</surname></string-name></person-group>, &#x201C;<article-title>Achieving verifiable, dynamic and efficient auditing for outsourced database in cloud</article-title>,&#x201D; <source>Journal of Parallel and Distributed Computing</source>, vol. <volume>112</volume>, pp. <fpage>97</fpage>&#x2013;<lpage>107</lpage>, <year>2018</year>.</mixed-citation></ref>
<ref id="ref-22"><label>[22]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>J. F.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>X. F.</given-names> <surname>Chen</surname></string-name>, <string-name><given-names>X. Y.</given-names> <surname>Huang</surname></string-name>, <string-name><given-names>I.</given-names> <surname>You</surname></string-name> and <string-name><given-names>Y.</given-names> <surname>Xiang</surname></string-name></person-group>, &#x201C;<article-title>Verifiable auditing for outsourced database in cloud computing</article-title>,&#x201D; <source>IEEE Transactions on Computers</source>, vol. <volume>64</volume>, no. <issue>11</issue>, pp. <fpage>3293</fpage>&#x2013;<lpage>3303</lpage>, <year>2015</year>.</mixed-citation></ref>
<ref id="ref-23"><label>[23]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>J. F.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>X. F.</given-names> <surname>Chen</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>J. L.</given-names> <surname>Zhao</surname></string-name> and <string-name><given-names>J.</given-names> <surname>Shen</surname></string-name></person-group>, &#x201C;<article-title>Towards achieving flexible and verifiable search for outsourced database in cloud computing</article-title>,&#x201D; <source>Future Generation Computer Systems</source>, vol. 67, pp. <fpage>266</fpage>&#x2013;<lpage>275</lpage>, <year>2017</year>.</mixed-citation></ref>
<ref id="ref-24"><label>[24]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>S.</given-names> <surname>Hraiz</surname></string-name>, <string-name><given-names>G.</given-names> <surname>Al-Naymat</surname></string-name> and <string-name><given-names>A.</given-names> <surname>Awajan</surname></string-name></person-group>, &#x201C;<article-title>A novel method to verify the search results of database queries on cloud computing</article-title>,&#x201D; in <conf-name>2020 21st Int. Arab Conf. on Information Technology (ACIT)</conf-name>, 6th of October City, Cairo, Egypt, pp. <fpage>1</fpage>&#x2013;<lpage>7</lpage>, <year>2020</year>.</mixed-citation></ref>
<ref id="ref-25"><label>[25]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>M.</given-names> <surname>Rady</surname></string-name>, <string-name><given-names>T.</given-names> <surname>Abdelkader</surname></string-name> and <string-name><given-names>R.</given-names> <surname>Ismail</surname></string-name></person-group>, &#x201C;<article-title>Integrity and confidentiality in cloud outsourced data</article-title>,&#x201D; <source>Ain Shams Engineering Journal</source>, vol. <volume>10</volume>, no. <issue>2</issue>, pp. <fpage>275</fpage>&#x2013;<lpage>285</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-26"><label>[26]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>H.</given-names> <surname>Yin</surname></string-name>, <string-name><given-names>Z.</given-names> <surname>Qin</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>L.</given-names> <surname>Ou</surname></string-name> and <string-name><given-names>K.</given-names> <surname>Li</surname></string-name></person-group>, &#x201C;<article-title>Achieving secure, universal, and fine-grained query results verification for secure search scheme over encrypted cloud data</article-title>,&#x201D; <source>IEEE Transactions on Cloud Computing</source>, vol. <volume>9</volume>, no. <issue>1</issue>, pp. <fpage>27</fpage>&#x2013;<lpage>39</lpage>, <year>2017</year>.</mixed-citation></ref>
<ref id="ref-27"><label>[27]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y. J.</given-names> <surname>Ren</surname></string-name>, <string-name><given-names>K.</given-names> <surname>Zhu</surname></string-name>, <string-name><given-names>Y. Q.</given-names> <surname>Gao</surname></string-name>, <string-name><given-names>J. Y.</given-names> <surname>Xia</surname></string-name>, <string-name><given-names>S.</given-names> <surname>Zhou</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>Long-term preservation of electronic record based on digital continuity in smart cities</article-title>,&#x201D; <source>Computers, Materials &#x0026; Continua</source>, vol. <volume>66</volume>, no. <issue>3</issue>, pp. <fpage>3271</fpage>&#x2013;<lpage>3287</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-28"><label>[28]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>B.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>B.</given-names> <surname>Dong</surname></string-name> and <string-name><given-names>W. H.</given-names> <surname>Wang</surname></string-name></person-group>, &#x201C;<article-title>Integrity authentication for sql query evaluation on outsourced databases: A survey</article-title>,&#x201D; <source>IEEE Transactions on Knowledge and Data Engineering</source>, vol. <volume>19</volume>, no. <issue>8</issue>, pp. <fpage>287</fpage>&#x2013;<lpage>298</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-29"><label>[29]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>M.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>C.</given-names> <surname>Hong</surname></string-name> and <string-name><given-names>C.</given-names> <surname>Chen</surname></string-name></person-group>, &#x201C;<article-title>Server transparent query authentication of outsourced database</article-title>,&#x201D; <source>Journal of Computer Research and Development</source>, vol. <volume>47</volume>, no. <issue>1</issue>, pp. <fpage>182</fpage>&#x2013;<lpage>190</lpage>, <year>2010</year>.</mixed-citation></ref>
<ref id="ref-30"><label>[30]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y. J.</given-names> <surname>Ren</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Qi</surname></string-name>, <string-name><given-names>Y. P.</given-names> <surname>Liu</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Wang</surname></string-name> and <string-name><given-names>G.</given-names> <surname>Kim</surname></string-name></person-group>, &#x201C;<article-title>Integrity verification mechanism of sensor data based on bilinear map accumulator</article-title>,&#x201D; <source>ACM Transactions on Internet Technology</source>, vol. <volume>21</volume>, no. <issue>1</issue>, pp. <fpage>1</fpage>&#x2013;<lpage>20</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-31"><label>[31]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>X. R.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>W. F.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>W.</given-names> <surname>Sun</surname></string-name>, <string-name><given-names>X. M.</given-names> <surname>Sun</surname></string-name> and <string-name><given-names>S. K.</given-names> <surname>Jha</surname></string-name></person-group>, &#x201C;<article-title>A robust 3-D medical watermarking based on wavelet transform for data protection</article-title>,&#x201D; <source>Computer Systems Science &#x0026; Engineering</source>, vol. <volume>41</volume>, no. <issue>3</issue>, pp. <fpage>1043</fpage>&#x2013;<lpage>1056</lpage>, <year>2022</year>.</mixed-citation></ref>
<ref id="ref-32"><label>[32]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>P.</given-names> <surname>Devanbu</surname></string-name>, <string-name><given-names>M.</given-names> <surname>Gertz</surname></string-name>, <string-name><given-names>C.</given-names> <surname>Martel</surname></string-name> and <string-name><given-names>S. G.</given-names> <surname>Stubblebine</surname></string-name></person-group>, &#x201C;<article-title>Authentic data publication over the internet</article-title>,&#x201D; <source>Journal of Computer Security</source>, vol. <volume>11</volume>, no. <issue>3</issue>, pp. <fpage>291</fpage>&#x2013;<lpage>314</lpage>, <year>2003</year>.</mixed-citation></ref>
<ref id="ref-33"><label>[33]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>X. R.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>X.</given-names> <surname>Sun</surname></string-name>, <string-name><given-names>W.</given-names> <surname>Sun</surname></string-name>, <string-name><given-names>T.</given-names> <surname>Xu</surname></string-name> and <string-name><given-names>P. P.</given-names> <surname>Wang</surname></string-name></person-group>, &#x201C;<article-title>Deformation expression of soft tissue based on BP neural network</article-title>,&#x201D; <source>Intelligent Automation &#x0026; Soft Computing</source>, vol. <volume>32</volume>, no. <issue>2</issue>, pp. <fpage>1041</fpage>&#x2013;<lpage>1053</lpage>, <year>2022</year>.</mixed-citation></ref>
<ref id="ref-34"><label>[34]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>B.</given-names> <surname>Fan</surname></string-name>, <string-name><given-names>D. G.</given-names> <surname>Andersen</surname></string-name>, <string-name><given-names>M.</given-names> <surname>Kaminsky</surname></string-name> and <string-name><given-names>M. D.</given-names> <surname>Mitzenmacher</surname></string-name></person-group>, &#x201C;<article-title>Cuckoo filter: Practically better than bloom</article-title>,&#x201D; in <conf-name>Proc. of the 10th ACM Int. on Conf. on Emerging Networking Experiments and Technologies</conf-name>, New York, NY, USA, vol. <volume>14</volume>, no. <issue>2</issue>, pp. <fpage>75</fpage>&#x2013;<lpage>88</lpage>, <year>2014</year>.</mixed-citation></ref>
</ref-list>
</back>
</article>