Next Article in Journal
A New Chaotic-Based RGB Image Encryption Technique Using a Nonlinear Rotational 16 × 16 DNA Playfair Matrix
Previous Article in Journal
Locating Side Channel Leakage in Time through Matched Filters
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Review

Review of Chosen Isogeny-Based Cryptographic Schemes

by
Bartosz Drzazga
* and
Łukasz Krzywiecki
Faculty of Information and Communication Technology, Wrocław University of Science and Technology, 27 Wybrzeze Wyspianskiego St., 50-370 Wroclaw, Poland
*
Author to whom correspondence should be addressed.
Cryptography 2022, 6(2), 27; https://doi.org/10.3390/cryptography6020027
Submission received: 13 March 2022 / Revised: 19 May 2022 / Accepted: 24 May 2022 / Published: 31 May 2022
(This article belongs to the Section Cryptography Reviews)

Abstract

:
Public-key cryptography provides security for digital systems and communication. Traditional cryptographic solutions are constantly improved, e.g., to suppress brute-force attacks. However, Shor’s algorithm suited for quantum computers can break the bedrock of most currently used systems, i.e., the RSA problem and discrete logarithm problem. Post-quantum cryptography can withstand attacks carried out by quantum computers. Several families of post-quantum systems exist; one of them is isogeny-based cryptography. As a main contribution, in this paper, we provide a survey of chosen, fundamental isogeny-based schemes. The target audience of this review is researchers interested in practical aspects of this field of cryptography; therefore the survey contains exemplary implementations. Our goal was not to develop an efficient implementation, but to provide materials that make it easier to analyze isogeny-based cryptography.

1. Introduction

Without secure solutions offered by asymmetric cryptography, our digital lives and digital businesses would be much less advanced than today. Public-key cryptography nowadays is essentially indispensable and used in almost all devices connected to a network. Public-key algorithms are a foundation of, e.g., secure and private web browsing over Transport Layer Security (TLS), encrypted messaging with OpenPGP, or any online service such as e-government. It is critically important to maintain sufficient security levels; thus, a lot of attempts have been made. As computational power and cost-efficiency of computers improve over time, key sizes are increased to suppress brute-force attacks. However, there are threats to classical asymmetric cryptography security that cannot be held back by a simple key size increase.
Public-key (asymmetric) cryptography is a system that utilizes a pair of keys. One of the keys may be known to everyone (public key), while the other key must not be known to anyone else but the owner (private key). Asymmetric cryptography is based on mathematical problems known as one-way functions, i.e., a function which is easy to compute on any input, but it is hard to compute its input given a result. Usually, to generate such a key pair, the private key is chosen at random, then the public key is computed as the result of the selected one-way function with the private key as the input. The most popular asymmetric cryptography systems are based on two hard problems: the RSA problem and discrete logarithm problem (DLP).

1.1. Problem Statement

In 1994, a groundbreaking algorithm suited for quantum computers was presented. Shor’s algorithm [1] is a polynomial-time quantum computer algorithm for integer factorization. It means that cryptosystems such as RSA [2] could be broken by constructing a sufficiently large quantum computer.
Shor’s algorithm is composed of two parts. The first part may be implemented on a classical computer and is responsible for turning the factorization problem into the problem of finding the period of a function. The second part is a quantum subroutine that finds the period using the quantum Fourier transform. The period finding algorithm can be also used to break discrete logarithm problem instances by reduction.

1.2. Post-Quantum Alternatives

Post-quantum cryptography refers to cryptographic algorithms believed to be secure against attacks by a quantum computer. Initiatives such as NIST Post-Quantum Cryptography Competition [3] are an effort to standardize quantum-resistant schemes. In the third round out of this competition, six scheme families are still considered: lattice-based, multivariate, code-based, hash-based, zero-knowledge proofs, and isogeny-based. The focus of this article is isogeny-based cryptography.
One of the most promising types of post-quantum algorithms is lattice-based schemes (in the construction or in its security proof). Lattice-based cryptosystems include NTRU [4] for public-key encryption (PKE) and Falcon [5] for signatures.
Multivariate cryptography is a type of quantum-safe algorithms based on multivariate polynomials. This includes cryptographic schemes which are based on the difficulty of solving systems of multivariate equations. An example of this family is Rainbow [6] signature scheme.
Code-based cryptography involves cryptographic schemes based on error-correcting codes. Classic McEliece [7] encryption schemes belong to this type.
Hash-based cryptography includes cryptographic systems based on hash functions in contrast to number-theoretic schemes. SPHINCS+ [8] signature scheme is a representative of that family.
Zero-knowledge proof systems are based on zero-knowledge proofs and symmetric-key primitives such as hash functions and block ciphers. Picnic [9] signature scheme is of this type.

1.3. Contribution

The goal of this article is to introduce to the reader chosen constructions based on supersingular isogeny Diffie–Hellman (SIDH) [10] and SIDH itself. Our intention is to familiarize the reader with fundamental schemes based on isogenies: supersingular isogeny Diffie–Hellman key exchange (SIDH) [10], isogeny-based digital signature (IBDS) [11], strong designated verifier signature (SDVS) [12], undeniable signatures [13], and supersingular isogeny oblivious transfer (SIOT) [14]. Moreover, our goal is to illustrate high-level algorithms with implementations. We assume that such detailed level will help the reader to fully understand isogeny nuances and allow us to design fresh schemes with new functionalities. In this article:
  • We discuss several fundamental solutions based on supersingular isogenies, provide summary of high-level mathematical aspects, constructions and algorithms.
  • Most of the source publications use similar notations but there are some differences. We provide unified notation that allows easier comprehension and comparison of the solutions.
  • We provide implementations of the chosen constructions in concise but clear code developed with easy to understand technologies. We discuss the solutions from the perspective of a programmer and comment the algorithms in more detail.
We note that implementations described in this article are not meant to assess the performance of the chosen schemes. Instead, we want to use code snippets as another tool (next to pseudocode) to describe the reviewed constructions. Pseudocode may not be clear enough in some cases, especially when complicated mathematical operations are involved. Instead, the reader can use our implementations to analyze the algorithms. The source codes can be executed and tweaked. We hope these implementations can be a helpful resource for every isogeny-based cryptography beginner or even for more experienced researchers. Some of the publications focused on isogeny-based cryptography provide low-level, fast implementations. These works are certainly a great feat; however, the implementations in C, C++, and assembly are much harder to comprehend. We also provide time measurements of our implementations. These results are only for illustrative purposes and allow us to compare the chosen schemes. We do not intend to improve current state-of-the-art isogeny computations methods.

1.4. Organization of the Article

The article is organised into following sections. Section 2 contains characterisation of supersingular elliptic curve isogeny, mathematical definitions, isogeny algebra, and definitions of hard problems which provide security for isogeny-based cryptography. It also describes technologies used in implementations and common building blocks for all implemented solutions. Security assumptions for isogeny-based cryptography are stated in Section 3. In Section 4, SIDH, IBDS, SDVS, undeniable signatures, and SIOT schemes are presented. For each of the constructions, first a high-level description of the solution and algorithms are given. Then, implementation of the scheme is shown together with general comments and mappings to specific algorithms. Generic constructions used in the chosen schemes are presented in Section 5 together with an example of vulnerable application. Section 6 contains measurements of execution times of implemented cryptographic schemes. Finally, Section 7 contains conclusions.

2. Supersingular Elliptic Curve Isogeny Cryptography

Supersingular elliptic curve isogeny cryptography is a family of schemes based on the properties of supersingular elliptic curves and supersingular isogeny graphs. Isogeny-based schemes use the mathematics of supersingular elliptic curves to create a Diffie–Hellman-like key exchange. This means isogeny cryptography provides a straightforward quantum computing resistant replacement for widely used key exchange methods. Isogeny-based schemes boast significantly smaller key sizes than most of the popular post-quantum alternatives. There are two distinct families of systems based on isogeny algebra: supersingular isogeny Diffie–Hellman (SIDH) [10] and commutative supersingular isogeny Diffie–Hellman (CSIDH) [15]. The only scheme of this type still in NIST Post-Quantum Cryptography Competition is Supersingular Isogeny Key Encapsulation (SIKE) [16] which is based on SIDH. Many more cryptographic schemes similar to SIDH were proposed in the literature. We will focus only on the SIDH family.
Apart from public-key cryptography based on isogenies, other isogeny-based cryptographic schemes have been proposed. A recent example is Oblivious Pseudorandom Functions from Isogenies [17].

2.1. Definitions and Isogeny Algebra

This section contains essential mathematical Definitions related to isogenies. Further details on the mathematical foundations of isogenies are presented in, e.g., [10,18]. We use the following notation:
  • Variables named n , d , e , , f represent integers, variables p , q are prime numbers.
  • Let ϕ be an isogeny.
  • Let y 1 , , y n R Y denote each y i is sampled uniformly at random from the set Y.
  • Elliptic curves are named E, the j-invariant of the elliptic curve E is denoted as j ( E ) .
  • P , Q denote generators of a torsion subgroup.
The group of points on an elliptic curve E over a finite field F q of cardinality q with a specified point O is denoted as E ( F q ) . The group contains a point at infinity and a set of points ( x , y ) that satisfy the short Weierstrass form:
E / F q : y 2 = x 3 + a x + b ,
where a , b , x , y F q . The j-invariant of an elliptic curve given by the Weierstrass equation is given by the formula:
j ( E ) = 1728 4 a 3 4 a 3 + 27 b 2 .
Two elliptic curves E 1 and E 2 are isomorphic to each other if and only if they have the same j-invariant, i.e., j ( E 1 ) = j ( E 2 ) .
Isogeny-based cryptography does not use elliptic curve’s abelian group over point addition. Instead, it uses a map between curves called isogenies. An isogeny  ϕ : E 1 E 2 over F q is a non-constant rational map from E 1 to E 2 , which is a group homomorphism with a finite kernel. It follows that ϕ ( O E 1 ) = O E 2 , where O denotes the identity element on an elliptic curve. An isogeny ϕ can be written as:
ϕ = f 1 ( x , y ) g 1 ( x , y ) , f 2 ( x , y ) g 2 ( x , y ) ,
where f 1 , f 2 , g 1 , g 2 are polynomials in variables x , y with coefficients in F q . The degree of ϕ is its degree as an algebraic map, d e g ( ϕ ) = m a x { d e g ( f 1 ) , d e g ( f 2 ) } . If the isogeny is separable, the degree of the isogeny is equal to the cardinality of its kernel. In this work, only separable isogenies are considered. An isogeny of degree is referred to as an -isogeny. Two elliptic curves are -isogenous if there exists an -isogeny between them. Each -isogeny ϕ : E 1 E 2 has a dual isogeny ϕ ^ : E 2 E 1 such that ϕ ϕ ^ = ϕ ^ ϕ = [ ] where [ ] is the multiplication by map. Isogeny ϕ ^ is also an -isogeny.
For any natural we define -torsion group E [ ] as the kernel of the multiplication by map over the algebraic closure F ¯ q of F q , i.e.,
E [ ] = { P E ( F ¯ q ) : P = O } .
The endomorphism ring E n d ( E ) under the operations of point-wise addition and functional composition is defined as the set of all isogenies from E to itself, defined over the algebraic closure F ¯ q of F q . If d i m ( E n d ( E ) ) = 4 then E is supersingular otherwise E is ordinary. Two isogenous curves are always both ordinary or both supersingular.
The kernel K of ϕ uniquely defines ϕ up to isomorphism so the codomain E 2 of the isogeny ϕ : E 1 E 2 can be denoted as E 1 / K . Any generator of the kernel will produce a unique isogeny up to isomorphism.
An isogeny graph is a graph in which nodes are j-invariants (representing isomorphism classes of elliptic curves), and in which edges are isogenies between them. The isogeny graph is undirected since each isogeny has a dual isogeny. It is hard to find a path of a given length between two random nodes in the isogeny graph. This hardness is the basis of isogeny-based cryptosystems.

2.2. Implementation Outline

For each of the chosen implemented schemes we include listings of code, corresponding comments, and mappings to algorithms. For each scheme, an exemplary execution is presented with one-run time measurements for order of magnitude reference, these were run on a single core of Intel Core i7-9750H processor. The following implementations are designated to be proof-of-concept implementations that help to understand the ideas behind the constructions and do not represent industrial grade level of security. Their main goal is to allow easy, fast modifications and experiments; thus, they use interpreted programming language and prioritize readability over execution speed and security. The implementations are not hardened against, e.g., timing attacks.

2.2.1. Common Building Blocks

All of the chosen schemes are implemented similarly, each implementation uses Python in version 3.9.5 and SageMath version 9.3. The implemented schemes are SIDH-based; thus, common code related to parameters of SIDH is presented in this subsection. When not stated otherwise, implementations will use these shared parameters and functions.
For better performance, a different set of programming languages and libraries can be used. Microsoft’s SIDH Library is a fast and portable library written in C that implements supersingular isogeny cryptographic schemes. Cloudflare provides SIDH library written in Go that ports portions of Microsoft’s library. Those libraries make use of arithmetic written in assembly and allow us to compile the source code for a specific platform. Compared to SageMath, Microsoft’s and Cloudflare’s libraries are much better suited for a production-ready implementation; however, implementations written in Python and SageMath are easier to understand and experiment with.

2.2.2. SIDH Public Parameters

Public parameters that are common for most of the schemes described in Section 4 are a prime p = A e A B e B · f ± 1 , a field F p 2 , a supersingular elliptic curve E ( F p 2 ) , and P A , Q A , P B , Q B . This section contains listings with their definitions.
Comment (Listing 1):
The above code creates a prime p = A e A B e B · f ± 1 using SIKEp434 [16] parameters, i.e., p = 2 216 3 137 1 . Then, a finite field Fp is created together with its quadratic extension Fp2, i.e., F p 2 = F p ( i ) with i 2 + 1 = 0 . Finally, a starting curve E over that quadratic extension is created, defined by y 2 = x 3 + x . Integer p must be prime and the starting elliptic curve must be supersingular, both these properties are tested in the assertions.
Listing 1. Public parameters.
Cryptography 06 00027 i001
Comment (Listing 2):
Generators ( P A , Q A ) , ( P B , Q B ) of E [ A e A ] and E [ B e B ] , respectively, are generated dynamically with functions defined above. Function get_rand_point_ord returns a random point of order order on an elliptic curve E by first selecting a random point and then decreasing its order to the target value. This approach succeeds with high probability on the first try. Function get_random_base finds two points, P and Q, that are independent of each other. For that, the Weil pairing is computed and its order must be equal to the order of points. Generators for Alice and Bob are computed in the following way.
Listing 2. Basis points functions.
Cryptography 06 00027 i002
Comment (Listing 3):
The above code introduces a Python dictionary params and a function get_other that allow us to conveniently store and access parameters of Alice (dictionary key A) and Bob (dictionary key B).
Listing 3. Public basis points.
Cryptography 06 00027 i003

2.2.3. Isogeny Computation

SageMath allows to compute an isogeny using a library function, but that approach is inefficient for large parameters.
Comment (Listing 4):
A better approach to computing e -isogeny is to compute a composition of e individual -isogenies. The function isogeny_graph_walk computes an isogeny, which is defined by a point P, from a curve E to a curve E_prime. It can also move points P_oth and Q_oth through that isogeny. The loop in line 5 in the above listing computes e individual -isogenies. The function returns a tuple matching SIDH public key, i.e., the final curve E_prime and the images of other party’s public basis points.
Listing 4. Isogeny function.
Cryptography 06 00027 i004

3. Security of the Chosen Schemes

In this article, we do not repeat security proofs of the schemes we survey. We advise the readers interested in detailed security analysis of the schemes to refer to the corresponding original publications for security analysis and proofs.
The security of SIDH, IBDS, SDVS, undeniable signatures, and SIOT is provable and has been proven by reduction in which an adversary breaking each of the schemes could be used to break assumptions for isogeny-based cryptography. The following problems (from [10]) are believed to be intractable even for quantum computers and are the basis of security of isogeny-based cryptosystems.
Definition 1
(Decisional Supersingular Isogeny (DSSI) problem). Let E , E A be supersingular curves defined over F p 2 . Decide whether E A is A e A -isogenous to E.
Definition 2
(Computational Supersingular Isogeny (CSSI) problem). Let ϕ A : E E A be an isogeny whose kernel is S A , where S A is a random point with order A e A . Given E A , ϕ A ( P B ) , ϕ A ( Q B ) , find a generator of S A .
Definition 3
(Supersingular Computational Diffie–Hellman (SSCDH) problem). Let ϕ A : E E A be an isogeny whose kernel is S A , where S A is a random point with order A e A , let ϕ B : E E B be an isogeny whose kernel is S B , where S B is a random point with order B e B . Given the curves E A , E B and the points ϕ A ( P B ) , ϕ A ( Q B ) , ϕ B ( P A ) , ϕ B ( Q A ) find the j-invariant of E / S A , S B .
Definition 4
(Supersingular Decision Diffie–Hellman (SSDDH) problem). Given a tuple sampled with probability 1 / 2 from one of the following two distributions, determine from which distribution the tuple is sampled:
  • ( E A , E B , ϕ A ( P B ) , ϕ A ( Q B ) , ϕ B ( P A ) , ϕ B ( Q A ) , E A B ) , where E A , E B , ϕ A ( P B ) , ϕ A ( Q B ) , ϕ B ( P A ) , ϕ B ( Q A ) are as in the SSCDH problem and E A B = E / S A , S B ,
  • ( E A , E B , ϕ A ( P B ) , ϕ A ( Q B ) , ϕ B ( P A ) , ϕ B ( Q A ) , E C ) , where E A , E B , ϕ A ( P B ) , ϕ A ( Q B ) , ϕ B ( P A ) , ϕ B ( Q A ) are as in the SSCDH problem and E C = E / S A , S B , where S A and S B are random points with order A e A and B e B , respectively.
Definition 5
(Decisional Supersingular Product (DSSP) problem). Let ϕ : E E 3 be an isogeny of degree A e A . Given ( E 1 , E 2 , ϕ ) sampled with probability 1 / 2 from one of the following distributions, determine which distribution it is from.
  • A random point R of order B e B is chosen and E 1 = E / R , E 2 = E 3 / ϕ ( R ) , and ϕ : E 1 E 2 is an isogeny of degree A e A .
  • E 1 is chosen randomly among curves of the same cardinality as E, and ϕ : E 1 E 2 is a random isogeny of degree A e A .
On top of that, the undeniable signatures from [13] also use modified assumptions related to supersingular isogenies. Additionally, the schemes based on SIDH include security proofs of modifications and extensions that provide new functionalities.
The security of the chosen isogeny-based schemes is based on the problem of searching for an isogeny between elliptic curves having all information that a passive adversary could gather listening to the protocols’ executions. To break these cryptosystems, one needs to find the secret isogeny between the starting elliptic curve E and the elliptic curve in the public key, e.g., E A . The adversary knows not only the preimage and image curves of the secret isogeny but also the public parameters, i.e., basis points and their images in public keys. One of the main assumption in the chosen schemes is that the additional information does not give any advantage to a passive adversary in solving the problem of computing the isogeny. This assumption remains valid; no known passive attacks use auxiliary points.
The authors of [19] show that an active adversary can reconstruct the secret if parties reuse their secret keys for many protocol executions. A malicious party can send to an honest party a public key with a modified auxiliary point and learn the secret key bit by bit. Currently, there is no known method for an honest party to check if the other public key is malicious. It is required that all parties use ephemeral secret keys or that a generic transformation is used, which allows one party to reuse their secret. SIKE applies such a transformation to SIDH.
The following approaches can be used for finding the secret isogeny.
  • Brute-force attack: finding a path from the starting curve E until reaching the curve in the public key, e.g., E A . In brute-force attacks the number of isogeny computations is estimated to be linear to the size of the isogeny graph. It is not the best method for solving the isogeny problem because it does not take advantage of the fact that the secret isogeny has fixed and known degree. The task is in fact easier than a general problem of finding a path among all nodes. The parties take only e A or e B steps in an isogeny graph walk which is much shorter than the diameter of the graph.
  • Meet in the middle: to depict the method let us use SIDH as an example, and fix p = 2 216 3 137 1 . We are searching for Alice’s secret isogeny ϕ A : E E A of degree 2 216 . Instead of trying to find one path, two walks of 108 steps are performed starting from both E and E A . At some point, these walks meet in the middle, and with high probability, these connected two paths form the walk that Alice took. To implement this attack one builds a table of all 2 108 -isogenous elliptic curves to E A . Then, each 2 108 -isogeny is computed from E until a match is found in the table. If p = A e A B e B · f ± 1 with A e A B e B is used, then A e A / 2 p 1 / 4 so the attack runs in O ( p 1 / 4 ) time and requires O ( p 1 / 4 ) memory. The complexity remains the same if the other party is targeted.
  • The authors of [20] argue that the generic meet in the middle algorithm also is not the best attack. They provide an nalysis showing that the van Oorschot-Wiener golden collision search is the best attack for finding the secret isogeny.
The hypothesis that these classical approaches cannot be improved using quantum computers is based on the following reasoning shown in [21]. To compute a walk of e isogenies it is necessary to compute each isogeny successively. These computations cannot be parallelized because in each step the j-invariant changes. It also applies to quantum computers. Indeed, the author of [22] compares the best classical and quantum attacks and shows that “quantum computers don’t really help”.

4. Chosen Schemes

This article reviews by far the most popular isogeny-based protocol, i.e., SIDH. SIDH attracted almost the entire focus of isogeny-based cryptography in recent years. We also review a family of schemes based on SIDH. The main principle that determined which protocol is included in the review was the similarity to SIDH, e.g., in the form of public keys, and the flow of exchanged messages. In each of the reviewed protocols, it is clear how they build on top of SIDH. For this reason, e.g., commutative SIDH (CSIDH) was not included in the review since it differs greatly from SIDH, i.e., there are no auxiliary points exchanged, and it is possible to verify if the other party’s key was generated honestly.
Since IBDS, SDVS, undeniable signatures, and SIOT are very much based on SIDH, we shall start the review with that scheme. It is the least complicated and we use it to also show how isogeny operations work in general.

4.1. Supersingular Isogeny Diffie–Hellman Key Exchange (SIDH)

4.1.1. Construction and Algorithms

The Diffie–Hellman key exchange [23] is one of the earliest, practical, cryptographic key exchange protocols. It is also the first publicly known work that proposed the idea of a private key and a corresponding public key. In the traditional Diffie–Hellman, exponents commute to produce a shared secret g a b = ( g a ) b = ( g b ) a where g is a generator of a multiplicative group G of prime order q such that discrete logarithm problem and computational Diffie–Hellman problem hold, and a , b are private keys of two parties. An efficient algorithm to solve the DLP would make DH key exchange insecure; thus, quantum-secure alternatives are needed.
The scheme that started an increased interest in isogeny based cryptography is supersingular isogeny Diffie–Hellman (SIDH) protocol [10] due to Jao and De Feo. More isogeny systems are based on SIDH so the initial setting is very often the same. SIDH works in the quadratic extensions of large prime fields F p , typically F p 2 = F p ( i ) with i 2 + 1 = 0 ; thus, elements can be represented as a + b i where a , b F p . SIDH takes primes of the form
p = A e A B e B · f ± 1 ,
where A , B are small primes (commonly 2 and 3) with A e A B e B and a small cofactor f to ensure p is prime (usually f = 1 ). The public parameters are a prime p, a supersingular curve E ( F p 2 ) of order ( A e A B e B · f ) 2 , generators P A , Q A of the A e A -torsion subgroup E [ A e A ] , and generators P B , Q B of the B e B -torsion subgroup E [ B e B ] .
SIDH is similar to the classical Diffie–Hellman protocol. Two parties, named Alice and Bob, together compute a shared secret key. Alice creates her private key by choosing m A , n A R Z / A e A Z , not both divisible by A , and computes an isogeny ϕ A : E E A with kernel m A P A + n A Q A . With almost no loss in generality, private keys with m = 1 can be used [24]. That convention is used throughout this work; thus, Alice selects skA { 0 , 1 , , A e A 1 } and computes
S A = P A + 𝚜 𝚔 A Q A .
Then, she computes her secret isogeny ϕ A : E E A , where E A = E / S A . This can be done as a composition of e A isogenies of degree A (taking e A steps defined by S A in A -isogeny graph). Alice’s public key is the image curve E A and the images of Bob’s public basis points:
𝚙 𝚔 A = ( E A , P B , Q B ) = ( E A , ϕ A ( P B ) , ϕ A ( Q B ) ) .
Bob creates his private key by choosing skB { 0 , 1 , , B e B 1 } and computing
S B = P B + 𝚜 𝚔 B Q B .
Then, he computes his secret isogeny ϕ B : E E B , where E B = E / S B . This can be done as a composition of e B isogenies of degree B (taking e B steps defined by S B in B -isogeny graph). Bob’s public key is the image curve E B and the images of Alice’s public basis points:
𝚙 𝚔 B = ( E B , P A , Q A ) = ( E B , ϕ B ( P A ) , ϕ B ( Q A ) ) .
Alice, having her secret integer skA and Bob’s public key, computes the secret subgroup S A = P A + 𝚜 𝚔 A Q A on E B . Then, she computes another secret isogeny ϕ A : E B E A B , E A B = E B / S A . The shared secret is j A B = j ( E A B ) .
Bob computes the secret subgroup S B = P B + 𝚜 𝚔 B Q B on E A , then computes secret isogeny ϕ B : E A E B A , E B A = E A / S B . The shared secret is j B A = j ( E B A ) .
Computations carried out by Alice and Bob are an isogeny graph walk. Both parties start from the initial curve E, then Alice and Bob use their secret values and move to E A with ϕ A and E B with ϕ B , respectively. After exchanging their public keys, they can continue their walks. Alice starts from E B and moves to E A B with ϕ A , Bob proceeds mutatis mutandis and arrives in E B A . Both parties end up in the same node of the isogeny graph so they can use j ( E A B ) = j ( E B A ) as their shared secret value. The isogeny graph walk of Alice and Bob is shown in Figure 1. A short description of SIDH is given in Table 1.
Remark 1.
Both parties need to include images of each other’s basis points through their secret isogenies. A composition of isogenies ϕ A and ϕ B does not make sense because of domain and codomain mismatch. Alice needs to start the second part of shared key computations from E B , and Bob needs to start from E A . This problem is solved by moving each other’s basis points through the secret isogeny during key generation. In the end, they arrive at the same j-invariant. Except for that one difference, SIDH and classical DH share many common properties, like: both parties compute shared value, having a public key it is infeasible to compute the corresponding secret key, and knowing the secret key it is easy to compute the shared value.
Remark 2.
Since SIDH and classical DH are so similar it seems natural we should be able to construct a lot of isogeny-based schemes based on SIDH just like in classical cryptography. DH is a foundation for many more constructions with a broad set of functionalities and security properties. However, this is not the case in isogeny-based cryptography. In classical cryptography we can use two operations, namely: exponentiation and addition of exponents. So far there is no second operation in isogeny-based cryptography. It seems to be the main difficulty in developing new isogeny-based schemes.

4.1.2. Implementation

SIDH is an interactive protocol between two parties, namely Alice and Bob. They both execute similar operations but using different parameters. Each party is implemented as an object of class Entity; however, objects representing Alice and Bob are created with different sets of parameters.
Comment (Listing 5):
In the above listing, the object constructor __init__ corresponds to the key generation algorithm in Table 1. In line 9, a secret key sk is generated. In line 10, a generator S of a secret isogeny kernel is created. In the end, a call to isogeny_graph_walk with the secret key and other party’s basis points produce the public key.
Listing 5. Class definition.
Cryptography 06 00027 i005
A shared secret value is computed in the gen_shared_key method, which implements secret generation algorithm in Table 1. In line 20, a new generator S of a secret isogeny kernel is created. That generator is a point on the other party’s public key curve. With that value, it is possible to compute the next isogeny in an isogeny graph. The target curves of both parties are in the same node of the graph; thus, its j-invariant is returned as a secret.
Comment (Listing 6):
The above listing shows an example code that executes SIDH. First, an Entity A is created for Alice, then an Entity B for Bob. Alice can generate her shared value with Bob by passing object B as an argument to the gen_shared_key method in line 10. Bob computes his shared key with Alice in line 13 by passing object A as an argument to the gen_shared_key method. Both Alice and Bob must compute the same value, that condition is asserted in line 16.
Listing 6. SIDH key agreement.
Cryptography 06 00027 i006
Comment (Listing 7):
The output of the above program shows that the assertion succeeded.
Listing 7. SIDH execution.
Cryptography 06 00027 i007

4.2. Isogeny-Based Digital Signature (IBDS)

4.2.1. Construction and Algorithms

The scheme published in [11] by Yoo, Azarderakhsh, Jalali, Jao, and Soukharev is the first general-purpose digital signature scheme secure against quantum adversaries based on supersingular elliptic curve isogenies. The scheme uses Unruh’s construction [25] of non-interactive zero-knowledge (NIZK) proofs applied to an interactive zero-knowledge proof presented in the same paper as SIDH [10]. This is similar to applying the Fiat–Shamir transform to an interactive zero-knowledge proof to build a secure signature scheme in classical cryptography. The Fiat–Shamir transform is only known to be secure against classical adversaries, as refs. [26,27] show this construction is not secure against quantum computers. The Unruh’s construction is secure against quantum adversaries.
The public parameters of the isogeny-based digital signature (IBDS) are similar to the parameters of SIDH with one difference: only generators P B and Q B must be known publicly. IBDS simulates interactions in a sigma protocol using hashes. Parties run the protocol 2 λ times, where λ is the security parameter and the challenge domain is { 0 , 1 } . Let G , H be quantum random oracles, G has the same domain and range, while H outputs 2 λ bits for challenges. A classical random oracle is modeled as a random hash function O : { 0 , 1 } * { 0 , 1 } * , it is possible to learn a value O ( x ) by querying the classical state x. A quantum(-accessible) random oracle can be evaluated in superposition by submitting a quantum state. An attacker can query a random oracle with a superposition of many states, and the oracle must be evaluated at all points in the superposition. Unlike in Fiat–Shamir transform, H will not be evaluated only on the commitments. The parameters for the hash function also include hashes from G of the responses to each possible challenge for each commitment. The signature consists of the commitments, all possible challenges, hashed responses, and responses to the challenges given by H. The verifier gets the same challenge bits from H and verifies the responses in each round. The scheme consists of three algorithms: KeyGen, Sign, and Verify.
To implement KeyGen algorithm, shown in Algorithm 1, it suffices to use an implementation of Alice’s key generation procedure from the SIDH protocol.
To generate keys, sample a random point S of order A e A , compute the isogeny ϕ : E E / S and calculate images of public points P B and Q B . Sampling S can be implemented as S = P A + sk Q A for some sk Z / A e A Z . The public key is composed of the target curve E / S and public generators P B , Q B moved through ϕ , i.e., ϕ ( P B ) , ϕ ( Q B ) .
The signing procedure uses Unruh’s construction and emulates the execution of an interactive zero-knowledge proof of knowledge.
For each of 2 λ rounds of the sigma protocol, a signer chooses a random point R of order B e B (this corresponds to Bob’s key generation from SIDH) and continues with all computations in the sigma protocol. Then, the signer hashes all the responses. In the last step, data from all rounds is hashed with the message m to obtain the challenge bits J 1 | | | | J 2 λ . All of the operations until the very last hash function call can be precomputed in parallel even before the message is known.
Algorithm 1:KeyGen()
Sample sk R Z / A e A Z
Compute S = P A + sk Q A
Compute the isogeny ϕ : E E / S
pk ( E / S , ϕ ( P B ) , ϕ ( Q B ) )
return (pk, sk)
Each round of the signing procedure is an independent isogeny graph walk. Figure 2 shows a walk computed in one round of the simulation. The upper part in the isogeny graph is fixed during signing, i.e., the starting point E, the private isogeny ϕ , and a part of the signer’s public key E / S . The lower part of the figure is random and changes in each round. This simulates the interactions of Alice with different parties.
The signature verification corresponds to the verification of data (commitments, challenges, and responses) in each round of the simulated sigma protocol.
First, a verifier computes the same hash value J 1 | | | | J 2 λ and checks each ZKP round based on data in the signature. The verification starts with checking the challenge bit for this round, then the hash value for the response selected by the challenge bit is verified. Depending on the challenge bit, properties of the corresponding response are tested. If all checks succeed, then the signature is correct.

4.2.2. Implementation

Before implementations of algorithms are given, it is important to define scheme-specific functions used in those algorithms.
Comment (Listing 8):
In the listing, functions G and H correspond to the quantum random oracles G , H of the scheme, respectively.
Listing 8. Random oracles functions.
Cryptography 06 00027 i008
Both functions are based on a SHA3-256 hash function output. In case of function G, the result is just a SHA3-256 output. This does not influence a proof-of-concept implementation, although random oracle G has the same domain and range according to the scheme. That property of G is used only in the proof that this construction is secure in the quantum oracle model. The proof exploits the fact that the random oracle G is indistinguishable from a random permutation, and replaces G with an efficiently invertible function, which is unnoticeable by any quantum PPT adversary. That modification allows the hashes to be inverted to obtain the hidden responses in the adversary’s forged proof. Function H returns an array of integers in { 0 , 1 } of length len, i.e., 2 λ . These values correspond to the challenge bits J 1 | | | | J 2 λ . Usage of SHA3-256 in function H sets the limit of security parameter to λ = 128 . The exact definitions of functions G and H can be easily modified to achieve higher security levels.
Comment (Listing 9):
Helper functions used in the verification procedure are also defined. Function generates_kernel checks if a point P generates a kernel of the e -isogeny from E 1 to E 2 by checking if E 2 is the same node as E 1 / P in an isogeny graph. Despite the fact that SageMath provides a method to calculate a point’s order, it is too expensive to use it in the testing if the point is of the correct order. Instead, function has_order is defined to test if a point P has order e by checking if e multiplications by scalar l bring the point to a point at infinity.
Listing 9. Property testing functions.
Cryptography 06 00027 i009
A signer role is implemented similarly to the class Entity from Listing 5, a secret and a public keys are generated with exactly the same code. A scheme specific method gen_shared_key is replaced with a sign method.
Comment (Listing 10):
The above method implements Algorithm 2 and signs a message m with a signer’s secret key self.sk. The loop in line 8 executes 2 λ simulations, in each round a new random point R is selected. Then, an isogeny graph walk is computed together with isogenies, auxiliary points, and elliptic curves. Starting from line 18, all values are packed into structures for commitments, challenges, and corresponding responses. At the end of each round, in line 25, every response is hashed. In line 26, challenge bits J are computed. A signature consists of commitments, challenges, and responses’ hashes computed in simulations, together with responses selected by the challenge bits.
Listing 10. Definition of signing method.
Cryptography 06 00027 i010
Algorithm 2:Sign(sk,m)
fori = 1 to 2λ do
      Pick a random point R of order B e B (sample r R Z / B e B Z , then R = P B + r Q B )
      Compute the isogeny ψ : E E / R Compute either ϕ : E / R E / R , S
        or ψ : E / S E / R , S
       ( E 1 , E 2 ) ( E / R , E / R , S )
       c o m i ( E 1 , E 2 )
       c h i , 0 R { 0 , 1 }
       ( r e s p i , 0 , r e s p i , 1 ) ( ( R , ϕ ( R ) ) , ψ ( S ) )
      if ch i , 0 = 1 then
            s w a p ( r e s p i , 0 , r e s p i , 1 )
      end
       ( h i , j G ( r e s p i , j )
end (
J 1 | | | | J 2 λ H (pk, m, ( c o m i ) i ,   ( c h i , j ) i , j ,   ( h i , j ) i , j )
return σ ( ( c o m i ) i ,   ( c h i , j ) i , j ,   ( h i , j ) i , j ,   ( r e s p i , J i ) i )
Comment (Listing 11):
The verification Algorithm 3 is implemented in a form of a standalone function as the verification procedure is universal. The verification of a signature sigma for a message m, allegedly signed by a signer signer, starts with unpacking the signature in line 4. With those values, together with the signer’s public key, challenge bits J are computed in line 6. The loop in line 8 tests each round of simulation embedded into the signature. Depending on a challenge bit, the response is verified against the correct hash value in line 9. Then, the commitment and the response are unpacked. Next, the properties of each element are tested with helper functions. In case all the checks succeed, the signature is accepted as valid.
Listing 11. Verification function.
Cryptography 06 00027 i011
Comment (Listing 12):
The above listing shows an example code that executes the IBDS scheme. First, a signer A is created in line 4 using Alice’s parameters from SIDH. The signer signs a message m by passing it to the sign method in line 10. Verification of a message m and its signature sigma over the signer’s public key is executed in line 13. The program also tries to verify the signature for a modified message in line 18.
Listing 12. Test program of IBDS.
Cryptography 06 00027 i012
Algorithm 3:Verify(pk, m, σ)
J 1 | | | | J 2 λ H (pk, m , ( c o m i ) i , ( c h i , j ) i , j , ( h i , j ) i , j )
fori = 1 to 2λ do
   check h i , J j = G ( r e s p i , J i )
   if ch i , J i = 0 then
      Parse ( R , ϕ ( R ) ) r e s p i , J i
      check R , ϕ ( R ) have order B e B
      check R generates the kernel of the isogeny E E 1
      check ϕ ( R ) generates the kernel of the isogeny E / S E 2
   else
       Parse ψ ( S ) r e s p i , J i
      check ψ ( S ) have order A e A
      check ψ ( S ) generates the kernel of the isogeny E 1 E 2
   end (
end (
ifall checks succeedthen
   return 1
else
   return 0
end
Comment (Listing 13):
This listing shows that the correct signer-message-signature triple is valid, while modifications of the message are detected.
Listing 13. IBDS scheme execution.
Cryptography 06 00027 i013

4.3. Strong Designated Verifier Signature (SDVS)

4.3.1. Construction and Algorithms

The scheme proposed in [12] by Sun, Tian, and Wang is the first strong designated verifier signature scheme that may be secure against a quantum computer. The scheme combines two ideas, the first one is a method of constructing an SDVS based on Diffie–Hellman key exchange, and the second concept used in the proposed construction is SIDH instead of classical key exchange. The public parameters and assumptions of the SDVS scheme are almost the same as in SIDH. Let p = A e A B e B · f ± 1 , E ( F p 2 ) , P A , Q A , P B , Q B be defined exactly as in SIDH. Let H : { 0 , 1 } * { 0 , 1 } k be a secure hash function, where k is a security parameter.
The key generation Algorithm 4 executes similarly to the SIDH key generation. A signer follows the computations of Alice while a verifier computes as Bob.
The signing algorithm is based on the secret generation steps of Alice from SIDH in Table 1 and introduces operations based on a value shared between a signer and a designated verifier.
To sign a message m for a designated verifier, a signer follows SIDH secret generation and obtains a j-invariant j A B of the final node in an isogeny graph walk of the signer with the designated verifier’s public key. The designation part of the signature creation is achieved through the use of the designated verifier’s public key in the computations. The signature is created as σ = H ( m | | j A B ) , where | | denotes bits concatenation.
In this SDVS scheme, the signature is an HMAC of a message with a shared secret as the key, and the key is established in the execution of SIDH protocol. Both a signer and a designated verifier follow computations of Alice and Bob, respectively, and calculate the shared j-invariant. This value is then concatenated with a message, and the final bits are hashed.
The verification algorithm is also based on the secret generation steps from SIDH but follows computations of Bob in Table 1.
A signature σ for a message m can be verified by a designated verifier as follows: using the verifier’s secret key and the signer’s public key compute an isogeny graph walk similarly to Bob’s computations in SIDH, compute a j-invariant j B A of the final curve, then σ = H ( m | | j B A ). The signature is correct if and only if σ = σ . The designated verifier can simulate a correct signature for m by outputting σ as the signature.

4.3.2. Implementation

The SDVS scheme is a simple extension of SIDH key exchange; thus, its implementation is heavily based on the SIDH implementation from Section 4.1.2. A signer reuses the code of Alice, while a designated verifier reuses the code of Bob. Both new methods for signing and verification use a call to a hash function H, defined as follows.
Comment (Listing 14):
Function H is a simple wrapper for SHA3-256 hash function that returns hash output for a message m concatenated with a j-invariant j. Signing and verification algorithms are implemented as new methods of the class Entity from Listing 5, i.e., sign and verify, respectively.
Listing 14. Helper functions of SDVS.
Cryptography 06 00027 i014
Comment (Listing 15):
The method sign implements Algorithm 5. It takes a message m and a designated verifier verifier. The function computes a shared secret value of the signer and the verifier according to SIDH. In line 3, a hash over the message and the shared value is computed, then the message-hash pair is returned. The verify method implements Algorithm 6. It takes a signer signer, a message m, and a signature sigma. The verifier computes a secret key shared with the signer and a new signature sigma_prime. If both hashes sigma and sigma_prime are equal, then the signature is correct.
Listing 15. Implementation of signing and verification in SDVS.
Cryptography 06 00027 i015
Algorithm 4:KenGen()
     Signer  Designated verifier
     skA R Z / A e A Z   skB R Z / B e B Z
      S A = P A + skA Q A    S B = P B + skB Q B
      ϕ A : E E A = E / S A    ϕ B : E E B = E / S B
     pkA = E A , ϕ A ( P B ) , ϕ A ( Q B )   pkB = E B , ϕ B ( P A ) , ϕ B ( Q A )
  return ((pkA,skA), (pkB,skB))
Algorithm 5:Sign(skA, pkB, m)
S A = ϕ B ( P A ) + skA ϕ B ( Q A )
ϕ A : E B E A B = E / S A
j A B = j ( E A B )
σ = H ( m | | j A B )
return σ
Algorithm 6:Verify(skB, pkA, m, σ)
S B = ϕ A ( P B ) + skB ϕ A ( Q B )
ϕ B : E A E B A = E / S B
j B A = j ( E B A )
σ = H ( m | | j B A )
return σ = = σ
Comment (Listing 16):
The above listing shows an example code that executes the SDVS scheme. A signer A is created in line 4 using the parameters of Alice. In line 7, a designated verifier is created with the parameters of Bob. The signer signs a message m for the designated verifier B in line 12. The verifier B checks the signature sig for the message m from the signer A in line 15. The designated verifier also tries to verify the signature for an altered message in line 22. In line 25, a verifier C tries to verify a correct message and signature, but for the verifier B.
Listing 16. Test program of SDVS.
Cryptography 06 00027 i016
Comment (Listing 17):
This listing shows the designated verifier can verify a correct signature and detect modifications in a message. Another party was unable to verify a correct message-signature pair.
Listing 17. SDVS scheme execution.
Cryptography 06 00027 i017

4.4. Undeniable Signatures

4.4.1. Construction and Algorithms

The scheme presented in [13] by Jao, and Soukharev is an example of isogeny-based undeniable signature. It is related to SIDH in assumptions and basic principles but introduces more changes than previously described schemes. Let p be a prime of the form
p = A e A M e M C e C · f ± 1 ,
fix a supersingular curve E over F p 2 , such that its order is divisible by ( A e A M e M C e C ) 2 , generators { P A , Q A } of E [ A e A ] , { P M , Q M } of E [ M e M ] , and { P C , Q C } of E [ C e C ] , let H : { 0 , 1 } * Z . In general, the scheme is designed to use points in P A , Q A for keys, points in P M , Q M are associated with messages, and points in P C , Q C are linked to commitments.
A signer creates a key pair (Algorithm 7) following the steps of Alice’s key generation in SIDH key exchange. Instead of using Bob’s basis points, { P C , Q C } are moved through the secret isogeny.
To sign a message m (Algorithm 8), a signer computes a final node in an isogeny graph walk similarly to an isogeny graph in SIDH. The difference is that instead of Bob’s side, values are based on a hash value over the message. The signature consists of E A M and auxiliary points ϕ M , A M ( ϕ M ( P C ) ) , ϕ M , A M ( ϕ M ( Q C ) ) . Isogeny graph walk of signing procedure is shown in Figure 3.
Algorithm 7:KeyGen()
Sample skA R Z / A e A Z
Compute S A = P A + skA Q A
Compute the isogeny ϕ A : E E A = E / S A
pkA ( E / S A , ϕ A ( P C ) , ϕ A ( Q C ) )
return (pkA, skA)
Algorithm 8:Sign ( S A , m )
h = H ( m )
S M = P M + h Q M
ϕ M : E E M = E / S M
ϕ M , A M : E M E A M = E / ϕ M ( S A )
ϕ A , A M : E A E A M = E / ϕ A ( S M )
return σ = ( E A M , ϕ M , A M ( ϕ M ( P C ) ) , ϕ M , A M ( ϕ M ( Q C ) ) )
The signature verification is done in an interactive confirmation of E A M . Isogenies used to produce E A M must not be revealed; thus, this curve will be blinded with a third step in an isogeny graph walk. A signer computes commitment as in Algorithm 9.
Algorithm 9: Confirmation-commitment( S A , m , σ )
skC R Z / C e C Z ,
S C = P C + skC Q C ,
ϕ C : E E C = E / S C ,
ϕ M , M C : E M E M C = E M / ϕ M ( S C ) = E C / ϕ C ( S M ) ,
ϕ A , A C : E A E A C = E A / ϕ A ( S C ) = E C / ϕ C ( S A ) ,
ϕ M C , A M C : E M C E A M C = E A M / ϕ C , M C ( ϕ C ( S A ) ) ,
returncomm = ( E C , E A C , E M C , E A M C , k e r ( ϕ C , M C ) )
A verifier chooses at random b R { 0 , 1 } . If b = 0 , the signer returns resp = k e r ( ϕ C ) , if b = 1 , the signer returns resp = k e r ( ϕ C , A C ) and the verifier can continue with verification shown in Algorithm 10.
Algorithm 10: Confirmation-verification(comm, b, resp, m, σ)
Cryptography 06 00027 i036
The isogeny graph walk computed during confirmation protocol is shown in Figure 4.
The disavowal protocol is executed when a signer wants to prove that a falsified signature ( E F , F P , F Q ) for a message m is invalid. Here, E F , F P , F Q correspond to E A M and auxiliary points ϕ M , A M ( ϕ M ( P C ) ) , ϕ M , A M ( ϕ M ( Q C ) ) , respectively. The signer shows that E F is an invalid signature without revealing correct E A M . Elliptic curve E A M must not be disclosed because it is a part of a valid signature over m that the signer does not intend to sign. This can be achieved by blinding E A M once again to obtain E A M C . Additional information allows the verifier to compute E F C and then verify that E F C E A M C .
The disavowal protocol begins similarly to confirmation protocol, i.e., the signer sends E C , E A C , E M C , E A M C , k e r ( ϕ C , M C ) as the commitment, more detailed steps are provided in Algorithm 9.
A verifier chooses at random b R { 0 , 1 } . If b = 0 , the signer returns resp = k e r ( ϕ C ) , if b = 1 , the signer returns resp = k e r ( ϕ C , A C ) and the verifier checks all properties as given in Algorithm 11.
Algorithm 11: Disavowal-verification(comm, b, resp, m, σ)
Cryptography 06 00027 i037
The isogeny graph walk computed during disavowal protocol is shown in Figure 5.

4.4.2. Implementation

The undeniable signature scheme needs the most changes among all schemes described in this work. The implementation of the scheme differs in many aspects compared to SIDH, including public parameters.
Comment (Listing 18):
The code creates a prime p = A e A M e M C e C · f ± 1 of a suitable form for the scheme, this implementation uses toy-size parameters. The starting elliptic curve is created just like in SIDH scheme.
Listing 18. Public parameters.
Cryptography 06 00027 i018
Comment (Listing 19):
Public base points ( P A , Q A ) , ( P M , Q M ) , ( P C , Q C ) can be computed dynamically with appropriate calls to get_random_base function from common code Section 2.2.1:
Listing 19. Public basis points.
Cryptography 06 00027 i019
Comment (Listing 20):
Functions and methods implementing algorithms of the scheme will use the following helper functions. Function H is a wrapper function for SHA3-256 which returns a hash as an integer value from a correct range. Function generates_kernel is used for the verification of k e r ( ϕ C , M C ) in a commitment and works exactly the same as the function with identical name in Listing 9. Function isogeny_graph_walk is similar to the function with identical name in Section 2.2.3, a method of passing points to move through a new isogeny is different.
Listing 20. Helper functions.
Cryptography 06 00027 i020
In the implementation, isogenies are called explicitly only in the isogeny_graph_walk function. The rest of the code operates on elliptic curves, their j-invariants, and points on elliptic curves. This is because the schemes use e -isogenies, while such isogeny never exists in a running program. An e -isogeny is always computed as a composition of e individual -isogenies. However, the undeniable signatures scheme needs to move a varying number of points through e -isogenies; thus, the isogeny_graph_walk function accepts a list of points.
All computations of a signer are grouped as methods of class Signer.
Comment (Listing 21):
Object constructor __init__ creates a private key of a signer and computes a corresponding public key in the gen_pub_key method as a triple of the secret isogeny’s target curve and images of P C , Q C .
Listing 21. Signer class.
Cryptography 06 00027 i021
The sign method implements Algorithm 8. A secret integer for a message m together with a generator SM are computed in lines 15 and 16. The generator is used to calculate an elliptic curve EM in line 17 and images of basis points. Then, the basis points connected with commitments are moved from the elliptic curve EM to EAM. These points and the elliptic curve EAM together are returned as a signature.
Both confirmation and disavowal protocols use commitments of the same form. The get_commitment_conf methods is used during confirmation protocol. Before a signer proceeds with its execution, a signature in question is checked. In case a signer concludes this is not a legitimate signature, an exception is raised in line 27 and no commitment is sent. When a signer decides to participate in the confirmation protocol, a commitment is returned according to the scheme. Algorithm 9 is implemented in the get_commitment_disavow method. In line 34, a random value is generated. Then, elliptic curves EC, EMC, EAC, and EAMC are computed. All auxiliary points that are needed are also moved through the corresponding isogenies. In line 43, responses are saved for later use. Curves EC, EMC, EAC, EAMC, and kernel k e r ( ϕ C , M C ) are returned as a commitment.
The get_response method simply returns a correct response saved before, depending on a challenge bit b.
The confirmation and disavowal protocols are implemented as methods of the class Verifier. However, both methods could be plain functions as the scheme does not authenticate a verifier. The above listing presents the confirmation protocol.
Comment (Listing 22):
The confirmation method takes a message m, a signature signature, and a signer Signer as parameters. The verifier asks the signer to execute the confirmation protocol with a call to the get_commitment_conf method in line 4 with the message and the signature. In case the signer throws an exception, the execution is aborted. This corresponds to a situation in which the signer claims the signature is forged. In that scenario, both parties could engage in the disavowal protocol covered below. Otherwise, a commitment is returned and stored in comm. In lines 8 and 9, the verifier coins at random a challenge bit b and asks for a response resp. Starting from line 12, Algorithm 10 is implemented. Depending on the challenge bit b, the correct response is unpacked. Then, codomains of isogenies are computed according to the algorithm. Both loops in lines 24 and 41 verify recomputed elliptic curves against the commitment. In line 29, the kernel from the commitment is also verified.
Listing 22. Confirmation method.
Cryptography 06 00027 i022
The disavowal protocol is implemented in the disavowal method defined below.
Comment (Listing 23):
The disavowal method also takes a message m, a signature signature, and a signer Signer as parameters. The verifier asks the signer to execute the disavowal protocol with a call to the get_commitment_disavow method in line 3 with the message and the signature. This time no exception is expected at that point. In lines 4 and 5, the verifier coins at random a challenge bit b and asks for a response resp. Starting from line 8, Algorithm 11 is implemented. The verification in disavowal protocol executes somewhat similarly, i.e., in one case a different elliptic curve is computed and the verification is extended. In line 18, the elliptic curve E F C (see Figure 5) is computed, then it is verified against E A M C in line 31. The else clause in line 33, similarly to the confirmation protocol, checks that the right face of the cube commutes, i.e., the commitment is correct.
Listing 23. Disavowal method.
Cryptography 06 00027 i023
Comment (Listing 24):
The above listing shows an example code executing the undeniable signatures scheme. In the first line, the security parameter lamb (or λ ) that controls the number of rounds is set to 128. In lines 5 and 6, two signers S1 and S2 are created. The while loop in 7 ensures these two signers have different public keys. It is forced by the usage of such small parameters in the implementation. A verifier V is created in line 9, and both signers sign the same message m in lines 13 and 14. In line 17, the confirmation protocol is used with a valid message-signature-signer combination. The confirmation method calls from lines 18 and 19 test the cases where a signer is presented with a modified message and someone’s else signature, respectively. In line 25, the disavowal method is called with a correct message-signature-signer combination. Lines 26 and 27 execute disavowal protocol for a modified message and different signature cases, respectively.
Listing 24. Test program of undeniable signatures.
Cryptography 06 00027 i024
Comment (Listing 25):
This listing presents the output of the above program. It shows that the correct signature was successfully confirmed while an altered message and somebody’s else signature were detected. The signer refused to proceed with the execution and threw exceptions. The signer was unable to prove that they did not sign a previously signed message. However, disavowal succeeded for an altered message and an invalid signature.
Listing 25. Undeniable signatures scheme execution.
Cryptography 06 00027 i025

4.5. Supersingular Isogeny Oblivious Transfer (SIOT)

4.5.1. Construction and Algorithms

The scheme due to Barreto, Oliveira, and Benits proposed in [14] is Oblivious Transfer (OT) protocol based on supersingular isogenies. This construction is a combination of the OT scheme of Chou and Orlandi [28], and SIDH. Once again, the public parameters of SIOT are based on SIDH. In OT scheme the sender (Alice) has two messages x 0 , x 1 and wants to send one of them to the receiver (Bob). Bob can choose which message he will receive and will never learn the other message. The choice of Bob is unknown to Alice. Let M be a set of all messages with binary strings of fixed length and ( x 0 , x 1 ) M . Let C be a set of all ciphertexts with binary strings of fixed length and ( c 1 , c 2 ) C . Alice and Bob agree to use a symmetric encryption scheme E n c ( j , x ) taking a shared key j and a message x to encrypt. The shared key j is a j-invariant of a shared supersingular elliptic curve.
The scheme needs a secure coin-flipping subprotocol so Alice and Bob can agree on an ephemeral, uniformly random bit string w. That part of the scheme is not covered in this article, the authors of SIOT suggest to use, e.g., Wagner’s bit commitment protocol [29]. Alice and Bob also need to agree on a deterministic algorithm that maps w into a pair of points U , V E B [ A e A ] .
The key generation algorithm for Alice executes just like in SIDH. However, Bob on top of SIDH computations will also modify his key depending on his choice b of the message to receive.
Alice, upon receiving Bob’s public key, is able to generate the same points U , V . Now Alice needs to encrypt her two messages. To do so securely, she first computes two keys (j-invariants) by taking isogeny graph walks.
Bob can follow SIDH steps to compute the elliptic curve shared with Alice-but only the one that corresponds to his choice b.

4.5.2. Implementation

Although SIOT is heavily based on SIDH, it introduces a lot of modifications in the middle of computations. On top of that, computations of Alice and Bob are not symmetrical. Those properties make it difficult to reuse previous implementations for SIOT. Most of helper functions (e.g., isogeny walk) and global parameters of SIDH can be reused. The following listing presents new and modified helper functions for SIOT.
Comment (Listing 26):
The get_key function is a wrapper for the SHA3-256 hash function that returns 16 byte long keys for any input j. The get_u_v function is used by Alice and Bob to obtain the shared points U , V . Both parties hash the bit string w to compute the coefficients α and β . Bob computes U = α G B + β H B and V = α β V . The coefficients α , β are computed as SHA3-256 hashes of w with appended bitstring alpha in line 10 and beta in line 14, respectively. Alice can use exactly the same computations to obtain the correct points. She will use G ^ B and H ^ B instead of G B and H B . It will work in both possible values of blinded public key of Bob. After obtaining coefficients, U is computed in line 15, and V in line 18. Note that α , β Z / A e A Z , and inversion of β is also calculated modulo A e A .
Listing 26. Helper function for SIOT.
Cryptography 06 00027 i026
The following listing contains the modified definition of SIDH’s Entity class which will be a base class for Alice and Bob.
Comment (Listing 27):
The only difference between SIDH and SIOT in the definition of class Entity is that the method gen_shared_key takes an elliptic curve and two points instead of the other party’s object. It is because Bob works on the public key of Alice, but Alice works on the blinded public key of Bob.
Listing 27. Entity class for SIOT.
Cryptography 06 00027 i027
Comment (Listing 28):
The class Alice inherits from the Entity class and is a container for computations of Alice. In this case an object representing Alice is initiated with a given bitstring w. In practice, Alice and Bob would use a secure coin-flipping protocol to agree on a uniformly random bit string. We did not implement it as it is not relevant to isogenies.
Listing 28. Alice class for SIOT.
Cryptography 06 00027 i028
In line 5, Alice creates two random messages x. Those messages are encrypted according to Algorithm 12 in the produce_response function that takes the blinded public key of Bob pk_hat_B. She computes two j-invariants in line 12 and encrypts the ith message in line 15. The key used for encryption is derived from the corresponding j-invariant in line 13.
Algorithm 12: Encrypt(skA , x 0 , x 1 , 𝚙 𝚔 ^ B )
U , V R E B [ A e A ]
i { 0 , 1 }
S A i = ( G ^ B + i U ) + 𝚜 𝚔 A ( H ^ B + i V )
ϕ A i : E B E B A i = E / S A i
j i = j ( E B A i )
c i = Enc ( j i , x i )
return c 0 , c 1
Comment (Listing 29): The class Bob inherits from the Entity class and is a container for computations of Bob. Since the focus is on isogeny-based cryptography, Bob is given the same w just like Alice. In line 5, Bob chooses the message b and in lines 7–10 blinds his public key according to Algorithm 13. The function get_result is used to decrypt the chosen message according to Algorithm 14. The shared j-invariant is computed in line 14, which is then used to derive the correct AES key in line 15. The bth message is decrypted in line 16.
Listing 29. Bob class for SIOT.
Cryptography 06 00027 i029
Algorithm 13:KenGen()
     Sender  Receiver
      x 0 , x 1 M    b { 0 , 1 }
     skA R Z / A e A Z   skB R Z / B e B Z
      S A = P A + skA Q A    S B = P B + skB Q B
      ϕ A : E E A = E / S A    ϕ B : E E B = E / S B
      G A = ϕ A ( P B ) , H A = ϕ A ( Q B )    G B = ϕ B ( P A ) , H B = ϕ B ( Q A )
     pkA = ( E A , G A , H A )
   U , V R E B [ A e A ]
   G ^ B = G B b U
   H ^ B = H B b V
   𝚙 𝚔 ^ B = ( E B , G ^ B , H ^ B )
 return  ( ( 𝚙 𝚔 A , 𝚜 𝚔 A ) , ( 𝚙 𝚔 ^ B , 𝚜 𝚔 B ) )
Algorithm 14: Decrypt(skB, c0, c1, pkA)
S B = G A + skB H A
ϕ B : E A E A B = E / S B
j b = j ( E A B )
x b = Enc−1 ( j b , c b )
return c 0 , c 1
Comment (Listing 30):
The listing shows an example code that executes SIOT. First, a bitstring w is created. Note that in practice Alice and Bob would use a secure coin-flipping protocol to compute that value. Then, objects for Alice A and Bob B are created. In line 13, the method produce_response of Alice is used to compute ciphertexts c. The blinded key of Bob pk_hat is used as the input. The get_result method of Bob with public key of Alice is used in line 16 to decrypt the chosen message xb. Bob must obtain the same value as the one in possession of Alice. The assertion in line 19 checks that condition.
Listing 30. Test program of SIOT.
Cryptography 06 00027 i030
Comment (Listing 31):
The output of the above program is presented in the listing, it shows that the assertion succeeded.
Listing 31. SIOT execution.
Cryptography 06 00027 i031

5. Error-Prone Applications

The last 10 years have seen a rapid development of isogeny-based cryptography. Many new constructions and protocols are based on the SIDH key exchange from 2011. The increased interest in cryptographic systems based on isogenies was caused, among others, by similarities of SIDH to classical cryptography key exchange. New solutions are searched for in order to bring more functionalities from classical cryptography to post-quantum. Some techniques can be used: Unruh’s construction, SDVS from HMAC, and PAKE using encryption. However, usage of such generic methods does not make automatically the resulting scheme secure. New construction can be vulnerable, PAKE scheme from Section 5.2 is an example. Even though the scheme is based on secure SIDH protocol and correct construction from Section 5.1 it is vulnerable. The attack [30] on that scheme is presented in Section 5.3.
All of the schemes described in Section 4, except SIDH, are based on the SIDH key exchange. The chosen schemes show specific constructions, that can turn a key exchange protocol into different types of cryptographic primitives. Some of these constructions are described in this section. Most of them are similar to constructions used in classical cryptography or present the same, generic approach.

5.1. Generic Constructions

Unruh’s construction: As the Fiat–Shamir transform might not be secure against quantum computers, it would be very practical to have an analogous construction that is proven to be quantum-safe. The scheme described in Section 4.2 uses a quantum-resistant alternative to the Fiat–Shamir transform, known as Unruh’s construction. Since the scheme is closely linked to that concept, its more detailed description is also provided in Section 4.2.
Unruh’s construction transforms an interactive zero-knowledge proof system into a non-interactive one. It follows that Unruh’s construction can be used to build signature schemes similarly to classical cryptography, i.e., based on previous constructions. It is a crucial property of cryptography as it is easier to build new schemes and analyze their security if some well-studied building blocks are reused.
Unruh’s construction applies to any interactive zero-knowledge proof system, not only isogeny-based ones. Thus, it is a very important building block of all post-quantum cryptography.
SDVS from HMAC: In the literature, several classical strong designated verifier signature schemes based on HMAC have been proposed, e.g., [31,32,33]. The general construction used in the verification algorithm of message-signature pair ( m , σ ) uses the verification equation like:
σ = H ( m , k ) ,
where H is some public and secure hash function, and k is a key. The key k can be computed as k = y A x B ( mod p ) = y B x A ( mod p ) , where values x are secret keys, and y are corresponding public keys of parties A and B. Any key exchange protocol can be used to compute a key for HMAC, including more advanced variants such as a pairing-based key exchange. An isogeny-based example of an SDVS scheme is described in Section 4.3.
It is sometimes argued, e.g., [34], that this construction is not a signature scheme. Most of the SDVS schemes do not have the undeniability property. Such SDVS schemes are more like a message authentication code rather than a digital signature, and that could be problematic.
PAKE using encryption: In classical cryptography, the Diffie–Hellman key exchange can be tweaked in many straightforward ways to construct PAKE schemes, e.g., EKE [35], SPEKE [36], PAK [37]. Encrypted Key Exchange (EKE) is general construction, that can add mutual authentication on top of any existing key exchange protocol. At least one party encrypts an ephemeral public key using a password, and only then sends it to a second party. The second party first decrypts the message with the same password, then continues with computation of a shared key according to the underlying protocol.
EKE-like encryption is a popular method of constructing PAKEs. This approach is used in EAP-EKE [38], and there is an isogeny-based SIDH-EKE scheme.

5.2. Problematic Password-Authenticated Key Establishment (PAKE) SIDH-EKE

5.2.1. Construction and Algorithms

The first password-authenticated key agreement methods are Encrypted Key Exchange (EKE) methods [35]. The scheme is based on the Diffie–Hellman key exchange and introduces one modification. Instead of exchanging public keys in a clear form, the messages are encrypted with a shared password. The scheme SIDH-EKE due to Terada, and Yoneyama presented in [39] is a straightforward construction based on SIDH instead of classical DH.
All parameters of SIDH-EKE are defined as in SIDH. Let (Enc, Dec) be a symmetric key encryption scheme where Enc is an encryption algorithm and Dec is a decryption algorithm. Alice and Bob have a password p w .
In SIDH-EKE, public keys are generated as in SIDH but the keys are never published in a clear form. Alice and Bob both encrypt their keys with symmetric cipher and a password known only to them.
After exchanging the ciphertexts, Alice and Bob can decrypt each other’s public keys with the same password. That way they achieve mutual authentication. Having public keys in a clear form, they can proceed with computations just like in the secret generation of SIDH.

5.2.2. Implementation

The SIDH-EKE scheme is a simple extension of the SIDH scheme; thus, both implementations are quite similar. The implementation uses AES for public-key encryption and defines a function to transform a short password into a usable AES key.
Comment (Listing 32):
The get_key function is a wrapper for the SHA3-256 hash function that returns 16 byte long keys for any input pw. Parties Alice and Bob are implemented as objects of a modified class Entity.
Listing 32. Helper function for SIDH-EKE.
Cryptography 06 00027 i032
Comment (Listing 33):
The constructor __init__ now also accepts a password pw. The method implements Algorithm 15 and generates a secret key as in SIDH. In line 17, the corresponding public key is computed in a clear form. An encryption key K is generated in line 18 and used for a new AES cipher in line 19. A Python dictionary with an encrypted key and a nonce is saved instead of a clear form key. The method gen_shared_key implements Algorithm 16. The method takes another party, i.e., peer object as a parameter. In line 27, once again the AES key is generated. If both parties use the same password pw, they will have the same encryption key. In line 29, the public key of the other party is decrypted. Starting in line 30, the SIDH secret key generation is executed.
Listing 33. Entity class for SIDH-EKE.
Cryptography 06 00027 i033
Algorithm 15:KeyGen(pw)
    Alice  Bob
    skA R Z / A e A Z   skB R Z / B e B Z
     S A = P A + skA Q A    S B = P B + skB Q B
     ϕ A : E E A = E / S A    ϕ B : E E B = E / S B
    pkA = Encpw ( E A , ϕ A ( P B ) , ϕ A ( Q B ) )   pkB = Encpw ( E B , ϕ B ( P A ) , ϕ B ( Q A ) )
  return (pkA, pkB)
Algorithm 16:SessionKeyGen(pkA,pkB)
   Alice   Bob
    ( E B , ϕ B ( P A ) , ϕ B ( Q A ) ) = Decpw ( p k B )     ( E A , ϕ A ( P B ) , ϕ A ( Q B ) ) = Decpw ( p k A )
    S A = ϕ B ( P A ) + skA ϕ B ( Q A )     S B = ϕ A ( P B ) + skB ϕ A ( Q B )
    ϕ A : E B E A B = E / S A     ϕ B : E A E B A = E / S B
    j A B = j ( E A B )     j B A = j ( E B A )
   return ( j A B , j B A )
Comment (Listing 34):
The above listing shows an example code that executes SIDH-EKE. First, an Entity A is created for Alice with a simple password 123456, then an Entity B for Bob with the same password. Alice can generate her shared value with Bob by passing object B as an argument to the gen_shared_key method in line 10. Bob computes his shared key with Alice in line 13 by passing object A as an argument to the gen_shared_key method. Both Alice and Bob must compute the same value, that condition is asserted in line 16.
Listing 34. SIDH-EKE key agreement.
Cryptography 06 00027 i034
Comment (Listing 35):
The output of the above program is presented in this listing, it shows that the assertion succeeded.
Listing 35. SIDH-EKE execution.
Cryptography 06 00027 i035

5.3. Attack on SIDH-Eke

Although EKE scheme is secure in a classical setting and EAP-EKE is successfully used in practice, the isogeny-based straightforward construction SIDH-EKE from Section 5.2 is susceptible to man-in-the-middle and offline dictionary attacks. The following attack was presented in [30].
For the SIDH-EKE scheme to be secure, public keys must be indistinguishable from random bitstrings. This property is necessary to fulfill the offline dictionary attack resistance security requirement of PAKE. However, in practice, public keys of SIDH are distinguishable from random bitstrings; thus, it is possible to construct an oracle that can determine if a password guess was correct.
A passive eavesdropper Eve can observe SIDH-EKE execution between Alice and Bob. After key generation Algorithm 15 finishes, Alice and Bob exchange encrypted public keys pkA = Encpw ( E A , ϕ A ( P B ) , ϕ A ( Q B ) ) , and pkB = Encpw ( E B , ϕ B ( P A ) , ϕ B ( Q A ) ) . Eve can perform an offline dictionary attack on Alice’s public key as shown in Algorithm 17, analogous approach can be applied for public key of Bob.
In SIDH, a public key is a structured data set, a triple of the form ( E , ϕ ( P ) , ϕ ( Q ) ) , where E is a supersingular elliptic curve, and ϕ ( P ) , ϕ ( Q ) are basis points. The authors of SIDH-EKE claim the scheme prevents offline dictionary attacks because the attacker cannot determine if a password guess is valid or not. That is because the encryption scheme is modeled as an ideal cipher. However, it is simple to check if the decryption of a public key yields valid values. Eve can observe Alice sending her public key pkA, and then try to guess a password p w . For each password, Eve decrypts the key Dec p w (pkA), parses the values ( E A , ϕ A ( P B ) , ϕ A ( Q B ) ) and checks all properties according to Algorithm 17. For a random password, the probability that even some of these criteria are met is extremely low, so if all checks succeed, p w is a correct guess with high probability.
Algorithm 17: SIDH offline dictionary attack
Cryptography 06 00027 i038
The same reasoning applies to optimized practical implementations of SIDH and SIKE. Even when the public parameters are compressed, e.g., sending the x-coordinates ϕ A ( P B ) , ϕ A ( Q B ) , and ϕ A ( Q B P B ) instead of directly sending the elliptic curve, enough information is sent to recover E A , ϕ A ( P B ) , and ϕ A ( Q B ) . Thus, the offline dictionary attack is still applicable.
The original EKE scheme is based on discrete logarithm; thus, unencrypted public keys are just very large numbers. A decryption of a public key with a random password would produce a bitstring that can be interpreted as a number, so it could be a valid public key. As a result, a password oracle similar to SIDH-EKE does not exist. An elliptic curve discrete logarithm variant of EKE would be also vulnerable to offline dictionary attacks.
Another isogeny-based PAKE is presented in [40]. The protocol does not use encryption of public keys, instead, auxiliary points are obfuscated with a reversible algebraic operation.
Remark 3.
Some of isogeny-based schemes use exactly the same or very similar, generic constructions known in classical cryptography to achieve new security properties from other types of cryptographic primitives. Analogies between SIDH and DH may suggest that some constructions should be secure against attacks against quantum computers. However, cryptography is tricky and it is not always true. Some mistakes may render isogeny-based schemes vulnerable even against classical computers. SIDH-EKE is an example and a valuable lesson.

6. Computational Complexity and Benchmarks

This section contains time measurements of the implementations. The previous sections show only executions of the scheme as a whole together with time measurements from one run. Averaged time measurement in seconds of many runs of each of the algorithms from Section 4 is also provided. When applicable, different schemes are also compared. Tests were run on a single core of Intel Core i7-9750H processor.

6.1. Supersingular Isogeny Diffie–Hellman Key Exchange (SIDH)

Table 2 contains measurements of running times of the key generation and secret generation algorithms. The benchmark was run using SIKEp434 [16] parameters, i.e., p = 2 216 3 137 1 .
From Table 2 it is possible to draw two conclusions.
  • Bob can generate his key and a shared secret faster than Alice. It follows from the choice of parameters, Alice has to compute 216 isogenies of degree 2, while Bob computes 137 isogenies of degree 3. For different parameters from SIKE specification, Bob always needs to compute a smaller number of isogenies than Alice.
  • Although Alice always computes 216 isogenies of degree 2, and Bob computes 137 isogenies of degree 3, for both parties secret value generation is faster than a key generation. The difference between the key and shared value generation algorithms is that during secret value generation no auxiliary points need to be moved, thus allowing shorter running times.

6.2. Isogeny-Based Digital Signature (Ibds)

Table 3 contains measurements of running times of the key generation, signing, and verification algorithms. The benchmark was run using SIKEp434 [16] parameters, i.e., p = 2 216 3 137 1 , and the security parameter λ = 8 .
Table 3 shows results matching Table 2. The running time of the IBDS key generation algorithm is similar to the running time of key generation of Alice in SIDH. It is expected since those algorithms perform the same computations. The running time of the signing algorithm also matches the expected time, i.e., it is about 2 λ times longer than SIDH Bob’s key and secret generation. The running time of the verification algorithm matches the expected time of 2 λ · 1.5 times longer than SIDH Bob’s secret generation. The 1.5 cofactor is a result of the fact that depending on the challenge bit, 2 or 1 values of the response are validated in each of the 2 λ rounds.

6.3. Strong Designated Verifier Signature (SDVS)

Table 4 contains measurements of running times of the key generation, signing, and verification algorithms. The benchmark was run using SIKEp434 [16] parameters, i.e., p = 2 216 3 137 1 .
The SDVS scheme is heavily based on the SIDH key exchange. The running times of the key generation algorithm for a signer and a verifier are similar to the times of SIDH Alice and Bob, respectively. The time needed for signing matches the time of Alice’s secret generation, while verification takes as much as Bob’s secret generation. All of these results are expected.

6.4. Undeniable Signatures

Table 5 contains measurements of running times of the key generation, signing, confirmation, and disavowal algorithms. The benchmark was run using toy-size parameters, i.e., p = 3 3 2 4 5 2 1 , and the security parameter λ = 128 .
In the case of the undeniable signatures implementation, it is difficult to compare the results to the previous implementations. The scheme differs the most from the other schemes and the implementation uses a different set of parameters. Comparing orders of magnitude of running times of the key generation algorithms across all implementations it is expected that running times of the confirmation and disavowal protocols will increase at least a few hundred times if parameters matching SIKEp434 are used. The difference between times of the confirmation and disavowal protocols in Table 5 is caused by the fact that in each round of the confirmation protocol a signer checks the validity of a signature before a commitment is returned. The time needed for the confirmation protocol can be reduced to time close to the running time of disavowal protocol if each of the λ rounds is not treated as a completely independent execution, i.e., a signer would check a signature only once and then return λ commitments.

6.5. Supersingular Isogeny Oblivious Transfer (SIOT)

Table 6 presents running times of algorithms executed in SIOT. The benchmark was run using SIKEp434 [16] parameters, i.e., p = 2 216 3 137 1 .
Times measured during the key generation algorithm execution are very similar to the times of corresponding values in Table 2. Both parties in SIOT need to execute additional steps on top of SIDH computations. Alice chooses two random messages while Bob chooses bit b and performs some point computations on an elliptic curve. However, all of those new steps are inexpensive when compared to computational cost of isogeny computations.
The time needed for decryption of the message chosen by Bob matches the time of Bob’s secret generation in SIDH. It is expected since the only additional step in SIOT is the decryption of the message with the shared secret as the key. Alice needs about twice as much time for encryption as Alice needs to compute shared secret in SIDH. That correlation follows from the fact that in SIOT Alice has to compute two different keys-one for each of the messages.

7. Conclusions

The goal of this article was a review of the state-of-the-art functionalities provided by existing isogeny-based cryptosystems. The schemes include key exchange protocol, oblivious transfer, and several types of digital signatures. For each of the schemes, similarities between them and analogies to classical cryptography were highlighted. The research covers a detailed description of chosen isogeny-based schemes. Software solutions for isogeny-based cryptography were briefly discussed and the chosen schemes were implemented. The goal of implementations was not maximum performance but clarity of code that could help to understand the schemes and isogeny-based cryptography in general. Common blocks of the implementations can be used for fast prototyping of new cryptosystems. In the end, time benchmarks were provided for comparison.
From the conducted research and implementation work, the following conclusions can be drawn.
  • The properties of SIDH imply it can be a natural candidate to replace commonly used Diffie–Hellman and elliptic curve Diffie–Hellman key exchange.
  • Analogies between SIDH and DH caused rapid development of isogeny-based cryptosystems using constructions analogous to classical cryptography.
  • SIDH key can be used for symmetric encryption schemes, similarities of SIDH and DH allow building ElGamal-like public key encryption.
  • Isogeny-based cryptography needs a more cautious approach, PAKE that is badly designed in an obvious way is a valuable lesson.
  • Most of the post-quantum isogeny signatures are far from being practical; however, some more practical signatures exist, e.g., CSI-FiSh [41].

Author Contributions

Conceptualization, Ł.K.; data curation, B.D. and Ł.K.; resources, Ł.K.; software, B.D.; writing—original draft, B.D.; writing—review and editing, B.D. and Ł.K. All authors have read and agreed to the published version of the manuscript.

Funding

The research was partially financed from the Fundamental Research Fund number 8211104160 of the Wrocław University of Science and Technology.

Data Availability Statement

Not applicable.

Conflicts of Interest

The authors declare no conflict of interest.

References

  1. Shor, P.W. Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer. SIAM J. Comput. 1997, 26, 1484–1509. [Google Scholar] [CrossRef] [Green Version]
  2. Rivest, R.L.; Shamir, A.; Adleman, L. A method for obtaining digital signatures and public-key cryptosystems. Commun. ACM 1978, 2, 120–126. [Google Scholar] [CrossRef]
  3. NIST Post-Quantum Cryptography Competition. Available online: https://csrc.nist.gov/projects/post-quantum-cryptography (accessed on 26 February 2022).
  4. Hoffstein, J.; Pipher, J.; Silverman, J.H. NTRU: A ring-based public key cryptosystem. In Algorithmic Number Theory; Buhler, J.P., Ed.; ANTS 1998; Lecture Notes in Computer Science; Springer: Berlin/Heidelberg, Germany, 1998; Volume 1423. [Google Scholar] [CrossRef]
  5. Fouque, P.; Hoffstein, J.; Kirchner, P.; Lyubashevsky, V.; Pornin, T.; Prest, T.; Ricosset, T.; Seiler, G.; Whyte, W.; Zhang, Z. Falcon: Fast-Fourier Lattice-Based Compact Signatures over NTRU. 2019. Available online: https://www.di.ens.fr/~prest/Publications/falcon.pdf (accessed on 26 February 2022).
  6. Ding, J.; Schmidt, D. Rainbow, a New Multivariable Polynomial Signature Scheme. In Applied Cryptography and Network Security; Ioannidis, J., Keromytis, A., Yung, M., Eds.; ACNS 2005; Lecture Notes in Computer Science; Springer: Berlin/Heidelberg, Germany, 2005; Volume 3531. [Google Scholar] [CrossRef]
  7. McEliece, R.J. A Public-Key Cryptosystem Based on Algebraic Coding Theory. Available online: https://ipnpr.jpl.nasa.gov/progress_report2/42-44/44N.PDF (accessed on 26 February 2022).
  8. Bernstein, D.J.; Hopwood, D.; Hülsing, A.; Lange, T.; Niederhagen, R.; Papachristodoulou, L.; Wilcox-O’Hearn, Z. SPHINCS: Practical Stateless Hash-Based Signatures. In Advances in Cryptology-EUROCRYPT 2015; Oswald, E., Fischlin, M., Eds.; Lecture Notes in Computer Science; Springer: Berlin/Heidelberg, Germany, 2015; Volume 9056. [Google Scholar] [CrossRef]
  9. Chase, M.; Derler, D.; Goldfeder, S.; Orlandi, C.; Ramacher, S.; Rechberger, C.; Slamanig, D.; Zaverucha, G. Post-Quantum Zero-Knowledge and Signatures from Symmetric-Key Primitives. In Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security (CCS ’17), Dallas, TX, USA, 30 October–3 November 2017; Association for Computing Machinery: New York, NY, USA, 2017; pp. 1825–1842. [Google Scholar] [CrossRef]
  10. Jao, D.; De Feo, L. Towards Quantum-Resistant Cryptosystems from Supersingular Elliptic Curve Isogenies. In Post-Quantum Cryptography; Yang, B.Y., Ed.; PQCrypto 2011; Lecture Notes in Computer Science; Springer: Berlin/Heidelberg, Germany, 2011; Volume 7071. [Google Scholar] [CrossRef]
  11. Yoo, Y.; Azarderakhsh, R.; Jalali, A.; Jao, D.; Soukharev, V. A Post-quantum Digital Signature Scheme Based on Supersingular Isogenies. In Financial Cryptography and Data Security; Kiayias, A., Ed.; Lecture Notes in Computer Science; Springer: Cham, Switzerland, 2017; Volume 10322. [Google Scholar] [CrossRef]
  12. Sun, X.; Tian, H.; Wang, Y. Toward Quantum-Resistant Strong Designated Verifier Signature from Isogenies. In Proceedings of the 2012 Fourth International Conference on Intelligent Networking and Collaborative Systems, Bucharest, Romania, 19–21 September 2012; pp. 292–296. [Google Scholar] [CrossRef]
  13. Jao, D.; Soukharev, V. Isogeny-Based Quantum-Resistant Undeniable Signatures. In Post-Quantum Cryptography; Mosca, M., Ed.; Lecture Notes in Computer Science; Springer: Cham, Switzerland, 2014; Volume 8772. [Google Scholar] [CrossRef]
  14. Barreto, P.; Nascimento, A.; Oliveira, G.; Benits, W. Supersingular Isogeny Oblivious Transfer (SIOT). arXiv 2018, arXiv:1805.06589. [Google Scholar]
  15. Castryck, W.; Lange, T.; Martindale, C.; Panny, L.; Renes, J. CSIDH: An Efficient Post-Quantum Commutative Group Action. Asiacrypt 2018, LNCS 11274. pp. 395–427. Available online: https://cSIDH.isogeny.org/ (accessed on 18 November 2021).
  16. SIKE—Supersingular Isogeny Key Encapsulation. Available online: https://sike.org (accessed on 26 February 2022).
  17. Boneh, D.; Kogan, D.; Woo, K. Oblivious Pseudorandom Functions from Isogenies. In Advances in Cryptology-ASIACRYPT 2020; Moriai, S., Wang, H., Eds.; Lecture Notes in Computer Science; Springer: Cham, Switzerland, 2020; Volume 12492. [Google Scholar] [CrossRef]
  18. Joseph, H. The arithmetic of elliptic curves. In Graduate Texts in Mathematics; Springer: New York, NY, USA, 1992; Volume 106. [Google Scholar] [CrossRef]
  19. Galbraith, S.D.; Petit, C.; Shani, B.; Ti, Y.B. On the Security of Supersingular Isogeny Cryptosystems. In Advances in Cryptology—ASIACRYPT 2016; Cheon, J., Takagi, T., Eds.; Lecture Notes in Computer Science; Springer: Berlin/Heidelberg, Germany, 2016; Volume 10031. [Google Scholar] [CrossRef]
  20. Adj, G.; Cervantes-Vázquez, D.; Chi-Domínguez, J.J.; Menezes, A.; Rodríguez-Henríquez, F. On the Cost of Computing Isogenies Between Supersingular Elliptic Curves. In Selected Areas in Cryptography—SAC 2018; Cid, C., Jacobson, M., Jr., Eds.; Lecture Notes in Computer Science; Springer: Cham, Switzerland, 2019; Volume 11349. [Google Scholar] [CrossRef]
  21. Alexander, R.; Anton, S. Public-Key Cryptosystem Based on Isogenies. IACR Cryptol. Eprint Arch. 2006, 2006, 145. Available online: https://eprint.iacr.org/2006/145.pdf (accessed on 26 February 2022).
  22. Costello, C. The Case for SIKE: A Decade of the Supersingular Isogeny Problem. Cryptol. Eprint Arch. 2021. Available online: https://eprint.iacr.org/2021/543 (accessed on 26 February 2022).
  23. Diffie, W.; Hellman, M. New directions in cryptography. IEEE Trans. Inf. Theory 1976, 22, 644–654. [Google Scholar] [CrossRef] [Green Version]
  24. Costello, C.; Longa, P.; Naehrig, M. Efficient Algorithms for Supersingular Isogeny Diffie–Hellman. In Proceedings of the 36th Annual International Cryptology Conference on Advances in Cryptology—CRYPTO 2016, Santa Barbara, CA, USA, 14–18 August 2016; Springer: Berlin/Heidelberg, Germany, 2016; Volume 9814, pp. 572–601. [Google Scholar] [CrossRef]
  25. Unruh, D. Non-Interactive Zero-Knowledge Proofs in the Quantum Random Oracle Model. In Advances in Cryptology—EUROCRYPT 2015; Oswald, E., Fischlin, M., Eds.; EUROCRYPT 2015; Lecture Notes in Computer Science; Springer: Berlin/Heidelberg, Germany, 2015; Volume 9057. [Google Scholar] [CrossRef]
  26. Ambainis, A.; Rosmanis, A.; Unruh, D. Quantum Attacks on Classical Proof Systems: The Hardness of Quantum Rewinding. In Proceedings of the 2014 IEEE 55th Annual Symposium on Foundations of Computer Science (FOCS’14), IEEE Computer Society, Washington, DC, USA, 18–21 October 2014; pp. 474–483. [Google Scholar] [CrossRef] [Green Version]
  27. Dagdelen, Ö; Fischlin, M.; Gagliardoni, T. The Fiat–Shamir Transformation in a Quantum World. In Advances in Cryptology—ASIACRYPT 2013; Sako, K., Sarkar, P., Eds.; ASIACRYPT 2013; Lecture Notes in Computer Science; Springer: Berlin/Heidelberg, Germany, 2013; Volume 8270. [Google Scholar] [CrossRef]
  28. Chou, T.; Orlandi, C. The simplest protocol for oblivious transfer. In Proceedings of the International Conference on Cryptology and Information Security in Latin America, Guadalajara, Mexico, 23–26 August 2015; Springer: Cham, Switzerland, 2015; pp. 40–58. Available online: https://eprint.iacr.org/2015/267.pdf (accessed on 26 February 2022).
  29. Wagner, D. Midterm Solution. 2006. Available online: http://www.cs.berkeley.edu/~daw/teaching/cs276-s06/mtsol.ps (accessed on 26 February 2022).
  30. Reza, A.; David, J.; Brian, K.; Jason, L.; Vladimir, S.; Oleg, T. How Not to Create an Isogeny-Based PAKE; Springer: Rome, Italy, 2020. [Google Scholar] [CrossRef]
  31. Zhang, J.; Mao, J. A novel ID-based designated verifier signature scheme. Inf. Sci. 2008, 178, 766–773. [Google Scholar] [CrossRef]
  32. Huang, X.; Mu, Y.; Susilo, W.; Zhang, F. Short Designated Verifier Proxy Signature from Pairings. In Embedded and Ubiquitous Computing—EUC 2005 Workshops; Enokido, T., Yan, L., Xiao, B., Kim, D., Dai, Y., Yang, L.T., Eds.; Lecture Notes in Computer Science; Springer: Berlin/Heidelberg, Germany, 2005; Volume 3823. [Google Scholar] [CrossRef]
  33. Laguillaumie, F.; Vergnaud, D. Designated Verifier Signatures: Anonymity and Efficient Construction from Any Bilinear Map. In Security in Communication Networks; Blundo, C., Cimato, S., Eds.; Lecture Notes in Computer Science; Springer: Berlin/Heidelberg, Germany, 2005; Volume 3352. [Google Scholar] [CrossRef]
  34. Shao, Z. Strong designated verifier signature scheme: New definition and construction. IACR Cryptol. Eprint Arch. 2010, 490, 1–10. [Google Scholar]
  35. Bellovin, S.M.; Merritt, M. Encrypted key exchange: Password-based protocols secure against dictionary attacks. In Proceedings of the 1992 IEEE Computer Society Symposium on Research in Security and Privacy, Oakland, CA, USA, 4–6 May 1992; pp. 72–84. [Google Scholar] [CrossRef] [Green Version]
  36. David, P.J. Strong password-only authenticated key exchange. Sigcomm Comput. Commun. Rev. 1996, 26, 5–26. [Google Scholar] [CrossRef]
  37. Boyko, V.; MacKenzie, P.; Patel, S. Provably Secure Password-Authenticated Key Exchange Using Diffie–Hellman. In Advances in Cryptology—EUROCRYPT 2000; Preneel, B., Ed.; EUROCRYPT 2000; Lecture Notes in Computer Science; Springer: Berlin/Heidelberg, Germany, 2000; Volume 1807. [Google Scholar] [CrossRef]
  38. RFC 6124 An EAP Authentication Method Based on the Encrypted Key Exchange (EKE) Protocol. Available online: https://tools.ietf.org/html/rfc6124 (accessed on 26 February 2022).
  39. Terada, S.; Yoneyama, K. Password-Based Authenticated Key Exchange from Standard Isogeny Assumptions. In Provable Security; Steinfeld, R., Yuen, T., Eds.; ProvSec 2019; Lecture Notes in Computer Science; Springer: Cham, Switzerland, 2019; Volume 11821. [Google Scholar] [CrossRef]
  40. Taraskin, O.; Soukharev, V.; Jao, D.; LeGrow, J. Towards Isogeny-Based Password-Authenticated Key Establishment. J. Math. Cryptol. 2020, 15, 18–30. [Google Scholar] [CrossRef]
  41. Beullens, W.; Kleinjung, T.; Vercauteren, F. CSI-FiSh: Efficient Isogeny Based Signatures Through Class Group Computations. In Advances in Cryptology-ASIACRYPT 2019; Galbraith, S., Moriai, S., Eds.; Lecture Notes in Computer Science; Springer: Cham, Switzerland, 2019; Volume 11921. [Google Scholar] [CrossRef]
Figure 1. Isogeny graph walk of Alice and Bob.
Figure 1. Isogeny graph walk of Alice and Bob.
Cryptography 06 00027 g001
Figure 2. Isogeny graph walk in one round of the signing algorithm.
Figure 2. Isogeny graph walk in one round of the signing algorithm.
Cryptography 06 00027 g002
Figure 3. Isogeny graph walk during signature generation.
Figure 3. Isogeny graph walk during signature generation.
Cryptography 06 00027 g003
Figure 4. Confirmation protocol.
Figure 4. Confirmation protocol.
Cryptography 06 00027 g004
Figure 5. Disavowal protocol.
Figure 5. Disavowal protocol.
Cryptography 06 00027 g005
Table 1. SIDH scheme.
Table 1. SIDH scheme.
Setup:
prime p = A e A B e B · f ± 1
supersingular curve E ( F p 2 )
generators P A , Q A of E [ A e A ]
generators P B , Q B of E [ B e B ]
Key generation:
Alice Bob
1. skA R Z / A e A Z 1. skB R Z / B e B Z
2. S A = P A + skA Q A 2. S B = P B + skB Q B
3. ϕ A : E E A = E / S A 3. ϕ B : E E B = E / S B
4. pkA = ( E A , ϕ A ( P B ) , ϕ A ( Q B ) ) 4. pkB = ( E B , ϕ B ( P A ) , ϕ B ( Q A ) )
𝚙 𝚔 A
𝚙 𝚔 B
Secret generation:
1. S A = ϕ B ( P A ) + skA ϕ B ( Q A ) 1. S B = ϕ A ( P B ) + skB ϕ A ( Q B )
2. ϕ A : E B E A B = E / S A 2. ϕ B : E A E B A = E / S B
3. j A B = j ( E A B ) 3. j B A = j ( E B A )
Table 2. Time measurements of SIDH in seconds.
Table 2. Time measurements of SIDH in seconds.
Key GenerationSecret Generation
Alice2.432.11
Bob2.021.74
Table 3. Time measurements of IBDS in seconds.
Table 3. Time measurements of IBDS in seconds.
Key GenerationSigningVerification
2.4063.4644.48
Table 4. Time measurements of SDVS in seconds.
Table 4. Time measurements of SDVS in seconds.
Key GenerationSigningVerification
Signer2.452.02-
Verifier1.97-1.72
Table 5. Time measurements of undeniable signatures in seconds.
Table 5. Time measurements of undeniable signatures in seconds.
Key GenerationSigningConfirmationDisavowal
0.00580.0147.936.22
Table 6. Time measurements of SIOT in seconds.
Table 6. Time measurements of SIOT in seconds.
Key GenerationEncryptionDecryption
Alice2.364.17
Bob1.931.76
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Share and Cite

MDPI and ACS Style

Drzazga, B.; Krzywiecki, Ł. Review of Chosen Isogeny-Based Cryptographic Schemes. Cryptography 2022, 6, 27. https://doi.org/10.3390/cryptography6020027

AMA Style

Drzazga B, Krzywiecki Ł. Review of Chosen Isogeny-Based Cryptographic Schemes. Cryptography. 2022; 6(2):27. https://doi.org/10.3390/cryptography6020027

Chicago/Turabian Style

Drzazga, Bartosz, and Łukasz Krzywiecki. 2022. "Review of Chosen Isogeny-Based Cryptographic Schemes" Cryptography 6, no. 2: 27. https://doi.org/10.3390/cryptography6020027

Article Metrics

Back to TopTop