# Learn Cryptography: From Beginner to Expert

February 14, 2018

This course consists of ~25 tutorials to learn cryptography. You can think of this course as a “Free Online Nano Book”. You’ll learn cryptographic algorithms, including those currently in use such as the RSA algorithm (used for secure digital communication) and Digital Signatures Algorithm (used for digital signatures). Everything is 100% free.

This course starts out by describing what cryptography is, its various applications, branches and types of algorithms. Then, we’ll see some simple encryption techniques (doesn’t require any background in number theory) such as Caesar Cipher and Playfair Cipher. In sections 3 and 4, we will take a detailed look at modern cryptography algorithms for secure communication (including the required mathematics and number theory background). In section 5, we will look at other applications of cryptography such as random number generation, hash functions and password salting. In the last (bonus) section, we’ll discuss human behavioral aspects of computer security and famous unsolved cryptography puzzles (including hidden treasures and unsolved murders!)

*Other versions*: Learn Cryptography in 2 weeks is a less comprehensive version with ~15 tutorials instead of ~25 (this course is a superset). Modern Cryptography: From Beginner to Expert is another version which focuses on modern cryptography only (again, ~15 tutorials instead of ~25, this course is a superset).

**Subscribe** to add this course to the top of your Home Page. Get started with the first tutorial below.

# Cryptography and Cryptosystems

What is cryptography and what is it used for? What does a cryptosystem look like? What are its components, and who are the parties involved? What are its design objectives? What is the difference between symmetric key cryptography and public key cryptography? All of these questions will be answered in this section.

- What is Cryptography? Why Cryptography?
- Cryptosystems and their Components, Design Objectives and Basis for Security

# Symmetric Key Cryptography

It’s time to take a look at some simple cryptography algorithms. These algorithms are not used anymore since they are not secure, but each of them was used centuries ago for communicating sensitive information including military strategy during wars. Moreover, these algorithms are a great way to get started with cryptography because its possible to work out examples by hand, a luxury which modern algorithms do not provide.

- Caesar Cipher, Shift Ciphers and Substitution Ciphers (and Frequency Attacks!)
- Vigenère’s Cipher
- The Playfair Cipher
- The One-Time Pad

# Modern Symmetric Key Cryptography

In this section, we’ll take a look at modern symmetric key algorithms. The first two tutorials, **block ciphers** and **feistel network**, discuss the overall structure of these algorithms. The next three tutorials discuss specific algorithms in detail, each introducing us to a new algorithm which is currently in use - **Triple DES**, **Advanced Encryption Standard**, and **Blowfish**.

- Block Ciphers and Modes of Operation
- Feistel Ciphers (or Feistel Network)
- A Detailed Description of DES and 3DES Algorithms (Data Encryption Standard and Triple DES)
- The Advanced Encryption Standard (AES) Algorithm
- Blowfish: The first well-known encryption algorithm in public domain

# Public Key Cryptography (and Digital Signatures)

In this section, we’ll take a look at public key cryptography. These algorithms form the backbone of online digital communication. These algorithms make extensive use of number theory, and the required background in number theory is included in the tutorials.

The **RSA algorithm** allows communication between two people without the requirement that the two people establish a shared secret key. **Diffie-Hellman Key Exchange** is used to establishing a shared secret key so that symmetric key algorithms we discussed in the previous section can be used thereafter. **Digital Signature Algorithm** is used for, well, digital signatures.

- The RSA Encryption Algorithm: A Comprehensive Introduction (from Scratch) with Examples
- Discrete Logarithms, The ElGamal Cryptosystem and Diffie-Hellman Key Exchange
- Digital Signatures: ElGamal Signature Scheme and Digital Signature Algorithm (and Birthday Attacks)
- Public Key Infrastructure

# Random Number Generation, Hash Functions, Password Salting

How are random numbers generated? How can we efficiently check whether or not a large document was tampered with? What kinds of attacks can be done to guess passwords? How does password salting protect against them? What makes current computer systems and digital information vulnerable given the mathematical and computational guarantees of their unbreakability?

- How Random Number Generation works, with Algorithms and Examples
- Hash Functions and their Role in Cryptography (and the SHA1 Algorithm)
- An Overview of SHA-2 and MD5 Algorithms
- Dictionary Attacks, Rainbow Table Attacks and how Password Salting defends against them
- Computer Security is more than Encryption

# Famous Cryptography Examples: World War, Hidden Treasures, and Unsolved Murders

The first tutorial describes how Britain was able to break Enigma, the encryption machine being used by Germans and allies for communication during World War II, thereby learning their military strategies and plans in advance. The last tutorial discusses some famous unsolved ciphers.