<?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" xml:lang="en" article-type="research-article" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="pmc">CMC</journal-id>
<journal-id journal-id-type="nlm-ta">CMC</journal-id>
<journal-id journal-id-type="publisher-id">CMC</journal-id>
<journal-title-group>
<journal-title>Computers, Materials &#x0026; Continua</journal-title>
</journal-title-group>
<issn pub-type="epub">1546-2226</issn>
<issn pub-type="ppub">1546-2218</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">50425</article-id>
<article-id pub-id-type="doi">10.32604/cmc.2024.050425</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Preserving Data Secrecy and Integrity for Cloud Storage Using Smart Contracts and Cryptographic Primitives</article-title>
<alt-title alt-title-type="left-running-head">Preserving Data Secrecy and Integrity for Cloud Storage Using Smart Contracts and Cryptographic Primitives</alt-title>
<alt-title alt-title-type="right-running-head">Preserving Data Secrecy and Integrity for Cloud Storage Using Smart Contracts and Cryptographic Primitives</alt-title>
</title-group>
<contrib-group>
<contrib id="author-1" contrib-type="author" corresp="yes">
<name name-style="western"><surname>Alharby</surname><given-names>Maher</given-names></name><email>mharby@taibahu.edu.sa</email></contrib>
<aff>
<label></label><institution>Cybersecurity Department, College of Computer Science and Engineering, Taibah University</institution>, <addr-line>Medina, 42353</addr-line>, <country>Saudi Arabia</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>&#x002A;</label>Corresponding Author: Maher Alharby. Email: <email>mharby@taibahu.edu.sa</email></corresp>
</author-notes>
<pub-date date-type="collection" publication-format="electronic">
<year>2024</year></pub-date>
<pub-date date-type="pub" publication-format="electronic"><day>15</day>
<month>5</month>
<year>2024</year></pub-date>
<volume>79</volume>
<issue>2</issue>
<fpage>2449</fpage>
<lpage>2463</lpage>
<history>
<date date-type="received">
<day>06</day>
<month>2</month>
<year>2024</year>
</date>
<date date-type="accepted">
<day>29</day>
<month>3</month>
<year>2024</year>
</date>
</history>
<permissions>
<copyright-statement>&#x00A9; 2024 Alharby</copyright-statement>
<copyright-year>2024</copyright-year>
<copyright-holder>Alharby</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_CMC_50425.pdf"></self-uri>
<abstract>
<p>Cloud computing has emerged as a viable alternative to traditional computing infrastructures, offering various benefits. However, the adoption of cloud storage poses significant risks to data secrecy and integrity. This article presents an effective mechanism to preserve the secrecy and integrity of data stored on the public cloud by leveraging blockchain technology, smart contracts, and cryptographic primitives. The proposed approach utilizes a Solidity-based smart contract as an auditor for maintaining and verifying the integrity of outsourced data. To preserve data secrecy, symmetric encryption systems are employed to encrypt user data before outsourcing it. An extensive performance analysis is conducted to illustrate the efficiency of the proposed mechanism. Additionally, a rigorous assessment is conducted to ensure that the developed smart contract is free from vulnerabilities and to measure its associated running costs. The security analysis of the proposed system confirms that our approach can securely maintain the confidentiality and integrity of cloud storage, even in the presence of malicious entities. The proposed mechanism contributes to enhancing data security in cloud computing environments and can be used as a foundation for developing more secure cloud storage systems.</p>
</abstract>
<kwd-group kwd-group-type="author">
<kwd>Cloud storage</kwd>
<kwd>data secrecy</kwd>
<kwd>data integrity</kwd>
<kwd>smart contracts</kwd>
<kwd>cryptography</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<label>1</label>
<title>Introduction</title>
<p>Cloud computing has arisen as an alternative to traditional computing infrastructures. It offers users the convenience of accessing a diverse range of computing resources, such as storage, servers, and applications, as per their requirements via the Internet. This computing paradigm encompasses three core service models: Platform as a Service, Infrastructure as a Service, and Software as a Service. Among the various offerings, cloud storage services present unique advantages. These include resource accessibility from any location, cost-effectiveness, and the removal of the hassle associated with managing hardware and software in-house. However, the transition to cloud storage poses significant risks to data security, specifically data secrecy and integrity. A recent report has shown that 73% of companies are concerned about cloud security [<xref ref-type="bibr" rid="ref-1">1</xref>]. Data secrecy refers to data protection from unauthorized access, which is typically achieved through cryptographic methods. On the other hand, data integrity ensures that data remains unaltered and authentic, which is often maintained using hash functions and digital signatures.</p>
<p>Verifying the integrity of data stored on the cloud poses a significant challenge for users as they usually delete their local copies once data has been uploaded to the cloud [<xref ref-type="bibr" rid="ref-2">2</xref>]. Regularly downloading data for integrity checks is not practical due to bandwidth constraints [<xref ref-type="bibr" rid="ref-3">3</xref>]. That is, many researchers have proposed the use of a third-party auditor to check the integrity of cloud storage. Ensuring the security of third-party auditors is an essential challenge due to the potential for malicious behavior. Recently, researchers have started exploring blockchain technologies to eliminate the reliance on third-party auditors. Blockchain technology provides a secure, transparent, and trustless method for verifying transactions in various applications, including supply chain management [<xref ref-type="bibr" rid="ref-4">4</xref>], healthcare [<xref ref-type="bibr" rid="ref-5">5</xref>], and cloud storage [<xref ref-type="bibr" rid="ref-6">6</xref>]. Smart contracts can be utilized on top of the blockchain network to replace traditional third-party auditors, ensuring data integrity and promoting honesty. However, existing research studies suffer from inefficiency as they require extensive computation overhead and do not adequately address the privacy of user data files.</p>
<p>In this article, we aim to address the limitations of current research by introducing an efficient and privacy-preserving mechanism that guarantees both the integrity and secrecy of data stored on the public cloud. To achieve this, we leverage blockchain and smart contract technologies to perform periodic data audits, as they are well-known for their ability to provide data immutability. In addition, we leverage cryptographic primitives to maintain data secrecy by encrypting the user data stored on the cloud.</p>
<p>The contributions of this article are as follows. Firstly, we propose an efficient scheme to preserve the confidentiality and integrity of cloud storage by leveraging smart contracts, blockchain oracles, and symmetric cryptographic algorithms. Smart contracts and blockchain oracles are primarily used to verify data integrity, while cryptographic algorithms are used to maintain the secrecy of outsourced data. Secondly, we implement the proposed system, including its smart contract and oracle interface. We implement the system&#x2019;s smart contract as a data auditor using the Solidity language. We employ a Chainlink oracle interface to facilitate communication between the smart contract and the cloud storage. Thirdly, we conduct extensive performance analysis to demonstrate the efficiency of our system. Fourthly, we conduct a vulnerability assessment to ensure that the developed smart contract is free from bugs and errors and measure the cost associated with running such smart contracts. Additionally, we discuss how our proposed scheme can securely preserve the confidentiality and integrity of cloud storage, even in the presence of malicious entities.</p>
<p>This article is structured as follows. Related work is discussed in <xref ref-type="sec" rid="s2">Section 2</xref>. We introduce the design and implementation of our proposed scheme in <xref ref-type="sec" rid="s3">Sections 3</xref> and <xref ref-type="sec" rid="s4">4</xref>. In <xref ref-type="sec" rid="s5">Section 5</xref>, we present the findings concerning performance evaluation and smart contacts. We provide a security analysis of the system in <xref ref-type="sec" rid="s6">Section 6</xref> and conclude the article in <xref ref-type="sec" rid="s7">Section 7</xref>.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Related Work</title>
<sec id="s2_1">
<label>2.1</label>
<title>Data Integrity Verification Using Third-Party Auditors</title>
<p>Previous studies led by Juels et al. [<xref ref-type="bibr" rid="ref-7">7</xref>] have developed the concept of Proofs of Retrievability, which allows a verifier to confirm the authenticity and retrievability of a specific file. Shacham et al. [<xref ref-type="bibr" rid="ref-8">8</xref>] have built on this concept by integrating Boneh-Lynn-Shacham (BLS) signatures and pseudorandom functions, resulting in reduced times for queries and responses. Additionally, Ateniese et al. [<xref ref-type="bibr" rid="ref-9">9</xref>] have introduced the Provable Data Possession model, which allows users to verify if their data, hosted on untrustworthy servers, is unaltered without retrieving it. These approaches, however, require continuous communication between the user and the service provider, which can lead to significant performance burdens for the user.</p>
<p>To mitigate the impact on user performance, incorporating a third-party auditor for verification purposes has been suggested. For instance, Zhu et al. [<xref ref-type="bibr" rid="ref-10">10</xref>] introduced a data integrity verification approach that uses a short signature algorithm, ensuring privacy while enabling public auditing via a centralized auditor. Similarly, Ping et al. [<xref ref-type="bibr" rid="ref-11">11</xref>] developed a scheme for data integrity checks using algebraic signatures and elliptic curve cryptography. This approach delegates the role of verifying outsourced data integrity to an intermediary. Moreover, Lu et al. [<xref ref-type="bibr" rid="ref-12">12</xref>] proposed a more efficient auditing method where the third-party auditor generates block tags and conducts integrity checks, relieving the user of these tasks. Furthermore, Huang et al. [<xref ref-type="bibr" rid="ref-13">13</xref>] designed a privacy-preserving data integrity system that takes different data auditing frequencies into consideration. The system aims to reduce the auditing costs that third-party auditors charge for users who do not regularly verify their data files. However, ensuring the security of third-party auditors remains a critical issue that this article aims to address.</p>
</sec>
<sec id="s2_2">
<label>2.2</label>
<title>Data Integrity Verification Using Blockchain Technology</title>
<p>In the realm of blockchain-based research, a significant focus has been on applications within cloud storage that replace traditional third-party auditors with blockchain technology to manage and permanently record auditing tasks, thus ensuring mutual honesty among participants. In this context, Huang et al. [<xref ref-type="bibr" rid="ref-14">14</xref>] introduced a collaborative blockchain system to audit cloud data storage. Here, instead of a single auditor, consensus nodes collectively perform auditing tasks and maintain data integrity against diverse threats. However, some models exclude blockchain from essential verification processes. Yue et al. [<xref ref-type="bibr" rid="ref-15">15</xref>] developed a blockchain scheme that utilizes Merkle trees and random challenge numbers to verify the integrity of cloud data. Wei et al. [<xref ref-type="bibr" rid="ref-16">16</xref>] created a system that allows multiple parties to collaboratively verify data trustworthiness by utilizing blockchain&#x2019;s smart contract features to track data modifications. Shu et al. [<xref ref-type="bibr" rid="ref-17">17</xref>] developed a decentralized framework that operates similarly to a traditional third-party auditor, but with reduced risks of compromised auditors and hostile blockchain miners due to its self-governing structure. Tian et al. [<xref ref-type="bibr" rid="ref-18">18</xref>] introduced a blockchain-enabled secure de-duplication and collective auditing methodology for distributed storage systems. This methodology incorporates a dual direction shared auditing process, facilitating decentralized public auditing without the need for a traditional intermediary. Zhao et al. [<xref ref-type="bibr" rid="ref-19">19</xref>] presented a blockchain-supported public auditing scheme, offering conditional anonymity and privacy preservation. It is designed to withstand man-in-the-middle attacks and ensure the integrity of stored data, along with protecting data privacy and offering conditional anonymity for users&#x2019; identities. Guo et al. [<xref ref-type="bibr" rid="ref-20">20</xref>] devised a reversible, blockchain-aided attribute-based encryption mechanism with an escrow-free setup, addressing the key escrow issue by using federated blockchains instead of conventional key management entities. Kumari et al. [<xref ref-type="bibr" rid="ref-21">21</xref>] proposed a cloud-based data auditing method to assure the integrity of healthcare data. Furthermore, Li et al. [<xref ref-type="bibr" rid="ref-22">22</xref>] devloped a novel certificateless data ownership verification system, which emphasizes both effectiveness and privacy preservation. While the existing approaches have potential benefits, they suffer from two major limitations. Similarly, Li [<xref ref-type="bibr" rid="ref-23">23</xref>] introduced a blockchain-based privacy-preserving system to enhance logistics in the context of the Internet of Things. The proposed approach makes use of hash functions to detect data integrity, ciphertext-policy attribute-based encryption to achieve secrecy, and smart contracts to manage data access. Firstly, they are not very efficient as they require extensive computation and communication among the network participants. Secondly, the privacy of user data files is not properly addressed, which raises security concerns. Our proposed scheme aims to overcome these issues and provide a more efficient and secure solution that guarantees the integrity and secrecy of data stored on the public cloud.</p>
</sec>
</sec>
<sec id="s3">
<label>3</label>
<title>Proposed Data Secrecy and Integrity Scheme</title>
<p>In this section, we introduce the proposed mechanism for preserving data secrecy and integrity for cloud storage, emphasizing the main components of the system and the interaction among them.</p>
<sec id="s3_1">
<label>3.1</label>
<title>High-Level System Model</title>
<p>This section describes the proposed system, at a high level, for preserving the secrecy and integrity of data files stored on the public cloud. The proposed system comprises five entities: Data owner, cloud storage, blockchain network, smart contract, and oracle interface. We explain the role of each entity and its interactions with other entities as follows:</p>
<p><bold>Data owner (DO).</bold> This entity can be represented as an individual user or organization that wants to outsource their data files to the public cloud storage and also check the integrity of such outsourced files. To maintain data confidentiality, the data owner enciphers the data files before outsourcing them.</p>
<p><bold>Public cloud storage (PCS).</bold> This entity is responsible for serving the data owner by storing and maintaining their data files. Since data stored on the cloud is controlled by a non-trusting third party, the data owner encrypts their data files before outsourcing them. In addition to providing storage services, it should also provide proof of data correctness whenever the data owner asks for it.</p>
<p><bold>Blockchain network (BN).</bold> This entity represents the underlying peer-to-peer network. It enables the deployment and execution of smart contracts on top of it.</p>
<p><bold>Smart contract (SC).</bold> This entity is represented as a script running on the blockchain network. It has a specific address to be called at. The data owner sends the metadata for a data file to be stored on the contract state. When the data owner wants to verify the integrity of their data files stored on the public cloud, they can issue an audit request through the smart contract to the public cloud. Furthermore, the smart contract can perform some computations to check whether the auditing response received from the cloud storage is correct.</p>
<p><bold>Interface oracle (IO).</bold> This entity is represented as an off-chain entity that enables communication between the blockchain smart contract and public cloud storage. Smart contracts cannot communicate with the outside world except with the help of blockchain oracles. That is, we rely on an interface oracle for forwarding the auditing request from the smart contract to the cloud as well as delivering the auditing response from the cloud to the contract. In other words, it can be thought of as an intermediary between the smart contract and cloud storage.</p>
<p>The proposed auditing scheme&#x2019;s high-level workflow is illustrated in <xref ref-type="fig" rid="fig-1">Fig. 1</xref>, covering both data outsourcing and auditing processes as follows. Firstly, to outsource data, the data owner must encrypt the data file and compute its metadata. The encrypted data file is then transmitted to the public cloud for storage, while its corresponding metadata is recorded on the smart contract for future data auditing purposes. Secondly, to audit an outsourced data file, the data owner can submit an audit request through the smart contract to the public cloud. The smart contract utilizes an oracle interface to send the auditing request and receive the auditing response from the public cloud. Once the smart contract receives the auditing response, it verifies the accuracy of the provided response and notifies the data owner about the integrity of their outsourced data files.</p>
<fig id="fig-1">
<label>Figure 1</label>
<caption>
<title>The proposed data secrecy and integrity scheme</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_50425-fig-1.tif"/>
</fig>
</sec>
<sec id="s3_2">
<label>3.2</label>
<title>System Requirements and Assumptions</title>
<p>We consider the following criteria as design requirements for our proposed scheme. First, the smart contract should be able to verify the integrity of outsourced data files without the need to store them on the blockchain or retrieve them from the public cloud. That means the smart contract does not need a copy of the data files to perform the auditing task. Secondly, the proposed scheme should preserve the secrecy of outscored data files by preventing everyone (except the data owner) from accessing such data files. Blockchain network nodes, for instance, should not be able to view or read the content of data files. In addition, the smart contract code should not have any bugs or vulnerabilities that can be utilized to access the content of data files or manipulate the auditing results.</p>
<p>Various assumptions have been considered in our proposed scheme, which are as follows. First, we treat the public cloud as a non-trusted entity. That is, we rely on a smart contract integrated with an oracle interface to audit the data files stored on the cloud periodically. Secondly, the smart contract is assumed to honestly perform the data auditing task. However, since the contract code is placed on a public blockchain network, one might exploit the contract code to view the content of data files. We assume the contract is securely designed to prevent such malicious activities. Finally and more importantly, we assume that the oracle interface can securely deliver the communications between the smart contract and the public cloud.</p>
</sec>
<sec id="s3_3">
<label>3.3</label>
<title>The Proposed Scheme</title>
<p>This section describes the details of our proposed data auditing scheme. The first phase of our scheme concerns data preparation and storage, while the second phase concerns challenges the public cloud to provide proof of data correctness.</p>
<sec id="s3_3_1">
<label>3.3.1</label>
<title>Data Storage Phase</title>
<p>In the data storage phase, the data owner encrypts the data before outsourcing it to the public cloud. We assume the data owner has access to a symmetric cryptographic algorithm such as the AES algorithm and has a secret key <italic>k</italic><sub>s</sub> for encryption purposes.
<disp-formula id="eqn-1"><label>(1)</label><mml:math id="mml-eqn-1" display="block"><mml:mi>E</mml:mi><mml:mi>n</mml:mi><mml:mi>c</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mi>P</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mi>C</mml:mi></mml:math></disp-formula></p>
<p>This data encryption algorithm <italic>Enc</italic> takes as inputs the secret key for the data owner <italic>k</italic><sub>s</sub> and the data <italic>P</italic> to be encrypted. It then computes the encrypted format of the data <italic>C</italic>. The data owner then calculates the metadata <italic>C</italic><sub>m</sub> for the encrypted data. This metadata will be used for data auditing purposes. Before generating the metadata for the encrypted data, the data owner can utilize Elliptic Curve Cryptography (ECC) to generate a pair of private and public keys.
<disp-formula id="eqn-2"><label>(2)</label><mml:math id="mml-eqn-2" display="block"><mml:mi>E</mml:mi><mml:mi>C</mml:mi><mml:mi>C</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mi>N</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mo>,</mml:mo><mml:mi>G</mml:mi></mml:math></disp-formula></p>
<p>This ECC algorithm takes two prime numbers <italic>a</italic> and <italic>b</italic> of size m as inputs (about 200 digits) and then computes the private key &#x003D; (<italic>N</italic>) and the public key &#x003D; (<italic>n, G</italic>). <italic>N</italic> is calculated as <italic>lcm</italic> (<italic>a</italic> &#x002B; 1, <italic>b</italic> &#x002B; 1), <italic>n</italic> is computed as <italic>a</italic> &#x00D7; <italic>b</italic>, and <italic>G</italic> is calculated as a generator point of <italic>N</italic>. To compute the corresponding metadata <italic>C</italic><sub>m</sub> for the encrypted data, the data owner has to process the encrypted data <italic>C</italic> with the ECC parameters <italic>G</italic> and <italic>N</italic> as follows:
<disp-formula id="eqn-3"><label>(3)</label><mml:math id="mml-eqn-3" display="block"><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>C</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mi>G</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>m</mml:mi><mml:mi>o</mml:mi><mml:mi>d</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>N</mml:mi></mml:math></disp-formula></p>
<p>Once the data owner prepares C and C<sub>m</sub>, it broadcasts C to the public cloud for storage and the C<sub>m</sub> to the smart contract for future data auditing tasks.</p>
</sec>
<sec id="s3_3_2">
<label>3.3.2</label>
<title>Data Integrity Verification Phase</title>
<p>In the data integrity checking phase, the smart contract sends an audit request to the public cloud that maintains the data. Since the smart contract resides on the blockchain network, there is a need for an oracle interface to allow the contract to communicate with the outside world. That is, the smart contract is connected to an oracle interface, which can be utilized to send the auditing request to the cloud. The auditing request <italic>R</italic><sub>a</sub> can be computed as follows:
<disp-formula id="eqn-4"><label>(4)</label><mml:math id="mml-eqn-4" display="block"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mi>D</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi>k</mml:mi><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi>G</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mrow><mml:mtext>s</mml:mtext></mml:mrow></mml:math></disp-formula>where <italic>C</italic><sub>ID</sub> is the ID or the name of the encrypted data file, <italic>k</italic> is a temporary key, and <italic>G</italic>&#x00B7;<italic>s</italic> represents the multiplication of <italic>G</italic> with a random integer <italic>s</italic>. Once the public cloud receives <italic>R</italic><sub>a</sub> through the oracle interface, it must calculate the auditing response <italic>R</italic><sub>S</sub> as proof of data correctness. The cloud generates a random integer <italic>x</italic> with the help of a keyed random function <italic>f</italic><sub>k</sub> and then computes <italic>R</italic><sub>S</sub> as follows:
<disp-formula id="eqn-5"><label>(5)</label><mml:math id="mml-eqn-5" display="block"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>S</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mi>C</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mi>G</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mi>s</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mspace width="thinmathspace" /><mml:mi>m</mml:mi><mml:mi>o</mml:mi><mml:mi>d</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>n</mml:mi></mml:math></disp-formula></p>
<p>After generating the response, the public cloud sends the auditing response to the smart contract via the oracle interface. The smart contract then verifies the correctness of the generated auditing response as follows. It first generates a random integer <italic>x</italic> with the help of a keyed random function <italic>f</italic><sub>k</sub> and then computes <italic>V</italic> as follows:
<disp-formula id="eqn-6"><label>(6)</label><mml:math id="mml-eqn-6" display="block"><mml:mi>V</mml:mi><mml:mo>=</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mspace width="thinmathspace" /><mml:mi>m</mml:mi><mml:mi>o</mml:mi><mml:mi>d</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>n</mml:mi></mml:math></disp-formula></p>
<p>Then, the smart contract computes <italic>R</italic><sub>V</sub> as follows:
<disp-formula id="eqn-7"><label>(7)</label><mml:math id="mml-eqn-7" display="block"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>V</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>s</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mi>V</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>m</mml:mi><mml:mi>o</mml:mi><mml:mi>d</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>n</mml:mi></mml:math></disp-formula></p>
<p>If the calculated <italic>R</italic><sub>V</sub> matches <italic>R</italic><sub>s</sub>, then the integrity of the data is intact. The contract can then notify the data owner about the auditing result.</p>
</sec>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>Implementation</title>
<p>In this section, we will delve into the specifics of our proposed scheme for maintaining the confidentiality and integrity of outsourced data. We will start by presenting the primary algorithms utilized for secure data storage and ensuring data integrity. Following that, we will examine the implementation of the smart contract.</p>
<sec id="s4_1">
<label>4.1</label>
<title>Algorithms</title>
<p>The proposed scheme is executed in two distinct phases. The initial phase involves data preparation and storage and is primarily carried out by the data owner. On the other hand, the second phase is responsible for verifying data integrity.</p>
<p>Algorithm 1 shows the generic steps for implementing the first phase. Firstly, the data owner encrypts the data files and generates their verification metadata. We implement this phase using Python. For data file encryption, we leverage the Crypto.Cipher package by importing the AES class. We generate a key of 192 bit long <italic>k</italic><sub>s</sub> and then run the cipher. encrypt method to encrypt the data file. The encrypted data file <italic>C</italic> is then forwarded to the public cloud for storage. To generate the verification metadata, the data owner first selects two prime numbers and generates public and private ECC keys. To generate the ECC keys, we leverage the ECC class by importing the Crypto.PublicKey package. The verification metadata <italic>C</italic><sub>m</sub> is computed using the Python mod package. The data owner then sends <italic>C</italic><sub>m</sub> to the smart contract for any future data integrity checks.</p>
<fig id="fig-4">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_50425-fig-4.tif"/>
</fig>
<p>Algorithm 2 shows the generic steps for the implementation of the second phase. We implement this phase as a smart contract running on the Ethereum network and Python code running on the public cloud. We consider the Ethereum network over other private blockchains like Hyperledger since it is an open network where anyone can join and participate in the network. In addition, it offers high levels of transparency and security in comparison to private networks. To check the integrity of data files stored on the cloud, the data owner sends a transaction to the smart contract whenever the integrity of a data file needs to be checked. The transaction should contain the ID of the encrypted file, a temporary key, and the multiplication of a random integer and the ECC public key. The smart contract transaction is then executed by generating an auditing request <italic>R</italic><sub><italic>a</italic></sub> as a challenge and forwarding it to the public cloud through an oracle interface. We discuss the details of the smart contract implementation in the following section. Upon receiving the <italic>R</italic><sub><italic>a</italic></sub>, the public cloud storage computes the data auditing response. We implement the cloud as a server running a Python code to compute the auditing response. The cloud server generates a random integer using a keyed random function algorithm and then calculates the auditing response <italic>R</italic><sub><italic>s</italic></sub> by applying the modular arithmetic operation stated in Line 8. The cloud then sends <italic>R</italic><sub><italic>s</italic></sub> to the smart contract as proof of data correctness. When the smart contract receives <italic>R</italic><sub><italic>s</italic></sub> from the cloud, it executes a verification method to check whether the received response <italic>R</italic><sub><italic>s</italic></sub> is valid or not. The data owner will then be informed about the result of the data integrity check.</p>
<fig id="fig-5">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_50425-fig-5.tif"/>
</fig>
</sec>
<sec id="s4_2">
<label>4.2</label>
<title>Smart Contract Implementation</title>
<p>Our proposed auditing system heavily depends on smart contracts, which serve as the system&#x2019;s foundation. To implement the data auditing activities in the system, we utilize the Solidity language to create an Ethereum smart contract. This smart contract is responsible for managing the auditing requests and verifying the correctness of the auditing responses. The smart contract is designed to ensure complete transparency and immutability throughout the auditing process. We use the Remix tool [<xref ref-type="bibr" rid="ref-24">24</xref>] to develop and test the smart contract, which provides various features such as code editing, error debugging, and smart contract deployment. We leverage the Ethereum Sepolia test network [<xref ref-type="bibr" rid="ref-25">25</xref>] for deploying and executing the smart contract. This approach offers several advantages, including testing the smart contract using unreal tokens, which can help identify vulnerabilities before posting the smart contract on the main network. In this section, we discuss the development of the smart contract integrated into the auditing system.</p>
<p>The smart contract is responsible for issuing an auditing request, sending the request to the public cloud, obtaining the auditing response from the cloud, and verifying the received response. We present the detailed implementation of the two most important functions of our smart contract, which are issueAuditReq and verifyAuditRes. These functions are meant to highlight the key functionality and operation of the auditing system.</p>
<p><bold>issueAuditReq Function.</bold> This function is triggered whenever a data owner sends a transaction to execute it. It accepts three input parameters (file ID, a key, and an integer value), concatenates them, and then produces the auditing request to be forwarded to the public cloud. We note that the three parameters are of different types. The file ID and the integer value are of type unit, whereas the key is of a byte type. In Solidity, there is no straightforward way to concatenate values of different types. That is, we leverage a Solidity function called abi.encodePacked to convert the integer values into bytes. Then, we use the bytes.concat method to concatenate the three byte sequences into a single-byte sequence representing the auditing request.</p>
<p><bold>verifyAuditRes Function.</bold> This function is executed upon receiving the auditing response from the cloud to verify the response&#x2019;s correctness. To verify the auditing response, there is a need to generate a random integer <italic>x</italic>. We utilize the Keccak256 hash function to implement a keyed random function to generate <italic>x</italic>. Since the Solidity language does not directly support randomness, we use block properties such as the block&#x2019;s timestamp.</p>
<p>We leverage the Chainlink oracles [<xref ref-type="bibr" rid="ref-26">26</xref>] to enable communication between our smart contract and the public cloud. We import a Chainlink oracle interface called AggregatorV3Interface to pass the auditing request and retrieve the auditing response from the cloud through the Ethereum Virtual Machine.</p>
</sec>
</sec>
<sec id="s5">
<label>5</label>
<title>Performance and Smart Contract Results</title>
<p>In this section, we present the performance and smart contract results of our proposed scheme. For performance results, we measure the computation complexity required by the data owner, smart contract, and public cloud. We conduct our performance experiments using a laptop with a Core i7 GHz CPU and 8 GB of RAM. Concerning smart contract results, we analyze and present the security results using the Slither vulnerability detection tool as well as present the associated transaction costs.</p>
<sec id="s5_1">
<label>5.1</label>
<title>Performance Results</title>
<p>In this section, we calculate the computation costs, in seconds, required by the data owner, smart contract, and public cloud for different sizes of data files. Generally, the computational complexity of our proposed scheme is acceptable. The utilization of an oracle interface to connect both the smart contract and the public cloud adds an extra layer of computational complexity. Still, there is no other way to enable a smart contract to interact with an external entity except with blockchain oracles.</p>
<p>For the data owner, we measure the time it takes to encrypt the data file and generate its auditing metadata. We use the AES algorithm with a 192-bit key for data encryption. For metadata, a single modular multiplication operation is required. <xref ref-type="fig" rid="fig-2">Fig. 2a</xref> shows the computation time in seconds for encrypting a data file and generating its metadata, considering different sizes (in Megabytes) of data files.</p>
<fig id="fig-2">
<label>Figure 2</label>
<caption>
<title>Computation time (in seconds) required by (a) data owner, (b) smart contract, and (c) public cloud for different data file sizes</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_50425-fig-2.tif"/>
</fig>
<p>For the smart contract, we measure the time it takes to issue an auditing request and verify the auditing response. To issue an auditing request, there is a need to generate a temporary key <italic>k</italic> and a random integer <italic>s</italic> in addition to performing a multiplication operation. After generating the request, the smart contract sends it to the cloud through an oracle interface. Once the auditing response is received from the cloud, the contract verifies the response by generating a random integer and performing two modular multiplication operations. <xref ref-type="fig" rid="fig-2">Fig. 2b</xref> shows the computation time in seconds for issuing an auditing request and verifying the correctness of the received auditing response, considering the data file sizes (in Megabytes). We note that the computation time reported considers the network delay required to pass the auditing request and response from and to the oracle interface. The actual computation would be much less than that if we ignored the network delay.</p>
<p>For the public cloud, we measure the time it takes to compute the auditing response. The cloud needs to first generate a random integer in addition to performing a multiplication operation and a modular multiplication operation. <xref ref-type="fig" rid="fig-2">Fig. 2c</xref> shows the computation time in seconds for computing the auditing response, considering the data file sizes (in Megabytes).</p>
</sec>
<sec id="s5_2">
<label>5.2</label>
<title>Smart Contract Results</title>
<p>This section presents the results of the smart contract that we have developed. We first show and discuss the vulnerability assessment results obtained from the Slither security auditing tool. Furthermore, we present the cost associated with deploying and executing the smart contract.</p>
<sec id="s5_2_1">
<label>5.2.1</label>
<title>Vulnerability Results</title>
<p>This section analyzes the security of our smart contract to identify potential vulnerabilities and software bugs. We follow the Solidity security patterns during the development process of our smart contract. We also conduct extensive unit testing to ensure the correct functionality of the proposed scheme. In addition, we leverage a security tool named Slither [<xref ref-type="bibr" rid="ref-27">27</xref>] to look for potential software vulnerabilities. Slither performs a vulnerability scan for smart contracts and is compatible with most Solidity compilers. It can generate a vulnerability check report for a specific smart contract within a few seconds, making it convenient for developers to use. <xref ref-type="table" rid="table-1">Table 1</xref> shows the vulnerability assessment report for our proposed smart contract, produced by the Slither tool. Based on the generated report, we conclude that our smart contract code contains no software bugs or vulnerabilities.</p>
<table-wrap id="table-1">
<label>Table 1</label>
<caption>
<title>A summary of Slither vulnerability assessment results</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th colspan="2">Smart contract information</th>
<th colspan="2">Vulnerability and informational issues</th>
</tr>
</thead>
<tbody>
<tr>
<td>Name</td>
<td>IntegrityVerification</td>
<td>Number of low issues</td>
<td>0</td>
</tr>
<tr>
<td>Number of functions</td>
<td>8</td>
<td>Number of medium issues</td>
<td>0</td>
</tr>
<tr>
<td rowspan="2">Source lines of code</td>
<td rowspan="2">80</td>
<td>Number of high issues</td>
<td>0</td>
</tr>
<tr>
<td>Number of informational issues</td>
<td>2</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s5_2_2">
<label>5.2.2</label>
<title>Transaction Cost Results</title>
<p>This section reports the cost of executing smart contract transactions (as shown in <xref ref-type="fig" rid="fig-3">Fig. 3</xref>). Since our proposed scheme is based on a smart contract running on the Ethereum blockchain [<xref ref-type="bibr" rid="ref-28">28</xref>], there is a cost associated with the auditing task. We first discuss the cost of smart contract deployment and then the cost of both the issueAuditReq and verifyAuditRes functions within the contract.</p>
<fig id="fig-3">
<label>Figure 3</label>
<caption>
<title>The cost (in USD dollars) for smart contract deployment, issueAuditReq and verifyAuditRes transactions</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_50425-fig-3.tif"/>
</fig>
<p>Smart contract deployment costs are paid once a transaction containing the smart contract bytecode is sent to the blockchain network. We measured the Gas Used cost for the deployment transaction and found it to be 1,034,716 units of Gas. The Gas units can be converted into the Ethereum currency by multiplying them by a Gas Price value, which the transaction submitter can set. The Gas Price value affects how fast transactions are confirmed by the network nodes. Let the Gas Price value is set at 1.2 &#x00B7; 10<sup>&#x2212;8</sup> Ether, then the cost of the deployment transaction would be as follows: 1.2 &#x00B7; 10<sup>&#x2212;8</sup> &#x00B7; 1,034,716 &#x003D; 0.0124 Ether &#x003D; $28.96.</p>
<p>The cost of issueAuditReq and verifyAuditRes transactions is calculated as follows. We initiated a transaction to issue and submit an audit request by invoking the issueAuditReq function and found its Gas Used cost to be 127,653 Gas units. That is, the cost of the issueAuditReq transaction is as follows: 1.2&#x00B7;10<sup>&#x2212;8</sup> &#x00B7;127,653 &#x003D; 0.0012 Ether &#x003D; $3.5. For the verifyAuditRes transactions, we initiated a transaction to confirm the correctness of the provided auditing response and found its Gas Used cost to be 202,024 Gas units. That is, the cost of the verifyAuditRes transaction is as follows: 1.2 &#x00B7; 10<sup>&#x2212;8</sup> &#x00B7; 202,024 &#x003D; 0.0026 Ether &#x003D; $5.6.</p>
<p>All transaction costs mentioned in this section are estimated using the Sepolia test network and the current implementation version of the proposed smart contract. The cost may differ depending on the current market price of Ether, the Gas Price amount chosen, and the level of optimization in the smart contract source code.</p>
</sec>
</sec>
</sec>
<sec id="s6">
<label>6</label>
<title>Discussion</title>
<p>In this section, we discuss the security of our proposed system with respect to data secrecy and integrity. This is to illustrate that the scheme can be utilized to audit outsourced data without leaking such data to unauthorized entities.</p>
<sec id="s6_1">
<label>6.1</label>
<title>Data Secrecy</title>
<p>It is crucial to ensure the secrecy of user data, which is stored with a non-trusting entity called Public Cloud Storage (PCS). The primary concern is to prevent unauthorized access to the user&#x2019;s data by malicious PCSs or attackers while it is stored on the cloud. Additionally, it is important to protect the content of the user&#x2019;s data during the auditing process at the smart contract. In this section, we discuss how our designed scheme prevents data exposure to unauthorized parties.</p>
<p>Our scheme presents a formidable barrier to malicious parties attempting to access the user&#x2019;s data. The file is encrypted by the user using symmetric encryption primitives before being uploaded to the cloud, as explained in <xref ref-type="sec" rid="s3_3">Section 3.3</xref>. Therefore, these malicious parties need knowledge of the secret key, which is securely held by the data owner, to decipher the file and access its contents. As a result, malicious parties are effectively prevented from accessing the user&#x2019;s data.</p>
<p><bold>Hypothesis.</bold> The proposed mechanism prohibits unauthorized malicious parties from accessing the users&#x2019; data files stored on the public cloud.</p>
<p><bold>Proof.</bold> If a malicious party tries to gain access to the user&#x2019;s data files stored on the cloud, they will need to have the user&#x2019;s secret key. This is because all data files in our proposed system are enciphered with the user&#x2019;s secret key before being uploaded to the cloud. Whenever the secret key is protected from malicious parties, it is not feasible to gain any information about the user&#x2019;s data.</p>
<p>If a malicious party tries to access the data content from the metadata stored on the smart contract storage, it will not succeed because the verification metadata is computed using the owner&#x2019;s secret key. Malicious actors, therefore, must obtain the owner&#x2019;s secret key in order to access the user&#x2019;s data from the metadata. Moreover, during the auditing process, the smart contract cannot gain knowledge of the data content from the received audit response since the response is not generated from the original data.</p>
<p>Our proposed scheme is highly effective in guarding against data leakage to malicious parties or potential attackers. This robust protection is primarily due to the encryption of the data file before its upload to the cloud.</p>
</sec>
<sec id="s6_2">
<label>6.2</label>
<title>Data Integrity</title>
<p>The proposed scheme permits data owners to verify the integrity of their outsourced data through reliance on smart contracts and blockchain oracles. This section illustrates to what extent the proposed scheme can accurately ascertain data integrity, assuming the honest behavior of PCSs. Subsequently, we will demonstrate the system&#x2019;s resilience against dishonest PCSs.</p>
<p><bold>Hypothesis.</bold> Given that the PCS honestly computes the required auditing response for the auditing request received from the smart contract, the smart contract can deem the auditing response valid. We can show that <italic>R</italic><sub><italic>V</italic></sub> is equivalent to <italic>R</italic><sub><italic>S</italic></sub> by utilizing the commutative property of an elliptic curve as follows:
<disp-formula id="ueqn-8"><mml:math id="mml-ueqn-8" display="block"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>V</mml:mi><mml:mo>;</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>s</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mi>V</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>m</mml:mi><mml:mi>o</mml:mi><mml:mi>d</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>n</mml:mi></mml:math></disp-formula>
<disp-formula id="ueqn-9"><mml:math id="mml-ueqn-9" display="block"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>V</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>s</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mspace width="thinmathspace" /><mml:mi>m</mml:mi><mml:mi>o</mml:mi><mml:mi>d</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>n</mml:mi></mml:math></disp-formula>
<disp-formula id="ueqn-10"><mml:math id="mml-ueqn-10" display="block"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>V</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>s</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mi>C</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mi>G</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>m</mml:mi><mml:mi>o</mml:mi><mml:mi>d</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>n</mml:mi></mml:math></disp-formula>
<disp-formula id="eqn-8"><label>(8)</label><mml:math id="mml-eqn-8" display="block"><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>V</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>R</mml:mi><mml:mrow><mml:mi>S</mml:mi></mml:mrow></mml:msub></mml:math></disp-formula></p>
<p><bold>Hypothesis.</bold> The PCS is not able to deceive the proposed system by incorrectly computing the auditing response.</p>
<p><bold>Proof.</bold> The PCS may engage in dishonest activity, attempting to deceive the smart contract during the data integrity verification process. Here, we show that it is not feasible to deceive the proposed system by computing an invalid auditing response by discussing two potential malicious behaviors. The first possible malicious behavior is that the PCS may compute <italic>R</italic><sub><italic>S</italic></sub> without retaining the actual data. However, this is not feasible within our proposed scheme because generating the proof necessitates accessing the encrypted data file to produce a valid response during auditing. The second malicious behavior is that the PCS might consider reusing previous auditing responses as responses to the auditing requests received from the smart contract. Nevertheless, this behavior is impractical because the PCS would need to generate a fresh random integer for every response generated, as discussed in <xref ref-type="sec" rid="s3_3">Section 3.3</xref>. That is, the PCS cannot use previous responses as they will be rejected by the smart contract as invalid.</p>
<p>In conclusion, it is evident from this discussion that our proposed scheme only accepts auditing responses when the PCSs honestly compute them. Furthermore, our scheme is resilient against any deceptive attempts by the PCSs during data auditing.</p>
</sec>
</sec>
<sec id="s7">
<label>7</label>
<title>Conclusion</title>
<p>This article proposes an efficient mechanism to address the challenges of data confidentiality and integrity in cloud storage systems. We leverage blockchain and smart contract technologies to periodically audit outsourced data. Furthermore, we employ symmetric encryption algorithms to ensure data confidentiality.</p>
<p>The contributions of this article are manifold. Firstly, we introduce a robust and efficient scheme that leverages smart contracts, blockchain oracles, and cryptographic algorithms to preserve the confidentiality and integrity of cloud storage. Specifically, smart contracts and blockchain oracles are utilized to verify data integrity, while cryptographic algorithms are used to maintain the secrecy of outsourced data. Secondly, we implement the proposed system, including its smart contract and oracle interface. We implement the system&#x2019;s smart contract using the Solidity language as a data auditor and a Chainlink oracle interface to enable communication between the smart contract and the cloud storage. Thirdly, we conduct extensive performance analysis to showcase the efficiency of our system. Additionally, we conduct a vulnerability assessment to ensure that the developed smart contract maintains the confidentiality and integrity of cloud storage, even in the presence of malicious entities. The scheme offers a strong foundation to enhance data security in cloud computing environments, and its implementation is expected to contribute to the development of more secure cloud storage systems.</p>
</sec>
</body>
<back>
<ack>
<p>The authors express their gratitude towards Taibah University for providing supervisory assistance.</p>
</ack>
<sec><title>Funding Statement</title>
<p>The author received no specific funding for this study.</p>
</sec>
<sec><title>Author Contributions</title>
<p>M. Alharby designed the proposed scheme, conducted experiments, analyzed results, and wrote the manuscript.</p>
</sec>
<sec sec-type="data-availability"><title>Availability of Data and Materials</title>
<p>All results are presented and discussed in the manuscript.</p>
</sec>
<sec sec-type="COI-statement"><title>Conflicts of Interest</title>
<p>The authors declare that he have no conflicts of interest to report regarding the present study.</p>
</sec>
<ref-list content-type="authoryear">
<title>References</title>
<ref id="ref-1"><label>[1]</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name><given-names>H.</given-names> <surname>Schulze</surname></string-name></person-group>, &#x201C;<article-title>Cloud security report,&#x201D; Cybersecurity Insider</article-title>, <year>2021</year>. <comment>Accessed: Feb. 29, 2024</comment>. [Online]. Available: <ext-link ext-link-type="uri" xlink:href="https://www.cybersecurity-insiders.com/portfolio/2021-cloud-security-report-fortinet/">https://www.cybersecurity-insiders.com/portfolio/2021-cloud-security-report-fortinet/</ext-link></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>J.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>D.</given-names> <surname>Xie</surname></string-name>, and <string-name><given-names>Z.</given-names> <surname>Cai</surname></string-name></person-group>, &#x201C;<article-title>Secure auditing and deduplicating data in cloud</article-title>,&#x201D; <source>IEEE Trans. Comput.</source>, vol. <volume>65</volume>, pp. <fpage>2386</fpage>&#x2013;<lpage>2396</lpage>, <year>2015</year>. doi: <pub-id pub-id-type="doi">10.1109/TC.2015.2389960</pub-id>.</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>F.</given-names> <surname>Zafar</surname></string-name> <etal>et al.</etal></person-group>, &#x201C;<article-title>A survey of cloud computing data integrity schemes: Design challenges, taxonomy and future trends</article-title>,&#x201D; <source>Comput Security</source>, vol. <volume>65</volume>, pp. <fpage>29</fpage>&#x2013;<lpage>49</lpage>, <year>2017</year>. doi: <pub-id pub-id-type="doi">10.1016/j.cose.2016.10.006</pub-id>.</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>P.</given-names> <surname>Dutta</surname></string-name>, <string-name><given-names>T. M.</given-names> <surname>Choi</surname></string-name>, <string-name><given-names>S.</given-names> <surname>Somani</surname></string-name>, and <string-name><given-names>R.</given-names> <surname>Butala</surname></string-name></person-group>, &#x201C;<article-title>Blockchain technology in supply chain operations: Applications, challenges and research opportunities</article-title>,&#x201D; <source>Transport. Res. Part E Logist. Transport. Rev.</source>, vol. <volume>142</volume>, pp. <fpage>102067</fpage>, <year>2020</year>. doi: <pub-id pub-id-type="doi">10.1016/j.tre.2020.102067</pub-id>; <pub-id pub-id-type="pmid">33013183</pub-id></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>A.</given-names> <surname>Saha</surname></string-name>, <string-name><given-names>R.</given-names> <surname>Amin</surname></string-name>, <string-name><given-names>S.</given-names> <surname>Kunal</surname></string-name>, <string-name><given-names>S.</given-names> <surname>Vollala</surname></string-name>, and <string-name><given-names>S. K.</given-names> <surname>Dwivedi</surname></string-name></person-group>, &#x201C;<article-title>Review on &#x201C;Blockchain technology based medical healthcare system with privacy issues</article-title>&#x201D;, <source>Security Privacy</source>, vol. <volume>2</volume>, pp. <fpage>e83</fpage>, <year>2019</year>. doi: <pub-id pub-id-type="doi">10.1002/spy2.83</pub-id>.</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>P.</given-names> <surname>Sharma</surname></string-name>, <string-name><given-names>R.</given-names> <surname>Jindal</surname></string-name>, and <string-name><given-names>M. D.</given-names> <surname>Borah</surname></string-name></person-group>, &#x201C;<article-title>Blockchain technology for cloud storage: A systematic literature review</article-title>,&#x201D; <source>ACM Comput. Surveys</source>, vol. <volume>53</volume>, pp. <fpage>1</fpage>&#x2013;<lpage>32</lpage>, <year>2020</year>.</mixed-citation></ref>
<ref id="ref-7"><label>[7]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>A.</given-names> <surname>Juels</surname></string-name> and <string-name><given-names>B. S.</given-names> <surname>Kaliski</surname></string-name></person-group>, &#x201C;<article-title>PORs: Proofs of retrievability for large files</article-title>,&#x201D; in <conf-name>Proc. 14th ACM Conf. on Comput. Commun. Security</conf-name>, <publisher-loc>Virginia, USA</publisher-loc>, <year>2007</year>, pp. <fpage>584</fpage>&#x2013;<lpage>597</lpage>.</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>H.</given-names> <surname>Shacham</surname></string-name> and <string-name><given-names>B.</given-names> <surname>Waters</surname></string-name></person-group>, &#x201C;<article-title>Compact proofs of retrievability</article-title>,&#x201D; <source>J. Cryptol.</source>, vol. <volume>26</volume>, pp. <fpage>442</fpage>&#x2013;<lpage>483</lpage>, <year>2013</year>. doi: <pub-id pub-id-type="doi">10.1007/s00145-012-9129-2</pub-id>.</mixed-citation></ref>
<ref id="ref-9"><label>[9]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>G.</given-names> <surname>Ateniese</surname></string-name> <etal>et al.</etal></person-group>, &#x201C;<article-title>Provable data possession at untrusted stores</article-title>,&#x201D; in <conf-name>Proc. 14th ACM Conf. Comput. Commun. Security</conf-name>, <publisher-loc>Virginia, USA</publisher-loc>, <year>2007</year>, pp. <fpage>598</fpage>&#x2013;<lpage>609</lpage>.</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>H.</given-names> <surname>Zhu</surname></string-name> <etal>et al.</etal></person-group>, &#x201C;<article-title>A secure and efficient data integrity verification scheme for cloud-IoT based on short signature</article-title>,&#x201D; <source>IEEE Access</source>, vol. <volume>7</volume>, pp. <fpage>90036</fpage>&#x2013;<lpage>90044</lpage>, <year>2019</year>. doi: <pub-id pub-id-type="doi">10.1109/ACCESS.2019.2924486</pub-id>.</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.</given-names> <surname>Ping</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Zhan</surname></string-name>, <string-name><given-names>K.</given-names> <surname>Lu</surname></string-name>, and <string-name><given-names>B.</given-names> <surname>Wang</surname></string-name></person-group>, &#x201C;<article-title>Public data integrity verification scheme for secure cloud storage</article-title>,&#x201D; <source>Inf.</source>, vol. <volume>11</volume>, pp. <fpage>409</fpage>, <year>2020</year>. doi: <pub-id pub-id-type="doi">10.3390/info11090409</pub-id>.</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>Lu</surname></string-name>, <string-name><given-names>Z.</given-names> <surname>Pan</surname></string-name>, and <string-name><given-names>H.</given-names> <surname>Xian</surname></string-name></person-group>, &#x201C;<article-title>An integrity verification scheme of cloud storage for internet-of-things mobile terminal devices</article-title>,&#x201D; <source>Comput. Security</source>, vol. <volume>92</volume>, pp. <fpage>101686</fpage>, <year>2020</year>. doi: <pub-id pub-id-type="doi">10.1016/j.cose.2019.101686</pub-id>.</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.</given-names> <surname>Huang</surname></string-name>, <string-name><given-names>W.</given-names> <surname>Shen</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Qin</surname></string-name>, and <string-name><given-names>H.</given-names> <surname>Hou</surname></string-name></person-group>, &#x201C;<article-title>Privacy-preserving certificateless public auditing supporting different auditing frequencies</article-title>,&#x201D; <source>Comput. Security</source>, vol. <volume>128</volume>, pp. <fpage>103181</fpage>, <year>2023</year>. doi: <pub-id pub-id-type="doi">10.1016/j.cose.2023.103181</pub-id>.</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>P.</given-names> <surname>Huang</surname></string-name>, <string-name><given-names>K.</given-names> <surname>Fan</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Yang</surname></string-name>, <string-name><given-names>K.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Li</surname></string-name> and <string-name><given-names>Y.</given-names> <surname>Yang</surname></string-name></person-group>, &#x201C;<article-title>A collaborative auditing blockchain for trustworthy data integrity in cloud storage system</article-title>,&#x201D; <source>IEEE Access</source>, vol. <volume>8</volume>, pp. <fpage>94780</fpage>&#x2013;<lpage>94794</lpage>, <year>2020</year>. doi: <pub-id pub-id-type="doi">10.1109/ACCESS.2020.2993606</pub-id>.</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>D.</given-names> <surname>Yue</surname></string-name>, <string-name><given-names>R.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>W.</given-names> <surname>Tian</surname></string-name>, and <string-name><given-names>Y.</given-names> <surname>Huang</surname></string-name></person-group>, &#x201C;<article-title>Blockchain-based verification framework for data integrity in edge-cloud storage</article-title>,&#x201D; <source>J. Parallel Distr. Comput.</source>, vol. <volume>146</volume>, pp. <fpage>1</fpage>&#x2013;<lpage>14</lpage>, <year>2020</year>. doi: <pub-id pub-id-type="doi">10.1016/j.jpdc.2020.06.007</pub-id>.</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>P.</given-names> <surname>Wei</surname></string-name>, <string-name><given-names>D.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Zhao</surname></string-name>, <string-name><given-names>S. K. S.</given-names> <surname>Tyagi</surname></string-name>, and <string-name><given-names>N.</given-names> <surname>Kumar</surname></string-name></person-group>, &#x201C;<article-title>Blockchain data-based cloud data integrity protection mechanism</article-title>,&#x201D; <source>Future Gener. Comput. Syst.</source>, vol. <volume>102</volume>, pp. <fpage>902</fpage>&#x2013;<lpage>911</lpage>, <year>2020</year>. doi: <pub-id pub-id-type="doi">10.1016/j.future.2019.09.028</pub-id>.</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>J.</given-names> <surname>Shu</surname></string-name>, <string-name><given-names>X.</given-names> <surname>Zou</surname></string-name>, <string-name><given-names>X.</given-names> <surname>Jia</surname></string-name>, <string-name><given-names>W.</given-names> <surname>Zhang</surname></string-name>, and <string-name><given-names>R.</given-names> <surname>Xie</surname></string-name></person-group>, &#x201C;<article-title>Blockchain-based decentralized public auditing for cloud storage</article-title>,&#x201D; <source>IEEE Trans. Cloud Comput.</source>, vol. <volume>10</volume>, pp. <fpage>2366</fpage>&#x2013;<lpage>2380</lpage>, <year>2021</year>. doi: <pub-id pub-id-type="doi">10.1109/TCC.2021.3051622</pub-id>.</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>G.</given-names> <surname>Tian</surname></string-name> <etal>et al.</etal></person-group>, &#x201C;<article-title>Blockchain-based secure deduplication and shared auditing in decentralized storage</article-title>,&#x201D; <source>IEEE Trans. Dependable Secure Comput.</source>, vol. <volume>19</volume>, pp. <fpage>3941</fpage>&#x2013;<lpage>3954</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>J.</given-names> <surname>Zhao</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Huang</surname></string-name>, <string-name><given-names>C.</given-names> <surname>Gu</surname></string-name>, <string-name><given-names>Z.</given-names> <surname>Hua</surname></string-name>, and <string-name><given-names>X.</given-names> <surname>Zhang</surname></string-name></person-group>, &#x201C;<article-title>Blockchain-assisted conditional anonymity privacy-preserving public auditing scheme with reward mechanism</article-title>,&#x201D; <source>IEEE Syst. J.</source>, vol. <volume>16</volume>, pp. <fpage>4477</fpage>&#x2013;<lpage>4488</lpage>, <year>2021</year>. doi: <pub-id pub-id-type="doi">10.1109/JSYST.2021.3125835</pub-id>.</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>Y.</given-names> <surname>Guo</surname></string-name>, <string-name><given-names>Z.</given-names> <surname>Lu</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Ge</surname></string-name>, and <string-name><given-names>J.</given-names> <surname>Li</surname></string-name></person-group>, &#x201C;<article-title>Revocable blockchain-aided attribute-based encryption with escrow-free in cloud storage</article-title>,&#x201D; <source>IEEE Trans. Comput.</source>, vol. <volume>72</volume>, no. <issue>7</issue>, pp. <fpage>1</fpage>&#x2013;<lpage>12</lpage>, <year>2023</year>. doi: <pub-id pub-id-type="doi">10.1109/TC.2023.3234210</pub-id>.</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>D.</given-names> <surname>Kumari</surname></string-name>, <string-name><given-names>P.</given-names> <surname>Kumar</surname></string-name>, and <string-name><given-names>S.</given-names> <surname>Prajapat</surname></string-name></person-group>, &#x201C;<article-title>A blockchain assisted public auditing scheme for cloud-based digital twin healthcare services</article-title>,&#x201D; <source>Cluster Comput.</source>, <year>2023</year>. doi: <pub-id pub-id-type="doi">10.1007/s10586-023-04101-y</pub-id>.</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>R.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>X. A.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Yang</surname></string-name>, <string-name><given-names>K.</given-names> <surname>Niu</surname></string-name>, <string-name><given-names>D.</given-names> <surname>Tang</surname></string-name> and <string-name><given-names>X.</given-names> <surname>Yang</surname></string-name></person-group>, &#x201C;<article-title>Efficient certificateless public integrity auditing of cloud data with designated verifier for batch audit</article-title>,&#x201D; <source>J. King Saud Univ. Comput. Inf. Sci.</source>, vol. <volume>34</volume>, pp. <fpage>8079</fpage>&#x2013;<lpage>8089</lpage>, <year>2022</year>. doi: <pub-id pub-id-type="doi">10.1016/j.jksuci.2022.07.020</pub-id>.</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>K.</given-names> <surname>Li</surname></string-name></person-group>, &#x201C;<article-title>Privacy-preserving scheme with bidirectional option for blockchain-enhanced logistics internet of things</article-title>,&#x201D; <source>IEEE Internet Things J.</source>, <year>2024</year>. doi: <pub-id pub-id-type="doi">10.1109/JIOT.2024.3370375</pub-id>.</mixed-citation></ref>
<ref id="ref-24"><label>[24]</label><mixed-citation publication-type="other"><person-group person-group-type="author"><collab>&#x201C;Ethereum</collab></person-group>,&#x201D; <source>REMIX Ethereum IDE</source>, <year>2023</year>. <comment>Accessed: Dec. 12, 2023</comment>. [Online]. Available: <ext-link ext-link-type="uri" xlink:href="https://remix.ethereum.org">https://remix.ethereum.org</ext-link></mixed-citation></ref>
<ref id="ref-25"><label>[25]</label><mixed-citation publication-type="other"><person-group person-group-type="author"><collab>&#x201C;Ethereum Foundation</collab></person-group>,&#x201D; <source>Sepolia Testnet</source>, <year>2023</year>. <comment>Accessed: Dec. 27, 2023</comment>. [Online]. Available: <ext-link ext-link-type="uri" xlink:href="https://github.com/eth-clients/sepolia">https://github.com/eth-clients/sepolia</ext-link></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>L.</given-names> <surname>Breidenbach</surname></string-name> <etal>et al.</etal></person-group>, &#x201C;<article-title>Chainlink 2.0: Next steps in the evolution of decentralized oracle networks</article-title>,&#x201D; <source>Chainlink Labs</source>, vol. <volume>1</volume>, pp. <fpage>1</fpage>&#x2013;<lpage>136</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-27"><label>[27]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>J.</given-names> <surname>Feist</surname></string-name>, <string-name><given-names>G.</given-names> <surname>Grieco</surname></string-name>, and <string-name><given-names>A.</given-names> <surname>Groce</surname></string-name></person-group>, &#x201C;<article-title>Slither: A static analysis framework for smart contracts</article-title>,&#x201D; in <conf-name>2019 IEEE/ACM 2nd Int. Workshop on Emerg. Trends in Softw. Eng. for Blockchain (WETSEB)</conf-name>, <publisher-loc>Montreal, QC, Canada</publisher-loc>, <year>2019</year>, pp. <fpage>8</fpage>&#x2013;<lpage>15</lpage>.</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>G.</given-names> <surname>Wood</surname></string-name></person-group>, &#x201C;<article-title>Ethereum: A secure decentralised generalised transaction ledger</article-title>,&#x201D; <source>Ethereum Project Yellow Paper</source>, vol. <volume>151</volume>, pp. <fpage>1</fpage>&#x2013;<lpage>32</lpage>, <year>2014</year>.</mixed-citation></ref>
</ref-list>
</back></article>