5 ms·
How can you tell when a closed source application is really secure? Is there a way to be 100% sure or does it always rely on a certain amount of trust in the de
by zxcvcxz 12y ago
How can you tell when a closed source application is really secure? Is there a way to be 100% sure or does it always rely on a certain amount of trust in the developers/distributors? Sorry if it seems like a dumb question..
- api 12y agoYou can't, at least not practically. You could do debug/trace analysis and reverse engineer but that'd be a massive undertaking. But it's also quite hard to tell if an open source application is secure. Do you have time to audit thousands of lines of impenetrable C/C++/Java/Go/etc. code? The rash of OpenSSL bugs we've had recently shows that "Linus's law" really doesn't work -- the fact that the code can be audited openly doesn't mean anyone is going to spend the time to actually do it. People are busy. It comes down to the question of "how paranoid are you?" If I were highly paranoid I'd take a defense in depth strategy -- layer multiple cryptosystems, possibly on multiple OSes/platforms, etc. But that level of paranoia comes at a price of course, both in setup time and overhead. iMessage is pretty good for every day use. PGP is probably better since you have greater transparency, but is less convenient. SSH and SSL are also pretty good for every day use. But I would trust none of those things to protect me from the NSA or a very well funded criminal adversary.
- gknoy 12y agoOpen source still has its security benefits. When an exploit is publicized, the "fix" for it can be highly scrutinized, and people can comment meaningfully on whether it actually fixes it, and can contribute their own. I remember looking at diffs and the accompanying analysis when heartbleed was out, and it was informative and reassuring. When an exploit in closed source software is publicized, we have to take their word for it that it gets fixed.
- drdeca 12y agoFor some types of security, a proof of correctness could be used. (This proof could be machine verified) This would be expensive ( in time and effort spent), but is possible for some things. With things like crypto though, AFAIK most crypto is based on certain assumptions which seem to be true, even after a high degree of investigation, but for which a proof has not been found. In these cases, it would not be feasible to prove the program to be "secure", but one could prove that the program correctly implements the algorithm. But then there's also timing attacks and the like, and I don't know that there are tools for proving things about the running time of a program, so as to prove that the running time doesn't leak information? But for some things, one can trust a program to be correct if it contains a proof that it is correct, and you agree with what correct is being chosen to mean.