This repository provides a high-level introduction to cryptography, referencing classic and modern resources. The goal is to offer a structured overview of the field for students, engineers, and enthusiasts, before diving into more advanced topics like constant-time implementations, side-channel resistance, and post-quantum cryptography (PQC).
-
Handbook of Applied Cryptography (HAC) – A foundational reference by Menezes, van Oorschot, and Vanstone: HAC PDF
-
Cryptography 101 – An accessible introduction to the basics of cryptography:
Cryptography is the science of secure communication in the presence of adversaries. It provides the tools to ensure confidentiality, integrity, authenticity, and non-repudiation in digital systems.
- Confidentiality – Preventing unauthorized access to information.
- Integrity – Ensuring information is not altered in transit or storage.
- Authentication – Verifying the identity of communicating parties.
- Non-repudiation – Preventing denial of participation in a communication.
- Symmetric cryptography – Encryption and decryption with the same secret key.
- Asymmetric cryptography (Public-Key) – Using mathematically related key pairs.
- Cryptographic hash functions – One-way functions mapping arbitrary input to fixed-length output.
- Digital signatures – Providing authenticity and integrity using asymmetric keys.
- Key exchange protocols – Establishing shared secrets over insecure channels.
- Secure communication protocols (TLS, SSH, IPsec)
- Authentication systems (password hashing, digital certificates)
- Data protection (disk encryption, file integrity)
- Blockchain and cryptocurrencies
This repository is organized into multiple sections:
- Introduction (this document)
- Constant-Time Implementations – Why timing leaks matter, and coding practices to avoid them.
- Side-Channel Attacks – Power, EM, timing, and cache-based attacks.
- Post-Quantum Cryptography (PQC) – Algorithms designed to resist quantum adversaries.
Each section will include explanations, references, and where relevant, practical examples.
This repository is a work in progress. Contributions, corrections, and discussions are welcome.