<?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">INFOR415</article-id>
<article-id pub-id-type="doi">10.15388/20-INFOR415</article-id>
<article-categories><subj-group subj-group-type="heading">
<subject>Research Article</subject></subj-group></article-categories>
<title-group>
<article-title>Authenticated Key Agreement Protocol Based on Provable Secure Cryptographic Functions</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Kilciauskas</surname><given-names>Ausrys</given-names></name><xref ref-type="aff" rid="j_infor415_aff_001">1</xref><bio>
<p><bold>A. Kilciauskas</bold>, MsD in informatics, distant learning information technologies, in 2017. Work expertise in corporate security, cryptography, blockchain technology.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Butkus</surname><given-names>Gintaras</given-names></name><xref ref-type="aff" rid="j_infor415_aff_002">2</xref><bio>
<p><bold>G. Butkus</bold>, MsD in informatics, in 1992. Expertise in computer networks and security. CompTIA Security+ Certified Professional. Cisco Certified Network Associate (CCNA) Routing and Switching. Cisco Certified Network Professional (CCNP) Routing and Switching. Cisco Certificated Academy Instructor (CCAI). Scientific interests are cryptography and blockchain technology.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Sakalauskas</surname><given-names>Eligijus</given-names></name><email xlink:href="eligijus.sakalauskas@ktu.lt">eligijus.sakalauskas@ktu.lt</email><xref ref-type="aff" rid="j_infor415_aff_003">3</xref><xref ref-type="corresp" rid="cor1">∗</xref><bio>
<p><bold>E. Sakalauskas</bold> is a professor at Department of Applied Mathematics, Kaunas University of Technology. His research interests are focused in cryptography. The main research results in this field were published in over 20 papers.</p></bio>
</contrib>
<aff id="j_infor415_aff_001"><label>1</label>Department of Applied Informatics, <institution>Vytautas Magnus University</institution>, <country>Lithuania</country></aff>
<aff id="j_infor415_aff_002"><label>2</label>Department of Informatics, <institution>Kauno kolegija / University of Applied Science</institution>, <country>Lithuania</country></aff>
<aff id="j_infor415_aff_003"><label>3</label>Department of Applied Mathematics, <institution>Kaunas University of Technology</institution>, <country>Lithuania</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>∗</label>Corresponding author.</corresp>
</author-notes>
<pub-date pub-type="ppub"><year>2020</year></pub-date><pub-date pub-type="epub"><day>6</day><month>5</month><year>2020</year></pub-date><volume>31</volume><issue>2</issue><fpage>277</fpage><lpage>298</lpage>
<history>
<date date-type="received"><month>1</month><year>2020</year></date>
<date date-type="accepted"><month>3</month><year>2020</year></date>
</history>
<permissions><copyright-statement>© 2020 Vilnius University</copyright-statement><copyright-year>2020</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 vulnerable part of communications between user and server is the poor authentication level at the user’s side. For example, in e-banking systems for user authentication are used passwords that can be lost or swindled by a person maliciously impersonating bank.</p>
<p>To increase the security of e-banking system users should be supplied by the elements of public key infrastructure (PKI) but not necessary to the extent of standard requirements which are too complicated for ordinary users.</p>
<p>In this paper, we propose two versions of authenticated key agreement protocol (AKAP) which can be simply realized on the user’s side. AKAP is a collection of cryptographic functions having provable security properties.</p>
<p>It is proved that AKAP1 is secure against active adversary under discrete logarithm assumption when formulated certain conditions hold. AKAP2 provides user’s anonymity against eavesdropping adversary. The partial security of AKAP2 is investigated which relies on the security of asymmetric encryption function.</p>
</abstract>
<kwd-group>
<label>Key words</label>
<kwd>cryptography</kwd>
<kwd>identification</kwd>
<kwd>key agreement protocol</kwd>
<kwd>asymmetric encryption</kwd>
<kwd>e-signature</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="j_infor415_s_001">
<label>1</label>
<title>Introduction</title>
<p>The vulnerable part of communications between user and server is the poor authentication level on the user’s side. For example, in e-banking systems for user authentication are used passwords that can be lost or swindled by a person maliciously impersonating bank.</p>
<p>Nowadays appeared Smart-Id identification using smart phones has some advantages compared with the bank’s supplied passwords table to the user, but nevertheless it is a temporary measure to mitigate the increasing number of attacks to e-banking system.</p>
<p>Despite the fact that public key infrastructure (PKI) and certificates based identification exists for the 5-10 years, newly appeared Smart-Id identification becomes more popular. The reason is the complexity of PKI in traditional public key settings and the key escrow problem in ID-based public key settings. In this connection the alternative certificate-based signature is proposed as an attractive public key setting, which reduces the complexity of PKI and resolves the key escrow problem (Tseng <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor415_ref_024">2019</xref>).</p>
<p>Authors proposed a new and efficient certificate-based signature (CBS) scheme from lattices. Under the short integer solution (SIS) assumption from lattices, the proposed CBS scheme is shown to be existential unforgeability against adaptive chosen message attacks.</p>
<p>The other alternative is certificateless signature that has become a widely studied paradigm. This paradigm has a lack of key escrow problem and certificate management problem. But the problem of this primitive was non-resistance to catastrophic damage caused by key exposure. New results in this field are presented in (Mei <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor415_ref_008">2019</xref>).</p>
<p>Oulined above perspective solutions are in the investigation and developing stage so far.</p>
<p>The one of currently available solutions can be the cryptographic chip implemented in the user’s smartphone or in his credit card. This cryptographic chip could be supplied by the bank to the user with public key cryptosystem (PKC) parameters and supporting software. This software can be used to more secure authentication and communication session creation using authenticated key agreement protocol (AKAP).</p>
<p>In this case smart phone can provide much more functions to the customer. For example, it can be used as e-purse for off-line payments (Muleravicius <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor415_ref_009">2019</xref>).</p>
<p>Then user may not communicate with bank for any money transfer. It is enough to communicate with bank for withdrawal and deposit money to and from e-purse respectively using AKAP.</p>
<p>Moreover, AKAP can be combined together with biometric identification methods which popularity is growing nowadays but not so rapid as desirable.</p>
<p>In general, the user has significantly less computing power than server and therefore AKAP realization should need as small computation resources as possible.</p>
<p>We will consider two legal parties communication with each other, namely user Alice and Bank and an adversary. We assume that in all cases adversary has public keys of both parties and system parameters (SP) of a used cryptographic system. We consider the following type of attacks:</p>
<list>
<list-item id="j_infor415_li_001">
<label>•</label>
<p>Eavesdropping attacks: the adversary can eavesdrop on the legal communications between parties and can obtain the transcript of several interactions between them. As a consequence, the adversary can decrypt secret messages or compromise the secret key.</p>
</list-item>
<list-item id="j_infor415_li_002">
<label>•</label>
<p>Active attacks: the adversary uses the interaction to try and learn something that will let it impersonate Alice to the Bank and the Bank to Alice. Suppose Alice runs an identification protocol with the Bank over the internet. An active adversary controls the channel and can block or inject messages at will. The adversary waits for Alice to run the identification protocol with the Bank and relays all protocol messages from one side to the other. Once the identification protocol completes successfully, the adversary sends requests to the Bank that appear to be originating from Alice. The bank honors these requests, thinking that they came from Alice. In effect, the adversary uses Alice to authenticate to the Bank and then “hijacks” the session to send his own messages to the Bank. As a consequence of these attacks, the adversary can decrypt secret messages exchanged between parties or compromise their secret keys.</p>
</list-item>
</list>
<p>Active attacks are more powerful than eavesdropping attacks. They come up when Alice tries to login from a local infected computer. The malware infecting the computer could display a fake login screen and fool Alice into interacting with it, thus mounting an active attack.</p>
<p>One of the very “popular” kinds of attack is a Man-in-the-Middle (MiM) attack. The HTTPS protocol is vulnerable to this kind of attack (Callegati <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor415_ref_005">2009</xref>). An attacker capable of eavesdropping on traffic is also able to inject its own messages. The protocol completely falls apart in the presence of an active adversary who controls the network. The main reason is the lack of authentication. Alice sets up a shared secret, but she has no idea with whom the secret is shared. The same holds for the Bank. An active attacker can abuse this to expose all traffic between Alice and the Bank. This attack works against any key exchange protocol that does not include authentication. Moreover, neither KAP, nor identification protocols alone are secure against the MiM attack (Boneh and Shoup, <xref ref-type="bibr" rid="j_infor415_ref_004">2020</xref>).</p>
<p>In 2015.03.17 Euronews made a report that on-line banking might be full of holes like Swiss Emmental cheese, <ext-link ext-link-type="uri" xlink:href="http://www.euronews.com/2015/03/17/internet-banking-a-hacker-s-ideal-target/">http://www.euronews.com/2015/03/17/internet-banking-a-hacker-s-ideal-target/</ext-link>.</p>
<p>The reasons of this situation which has not significantly changed so far are outlined above, therefore, the measures must be implemented to protect the user especially against active adversary attacks.</p>
<p>To realize secure AKAP it is required to have a combination of several cryptographic primitives: key agreement protocol, identification protocol, digital signature, and asymmetric encryption.</p>
<p>To provide secure communications between Alice and the Bank it is required that Alice prove to the Bank her identity and that the Bank prove to Alice its identity. One party proving one’s identity is named a Prover – P and the other party verifying this proof is a Verifier – V. Hence, to create secure communications both parties should be both P and V to each other. This kind of identification is called mutual identification.</p>
<p>Secure identification protocols are based on the interaction between the P and V. They use a technique called challenge-response identification (Just, <xref ref-type="bibr" rid="j_infor415_ref_007">2011</xref>) together with other protocols including key agreement protocol (KAP) thus yielding authenticated key agreement protocol (AKAP).</p>
<p>The aim of this paper is to present integrated AKAP between two parties: user Alice and the Bank using well known cryptographic primitives with provable security. AKAP should have the following properties:</p>
<list>
<list-item id="j_infor415_li_003">
<label>•</label>
<p>Secure mutual authentication between Alice and the Bank and session key agreement.</p>
</list-item>
<list-item id="j_infor415_li_004">
<label>•</label>
<p>Effective realization especially on the user’s side.</p>
</list-item>
<list-item id="j_infor415_li_005">
<label>•</label>
<p>Alice’s anonymity against eavesdropping and active adversary.</p>
</list-item>
</list>
<p>Security analysis of proposed AKAP is presented referencing to security assumptions of cryptographic primitives used in our construction.</p>
<p>Effective realization means that computations and communications should be minimized. It is also desirable that the number of system parameters should be minimized as well. The number of these parameters depends on the selection of suitable cryptographic protocols. Several cryptographic protocols and schemes are having the same system parameters such as ElGamal cryptosystem (ElGamal, <xref ref-type="bibr" rid="j_infor415_ref_006">1985</xref>) together with the same private and public keys:</p>
<list>
<list-item id="j_infor415_li_006">
<label>•</label>
<p>Diffie–Hellman key Agreement protocol (DH-KAP),</p>
</list-item>
<list-item id="j_infor415_li_007">
<label>•</label>
<p>ElGamal encryption (ElG-Enc),</p>
</list-item>
<list-item id="j_infor415_li_008">
<label>•</label>
<p>ElGamal signature (ElG-Sig),</p>
</list-item>
<list-item id="j_infor415_li_009">
<label>•</label>
<p>Schnorr identification protocol (S-Id),</p>
</list-item>
<list-item id="j_infor415_li_010">
<label>•</label>
<p>Schnorr signature (S-Sig).</p>
</list-item>
</list>
<p>These protocols are realized using the same discrete exponent functions dexp() in multiplicative cyclic groups of finite order. Some of them can be realized in elliptic curve groups. We will consider numerical groups, where operations are performed modulo large prime number <italic>p</italic>.</p>
<p>Two protocols AKAP1 and AKAP2 are considered. AKAP1 is a simpler protocol that does not provide user’s anonymity. AKAP2 provides user’s anonymity by adding additional encryption in the first communication round.</p>
<p>In the list above we have two signature schemes, namely ElGamal and Schnorr. We present here some analyses allowing us to choose a unique scheme better matching our requirements. The signature scheme we use as an additional authentication means from the Bank’s side. It is an optional measure since the Bank has a qualified e-signature certificate and can be authenticated by the user’s browser and during the execution of SSL/TLS protocol.</p>
<p>ElGamal signature scheme (ElGamal, <xref ref-type="bibr" rid="j_infor415_ref_006">1985</xref>) is based on the discrete exponent function.</p>
<p>The original paper did not include a hash function as a system parameter. The message <italic>m</italic> was used directly in the algorithm instead of H<inline-formula id="j_infor415_ineq_001"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">m</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(m)$]]></tex-math></alternatives></inline-formula>. This enables an attack called an existential forgery, as described in the paper of Pointcheval and Stern (Pointcheval and Stern, <xref ref-type="bibr" rid="j_infor415_ref_012">2000</xref>).</p>
<p>ElGamal signature scheme (ElGamal, <xref ref-type="bibr" rid="j_infor415_ref_006">1985</xref>) is vulnerable to the Bleichenbacher attack (Bleichenbacher, <xref ref-type="bibr" rid="j_infor415_ref_002">1996</xref>).</p>
<p>This attack is avoided by using groups <inline-formula id="j_infor415_ineq_002"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> of prime order <italic>q</italic>. The main drawback of ElGamal signature is that it has considerable long keys.</p>
<p>Due to these considerations, we choose the Schnorr signature in our construction. It is a new variant of the ElGamal signature which overcomes the drawbacks, namely: a long signature size and Bleichenbacher attack.</p>
<p>Schnorr identification and signatures (Schnorr, <xref ref-type="bibr" rid="j_infor415_ref_020">1990</xref>, <xref ref-type="bibr" rid="j_infor415_ref_021">1991</xref>) constitute one of the most fundamental public-key cryptosystems.</p>
<p>Pointcheval and Stern (<xref ref-type="bibr" rid="j_infor415_ref_011">1996</xref>, <xref ref-type="bibr" rid="j_infor415_ref_012">2000</xref>) have shown that it is provably secure, assuming the hardness of the discrete logarithm (DL) problem in the Random Oracle Model (Bellare and Rogaway, <xref ref-type="bibr" rid="j_infor415_ref_001">1993</xref>; Neven <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor415_ref_010">2009</xref>; Seurin, <xref ref-type="bibr" rid="j_infor415_ref_022">2012</xref>).</p>
<p>Schnorr identification protocol is based on the exchange of challenge-response conversations between prover P and verifier V when P is seeking to prove to V some parameters associated with his/her identity. In our case the prover is Alice and the verifier is the Bank. The process of proof is based on the exchange of messages between P and V and is called conversation. In Schnorr identification protocol conversation consists of three rounds:</p>
<list>
<list-item id="j_infor415_li_011">
<label>1.</label>
<p>P computes a commitment and sends it to V.</p>
</list-item>
<list-item id="j_infor415_li_012">
<label>2.</label>
<p>V generates a challenge and sends it to P.</p>
</list-item>
<list-item id="j_infor415_li_013">
<label>3.</label>
<p>P computes a response and sends it to V.</p>
</list-item>
</list>
<p>Both P and V are actively involved in the conversation, and the timing and ordering of the messages are critical. The active adversary playing the role of a prover must generate the first message before it sees the challenge generated by V.</p>
<p>To achieve the security of the AKE protocol against the active adversary, one must carefully intertwine the processes of identification and anonymous key exchange. The adversary actively impersonates a legitimate verifier. For example, the adversary may clone a banking site and wait for a user being a prover P to visit the site. When it occurs P runs the identification protocol with the adversary. As a result, the adversary repeatedly interacts with P on the behalf of verifier V and sends the prover arbitrary messages of its choice. After several such interactions, the adversary turns around and attempts to authenticate himself as the prover to a legitimate verifier V. Identification protocol is secure against active attacks if the adversary still cannot fool the legitimate verifier V.</p>
<p>In this paper we define security assumptions and provide security proof of AKAP1 against an active adversary. Security proof is based on transforming S-Id to AKAP1 which represents the so called sigma protocol (Boneh and Shoup, <xref ref-type="bibr" rid="j_infor415_ref_004">2020</xref>). Unfortunately, the similar security proof for AKAP2 is not possible since AKAP2, being a more complex protocol, does not satisfy sigma protocol’s conditions. But nevertheless, AKAP2 seems to be more secure than AKAP1. Hence, so far the security of AKAP2 can be based only on the security of its cryptographic components listed above.</p>
<p>The other objective of this paper is to try to extend these results to the other conjectured one-way functions (OWF) having some similarity with used here dexp() function. For example, new conjectured OWF based on so called matrix power function (MPF) was proposed earlier in our papers (Sakalauskas <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor415_ref_018">2008</xref>, <xref ref-type="bibr" rid="j_infor415_ref_019">2017</xref>; Sakalauskas and Mihalkovich, <xref ref-type="bibr" rid="j_infor415_ref_015">2014</xref>, <xref ref-type="bibr" rid="j_infor415_ref_016">2017</xref>; Sakalauskas, <xref ref-type="bibr" rid="j_infor415_ref_014">2018</xref>). In Sakalauskas and Mihalkovich (<xref ref-type="bibr" rid="j_infor415_ref_017">2018</xref>) it is proved that inversion of MPF corresponds to NP-complete problem. This proof was based on the result presented in Sakalauskas (<xref ref-type="bibr" rid="j_infor415_ref_013">2012</xref>).</p>
<p>The structure of the paper is the following. To be self-contained, in Section <xref rid="j_infor415_s_002">2</xref> we present some mathematical background and describe cryptographic protocols and functions used in our construction. In Section <xref rid="j_infor415_s_007">3</xref> we present AKAP1 and AKAP2 description. Section <xref rid="j_infor415_s_007">3</xref> is dedicated to security analysis. In Section <xref rid="j_infor415_s_008">4</xref> conclusions and a look to the future work are presented.</p>
</sec>
<sec id="j_infor415_s_002">
<label>2</label>
<title>Preliminaries</title>
<p>We are dealing with a cyclic group <inline-formula id="j_infor415_ineq_003"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> of prime order <italic>q</italic> with generator <italic>g</italic>. In our case <inline-formula id="j_infor415_ineq_004"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> is a subgroup of the cyclic multiplicative group of integers <inline-formula id="j_infor415_ineq_005"><alternatives>
<mml:math><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:mo>=</mml:mo><mml:mo fence="true" stretchy="false">{</mml:mo><mml:mn>1</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mo>…</mml:mo><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn><mml:mo fence="true" stretchy="false">}</mml:mo></mml:math>
<tex-math><![CDATA[${Z_{p}^{\ast }}=\{1,2,\dots ,p-1\}$]]></tex-math></alternatives></inline-formula> where <italic>p</italic> is prime and multiplication is performed modulo <italic>p</italic>. Prime <italic>p</italic> is of <italic>n</italic> bit length, where <italic>n</italic> is a security parameter.</p>
<p>Since <italic>q</italic> is a prime factor of <inline-formula id="j_infor415_ineq_006"><alternatives>
<mml:math><mml:mi mathvariant="italic">p</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$p-1$]]></tex-math></alternatives></inline-formula>, then according to Lagrange’s theorem and its consequences all elements of <inline-formula id="j_infor415_ineq_007"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> are generators. Then for all <italic>g</italic> in <inline-formula id="j_infor415_ineq_008"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> the following identity holds 
<disp-formula id="j_infor415_eq_001">
<label>(2.1)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {g^{q}}=1\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>This identity allows checking if number <inline-formula id="j_infor415_ineq_009"><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>, <inline-formula id="j_infor415_ineq_010"><alternatives>
<mml:math><mml:mi mathvariant="italic">g</mml:mi><mml:mo stretchy="false">≠</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$g\ne 1$]]></tex-math></alternatives></inline-formula> is a generator in <inline-formula id="j_infor415_ineq_011"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula>.</p>
<p>Let <inline-formula id="j_infor415_ineq_012"><alternatives>
<mml:math><mml:mi mathvariant="italic">g</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$g\in {G_{q}}$]]></tex-math></alternatives></inline-formula> be a generator and <italic>x</italic> be an integer <inline-formula id="j_infor415_ineq_013"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo>⩽</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo>⩽</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$1\leqslant x\leqslant q-1$]]></tex-math></alternatives></inline-formula>, then discrete exponent function dexp() in <inline-formula id="j_infor415_ineq_014"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> is defined as follows: 
<disp-formula id="j_infor415_eq_002">
<label>(2.2)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">d</mml:mi><mml:mo movablelimits="false">exp</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">a</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ d\exp (x)={g^{x}}\operatorname{mod} p=a,\hspace{1em}a\in {G_{q}}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The inverse function to dexp() is a discrete logarithm function <inline-formula id="j_infor415_ineq_015"><alternatives>
<mml:math><mml:mi mathvariant="italic">d</mml:mi><mml:msub><mml:mrow><mml:mo movablelimits="false">log</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$d{\log _{g}}(a)$]]></tex-math></alternatives></inline-formula> and is defined as follows: 
<disp-formula id="j_infor415_eq_003">
<label>(2.3)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">d</mml:mi><mml:msub><mml:mrow><mml:mo movablelimits="false">log</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo movablelimits="false">mod</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn><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[\[ d{\log _{g}}(a)=x\operatorname{mod} (q-1),\]]]></tex-math></alternatives>
</disp-formula> 
where generator <italic>g</italic> is a discrete logarithm function’s base defined in (<xref rid="j_infor415_eq_002">2.2</xref>).</p>
<p>If <italic>g</italic> is a generator in <inline-formula id="j_infor415_ineq_016"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> then function dexp() is one-to-one and performs the following mapping 
<disp-formula id="j_infor415_eq_004">
<label>(2.4)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mtext>dexp</mml:mtext><mml:mo>:</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi><mml:mo>−</mml:mo><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:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ \text{dexp}:{Z_{q-1}}\to {G_{q}},\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor415_ineq_017"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</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 mathvariant="normal">,</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mo>…</mml:mo><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn><mml:mo fence="true" stretchy="false">}</mml:mo></mml:math>
<tex-math><![CDATA[${Z_{q-1}}=\{0,1,2,\dots ,q-1\}$]]></tex-math></alternatives></inline-formula> is a ring of integers with addition and multiplication modulo <italic>q</italic>. This mapping plays a very important role in security considerations of cryptographic protocols based on dexp() function.</p>
<p>The necessary but not sufficient security assumption for all protocols presented above is discrete logarithm assumption and associated discrete logarithm problem (DLP).</p><statement id="j_infor415_stat_001"><label>Definition 2.1.</label>
<p>Discrete Logarithm Problem – DLP is to find <italic>x</italic> in (<xref rid="j_infor415_eq_002">2.2</xref>) when <italic>g</italic>, <italic>p</italic> and <italic>a</italic> are given.</p></statement><statement id="j_infor415_stat_002"><label>Definition 2.2.</label>
<p>Discrete logarithm assumption. We say that the discrete logarithm (DL) assumption holds for <inline-formula id="j_infor415_ineq_018"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> if the probability to find <italic>x</italic> in (<xref rid="j_infor415_eq_002">2.2</xref>) when <italic>g</italic>, <italic>p</italic> and <italic>a</italic> are given is negligible.</p>
<p>We will need a notion of one-way function (OWF) which we define in the following non-formal way.</p></statement><statement id="j_infor415_stat_003"><label>Definition 2.3.</label>
<p>Let <inline-formula id="j_infor415_ineq_019"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo>:</mml:mo><mml:mi mathvariant="italic">A</mml:mi><mml:mo stretchy="false">→</mml:mo><mml:mi mathvariant="italic">B</mml:mi></mml:math>
<tex-math><![CDATA[$F:A\to B$]]></tex-math></alternatives></inline-formula> be a function. Function <italic>F</italic> is said to be one-way if: 1) for given <inline-formula id="j_infor415_ineq_020"><alternatives>
<mml:math><mml:mi mathvariant="italic">x</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:mi mathvariant="italic">A</mml:mi></mml:math>
<tex-math><![CDATA[$x\in A$]]></tex-math></alternatives></inline-formula>, it is computationally easy to compute <inline-formula id="j_infor415_ineq_021"><alternatives>
<mml:math><mml:mi mathvariant="italic">y</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$y=F(x)$]]></tex-math></alternatives></inline-formula>, which corresponds to the direct <italic>F</italic> value computation; 2) for given <inline-formula id="j_infor415_ineq_022"><alternatives>
<mml:math><mml:mi mathvariant="italic">y</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:mi mathvariant="italic">B</mml:mi></mml:math>
<tex-math><![CDATA[$y\in B$]]></tex-math></alternatives></inline-formula>, it is computationally hard to compute (at least single) <inline-formula id="j_infor415_ineq_023"><alternatives>
<mml:math><mml:mi mathvariant="italic">x</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:mi mathvariant="italic">A</mml:mi></mml:math>
<tex-math><![CDATA[$x\in A$]]></tex-math></alternatives></inline-formula> such that <inline-formula id="j_infor415_ineq_024"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">y</mml:mi></mml:math>
<tex-math><![CDATA[$F(x)=y$]]></tex-math></alternatives></inline-formula>, which corresponds to the inverse <italic>F</italic> value computation.</p></statement><statement id="j_infor415_stat_004"><label>Conjecture 2.4.</label>
<p>The discrete exponent function is a candidate OWF.</p></statement>
<p>Indeed, the computation of <inline-formula id="j_infor415_ineq_025"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{x}}$]]></tex-math></alternatives></inline-formula> mod <italic>p</italic> can be done efficiently even for large numbers commonly referred to as square-and-multiply algorithms. But its inverse value computation corresponds to DLP and is reckoned as hard using classical (non-quantum) computers. But nevertheless, due to Shor (<xref ref-type="bibr" rid="j_infor415_ref_023">1997</xref>) DLP can be solved in polynomial-time using quantum algorithms running on quantum computers.</p>
<p>For example, when <italic>p</italic> and <italic>q</italic> are sufficiently large and suitably chosen primes the discrete logarithm problem in the group <inline-formula id="j_infor415_ineq_026"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> being a subgroup of <inline-formula id="j_infor415_ineq_027"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${Z_{q-1}}$]]></tex-math></alternatives></inline-formula> is believed to be hard to compute. Prime <italic>p</italic> should be at least 2048-bits, and <italic>q</italic> should be at least 256-bits.</p>
<p>All cryptographic primitives presented in the introduction are using the same system parameters <inline-formula id="j_infor415_ineq_028"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula>, namely large (secure) prime number <italic>p</italic> and generator <italic>g</italic> of group <inline-formula id="j_infor415_ineq_029"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula>.</p>
<p>To generate random and uniformly distributed parameters for cryptographic protocols we use a special notation. For example, if we uniformly choose a random element <italic>r</italic> from the set <italic>S</italic> then we write: 
<disp-formula id="j_infor415_eq_005">
<label>(2.5)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">r</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">S</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ r=\operatorname{rand}(S).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>We assume that SP are generated by the Bank. The Bank generates a prime number <italic>p</italic> of at least 2048 bits length, i.e. <inline-formula id="j_infor415_ineq_030"><alternatives>
<mml:math><mml:mo stretchy="false">|</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo stretchy="false">|</mml:mo><mml:mo>=</mml:mo><mml:mn>2048</mml:mn></mml:math>
<tex-math><![CDATA[$|p|=2048$]]></tex-math></alternatives></inline-formula>. Prime <italic>p</italic> should be suitably chosen in such a way that <inline-formula id="j_infor415_ineq_031"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(p-1)$]]></tex-math></alternatives></inline-formula> should have a prime divider <italic>q</italic> of 256 bit length, i.e. <inline-formula id="j_infor415_ineq_032"><alternatives>
<mml:math><mml:mo stretchy="false">|</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo stretchy="false">|</mml:mo><mml:mo>=</mml:mo><mml:mn>256</mml:mn></mml:math>
<tex-math><![CDATA[$|q|=256$]]></tex-math></alternatives></inline-formula>. Then the Bank finds a generator <italic>g</italic> of defined above group <inline-formula id="j_infor415_ineq_033"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula>.</p>
<p>According to ElGamal cryptosystem, the Bank randomly generates its private key <inline-formula id="j_infor415_ineq_034"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PrK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">y</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PrK}_{B}}=y$]]></tex-math></alternatives></inline-formula>, where 
<disp-formula id="j_infor415_eq_006">
<label>(2.6)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">y</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">y</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="2.5pt"/><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">y</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ y=\operatorname{rand}({Z_{q}}),\hspace{1em}y\in {Z_{q}},\hspace{2.5pt}1<y<q.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Then corresponding to its private key the public key <inline-formula id="j_infor415_ineq_035"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">b</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{B}}=b$]]></tex-math></alternatives></inline-formula>, is computed 
<disp-formula id="j_infor415_eq_007">
<label>(2.7)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">b</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">y</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">b</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ b={g^{y}}\operatorname{mod} p,\hspace{1em}b\in {G_{q}}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>System parameters <inline-formula id="j_infor415_ineq_036"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula> and the Bank’s <inline-formula id="j_infor415_ineq_037"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">b</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{B}}=b$]]></tex-math></alternatives></inline-formula> are openly distributed among all the Bank’s customers including Alice.</p>
<p>When user Alice opens her account in the Bank, then during the registration phase she receives <inline-formula id="j_infor415_ineq_038"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula> and the Bank’s <inline-formula id="j_infor415_ineq_039"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">b</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{B}}=b$]]></tex-math></alternatives></inline-formula>.</p>
<p>In addition, there are two opportunities for Alice to complete the registration operation. Either she receives the Bank’s generated public and private key pair <inline-formula id="j_infor415_ineq_040"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PrK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">x</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PrK}_{A}}=x$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor415_ineq_041"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{A}}=a$]]></tex-math></alternatives></inline-formula>, for her, where <disp-formula-group id="j_infor415_dg_001">
<disp-formula id="j_infor415_eq_008">
<label>(2.8)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt"><mml:mtr><mml:mtd class="align-odd"/><mml:mtd class="align-even"><mml:mi mathvariant="italic">x</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">x</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="2.5pt"/><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><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{aligned}{}& x=\operatorname{rand}({Z_{q}}),\hspace{1em}x\in {Z_{q}},\hspace{2.5pt}1<x<q,\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
<disp-formula id="j_infor415_eq_009">
<label>(2.9)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt"><mml:mtr><mml:mtd class="align-odd"/><mml:mtd class="align-even"><mml:mi mathvariant="italic">a</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><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{aligned}{}& a={g^{x}}\operatorname{mod} p,\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</disp-formula-group> or she generates this key pair by herself using special certified application software supplied by the Bank. In the latter case Alice keeps secret her <inline-formula id="j_infor415_ineq_042"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PrK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">x</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PrK}_{A}}=x$]]></tex-math></alternatives></inline-formula> from everyone (including the Bank).</p>
<p>In both cases all parameters mentioned above are kept in certain storage devices (e.g. USB token, SIM card, Smart phone apps, etc.) together with the certified application program.</p>
<p>Every user including Alice has system parameters <inline-formula id="j_infor415_ineq_043"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula>, the Bank’s <inline-formula id="j_infor415_ineq_044"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">b</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{B}}=b$]]></tex-math></alternatives></inline-formula>, her <inline-formula id="j_infor415_ineq_045"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{A}}=a$]]></tex-math></alternatives></inline-formula> and her <inline-formula id="j_infor415_ineq_046"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PrK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">x</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PrK}_{A}}=x$]]></tex-math></alternatives></inline-formula>.</p>
<p>In our model the Adversary can know two alternative sorts of information: either system parameters <inline-formula id="j_infor415_ineq_047"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula>, the Bank’s <inline-formula id="j_infor415_ineq_048"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">b</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{B}}=b$]]></tex-math></alternatives></inline-formula> and user’s public key, e.g. <inline-formula id="j_infor415_ineq_049"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{A}}=a$]]></tex-math></alternatives></inline-formula> or he may know only SP and PuK<inline-formula id="j_infor415_ineq_050"><alternatives>
<mml:math><mml:msub><mml:mrow/><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${_{B}}$]]></tex-math></alternatives></inline-formula>. In the latter case, PuK<inline-formula id="j_infor415_ineq_051"><alternatives>
<mml:math><mml:msub><mml:mrow/><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${_{A}}$]]></tex-math></alternatives></inline-formula> is not openly transmitted during AKAP.</p>
<p>To be self-contained we present here a description of protocols and functions used for AKAP construction.</p>
<sec id="j_infor415_s_003">
<label>2.1</label>
<title>Diffie–Hellman Key Agreement Protocol (DH-KAP)</title>
<p>Let Alice be the initiator of the DH-KAP protocol with the Bank. It is executed in two communications between Alice and the Bank:</p>
<list>
<list-item id="j_infor415_li_014">
<label>1.</label>
<p>Alice generates a random secret number <inline-formula id="j_infor415_ineq_052"><alternatives>
<mml:math><mml:mi mathvariant="italic">u</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$u=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor415_ineq_053"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">u</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$1<u<q-1$]]></tex-math></alternatives></inline-formula> and using <inline-formula id="j_infor415_ineq_054"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula> computes a non-secret session parameter 
<disp-formula id="j_infor415_eq_010">
<label>(2.10)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {k_{A}}={g^{u}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula> 
Alice sends <inline-formula id="j_infor415_ineq_055"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{A}}$]]></tex-math></alternatives></inline-formula> to the Bank.</p>
</list-item>
<list-item id="j_infor415_li_015">
<label>2.</label>
<p>After receiving Alice’s message, the Bank generates a random secret number <inline-formula id="j_infor415_ineq_056"><alternatives>
<mml:math><mml:mi mathvariant="italic">v</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$v=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor415_ineq_057"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">v</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$1<v<q-1$]]></tex-math></alternatives></inline-formula> and using <inline-formula id="j_infor415_ineq_058"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula> computes his session parameter 
<disp-formula id="j_infor415_eq_011">
<label>(2.11)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {k_{B}}={g^{v}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula> 
The Bank sends <italic>k</italic><inline-formula id="j_infor415_ineq_059"><alternatives>
<mml:math><mml:msub><mml:mrow/><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${_{B}}$]]></tex-math></alternatives></inline-formula> to Alice.</p>
</list-item>
</list>
<p>After this open data exchange, Alice and the Bank compute their common agreed secret key <inline-formula id="j_infor415_ineq_060"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">k</mml:mi></mml:math>
<tex-math><![CDATA[${k_{AB}}={k_{BA}}=k$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor415_ineq_061"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><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">B</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><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">A</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">k</mml:mi></mml:math>
<tex-math><![CDATA[${k_{AB}}={({k_{B}})^{u}}\operatorname{mod} p={(g)^{vu}}\operatorname{mod} p={k_{BA}}={({k_{A}})^{v}}\operatorname{mod} p={(g)^{uv}}\operatorname{mod} p=k$]]></tex-math></alternatives></inline-formula>.</p>
<p>So Alice and the Bank can create a secure channel for encrypted communications between each other.</p>
<p>If <inline-formula id="j_infor415_ineq_062"><alternatives>
<mml:math><mml:mo stretchy="false">|</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo stretchy="false">|</mml:mo><mml:mo>=</mml:mo><mml:mn>2048</mml:mn></mml:math>
<tex-math><![CDATA[$|p|=2048$]]></tex-math></alternatives></inline-formula> bits and <inline-formula id="j_infor415_ineq_063"><alternatives>
<mml:math><mml:mo stretchy="false">|</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo stretchy="false">|</mml:mo><mml:mo>=</mml:mo><mml:mn>256</mml:mn></mml:math>
<tex-math><![CDATA[$|q|=256$]]></tex-math></alternatives></inline-formula> bits, then the maximal number of exponentiation operations from <inline-formula id="j_infor415_ineq_064"><alternatives>
<mml:math><mml:mn>2</mml:mn><mml:mo>∗</mml:mo><mml:mn>2048</mml:mn><mml:mo>=</mml:mo><mml:mn>4096</mml:mn></mml:math>
<tex-math><![CDATA[$2\ast 2048=4096$]]></tex-math></alternatives></inline-formula> is reduced to <inline-formula id="j_infor415_ineq_065"><alternatives>
<mml:math><mml:mn>2</mml:mn><mml:mo>∗</mml:mo><mml:mn>256</mml:mn><mml:mo>=</mml:mo><mml:mn>512</mml:mn></mml:math>
<tex-math><![CDATA[$2\ast 256=512$]]></tex-math></alternatives></inline-formula> for each party to compute the agreed key <italic>k</italic>.</p>
<p>Unfortunately, the discrete logarithm assumption by itself is not enough to ensure that the Diffie–Hellman protocol is secure. The following definition and assumption of Computation Diffie–Hellman (CDH) problems are required.</p><statement id="j_infor415_stat_005"><label>Definition 2.5.</label>
<p>CDH problem in <inline-formula id="j_infor415_ineq_066"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> is to compute <inline-formula id="j_infor415_ineq_067"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{uv}}$]]></tex-math></alternatives></inline-formula> when <inline-formula id="j_infor415_ineq_068"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{u}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_069"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{v}}$]]></tex-math></alternatives></inline-formula> are given.</p></statement><statement id="j_infor415_stat_006"><label>Definition 2.6.</label>
<p>CDH assumption in <inline-formula id="j_infor415_ineq_070"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> states that it is infeasible to compute <inline-formula id="j_infor415_ineq_071"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{uv}}$]]></tex-math></alternatives></inline-formula> when <inline-formula id="j_infor415_ineq_072"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{u}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_073"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{v}}$]]></tex-math></alternatives></inline-formula> are given.</p></statement>
<p>To compromise DH-KAP the eavesdropper has to solve the CDH problem which is stronger than DLP. Some evidence still suggests that this is a reasonable assumption in groups where the DL assumption holds but CDH does not. In DH-KAP, an eavesdropper observes <inline-formula id="j_infor415_ineq_074"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{u}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_075"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{v}}$]]></tex-math></alternatives></inline-formula> exchanged as part of the protocol, and the two parties both compute the shared key <inline-formula id="j_infor415_ineq_076"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{uv}}$]]></tex-math></alternatives></inline-formula>. A fast means of solving the CDH problem would allow an eavesdropper to violate the privacy of the Diffie–Hellman key exchange by compromising the agreed secret key.</p>
<p>The stronger assumption for the non-ephemeral agreed key is decisional DH, (DDH) assumption (Boneh, <xref ref-type="bibr" rid="j_infor415_ref_003">1998</xref>).</p><statement id="j_infor415_stat_007"><label>Definition 2.7.</label>
<p>The DDH assumption states that given <inline-formula id="j_infor415_ineq_077"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{u}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_078"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{v}}$]]></tex-math></alternatives></inline-formula> for <inline-formula id="j_infor415_ineq_079"><alternatives>
<mml:math><mml:mi mathvariant="italic">u</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$u=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_080"><alternatives>
<mml:math><mml:mi mathvariant="italic">v</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$v=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> the value <inline-formula id="j_infor415_ineq_081"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{uv}}$]]></tex-math></alternatives></inline-formula> has the same distribution as any element <inline-formula id="j_infor415_ineq_082"><alternatives>
<mml:math><mml:mi mathvariant="italic">w</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$w=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula>, i.e. <inline-formula id="j_infor415_ineq_083"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{uv}}$]]></tex-math></alternatives></inline-formula> is computationally indistinguishable from <italic>w</italic> when <italic>p</italic> and <italic>q</italic> are sufficiently large.</p></statement>
<p>We assume that the agreed key in DH-KAP is not ephemeral and is different from session to session. Therefore it is not required to provide forward secrecy of this key. Moreover, in the case of challenge-response protocols parties are communicating in a very restricted time interval. Hence, according to these restrictions security of DH-KAP does not require DDH assumption.</p>
<p>But nevertheless, in AKAP2 we use ElGamal encryption where DDH assumption is required to provide user’s anonymity.</p>
<p>DH-KAP is realized in SSL/TLS protocols included in the HTTPS protocol. DH-KAP is vulnerable to an active adversary attack known as a Man-in-the-Middle (MiM) attack (Callegati <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor415_ref_005">2009</xref>). This attack is executed in the following way:</p>
<list>
<list-item id="j_infor415_li_016">
<label>1.</label>
<p>Alice randomly generates a secret number <italic>u</italic> in the interval <inline-formula id="j_infor415_ineq_084"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">u</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$1<u<p-1$]]></tex-math></alternatives></inline-formula>. She computes a session parameter <inline-formula id="j_infor415_ineq_085"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${k_{A}}={g^{u}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula> and sends <inline-formula id="j_infor415_ineq_086"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{A}}$]]></tex-math></alternatives></inline-formula> to the Bank.</p>
<p>Then Adversary intercepts <inline-formula id="j_infor415_ineq_087"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{A}}$]]></tex-math></alternatives></inline-formula> and terminates message transmission to the Bank. Adversary impersonating the Bank against Alice randomly generates a secret number <italic>z</italic> in the interval <inline-formula id="j_infor415_ineq_088"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">z</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$1<z<p-1$]]></tex-math></alternatives></inline-formula>, computes a session parameter <inline-formula id="j_infor415_ineq_089"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">z</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${k_{Z1}}={g^{z}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula> and sends <inline-formula id="j_infor415_ineq_090"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{Z1}}$]]></tex-math></alternatives></inline-formula> to Alice. Analogously, Adversary impersonating Alice against the Bank randomly generates a secret number <italic>w</italic> in the interval <inline-formula id="j_infor415_ineq_091"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">w</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$1<w<p-1$]]></tex-math></alternatives></inline-formula>, computes a session parameter <inline-formula id="j_infor415_ineq_092"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${k_{Z2}}={g^{w}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula> and sends <inline-formula id="j_infor415_ineq_093"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{Z2}}$]]></tex-math></alternatives></inline-formula> to the Bank.</p>
</list-item>
<list-item id="j_infor415_li_017">
<label>2.</label>
<p>Alice presuming that message <inline-formula id="j_infor415_ineq_094"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{Z1}}$]]></tex-math></alternatives></inline-formula> is received from the Bank, computes the agreed secret key <inline-formula id="j_infor415_ineq_095"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><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">Z</mml:mi><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${k_{AZ}}={({k_{Z1}})^{u}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula>.</p>
<p>Adversary computes the same secret key <inline-formula id="j_infor415_ineq_096"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><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">A</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">z</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${k_{ZA}}={({k_{A}})^{z}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_infor415_li_018">
<label>3.</label>
<p>The Bank presuming that <inline-formula id="j_infor415_ineq_097"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{Z2}}$]]></tex-math></alternatives></inline-formula> is received from Alice, randomly generates a secret number <italic>v</italic> in the interval <inline-formula id="j_infor415_ineq_098"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">v</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$1<v<p-1$]]></tex-math></alternatives></inline-formula>. It computes a session parameter <inline-formula id="j_infor415_ineq_099"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${k_{B}}={g^{v}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula> and sends <inline-formula id="j_infor415_ineq_100"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{B}}$]]></tex-math></alternatives></inline-formula> to Alice but this message is intercepted by Adversary. The Bank computes the agreed secret key <inline-formula id="j_infor415_ineq_101"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><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">Z</mml:mi><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">v</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${k_{BZ}}={({k_{Z2}})^{v}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula> as well.</p>
<p>Adversary computes the same secret key <inline-formula id="j_infor415_ineq_102"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><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">B</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${k_{ZB}}={({k_{B}})^{w}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
</list>
<p>Evidently, <inline-formula id="j_infor415_ineq_103"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{AZ}}={k_{ZA}}={k_{1}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_104"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{BZ}}={k_{ZB}}={k_{2}}$]]></tex-math></alternatives></inline-formula> and hence, Adversary is able to decrypt any messages sent between Alice and the Bank. Moreover, Adversary can send to Alice his own messages encrypted with the key <italic>k1</italic> which can be decrypted by Alice and vice versa. Alice and the Bank do not suspect that Adversary impersonates both of them.</p>
<p>This attack can be prevented using AKAP.</p>
</sec>
<sec id="j_infor415_s_004">
<label>2.2</label>
<title>ElGamal Encryption</title>
<p>Let <italic>m</italic> be a message to be encrypted by Alice and sent to the Bank. To obtain unambiguous encryption <italic>m</italic> must satisfy the following inequality <inline-formula id="j_infor415_ineq_105"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">m</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">q</mml:mi></mml:math>
<tex-math><![CDATA[$1<m<q$]]></tex-math></alternatives></inline-formula>. Encryption is performed using <inline-formula id="j_infor415_ineq_106"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula> and the Bank’s <inline-formula id="j_infor415_ineq_107"><alternatives>
<mml:math><mml:mtext>PuK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">b</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PuK}=b$]]></tex-math></alternatives></inline-formula>. Encryption is executed in the following way.</p>
<p>Alice chooses at random <italic>k</italic>, <inline-formula id="j_infor415_ineq_108"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">k</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">q</mml:mi></mml:math>
<tex-math><![CDATA[$1<k<q$]]></tex-math></alternatives></inline-formula> and computes <disp-formula-group id="j_infor415_dg_002">
<disp-formula id="j_infor415_eq_012">
<label>(2.12)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt"><mml:mtr><mml:mtd class="align-odd"/><mml:mtd class="align-even"><mml:mi mathvariant="italic">e</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">m</mml:mi><mml:msup><mml:mrow><mml:mi mathvariant="italic">b</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><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{aligned}{}& e=m{b^{k}}\operatorname{mod} p,\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
<disp-formula id="j_infor415_eq_013">
<label>(2.13)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt"><mml:mtr><mml:mtd class="align-odd"/><mml:mtd class="align-even"><mml:mi mathvariant="italic">d</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[\begin{aligned}{}& d={g^{k}}\operatorname{mod} p.\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</disp-formula-group></p>
<p>The ciphertext is <inline-formula id="j_infor415_ineq_109"><alternatives>
<mml:math><mml:mi mathvariant="italic">c</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">e</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">d</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$c=(e,d)$]]></tex-math></alternatives></inline-formula> which is sent to the Bank.</p>
<p>For decryption the Bank uses the same system parameters <inline-formula id="j_infor415_ineq_110"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula> and its private key <inline-formula id="j_infor415_ineq_111"><alternatives>
<mml:math><mml:mtext>PrK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">y</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PrK}=y$]]></tex-math></alternatives></inline-formula>. Then 
<disp-formula id="j_infor415_eq_014">
<label>(2.14)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">m</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">e</mml:mi><mml:msup><mml:mrow><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:mo>−</mml:mo><mml:mi mathvariant="italic">y</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ m=e{d^{-y}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>To be short we omit the validity proof of this identity. Further we use the following symbolic notation for encryption Enc() and decryption Dec() functions 
<disp-formula id="j_infor415_eq_015">
<label>(2.15)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">c</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">e</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">d</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo movablelimits="false">Enc</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">b</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">m</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">m</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">Dec</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">y</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">c</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ c=(e,d)=\operatorname{Enc}(b,m),\hspace{1em}m=\operatorname{Dec}(y,c).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>This cipher we denote by the pair (Enc, Dec). The semantic security of ElGamal cipher is based on the following theorem (Tsiounis and Yung, <xref ref-type="bibr" rid="j_infor415_ref_025">2006</xref>). <statement id="j_infor415_stat_008"><label>Theorem 2.8.</label>
<p><italic>The semantic security of the ElGamal encryption is actually equivalent to the decision Diffie–Hellman</italic> (DDH) <italic>problem.</italic></p></statement></p>
</sec>
<sec id="j_infor415_s_005">
<label>2.3</label>
<title>Schnorr Identification Protocol (S-Id)</title>
<p>We assume that the Bank has Alice’s <inline-formula id="j_infor415_ineq_112"><alternatives>
<mml:math><mml:mtext>PuK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PuK}=a$]]></tex-math></alternatives></inline-formula> as her identity. Alice must prove that she knows her <inline-formula id="j_infor415_ineq_113"><alternatives>
<mml:math><mml:mtext>PrK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">x</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PrK}=x$]]></tex-math></alternatives></inline-formula>, corresponding to her <inline-formula id="j_infor415_ineq_114"><alternatives>
<mml:math><mml:mtext>PuK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PuK}=a$]]></tex-math></alternatives></inline-formula> associated with her identity. <inline-formula id="j_infor415_ineq_115"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>Prk</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">x</mml:mi></mml:math>
<tex-math><![CDATA[${\text{Prk}_{A}}=x$]]></tex-math></alternatives></inline-formula> is called a witness and corresponding <inline-formula id="j_infor415_ineq_116"><alternatives>
<mml:math><mml:mtext>Puk</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[$\text{Puk}=a={g^{x}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula> is called a statement. This protocol is initiated by Alice and has the following three communications.</p>
<list>
<list-item id="j_infor415_li_019">
<label>1.</label>
<p>Alice generates a random secret number <inline-formula id="j_infor415_ineq_117"><alternatives>
<mml:math><mml:mi mathvariant="italic">u</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$u=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and using <inline-formula id="j_infor415_ineq_118"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula> computes <bold>commitment</bold> <italic>l</italic> in the following way 
<disp-formula id="j_infor415_eq_016">
<label>(2.16)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">l</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">l</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">p</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ l={g^{u}}\operatorname{mod} p,\hspace{1em}l\in {G_{p}}.\]]]></tex-math></alternatives>
</disp-formula> 
Alice sends <italic>l</italic> to the Bank.</p>
</list-item>
<list-item id="j_infor415_li_020">
<label>2.</label>
<p>The Bank generates a random <bold>challenge</bold> <inline-formula id="j_infor415_ineq_119"><alternatives>
<mml:math><mml:mi mathvariant="italic">h</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$h=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and sends <italic>h</italic> to Alice.</p>
</list-item>
<list-item id="j_infor415_li_021">
<label>3.</label>
<p>After receiving <italic>h</italic> Alice computes her <bold>response</bold> <italic>r</italic> having her private key <italic>x</italic> together with previously generated secret number <italic>u</italic>: 
<disp-formula id="j_infor415_eq_017">
<label>(2.17)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">r</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">u</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mi mathvariant="italic">h</mml:mi><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">r</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">q</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ r=u+xh\operatorname{mod} q,\hspace{1em}r\in {Z_{q}}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
</list-item>
</list>
<p>After the third communication the Bank verifies if the following identity holds 
<disp-formula id="j_infor415_eq_018">
<label>(2.18)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:msup><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {g^{r}}=l{a^{h}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>If it is the case, the Bank trusts that Alice proved the knowledge that she possesses a private key <inline-formula id="j_infor415_ineq_120"><alternatives>
<mml:math><mml:mtext>PrK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">x</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PrK}=x$]]></tex-math></alternatives></inline-formula> corresponding to her public key <inline-formula id="j_infor415_ineq_121"><alternatives>
<mml:math><mml:mtext>PuK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PuK}=a$]]></tex-math></alternatives></inline-formula>.</p>
<p>To be short we omit the validity proof of (<xref rid="j_infor415_eq_018">2.18</xref>) identity.</p>
<p>In general, Alice is prover P proving that she knows a secret, namely her private key <italic>x</italic>, not revealing it and the Bank as a verifier V is either accepting this proof if (<xref rid="j_infor415_eq_018">2.18</xref>) identity holds, or rejecting it otherwise. So SID is called <bold>proof-of-knowledge</bold>.</p>
<p>Proof-of-knowledge must satisfy three properties:</p>
<list>
<list-item id="j_infor415_li_022">
<label>1.</label>
<p><bold>Completeness:</bold> if the statement is true, the honest verifier V, that is one following the protocol properly, will be convinced of this fact by an honest prover P.</p>
</list-item>
<list-item id="j_infor415_li_023">
<label>2.</label>
<p><bold>Soundness:</bold> if the statement <inline-formula id="j_infor415_ineq_122"><alternatives>
<mml:math><mml:mtext>PuK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PuK}=a$]]></tex-math></alternatives></inline-formula> is false, no cheating prover P can convince the honest verifier V that he knows the secret, except with some small probability.</p>
</list-item>
<list-item id="j_infor415_li_024">
<label>3.</label>
<p><bold>Zero-knowledge:</bold> if the statement <inline-formula id="j_infor415_ineq_123"><alternatives>
<mml:math><mml:mtext>PuK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PuK}=a$]]></tex-math></alternatives></inline-formula> is true, no verifier learns anything other than the fact that the statement is true. In other words, just knowing the statement but not the secret is sufficient to be convinced that the prover knows the secret. This is formalized by showing that every verifier has some <italic>simulator</italic> that, given only the statement to be proved but without any access to the prover, can produce a conversation that “looks like” an interaction between the honest prover and the verifier in question.</p>
</list-item>
</list>
<p>An interaction between P and V is performed when P knows <inline-formula id="j_infor415_ineq_124"><alternatives>
<mml:math><mml:mtext>PrK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">x</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PrK}=x$]]></tex-math></alternatives></inline-formula> and V knows <inline-formula id="j_infor415_ineq_125"><alternatives>
<mml:math><mml:mtext>PuK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PuK}=a$]]></tex-math></alternatives></inline-formula>. This interaction we denote by P(<italic>x</italic>) and V<inline-formula id="j_infor415_ineq_126"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(a)$]]></tex-math></alternatives></inline-formula> respectively generating a <bold>conversation</bold> <inline-formula id="j_infor415_ineq_127"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><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:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$(l,h,r)\in {G_{q}}\times {Z_{q}}\times {Z_{q}}$]]></tex-math></alternatives></inline-formula>. This conversation is an accepting conversation for <italic>a</italic> if (<xref rid="j_infor415_eq_018">2.18</xref>) holds.</p><statement id="j_infor415_stat_009"><label>Proposition 2.9.</label>
<p><italic>If the challenge space was small then Schnorr’s identification protocol is insecure.</italic></p></statement><statement id="j_infor415_stat_010"><label>Comment 2.10.</label>
<p>Let cardinality of challenge space <inline-formula id="j_infor415_ineq_128"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${Z_{q}}$]]></tex-math></alternatives></inline-formula> be <italic>N</italic>, i.e. <inline-formula id="j_infor415_ineq_129"><alternatives>
<mml:math><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">q</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">|</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">N</mml:mi></mml:math>
<tex-math><![CDATA[$|{Z_{q}}|=N$]]></tex-math></alternatives></inline-formula>. Then, in its impersonation attempt, an adversary could use the simulator to prepare an accepting conversation <inline-formula id="j_infor415_ineq_130"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,h,r)$]]></tex-math></alternatives></inline-formula>, send <italic>l</italic> to V, and then hope that the challenge chosen by V is equal to its prepared challenge <italic>h</italic>. If so, the adversary could then respond with <italic>r</italic>, and so make V accept. Thus, Schnorr’s identification protocol is broken with advantage <inline-formula id="j_infor415_ineq_131"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mi mathvariant="italic">N</mml:mi></mml:math>
<tex-math><![CDATA[$1/N$]]></tex-math></alternatives></inline-formula>; therefore, the challenge space <inline-formula id="j_infor415_ineq_132"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${Z_{q}}$]]></tex-math></alternatives></inline-formula> must be super-poly in order to ensure security. In our case it is <inline-formula id="j_infor415_ineq_133"><alternatives>
<mml:math><mml:mi mathvariant="italic">N</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[$N={2^{q}}$]]></tex-math></alternatives></inline-formula>.</p></statement>
<p>For further security considerations of our AKAP, the following notions should be introduced.</p>
<p>Let Gen be a key generation algorithm with input of certain system parameters SP and outputting private and public key pair (PrK, PuK). Then arbitrary identification protocol Id can be represented by the following triplet: Id = (Gen, P, V).</p>
<p>For example, in S-Id described above input to Gen is <inline-formula id="j_infor415_ineq_134"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula> and its output is a pair of private and public keys <inline-formula id="j_infor415_ineq_135"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(x,a)$]]></tex-math></alternatives></inline-formula> according to (<xref rid="j_infor415_eq_008">2.8</xref>), (<xref rid="j_infor415_eq_009">2.9</xref>). Then symbolically S-Id = (Gen, P, V). Recall that according to DL assumption Gen is one-way-function (OWF).</p>
<p>The followingtheorem we present without proof (Boneh and Shoup, <xref ref-type="bibr" rid="j_infor415_ref_004">2020</xref>).</p><statement id="j_infor415_stat_011"><label>Theorem 2.11.</label>
<p><italic>Under the one-wayness assumption for Gen, and assuming</italic> <inline-formula id="j_infor415_ineq_136"><alternatives>
<mml:math><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">q</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">|</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">N</mml:mi></mml:math>
<tex-math><![CDATA[$|{Z_{q}}|=N$]]></tex-math></alternatives></inline-formula> <italic>is super-poly, Schnorr’s identification protocol is secure against eavesdropping attacks.</italic></p></statement>
<p>In S-Id the one-wayness assumption for Gen means that the DL assumption is valid.</p>
<p>It is an open question as to whether Schnorr’s identification protocol is secure against active attacks. So far there are no known effective, active attacks, but there is also no proof that rules out such an attack under the DL assumption.</p>
<p>Later we present a modification of S-Id, that is proven secure against active attacks under the DL assumption. Some introduction of the following notions is needed to provide this proof (Boneh and Shoup, <xref ref-type="bibr" rid="j_infor415_ref_004">2020</xref>).</p><statement id="j_infor415_stat_012"><label>Definition 2.12.</label>
<p>Let Id = (Gen, P, V) be an identification protocol. We say that Id is honest verifier zero knowledge, or HVZK for short, if there exists an efficient probabilistic algorithm Sim called a simulator such that for all possible outputs (PrK, PuK) of Gen, the output distribution of Sim on input PuK is identical to the distribution of a transcript of a conversation between P on input (PrK, PuK) and V on input (PuK).</p></statement>
<p>The term “honest verifier” conveys the fact this simulation only works for conversations between P and the actual, “honest” verifier V, and not some arbitrary, “dishonest” verifier, such as may arise in an active attack on the identification protocol.</p>
<p>In our construction we propose mutual identification between Alice and the Bank. When the Bank is taking the role of Verifier we assume that the Bank is Honest Verifier due to the following assumptions. Firstly, we can assume that the Bank can prove its identity to the user more easily since the Bank has a public key certificate which can be recognizable by the user’s browser. Secondly, during the identification protocol the Bank is using encrypt and sign procedures to confirm its identity. <statement id="j_infor415_stat_013"><label>Theorem 2.13.</label>
<p><italic>Schnorr’s identification protocol is</italic> HVZK<italic>.</italic></p></statement><statement id="j_infor415_stat_014"><label>Proof.</label>
<p>Simulator Sim in generating a conversation <inline-formula id="j_infor415_ineq_137"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,h,r)$]]></tex-math></alternatives></inline-formula> and does not need to generate the messages of the conversation in a given order, as in a real conversation between P and V. Sim can generate the messages in reverse order. On input <inline-formula id="j_infor415_ineq_138"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{A}}=a$]]></tex-math></alternatives></inline-formula>, Sim computes <inline-formula id="j_infor415_ineq_139"><alternatives>
<mml:math><mml:mi mathvariant="italic">r</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$r=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor415_ineq_140"><alternatives>
<mml:math><mml:mi mathvariant="italic">h</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$h=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_141"><alternatives>
<mml:math><mml:mi mathvariant="italic">l</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:msup><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[$l={g^{r}}/{a^{h}}$]]></tex-math></alternatives></inline-formula>. Then Sim outputs the conversation <inline-formula id="j_infor415_ineq_142"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,h,r)$]]></tex-math></alternatives></inline-formula>. We must prove that it is an acceptable conversation. It means that the output of Sim on input <inline-formula id="j_infor415_ineq_143"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{A}}=a$]]></tex-math></alternatives></inline-formula> has the right distribution. The main observation is that in a real interaction, <italic>h</italic> and <italic>a</italic> are independent, and are uniformly distributed in <inline-formula id="j_infor415_ineq_144"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${Z_{q}}$]]></tex-math></alternatives></inline-formula>. Moreover, for given <italic>h</italic> and <italic>a</italic>, the value <italic>l</italic> is uniquely determined by the equation <inline-formula id="j_infor415_ineq_145"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:msup><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${g^{r}}=l{a^{h}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula> since according to (<xref rid="j_infor415_eq_004">2.4</xref>) dexp() function is one-to-one. Then <italic>l</italic> has the same distribution as the output distribution of the simulator Sim.  □</p></statement></p>
</sec>
<sec id="j_infor415_s_006">
<label>2.4</label>
<title>Schnorr Signature Scheme (S-Sig)</title>
<p>Let <italic>m</italic> be a message in <inline-formula id="j_infor415_ineq_146"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${Z_{q}}$]]></tex-math></alternatives></inline-formula> to be signed by the Bank and sent to Alice. Parties are using cryptographic secure H-function to create and verify the signature on the message digest obtained by this function. For signature creation the Bank uses system parameters <inline-formula id="j_infor415_ineq_147"><alternatives>
<mml:math><mml:mi mathvariant="italic">S</mml:mi><mml:mi mathvariant="italic">P</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$SP=(p,g)$]]></tex-math></alternatives></inline-formula> and the Bank’s <inline-formula id="j_infor415_ineq_148"><alternatives>
<mml:math><mml:mtext>PrK</mml:mtext><mml:mo>=</mml:mo><mml:mi mathvariant="italic">y</mml:mi></mml:math>
<tex-math><![CDATA[$\text{PrK}=y$]]></tex-math></alternatives></inline-formula>. Let H-function be a mapping H: <inline-formula id="j_infor415_ineq_149"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><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">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}\times {Z_{q}}\to {Z_{q}}$]]></tex-math></alternatives></inline-formula>.</p>
<p>The Bank chooses at random <italic>z</italic>, <inline-formula id="j_infor415_ineq_150"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">z</mml:mi><mml:mo mathvariant="normal">&lt;</mml:mo><mml:mi mathvariant="italic">q</mml:mi></mml:math>
<tex-math><![CDATA[$1<z<q$]]></tex-math></alternatives></inline-formula> and computes first component <italic>t</italic> of his signature: 
<disp-formula id="j_infor415_eq_019">
<label>(2.19)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">t</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">z</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ t={g^{z}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The Bank computes H-value <italic>h</italic> and second component <italic>s</italic> of his signature: <disp-formula-group id="j_infor415_dg_003">
<disp-formula id="j_infor415_eq_020">
<label>(2.20)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt"><mml:mtr><mml:mtd class="align-odd"/><mml:mtd class="align-even"><mml:mi mathvariant="italic">h</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">H</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">m</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">t</mml:mi><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{aligned}{}& h=H(m,t),\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
<disp-formula id="j_infor415_eq_021">
<label>(2.21)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true" columnalign="right left" columnspacing="0pt"><mml:mtr><mml:mtd class="align-odd"/><mml:mtd class="align-even"><mml:mi mathvariant="italic">s</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">z</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">y</mml:mi><mml:mi mathvariant="italic">h</mml:mi><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[\begin{aligned}{}& s=z+yh\operatorname{mod} q.\end{aligned}\]]]></tex-math></alternatives>
</disp-formula>
</disp-formula-group></p>
<p>The Bank’s signature on <italic>h</italic> is <inline-formula id="j_infor415_ineq_151"><alternatives>
<mml:math><mml:mi mathvariant="italic">σ</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">t</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\sigma =(s,t)$]]></tex-math></alternatives></inline-formula>. Then the Bank sends <italic>m</italic> and <italic>σ</italic> to Alice.</p>
<p>After receiving <italic>m</italic> and <inline-formula id="j_infor415_ineq_152"><alternatives>
<mml:math><mml:mi mathvariant="italic">σ</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">t</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\sigma =(s,t)$]]></tex-math></alternatives></inline-formula>, Alice, according to (<xref rid="j_infor415_eq_020">2.20</xref>), computes <italic>h</italic> and verifies if 
<disp-formula id="j_infor415_eq_022">
<label>(2.22)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="italic">t</mml:mi><mml:msup><mml:mrow><mml:mi mathvariant="italic">b</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {g^{s}}=t{b^{h}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Symbolically we denote this verification function by 
<disp-formula id="j_infor415_eq_023">
<label>(2.23)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mtext mathvariant="italic">Ver</mml:mtext><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">b</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">σ</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo stretchy="false">∈</mml:mo><mml:mo fence="true" stretchy="false">{</mml:mo><mml:mtext mathvariant="italic">True</mml:mtext><mml:mo mathvariant="normal">,</mml:mo><mml:mtext mathvariant="italic">False</mml:mtext><mml:mo fence="true" stretchy="false">}</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ \textit{Ver}(b,\sigma ,h)\in \{\textit{True},\textit{False}\}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>This function yields <italic>True</italic> if (<xref rid="j_infor415_eq_022">2.22</xref>) is valid.</p>
<p>Referencing to Seurin (<xref ref-type="bibr" rid="j_infor415_ref_022">2012</xref>), Boneh and Shoup (<xref ref-type="bibr" rid="j_infor415_ref_004">2020</xref>) the following theorem can be formulated. <statement id="j_infor415_stat_015"><label>Theorem 2.14.</label>
<p><italic>If H is modelled as a random oracle and Schnorr’s identification scheme is secure against eavesdropping attacks, then Schnorr’s signature scheme is also secure against eavesdropping attacks.</italic></p></statement></p>
</sec>
</sec>
<sec id="j_infor415_s_007">
<label>3</label>
<title>AKAP Protocols</title>
<p>We present here two modifications of AKAP, namely AKAP1 and AKAP2 taking three communications between Alice and the Bank. AKAP1 is partially disclosing the user’s anonymity by openly sending her PuK<inline-formula id="j_infor415_ineq_153"><alternatives>
<mml:math><mml:msub><mml:mrow/><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${_{A}}$]]></tex-math></alternatives></inline-formula>. In the case of AKAP1, the eavesdropping adversary can see that certain communications with the Bank are performed by the same person using the same PuK.</p>
<p>AKAP2 is providing user’s anonymity without disclosing any user’s personal information by realizing randomized encryption of the user’s PuK during every session.</p>
<p>All parties including the adversary share the common information, namely system parameters <inline-formula id="j_infor415_ineq_154"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mtext mathvariant="italic">p,g</mml:mtext><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(\textit{p,g})$]]></tex-math></alternatives></inline-formula> and the Bank’s <inline-formula id="j_infor415_ineq_155"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">b</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{B}}=b$]]></tex-math></alternatives></inline-formula>. In addition, we also assume that the adversary may know public keys of users. So, in our model adversary knows two alternative sorts of information: either system parameters SP and the Bank’s PuK<inline-formula id="j_infor415_ineq_156"><alternatives>
<mml:math><mml:msub><mml:mrow/><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${_{B}}$]]></tex-math></alternatives></inline-formula> or SP, PuK<inline-formula id="j_infor415_ineq_157"><alternatives>
<mml:math><mml:msub><mml:mrow/><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${_{B}}$]]></tex-math></alternatives></inline-formula> and users public keys, (e.g. PuK<inline-formula id="j_infor415_ineq_158"><alternatives>
<mml:math><mml:msub><mml:mrow/><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${_{A}}$]]></tex-math></alternatives></inline-formula>).</p>
<p>When Alice is a prover P then she uses protocol P<inline-formula id="j_infor415_ineq_159"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(x,a)$]]></tex-math></alternatives></inline-formula> with input parameters <inline-formula id="j_infor415_ineq_160"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(x,a)$]]></tex-math></alternatives></inline-formula> and the Bank uses the verification protocol V(<italic>a</italic>) respectively. We assume that the Bank is the trusted party and therefore it can prove its identity to users by its signature and PuK<inline-formula id="j_infor415_ineq_161"><alternatives>
<mml:math><mml:msub><mml:mrow/><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${_{B}}$]]></tex-math></alternatives></inline-formula> certificate realized in the lower level protocols such as SSL/TLS. But nevertheless, we supply AKAP1 and AKAP2 by extra identification of the Bank by signing its challenge sent to the user.</p>
<p><bold>AKAP1</bold></p>
<p>Alice and the Bank shares system parameters <inline-formula id="j_infor415_ineq_162"><alternatives>
<mml:math><mml:mtext>SP</mml:mtext><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">g</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{SP}=(p,g)$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor415_ineq_163"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{A}}=a$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_164"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">b</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{B}}=b$]]></tex-math></alternatives></inline-formula>.</p>
<list>
<list-item id="j_infor415_li_025">
<label>1.</label>
<p>Alice chooses a random number <inline-formula id="j_infor415_ineq_165"><alternatives>
<mml:math><mml:mi mathvariant="italic">u</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$u=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and computes <bold>commitment</bold> <italic>l</italic> in the following way 
<disp-formula id="j_infor415_eq_024">
<label>(3.1)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">l</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">l</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ l={g^{u}}\operatorname{mod} p,\hspace{1em}l\in {G_{q}}.\]]]></tex-math></alternatives>
</disp-formula> 
Alice sends <inline-formula id="j_infor415_ineq_166"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,a)$]]></tex-math></alternatives></inline-formula> to the Bank.</p>
</list-item>
<list-item id="j_infor415_li_026">
<label>2.</label>
<p>After receiving <inline-formula id="j_infor415_ineq_167"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,a)$]]></tex-math></alternatives></inline-formula> the Bank verifies if the user with his/her public key <italic>a</italic> is included in its customers’ database and belongs to Alice. If it is ok, then the Bank seeks Alice to prove that she knows to correspond her private key <italic>x</italic>.</p>
<p>The Bank chooses a random number <inline-formula id="j_infor415_ineq_168"><alternatives>
<mml:math><mml:mi mathvariant="italic">v</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$v=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and computes <bold>challenge</bold> <italic>h</italic> in the following way 
<disp-formula id="j_infor415_eq_025">
<label>(3.2)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">h</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">h</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ h={g^{v}}\operatorname{mod} p,\hspace{1em}h\in {G_{q}}.\]]]></tex-math></alternatives>
</disp-formula> 
The Bank signs challenge <italic>h</italic> using his <inline-formula id="j_infor415_ineq_169"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PrK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">y</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PrK}_{B}}=y$]]></tex-math></alternatives></inline-formula> by Schnorr signature scheme obtaining signature <italic>σ</italic> 
<disp-formula id="j_infor415_eq_026">
<label>(3.3)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">σ</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">Sig</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">y</mml:mi><mml:mo mathvariant="normal">,</mml:mo><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:mi mathvariant="italic">s</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">t</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ \sigma =\operatorname{Sig}(y,h)=(s,t).\]]]></tex-math></alternatives>
</disp-formula> 
The Bank sends <inline-formula id="j_infor415_ineq_170"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">σ</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(h,\sigma )$]]></tex-math></alternatives></inline-formula> to Alice.</p>
</list-item>
<list-item id="j_infor415_li_027">
<label>3.</label>
<p>Alice verifies the validity of signature <italic>σ</italic> on challenge <italic>h</italic> with the Bank’s <inline-formula id="j_infor415_ineq_171"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">b</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{B}}=b$]]></tex-math></alternatives></inline-formula>. If it is ok, Alice computes a secret session key <inline-formula id="j_infor415_ineq_172"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{AB}}$]]></tex-math></alternatives></inline-formula> according to Diffie–Hellman key exchange protocol 
<disp-formula id="j_infor415_eq_027">
<label>(3.4)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">h</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {k_{AB}}={h^{u}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula> 
Having her secrets <italic>u</italic> and <italic>x</italic> Alice computes the following response 
<disp-formula id="j_infor415_eq_028">
<label>(3.5)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">r</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">u</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mi mathvariant="italic">h</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo movablelimits="false">mod</mml:mo><mml:mspace width="0.1667em"/><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ r=u+xh+a\operatorname{mod} \hspace{0.1667em}(p-1).\]]]></tex-math></alternatives>
</disp-formula> 
Alice sends <inline-formula id="j_infor415_ineq_173"><alternatives>
<mml:math><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:math>
<tex-math><![CDATA[$(r)$]]></tex-math></alternatives></inline-formula> to the Bank.</p>
</list-item>
</list>
<p>At this stage AKAP1 communications are finished.</p>
<p>After receiving <italic>r</italic> the Bank verifies if Alice knows her private key <italic>x</italic> corresponding to her public key <italic>a</italic>, which is registered in the Bank’s database. The verification equation is the following: 
<disp-formula id="j_infor415_eq_029">
<label>(3.6)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:msup><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {g^{r}}=l{a^{h}}{g^{a}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>If the last equation is valid, then the identification procedure is passed successfully. The Bank computes the common session secret key <inline-formula id="j_infor415_ineq_174"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{BA}}$]]></tex-math></alternatives></inline-formula> according to Diffie–Hellman key exchange protocol 
<disp-formula id="j_infor415_eq_030">
<label>(3.7)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">l</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {k_{BA}}={l^{v}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Obviously at this moment parties agreed on their common session key <inline-formula id="j_infor415_ineq_175"><alternatives>
<mml:math><mml:mi mathvariant="italic">k</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$k={k_{AB}}={k_{BA}}$]]></tex-math></alternatives></inline-formula> and parties can continue communication using created secure channel with agreed secret key <italic>k</italic>.</p>
<p>The difference between convenient Schnorr identification protocol and AKAP1 is that there is an additional variable <inline-formula id="j_infor415_ineq_176"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[${g^{a}}$]]></tex-math></alternatives></inline-formula> in a verification equation (<xref rid="j_infor415_eq_029">3.6</xref>). This will allow us to prove that S-Id is secure against an active adversary.</p>
<p>The second protocol is AKAP2 providing Alice’s anonymity against an eavesdropping adversary. In this case, Alice’s Puk = <italic>a</italic> is encrypted and the adversary cannot distinguish if either the same person or two different persons are communicating with the Bank when he is eavesdropping and analysing any two different communications.</p>
<p><bold>AKAP2</bold></p>
<list>
<list-item id="j_infor415_li_028">
<label>1.</label>
<p>Alice chooses a random secret number <inline-formula id="j_infor415_ineq_177"><alternatives>
<mml:math><mml:mi mathvariant="italic">u</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$u=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and computes commitment <inline-formula id="j_infor415_ineq_178"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${d_{A}}$]]></tex-math></alternatives></inline-formula> 
<disp-formula id="j_infor415_eq_031">
<label>(3.8)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">l</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {d_{A}}={g^{u}}\operatorname{mod} p,\hspace{1em}l\in {G_{q}}.\]]]></tex-math></alternatives>
</disp-formula> 
This commitment is also a partial key for DH-KAP.</p>
<p>To reduce computations Alice uses <inline-formula id="j_infor415_ineq_179"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${d_{A}}$]]></tex-math></alternatives></inline-formula> to encrypt her <inline-formula id="j_infor415_ineq_180"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{A}}=a$]]></tex-math></alternatives></inline-formula> by ElGamal encryption scheme to the recipient, the Bank, by computing 
<disp-formula id="j_infor415_eq_032">
<label>(3.9)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">e</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">a</mml:mi><mml:msup><mml:mrow><mml:mi mathvariant="italic">b</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {e_{A}}=a{b^{u}}\operatorname{mod} p,\]]]></tex-math></alternatives>
</disp-formula> 
The ciphertext is <inline-formula id="j_infor415_ineq_181"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">c</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${c_{A}}=({e_{A}},{d_{A}})$]]></tex-math></alternatives></inline-formula>. In our case <inline-formula id="j_infor415_ineq_182"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${d_{A}}$]]></tex-math></alternatives></inline-formula> plays a triple role: commitment, partial key and second component of ciphertext <inline-formula id="j_infor415_ineq_183"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">c</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${c_{A}}$]]></tex-math></alternatives></inline-formula>.</p>
<p>The ciphertext <inline-formula id="j_infor415_ineq_184"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">c</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$({c_{A}})$]]></tex-math></alternatives></inline-formula> is sent to the Bank.</p>
</list-item>
<list-item id="j_infor415_li_029">
<label>2.</label>
<p>After receiving <inline-formula id="j_infor415_ineq_185"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">c</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${c_{A}}$]]></tex-math></alternatives></inline-formula> the Bank decrypts <inline-formula id="j_infor415_ineq_186"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">c</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${c_{A}}$]]></tex-math></alternatives></inline-formula> using the Bank’s <inline-formula id="j_infor415_ineq_187"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PrK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">y</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PrK}_{B}}=y$]]></tex-math></alternatives></inline-formula> and obtains Alice’s <inline-formula id="j_infor415_ineq_188"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{A}}=a$]]></tex-math></alternatives></inline-formula> 
<disp-formula id="j_infor415_eq_033">
<label>(3.10)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">a</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>−</mml:mo><mml:mi mathvariant="italic">y</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ a={e_{A}}{({d_{A}})^{-y}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula> 
The Bank verifies if the user with his/her public key is included in its customers’ database and belongs to Alice. If Yes, then the Bank seeks Alice to prove that she knows her corresponding private key <italic>x</italic>. Otherwise, protocol is terminated.</p>
<p>The Bank chooses a random secret number <inline-formula id="j_infor415_ineq_189"><alternatives>
<mml:math><mml:mi mathvariant="italic">v</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$v=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and computes <bold>challenge</bold> <italic>h</italic> 
<disp-formula id="j_infor415_eq_034">
<label>(3.11)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">h</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="1em"/><mml:mi mathvariant="italic">h</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ h={g^{v}}\operatorname{mod} p,\hspace{1em}h\in {G_{q}}.\]]]></tex-math></alternatives>
</disp-formula> 
The Bank encrypts <italic>h</italic> by ElGamal encryption scheme to recipient Alice by choosing a random secret number <inline-formula id="j_infor415_ineq_190"><alternatives>
<mml:math><mml:mi mathvariant="italic">z</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$z=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and computing ciphertext <inline-formula id="j_infor415_ineq_191"><alternatives>
<mml:math><mml:mi mathvariant="italic">c</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">e</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">d</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$c=(e,d)$]]></tex-math></alternatives></inline-formula> 
<disp-formula id="j_infor415_eq_035">
<label>(3.12)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">e</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:msup><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">z</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="2em"/><mml:mi mathvariant="italic">d</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">z</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ e=h{a^{z}}\operatorname{mod} p,\hspace{2em}d={g^{z}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>To confirm its identity the Bank signs component <italic>e</italic> by choosing a random secret number <inline-formula id="j_infor415_ineq_192"><alternatives>
<mml:math><mml:mi mathvariant="italic">w</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$w=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and computing Schnorr signature <inline-formula id="j_infor415_ineq_193"><alternatives>
<mml:math><mml:mi mathvariant="italic">σ</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">t</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\sigma =(s,t)$]]></tex-math></alternatives></inline-formula> using its <inline-formula id="j_infor415_ineq_194"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PrK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">y</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PrK}_{B}}=y$]]></tex-math></alternatives></inline-formula> 
<disp-formula id="j_infor415_eq_036">
<label>(3.13)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">t</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mspace width="2em"/><mml:mi mathvariant="italic">s</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">w</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">y</mml:mi><mml:mi mathvariant="italic">e</mml:mi><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ t={g^{w}}\operatorname{mod} p,\hspace{2em}s=w+ye\operatorname{mod} q.\]]]></tex-math></alternatives>
</disp-formula> 
The Bank sends <inline-formula id="j_infor415_ineq_195"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">c</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">σ</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(c,\sigma )$]]></tex-math></alternatives></inline-formula> to Alice.</p>
</list-item>
<list-item id="j_infor415_li_030">
<label>3.</label>
<p>Alice verifies the validity of signature <italic>σ</italic> on value <italic>e</italic> with the Bank’s <inline-formula id="j_infor415_ineq_196"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">b</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{B}}=b$]]></tex-math></alternatives></inline-formula> with verification function <inline-formula id="j_infor415_ineq_197"><alternatives>
<mml:math><mml:mtext>Ver</mml:mtext><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">b</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">σ</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">e</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\text{Ver}(b,\sigma ,e)$]]></tex-math></alternatives></inline-formula> in (<xref rid="j_infor415_eq_023">2.23</xref>).</p>
<p>If it is the case, then Alice decrypts <italic>c</italic> using her <inline-formula id="j_infor415_ineq_198"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PrK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">x</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PrK}_{A}}=x$]]></tex-math></alternatives></inline-formula> thus obtaining <bold>challenge</bold> <italic>h</italic> 
<disp-formula id="j_infor415_eq_037">
<label>(3.14)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">h</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">e</mml:mi><mml:msup><mml:mrow><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:mo>−</mml:mo><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ h=e{d^{-x}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula> 
Alice computes the common secret session key <inline-formula id="j_infor415_ineq_199"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{AB}}$]]></tex-math></alternatives></inline-formula> 
<disp-formula id="j_infor415_eq_038">
<label>(3.15)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">h</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">u</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {k_{AB}}={h^{u}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula> 
Then Alice completes AKAP2 by computing her <bold>response</bold> <italic>r</italic> 
<disp-formula id="j_infor415_eq_039">
<label>(3.16)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">r</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">u</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mi mathvariant="italic">h</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">q</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ r=u+xh+a\operatorname{mod} q.\]]]></tex-math></alternatives>
</disp-formula> 
Alice sends <inline-formula id="j_infor415_ineq_200"><alternatives>
<mml:math><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:math>
<tex-math><![CDATA[$(r)$]]></tex-math></alternatives></inline-formula> to the Bank.</p>
</list-item>
</list>
<p>At this stage AKAP2 communications are finished.</p>
<p>After receiving <italic>r</italic> the Bank verifies if Alice is the correct prover. He verifies if the following identity holds 
<disp-formula id="j_infor415_eq_040">
<label>(3.17)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {g^{r}}={d_{A}}{a^{h}}{g^{a}}\operatorname{mod} p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>If it is the case, then the Bank computes the common session secret key <inline-formula id="j_infor415_ineq_201"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${k_{BA}}$]]></tex-math></alternatives></inline-formula> 
<disp-formula id="j_infor415_eq_041">
<label>(3.18)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mtext>mod</mml:mtext><mml:mi mathvariant="italic">p</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ {k_{BA}}={d_{{A^{v}}}}\text{mod}p.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>At this stage parties agreed on the common secret key <inline-formula id="j_infor415_ineq_202"><alternatives>
<mml:math><mml:mi mathvariant="italic">k</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$k={k_{BA}}={k_{AB}}$]]></tex-math></alternatives></inline-formula>, performed mutual identification and can proceed communications by creating the secret channel.</p>
</sec>
<sec id="j_infor415_s_008">
<label>4</label>
<title>AKAP Protocol Security Analysis</title>
<p>We show that AKAP1 is secure against active attack under the DL assumption by transforming the Schnorr identification protocol to Schnorr Sigma we denoted as AKAP1 protocol. A brief introduction to Sigma protocols is needed. Let <italic>X</italic> and <italic>A</italic> be finite sets and <italic>R</italic> is a binary relation <inline-formula id="j_infor415_ineq_203"><alternatives>
<mml:math><mml:mi mathvariant="italic">R</mml:mi><mml:mo stretchy="false">⊆</mml:mo><mml:mi mathvariant="italic">X</mml:mi><mml:mo>×</mml:mo><mml:mi mathvariant="italic">A</mml:mi></mml:math>
<tex-math><![CDATA[$R\subseteq X\times A$]]></tex-math></alternatives></inline-formula> on <inline-formula id="j_infor415_ineq_204"><alternatives>
<mml:math><mml:mi mathvariant="italic">X</mml:mi><mml:mo>×</mml:mo><mml:mi mathvariant="italic">A</mml:mi></mml:math>
<tex-math><![CDATA[$X\times A$]]></tex-math></alternatives></inline-formula>. Then referencing to Boneh and Shoup (<xref ref-type="bibr" rid="j_infor415_ref_004">2020</xref>) we have the following definition.</p><statement id="j_infor415_stat_016"><label>Definition 4.1.</label>
<p>Binary relation <inline-formula id="j_infor415_ineq_205"><alternatives>
<mml:math><mml:mi mathvariant="italic">R</mml:mi><mml:mo stretchy="false">⊆</mml:mo><mml:mi mathvariant="italic">X</mml:mi><mml:mo>×</mml:mo><mml:mi mathvariant="italic">A</mml:mi></mml:math>
<tex-math><![CDATA[$R\subseteq X\times A$]]></tex-math></alternatives></inline-formula> is effective if <italic>X</italic> and <italic>A</italic> are efficiently recognizable finite sets. Elements of <italic>X</italic> are called witnesses for elements of <italic>A</italic> and elements of <italic>A</italic> are called statements.</p></statement>
<p>Let <inline-formula id="j_infor415_ineq_206"><alternatives>
<mml:math><mml:mi mathvariant="italic">X</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">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$X={Z_{q}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_207"><alternatives>
<mml:math><mml:mi mathvariant="italic">A</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$A={G_{q}}$]]></tex-math></alternatives></inline-formula> then <inline-formula id="j_infor415_ineq_208"><alternatives>
<mml:math><mml:mi mathvariant="italic">R</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">q</mml:mi></mml:mrow></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$R\subseteq {Z_{q}}\times {G_{q}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_209"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</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[$(x,a)\in R$]]></tex-math></alternatives></inline-formula>, when <inline-formula id="j_infor415_ineq_210"><alternatives>
<mml:math><mml:mi mathvariant="italic">a</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[$a={g^{x}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula>. Then element <inline-formula id="j_infor415_ineq_211"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PrK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">x</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">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${\text{PrK}_{A}}=x\in {Z_{q}}$]]></tex-math></alternatives></inline-formula> is a witness and element <inline-formula id="j_infor415_ineq_212"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${\text{PuK}_{A}}=a\in {G_{q}}$]]></tex-math></alternatives></inline-formula> is a statement.</p><statement id="j_infor415_stat_017"><label>Lemma 4.1.</label>
<p><italic>Binary relation defined by</italic> 
<disp-formula id="j_infor415_eq_042">
<label>(4.1)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">R</mml:mi><mml:mo>=</mml:mo><mml:mo fence="true" maxsize="1.19em" minsize="1.19em">{</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo>.</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><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">q</mml:mi></mml:mrow></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub><mml:mspace width="0.1667em"/><mml:mo maxsize="1.19em" minsize="1.19em" stretchy="true">|</mml:mo><mml:mspace width="0.1667em"/><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi><mml:mo fence="true" maxsize="1.19em" minsize="1.19em">}</mml:mo><mml:mo mathvariant="normal">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ R=\big\{(x.a)\in {Z_{q}}\times {G_{q}}\hspace{0.1667em}\big|\hspace{0.1667em}{g^{x}}=a\operatorname{mod} p\big\},\]]]></tex-math></alternatives>
</disp-formula> 
<italic>is an effective binary relation.</italic></p></statement><statement id="j_infor415_stat_018"><label>Proof.</label>
<p>Deciding that <italic>x</italic> is in <inline-formula id="j_infor415_ineq_213"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">Z</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${Z_{q}}$]]></tex-math></alternatives></inline-formula> is trivial. Let <inline-formula id="j_infor415_ineq_214"><alternatives>
<mml:math><mml:mi mathvariant="italic">a</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[$a\in {Z_{p}^{\ast }}$]]></tex-math></alternatives></inline-formula> then to decide if <inline-formula id="j_infor415_ineq_215"><alternatives>
<mml:math><mml:mi mathvariant="italic">a</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$a\in {G_{q}}$]]></tex-math></alternatives></inline-formula> is required to verify the identity (<xref rid="j_infor415_eq_001">2.1</xref>). If it is the case, then <inline-formula id="j_infor415_ineq_216"><alternatives>
<mml:math><mml:mi mathvariant="italic">a</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$a\in {G_{q}}$]]></tex-math></alternatives></inline-formula> since dexp() function is one-to-one and all elements in <inline-formula id="j_infor415_ineq_217"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${G_{q}}$]]></tex-math></alternatives></inline-formula> (except 1) are generators. Then for every statement <inline-formula id="j_infor415_ineq_218"><alternatives>
<mml:math><mml:mi mathvariant="italic">a</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$a\in {G_{q}}$]]></tex-math></alternatives></inline-formula> there exists a unique witness <italic>x</italic>.</p>
<p>However, we have to find the witness <italic>x</italic> such that <inline-formula id="j_infor415_ineq_219"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${g^{x}}=a\operatorname{mod} p$]]></tex-math></alternatives></inline-formula> corresponds to solving the DLP.</p>
<p>AKAP1 is realizing a conversation <inline-formula id="j_infor415_ineq_220"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,h,r)$]]></tex-math></alternatives></inline-formula> where <italic>l</italic> is a commitment, <italic>h</italic>-challenge and <italic>r</italic>-response.  □</p></statement><statement id="j_infor415_stat_019"><label>Definition 4.2.</label>
<p>A Sigma protocol for effective relation <inline-formula id="j_infor415_ineq_221"><alternatives>
<mml:math><mml:mi mathvariant="italic">R</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">q</mml:mi></mml:mrow></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$R\subseteq {Z_{q}}\times {G_{q}}$]]></tex-math></alternatives></inline-formula> is a pair of (P, V) protocols satisfying the following conditions: 
<list>
<list-item id="j_infor415_li_031">
<label>•</label>
<p>P is an interactive protocol algorithm called the prover, which takes as input a witness-statement pair <inline-formula id="j_infor415_ineq_222"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</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[$(x,a)\in R$]]></tex-math></alternatives></inline-formula> and computes P<inline-formula id="j_infor415_ineq_223"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(x,a)$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_infor415_li_032">
<label>•</label>
<p>V is an interactive protocol algorithm called the verifier, which takes as input a statement <inline-formula id="j_infor415_ineq_224"><alternatives>
<mml:math><mml:mi mathvariant="italic">a</mml:mi><mml:mo stretchy="false">∈</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[$a\in {G_{q}}$]]></tex-math></alternatives></inline-formula>, computes V<inline-formula id="j_infor415_ineq_225"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(a)$]]></tex-math></alternatives></inline-formula> and outputs accept or reject.</p>
</list-item>
</list>
</p></statement>
<p>P and V interactions are carried out in a similar way as they are presented in Section <xref rid="j_infor415_s_002">2</xref>.</p>
<list>
<list-item id="j_infor415_li_033">
<label>–</label>
<p>To start the protocol, P computes commitment <italic>l</italic> and sends it to V;</p>
</list-item>
<list-item id="j_infor415_li_034">
<label>–</label>
<p>Upon receiving P’s commitment <italic>l</italic>, V chooses a challenge <italic>h</italic> at random from a finite super-poly challenge space <italic>C</italic>, and sends <italic>h</italic> to P;</p>
</list-item>
<list-item id="j_infor415_li_035">
<label>–</label>
<p>Upon receiving V’s challenge <italic>h</italic>, P computes a response <italic>r</italic>, and sends <italic>r</italic> to V;</p>
</list-item>
<list-item id="j_infor415_li_036">
<label>–</label>
<p>Upon receiving P’s response <italic>r</italic>, V outputs either accept or reject, which must be computed strictly as a function of the statement <italic>a</italic> and the conversation <inline-formula id="j_infor415_ineq_226"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,h,r)$]]></tex-math></alternatives></inline-formula>. In particular, V does not make any random choices other than the selection of the challenge <italic>h</italic>. All other computations are completely deterministic.</p>
</list-item>
</list>
<p>To transform S-Id to AKAP1 we include an input a witness-statement pair <inline-formula id="j_infor415_ineq_227"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</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[$(x,a)\in R$]]></tex-math></alternatives></inline-formula> to compute P<inline-formula id="j_infor415_ineq_228"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(x,a)$]]></tex-math></alternatives></inline-formula> for the prover.</p>
<p>We will prove that the AKAP1 protocol satisfies Sigma protocol’s conditions. Notice that the prover P in S-IP takes as an input just the witness <italic>x</italic>, rather than the witness/statement pair <inline-formula id="j_infor415_ineq_229"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(x,a)$]]></tex-math></alternatives></inline-formula>, as formally required in the definition of any Sigma protocol. Therefore the conversation <inline-formula id="j_infor415_ineq_230"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,h,r)$]]></tex-math></alternatives></inline-formula> is changed to the conversation <inline-formula id="j_infor415_ineq_231"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,a,h,r)$]]></tex-math></alternatives></inline-formula>.</p>
<p>Sigma protocol must satisfy the following conditions:</p>
<def-list><def-item><term><bold>Completeness:</bold></term><def>
<p>V<inline-formula id="j_infor415_ineq_232"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(a)$]]></tex-math></alternatives></inline-formula> always outputs accept for all <inline-formula id="j_infor415_ineq_233"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</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[$(x,a)\in R$]]></tex-math></alternatives></inline-formula>, when P<inline-formula id="j_infor415_ineq_234"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(x,a)$]]></tex-math></alternatives></inline-formula> and V<inline-formula id="j_infor415_ineq_235"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(a)$]]></tex-math></alternatives></inline-formula> interact with each other.</p></def></def-item><def-item><term><bold>Soundness:</bold></term><def>
<p>guarantees that no prover P that doesn’t know the witness <italic>x</italic> can succeed in convincing the verifier V.</p></def></def-item></def-list>
<p>The following theorem is presented without a proof (Boneh and Shoup, <xref ref-type="bibr" rid="j_infor415_ref_004">2020</xref>).</p><statement id="j_infor415_stat_020"><label>Theorem 4.3.</label>
<p>S-SP <italic>provides knowledge soundness.</italic></p></statement>
<p>To proceed we must transform Definition 2.17 of HVZK to the definition of special HVZK (Boneh and Shoup, <xref ref-type="bibr" rid="j_infor415_ref_004">2020</xref>).</p><statement id="j_infor415_stat_021"><label>Definition 4.4.</label>
<p>Let (P, V) be a Sigma protocol for <inline-formula id="j_infor415_ineq_236"><alternatives>
<mml:math><mml:mi mathvariant="italic">R</mml:mi><mml:mo stretchy="false">⊆</mml:mo><mml:mi mathvariant="italic">X</mml:mi><mml:mo>×</mml:mo><mml:mi mathvariant="italic">A</mml:mi></mml:math>
<tex-math><![CDATA[$R\subseteq X\times A$]]></tex-math></alternatives></inline-formula> with challenge space <italic>C</italic>. We say that (P, V) is special honest verifier zero knowledge, or special HVZK if there exists an efficient probabilistic algorithm Sim called a simulator that takes as input <inline-formula id="j_infor415_ineq_237"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(a,h)$]]></tex-math></alternatives></inline-formula>, and satisfies the following properties: 
<list>
<list-item id="j_infor415_li_037">
<label>•</label>
<p>for all inputs <inline-formula id="j_infor415_ineq_238"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(a,h)$]]></tex-math></alternatives></inline-formula>, algorithm Sim always outputs a pair <inline-formula id="j_infor415_ineq_239"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,r)$]]></tex-math></alternatives></inline-formula> such that <inline-formula id="j_infor415_ineq_240"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,h,r)$]]></tex-math></alternatives></inline-formula> is an accepting conversation for <italic>a</italic>;</p>
</list-item>
<list-item id="j_infor415_li_038">
<label>•</label>
<p>for all <inline-formula id="j_infor415_ineq_241"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(x,a)$]]></tex-math></alternatives></inline-formula> in <italic>R</italic>, if anybody computes <inline-formula id="j_infor415_ineq_242"><alternatives>
<mml:math><mml:mi mathvariant="italic">h</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$h=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_243"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mtext>Sim</mml:mtext><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,r)=\text{Sim}(a,h)$]]></tex-math></alternatives></inline-formula>, then <inline-formula id="j_infor415_ineq_244"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,h,r)$]]></tex-math></alternatives></inline-formula> has the same distribution as that of a transcript of a conversation between P<inline-formula id="j_infor415_ineq_245"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(x,a)$]]></tex-math></alternatives></inline-formula> and V<inline-formula id="j_infor415_ineq_246"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(a)$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
</list>
</p></statement>
<p>The differences between HVZK and special HVZK are the following: first, the simulator takes the challenge <italic>h</italic> as an additional input; second, it is required that the simulator produce an accepting conversation even when the statement <italic>a</italic> does not have a witness <italic>x</italic>. These two properties are the reason for the introduction of the notion of special HVZK.</p><statement id="j_infor415_stat_022"><label>Theorem 4.5.</label>
<p>AKAP1 <italic>is a special</italic> HVZK<italic>.</italic></p></statement><statement id="j_infor415_stat_023"><label>Proof.</label>
<p>Let input to the simulator Sim be <inline-formula id="j_infor415_ineq_247"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">a</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(a,h)$]]></tex-math></alternatives></inline-formula>. Then Sim computes <inline-formula id="j_infor415_ineq_248"><alternatives>
<mml:math><mml:mi mathvariant="italic">r</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">rand</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">q</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$r=\operatorname{rand}({Z_{q}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor415_ineq_249"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${a^{h}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor415_ineq_250"><alternatives>
<mml:math><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">a</mml:mi><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msup><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[${g^{a\operatorname{mod} q}}\operatorname{mod} p$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor415_ineq_251"><alternatives>
<mml:math><mml:mi mathvariant="italic">l</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:msup><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi mathvariant="italic">g</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">a</mml:mi><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msup><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo movablelimits="false">mod</mml:mo><mml:mi mathvariant="italic">p</mml:mi></mml:math>
<tex-math><![CDATA[$l={g^{r}}/({a^{h}}{g^{a\operatorname{mod} q}})\operatorname{mod} p$]]></tex-math></alternatives></inline-formula>. Then computed conversation parameters <inline-formula id="j_infor415_ineq_252"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">l</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">h</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">r</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(l,h,r)$]]></tex-math></alternatives></inline-formula> are accepting parameters since they have the same distribution as actual conversation of (P, V).  □</p></statement>
<p>The following theorem we present without proof is required (Boneh and Shoup, <xref ref-type="bibr" rid="j_infor415_ref_004">2020</xref>).</p><statement id="j_infor415_stat_024"><label>Theorem 4.6.</label>
<p><italic>Let</italic> (P, V) <italic>be a Sigma identification protocol for an effective relation R with super-poly challenge space. Assume that</italic> (P, V) <italic>provides knowledge soundness and is special</italic> HVZK<italic>. Furthermore, assume that the key generation algorithm Gen for R is one-way. Then Sigma identification protocol with parameters</italic> (Gen, P, V) <italic>is secure against active attacks.</italic></p></statement>
<p>Referencing to our considerations above and Theorem <xref rid="j_infor415_stat_024">4.6</xref>. We can prove the following result.</p><statement id="j_infor415_stat_025"><label>Theorem 4.7.</label>
<p>AKAP1 <italic>is secure against active attacks.</italic></p></statement><statement id="j_infor415_stat_026"><label>Proof.</label>
<p>In Lemma <xref rid="j_infor415_stat_017">4.1</xref> we proved that relation <italic>R</italic> in (<xref rid="j_infor415_eq_042">4.1</xref>) is an effective binary relation. The challenge space <italic>C</italic> is super-poly since <inline-formula id="j_infor415_ineq_253"><alternatives>
<mml:math><mml:mo stretchy="false">|</mml:mo><mml:mi mathvariant="italic">C</mml:mi><mml:mo stretchy="false">|</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:msup></mml:math>
<tex-math><![CDATA[$|C|={2^{q}}$]]></tex-math></alternatives></inline-formula>. Referencing to Theorem <xref rid="j_infor415_stat_020">4.3</xref> AKAP1 provides knowledge soundness and referencing to Theorem <xref rid="j_infor415_stat_022">4.5</xref> AKAP1 is HVZK. Under the DL assumption and conjectured one-wayness of dexp() function key generation algorithm Gen for <italic>R</italic> is one-way.  □</p></statement>
<p>Unfortunately, the similar result can not be proved for the AKAP2 protocol. The main reason is that it is not a Sigma protocol since the user’s <inline-formula id="j_infor415_ineq_254"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mtext>PuK</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">a</mml:mi></mml:math>
<tex-math><![CDATA[${\text{PuK}_{A}}=a$]]></tex-math></alternatives></inline-formula> is encrypted during the first move of the protocol and can be decrypted only by a designated verifier V which is a Bank. In this case an active adversary has no access to the user’s public key. Therefore, the theorems formulated above for Sigma protocols are not valid.</p>
<p>The security of AKAP2 we consider in the context of security of its components.</p>
<p>The user’s anonymity protection is based on the security of the ElGamal encryption scheme. According to Theorem 2.12, the compromising of anonymity is equivalent to DDH problem solution. If SP has secure values then DDH assumption holds and anonymity is not compromised. In this case an eavesdropping adversary cannot distinguish any two conversations either they are originated from the same user or from the two different users.</p>
<p>The other characteristic of AKAP2 is that challenge <italic>h</italic> in AKAP1 is encrypted and signed. This encrypt and sign paradigm avoids the chosen-ciphertext attack and is CCA-secure encryption (Boneh and Shoup, <xref ref-type="bibr" rid="j_infor415_ref_004">2020</xref>).</p>
</sec>
<sec id="j_infor415_s_009">
<label>5</label>
<title>Discussions and Further Works</title>
<p>Two authenticated key agreement protocols AKAP1 and AKAP2 based on Diffie–Hellman KAP, Schnorr identification, Schnorr signature, and ElGamal encryption are presented.</p>
<p>It is proved that AKAP1 is secure against an active adversary under the discrete logarithm (DL) assumption.</p>
<p>To increase the security of AKAP1 the modified AKAP2 is proposed. Since this protocol does not satisfy sigma protocols conditions, the security proof of AKAP2 is restricted to only two components providing user’s anonymity and CCA-secure encryption of verifiers (Bank’s) challenge which is used also to agree on the common secret key.</p>
<p>Referencing to these results it is an intriguing idea to construct AKAP based on other similar assumptions instead of classical DL assumption, namely based on NP-complete problems. New conjectured one-way-function based on so called matrix power function (MPF) was proposed earlier in our papers (Sakalauskas <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor415_ref_018">2008</xref>, <xref ref-type="bibr" rid="j_infor415_ref_019">2017</xref>; Sakalauskas and Mihalkovich, <xref ref-type="bibr" rid="j_infor415_ref_015">2014</xref>, <xref ref-type="bibr" rid="j_infor415_ref_016">2017</xref>; Sakalauskas, <xref ref-type="bibr" rid="j_infor415_ref_014">2018</xref>). MPF has some similarities with discrete exponent function. In Sakalauskas and Mihalkovich (<xref ref-type="bibr" rid="j_infor415_ref_017">2018</xref>) it is proved that inversion of MPF corresponds to a NP-complete problem. This proof was based on the result presented in Sakalauskas (<xref ref-type="bibr" rid="j_infor415_ref_013">2012</xref>). So far, the only key agreement protocol and asymmetric encryption scheme were realized using MPF but we think that the other protocols suitable for AKAP construction can be realized as well. Hence we expect that referencing to the results presented in this paper we could construct new AKAP based on MPF and prove its security using a similar methodology to the one presented in this paper.</p>
</sec>
</body>
<back>
<ref-list id="j_infor415_reflist_001">
<title>References</title>
<ref id="j_infor415_ref_001">
<mixed-citation publication-type="chapter"><string-name><surname>Bellare</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Rogaway</surname>, <given-names>P.</given-names></string-name> (<year>1993</year>). <chapter-title>Random oracles are practical: a paradigm for designing efficient protocols</chapter-title>. In: <string-name><surname>Ashby</surname>, <given-names>V.</given-names></string-name> (Ed.), <source>ACM CCS 93: 1st Conference on Computer and Communications Security</source>, pp. <fpage>62</fpage>–<lpage>73</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_002">
<mixed-citation publication-type="chapter"><string-name><surname>Bleichenbacher</surname>, <given-names>D.</given-names></string-name> (<year>1996</year>). <chapter-title>Generating ElGamal signatures without knowing the secret key</chapter-title>. In: <source>Advances in Cryptology EUROCRYPT’96</source>, <conf-loc>Zaragoza, Spain</conf-loc>, <series>Lecture Notes in Computer Science</series>, Vol. <volume>1070</volume>. pp. <fpage>10</fpage>–<lpage>18</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_003">
<mixed-citation publication-type="chapter"><string-name><surname>Boneh</surname>, <given-names>D.</given-names></string-name> (<year>1998</year>). <chapter-title>The decision Diffie–Hellman problem</chapter-title>. In: <source>Proceedings of the Third Algorithmic Number Theory Symposium</source>, <series><italic>Lecture Notes in Computer Science</italic></series>, Vol. <volume>1423</volume>, pp. <fpage>48</fpage>–<lpage>63</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_004">
<mixed-citation publication-type="other"><string-name><surname>Boneh</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Shoup</surname>, <given-names>V.</given-names></string-name> (2020). <italic>A Graduate Course in Applied Cryptography</italic>. Version 0.5. <ext-link ext-link-type="uri" xlink:href="https://toc.cryptobook.us">https://toc.cryptobook.us</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_005">
<mixed-citation publication-type="journal"><string-name><surname>Callegati</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Cerroni</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Ramilli</surname>, <given-names>M.</given-names></string-name> (<year>2009</year>). <article-title>Man-in-the-middle attack to the HTTPS protocol</article-title>. <source>IEEE Security &amp; Privacy Magazine</source>, <volume>7</volume>, <fpage>78</fpage>–<lpage>81</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_006">
<mixed-citation publication-type="journal"><string-name><surname>ElGamal</surname>, <given-names>T.</given-names></string-name> (<year>1985</year>). <article-title>A public-key cryptosystem and a signature scheme based on discrete logarithms</article-title>. <source>IEEE Transactions on Information Theory</source>, <volume>31</volume>(<issue>4</issue>), <fpage>469</fpage>–<lpage>472</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_007">
<mixed-citation publication-type="chapter"><string-name><surname>Just</surname>, <given-names>M.</given-names></string-name> (<year>2011</year>). <chapter-title>Challenge-response identification</chapter-title>. In: <string-name><surname>van Tilborg</surname>, <given-names>H.C.A.</given-names></string-name>, <string-name><surname>Jajodia</surname>, <given-names>S.</given-names></string-name> (Eds.), <source>Encyclopedia of Cryptography and Security</source>. <publisher-name>Springer</publisher-name>, <publisher-loc>Boston, MA</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_008">
<mixed-citation publication-type="journal"><string-name><surname>Mei</surname>, <given-names>Q.</given-names></string-name>, <string-name><surname>Zhao</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Xiong</surname>, <given-names>H.</given-names></string-name> (<year>2019</year>). <article-title>A new provably secure certificateless signature with revocation in the standard model</article-title>. <source>Informatica</source>, <volume>30</volume>(<issue>4</issue>), <fpage>711</fpage>–<lpage>728</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_009">
<mixed-citation publication-type="journal"><string-name><surname>Muleravicius</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Timofejeva</surname>, <given-names>I.</given-names></string-name>, <string-name><surname>Mihalkovich</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Sakalauskas</surname>, <given-names>E.</given-names></string-name> (<year>2019</year>). <article-title>Security, trustworthiness and effectivity analysis of an offline E-cash system with observers</article-title>. <source>Informatica</source>, <volume>30</volume>(<issue>2</issue>), <fpage>327</fpage>–<lpage>348</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_010">
<mixed-citation publication-type="journal"><string-name><surname>Neven</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Smart</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Warinschi</surname>, <given-names>B.</given-names></string-name> (<year>2009</year>). <article-title>Hash function requirements for Schnorr signatures</article-title>. <source>Journal of Mathematical Cryptology</source>, <volume>3</volume>(<issue>1</issue>), <fpage>69</fpage>–<lpage>87</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_011">
<mixed-citation publication-type="chapter"><string-name><surname>Pointcheval</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Stern</surname>, <given-names>J.</given-names></string-name> (<year>1996</year>). <chapter-title>Security proofs for signature schemes</chapter-title>. In: <string-name><surname>Maurer</surname>, <given-names>U.M.</given-names></string-name> (Ed.), <source>Advances in Cryptology – EUROCRYPT’96</source>, <series><italic>Lecture Notes in Computer Science</italic></series>, Vol. <volume>1070</volume>. pp. <fpage>387</fpage>–<lpage>398</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_012">
<mixed-citation publication-type="journal"><string-name><surname>Pointcheval</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Stern</surname>, <given-names>J.</given-names></string-name> (<year>2000</year>). <article-title>Security arguments for digital signatures and blind signatures</article-title>. <source>Journal of Cryptology</source>, <volume>13</volume>(<issue>3</issue>), <fpage>361</fpage>–<lpage>396</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_013">
<mixed-citation publication-type="journal"><string-name><surname>Sakalauskas</surname>, <given-names>E.</given-names></string-name> (<year>2012</year>). <article-title>The multivariate quadratic power problem over Zn is NP-complete</article-title>. <source>Information Technology and Control</source>, <volume>41</volume>(<issue>1</issue>), <fpage>33</fpage>–<lpage>39</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_014">
<mixed-citation publication-type="journal"><string-name><surname>Sakalauskas</surname>, <given-names>E.</given-names></string-name> (<year>2018</year>). <article-title>Enhanced matrix power function for cryptographic primitive construction</article-title>. <source>Symmetry</source>, <volume>10</volume>(<issue>2</issue>), <fpage>43</fpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_015">
<mixed-citation publication-type="journal"><string-name><surname>Sakalauskas</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Mihalkovich</surname>, <given-names>A.</given-names></string-name> (<year>2014</year>). <article-title>New asymmetric cipher of non-commuting cryptography class based on matrix power function</article-title>. <source>Informatica</source>, <volume>25</volume>(<issue>2</issue>), <fpage>283</fpage>–<lpage>298</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_016">
<mixed-citation publication-type="journal"><string-name><surname>Sakalauskas</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Mihalkovich</surname>, <given-names>A.</given-names></string-name> (<year>2017</year>). <article-title>Improved asymmetric cipher based on matrix power function resistant to linear algebra attack</article-title>. <source>Informatica</source>, <volume>28</volume>(<issue>3</issue>), <fpage>517</fpage>–<lpage>524</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_017">
<mixed-citation publication-type="journal"><string-name><surname>Sakalauskas</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Mihalkovich</surname>, <given-names>A.</given-names></string-name> (<year>2018</year>). <article-title>MPF problem over modified medial semigroup Is NP-complete</article-title>. <source>Symmetry</source>, <volume>10</volume>(<issue>11</issue>), <fpage>571</fpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_018">
<mixed-citation publication-type="book"><string-name><surname>Sakalauskas</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Listopadskis</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Tvarijonas</surname>, <given-names>P.</given-names></string-name> (<year>2008</year>). <chapter-title>Key Agreement Protocol (KAP) Based on Matrix Power Function</chapter-title>. <source>Information Science and Computing, Book 4 Advanced Studies in Software and Knowledge Engineering</source>. <publisher-name>FOI ITHEA</publisher-name>, pp. <fpage>92</fpage>–<lpage>96</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_019">
<mixed-citation publication-type="journal"><string-name><surname>Sakalauskas</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Mihalkovich</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Venčkauskas</surname>, <given-names>A.</given-names></string-name> (<year>2017</year>). <article-title>Improved asymmetric cipher based on matrix power function with provable security</article-title>. <source>Symmetry</source>, <volume>9</volume>(<issue>1</issue>), <fpage>9</fpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_020">
<mixed-citation publication-type="chapter"><string-name><surname>Schnorr</surname>, <given-names>C.P.</given-names></string-name> (<year>1990</year>). <chapter-title>Efficient identification and signatures for smart cards</chapter-title>. In: <string-name><surname>Brassard</surname>, <given-names>G.</given-names></string-name> (Ed.), <source>Advances in Cryptology – CRYPTO’89</source>, <series><italic>Lecture Notes in Computer Science</italic></series>, Vol. <volume>435</volume>. pp. <fpage>239</fpage>–<lpage>252</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_021">
<mixed-citation publication-type="journal"><string-name><surname>Schnorr</surname>, <given-names>C.P.</given-names></string-name> (<year>1991</year>). <article-title>Efficient signature generation by smart cards</article-title>. <source>Journal of Cryptology</source>, <volume>4</volume>(<issue>3</issue>), <fpage>161</fpage>–<lpage>174</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_022">
<mixed-citation publication-type="chapter"><string-name><surname>Seurin</surname>, <given-names>Y.</given-names></string-name> (<year>2012</year>). <chapter-title>On the exact security of Schnorr-type signatures in the random oracle model</chapter-title>. In: <string-name><surname>Pointcheval</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Johansson</surname>, <given-names>T.</given-names></string-name> (Eds.), <source>Advances in Cryptology – EUROCRYPT 2012</source>, <series><italic>Lecture Notes in Computer Science</italic></series>, Vol. <volume>7237</volume>. pp. <fpage>554</fpage>–<lpage>571</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_023">
<mixed-citation publication-type="journal"><string-name><surname>Shor</surname>, <given-names>P.W.</given-names></string-name> (<year>1997</year>). <article-title>Polynomial-time algorithms for prime factorization and discrete logarithms on a quantum computer</article-title>. <source>SIAM Journal on Computing</source>, <volume>1997</volume>(<issue>26</issue>), <fpage>1484</fpage>–<lpage>1509</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_024">
<mixed-citation publication-type="journal"><string-name><surname>Tseng</surname>, <given-names>Y.-M.</given-names></string-name>, <string-name><surname>Tsai</surname>, <given-names>T.-T.</given-names></string-name>, <string-name><surname>Wu</surname>, <given-names>J.-D.</given-names></string-name>, <string-name><surname>Huang</surname>, <given-names>S.-S.</given-names></string-name> (<year>2019</year>). <article-title>Efficient certificate-based signature with short key and signature sizes from lattices</article-title>. <source>Informatica</source>, <volume>30</volume>(<issue>3</issue>), <fpage>595</fpage>–<lpage>612</lpage>.</mixed-citation>
</ref>
<ref id="j_infor415_ref_025">
<mixed-citation publication-type="chapter"><string-name><surname>Tsiounis</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Yung</surname>, <given-names>M.</given-names></string-name> (<year>2006</year>). <chapter-title>On the security of ElGamal based encryption</chapter-title>. In: <source>Lecture Notes in Computer Science</source>, Vol. <volume>1431</volume>. <publisher-name>Springer</publisher-name>, <publisher-loc>Berlin, Heidelberg</publisher-loc>, pp. <fpage>117</fpage>–<lpage>134</lpage>.</mixed-citation>
</ref>
</ref-list>
</back>
</article>