-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathintroduction.tex
More file actions
31 lines (22 loc) · 2.66 KB
/
Copy pathintroduction.tex
File metadata and controls
31 lines (22 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
\documentclass[main.tex]{subfiles}
\begin{document}
\chapter*{Introduction}
\addcontentsline{toc}{chapter}{Introduction}
Existing software implementations of elliptic curves generally fall into two categories.
On one end, production-grade cryptographic libraries (e.g. OpenSSL, libsodium, libsecp256k1) are highly optimized for specific standardized elliptic curves.
While efficient, these implementations are rigid, difficult to modify, and unsuited for experimentation with custom curve parameters or non-standard fields.
On the other end, computer algebra systems (e.g. SageMath, MAGMA, PARI/GP) offer immense flexibility for mathematical exploration, but are typically interpreted and therefore slower, making them unsuited for systems programming or integration into high-performance applications.
This reveals a gap for a middle-ground solution that combines the performance, type-safety, and memory-safety of a compiled language with the flexibility to support different curve equations, field definitions, and coordinate systems.
Existing attempts at generic implementations often rely on complex dependency trees.
A zero-dependency implementation would improve portability, provide full educational transparency down to low-level mathematical primitives, and minimize exposure to software supply-chain risks.
This thesis has two main objectives.
First, it provides a ground-up explanation of the mathematics behind elliptic curves.
Second, it translates these mathematical concepts into a generic elliptic curve library written in Rust, a compiled language whose strong memory-safety guarantees, expressive type system, and support for zero-cost abstractions make it a promising candidate for a performant generic implementation.
In doing so, this work explores how well Rust's type system can enforce algebraic rules at compile-time.
These objectives lead to the following research questions:
\begin{enumerate}
\item \label{research_question_1} To what extent can a generic software architecture unify the diverse mathematical models surrounding elliptic curves? Where do mathematical differences require specialized implementations that limit code reuse?
\item \label{research_question_2} How does the performance of a generic implementation compare to specialized implementations for standard elliptic curves, and is the performance sufficient for general-purpose cryptographic applications?
\end{enumerate}
This thesis provides an accessible entry point to elliptic curves for computer science students and software engineers, building on advanced high-school mathematics and basic programming skills while assuming no background in cryptography, abstract algebra, or number theory.
\end{document}