16 ms·
What is it with people in the crypto community always coming across as complete and utter jerks? Question for those in this space: is it possible for you to giv
by zainny 13y ago
What is it with people in the crypto community always coming across as complete and utter jerks? Question for those in this space: is it possible for you to give constructive criticism for a project without calling people "incompetent"?
Seriously, if there any domain in CS more full of these types of personalities I can't think of it.
- DanBC 13y ago> is it possible for you to give constructive criticism for a project without calling people "incompetent"? Cryptocat had many such bits of constructive criticism. They chose to ignore it. They continued to promote their broken product as secure.
- zainny 13y agoYou're making statements like that in a very matter of fact way. Can you please give references? It seems to me like the developers have been earnestly trying to build and improve on Cryptocat and shore up any weaknesses only to be constantly shit on your typical internet crypto experts.
- DanBC 13y ago> earnestly trying to build and improve on Cryptocat and shore up any weaknesses The release an insecure product. People tell them it's insecure, and that they don't know what they're doing, and that they should stop. They make a tweak, and release a new insecure version. People tell them that it's insecure, and that they don't know what they're doing, and that they should stop. They make another tweak, and release a new insecure version. People tell them that it's insecure, and that they don't know what they're doing, and that they should stop. They make another tweak, and release a new insecure version. At this point, imagine no-one tells them about any bugs. Does that mean the product is secure? Does that mean people should be using it? Here's one thread on HN where they get mostly polite advice (https://news.ycombinator.com/item?id=2855257 https://news.ycombinator.com/item?id=2855257) and the whack-a-mole game of "our software is secure", "here's a bug", tweak "Our software is secure" happens. Here's a nice article about the hype surrounding cryptocat (which, admittedly, isn't the fault of cryptocat) (http://paranoia.dubfire.net/2012/07/tech-journalists-stop-hyping-unproven.html http://paranoia.dubfire.net/2012/07/tech-journalists-stop-hy...)
- zainny 13y agoLike I said, the developers seem to be earnestly trying to improve their product based on the feedback they are getting. What more can you ask of them? "You there. Stop. You shouldn't be building this because we the superior internet community think you're a terrible person who will never learn anything, so we're putting our foot down." Screw that. What right do you have to tell these individuals to stop building something they might be actually enjoying building (and learning about crypto)? You have absolutely no right to complain in much the same way I don't have any right to look at your Github repo, tell you you're a terrible developer and you should never touch a computer again.
- mst 13y agoActually, I'd entirely support your right to do that. And his to tell you to fuck off and ignore you from then on if you did.
- rschmitty 13y agoI think all you should ask of them is honesty, if their track record has truly been this bad. "Here is our secure product for all" vs "Help us make our product secure for all" If someone is learning crypto for fun and enjoyment they should seek advice of experts no matter how much of a jerk the expert may be. This isnt really the same level of a random github project 'convert your old php into haskell with 1 click!' I don't think anyone has expectations of that being 100% accurate. People on HN flipped out over Linode, they made a mistake, they fessed up. People just want honesty. Also, everyone has any right to complain, at least until prism comes a knockin
- DanBC 13y ago> Like I said, the developers seem to be earnestly trying to improve their product based on the feedback they are getting. Cryptographic software isn't something that you can improve by a process of gradual refinement. Crypto can have small, subtle, bugs. Those bugs could mean that the product is worthless. A skilled, knowledgeable researcher could audit the code closely, and report any bugs they find. Cryptocat could fix all of those bugs. Does that mean it's secure? No - because crypto is hard. > What more can you ask of them? I ask that they make the disclaimers much bolder and bigger. I ask that they emphasise the experimental, untested, unscrutinised nature of Cryptocat. > "You there. Stop. You shouldn't be building this because we the superior internet community think you're a terrible person who will never learn anything, so we're putting our foot down." That's a mischaracterisation of the criticism they've got. "You there. Stop! Cryptography is very hard. Don't roll your own; or do but don't release it as a product for end users." followed by "You there. Stop! We suggested that you didn't release it for end users, but you did. Well, here's a list of bugs. Don't just fix these and think everything is good, there are probably other bugs and the whole thing is based on weird wrong ideas." followed by "You there. Stop! No, really, just stop. Here's a list of bugs. These are not subtle hard to find bugs. These are obvious bugs that anyone doing crypto really should have been aware of. The presence of these bugs demonstrates lack-of-clue. Please, stop hyping the product as secure, stop distributing as a tool for end users to use." People get exasperated. It doesn't help that some of the responses from the developers were defensive and aggressive and dismissive. tl;dr have fun with crypto and building stuff. Just don't think it's secure, and especially don't release it as secure. Especially don't release it as a browser plugin ready for naive end users.
- plg 13y agoCan we please separate criticism of (1) the technical internals of Cryptocat from (2) the core idea behind Cryptocat and, especially, (3) Nadim himself, personally? My own take on this is that Nadim ought to be encouraged, and we ought to help him engage additional people who are experienced crypto experts to help implement the Cryptocat internals. If you think the core idea behind Cryptocat is crap, then fine, make a technical argument. If you think the idea is good, then let's encourage and help Nadim make it better. If you want to criticize Nadim's judgment from afar (I assume you are not on the core Cryptocat team) then that's your choice, but trust me, it does not help him, or you, or anyone. We all have our flaws and we all make bad decisions. I for one would bet that Nadim is absolutely interested in making Cryptocat better, not sweeping problems under the rug. Let's help make that happen and let's do it without the personal attacks.
- DanBC 13y ago> If you think the core idea behind Cryptocat is crap, then fine, make a technical argument. People keep making these technical arguments. They are ignored. It is frustrating to have to keep pushing warnings and to have those warnings ignored. > (1) the technical internals of Cryptocat from (2) the core idea behind Cryptocat and, especially, (3) Nadim himself, personally? That sounds reasonable, except it's hard to do. The internals of Cryptocat are closely tied to the core idea. People point out the flaws in the core ideas, and cryptocat team just say "point out an actual attack". So then people are forced to find bugs in the internals. And when they do CryptoCat patch, and say "See! Nothing to worry about!" Except that the core idea is still flawed. People get exasperated playing this game of Whack-a-mole. I get that Nadim is proud of his product, but his choices of promotion have caused friction, and his reaction to some of the criticism has made it worse. Some people have mentioned that the crypto community is toxic. They're right, but there's also a high barrier to entry. When someone releases a product as secure, but has made very many obvious flaws that ruin the security of that product, they're going to attract a lot of flak. Don't forget that many people are not sincerely trying to learn about crypto and make it accessible. Many people are bodging together terrible software and selling it. There's a long history of debunking snake-oil. It's unfortunate that Nadim has been subject to attack, but he should have known it was coming and presented the product differently. > making Cryptocat better It can never be made "good enough". That's the fundamental point.
- JulianMorrison 13y agoIt's a matter of consequences. Badly built crypto endangers the people who can least afford it (ROT13 is probably enough to secure your comms, but you aren't in Syria).
- GhotiFish 13y agoI've being using double ROT13 for most of my transmissions, but I'm paranoid.
- antocv 13y agoI agree there are more jerks in the crypto community than elsewhere, but in this instance it is justified, crypto is serious and if you are gonna claim to be secure and all that - peoples lives can hang on it - then make sure you get the basics right. I mean come on, Im not a crypto-programmer, but this, Cryptocat.random()*123456789 !?
- anonymous 13y agoActually it's 1234567890. Which is even worse. Cryptocat is written by people who don't fully understand how their program works. They don't fully understand how the platform on which their program is built works. They may be smart, but they need to sit down and learn things.
- adekok 13y agoThis is the most important take-away. They're not just incompetent at crypto, they're incompetent at programming. And they don't understand that they don't understand programming.
- oinksoft 13y agoFascinating. For those of us not versed in cryptography, can anyone elaborate on why foo.random() * 123456789 is insecure, and why it is made moreso with the added zero? Is this what the author describes, using floating point to generate random numbers (where he cites this code)? I am wondering about the theory behind this.
- IanCal 13y agoI'm not a crypto guy, so this is just my interpretation of part of the issue. Anything that should be random that introduces easily predictable could be a problem. With that in mind, what we've got is a sixteen digit floating point number (their random number generator works in decimal, not binary) multiplied by a very specific number. This is then turned back into a string, so I'm going to assume it's ascii (I'm sure a similar problem would be if this was in utf-8). Now, ascii representations of numbers means that each digit is converted to hex 30 to 39 So, what we're passing into the MD5 sum is 3-3-3-3-3-3-3-3... with one of them 2E because of the decimal place. The first digit cannot be a 0 or the decimal place, so it's going to be 31-39 to start with. This first digit is also significantly more likely to be a 1 than anything else, here's a random sample of the first digit counts: Counter(str(get_uniform()*1234567890)[0] for i in range(100000)) Counter({'1': 28042, '2': 9208, '5': 9068, '3': 9053, '7': 9045, '9': 8987, '8': 8972, '4': 8829, '6': 8796}) How about the second digit? Still biased: Counter({'0': 16368, '1': 16227, '2': 10942, '6': 8141, '5': 8124, '3': 8118, '4': 8067, '9': 8012, '7': 8006, '8': 7995}) Sixth digit? More normalised but the decimal pace is not really that common here. Counter({'8': 10235, '2': 10166, '4': 10114, '9': 10032, '6': 10007, '3': 9969, '7': 9911, '0': 9883, '1': 9872, '5': 9804, '.': 7}) Ninth digit? Now we're getting flatter Counter({'2': 9418, '1': 9406, '9': 9279, '3': 9269, '0': 9258, '4': 9248, '7': 9228, '5': 9227, '8': 9215, '6': 9208, '.': 7244}) Where do we see the decimal place? Counter(str(get_uniform()*1234567890).find(".") for i in range(100000)) Counter({9: 72887, 10: 18823, 8: 7460, 7: 740, 6: 81, 5: 7, 4: 2}) Fundamentally, we've taken a random series of bytes, turned them into a very regular pattern (3-3-3...) and added a significant bias towards particular digits in particular places. How about the length? Counter({13: 90052, 12: 9150, 11: 792, 10: 6}) We've got something with a very predictable structure, in short. Multiplying by 10 I don't think makes it any less secure, it's just silly. All you do is move the decimal place over by one, although to be fair at least it doesn't add any more bias.
- andor 13y agoCrypto software that doesn't work potentially puts people at risk. If a car mechanic only used half the wheel nuts to fasten the rims on your car, would you stay calm and give constructive criticism?
- zainny 13y agoThat's a silly argument. There is a great deal of software out there in the world that operates in incredibly important roles. The software running your car, your electricity grid, your bank, your nearest nuclear power plant. Does everyone get free license to be an asshole? Crypto does not occupy some special branch of importance above and beyond a great deal of software many of us create in our jobs. I used to work on software in the defence industry on things that could put people at risk. I can't recall any of my colleagues behaving the way people in the crypto community do.
- nknighthb 13y agoSoftware in the industries you name is not marketable to the general public. It is written by employees or contractors of the relevant organization and extensively evaluated, tested, and certified (in some cases including by government regulators) before it is permitted to go into production. The public is not at risk from an amateur who whips up what they think is some great nuclear reactor control code and starts distributing it to everybody. An amateur marketing cryptographic software to the masses is different and akin to a snake oil salesman. He is dangerous, and no one has the legal authority to stop him.
- zainny 13y agoDo you really think these developers of this are actively trying to sell snake oil? You know what it looks more like to me? A couple of people are earnestly trying to build a secure communication product. They're not perfect, so they've made mistakes. And for every mistake they've made, there is a legion of toxic people from the crypto community who would rather demonstrate how much smarter they are by pointing out those mistakes in a condescending and unhelpful manner rather than simply being friendly, constructive, and helpful. Shit, think of the chilling effect this even has on anyone out there who wants to try to build some security/crypto stuff. Myself I wouldn't even dare try - the hysteria of some of the people in this community is just without equal. It's toxic. Pure toxic.
- ddeck 13y agoI would suggest that the author's description of the developer(s) as "incompetent" is somewhat more reasonable than your (implied) description of him/her as a "complete and utter jerk". Perhaps the author should have narrowed the description to incompetence in crypto and not generalized to "everyone involved", but I don't think it's entirely unreasonable given the apparent magnitude of the problems and the history of the product.
- aviraldg 13y agoReleasing an untested crypto product to the general public, and calling it "secure", is incompetent, period.
- kybernetyk 13y agoBecause, well, while a bug in your task-planer rails app is not cool it most likely won't endanger people's lives. While with crypto many people around the world depend on it with their lives. Sometimes you just have to hit the thing with a bat to get attention.
- tomchristie 13y agoNonsense - the article comes across more weakly by taking a personal tone.
- tptacek 13y agoIt's a technical article. You can like it more or less because of its tone, but if you're an engineer, you should be persuaded (or not) by the content, not the persuasiveness of the writing.
- saosebastiao 13y agoOne shouldn't have to filter personal bullshit to be able to read technical content.
- tptacek 13y agoAnd? Perhaps one does in this case. If you're technically competent, you should be able to evaluate the claims in the article regardless.
- saosebastiao 13y agoI'm not technically competent. At least as far as crypto goes. But I can understand things like "shortens the time needed for a brute force attack" quite fine. And many non technical people can do the same. By littering this article with petty personal bullshit, he commits the same sin as cryptocat: failing to inform users.
- jerguismi 13y agoThese "serious cryptographers" really never seem to deliver usable solutions themselves - and therefore the average users use software like cryptocat, or they don't use software at all. Cryptocat managed to bring cryptography to the masses, and usually no "serious cryptographers" have managed with the same thing.
- jlgreco 13y agoThis is better off not done than done improperly. "I managed to produce shit while you refused to produce shit!" is not something to be proud of.
- jerguismi 13y agoI somewhat disagree. Even some protection is better than no protection at all. Then if cryptocat was actually harmful to the users or less secure than traditional IM (which I fail to see), it would be different case. There seems to be strong "do not do" culture in these circles. I dislike this. Doing is always good. Then again, criticism is also important.
- flebron 13y agoI disagree vehemently. It is much better _not_ to create software that gives you the false impression of privacy, than to create it. If I am aware that my IM client is insecure, I'll behave differently than if I mistakenly think my IM client is secure. Specifically with crypto, I may be endangering myself if I mistakenly hold this belief. In essentially everywhere else in CS, people are encouraged to go nuts and experiment. The barrier for entry is null. Anyone with access to a computer can make whatever he wants. Not here. In crypto, it becomes more serious, because people easily depend on it. If it is a toy, _clearly mark it as such_, and never give the false impression of security. Toys are fine. Endangering people is not.
- jiggy2011 13y agoIsn't the argument more that the people doing the software for end users shouldn't be implementing the cryptography for that software themselves and should instead built it on top of libraries that make all of the difficult decisions? Libraries like NACL are good for this, you don't specify cipher modes or anything like that you just say something closer to encrypt(data,key); Of course you can still fuck up with just that, but it reduces the requirements for the programmer to understand deep cryptography and focus on designing their application for their users. Also the advertised level of security will alter how the users use the software. Say for example you have a bunch of confidential documents, you are currently storing them in a bomb proof safe and you never digitize them because you are concerned about security even though digital copies would be useful. Along comes software that promises to be just as secure as your safe (or more secure). So you jump on it and start using it. Now if that software is not as secure as advertised then you are probably in a worse position security wise than you were before, and you don't even know until somebody steals your documents.
- jrockway 13y agoSome people build things, other people break things. The people that break things don't understand what it's like to build something, so tend to come across as jerks to people that build things for a living.
- tptacek 13y agoThis builders/breakers thing drives me nuts. I've done both throughout my career. I've lead and shipped very large projects, and I've spent years breaking. To be a good breaker, you have to be a good builder; you need to be able to intuit what someone building the target was trying to do, then think a step ahead of them and predict their mistakes. To do the job professionally, you need to be capable of doing that in a wide variety of environments, too. Most "builders" are Rails devs, or Java devs, or C devs. Good breakers have to be all of those. There are a lot of "breakers" out there who repeat a cookbook of well-known techniques to find lots of instances of the same bug. But if you look at the very best in the field, to a one, they're all top-caliber builders as well.
- kragen 13y agoI also think that to be a good builder, you have to be a good breaker — which is most especially the case with crypto. Of course, you already know this, thus your competition, but you didn't bother to say it.
- tptacek 13y agoTo be a good crypto-builder, I think you need to be a good breaker. I don't think that holds for other kinds of building.
- kragen 13y agoI meant for software in general; I guess you don't agree? My reasoning is that you have to think systematically about what can go wrong in order to be a good programmer, which is a skill that you can only acquire by finding bugs in programs.
- papsosouid 13y agoWhat sort of reaction would you feel is appropriate when someone builds a bridge incorrectly, and it collapses? "Oh hey, that's too bad, good try though!"? When someone does something horrible wrong and demonstrates that they are incompetent, that needs to be said. Everyone needs to know "this person is incompetent, do not use their work".
- escaped_hn 13y agoBecause this is more true in crypto than anywhere else. "There are horrible people who, instead of solving a problem, tangle it up and make it harder to solve for anyone who wants to deal with it. Whoever does not know how to hit the nail on the head should be asked not to hit it at all." - Friedrich Nietzsche
- dobbsbob 13y agoYears of linux kernel, theo de raadt/bsd, and grsec mailing list total rage and various IRC hacker/dev channel slamming of idiocy has hardened my skin and actually makes me thankful they are clear, concise and direct with their criticism instead of phony hand holding and passive aggressiveness. It's a rite of passage to get your ass handed to you by other devs. Some people just don't get it, you have to pummel them with a blast of anger on the mailing list or they'll continue to waste everybody's time with their idiocy. It's not the end of the world if somebody calls your insecure program a pile of shit and you a nerf herding waste of skin for inflicting said shit upon the world. That's like standard behaviour since the days of Stallman at MIT labs
- npsimons 13y agoThis. Every time someone gets flamed, you get the same crowd of people going "what an asshole". Except, oh wait, the person got flamed for breaking userspace and not fessing up to it, or providing a false sense of security to people whose lives depend upon it. And in each case, these weren't newbies - they had been warned before and should have known better. It's not just ignorance, it's willful, practically malicious ignorance. Wake up. This isn't some social media photo-sharing app. This is the literal definition of mission critical software. Being an asshole is the cost to pay to either a) convince incompetent people to stop wasting everyone else's time or b) convince them to become competent. You know why I don't write and release crypto software? Because I know I'm not qualified to.
- ceol 13y agoThis is a really gross attitude, and it's even grosser that you dress it up like some macho rite-of-passage. Call it what it is: A bunch of bitter nerds taking their pent-up anger out on random newbies. It's the fraternity hazing of the tech world, it's bullshit, and it needs to stop. It doesn't need other bitter nerds treating it like it's normal. Instead of expecting newbies to know they're going to be met with a storm of putrid shit should they speak a syllable out of line, how about we expect our moderators and leaders have some degree of social skill?
- dobbsbob 13y ago
- Dylan16807 13y ago>is it possible for you to give constructive criticism for a project without calling people "incompetent"? You're too focused on the fact that it's an insult. Even though it's rude, there are circumstances where literal incompetence should be pointed out, like software that can be life-or-death. This commit right here https://github.com/cryptocat/cryptocat/commit/7fe56f0ad6a1b481e66c33592d1dabb338b19901 https://github.com/cryptocat/cryptocat/commit/7fe56f0ad6a1b4... is either someone coding without paying attention / severely sleep deprived / drunk, or it's someone who is incompetent. And the first option is only a polite way of saying they were 'temporarily incompetent at coding while working on this project'. And that provides no solace to someone who gets hurt. In short, it is a fact that the cryptography system here was handled in an incompetent way, beyond that of normal implementation errors. Blatantly stating this fact is an effective way of getting people away from the danger.
- wtbob 13y ago> Question for those in this space: is it possible for you to give constructive criticism for a project without calling people "incompetent"? Sometimes 'you're incompetent at X' is constructive criticism. Someone who doesn't know how to accelerate a car is an incompetent driver. That doesn't make him a bad person; it doesn't make him worthless (as an example, neither Newton nor Plato knew how to accelerate a car); it does, however, make him incompetent at driving. One should understand one's weaknesses. I know lots about some things, a bit about others and nothing about yet others. As an example, I know absolutely nothing about assembly line engineering; I am an incompetent assembly line engineer—and thus I do not produce assembly-line-engineering products.