[HN Gopher] Cryptography 101 with Alfred Menezes
___________________________________________________________________
Cryptography 101 with Alfred Menezes
Author : nmadden
Score : 103 points
Date : 2025-11-03 14:12 UTC (4 days ago)
(HTM) web link (cryptography101.ca)
(TXT) w3m dump (cryptography101.ca)
| teleforce wrote:
| Alfred Menezes has also written a Handbook of Applied
| cryptography that can be accessed and download for free:
|
| https://cacr.uwaterloo.ca/hac/
| commandersaki wrote:
| And co-authored the "another look" papers at
| https://anotherlook.ca/
| zavec wrote:
| Oh hey I took his crypto class in fourth year! Fantastic prof, I
| should check this out to refresh my memory.
| danhau wrote:
| What I would like, but haven't found yet, is a cheat sheet on
| what up to date encryption method or algorithm one should use for
| whatever need. A kind of requirement -> algorithm dictionary.
|
| Like, I need to authenticate that a client is a known identity.
| What algo? How to use it? What to avoid? I need to sign a message
| or document. How? I need to verify said message. How? I need to
| store passwords. How?
|
| I know some crypto, but discovering and learning about them is a
| bit of a pain. For how important crypto is, you'd think someone
| would have bothered to teach developers how to choose and deploy
| these algorithms properly.
| pona-a wrote:
| If your needs are this simple, you may be better served by an
| opinionated crypto library like Monocypher [0] or libsodium
| [1]. Just look at the latter's FAQ page and you'll see they're
| taking your approach targeting developers, not cryptographers.
|
| They'll provide you one blessed algorithm for every primitive
| with secure alternatives if your use-case demands them.
| XChaCha20-Poly1305 for encryption, EdDSA for signatures, X25519
| for key exchange, BLAKE2b for a hash, Argon2i for a KDF.
|
| [0] https://monocypher.org/
|
| [1] https://doc.libsodium.org/doc/quickstart
| chocolatkey wrote:
| Google's Tink crypto library had a slightly technical page to
| help with that: https://developers.google.com/tink/choose-
| primitive
| hiisukun wrote:
| It's not new, and some people would disagree on some minor
| elements -- but a good place to start was regularly this blog
| from approximately Matasano/NCC Group members, called
| Cryptographic Right Answers [1]. It's very clear, gives
| straight forward answers in clear fashion -- and with multiple
| opinions often aligning.
|
| It was updated a few times, I wonder if the equivalent exists
| for PQ?
|
| Edit/Update: Found the PQ one @ [2], definitely check it out!
|
| Maybe I'm mis-remembering, but perhaps the most controversial
| element was the regular recommendation of AES-GCM. It certainly
| has excellent security properties, but also a certain
| brittleness re: nonces.
|
| [1] https://www.latacora.com/blog/2018/04/03/cryptographic-
| right... [2] https://www.latacora.com/blog/2024/07/29/crypto-
| right-answer...
| thadt wrote:
| > Random IDs > Latacora, 2018: Use 256-bit random numbers.
|
| > Latacora, 2024: You should get 100 lava lamps, point a
| camera to them and use the frames as seed for a PRNG.
|
| Man, is my boss gonna be surprised what's getting requisition
| ordered this morning.
| michaelscott wrote:
| This is how Cloudflare does (did?) PRNG
| michaelscott wrote:
| I think this is a primary reason why there is no real
| "cheatsheet" for this stuff. The application of a given algo
| (and even what types of inputs you provide) are heavily
| dependent on the detailed specifics of your use case and how
| you apply them
| some_furry wrote:
| > Like, I need to authenticate that a client is a known
| identity. What algo?
|
| In this case, you're asking the wrong question.
|
| When people say "what algo?" in such a context, the answers
| will be flavored as "Ed25519 vs secp256k1 vs RSA-PKCS1v1.5"
| when you should _first_ be asking "what level of abstraction
| am I dealing with?" and "what are the constraints?"
|
| Like, maybe "algo" isn't even a relevant concern.
|
| If I were designing a simple token-based auth scheme today, I'd
| reach for PASETO. Unless I need interop with a third-party
| provider, who almost universally use JWTs and prevent me from
| having any say or choice in the matter.
|
| With PASETO, you don't need to know, or even care, about "what
| algo?" You only need to consider mode, which is more of a use-
| case question.
|
| But with JWTs, you not only have to care about "what algo?"
| your system needs to be very delicate in how it processes them.
| https://www.howmanydayssinceajwtalgnonevuln.com
|
| I cannot imagine proactively writing a cheat sheet for every
| possible use case. You might be tempted to use AI to solve this
| problem on demand, but the cost of a hallucination here is
| pretty high.
|
| If you find yourself regularly asking this question, I'd
| recommend just hiring a cryptography consultant.
| baby wrote:
| I like that it's called "cryptography 101" but only has post-
| quantum schemes, this is cool :)
| throw0101d wrote:
| Something I've been curious about lately:
|
| With symmetric algorithms, e.g. AES, and modes of operation, is
| there a "best" one? Currently GCM seems to be quite popular. Is
| there something (an AEAD?) better? Now that the patent of OCB(3?)
| is expired, is it worth changing?
| some_furry wrote:
| I wrote a deep dive into this in 2020, but not much has changed
| since then.
|
| https://soatok.blog/2020/07/12/comparison-of-symmetric-encry...
|
| EDIT: Actually, the parts about OPAQUE are no longer relevant
| because they changed the protocol before the RFC was final to
| not need encryption, but that was just an example of where
| you'd make this sort of trade-off decision, so the rest of the
| article is still relevant.
| thadt wrote:
| Oh hey, the AEGIS poll looks like it's due _today_ [1].
|
| Committing, better performance, random nonces - let's go.
|
| [1] https://datatracker.ietf.org/doc/draft-irtf-cfrg-aegis-
| aead
| some_furry wrote:
| Oh sweet.
| Maksadbek wrote:
| It always astonishes me how much useful information you can find
| on internet being publicly available. You just need a willing to
| learn.
___________________________________________________________________
(page generated 2025-11-07 23:02 UTC)