What's harder is systems security, which you can't just abstract away into a library.
Unfortunately, it appears that you are not at all doomed if you don't know security well. I say "unfortunately" because I'd rather have fewer secure products than the massive array of insecure products we enjoy today.
I think it's kind of like cars and the corresponding (lack of) traffic & vehicle safety rules a century ago: right now it's everybody for themselves, but what you really need are rules that encourage those in a position to cause improvement to actually improve.
Developers like us and firms that employ them need to be liable for security exploits - preferably with good enforcement with many small fines rather than a few "examples" that get the book thrown at them. And hackers, even if dubiously motivated, shouldn't be driven underground by punitive measures because that causes a really unhealthy head-in-the-sand dynamic.
Is it that much to ask that a company that large performs a security audit quarterly?
Absolutely not. WhatsApp has a history of poor security yet it is a wildly successful startup.
Maybe it is people's false expectations, that what ever I send with my smartphone is secure.
So yes, clearly security is just not a priority for that product.
1. You are not smart enough, so don't try to be clever. 2. Use off the shelf audited tools, implementations and protocols.
And that is ... while I admit that there is chance for "any crypto product/expert to be compromised" I distrust my brain to get everything right way more than that.
*Disclaimer - good enough for ensuring sexted stuff remains private, not good enough for nuclear launch codes.
But, if you are a startup, just starting I mean, I don't think you need to be a security guru at all. Whatsapp started sending messages in plain text and look how many users they got. That's because users didn't matter about security until the company was so big that security became a real threat.
Everyone should know the basics, and should know enough to know when to consult someone else or learn the not-so-basics. They should also know the key rules:
* Security should never be an afterthought unless you are doing proof-of-concept development and even then as soon as you move from PoC to prototype/alpha then relevant security should be baked in to the design
* Relevant is the key word above. Everyone should know when security is needed/desirable. Not being aware that bad security is a problem is not acceptable these days, if it ever was
* Don't try be clever and roll your own
* Don't be lazy or NIHy and roll your own because you have trouble integrating with something else
* Get someone else to review the design and code occasionally, how-ever informally - mistakes will be made, particularly in security, and finding your own is sometimes more difficult than finding someone else's. Also your users won't find security issues like they will easily spot functionality ones.
* Don't claim any security claim that you can't definitively back up. You make the rest of us developers look bad when you get called out on the matter.
* Better still, make sure that your users know where your security is intentionally lacking ("this is not designed as an NSA secure service, we do not encrypt data server-side, if you are storing a secure document here encrypt before sending" or such).
* Absolutely everyone who implements something that needs to authenticate a user needs to know what good password handling is, even if you use third party services for authentication you need to understand what is going on in order to judge if a given third party is good enough at what they do.
> It really gets in the way of just making things and putting them up; I think kind of kills the spirit of creation and entrepreneurship.
If what someone is just putting up" is something that holds personal or otherwise sensitive data, then I don't think this is a bad thing. If they are collecting that sort of thing (actively or passively) then they should be careful about it or should reconsider doing it at all (or should warn their users that what they are "just putting out there" is not production ready yet so may not be secure).
Of course if you are not doing anything with sensitive data these requirements reduce greatly. If you are doing anything that require authentication then you still need proper auth handling code no matter what though.
> Are you doomed to fail at the startup game if you don't know security well?
If your startup handles personal or otherwise sensitive data you should be, if by "startup" you mean that you intend to make a living (or just make a name) with what you are doing. This sounds harsh, but that is just the way it is. The world is harsh.