Title: Endomorphism Rings in Cryptography
Description: Modern communications heavily rely on cryptography to ensure data integrity and privacy. Over the past two decades, very efficient, secure, and featureful cryptographic schemes have been built on top of abelian varieties defined over finite fields. This thesis contributes to several computational aspects of ordinary abelian varieties related to their endomorphism ring structure.

This structure plays a crucial role in the construction of abelian varieties with desirable properties. For instance, pairings have recently enabled many advanced cryptographic primitives; generating abelian varieties endowed with efficient pairings requires selecting suitable endomorphism rings, and we show that more such rings can be used than expected.

We also address the inverse problem, that of computing the endomorphism ring of a prescribed abelian variety, which has several applications of its own. Prior state-of-the-art methods could only solve this problem in exponential time, and we design several algorithms of subexponential complexity for solving it in the ordinary case.

For elliptic curves, our algorithms are very effective and we demonstrate their practicality by solving large problems that were previously intractable. Additionally, we rigorously bound the complexity of our main algorithm assuming solely the extended Riemann hypothesis. As an alternative to one of our subroutines, we also consider a generalization of the subset sum problem in finite groups, and show how it can be solved using little memory.

Finally, we generalize our method to higher-dimensional abelian varieties, for which we rely on further heuristic assumptions. Practically speaking, we develop a library enabling the computation of isogenies between abelian varieties; using this important building block in our main algorithm, we apply our generalized method to compute several illustrative and record examples.
Subjects: abelian varieties, isogenies, complex multiplication, endomorphism rings