<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>International Workshop on Formal Analysis and Veri cation of Post-Quantum Cryptographic Protocols,
October</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Formal specification and model checking of lattice-based key encapsulation mechanisms in Maude?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Duong Dinh Tran</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kazuhiro Ogata</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Santiago Escobar</string-name>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sedat Akleylek</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ayoub Otmani</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Japan Advanced Institute of Science and Technology</institution>
          ,
          <addr-line>Ishikawa 923-1292</addr-line>
          ,
          <country country="JP">Japan</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Siber, Ondokuz Mayis University</institution>
          ,
          <addr-line>Samsun</addr-line>
          ,
          <institution>Turkey and University of Tartu</institution>
          ,
          <addr-line>Tartu</addr-line>
          ,
          <country country="EE">Estonia</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>University of Rouen Normandie</institution>
          ,
          <country country="FR">France</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>VRAIN, Universitat Politècnica de València</institution>
          ,
          <addr-line>Valencia</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2022</year>
      </pub-date>
      <volume>24</volume>
      <issue>2022</issue>
      <fpage>16</fpage>
      <lpage>31</lpage>
      <abstract>
        <p>Advances in quantum computing have shown a serious challenge for widely used current cryptographic techniques because a su cient large-scale quantum computer can e ciently solve hard mathematical problems on which the current public-key cryptography is relying. That is the reason why recently many researchers and industrial companies have spent lots of e ort on constructing post-quantum cryptosystems, which are resistant to quantum attackers. Large numbers of post-quantum key encapsulation mechanisms (KEMs) have been proposed to provide secure key establishment - one of the most important building blocks in asymmetric cryptography. This paper presents a formal security analysis of three lattice-based KEMs: Kyber, Saber, and SK-MLWR. We rst formally specify each of them in Maude, a rewriting logic-based speci cation and programming language equipped with many functionalities, such as a reachability analyzer (or the search command) that can be used as an invariant model checker, and then conduct invariant model checking with the Maude search command, nding an attack.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;key encapsulation mechanism</kwd>
        <kwd>Maude</kwd>
        <kwd>post-quantum</kwd>
        <kwd>model checking</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        In recent years, advanced research in the eld of quantum computing and quantum information
theory has brought a credible threat to cryptosystems currently in use. The most popular
asymmetric (or public-key) primitives used today will become insecure against su ciently
strong quantum computers because they can be e ciently broken by Shor’s algorithm [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The
security of these primitives relies on one of the following three hard mathematical problems:
the integer factorization problem, the discrete logarithm problem, and the elliptic-curve discrete
logarithm problem. All of these problems are hard under conventional computers, but they
can be easily solved on a su ciently powerful quantum computer running Shor’s algorithm.
On the other hand, symmetric primitives are considered secure against quantum attackers.
Although Grover’s algorithm [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], one of the most well-known quantum algorithms, can reduce
the complexity to break symmetric primitives, doubling the key size can e ciently avoid these
attacks. For example, we can say that AES-256 would be as hard to break by a quantum computer
as AES-128 is by a classical computer.
      </p>
      <p>As a response to the quantum attack threat, there is extensive research to nd new schemes
which are secure even in the presence of quantum adversaries. In the past few years, many
post-quantum asymmetric primitives have been proposed as replacements for those traditional
ones currently in use. The National Institute of Standards and Technology of USA (NIST) also
started the Post-Quantum Cryptography Project in 2017, calling for proposals of post-quantum
cryptographic protocols that are secure against both conventional and quantum computers1.
There were 82 submissions to this standardization project, implying the importance of this
problem. Among these submissions, a large number of proposals are for post-quantum key
encapsulation mechanisms (KEMs), which aim to securely establish a symmetric key between
two parties. This is understandable because key exchange algorithms are considered the most
important building block of asymmetric cryptography.</p>
      <p>Security analysis of cryptographic primitives and/or protocols can be fundamentally divided
into two approaches: computational security and symbolic security. Proof in the computational
model requires a de nition of secure cryptographic construction (primitive, protocol), and some
assumptions about the computationally infeasible problem. The proof can be regarded as a
mathematical reduction to the situation where the only chance to violate the security of such a
construction is to solve the infeasible problem. The authors of the three KEMs considered in this
paper have already presented their security proofs in the computational model. However, such
proofs are often not easy to understand for non-experts in cryptography. On the other hand,
symbolic analysis is easier to understand, computer-veri ed and suitable for automation. Our
approach presented in this paper belongs to the latter. Note that our approach can be applied to
not only the three KEMs but also other KEMs and other kinds of primitives as well.</p>
      <p>
        We formally specify and model check three KEMs: Kyber [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] (precisely CRYSTALS-Kyber),
Saber [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], and SK-MLWR [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Because of space limitation, we choose Kyber as the only KEM to
illustrate in this paper. The speci cations of the other KEMs can be found at https://github.com/
duongtd23/kems-mc. Kyber is a KEM whose security is based on the hardness of solving the
learning-with-errors (LWE) problem, while the security of Saber and SK-MLWR relies on the
hardness of the Module Learning With Rounding (MLWR) problem. All of them belong to the
lattice-based cryptography. We use Maude [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], a programming/speci cation language based on
rewriting logic, to formally specify the Dolev-Yao generic intruder [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] as well as these KEMs.
By employing the Maude search command, a Man-In-The-Middle (MITM) attack is found for
each KEM. Although this kind of attack is not a novel attack for KEMs, the formal speci cations
1https://csrc.nist.gov/projects/post-quantum-cryptography
in Maude and the model checking experiments are worth reporting. Our ultimate goal is to
come up with a new security analysis/veri cation technique for post-quantum cryptographic
protocols, which use post-quantum cryptographic primitives, such as the three KEMs reported
in this paper. Formally specifying such primitives is necessary for analyzing the security later
on. What is described in the paper is our initial step toward the goal.
      </p>
      <p>
        Related work. In 2012, Blanchet [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] has surveyed various approaches to security protocol
veri cation in both symbolic model and computational model. In the symbolic model, there
is a large number of tools existing for verifying cryptosystems, such as ProVerif [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ],
MaudeNPA [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], Tamarin [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], and Scyther [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. The symbolic protocol veri er ProVerif, which was
developed by Blanchet, can automatically prove security properties of cryptographic protocol
speci cations. ProVerif is based on an abstract representation of the protocol by a set of Horn
clauses, and it determines whether the desired security properties hold by resolution on these
clauses. The practicability of ProVerif has been demonstrated through case studies, such as
[
        <xref ref-type="bibr" rid="ref13 ref14">13, 14</xref>
        ]. ProVerif can handle an unbounded number of sessions (executions) of protocols, but
termination is not guaranteed in general because the resolution algorithm may not terminate.
To mitigate this challenge, Escobar et al. [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] proposed some techniques to reduce the size
of the search space in Maude-NPA, such as generating formal grammars representing terms
(states information) unreachable from initial states and using super lazy intruder to delay the
generation of substitution instances as much as possible. Even though, the termination of the
tool is not always guaranteed. Among many case studies that demonstrated the capabilities of
Maude-NPA, [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] presented one case study with Di e-Hellman key agreement protocol.
      </p>
      <p>
        Scyther [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] is another tool for symbolic security veri cation of cryptographic protocols.
Like ProVerif, Scyther also supports an unbounded number of sessions, but it supports only a
xed set of cryptographic primitives (symmetric and asymmetric encryption and signatures)
and does not allow for user-speci ed equational theories. Its successor, namely Tamarin [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]
prover, does support equational theories. Moreover, Tamarin provides two ways of constructing
proofs: fully automated mode and interactive mode. The tool may not terminate in the fully
automated mode. In the interactive mode, the tool allows users to provide lemmas that must
be proved. Several case studies on security analysis of cryptographic primitives and protocols
with Tamarin can be found in [
        <xref ref-type="bibr" rid="ref17 ref18">17, 18</xref>
        ].
      </p>
      <p>
        Yadav et al. [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] explored NTRU key exchange, a lattice-based public key exchange protocol,
and found that it is exposed to an MITM attack. The attack was found in the same manner as
what we present in this paper. However, they used neither any tool nor formal speci cation
language as we do.
      </p>
      <p>
        In the computational security approach, game-based model is known as a standard model for
proving security. Security for cryptographic primitives or protocols is de ned as an attack game
played between an adversary and some benign entity, which is called the challenger. The main
idea of the game-based security model is simulation of interaction among these two parties.
Eventually, the security proof typically leads to a proof that any supposed adversary can get
an advantage over the challenger if and only if he/she is able to solve some computationally
infeasible problem (e.g., discrete logarithm, integer factorization). When a proof becomes too
complicated, the proof normally employs the sequence of games technique [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. CryptoVerif [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]
is a tool for mechanizing such proof. It can generate proofs by sequences of games automatically
or with little user interaction. Alwen et al. [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] have employed CryptoVerif to analyze the
security of the Hybrid Public Key Encryption (HPKE), which is a candidate for a new public
key encryption standard.
      </p>
      <p>Roadmap. The remaining of this paper is organized as follows: Section 2 gives some
preliminaries, such as KEM and state machine. Section 3 describes Kyber KEM, brie y explains the
underlying learning with error problem. The speci cation of Kyber in Maude is presented in
Section 4. The model checking result and the attack found are presented in Section 5. Finally,
Section 6 summarizes the paper.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Preliminaries</title>
      <sec id="sec-2-1">
        <title>2.1. Key encapsulation mechanism</title>
        <p>A key encapsulation mechanism is a tuple of algorithms (KeyGen, Encaps, Decaps) along with a
nite keyspace K:
• KeyGen() ! (pk, sk): A probabilistic key generation algorithm that outputs a public key
pk and a secret key sk.
• Encaps(pk) ! (c, k): A probabilistic encapsulation algorithm that takes as input a public
key pk, and outputs a ciphertext (or encapsulation) c and a key k 2 K .
• Decaps(c, sk) ! k: A (usually deterministic) decapsulation algorithm that takes as input
a ciphertext c and a secret key sk, and outputs a key k 2 K .</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. State machine and Maude</title>
        <p>A state machine M , hS, I, T i consists of a set S of states, a set I ✓ S of initial states and
a binary relation T ✓ S ⇥ S over states. The set R of reachable states with respect to M is
inductively de ned as follows: (1) for each s 2 I , s 2 R and (2) for each (s, s0) 2 T , if s 2 R ,
then s0 2 R . A state predicate p is an invariant property with respect to M if and only if p(s)
holds for all s 2 R .</p>
        <p>
          In this paper, to express a state of S, we use a braced associative-commutative collection
of name-value pairs. Associative-commutative collections are called soups, and name-value
pairs are called observable components. That is, a state is expressed as a soup of observable
components. The juxtaposition operator is used as the constructor of soups. Let oc1, oc2, oc3 be
observable components, and then oc1 oc2 oc3 is the soup of those three observable components.
A state is of the form {oc1 oc2 oc3}. There are multiple possible ways to specify state transitions.
In this paper, we use Maude [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], a programming and speci cation language based on rewriting
logic, to specify them as rewrite rules. Maude makes it possible to specify complex systems
exibly and it is also equipped with model checking facilities (a reachability analyzer and an
LTL model checker). A rewrite rule starts with the keyword rl, followed by a label enclosed
with square brackets and a colon, two patterns connected with =&gt;, and ends with a full stop.
A conditional one starts with the keyword crl and has a condition following the keyword if
before a full stop. The following is a form of a conditional rewrite rule:
where lb is a label and ci is part of the condition, which may be an equation lci = rci. If the
condition . . . /\ ci /\ . . . holds under some substitution , (l) can be replaced with (r).
        </p>
        <p>Maude provides the search command that can nd a state reachable from t such that the
state matches p and satis es the condition(s) c:</p>
        <p>search [n,m] in MOD : t =&gt;* p such that c .
where MOD is the name of the module specifying the state machine, and n and m are optional
arguments denoting a bound on the number of desired solutions and the maximum depth of
the search. n typically is 1 and t typically represents an initial state of the state machine.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Kyber Key Encapsulation Mechanism</title>
      <sec id="sec-3-1">
        <title>3.1. Notations</title>
        <p>Let B denote the set {0, . . . , 255}, i.e., the set of 8-bit unsigned integers (bytes). Consequently,
Bk denotes the set of byte arrays of length k and B⇤ denotes the set of byte arrays of arbitrary
length. For two byte arrays a and b, (a||b) denotes the concatenation of a and b.</p>
        <p>The ring of integers modulo q is denoted by Zq. We denote by R the polynomial ring
Z[X]/(Xn + 1) and by Rq the quotient polynomial ring Zq[X]/(Xn + 1). Thus polynomials
in Rq are of n coe cients where each coe cient is in [0, q). In Kyber, the values of n and q
are always xed to n = 256 and q = 7681 in all levels of security. Regular font letters denote
elements in R or Rq (which includes elements in Z and Zq) and bold lower-case letters represent
vectors with coe cients in R or Rq. By default, all vectors are column vectors. Bold upper-case
letters are matrices. For a vector v (or matrix A), we denote by vT (or AT ) its transpose. For a
vector v we write v[i] to denote its i-th entry (with indexing starting at zero); for a matrix A
we write A[i][j] to denote the entry in row i and column j (again, with indexing starting at
zero).</p>
        <p>Let H and G be two hash functions, where H : B⇤ ! B32 and G : B⇤ ! B32 ⇥ B 32. Let KDF
denote the key derivation function, where KDF : B⇤ ! B32. Let x 2 Q, where Q denotes the
rational numbers set, then bxe denotes rounding of x to the closest integer. Let x 2 Zq and
d &lt; blog2 qe, functions Compress and Decompress are de ned by the following equations:
Let x0 = Decompressq(Compressq(x, d), d), then we have:</p>
        <p>Compressq(x, d) = b(2d/q) · xe mod 2d,
Decompressq(x, d) = b(q/2d) · xe
|x0
x mod q|  b</p>
        <p>q
2d+1 e
(1)
(2)
(3)
When Compressq and Decompressq are used with x 2 Rq or x 2 Rqk, they are applied to each
coe cient individually.
KEM.KeyGen()
z B 32
(pk, sk0) = CPAPKE.KeyGen()
sk = (sk0||pk||H(pk)||z)
return (pk, sk)
KEM.Dec(c, sk)
(s||pk||H(pk)||z) = sk
m0 = CPAPKE.Dec(c, s)
(K¯ 0, r0) = G(m0||H(pk))
c0 = CPAPKE.Enc(pk, m0, r0)
if c = c0 then return K = KDF(K¯ 0, H(c))
else return K = KDF(z, H(c))</p>
        <p>!
3.2. Kyber
Fig. 1 describes the three algorithms (KeyGen, Encaps, Decaps) of Kyber KEM. It employs the
three algorithms (KeyGen, Enc, Dec) of Kyber.CPAPKE, which are shown in Fig. 2. Let us suppose
that there are two parties Alice and Bob. The interactions depicted in Fig. 1 are as follows. Alice
performs the KEM.KeyGen step, starting by choosing a random seed d, and hashing it to get the
pair (⇢, ). From , she generates vector s serving as the secret key sk and vector e acting as an
error component. t is then computed from s, e, and matrix A, which is generated from ⇢ . The
pair of t and ⇢ serves as the public key pk, which is sent to Bob. Upon receiving pk, Bob executes
the KEM.Enc step (i.e., Encaps step) in Fig. 1. He randomly chooses an m0, hashes it, and passes
the outputs to the CPAPKE.Enc procedure (depicted in Fig. 2). The obtained ciphertext c, which
is a pair of c1 and c2, is sent back to Alice. Upon receiving c, Alice performs the KEM.Dec step
(i.e., Decaps step). She computes c0 by employing the CPAPKE.Dec and CPAPKE.Enc procedures.
With a very high probability c0 is equal to c, implying that m0 on Alice’s side is equal to m on
Bob’s side with an overwhelming probability. After that, they can derive the same key K. Note
that all multiplications and additions in the two gures are computed over Zq[X]/(Xn + 1).</p>
        <p>
          Note that in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ], the de nition of Kyber employs the functions Encode and Decode. Function
Encode serializes a polynomial or a vector of polynomials to a byte array, and function Decode
is the inverse of Encode. Furthermore, to perform multiplications in Rq e ciently, the vectors
and matrices are converted to NTT domain and vice versa, where NTT stands for
numbertheoretic transform. However, implementation or performance is out of the scope of the present
paper; thus, for simplicity and ease of understanding, we omit those concepts. Consequently,
the notation, e.g., pk = (t||⇢ ) is a misuse of notations because t 2 Rqk and then t is not a byte
array. This notation is understood as pk is made of t and ⇢ .
        </p>
        <p>The procedure to generate matrix A, which is denoted by generate(⇢ ) in Fig. 2, taking as
input a random seed ⇢ , is deterministic. Informally, if Alice and Bob share the same random
seed ⇢ , then they can agreeingly derive the same matrix A, whose coe cients of each entry are
close to a uniformly random distribution. In contrast, the procedure to sample noise (or error)</p>
        <sec id="sec-3-1-1">
          <title>CPAPKE.Dec(c, sk)</title>
          <p>(c1||c2) = c
u0 = Decompressq(c1, du)
v0 = Decompressq(c2, dv)
m0 = Compressq(v0 sT u0, 1)
return m0
Figure 2: Kyber.CPAPKE</p>
        </sec>
        <sec id="sec-3-1-2">
          <title>CPAPKE.Enc(pk, m, r)</title>
          <p>(t||⇢ ) = pk
Rqk⇥ k 3 A = generate(⇢ )
Rqk 3 r, e1 sampleCBD(r)
Rq 3 e2 sampleCBD(r)
u = AT r + e1
v = tT r + e2 + Decompressq(m, 1)
c1 = Compressq(u, du)
c2 = Compressq(v, dv)
return c = (c1||c2)
components (e.g., e, e1, and e2), namely sampleCBD, is probabilistic. It takes as input a random
seed (e.g., ⇢ and r) and returns a polynomial whose coe cients are close to a centered binomial
distribution (to sample a vector, e.g., s and e, the procedure is called k times). Informally,
coe cients of an output of sampleCBD are mostly close to 0, and their absolute value is never
greater than a speci c small number (which is 5, or 4, or 3, depending on the level of security).</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Formal specification of Kyber</title>
      <sec id="sec-4-1">
        <title>4.1. Formalization of polynomials, vectors, and matrices</title>
        <p>We rst introduce sort Poly that represents polynomials as follows:
sort Poly . subsort Int &lt; Poly .
op _p+_ : Poly Poly -&gt; Poly [ctor assoc comm prec 33] .
op _p*_ : Poly Poly -&gt; Poly [ctor assoc comm prec 31] .
op _p-_ : Poly Poly -&gt; Poly [prec 33] .
op neg_ : Poly -&gt; Poly [ctor] .
where Int is the sort of integers. The notation subsort Int &lt; Poly indicates that any
integer is also a polynomial. p+, p*, and p- denote the addition, multiplication, and subtraction,
respectively, between two polynomials. neg denotes the negation of a polynomial. assoc
comm indicates that _p+_ and _p*_ are declared to be associative and commutative. prec 33
attached with _p+_ and _p-_ indicates that these operators have the same precedence 33, which
is lower precedence than that of _p*_ (i.e., 31). Note that, we only consider polynomials in
Zq[X]/(Xn + 1) (or Rq), where n = 256 and q = 7681. Let P1, P2, and P3 be variables of Poly.
We declare some properties of the operators as follows:
eq P1 p+ 0 = P1 . eq P1 p* 0 = 0 .
eq P1 p* (P2 p+ P3) = (P1 p* P2) p+ (P1 p* P3) .</p>
        <p>eq P1 p* 1 = P1 .</p>
        <p>eq P1 p+ neg(P1) = 0 .</p>
        <p>eq neg(P1 p+ P2) = neg(P1) p+ neg(P2) .</p>
        <p>In a similar way, we introduce sorts Vector and Matrix representing polynomial vectors and
matrices, respectively; operators v+, dot, and m* representing the addition &amp; inner product of
two polynomial vectors, and multiplication of a polynomial matrix and a vector, respectively. Let
V1, V2, and V3 be variables of Vector. The declarations of the three operators and the distributive
property of vectors are speci ed as follows:
op _v+_ : Vector Vector -&gt; Vector [assoc comm prec 33] .
op _dot_ : Vector Vector -&gt; Poly [prec 31] .
op _m*_ : Matrix Vector -&gt; Vector [prec 31] .
eq (V1 v+ V2) dot V3 = (V1 dot V3) p+ (V2 dot V3) .
eq V3 dot (V1 v+ V2) = (V3 dot V1) p+ (V3 dot V2) .</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Formalization of honest parties</title>
        <p>Two constructors for the two kinds of messages used in Kyber are as follows:
op msg1 : Prin Prin Prin Vector Poly MsgState -&gt; Msg [ctor] .
op msg2 : Prin Prin Prin Vector Poly MsgState -&gt; Msg [ctor] .
where Prin is the sort representing principals, and Msg is the sort denoting messages. MsgState
is the sort representing message states, receiving one of the following three values: sent
the message was sent, replied - the message was sent and the receiver replied with another
message, and intercepted - the message was intercepted by the intruder. The rst, second, and
third arguments of each operator are the actual creator, the seeming sender, and the receiver
of the corresponding message. The rst and last arguments are meta-information that is only
available to the outside observer, while the remaining arguments can be seen by every principal.
The fourth and fth arguments of msg1 carry the vector t and the random seed ⇢ , respectively,
of the public key pk (pk is (t||⇢ ) as explained in Section 3.2). Similarly, the fourth and fth
arguments of msg2 carry c1 and c2, respectively, of CPAPKE.</p>
        <p>We model the network as a multiset of messages, in which the intruder can use as his/her
storage. Consequently, the empty network (i.e., the empty multiset) means that no messages
have been sent. The intruder can fully control the network, that is he/she can intercept any
message, glean information from it, and fake a new message to any honest party. To formally
specify Kyber in Maude, we use the following observable components:
• (nw : msgs) - msgs is the soup of messages in the network;
• (keys[p] : keys) - keys is a soup of the computed shared keys of principal p. Each entry
of keys is in form of key(K,q), where K is the shared key and q is the principal whom p
believes that he/she has communicated with;
• (prins : ps) - ps is the collection of all principals participating in the protocol;
• (d[p] : d0) - d0 is the random seed d (used in Fig. 2) of principal p;
• (m[p] : m0) - m0 is the random seed m0 (shown in Fig. 1)) of principal p;
• (rd-d : rdds) - rdds is a list of available values as the random seed d (we use list, but not
set, to reduce the state space for searching). Each time when a principal makes a query
for a random value of d, the top value in rdds is removed and returned to the principal;
• (rd-m : rdms) - rdms is a list of the available values as random seed m0;
• (glean-keys : gkeys) - gkeys is the soup of shared keys gleaned by the intruder;
• (ds : ds) - ds is the collection of the random seeds d used by the intruder. Note that every
entry in ds is di erent from any random value used by honest parties;
• (ms : ms) - ms is the collection of random seeds m used by the intruder. Similarly to ds,
every entry in ms is di erent from any random value used by honest parties.</p>
        <p>Each state in SKyber is expressed as {obs}, where obs is a soup of those observable components.
We suppose that there are two honest principals alice and bob together with a malicious one,
namely eve, participating in Kyber KEM. The initial state init of IKyber is de ned as follows:
{(nw: empty) (prins: (alice bob eve)) (rd-d: (d1 , d2)) (rd-m: (m1 , m2))
(keys[alice]: empty) (keys[bob]: empty) (glean-keys: empty) (d[alice]: 0)
(d[bob]: 0) (m[alice]: 0) (m[bob]: 0) (ds: empty) (ms: empty)} .</p>
        <p>With the honest parties, we specify three transitions: keygen, encaps, and decaps, which
correspond to the three steps of the mechanism. Let OCs be a variable of observable component
soups, A, B, and C be variables of principals (possibly intruder), and PS be a variable of principal
collections. Let D, M, M2, M’, Rho, RhoA, V, V’, CV, and P1 be variables of polynomials, and PoL be a
variable of polynomial lists. Let G and H denote the hash functions G and H, respectively. Let MS
be a variable of networks (i.e., message soups). The rewrite rule keygen is de ned as follows:
crl [keygen] : {(rd-d: (D, PoL)) (d[A]: P1) (prins: (A B PS)) (nw: MS) OCs}
=&gt; {(rd-d: PoL) (d[A]: D) (prins: (A B PS))
(nw: (MS msg1(A,A,B, sample-A(1st(RhoSig)) m* sample-s(2nd(RhoSig))
v+ sample-e(2nd(RhoSig)), 1st(RhoSig), sent))) OCs}
if RhoSig := G(D) .
where RhoSig is a variable denoting a pair of polynomials, 1st and 2nd are its projection
operators. sample-A, sample-e, and sample-s represent the sampling procedures, outputting
the matrix A, the vectors e, and s, respectively. The rewrite rule says that when there exists a
polynomial D in rd-d, A picks it as a random seed d, builds a message msg1 exactly following the
KeyGen() step of the mechanism, and sends it to B. d[A] is set to D, and D is removed from rd-d.</p>
        <p>The rewrite rule encap is de ned as follows:
crl [encap] : {(rd-m: (M, PoL)) (m[B]: P1) (keys[B]: KS)</p>
        <p>(nw: (msg1(C,A,B,T,Rho,sent) MS)) OCs}
=&gt; {(rd-m: PoL) (m[B]: M) (keys[B]: (KS key(KDF(1st(Kr), H’(CU,CV)), A)))
(nw: (msg1(C,A,B,T,Rho,replied) msg2(B,B,A, CU, CV, sent) MS)) OCs}
if M’ := H(M) /\ Kr := G(pair(M’, H’(T, Rho))) /\</p>
        <p>CU := enc-u(T, Rho, M’, 2nd(Kr)) /\ CV := enc-v(T, Rho, M’, 2nd(Kr)) .
where T and CU are variables of polynomial vectors, Kr is a variable denoting a pair of polynomials,
and KS is a variable representing a soup of shared keys. Let Rseed be a variable of polynomials.
Let sample-r, sample-e1, and sample-e2 represent the procedures sampling r, e1, and e2,
respectively. Following the CPAPKE.Enc(pk, m, r) in Fig. 2, enc-u and enc-v are de ned as
follows:
eq enc-u(T,Rho,M,Rseed) =</p>
        <p>compr(tp(sample-A(Rho)) m* sample-r(Rseed) v+ sample-e1(Rseed),du) .
eq enc-v(T,Rho,M,Rseed) =</p>
        <p>compr(tpV(T) dot sample-r(Rseed) p+ sample-e2(Rseed) p+ decompr(M,1),dv) .
where tp(A) denotes the transpose matrix of A and tpV(T) denotes the transpose vector of T.
du and dv are constants of natural numbers, denoting du and dv, respectively. decompr(M,1)
and compr(M,1) denote Decompressq(M, 1) and Compressq(M, 1), respectively. enc-u(T,Rho,M
,Rseed) and enc-v(T,Rho,M,Rseed) compute c1 and c2, respectively, in Fig. 2 given as inputs
T||Rho, M, Rseed. The rewrite rule encaps says that when there exists a message msg1 sent from
A to B in the network, B builds a message msg2 exactly following the Encaps() step of Kyber,
sends it back to A. B also computes the shared key with A, and the state of the message msg1 is
updated to replied.</p>
        <p>The rewrite rule decaps is de ned as follows:
crl [decaps] : {(d[A]: D) (keys[A]: KS)</p>
        <p>(nw: (msg1(A,A,B,T,Rho,MsgStat) msg2(C,B,A, CU, CV, sent) MS)) OCs}
=&gt; {(d[A]: D) (keys[A]: (KS key(KDF(1st(Kr2), H’(CU,CV)), B)))</p>
        <p>(nw: (msg1(A,A,B,T,Rho,MsgStat) msg2(C,B,A, CU, CV, replied) MS)) OCs}
if RhoSig := G(D) /\ Rho == 1st(RhoSig) /\</p>
        <p>T == sample-A(Rho) m* sample-s(2nd(RhoSig)) v+ sample-e(2nd(RhoSig)) /\
U’ := decompr(CU, du) /\ V’ := decompr(CV, dv) /\
M2 := compr(V’ p- tpV(sample-s(2nd(RhoSig))) dot U’, 1) /\
Kr2 := G(pair(M2, H’(T, Rho))) /\
enc-u(T,Rho,M2,2nd(Kr2)) == CU /\ enc-v(T,Rho,M2,2nd(Kr2)) == CV .
where MsgStat is a variable representing an arbitrary message state. The rewrite rule says that
when A has sent a message msg1 to B and there exists a message msg2 replied from B to A in
the network, A follows the Decaps() step of Kyber, computes the shared key with B. We only
consider the overwhelming case, i.e., Alice successfully recovers m. We assume that the error
tolerance gaps made by error components always be silent, making m0 equals to m. This is
done by the following equation:
ceq compr(E0 p+ decompr(M,1),1) = M if isSmall?(E0) .
where E0 is a variable of sort Poly, and isSmall?(E0) is a predicate, returning true if all
coe cients of E0 are small in comparison with q. Sampling procedures for s, e, r, e1, and e2
return vectors or polynomials whose coe cients are small. These properties are speci ed by
the following equations:
eq isSmall?(sample-s(P)) = true .
eq isSmall?(sample-e1(P)) = true .
eq isSmall?(sample-r(P)) = true .</p>
        <p>eq isSmall?(sample-e(P)) = true .
eq isSmall?(sample-e2(P)) = true .
Using Eq. 3, we rewrite Decompressq(Compressq(v, dv), dv) and Decompressq(
Compressq(u, du), du) by v + ✏1 and u + ✏2, respectively, where all coe cients of ✏1 and ✏2 are
small in comparison with those of v and u. In the speci cation, we specify ✏1 as epsilon1(v), ✏2
as epsilon2(u), and both epsilon1(v) &amp; epsilon2(u) are “small”. This is done by the following
equations:
eq decompr(compr(V,dv),dv) = V p+ epsilon1(V) .
eq decompr(compr(U,du),du) = U v+ epsilon2(U) .
eq isSmall?(epsilon1(V)) = true . eq isSmall?(epsilon2(U)) = true .</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Formalization of intruders</title>
        <p>We suppose that there is one intruder, namely eve, participating in the mechanism. When there
exists a message msg1 sent from A to B in the network, the intruder can intercept that message,
fake a new message, and send it to the receiver. This behavior is speci ed by the following
rewrite rule:
crl [keygen-eve] : {(ds: (D PoC1)) (nw: (msg1(A,A,B,TA,RhoA,sent) MS)) OCs}
=&gt; {(ds: (D PoC1)) (nw: (msg1(A,A,B,TA,RhoA,intercepted)
msg1(eve,A,B,sample-A(1st(RhoSig)) m* sample-s(2nd(RhoSig)) v+
sample-e(2nd(RhoSig)),1st(RhoSig),sent) MS)) OCs}
if RhoSig := G(D) .
where PoC1 and PoC3 are variables representing arbitrary soups of polynomials. The intercepted
message must have state sent at the beginning, which means that the message has not reached
the receiver. eve then constructs a new faking message from an available value D for the random
seed d. This kind of random value cannot be gleaned from the network, but eve can only
construct it by randomly choosing a new value as the rewrite rule build-ds as follows:
rl [build-ds] : {(rd-d: (D, PoL)) (ds: PoC1) OCs}
=&gt; {(rd-d: PoL) (ds: (PoC1 D)) OCs} .</p>
        <p>Similarly, the only way in which eve can construct values for the random seed m is by randomly
choosing a new value. This is speci ed by the following rewrite rule build-ms:
rl [build-ms] : {(rd-m: (M, PoL)) (ms: PoC3) OCs}
=&gt; {(rd-m: PoL) (ms: (PoC3 M)) OCs} .</p>
        <p>Two more rewrite rules are introduced as follows:
crl [encaps-eve] : {(ms: (M PoC3)) (glean-keys: KS)</p>
        <p>(nw: (msg1(A,A,B,TA,RhoA,intercepted) MS)) OCs}
=&gt; {(ms: (M PoC3)) (glean-keys: (key(KDF(1st(Kr),H’(CU,CV)),A) KS))
(nw: (msg1(A,A,B,TA,RhoA,intercepted) msg2(eve,B,A,CU,CV,sent) MS)) OCs}
if M’ := H(M) /\ Kr := G(pair(M’,H’(TA,RhoA))) /\</p>
        <p>CU := enc-u(TA,RhoA,M’,2nd(Kr)) /\ CV := enc-v(TA,RhoA,M’,2nd(Kr)) /\
msg2(eve,B,A,CU,CV,sent) \in MS = false /\
msg2(eve,B,A,CU,CV,replied) \in MS = false .
crl [decaps-eve] : {(ds: (D PoC1)) (glean-keys: KS)
(nw: (msg1(eve,A,B,T,Rho,replied) msg2(B,B,A,CUB,CVB,sent) MS)) OCs}
encaps-eve says that when eve has intercepted a message msg1 sent from A to B, eve fakes a
new message msg2, sends it to A, and computes a shared secret key with A. decaps-eve says
that when eve has faked a new message msg1, sent it to B, and B on his/her belief that the
message truly comes from A has replied to A a message msg2, eve intercepts the message msg2,
and computes a shared secret key with B.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Model checking and Man-In-The-Middle-Attack</title>
      <p>
        We introduce the following search command:
search [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] in KYBER : init =&gt;*
{(keys[alice]: key(K1,bob)) (keys[bob]: key(K2,alice))
      </p>
      <p>(glean-keys: (key(K1,alice) key(K2,bob) KS)) OCs} .
where K1 and K2 are variables that denote arbitrary shared keys. K1 may or may not be equal to
K2. The command tries to nd a state reachable from init such that: alice in her belief obtains
the shared key K1 with bob, bob in his belief obtains the shared key K2 with alice, and eve
owns both K1 and K2. Maude found a counterexample, and this kind of vulnerability belongs to
MITM attacks. Fig. 3 shows how this attack happens on Kyber, which is visualized from the
path leading to the counterexample Maude returned. There are mainly ve steps as follows:
Step 1. Alice wants to construct a shared key with Bob, she starts by performing KEM.KeyGen(),
generating a public key pk and a secret key sk. She keeps sk, and sends pk to Bob.
Step 2. Eve intercepts the rst message sent from Alice to Bob. She takes a random de, follows
the KEM.KeyGen() step to generate a pair (pke, ske), and sends pke to Bob.</p>
      <p>Step 3. Bob receives pke thinking it is from Alice. As a response, he takes a random m0, performs
KEM.Enc(pke), and obtains a ciphertext c and a shared key Kb. He sends the ciphertext c back
to Alice, and keeps the key Kb, which he believes that it is the shared key obtained by him and
Alice.</p>
      <p>Step 4. Eve intercepts the replied message which contains ciphertext c sent from Bob to Alice.
She rst performs KEM.Dec(c, ske) to obtain the shared key Kb. She then takes a random
me0, performs KEM.Enc(pk), and obtains a ciphertext ce and a shared key Ka. She sends the
ciphertext ce back to Alice as a response for the rst message.</p>
      <p>Step 5. Alice receives the ciphertext ce thinking it is from Bob. She performs KEM.Dec(ce, sk)
to obtain the shared key Ka. She believes that Ka is the shared key obtained by her and Bob.</p>
      <p>The reachable state space in the experiment is nite. Indeed, if we try to run the following
command: search in KYBER : init =&gt;* {OCs} ., the number of returned solutions is nite,</p>
      <p>Alice
z B 32
(pk, sk0) = PKE.KeyGen()
sk = (sk0||pk||H(pk)||z)
return (pk, sk)
!</p>
      <p>pk
m0 = PKE.Dec(ce, s)
(K¯ 0, r0) = G(m0||H(pk))
c0 = PKE.Enc(pk, m0, r0)
if ce = c0 then
return Ka = KDF(K¯ 0, H(ce))
ce
de B 32
(⇢ e, e) = G(de)
Rqk⇥ k 3 Ae = generate(⇢ e)
Rqk 3 se, ee sampleCBD( e)
te = Aese + ee
pke = (te||⇢ e)
ske = se
return (pke, ske) !</p>
      <p>pke
m0b = PKE.Dec(c, se)
(K¯ 0b, rb0) = G(m0b||H(pke))
c0b = PKE.Enc(pke, m0e, re0)
if c = c0b then
return Kb = KDF(K¯ 0b, H(c))
me0 B 32
me = H(me0)
(K¯ e, re) = G(me||H(pk))
ce = PKE.Enc(pk, me, re)
Ka = KDF(K¯ e, H(ce))
return (ce, Ka)
c
m0 B 32
m = H(m0)
(K¯ , r) = G(m||H(pke))
c = PKE.Enc(pke, m, r)
Kb = KDF(K¯ , H(c))
return (c, Kb)
implying that the state space is nite. We give a brief explanation of this fact. Each state
is denoted as a braced associative-commutative soup of the ten observable components as
shown in Section 4. The key point is that the numbers of possible values that each observable
component (i.e., a name-value pair) can receive is nite. Indeed, ps in (prins : ps) is always
(alice bob eve) because there is no rewrite rule that changes it. rdds and rdms in (rd-d :
rdds) and (rd-m : rdms) never consist of more than (d1,d2) and (m1,m2), respectively, because
there is no rewrite rule that inserts element(s) into them. d0 and m0 in (d[p] : d0) and (m[p]
: m0) can only be in the sets {d1, d2} and {m1, m2}, respectively. Similarly, the numbers of
possible values for ds and ms in (ds : ds) and (ms : ms) are nite. msgs in (nw : msgs) consists
of nite messages because (1) each of the two rewrite rules keygen and encaps adds a new
message into the network, but simultaneously it also removes one element from rdds and rdms
(note that rdds and rdms never consist of more than (d1,d2) and (m1,m2) as shown above); (2)
the rewrite rule keygen-eve adds a new message msg2 into the network, but simultaneously it
also changes the status of an existing message msg1 from sent to intercepted, thus, keygen-eve
can only be applied nitely many times; and (3) the rewrite rule encaps-eve only adds a new
message msg2 into the network if that message does not exist before (note that the other rewrite
rules does not change the network or only update the status of messages). Similarly, keys in
(keys[p] : keys) consists of nite entries because: the rewrite rule encaps removes one element
from rdms; and the rewrite rule decaps changes the status of an existing message msg2 from
sent to replied. In the same manner, we can show gkeys in (glean-keys : gkeys) is nite. In
summary, we can conclude that the state space in our experiment is nite. Consequently, with
a search command to nd a state satisfying some conditions, in nite time Maude will either
nd no solutions or will nd a state satisfying the conditions.</p>
      <p>Remark. Readers may argue that this kind of attack is not a novel attack since Kyber is not
equipped with any feature for dealing with authentication. We agree on it. The paper instead
illustrates one symbolic approach for reasoning about KEMs rather than focusing on this kind
of attack. Our ultimate goal is to come up with a new security analysis/veri cation technique
for post-quantum cryptographic protocols, such as post-quantum TLS. Such protocols use
post-quantum cryptographic primitives, such as KEMs. Formally specifying such primitives is
necessary to analyze the security. What is described in the paper is our initial step toward the
goal.</p>
      <p>
        Saber and SK-MLWR. In the same manner, we formalize the two other KEMs, i.e., Saber [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]
and SK-MLWR [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], specify them in Maude, and run Maude search command trying to nd
the same kind of attack. The same MITM attacks are found by Maude. The reason is similar
to the Kyber case study, that is because there is no authentication, and thus, the intruder can
impersonate any party. We do not present these two case studies in this paper, but readers can
nd the formal speci cations on the webpage presented in Section 1.
      </p>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusion</title>
      <p>We have presented an approach to security analysis of some lattice-based KEMs in the symbolic
model. We rst used Maude as a speci cation language to formally specify the KEMs. After
that, by employing Maude search command, an MITM attack was found for each KEM. The
occurrence of the attack is basically because a KEM alone does not come with an authentication
solution.</p>
      <p>
        Researchers have proposed a post-quantum TLS protocol [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] that uses a hybrid key exchange
method: a traditional key exchange algorithm together with a post-quantum KEM. The reason
why a post-quantum KEM is required is clear. However, why do we still need to employ a
traditional key exchange algorithm. One reason is that most post-quantum KEMs are not
studied/analyzed deeply, and thus, nothing guarantees that there is not any potential aw
in them. Thus, deep security analysis of such KEMs in particular and other post-quantum
cryptographic primitives/protocols is an important challenge to guarantee their reliability. One
piece of our future work is to formally verify the security of the post-quantum TLS protocol
against both classical and quantum computers.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>P.</given-names>
            <surname>Shor</surname>
          </string-name>
          ,
          <article-title>Algorithms for quantum computation: discrete logarithms and factoring</article-title>
          ,
          <source>in: Proceedings 35th Annual Symposium on Foundations of Computer Science</source>
          ,
          <year>1994</year>
          , pp.
          <fpage>124</fpage>
          -
          <lpage>134</lpage>
          . doi:
          <volume>10</volume>
          .1109/SFCS.
          <year>1994</year>
          .
          <volume>365700</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>L. K.</given-names>
            <surname>Grover</surname>
          </string-name>
          ,
          <article-title>A fast quantum mechanical algorithm for database search</article-title>
          ,
          <source>in: Proceedings of the Twenty-Eighth Annual ACM Symposium on Theory of Computing</source>
          , STOC '96,
          <string-name>
            <surname>Association</surname>
          </string-name>
          for Computing Machinery, New York, NY, USA,
          <year>1996</year>
          , p.
          <fpage>212</fpage>
          -
          <lpage>219</lpage>
          . doi:
          <volume>10</volume>
          . 1145/237814.237866.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Ducas</surname>
          </string-name>
          , E. Kiltz,
          <string-name>
            <given-names>T.</given-names>
            <surname>Lepoint</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Lyubashevsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Schanck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Schwabe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Seiler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Stehle</surname>
          </string-name>
          , CRYSTALS - Kyber
          <string-name>
            <surname>: A CCA-Secure Module-Lattice-Based</surname>
            <given-names>KEM</given-names>
          </string-name>
          , in: 2018 IEEE European Symposium on Security and
          <string-name>
            <surname>Privacy (EuroS P)</surname>
          </string-name>
          ,
          <year>2018</year>
          , pp.
          <fpage>353</fpage>
          -
          <lpage>367</lpage>
          . doi:
          <volume>10</volume>
          .1109/ EuroSP.
          <year>2018</year>
          .
          <volume>00032</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>J.-P. D'Anvers</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Karmakar</surname>
            ,
            <given-names>S. Sinha</given-names>
          </string-name>
          <string-name>
            <surname>Roy</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Vercauteren</surname>
          </string-name>
          , Saber:
          <article-title>Module-LWR Based Key Exchange, CPA-Secure Encryption</article-title>
          and
          <string-name>
            <surname>CCA-Secure</surname>
            <given-names>KEM</given-names>
          </string-name>
          , in: A.
          <string-name>
            <surname>Joux</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Nitaj</surname>
          </string-name>
          , T. Rachidi (Eds.),
          <source>Progress in Cryptology - AFRICACRYPT 2018</source>
          , Springer International Publishing, Cham,
          <year>2018</year>
          , pp.
          <fpage>282</fpage>
          -
          <lpage>305</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S.</given-names>
            <surname>Akleylek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Seyhan</surname>
          </string-name>
          ,
          <article-title>Module learning with rounding based key agreement scheme with modi ed reconciliation</article-title>
          ,
          <source>Computer Standards &amp; Interfaces</source>
          <volume>79</volume>
          (
          <year>2022</year>
          )
          <article-title>103549</article-title>
          . doi:
          <volume>10</volume>
          .1016/ j.csi.
          <year>2021</year>
          .
          <volume>103549</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Manuel</given-names>
            <surname>Clavel</surname>
          </string-name>
          and Francisco Durán and
          <article-title>Steven Eker and Patrick Lincoln and Narciso Martí-Oliet and José Meseguer</article-title>
          and Carolyn L.
          <string-name>
            <surname>Talcott</surname>
          </string-name>
          (Ed.),
          <source>All About Maude</source>
          , volume
          <volume>4350</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2007</year>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -71999-1.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Dolev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. C.</given-names>
            <surname>Yao</surname>
          </string-name>
          ,
          <article-title>On the security of public key protocols</article-title>
          ,
          <source>IEEE Trans. Inf. Theory</source>
          <volume>29</volume>
          (
          <year>1983</year>
          )
          <fpage>198</fpage>
          -
          <lpage>207</lpage>
          . doi:
          <volume>10</volume>
          .1109/TIT.
          <year>1983</year>
          .
          <volume>1056650</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>B.</given-names>
            <surname>Blanchet</surname>
          </string-name>
          ,
          <article-title>Security protocol veri cation: Symbolic and computational models</article-title>
          ,
          <source>in: Principles of Security and Trust - First International Conference, POST</source>
          <year>2012</year>
          , volume
          <volume>7215</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2012</year>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>29</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>642</fpage>
          -28641-4\_2.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>B.</given-names>
            <surname>Blanchet</surname>
          </string-name>
          ,
          <article-title>Automatic Veri cation of Security Protocols in the Symbolic Model: The Veri er ProVerif, in: Foundations of Security Analysis</article-title>
          and
          <string-name>
            <surname>Design</surname>
            <given-names>VII - FOSAD</given-names>
          </string-name>
          <year>2012</year>
          /2013 Tutorial Lectures, volume
          <volume>8604</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2013</year>
          , pp.
          <fpage>54</fpage>
          -
          <lpage>87</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -10082-1\_3.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Escobar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Meadows</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Meseguer</surname>
          </string-name>
          ,
          <article-title>A Rewriting-Based Inference System for the NRL Protocol Analyzer</article-title>
          and
          <string-name>
            <given-names>Its</given-names>
            <surname>Meta-Logical</surname>
          </string-name>
          <string-name>
            <surname>Properties</surname>
          </string-name>
          , Theor.
          <source>Comput. Sci</source>
          .
          <volume>367</volume>
          (
          <year>2006</year>
          )
          <fpage>162</fpage>
          -
          <lpage>202</lpage>
          . doi:
          <volume>10</volume>
          .1016/j.tcs.
          <year>2006</year>
          .
          <volume>08</volume>
          .035.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>B.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Meier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Cremers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Basin</surname>
          </string-name>
          ,
          <source>Automated Analysis of Di e-Hellman Protocols and Advanced Security Properties, in: 25th IEEE Computer Security Foundations Symposium, CSF 2012</source>
          , Cambridge, MA, USA, June 25-27,
          <year>2012</year>
          , IEEE Computer Society,
          <year>2012</year>
          , pp.
          <fpage>78</fpage>
          -
          <lpage>94</lpage>
          . doi:
          <volume>10</volume>
          .1109/CSF.
          <year>2012</year>
          .
          <volume>25</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>C. J. F.</given-names>
            <surname>Cremers</surname>
          </string-name>
          , The Scyther Tool:
          <article-title>Veri cation, Falsi cation, and Analysis of Security Protocols</article-title>
          , in: A.
          <string-name>
            <surname>Gupta</surname>
          </string-name>
          , S. Malik (Eds.),
          <source>Computer Aided Veri cation, 20th International Conference, CAV 2008</source>
          , Princeton, NJ, USA, July
          <volume>7</volume>
          -
          <issue>14</issue>
          ,
          <year>2008</year>
          , Proceedings, volume
          <volume>5123</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2008</year>
          , pp.
          <fpage>414</fpage>
          -
          <lpage>418</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -70545-1\_
          <fpage>38</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>R.</given-names>
            <surname>Küsters</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Truderung</surname>
          </string-name>
          ,
          <article-title>Using ProVerif to Analyze Protocols with Di e-Hellman Exponentiation</article-title>
          ,
          <source>in: Proceedings of the 22nd IEEE Computer Security Foundations Symposium, CSF</source>
          <year>2009</year>
          ,
          <article-title>Port Je erson</article-title>
          , New York, USA, July
          <volume>8</volume>
          -
          <issue>10</issue>
          ,
          <year>2009</year>
          , IEEE Computer Society,
          <year>2009</year>
          , pp.
          <fpage>157</fpage>
          -
          <lpage>171</lpage>
          . doi:
          <volume>10</volume>
          .1109/CSF.
          <year>2009</year>
          .
          <volume>17</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>B.</given-names>
            <surname>Blanchet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Abadi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Fournet</surname>
          </string-name>
          ,
          <article-title>Automated veri cation of selected equivalences for security protocols</article-title>
          ,
          <source>J. Log. Algebraic Methods Program</source>
          .
          <volume>75</volume>
          (
          <year>2008</year>
          )
          <fpage>3</fpage>
          -
          <lpage>51</lpage>
          . doi:
          <volume>10</volume>
          .1016/j. jlap.
          <year>2007</year>
          .
          <volume>06</volume>
          .002.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>S.</given-names>
            <surname>Escobar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. A.</given-names>
            <surname>Meadows</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Meseguer</surname>
          </string-name>
          ,
          <article-title>State Space Reduction in the Maude-NRL Protocol Analyzer</article-title>
          , in: Computer Security - ESORICS
          <year>2008</year>
          , 13th European Symposium on Research in Computer Security, Málaga, Spain, October 6-
          <issue>8</issue>
          ,
          <year>2008</year>
          . Proceedings, volume
          <volume>5283</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2008</year>
          , pp.
          <fpage>548</fpage>
          -
          <lpage>562</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -88313-5\_
          <fpage>35</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>S.</given-names>
            <surname>Escobar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hendrix</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. A.</given-names>
            <surname>Meadows</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Meseguer</surname>
          </string-name>
          ,
          <article-title>Di e-Hellman Cryptographic Reasoning in the Maude-NRL Protocol Analyzer</article-title>
          ,
          <source>in: Proceeding 2nd International Workshop on Security and Rewriting Techniques</source>
          ,
          <year>2006</year>
          . URL: http://www.dsic.upv.es/~sescobar/papers/ EscMeaMes-SecReT07.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>B.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Sasse</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Cremers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Basin</surname>
          </string-name>
          ,
          <article-title>Automated veri cation of group key agreement protocols</article-title>
          ,
          <source>in: 2014 IEEE Symposium on Security and Privacy</source>
          ,
          <string-name>
            <surname>SP</surname>
          </string-name>
          <year>2014</year>
          , Berkeley, CA, USA, May
          <volume>18</volume>
          -21,
          <year>2014</year>
          , IEEE Computer Society,
          <year>2014</year>
          , pp.
          <fpage>179</fpage>
          -
          <lpage>194</lpage>
          . doi:
          <volume>10</volume>
          .1109/SP.
          <year>2014</year>
          .
          <volume>19</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>J.</given-names>
            <surname>Donenfeld</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Milner</surname>
          </string-name>
          ,
          <article-title>Formal veri cation of the Wire- Guard protocol</article-title>
          ,
          <year>2018</year>
          . URL: https://www.wireguard.com/papers/wireguard
          <article-title>-formal-veri cation</article-title>
          .
          <source>pdf .</source>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>V. K.</given-names>
            <surname>Yadav</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Venkatesan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Verma</surname>
          </string-name>
          ,
          <article-title>Man in the Middle Attack on NTRU Key Exchange</article-title>
          , in: S. Verma,
          <string-name>
            <given-names>R. S.</given-names>
            <surname>Tomar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. K.</given-names>
            <surname>Chaurasia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Singh</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          Abawajy (Eds.),
          <source>Communication, Networks and Computing</source>
          , Springer Singapore, Singapore,
          <year>2019</year>
          , pp.
          <fpage>251</fpage>
          -
          <lpage>261</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>V.</given-names>
            <surname>Shoup</surname>
          </string-name>
          ,
          <article-title>Sequences of games: a tool for taming complexity in security proofs</article-title>
          ,
          <source>IACR Cryptol. ePrint Arch</source>
          .
          <article-title>(</article-title>
          <year>2004</year>
          )
          <article-title>332</article-title>
          . URL: http://eprint.iacr.org/
          <year>2004</year>
          /332.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>B.</given-names>
            <surname>Blanchet</surname>
          </string-name>
          ,
          <article-title>A computationally sound mechanized prover for security protocols</article-title>
          ,
          <source>IEEE Trans. Dependable Secur. Comput</source>
          .
          <volume>5</volume>
          (
          <year>2008</year>
          )
          <fpage>193</fpage>
          -
          <lpage>207</lpage>
          . doi:
          <volume>10</volume>
          .1109/TDSC.
          <year>2007</year>
          .
          <volume>1005</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>J.</given-names>
            <surname>Alwen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Blanchet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Hauck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Kiltz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Lipp</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Riepel</surname>
          </string-name>
          ,
          <article-title>Analysing the HPKE standard</article-title>
          ,
          <source>in: Advances in Cryptology - EUROCRYPT</source>
          <year>2021</year>
          , volume
          <volume>12696</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2021</year>
          , pp.
          <fpage>87</fpage>
          -
          <lpage>116</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -77870-5\_4.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>M.</given-names>
            <surname>Campagna</surname>
          </string-name>
          , E. Crockett,
          <article-title>Hybrid Post-Quantum Key Encapsulation Methods (PQ KEM) for Transport Layer Security 1.2 (TLS), RFC</article-title>
          , RFC Editor,
          <year>2021</year>
          . URL: https://datatracker.ietf. org/doc/html/draft-campagna
          <article-title>-tls-bike-sike-hybrid.</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>