A summary we plan to cover

The aim of CryptoBook is to have a consolidated space for all of the mathematics required to properly learn and enjoy cryptography. The focus of any topic should be to introduce a reader to a subject in a way that is fun, engaging and with an attempt to frame it as an applied resource.

The second focus should be to cleanly implement the various topics using SageMath, so that there is a clear resource for a new reader to gain insight on how SageMath might be used to create the objects needed.

Write about what you love and this book will be a success.

Descriptions of attacks against cryptosystems are strongly encouraged, however full SageMath implementations should not be included, as this has the potential for destroying CryptoHack challenges, or making all attacks known by so many people that CTFs become a total nightmare!!

This list is **not complete** so please add to it as you see fit.

Congruences

GCD, LCM

Bézout's Theorem

Gauss' Lemma and its ten thousand corollaries

Euclid's algorithm

Modular Arithmetic

Morphisms et al.

Frobenius endomorphism

Mainly thinking things like

Prime decomposition and distribution

Primality testing

Euler's theorem

Factoring

Legendre / Jacobi symbol

Mainly thinking things like:

Groups, Rings, Fields, etc.

Abelian groups and their relationship to key-exchange

Lagrange's theorem and small subgroup attacks

Introduction to Cryptanalysis

A linear Approach to Cryptanalysis

Matsui's Best biases algorithm

A Differential Approach to Cryptanalysis

Weierstrass

Montgomery

Edwards

Counting points (Schoof's algorithm)

Complex multiplication

**Generating Elliptic Curves**

Generating curves of prime order

Generating supersingular curves Wikipedia

Generating curves of arbitary order (hard)

Sage implementation ChiCube's script

Generalization of elliptic curves

Recovering a group structure using the Jacobian

Example: genus one curves, jacobian is isomorphic to the set of points

Mumford representation of divisors

Computing the order of the Jacobian

Hyper Metroid example

Basic Concepts

Confidentiality, Integrity etc

Encryption, Key generation

Attacker goals + Attack games

Defining Security - Perfect security, semantic security

Proofs of security + Security Reductions

Textbook protocol

Padding

Bleichenbacher's Attack

OAEP

Coppersmith

Håstad's Attack

Franklin-Reiter Attack

Wiener's Attack

RSA's Integer fattorization Attacks

Fermat Factoring Attack

Quadratic Sieve Attack

Number Fielde Sieve Attack

RSA Digital Signature Scheme

Timing Attacks on RSA

RSA with Chinese Remainder Theorem (CRT)

Textbook protocol

Textbook protocol

ElGamal Digital Signature Scheme

Textbook protocol

Strong primes, and why

ECDSA

EdDSA

XOR and its properties

XOR as One Time Pad

Generalized One Time Pad

**Block Ciphers**

AES

**Stream Ciphers**

Affine

RC4

Introduction

Trapdoor Functions

MD family

SHA family

BLAKE Hash family

// TODO: Insert Attacks

Isogenies

Isogeny graphs

Torsion poins

SIDH

SIKE

BIKE

Schnorr proof of knowledge for dlog

Core definitions

Proof of equality of dlog

Proof of knowledge of a group homomorphism preimage

Definition of Formal Verification

Uses of Formal Verification

Handshake protocols, flawed protocols

The external threat: Man-In-The-Middle attacks

Attacking the (flawed) Needham-Shroeder public key exchange protocol

Cryptanalytic Attacks on RSA (Yan, Springer, 2008)

Algorithmic Cryptanalysis (Antoine Joux, CRC Press, 2009)

Algebraic Cryptanalysis (Brad, Springer, 2009)

RC4 stream Cipher and its variants (H. Rosen, CRC Press, 2013)

Formal Models and Techniques for Analyzing Security Protocols (Cortier, IOS Press, 2011)

Algebraic Shift Register Sequences (Goresky && Klapper, Cambridge Press, 2012)

The Modelling and Analysis of Security Protocols (Schneider, Pearson, 2000)

Secure Transaction Protocol Analysis (Zhang && Chen, Springer, 2008)