I think crypto has done a particularly bad job of providing accessible materials, historically, and has had a terrible attitude towards doing so. Things are changing, and that's nice.
I think crypto has done a particularly bad job of providing accessible materials, historically, and has had a terrible attitude towards doing so. Things are changing, and that's nice.
I disagree.
The "crypto is hard" saying is there for a reason. It is scarily easy to make a crypto-breaking mistake in a simple looking piece of code.
Yes people need to know "how to make smart crypto decisions", but when you are dealing with sysadmins or other end-users, I put it to you that they could not care less about the mathematical theory, what they really want/need to know is "what settings should I be using with $insert_name_of_crypto_library in my config file".
Let me put it to you another way...
If we extend your theory, then we would have to teach the world basic chemistry about Sodium hypochlorite so that they can make "smart decisions" about whether or not to drink a bottle of bleach.
But maybe its just simpler to use the "crypto library" approach and stick a couple of globally recognised scary looking icons on the bottle along with a short paragraph of generic text in the local language ?
When I was in high school, they did. Is that not the case anymore?
But as a society, we stand to benefit from educating people. Someone has to actually build the off-the-shelf crypto, right? So if strictly everybody is told "nah, don't roll your own", who's going to advance the field?
My point is that we should facilitate people understanding things. Sure, this may push some people to figure "meh, I know everything, let me just roll my own" and proceed to build something buggy. But that happens anyway.
> Yes people need to know "how to make smart crypto decisions", but when you are dealing with sysadmins or other end-users, I put it to you that they could not care less about the mathematical theory, what they really want/need to know is "what settings should I be using with $insert_name_of_crypto_library in my config file".
I'm a sysadmin and very much like to know how the things I deploy and manage work, so I can make decisions about things. That doesn't mean I'm out here writing my own OS or anything.
Also, I think being educated allows people to be less susceptible to snake-oil salesmen and the like.
A good current-day example is the debate about cryptography backdoors. Maybe if more people understood how things worked, they wouldn't keep parroting the line of "nothing to hide [from the government]", because they'd understand that bad guys are extremely likely to have that very same access.
I'm sorry but I don't buy that argument.
The main problem with that line of argument is where do you stop.
I mean sure, its great to "educate people" but in the end each person only has so many hours in the day. They also have other constraints on their time (jobs, families etc.).
If we take your argument to its logical conclusion then you will tell me that I cannot consider visiting a Chinese Restaurant unless I have educated myself by learning Chinese and the intricacies of Chinese cuisine and cooking techniques so then I can make "smart decisions" about what I eat for dinner when all I really want is some roast duck and some steamed prawn dumplings ?
Sheesh.
I'm not talking about forcing education on anyone, and preventing them from doing things if they're uneducated.
Rather, I'm all for making education easily available. Sure, if you want to roll your own crypto or go to a Chinese restaurant without learning about those things, go ahead. I have absolutely no problem with that.
My point is that education about those (and really, any) topics shouldn't be hard to come by if you're interested.
That doesn't mean that you should have to pass a Chinese culture exam in order to be allowed in a restaurant.
But if you're curious about Chinese cuisine, it's better if you don't have to jump through hoops to learn about it, or have to visit 10000 restaurants for 10 years, so you can learn about it through "trial and error".
---
edit:
The specific line your first comment cited from its parent is, emphasis mine:
>> people have said "don't roll your own crypto" - but really, that's stupid. What we need is accessible information to explain cryptography to people, so they know how to make smart crypto decisions
This is what I'm replying to. Easy access doesn't mean forcing anyone to learn anything.
Despite access being available most "bad guys" / people wanting to talk to one use popular platforms just like "good guys." Big platforms are typically easier to use and have a lot of other people already on it. It's not about what people have access to, it is what people use.
Probably the best advice for using crypto is to use algorithms for what they were intended. Which will require some reading and the materials aren't as accessible as they ought to be.
If I could expand our traditional warning a little bit, I might say something like this:
If you roll your own crypto, you're going to make mistakes. That's fine; mistakes are how we learn. But crypto mistakes tend to be invisible, and your code will appear to work even when it has no security. So if you want to learn crypto, you need to find a way to get feedback about your invisible mistakes.