<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN" "JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">INFORMATICA</journal-id>
<journal-title-group><journal-title>Informatica</journal-title></journal-title-group>
<issn pub-type="epub">1822-8844</issn><issn pub-type="ppub">0868-4952</issn><issn-l>0868-4952</issn-l>
<publisher>
<publisher-name>Vilnius University</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">INFO1144</article-id>
<article-id pub-id-type="doi">10.15388/Informatica.2017.134</article-id>
<article-categories><subj-group subj-group-type="heading">
<subject>Research Article</subject></subj-group></article-categories>
<title-group>
<article-title>Data Sharing Scheme for Cloud Storage Service Using the Concept of Message Recovery</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Yang</surname><given-names>Jen-Ho</given-names></name><email xlink:href="jenhoyang@mail.knu.edu.tw">jenhoyang@mail.knu.edu.tw</email><xref ref-type="aff" rid="j_info1144_aff_001">1</xref><bio>
<p><bold>J.H. Yang</bold> received the BS degree in computer science and information engineering from I-Shou University, Kaoshiung in 2002, and the PhD degree in computer science and information engineering from National Chung Cheng University, Chiayi County in 2009. Since 2009, he has been an associate professor with the Department of Multimedia and Mobile Commerce in Kainan University, Taoyuan. His current research interests include electronic commerce, information security, cryptography, authentication for wireless environments, digital right management, and fast modular multiplication algorithm.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Lin</surname><given-names>Iuon-Chang</given-names></name><email xlink:href="iclin@nchu.edu.tw">iclin@nchu.edu.tw</email><xref ref-type="aff" rid="j_info1144_aff_002">2</xref><xref ref-type="corresp" rid="cor1">∗</xref><bio>
<p><bold>I.C. Lin</bold> received the BS in computer and information sciences from Tung Hai University, Taichung, Taiwan, Republic of China, in 1998; the MS in information management from Chaoyang University of Technology, Taiwan, in 2000. He received his PhD in computer science and information engineering in March 2004 from National Chung Cheng University, Chiayi, Taiwan. He is currently a professor of the Department of Management Information Systems, National Chung Hsing University, and Department of Photonics and Communication Engineering, Asia University, Taichung, Taiwan, ROC. His current research interests include electronic commerce, information security, cryptography, and mobile communications.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Chien</surname><given-names>Po-Ching</given-names></name><xref ref-type="aff" rid="j_info1144_aff_002">2</xref><bio>
<p><bold>P.C. Chien</bold> received the MS in the Department of Management Information Systems, National Chung Hsing University, Chiayi, Taiwan. The main research interest is connected with the problem of information security.</p></bio>
</contrib>
<aff id="j_info1144_aff_001"><label>1</label>Department of Multimedia and Mobile Commerce, <institution>Kainan University</institution>, No. 1, Kannan Rd., Luzhu, Taoyuan County, 33857, <country>Taiwan</country></aff>
<aff id="j_info1144_aff_002"><label>2</label>Department of Photonics and Communication Engineering, <institution>Asia University</institution>, Department of Management Information Systems, National Chung Hsing University, Taichung, <country>Taiwan</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>∗</label>Corresponding author.</corresp>
</author-notes>
<pub-date pub-type="ppub"><year>2017</year></pub-date><pub-date pub-type="epub"><day>1</day><month>1</month><year>2017</year></pub-date><volume>28</volume><issue>2</issue><fpage>375</fpage><lpage>386</lpage><history><date date-type="received"><month>9</month><year>2015</year></date><date date-type="accepted"><month>11</month><year>2016</year></date></history>
<permissions><copyright-statement>© 2017 Vilnius University</copyright-statement><copyright-year>2017</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
<license-p>Open access article under the <ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/4.0/">CC BY</ext-link> license.</license-p></license></permissions>
<abstract>
<p>The popularity of sharing data through cloud services has increased these days. As a result, the security of data sharing has become an important issue. The security mechanism has to ensure that the shared data would not be intercepted or altered by illegal members during transmission. A data sharing scheme for cloud services is proposed in this paper to achieve the following four security requirements: 1) forward secrecy and backward secrecy, 2) source authentication, 3) data integrity, and 4) confidentiality. In addition, message recovery is applied to improve the efficiency of encryption and signature computation. The computation cost is reduced by computing a common key for all data. Thus, the data owner only needs to encrypt the shared data once before sending it in this proposed scheme.</p>
</abstract>
<kwd-group>
<label>Key words</label>
<kwd>bilinear pairing</kwd>
<kwd>message recovery</kwd>
<kwd>data sharing</kwd>
<kwd>cloud storage</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="j_info1144_s_001">
<label>1</label>
<title>Introduction</title>
<p>Cloud service has become a trend nowadays. There are three common cloud service architectures (Ghazia and Masood, <xref ref-type="bibr" rid="j_info1144_ref_004">2012</xref>): Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). SaaS provides applications as a service from the web without needing the user to download or install software at the user’s end. The cloud applications can be accessible through a thin client interface, such as a web browser or a program interface. The consumer does not need to manage or control the cloud infrastructures such as network, servers, operating systems, storage, or even individual application capabilities. Salesforce is an example of SaaS in the area of Customer Relationship Management (CRM), which is an approach to managing a company’s interaction with current and potential future customers.</p>
<p>PaaS offers platform as a service where clients can develop systems or applications. It provides the client to deploy their systems or applications onto the cloud infrastructure supported by the provider. The client does not manage or control the cloud infrastructures such as network, servers, operating systems, or storage. However, the client has the ability to control the deployed applications and possibly configuration settings using the application-hosting mode. Examples of PaaS are Google App Engine and Windows Azure.</p>
<p>IaaS offers physical or virtual machine as a service to the client. It provides processing, storage, networks, and fundamental computing resources to the client. And thus the client can deploy the software, which includes operating systems and applications. The consumer does not need to manage or control the cloud infrastructure but has control over operating systems, storage, and deployed applications. An example of IaaS is Amazon EC2.</p>
<p>Although the above cloud services provide convenient and flexible way to utilize resources, security is considered one of the most important open issues in cloud computing as reported by International Data Corporation (IDC) (Almorsy <italic>et al.</italic>, <xref ref-type="bibr" rid="j_info1144_ref_001">2011</xref>), which is an American market research, analysis and advisory company for information technology and telecommunications. An increasing security concern in cloud is the possibility of unintended resource sharing with competitors or malicious users due to insecure channels. Therefore, it is critical to ensure the confidentiality and integrity of the data in cloud services.</p>
<p>Data sharing is a widely used cloud service, and the examples are Google Drive and Dropbox. To address the security concerns mentioned above, we proposed a data sharing scheme which satisfies the following four security requirements: 1) <italic>forward secrecy</italic> and <italic>backward secrecy</italic> to ensure even if the encryption key is leaked, no one can decrypt the data; 2) <italic>source authentication</italic> to verify whether the data is send by the data owner; 3) <italic>data integrity</italic> to verify whether the data has been altered by attackers or not; 4) <italic>confidentiality</italic> to make sure that the data cannot be read by illegal members.</p>
<p>To achieve source authentication, data integrity, and confidentiality, we applied Lin and Yang’s source authentication scheme (Lin and Yang, <xref ref-type="bibr" rid="j_info1144_ref_010">2012</xref>) to propose the data sharing scheme. However, using their scheme for the source authentication has some security problems as follows. Once a receiver can decrypt a data, and then the receiver can decrypt every data encrypted by the same data owner because the encryption key is in the same finite field of elliptic curve. As a result, Lin and Yang’s scheme cannot achieve the forward secrecy and backward secrecy. On the other hand, Lin and Yang’s source authentication scheme has large computation costs. This is because the data needs to be encrypted according to the number of receivers. If the number of receivers becomes large, then the computation costs are greatly increased.</p>
<p>To solve the above problems, we propose a new data sharing scheme for cloud services using message recovery in this paper. We compute the encryption key by using bilinear pairing and adding a random number before the encryption key is computed to achieve the forward secrecy and backward secrecy. In addition, we reduce the computation costs by using a common key for all data which has to be encrypted. Moreover, the proposed scheme only has to encrypt the shared data once regardless the number of the receivers. According to our computation analysis, the computation cost of the proposed scheme is less than those of the related works. Therefore, the proposed scheme is very efficient for the data sharing in cloud services.</p>
<p>The rest of the paper is organized as follows. Section <xref rid="j_info1144_s_002">2</xref> presents the preliminaries, including introductions of message recovery, elliptic curve cryptosystem, bilinear pairing, and security requirements. Section <xref rid="j_info1144_s_006">3</xref> describes the proposed data sharing scheme. The security and computation cost analysis is presented in Section <xref rid="j_info1144_s_007">4</xref>. Finally, Section <xref rid="j_info1144_s_010">5</xref> concludes the paper.</p>
</sec>
<sec id="j_info1144_s_002">
<label>2</label>
<title>Preliminaries</title>
<sec id="j_info1144_s_003">
<label>2.1</label>
<title>Message Recovery</title>
<p>Message recovery concept is first proposed by Nyberg and Ruppel (<xref ref-type="bibr" rid="j_info1144_ref_013">1993</xref>). They showed that if the message encryption and digital signature computation can be done together, the sender only has to transmit a set of cipher text to achieve both authentication and encryption. The receivers can authenticate the data of the sender by checking whether the recovered message makes sense or not, and only the legal receiver has the key to correctly recover the original data. Thus, the message recovery scheme can encrypt the original message and generate its digital signature at the same time.</p>
<p>Lin and Chang (<xref ref-type="bibr" rid="j_info1144_ref_009">2008</xref>) used this concept to propose a new digital signature scheme for linearly hierarchical organization. In Lin and Yang’s (<xref ref-type="bibr" rid="j_info1144_ref_010">2012</xref>) scheme, the elliptic curve cryptosystem is applied to improve the computation efficiency of source authentication. The parameters used in Lin and Yang’s scheme are defined as follows: <italic>p</italic> is a large prime number, <italic>g</italic> is a point on the elliptic curve in the finite field <inline-formula id="j_info1144_ineq_001"><alternatives><mml:math>
<mml:mi mathvariant="italic">GF</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\mathit{GF}(p)$]]></tex-math></alternatives></inline-formula>, where <inline-formula id="j_info1144_ineq_002"><alternatives><mml:math>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$g\in {Z_{p}}$]]></tex-math></alternatives></inline-formula>; <inline-formula id="j_info1144_ineq_003"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${M_{i}}$]]></tex-math></alternatives></inline-formula> is the message in packet <italic>i</italic>, where <italic>i</italic> is the packet’s sequence number; <inline-formula id="j_info1144_ineq_004"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${k_{i}}$]]></tex-math></alternatives></inline-formula> is a random number for the <italic>i</italic>th packet, and <inline-formula id="j_info1144_ineq_005"><alternatives><mml:math>
<mml:mi mathvariant="italic">H</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$H(.)$]]></tex-math></alternatives></inline-formula> is a one-way hash function; <inline-formula id="j_info1144_ineq_006"><alternatives><mml:math>
<mml:mi mathvariant="italic">GF</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">→</mml:mo>
<mml:mi mathvariant="italic">R</mml:mi></mml:math><tex-math><![CDATA[$\mathit{GF}(p)\to R$]]></tex-math></alternatives></inline-formula>. <inline-formula id="j_info1144_ineq_007"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$({y_{s}},{x_{s}})$]]></tex-math></alternatives></inline-formula> is the public and private key pair for the sender, where <inline-formula id="j_info1144_ineq_008"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi></mml:math><tex-math><![CDATA[${y_{s}}={x_{s}}\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p$]]></tex-math></alternatives></inline-formula>; <inline-formula id="j_info1144_ineq_009"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$({y_{{r_{j}}}},{x_{{r_{j}}}})$]]></tex-math></alternatives></inline-formula> is the public and private key pair for the receiver <italic>j</italic>, where <inline-formula id="j_info1144_ineq_010"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi></mml:math><tex-math><![CDATA[${y_{{r_{j}}}}={x_{{r_{j}}}}\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p$]]></tex-math></alternatives></inline-formula>.</p>
<p>In Lin and Yang’s scheme, when the sender wants to send a message, and the sender has to generate the information set <inline-formula id="j_info1144_ineq_011"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$({r_{i}},{s_{i}},i)$]]></tex-math></alternatives></inline-formula> using the following equations: 
<disp-formula id="j_info1144_eq_001">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">≡</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>×</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≡</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{array}{l}\displaystyle {r^{\prime }_{i}}\equiv {k_{i}}\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p,\\ {} \displaystyle {R_{i}}\equiv i\times {r^{\prime }_{i}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p,\\ {} \displaystyle {m_{i}}\equiv {M_{i}}+{({k_{i}}\times i\times {y_{{r_{j}}}})_{x}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p,\end{array}\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_info1144_ineq_012"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${({k_{i}}\times i\times {y_{{r_{j}}}})_{x}}$]]></tex-math></alternatives></inline-formula> is the <italic>x</italic>-coordinate of the point <italic>P</italic>.</p>
<p><inline-formula id="j_info1144_ineq_013"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≡</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">H</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo></mml:math><tex-math><![CDATA[${r_{i}}\equiv {m_{i}}+H({R_{i}})\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p,$]]></tex-math></alternatives></inline-formula> and 
<disp-formula id="j_info1144_eq_002">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≡</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {s_{i}}\equiv {k_{i}}-{x_{s}}\times {r_{i}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>After the information set <inline-formula id="j_info1144_ineq_014"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$({r_{i}},{s_{i}},i)$]]></tex-math></alternatives></inline-formula> is generated, it is sent to the receivers. When the receivers receive the information set, each receiver will authenticate the sender and check the integrity of the message. Each receiver computes <inline-formula id="j_info1144_ineq_015"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${r^{\prime }_{i}}$]]></tex-math></alternatives></inline-formula> by using its private key with the equation below: 
<disp-formula id="j_info1144_eq_003">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">≡</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>×</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{array}{l}\displaystyle {r^{\prime }_{i}}\equiv {s_{i}}\times g+{r_{i}}\times {y_{s}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p,\\ {} \displaystyle {R_{i}}\equiv i\times {r^{\prime }_{i}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p,\end{array}\]]]></tex-math></alternatives>
</disp-formula> 
<inline-formula id="j_info1144_ineq_016"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≡</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">H</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi></mml:math><tex-math><![CDATA[${m_{i}}\equiv {r_{i}}-H({R_{i}})\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p$]]></tex-math></alternatives></inline-formula>, and 
<disp-formula id="j_info1144_eq_004">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≡</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {M_{i}}\equiv {m_{i}}-{({r^{\prime }_{i}}\times {x_{r}}\times i)_{x}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The recovered message will be meaningless if the sender or the receiver is illegal. That is, this scheme can achieve both source authentication and message encryption at the same time. However, there are two disadvantages in their scheme. First, their scheme cannot satisfy the forward secrecy and backward secrecy. According to the equations presented above, if a receiver’s public key is in the finite field of elliptic curve, the receiver can decrypt any data encrypted by the sender. This is a big problem when it applies to data sharing in cloud services because the malicious receiver can access the confidential data in this scenario. Second, when the sender wants to send a message to more than one receiver, the sender has to encrypt the message once for each receiver. This causes the high computation cost problem.</p>
</sec>
<sec id="j_info1144_s_004">
<label>2.2</label>
<title>Bilinear Pairing and Some Problems</title>
<p>To achieve the higher efficiency and security, the bilinear pairing (Miller, <xref ref-type="bibr" rid="j_info1144_ref_012">1986</xref>; Koblitz, <xref ref-type="bibr" rid="j_info1144_ref_008">1987</xref>) is applied to the group signature schemes and ID-based encryption schemes (Zhang <italic>et al.</italic>, <xref ref-type="bibr" rid="j_info1144_ref_015">2004</xref>; Joux, <xref ref-type="bibr" rid="j_info1144_ref_007">2002</xref>; Barreto <italic>et al.</italic>, <xref ref-type="bibr" rid="j_info1144_ref_002">2002</xref>; Bonehand and Franklin, <xref ref-type="bibr" rid="j_info1144_ref_003">2001</xref>). Let <inline-formula id="j_info1144_ineq_017"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G_{1}}$]]></tex-math></alternatives></inline-formula> be a cyclic additive group and <inline-formula id="j_info1144_ineq_018"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G_{2}}$]]></tex-math></alternatives></inline-formula> be a cyclic multiplicative group of prime order <italic>p</italic>. The bilinear pairing <inline-formula id="j_info1144_ineq_019"><alternatives><mml:math><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">→</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$\widehat{e}:{G_{1}}\times {G_{1}}\to {G_{2}}$]]></tex-math></alternatives></inline-formula> has the following three properties (Lin <italic>et al.</italic>, <xref ref-type="bibr" rid="j_info1144_ref_011">2010</xref>). 
<list>
<list-item id="j_info1144_li_001">
<label>1.</label>
<p>Bilinearity: for all <inline-formula id="j_info1144_ineq_020"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${g_{1}},{g_{2}},{g_{3}}\in {G_{1}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_info1144_ineq_021"><alternatives><mml:math>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[$a,b\in {Z_{q}^{\ast }}$]]></tex-math></alternatives></inline-formula>, 
<disp-formula id="j_info1144_eq_005">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{array}{l}\displaystyle \widehat{e}({g_{1}},{g_{2}}+{g_{3}})=\widehat{e}({g_{1}},{g_{2}})\cdot \widehat{e}({g_{1}},{g_{3}}),\\ {} \displaystyle \widehat{e}({g_{1}}+{g_{2}},{g_{3}})=\widehat{e}({g_{1}},{g_{3}})\cdot \widehat{e}({g_{2}},{g_{3}}),\end{array}\]]]></tex-math></alternatives>
</disp-formula> 
and 
<disp-formula id="j_info1144_eq_006">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">b</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \widehat{e}(a{g_{1}},b{g_{2}})=\widehat{e}(ab{g_{1}},{g_{2}})=\widehat{e}({g_{1}},ab{g_{2}})=\widehat{e}{({g_{1}},{g_{2}})^{ab}}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
</list-item>
<list-item id="j_info1144_li_002">
<label>2.</label>
<p>Non-degeneracy: There exists <inline-formula id="j_info1144_ineq_022"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${g_{1}},{g_{2}}\in {G_{1}}$]]></tex-math></alternatives></inline-formula>, such that <inline-formula id="j_info1144_ineq_023"><alternatives><mml:math><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$\widehat{e}({g_{1}},{g_{2}})\in {G_{2}}$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_003">
<label>3.</label>
<p>Computability: <inline-formula id="j_info1144_ineq_024"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${g_{1}},{g_{2}}\in {G_{1}}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_info1144_ineq_025"><alternatives><mml:math><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\widehat{e}({g_{1}},{g_{2}})$]]></tex-math></alternatives></inline-formula> can be computed in polynomial time.</p>
</list-item>
</list> 
Suppose the following problems relating to bilinear pairing.</p>
<list>
<list-item id="j_info1144_li_004">
<label>1.</label>
<p>Discrete Logarithm Problem (DLP) (Lin <italic>et al.</italic>, <xref ref-type="bibr" rid="j_info1144_ref_011">2010</xref>): for <inline-formula id="j_info1144_ineq_026"><alternatives><mml:math>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mi mathvariant="italic">X</mml:mi></mml:math><tex-math><![CDATA[$Y=nX$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_info1144_ineq_027"><alternatives><mml:math>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[$n\in {Z_{q}^{\ast }}$]]></tex-math></alternatives></inline-formula>; given <inline-formula id="j_info1144_ineq_028"><alternatives><mml:math>
<mml:mi mathvariant="italic">X</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$X,Y\in {G_{1}}$]]></tex-math></alternatives></inline-formula>; compute <italic>n</italic>.</p>
</list-item>
<list-item id="j_info1144_li_005">
<label>2.</label>
<p>Decision Diffie–Hellman Problem (DDHP): for <inline-formula id="j_info1144_ineq_029"><alternatives><mml:math>
<mml:mi mathvariant="italic">X</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$X\in {G_{1}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_info1144_ineq_030"><alternatives><mml:math>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[$a,b,c\in {Z_{q}^{\ast }}$]]></tex-math></alternatives></inline-formula>; given <inline-formula id="j_info1144_ineq_031"><alternatives><mml:math>
<mml:mi mathvariant="italic">X</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">X</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mi mathvariant="italic">X</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mi mathvariant="italic">X</mml:mi></mml:math><tex-math><![CDATA[$X,aX,bX,cX$]]></tex-math></alternatives></inline-formula>; determine whether <inline-formula id="j_info1144_ineq_032"><alternatives><mml:math>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[$c=ab\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q$]]></tex-math></alternatives></inline-formula> holds or not.</p>
</list-item>
<list-item id="j_info1144_li_006">
<label>3.</label>
<p>Computational Diffie–Hellman Problem (CDHP): given <inline-formula id="j_info1144_ineq_033"><alternatives><mml:math>
<mml:mi mathvariant="italic">X</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">X</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mi mathvariant="italic">X</mml:mi></mml:math><tex-math><![CDATA[$X,aX,bX$]]></tex-math></alternatives></inline-formula>; compute <inline-formula id="j_info1144_ineq_034"><alternatives><mml:math>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mi mathvariant="italic">X</mml:mi></mml:math><tex-math><![CDATA[$abX$]]></tex-math></alternatives></inline-formula> where <inline-formula id="j_info1144_ineq_035"><alternatives><mml:math>
<mml:mi mathvariant="italic">X</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$X\in {G_{1}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_info1144_ineq_036"><alternatives><mml:math>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[$a,b\in {Z_{q}^{\ast }}$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
</list>
<p>According Lin <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1144_ref_011">2010</xref>), the DLP is supposed to be the hard problem is <inline-formula id="j_info1144_ineq_037"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G_{1}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_info1144_ineq_038"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G_{2}}$]]></tex-math></alternatives></inline-formula> in this paper.</p>
</sec>
<sec id="j_info1144_s_005">
<label>2.3</label>
<title>Security Requirements</title>
<p>Cloud service offers many benefits; it enables users to share their data with anyone on the cloud. However, the security, privacy, and integrity of the cloud services are the main challenges (Hay <italic>et al.</italic>, <xref ref-type="bibr" rid="j_info1144_ref_006">2011</xref>). To address these challenges, we propose a scheme in this paper that can satisfy the four security requirements as defined in Wang and Wu (<xref ref-type="bibr" rid="j_info1144_ref_014">2005</xref>) as follows. 
<list>
<list-item id="j_info1144_li_007">
<label>1.</label>
<p><italic>Forward secrecy and backward secrecy</italic>: forward secrecy says if the decryption key is leaked, the receivers cannot recover any data by the previous encryption key except when the data owner allows. Similarly, backward secrecy says when a data is shared with a new receiver, the new receiver cannot recover any of the previous data using the new decryption key unless the data owner allows.</p>
</list-item>
<list-item id="j_info1144_li_008">
<label>2.</label>
<p><italic>Source authentication</italic>: to avoid impersonation attacks, the sender should provide a way for the receivers to authenticate whether the data is sent from the legal sender.</p>
</list-item>
<list-item id="j_info1144_li_009">
<label>3.</label>
<p><italic>Data integrity</italic>: the data might be intercepted and altered by attackers when the data is transmitted through an unsecure channel; therefore, the accuracy of the data should be confirmed by the receivers after recovering the data.</p>
</list-item>
<list-item id="j_info1144_li_010">
<label>4.</label>
<p><italic>Confidentiality</italic>: to avoid eavesdropping when the data is in transmission through an unsecure channel, the confidentiality is also an important requirement in data sharing.</p>
</list-item>
</list>
</p>
</sec>
</sec>
<sec id="j_info1144_s_006">
<label>3</label>
<title>The Proposed Scheme</title>
<table-wrap id="j_info1144_tab_001">
<label>Table 1</label>
<caption>
<p>The notations used in the proposed scheme.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Notations</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Descriptions</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"><italic>M</italic></td>
<td style="vertical-align: top; text-align: left">Shared data in the cloud service</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>n</italic></td>
<td style="vertical-align: top; text-align: left">Sequence number of the shared data</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>k</italic></td>
<td style="vertical-align: top; text-align: left">Random number, <inline-formula id="j_info1144_ineq_039"><alternatives><mml:math>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[$k\in {Z_{p}^{\ast }}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>r</italic></td>
<td style="vertical-align: top; text-align: left">Random number for the shared data, <inline-formula id="j_info1144_ineq_040"><alternatives><mml:math>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[$r\in {Z_{p}^{\ast }}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_041"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${H_{1}}()$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Hash function, <inline-formula id="j_info1144_ineq_042"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">→</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${H_{1}}():{\{0,1\}^{\ast }}\to {G_{1}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_043"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${H_{2}}()$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Hash function, <inline-formula id="j_info1144_ineq_044"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">→</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[${H_{2}}():{\{0,1\}^{\ast }}\to \{0,1\}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_045"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G_{1}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">A cyclic additive group of a large prime order <italic>p</italic></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_046"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G_{2}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">A cyclic multiplicative group of a large prime order <italic>p</italic></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_047"><alternatives><mml:math><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover></mml:math><tex-math><![CDATA[$\widehat{e}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">Bilinear mapping, <inline-formula id="j_info1144_ineq_048"><alternatives><mml:math><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">→</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$\widehat{e}:{G_{1}}\times {G_{1}}\to {G_{2}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>x</italic></td>
<td style="vertical-align: top; text-align: left">Master key, <inline-formula id="j_info1144_ineq_049"><alternatives><mml:math>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[$g\in {Z_{p}^{\ast }}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><italic>g</italic></td>
<td style="vertical-align: top; text-align: left">Generator of <inline-formula id="j_info1144_ineq_050"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G_{1}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_051"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${P_{i}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left">The public key of cloud storage service member, <inline-formula id="j_info1144_ineq_052"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ID</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${P_{i}}={H_{1}}({\mathit{ID}_{i}})\in {G_{1}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_info1144_ineq_053"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${S_{i}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">The private key of cloud storage service member, <inline-formula id="j_info1144_ineq_054"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${S_{i}}=x{P_{i}}\in {G_{1}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In the proposed scheme, <italic>M</italic> is the data shared in the cloud service, <italic>n</italic> is the shared data’s sequence number, and <italic>r</italic> is a random number which is chosen by the data owner for the shared data. The proposed scheme consists of three phases: (1) the Setup Phase, (2) the Initialization Phase, and (3) the Verification Phase. The three phases are described below. The notations used in the proposed scheme are listed as follows:</p>
<p><bold>The setup phase:</bold> suppose the group size is <italic>n</italic>. CA determines two hash functions <inline-formula id="j_info1144_ineq_055"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">→</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${H_{1}}(.):{\{0,1\}^{\ast }}\to {G_{1}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_info1144_ineq_056"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">→</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[${H_{2}}(.):{\{0,1\}^{\ast }}\to \{0,1\}$]]></tex-math></alternatives></inline-formula>, an additive cyclic group <inline-formula id="j_info1144_ineq_057"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G_{1}}$]]></tex-math></alternatives></inline-formula> of order <italic>q</italic>, where <italic>q</italic> is a large prime number, a multiplicative group <inline-formula id="j_info1144_ineq_058"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G_{2}}$]]></tex-math></alternatives></inline-formula> of the same order, one bilinear mapping <inline-formula id="j_info1144_ineq_059"><alternatives><mml:math><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover></mml:math><tex-math><![CDATA[$\widehat{e}$]]></tex-math></alternatives></inline-formula>, a generator <italic>g</italic> of <inline-formula id="j_info1144_ineq_060"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G_{1}}$]]></tex-math></alternatives></inline-formula>, and a master key <inline-formula id="j_info1144_ineq_061"><alternatives><mml:math>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[$x\in {Z_{q}^{\ast }}$]]></tex-math></alternatives></inline-formula>. Then, CA computes <inline-formula id="j_info1144_ineq_062"><alternatives><mml:math>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi></mml:math><tex-math><![CDATA[$w=x\times g$]]></tex-math></alternatives></inline-formula> and generates the key pair (<inline-formula id="j_info1144_ineq_063"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${P_{i}}$]]></tex-math></alternatives></inline-formula>,<inline-formula id="j_info1144_ineq_064"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${S_{i}}$]]></tex-math></alternatives></inline-formula>) for every member in the cloud service, where <inline-formula id="j_info1144_ineq_065"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">ID</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${P_{i}}={H_{1}}({\mathit{ID}_{i}})\in {G_{1}}$]]></tex-math></alternatives></inline-formula>, and <inline-formula id="j_info1144_ineq_066"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${S_{i}}=g{P_{i}}\in {G_{1}}$]]></tex-math></alternatives></inline-formula>. After that, CA sends <inline-formula id="j_info1144_ineq_067"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$({G_{1}},{G_{2}},\widehat{e},{H_{2}},{P_{i}},{S_{i}},g,q)$]]></tex-math></alternatives></inline-formula> through a secure channel to every member who registers on the cloud service. Figure <xref rid="j_info1144_fig_001">1</xref> illustrates the steps of the setup phase.</p>
<p><bold>The initialization phase:</bold> when the data owner <italic>i</italic> wants to share his data with other members on the cloud service; the data owner creates a set <italic>G</italic> to store the public keys of the members whom the data will be shared with, e.g. <inline-formula id="j_info1144_ineq_068"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$G=\{{P_{j}},{P_{k}},\dots ,{P_{n}}\}$]]></tex-math></alternatives></inline-formula>. Then the data owner <italic>i</italic> performs the following initialization phase. 
<list>
<list-item id="j_info1144_li_011">
<label>1.</label>
<p>Select two random numbers <inline-formula id="j_info1144_ineq_069"><alternatives><mml:math>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[$k,r\in {Z_{q}^{\ast }}$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_012">
<label>2.</label>
<p>Compute a parameter <inline-formula id="j_info1144_ineq_070"><alternatives><mml:math>
<mml:mi mathvariant="italic">Q</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∏</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$Q=k{\textstyle\prod _{l=i}^{n}}{P_{l}}$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_013">
<label>3.</label>
<p>Compute a session key <inline-formula id="j_info1144_ineq_071"><alternatives><mml:math>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>=</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">Q</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$K=\widehat{e}(Q/{P_{i}},{S_{i}})$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_014">
<label>4.</label>
<p>Compute <inline-formula id="j_info1144_ineq_072"><alternatives><mml:math>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[$z\equiv r\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_015">
<label>5.</label>
<p>Compute <inline-formula id="j_info1144_ineq_073"><alternatives><mml:math>
<mml:mi mathvariant="italic">R</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[$R\equiv n\times z\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_016">
<label>6.</label>
<p>Compute <inline-formula id="j_info1144_ineq_074"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo>+</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[$m\equiv M+(r\times n\times K\times g)\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_017">
<label>7.</label>
<p>Compute <inline-formula id="j_info1144_ineq_075"><alternatives><mml:math>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">R</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[$v\equiv m+{H_{2}}(R)\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_018">
<label>8.</label>
<p>Compute <inline-formula id="j_info1144_ineq_076"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[$u\equiv (r-{S_{i}}\times v)\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_019">
<label>9.</label>
<p>Share <inline-formula id="j_info1144_ineq_077"><alternatives><mml:math>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">Q</mml:mi></mml:math><tex-math><![CDATA[$v,u,n,Q$]]></tex-math></alternatives></inline-formula> on the cloud service. The above steps are shown in Fig. <xref rid="j_info1144_fig_002">2</xref>.</p>
</list-item>
</list> 
<bold>The verification phase:</bold> when the member <italic>j</italic> of the cloud service wants to read data shared by data owner <italic>i</italic>, the following verification phase is performed.</p>
<fig id="j_info1144_fig_001">
<label>Fig. 1</label>
<caption>
<p>The steps of the setup phase.</p>
</caption>
<graphic xlink:href="info1144_g001.jpg"/>
</fig>
<fig id="j_info1144_fig_002">
<label>Fig. 2</label>
<caption>
<p>The steps of the initialization phase.</p>
</caption>
<graphic xlink:href="info1144_g002.jpg"/>
</fig>
<list>
<list-item id="j_info1144_li_020">
<label>1.</label>
<p>Compute <italic>z</italic> by: 
<disp-formula id="j_info1144_eq_007">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo stretchy="false">≡</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo stretchy="false">≡</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo stretchy="false">≡</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}z\equiv & u+v\times {P_{i}}\times w\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q\\ {} \equiv & (r-{S_{i}}\times v)\times g+v\times {P_{i}}\times x\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q\\ {} \equiv & r\times g-x\times {P_{i}}\times v\times g+v\times {P_{i}}\times x\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q\\ {} \equiv & r\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q.\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</p>
</list-item>
<list-item id="j_info1144_li_021">
<label>2.</label>
<p>Compute <inline-formula id="j_info1144_ineq_078"><alternatives><mml:math>
<mml:mi mathvariant="italic">R</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[$R\equiv n\times z\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_022">
<label>3.</label>
<p>Compute <inline-formula id="j_info1144_ineq_079"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">R</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[$m\equiv v-{H_{2}}(R)\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_info1144_li_023">
<label>4.</label>
<p>Compute <italic>K</italic> by: 
<disp-formula id="j_info1144_eq_008">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">Q</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">(</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true" mathvariant="normal">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∏</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true" mathvariant="normal">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">(</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mo stretchy="false">⋯</mml:mo>
<mml:mo>×</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mo stretchy="false">⋯</mml:mo>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mo stretchy="false">⋯</mml:mo>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mo stretchy="false">⋯</mml:mo>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">(</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true" mathvariant="normal">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∏</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo maxsize="1.19em" minsize="1.19em" fence="true" mathvariant="normal">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo maxsize="2.03em" minsize="2.03em" fence="true" mathvariant="normal">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">Q</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}{K^{\prime }}=& \widehat{e}({S_{j}},Q/{P_{j}})\\ {} =& \widehat{e}\bigg(g{P_{j}},\frac{r\big({\textstyle\textstyle\prod _{l=i}^{n}}{P_{l}}\big)}{{P_{j}}}\bigg)\\ {} =& \widehat{e}\bigg(g{P_{j}},r\times {P_{i}}\times {P_{j}}\times {P_{k}}\times \cdots \times \frac{{P_{n}}}{{P_{j}}}\bigg)\\ {} =& \widehat{e}(r\times g{P_{j}},{P_{i}}\times {P_{k}}\times \cdots \times {P_{n}})\\ {} =& \widehat{e}(r\times {P_{j}},g{P_{i}}\times {P_{k}}\times \cdots \times {P_{n}})\\ {} =& \widehat{e}(r\times {P_{j}}\times {P_{k}}\times \cdots \times {P_{n}},g{P_{i}})\\ {} =& \widehat{e}\bigg(\frac{r\big({\textstyle\textstyle\prod _{l=i}^{n}}{P_{l}}\big)}{{P_{i}}},g{P_{i}}\bigg)\\ {} =& \widehat{e}(Q{P_{i}},{S_{i}})\\ {} =& K.\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>
<fig id="j_info1144_fig_003">
<label>Fig. 3</label>
<caption>
<p>The steps of the verification phase.</p>
</caption>
<graphic xlink:href="info1144_g003.jpg"/>
</fig>
</p>
</list-item>
<list-item id="j_info1144_li_024">
<label>5.</label>
<p>Compute <italic>M</italic> by: 
<disp-formula id="j_info1144_eq_009">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo>+</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mo stretchy="false">≡</mml:mo>
</mml:mtd>
<mml:mtd class="align-even">
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{aligned}{}m-(z\times K\times n)\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q\equiv & M+(r\times n\times K\times g)-(r\times g\times K\times n)\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q\\ {} \equiv & M.\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</p>
</list-item>
</list>
</sec>
<sec id="j_info1144_s_007">
<label>4</label>
<title>Analyses</title>
<p>In this section, we give the security and computation cost analyses as follows.</p>
<sec id="j_info1144_s_008">
<label>4.1</label>
<title>Security Analysis</title>
<p><bold>Forward secrecy and backward secrecy:</bold> the encryption key is computed by <inline-formula id="j_info1144_ineq_080"><alternatives><mml:math>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>=</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">Q</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$K=\widehat{e}(Q/{P_{i}},{S_{i}})$]]></tex-math></alternatives></inline-formula>, where <inline-formula id="j_info1144_ineq_081"><alternatives><mml:math>
<mml:mi mathvariant="italic">Q</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">∏</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$Q=k{\textstyle\prod _{l=i}^{n}}{P_{l}}$]]></tex-math></alternatives></inline-formula>. The parameter <italic>k</italic> is selected randomly in every session in the proposed scheme. Due to the discrete logarithm problem (DLP), <italic>k</italic> is hard to be computed. Therefore, neither previous members nor new entrants can compute other keys except the session they are involved in. As a result, forward secrecy and backward secrecy are achieved in this proposed scheme.</p>
<p><bold>Source authentication:</bold> when a legal member wants to authenticate the data, the member can compute <inline-formula id="j_info1144_ineq_082"><alternatives><mml:math>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[$z\equiv u+v\times {P_{i}}\times w\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q$]]></tex-math></alternatives></inline-formula>. Assume an attacker attempts to impersonate the legal data owner, then the attacker uses its public key <inline-formula id="j_info1144_ineq_083"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${P_{a}}$]]></tex-math></alternatives></inline-formula> to compute its private key <inline-formula id="j_info1144_ineq_084"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${S_{a}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_info1144_ineq_085"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi></mml:math><tex-math><![CDATA[${u_{a}}\equiv (r-{S_{a}}\times v)\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q$]]></tex-math></alternatives></inline-formula>. Then, the attacker uploads <inline-formula id="j_info1144_ineq_086"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">Q</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(v,{u_{a}},n,Q)$]]></tex-math></alternatives></inline-formula> to the cloud service. When a receiver recovers the data send by the attacker, the following equations are used: 
<disp-formula id="j_info1144_eq_010">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mpadded height="0pt" depth="0pt">
<mml:mphantom>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub></mml:mphantom></mml:mpadded>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{array}{l}\displaystyle {z_{a}}\equiv (r-{S_{a}}\times v)\times g+v\times {P_{i}}\times x\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q\\ {} \displaystyle \phantom{{z_{a}}}\equiv r\times g-x\times {P_{a}}\times v\times g+v\times {P_{i}}\times x\times g\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q,\\ {} \displaystyle {R_{a}}\equiv n\times {z_{a}}\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q,\\ {} \displaystyle M=m-({z_{a}}\times K\times n)\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q.\end{array}\]]]></tex-math></alternatives>
</disp-formula> 
The receiver can verify whether the data is from the legal data owner by determining if the result, <italic>M</italic>, is meaningless or not.</p>
<p><bold>Data integrity:</bold> legal members can verify the integrity of the data using the following equations: 
<disp-formula id="j_info1144_eq_011">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">R</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">R</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{array}{l}\displaystyle z\equiv u+v\times {P_{i}}\times w\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q,\\ {} \displaystyle R\equiv n\times z\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q,\\ {} \displaystyle m\equiv v-{H_{2}}(R)\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q,\end{array}\]]]></tex-math></alternatives>
</disp-formula> 
and 
<disp-formula id="j_info1144_eq_012">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ M\equiv m-(z\times K\times n)\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q.\]]]></tex-math></alternatives>
</disp-formula> 
According to the equations above, if the sequence number <italic>n</italic> is altered to <italic>a</italic>, or <italic>v</italic> is altered to <inline-formula id="j_info1144_ineq_087"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">a</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${v_{a}}$]]></tex-math></alternatives></inline-formula> by an attacker during transmission; the recovered data will become meaningless. When a legal member decrypts a packet, the member has to compute <italic>R</italic> by <italic>z</italic> and get <italic>m</italic> by computing <italic>R</italic>. As a result, without the right sequence number and the original <italic>m</italic>, the recovered data will be meaningless.</p>
<p><bold>Confidentiality:</bold> besides the integrity of data, data confidentiality is also considered in the proposed scheme. Data should be recoverable only by the members whom the data owner wants to share with. If an attacker tries to recover the data using the following equations without the correct private key or the random number <italic>r</italic>, the recovered message will be meaningless. 
<disp-formula id="j_info1144_eq_013">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">R</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">R</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="align-odd">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo><mml:mover accent="false">
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="true">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">Q</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{array}{l}\displaystyle z\equiv u+v\times {P_{i}}\times w\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q,\\ {} \displaystyle R\equiv n\times z\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q,\\ {} \displaystyle m\equiv v-{H_{2}}(R)\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q,\\ {} \displaystyle {K^{\prime }}=\widehat{e}({S_{j}},Q/{P_{j}}),\end{array}\]]]></tex-math></alternatives>
</disp-formula> 
and 
<disp-formula id="j_info1144_eq_014">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">M</mml:mi>
<mml:mo stretchy="false">≡</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">K</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo>mod</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mi mathvariant="italic">q</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ M\equiv m-(z\times K\times n)\hspace{0.2em}\mathrm{mod} \hspace{0.2em}q.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>With regard to the privacy and the security in cloud storage service, the security requirements of the proposed scheme is compared with Zhao <italic>et al</italic>.’s and Han <italic>et al</italic>.’s scheme in Table <xref rid="j_info1144_tab_002">2</xref>. As Table <xref rid="j_info1144_tab_002">2</xref> shows, the proposed scheme and Han <italic>et al</italic>.’s scheme can achieve forward secrecy and backward secrecy, authentication of the data source, integrity of the data, and the confidentiality of the data. However, Zhao <italic>et al</italic>.’s scheme cannot satisfy the source authentication requirement.</p>
<table-wrap id="j_info1144_tab_002">
<label>Table 2</label>
<caption>
<p>The comparisons of security requirements.</p>
</caption>
<table>
<thead>
<tr>
<td colspan="4" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Security requirements</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">Schemes</td>
<td style="vertical-align: top; text-align: left">Zhao <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1144_ref_016">2010</xref>) scheme</td>
<td style="vertical-align: top; text-align: left">Han <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1144_ref_005">2013</xref>) scheme</td>
<td style="vertical-align: top; text-align: left">The proposed scheme</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Forward secrecy and</td>
<td style="vertical-align: top; text-align: left">Yes</td>
<td style="vertical-align: top; text-align: left">Yes</td>
<td style="vertical-align: top; text-align: left">Yes</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">backward secrecy</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Source authentication</td>
<td style="vertical-align: top; text-align: left">No</td>
<td style="vertical-align: top; text-align: left">Yes</td>
<td style="vertical-align: top; text-align: left">Yes</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Data integrity</td>
<td style="vertical-align: top; text-align: left">Yes</td>
<td style="vertical-align: top; text-align: left">Yes</td>
<td style="vertical-align: top; text-align: left">Yes</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Confidentiality</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Yes</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Yes</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">Yes</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="j_info1144_s_009">
<label>4.2</label>
<title>Computation Cost Analysis</title>
<p>In the aspect of computational cost analysis, the proposed scheme is compared with Zhao <italic>et al</italic>.’s scheme and Han <italic>et al</italic>.’s scheme in Table <xref rid="j_info1144_tab_003">3</xref>. <inline-formula id="j_info1144_ineq_088"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{A}}$]]></tex-math></alternatives></inline-formula> is the time complexity of point addition, <inline-formula id="j_info1144_ineq_089"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{B}}$]]></tex-math></alternatives></inline-formula> is the time complexity of bilinear paring, <inline-formula id="j_info1144_ineq_090"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{M}}$]]></tex-math></alternatives></inline-formula> is the time complexity of real number multiplication, and <inline-formula id="j_info1144_ineq_091"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">E</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${T_{E}}$]]></tex-math></alternatives></inline-formula> is the time complexity of exponential operation. There is no exponential operation in the proposed scheme; therefore, it is obvious that the proposed scheme is more efficient than the scheme proposed by Han <italic>et al</italic>.</p>
<table-wrap id="j_info1144_tab_003">
<label>Table 3</label>
<caption>
<p>Comparison of time complexity.</p>
</caption>
<table>
<thead>
<tr>
<td colspan="4" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Computational costs</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">Schemes</td>
<td style="vertical-align: top; text-align: left">Zhao <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1144_ref_016">2010</xref>) scheme</td>
<td style="vertical-align: top; text-align: left">Han <italic>et al.</italic> (<xref ref-type="bibr" rid="j_info1144_ref_005">2013</xref>) scheme</td>
<td style="vertical-align: top; text-align: left">The proposed scheme</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Data owner</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_092"><alternatives><mml:math>
<mml:mn>15</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$15{T_{A}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_093"><alternatives><mml:math>
<mml:mn>6</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>8</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">E</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$6{T_{B}}+8{T_{E}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_094"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">M</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$(n+10){T_{A}}+{T_{B}}+2{T_{M}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Receiver</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_095"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$2{T_{A}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_096"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>4</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">E</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$2{T_{B}}+4{T_{E}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_097"><alternatives><mml:math>
<mml:mn>8</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$8{T_{A}}+{T_{B}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Cloud storage</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_098"><alternatives><mml:math>
<mml:mn>3</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$3{T_{A}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_099"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">E</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$2{T_{B}}+{T_{E}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_info1144_ineq_100"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$2{T_{A}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">PKG</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">–</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_info1144_ineq_101"><alternatives><mml:math>
<mml:mn>5</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>11</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">E</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$5{T_{B}}+11{T_{E}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">–</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="j_info1144_s_010">
<label>5</label>
<title>Conclusions</title>
<p>In this paper, we proposed a new data sharing scheme for cloud services. In the aspect of security, we achieved authentication of data source as well as data integrity and confidentiality. Furthermore, forward secrecy and backward secrecy are satisfied by using bilinear pairing to compute a common encryption key. In the aspect of efficiency, we use the concept of message recovery to address the problem that signed information might be lost during transmission. This approach also reduces the computation cost without using any exponential operation. Moreover, we compute a common key for every data to reduce the encryption time. Although the computation cost of the proposed scheme is higher than Zhao <italic>et al</italic>.’s scheme, but Zhao <italic>et al</italic>.’s scheme cannot achieve the security requirement of source authentication. Therefore, the proposed scheme is more secure and more efficient than the related works.</p>
</sec>
</body>
<back>
<ref-list id="j_info1144_reflist_001">
<title>References</title>
<ref id="j_info1144_ref_001">
<mixed-citation publication-type="chapter"><string-name><surname>Almorsy</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Grundy</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Ibrahim</surname>, <given-names>A.S.</given-names></string-name> (<year>2011</year>). <chapter-title>Collaboration-based cloud computing security management framework</chapter-title>. In: <source>IEEE 4th International Conference on Cloud Computing</source>, pp. <fpage>364</fpage>–<lpage>371</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_002">
<mixed-citation publication-type="chapter"><string-name><surname>Barreto</surname>, <given-names>P.S.L.M.</given-names></string-name>, <string-name><surname>Kim</surname>, <given-names>H.Y.</given-names></string-name>, <string-name><surname>Lynn</surname>, <given-names>B.</given-names></string-name>, <string-name><surname>Scott</surname>, <given-names>M.</given-names></string-name> (<year>2002</year>). <chapter-title>Efficient algorithms for pairing-based crytosystems</chapter-title>. In: <source>Proceedings of Advances in Cryptology-Brypto 2002</source>, <series><italic>Lecture Notes inComputer Science</italic></series>, Vol. <volume>2442</volume>, pp. <fpage>354</fpage>–<lpage>368</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_003">
<mixed-citation publication-type="chapter"><string-name><surname>Bonehand</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Franklin</surname>, <given-names>M.</given-names></string-name> (<year>2001</year>). <chapter-title>Identity-based encryption from the weil pairings</chapter-title>. In: <source>Proceedings of Advances in Cryptology-Crypto 2001</source>, <series><italic>Lecture Notes in Computer Science</italic></series>, Vol. <volume>2139</volume>, pp. <fpage>213</fpage>–<lpage>229</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_004">
<mixed-citation publication-type="chapter"><string-name><surname>Ghazia</surname>, <given-names>U.</given-names></string-name>, <string-name><surname>Masood</surname>, <given-names>R.</given-names></string-name> (<year>2012</year>). <chapter-title>Comparative analysis of access control systems on cloud</chapter-title>. In: <source>Proceedings of ACIS International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel &amp; Distributed Computing (SNPD)</source>, pp. <fpage>8</fpage>–<lpage>10</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_005">
<mixed-citation publication-type="journal"><string-name><surname>Han</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Susilo</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Mu</surname>, <given-names>W.</given-names></string-name> (<year>2013</year>). <article-title>Identity-based data storage in cloud computing</article-title>. <source>Future Generation Computer Systems</source>, <volume>29</volume>, <fpage>673</fpage>–<lpage>681</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_006">
<mixed-citation publication-type="book"><string-name><surname>Hay</surname>, <given-names>B.</given-names></string-name>, <string-name><surname>Nance</surname>, <given-names>K.L.</given-names></string-name>, <string-name><surname>Bishop</surname>, <given-names>M.</given-names></string-name> (<year>2011</year>). <source>Storm Clouds Rising: Security Challenges for IaaS Cloud Computing. HICSS</source>. <publisher-name>IEEE Computer Society</publisher-name>, pp. <fpage>1</fpage>–<lpage>7</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_007">
<mixed-citation publication-type="chapter"><string-name><surname>Joux</surname>, <given-names>A.</given-names></string-name> (<year>2002</year>). <chapter-title>The weil and tate airings as building blocks for public key cryptosystems</chapter-title>. In: <source>Proceedings of the Algorithmic Number Theory Symposium (ANTS-V2002)</source>, <series><italic>Lecture Notes in Computer Science</italic></series>, Vol. <volume>2369</volume>, pp. <fpage>20</fpage>–<lpage>32</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_008">
<mixed-citation publication-type="journal"><string-name><surname>Koblitz</surname>, <given-names>N.</given-names></string-name> (<year>1987</year>). <article-title>Elliptic curve cryptosystems</article-title>. <source>Mathematics of Computation</source>, <volume>48</volume>(<issue>177</issue>), <fpage>203</fpage>–<lpage>209</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_009">
<mixed-citation publication-type="chapter"><string-name><surname>Lin</surname>, <given-names>I.C.</given-names></string-name>, <string-name><surname>Chang</surname>, <given-names>C.C.</given-names></string-name> (<year>2008</year>). <chapter-title>A novel digital signature scheme for application of document review in a linearly hierarchical organization</chapter-title>. In: <source>Proceedings of the 4th International Conference on Intelligent Information Hiding and Multimedia Signal Processing</source>, pp. <fpage>1367</fpage>–<lpage>1370</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_010">
<mixed-citation publication-type="journal"><string-name><surname>Lin</surname>, <given-names>I.C.</given-names></string-name>, <string-name><surname>Yang</surname>, <given-names>J.H.</given-names></string-name> (<year>2012</year>). <article-title>Improving computation efficiency of source authentication by elliptic curve cryptosystem</article-title>. <source>Journal of Electronic Science and Technology</source>, <volume>10</volume>(<issue>3</issue>), <fpage>227</fpage>–<lpage>231</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_011">
<mixed-citation publication-type="journal"><string-name><surname>Lin</surname>, <given-names>I.C.</given-names></string-name>, <string-name><surname>Chang</surname>, <given-names>P.Y.</given-names></string-name>, <string-name><surname>Chang</surname>, <given-names>C.C.</given-names></string-name> (<year>2010</year>). <article-title>A key management scheme for sensor networks using bilinear pairings and gap Deffie–Hellman group</article-title>. <source>International Journal of Innovative Computing, Information and Control</source>, <volume>6</volume>(<issue>2</issue>), <fpage>809</fpage>–<lpage>816</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_012">
<mixed-citation publication-type="chapter"><string-name><surname>Miller</surname>, <given-names>V.S.</given-names></string-name> (<year>1986</year>). <chapter-title>Use of elliptic curves in cryptography</chapter-title>. In: <string-name><surname>Ed</surname>, <given-names>W.H.C.</given-names></string-name> (Ed.), <source>Advances in Cryptology – CRYPTO ’85 Proceedings, CRYPTO 1985</source>, <series><italic>Lecture Notes in Computer Science</italic></series>, Vol. <volume>218</volume>, <publisher-name>Springer</publisher-name>, <publisher-loc>Berlin</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_013">
<mixed-citation publication-type="chapter"><string-name><surname>Nyberg</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Ruppel</surname>, <given-names>R.A.</given-names></string-name> (<year>1993</year>). <chapter-title>A new signature scheme based on the DSA giving message recovery</chapter-title>. In: <source>Proceedings of the 1st ACM Conference on Computer and Communications Security</source>, pp. <fpage>58</fpage>–<lpage>61</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_014">
<mixed-citation publication-type="journal"><string-name><surname>Wang</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Wu</surname>, <given-names>C.K.</given-names></string-name> (<year>2005</year>). <article-title>Efficient identity-based multicast scheme from bilinear pairing</article-title>. <source>IEE Proceedings Communications</source>, <volume>152</volume>(<issue>6</issue>), <fpage>877</fpage>–<lpage>882</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_015">
<mixed-citation publication-type="chapter"><string-name><surname>Zhang</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Safavi-Naini</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Susilo</surname>, <given-names>W.</given-names></string-name> (<year>2004</year>). <chapter-title>An efficient signature scheme from bilinear pairings and its applications</chapter-title>. In: <series><italic>Proceedings on Lecture Notes in Computer Science (LNCS)</italic></series>, Vol. <volume>2947</volume>, pp. <fpage>277</fpage>–<lpage>290</lpage>.</mixed-citation>
</ref>
<ref id="j_info1144_ref_016">
<mixed-citation publication-type="chapter"><string-name><surname>Zhao</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Rong</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Li</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Tang</surname>, <given-names>Y.</given-names></string-name> (<year>2010</year>). <chapter-title>Trusted data sharing over untrusted cloud storage providers</chapter-title>. In: <source>Proceedings of 2nd IEEE International Conference on Cloud Computing Technology and Science (CloudCom)</source>, pp. <fpage>97</fpage>–<lpage>103</lpage>.</mixed-citation>
</ref>
</ref-list>
</back>
</article>