Cryptography Study Notes

Steven Gordon
School of Engineering and Technology
CQUniversity Australia
This book is available as:
Crypto 20.03
14 May 2020 (r1863)

List of Figures
List of Figures
List of Tables
List of Tables
I  Introduction
1 Introduction
2 Cryptography Concepts and Terminology
 2.1 Security Concepts
 2.2 Cryptography Concepts
 2.3 Cryptography Notation and Terminology
II  Tools and Techniques
3 Software Tools
 3.1 Linux and Ubuntu
 3.2 OpenSSL
 3.3 Python
4 Statistics for Communications and Security
 4.1 Binary Values
 4.2 Counting
 4.3 Permutations and Combinations
 4.4 Probability
 4.5 Collisions
5 Number Theory
 5.1 Divisibility and Primes
 5.2 Modular Arithmetic
 5.3 Fermat’s and Euler’s Theorems
 5.4 Discrete Logarithms
 5.5 Computationally Hard Problems
III  Symmetric Key Encryption
6 Classical Ciphers
 6.1 Caesar Cipher
 6.2 Monoalphabetic Ciphers
 6.3 Playfair Cipher
 6.4 Polyalphabetic Ciphers
 6.5 Vigenère Cipher
 6.6 Vernam Cipher
 6.7 One Time Pad
 6.8 Transposition Techniques
7 Encryption and Attacks
 7.1 Encryption Building Blocks
 7.2 Attacks on Encryption
 7.3 Block Cipher Design Principles
 7.4 Stream Cipher Design Principles
 7.5 Example: Brute Force on DES
 7.6 Example: Brute Force on AES
 7.7 Example: Meet-in-the-Middle Attack
 7.8 Example: Cryptanalysis on Triple-DES and AES
8 Data Encryption Standard
 8.1 Overview of the Data Encryption Standard (DES)
 8.2 Simplified-DES
 8.3 Details of DES
 8.4 DES in OpenSSL
 8.5 DES in Python
9 Advanced Encryption Standard
 9.1 Overview of AES
 9.2 Simplified-AES
 9.3 Simplified-AES Example
 9.4 Details of AES
 9.5 AES in OpenSSL
 9.6 AES in Python
10 Pseudorandom Number Generators
11 Block Cipher Modes of Operation
 11.1 Block Ciphers with Multiple Blocks
 11.2 Electronic Code Book
 11.3 Cipher Block Chaining Mode
 11.4 Cipher Feedback Mode
 11.5 Output Feedback Mode
 11.6 Counter Mode
 11.7 Feedback Characteristics of Modes
 11.8 XTS-AES
IV  Public Key Cryptography
12 Public Key Cryptography
 12.1 Concepts of Public Key Cryptography
13 RSA
 13.1 RSA Algorithm
 13.2 Analysis of RSA
 13.3 Implementations of RSA
 13.4 RSA in OpenSSL
 13.5 RSA in Python
14 Diffie–Hellman Key Exchange
 14.1 Diffie–Hellman Key Exchange Algorithm
 14.2 Analysis of DHKE
 14.3 Man-in-the-Middle Attack on DHKE
 14.4 Implementations of DHKE
 14.5 Diffie–Hellman in OpenSSL
 14.6 DHKE in Python
15 Elliptic Curve Cryptography
 15.1 Overview of Elliptic Curve Cryptography
 15.2 Applications of Elliptic Curve Cryptography
 15.3 Elliptic Curve Cryptography in OpenSSL
V  Authentication
16 Hash Functions and MACs
 16.1 Introduction to Hash Functions
 16.2 Properties of Cryptographic Hash Functions
 16.3 Introduction to Message Authentication Codes
17 Authentication and Data Integrity
 17.1 Aims of Authentication
 17.2 Authentication with Symmetric Key Encryption
 17.3 Authentication with Hash Functions
 17.4 Authentication with MACs
 17.5 Digital Signatures
VI  Key Management
18 Key Distribution and Management
 18.1 Recommended Key Sizes
19 Digital Certificates
VII  Advances in Cryptography
20 Quantum Computing and Cryptography
 20.1 Quantum Computing
 20.2 Quantum Algorithms
 20.3 Issues in Quantum Computing
 20.4 Quantum Cryptography
 20.5 Cryptography in the Quantum Era
VIII  Additional Resources
A Cryptography Assumptions and Principles
 A.1 Assumptions
 A.2 Principles
B Data Formats
 B.1 Common Data Formats
 B.2 Conversions using Linux
 B.3 Conversions using Python
C Organisations and People in Cryptography
 C.1 Organisations in Cryptography and Security
 C.2 People in Cryptography and Security
D Versions of this Book