The goal of this lecture was to give the audience an introduction to some of the primitives that can be found in the toolbox of a cryptographer.
The slides contain some naïve implementations of various primitives implemented in the Python programming language to show to the audience that the mathematics behind some of the most used primitives in protocols such as TLS is not that difficult to understand, but with a reminder to the audience that the devil is in the detail.
We walked over the following topics during the presentation:
- Random number generation: /dev/random and /dev/urandom on UNIX based operating systems.
- The concept of “bits of security.”
- How exclusive-or (xor) works.
- Hash functions and Key Derivation Functions (KDF).
- Secret key cryptography: the Advanced Encryption Standard (AES) and the different block cipher modes of operation.
- Public key cryptography: Diffie-Hellman, RSA, x25519, and ed25519.
- Different implementations of cryptographic protocols: PGP, TLS, OTR, and Signal.
- A short introduction to Post-Quantum Cryptography and its impact on the current cryptographic protocols.