What is the purpose of this article?
I've been for a long time an "applied cryptography passive enthusiast", following various blogs and reading various introductory articles on the subject, but I have newer dug deeper or tried to do anything myself (hence the qualification "passive").
However, since a year or so, I've started playing, first in my mind then in proof-of-concept code, with various ideas, especially related to long term encryption or encryption in automation scenarios, thus leaning towards "applied cryptography active hobbyist".
About at the same time, I've started following closer some of the most prominent public writers on the topic. They might not necessarily be cryptographers themselves, however they are able to translate the various primitives, schemes, constructs, and their properties, into plain English.
Thus, for anyone seriously wanting to start experimenting with cryptography (which has nothing to do with "crypto", that is yet another alias for ponzi-schemes), I wanted to highlight some of these information sources.
Following that, I will also list a few articles that I consider are good introductory topics, or generic enough to be applicable in a broader sense.
Needless to say, I would consider this article as a "live document", and will be updating it with new sources or article as I find them.
Happy learning and experimenting!
Informational and learning resources
Matthew Green
Bruce Schneier
Filippo Valsorda
Jason Donenfeld
- https://www.zx2c4.com/
- https://github.com/zx2c4
- creator of Wireguard and pass;
Frank Denis
- https://00f.net/
- https://github.com/jedisct1
- creator of libsodium and minisign;
Loup Vaillant
Neil Madden
Tony Arcieri
- https://tonyarcieri.com/
- https://github.com/tarcieri
- contributor to RustCrypto;
Soatok
Cendyne
Wladimir Palant
- https://palant.info/
- https://github.com/palant
- creator of Adblock Plus and Plain-free-Passwords;
Laurens Van Houtven
Colin Percival
- https://www.daemonology.net/
- https://github.com/cperciva
- creator of TarSnap and scrypt;
Anyone I've missed?
I bet there are many more other invaluable sources of information on the topic. However, at the moment the ones listed above are the ones I follow, and the ones I can warmly recommend.
Highly recommended articles
by Loup Vaillant
Cryptography is not Magic
(published 2020);- "Cryptography has rules, which are both simpler and more fundamental than we might think."
Rolling Your Own Crypto
(published 2017);- libraries --
libsodium
,TweetNaCl
; - symmetric encryption -- ChaCha20;
- integrity (MAC) -- Poly1305;
- hashing -- Blake2b;
- passwords --
scrypt
, Argon2i; - asymmetric encryption -- Curve25519;
- "level 4, inventing crypto" -- "I have not reached this level, nor do I intend to.";
- libraries --
128 Bits of Security and 128 Bits of Security: Know the Difference
(published 2020);How I implemented my own crypto
(published 2017);
by Filippo Valsorda
The scrypt parameters
(published 2017);Avoid the randomness from the sky
(published 2023);Age and authenticated encryption
(published 2022);I'm giving up on PGP
(published 2016);
by Soatok
Designing New Cryptography for Non-Standard Threat Models
(published 2020);- use ChaCha20, Blake3;
- encrypt-then-MAC;
Comparison of Symmetric Encryption Methods
(published 2020);Cryptographic Agility and Superior Alternatives
(published 2022);Why AES-GCM Sucks
(published 2020);Database Cryptography Fur the Rest of Us
(published 2023);What We Do in the /etc/shadow -- Cryptography with Passwords
(published 2022);Guidance for Choosing an Elliptic Curve Signature Algorithm in 2022
(published 2022);Understanding HKDF
(published 2021);Programmers Don't Understand Hash Functions
(published 2021);Canonicalization Attacks Against MACs and Signatures
(published 2021);
by Cendyne
Crypto Agility and Post Quantum
(published 2022);Do not recommend: User Provided Primary Keys
(published 2022);A Deep dive into Ed25519 Signatures
(published 2022);Ed25519 Deep Dive Addendum
(published 2022);
by Laurens Van Houtven
Cryptographic Right Answers [by Laurens Van Houtven]
(published 2018);- libraries --
libsodium
,NaCL
; - symmetric encryption -- XSalsa20;
- integrity (MAC) -- Poly1305;
- hashing -- SHA-2;
- passwords --
scrypt
, Argon2; - asymmetric encryption -- Curve25519;
- asymmetric signatures -- Curve25519;
- DHE -- Curve25519;
- libraries --
A Child's Garden of Inter-Service Authentication Schemes
(published 2018);
by Colin Percival
Cryptography is a science, not engineering
(published 2013);Cryptographic Right Answers [by Colin Percival]
(published 2009);
by Neil Madden
I still don't really get 'hash shucking'
(published 2023);On PBKDF2 iterations
(published 2023);
by Moxie Marlinspike
The Cryptographic Doom Principle
(published 2011);GPG And Me
(published 2015);
by Tony Arcieri
All the crypto code you've ever written is probably broken
(published 2012);- use AEAD (Authenticated Encryption with Associated Data);
- encrypt-then-MAC;
by Thomas Ptacek
- Cryptographic Right Answers [by Thomas Ptacek]
(published 2015);
by Nathan McCarty
by Ron Bowes
- Everything you need to know about hash length extension attacks
(published 2012);
by Steve Thomas
- Minimum Password Settings
(published 2022);
Leads at Wikipedia
All these are good starting points for further exploration. However read the reference material.
Generic concepts
- Cryptographic hash function
- Stream cipher;
- Block cipher
- Key derivation function
- Message authentication code
- Merkle tree
- Digital signature
- All-or-nothing transform
Algorithms
- hashing:
- symmetric encryption:
- asymmetric encryption (PKI):