Crypto Catalog
We have seen significant breakthroughs in cryptography over the last 50 years and many advances in the field of security & privacy. In fact, we see an amazing number of cryptography-related research articles come out every year. We hope to make this kind of research easier; for example, in helping to reference the right works.
Since some cryptographic building blocks have become common knowledge under cryptographers, it is not always immediately clear which work to reference for attribution. For example, some papers cite the original paper where the cryptosystem was published, others cite a survey paper or book that discusses the cryptosystem in detail, and some simply cite another work that lays out the cryptosystem in short.
The aim of this book is to keep a clear list of references belonging to cryptographic building blocks. The book will cite the original work, but also prevalent works that analyze their security, among others. As a second aim, this book will offer a consistent notation between different building blocks.
This book is a collaborative effort. If you spot any typos or if you have any additions, please do not hesitate to make a pull request! In addition, if you find any mistakes or inconsistencies that require some discussion, please open an issue. All help is appreciated!
Computational hardness assumptions
Decisional Diffie-Hellman (DDH)
Asymmetric cryptosystems
Also: public-key cryptography.
An asymmetric cryptosystem defines the following operations:
- Setup: Any operation that describes prerequisites for the cryptosystem, for example the construction of a special group.
- KeyGen\((\lambda) \mapsto \langle \mathit{pk}, \mathit{sk} \rangle\): Generates a public-secret key pair used to encrypt and decrypt.
- Encrypt\((m, \mathit{pk}) \mapsto c\): Encrypts a message using the public key into a ciphertext.
- Decrypt\((c, \mathit{pk}) \mapsto m\): Decrypts a ciphertext using the secret key to recover the plaintext.
Symbol definitions
- \(\lambda\) - security parameter
- \(\mathit{pk}\) - public key
- \(\mathit{sk}\) - secret key
- \(m\) - plaintext
- \(c\) - ciphertext
ElGamal cryptosystem
The ElGamal cryptosystem was first proposed by Taher ElGamal in 1984 [DBLP:conf/crypto/Gamal84]. It is defined over a (sub)group \(\mathbb{G}\) in which the DDH assumption is assumed to hold.
- Setup:
- KeyGen\((\lambda) \mapsto \langle \mathit{pk}, \mathit{sk} \rangle\):
- Encrypt\((m, \mathit{pk}) \mapsto c\):
- Decrypt\((c, \mathit{pk}) \mapsto m\):
Symbol definitions
- \(q\) - the order \(|\mathbb{G}|\) of the (sub)group
- \(\lambda\) - security parameter
- \(\mathit{pk} \in \mathbb{G}\) - public key
- \(\mathit{sk} \in \mathbb{Z}_q\) - secret key
- \(m \in \mathbb{G}\) - plaintext
- \(c \in \mathbb{G}\) - ciphertext