So by that logic, if a tv station chooses to broadcast content that propagates racist misinformation and calls for violence, but the station only does it because that's what they algorithmically determine gives them the most viewership, that it's fine?
Agreed. In my case, daydreams regardless, I'm not expecting to build a multi-billion $ exit. It's more about building something useful for people, that I can control the direction of, and guide to some kind of "success".
Success here can be a nice side-income, but also just making a solid, valuable tool for customers.
I just watched this last night. A lot of the content will already be well known to the HN audience. There was one big light-bulb moment for me. One of the speakers was clarifying the "If you're not paying then you are the product" idea.
He refined it to, (rough quote), "Changes to your behavior and actions are the product"
That distinction made the insidiousness much more clear than the former statement.
Distance learning is manageable for my kids as they're a little older and I can work from home. But families with younger kids where both parents have to go out to work and can't possibly afford childcare are getting hammered.
As always, the poor get the worse of the effects, and children are really compounding that right now.
The weaknesses resulting from this wouldn't be discoverable with a test like corrupting the password from the first example. If the developer wasn't aware that IV reuse introduced that weakness then they would be using strong primitives but in a way that dramatically undermines the actual encryption.
Not to put words in your mouth, but I assume your answer would be to say that this would be a matter of correctness. If yes, then where I'm coming from is that the majority of devs don't have the skillset to be correct and sometimes wouldn't dive deep enough to discover these kinds of pitfalls.
That's a dangerous statement on it's own. Making proper use of primitives is not at all a simple concept. Developers can absolutely undermine their systems with poor choices/mistakes.
Self promotion:
I wrote a blog up on a very high level screw up with type conversions to show just the very surface of how to screw up using solid crypto primitives. Time allowing I want to do more entries on topics within the crypto realm itself. IV reuse, etc.
You're not alone. This has always felt scammy. It's a little more gray-area than some of the traditional vapor-ware which was more about driving competition out of business by large players, but still something I try to avoid.
I don't see PBKDF2 as a full footgun, but maybe as the minimally still-acceptable method. When I was building my system for E2E messaging (pritact.com) I started out with PBKDF2 but kept mentally revisiting the iteration count before biting the bullet and switching to Argon2.
Free is a big part of the problem. The existence of free tools in a space, that are paid for with data gathering, crowds out the market for paid competitors that operate in a more privacy friendly manner.
I read through a good amount and I think they make sense. The short version helps, but that always worries me from a legal standpoint. If we summarize something in a legally ambiguous way have we undermined the original intent?
There are some inconsistencies with how you present the data that I think would help to smooth out. On your summary table. You start with the description being more of a goal for that section, than sporadically start switching to the "short version" of what your terms are.
For me I was hoping that it would be the short-version so I essentially get a comprehensive cliff-notes kind of view.
Also some minor issues with bolding some headers
4. Project Termination
4. Survival
As well as inconsistently formatting the short version. (I prefer the all bold version to help clearly show where the short part ends)
Privacy policies are much easier for me to wrap my head around. What you store, How you store it, and what you do with it.
This clause was a good idea that I will "borrow":
If our corporate structure or status changes (e.g., if we restructure, are acquired, or go bankrupt), we will notify all users so that you may choose to anonymize or delete your private data before we pass on any data to a successor or affiliate.
My version is here https://www.pritact.com/privacy-policy.html which I think follows along a lot with yours in spirit, but just has less ground to cover because of the nature of my platform.
This makes a lot of sense. Providing some kind of categorized/easily digestible format for the policy to fit into.
When I was writing mine I tried to be very clear, but my startup is specifically focused on privacy, so I didn't really have much to disclose.
Yes, that kinda HSMish model of non-extractable keys is a very nice touch. I really wish they would add Argon2 though. PBKDF2 is still a valid choice but there are a lot of HW optimized solvers out there for it.
I've been following your activity because of your strong stance on privacy and very much agree with this post.
In fact SimpleAnalytics is my only 3rd party call from my SaaS site (pritact.com)
What I take from this post is the importance of considering, even on basic web interactions, how much you can chip away at your client's privacy by making easy choices with "free" platforms.
I'm in the same boat with my communication based startup. I'm being very cautious about any third-party interaction and the heavy activity from the stripe JS wasn't compatible with that.
I had to take some goofy steps to ensure that the Stripe components were limited to just the payments page and didn't bleed over into anything else.
I've noticed this in myself and others. There is so much novel (no pun intended) stuff happening to everyone now that, I think, there isn't the downtime needed to effectively pay attention/think the way we're used to.
At the end of my day I can usually switch out to side projects pretty easily. But now, that's MUCH less productive.
I carry this thought process over into my current life. When I start with a new technology/language/etc. I try to start barebones command line, text editor.
I transition quickly into more visual / abstracting tools, but that first foray into the guts really helps ground me with a better understanding of what's actually happening.