This is not meant as a full-blown essay on my part, but rather as a place for discussion on a topic of some concern to me. I know we have a lot of coders and tech-heads in the course, and I'd love your input on the matter. I'd encourage anyone to either leave a comment or just edit the text directly.
I've spent part of my life coding, troubleshooting, and working in information and personnel security in the Department of Defense, so it would be safe to say that security of information is a key issue for me whenever a discussion turns to free distribution of code, at least in terms of operating systems or security protocols. I find myself often stuck trying to decide if a completely closed or open system is best, or if the optimal solution lies somewhere in between.
I' not certain how any of you are familiar with the DoD? 's TSEC (often referred to as the Orange Book), but it (along with NSA and Naval Security Instructions) served as my bible for a good number of years. The saddest part is that there are few systems that would properly be classified even as C2, but that's a separate issue and one that's come darn close to causing me ulcers in the past. While this may seem an aside, I use it to note that real-world issues depend on the ability to secure certain information. I'm not just referring to the privacy of personal information, which will apparently get to soon, but also things as prosaic as business plans or as baroque as troop movements, contingency, invasion, and disaster plans, etc.
Many think that strong cryptography is all that is needed to protect such data, but crypto alone (and I don't care if you are talking Triple-DES, AES, RSA SecurID? quasi one-time pad, PGP, etc. - at any key strength) does nothing if people can get around it through holes in the OS. If your lock is stronger than the door, a good thief just takes the whole door off the hinges. And why bother spoofing over-the-wire communications when you can slip in and read it right of the hard drive? So here lies the dilemma - how do you best secure an OS?
In any sort of system, open, closed or hybrid, someone must expand the effort to uncover security flaws--by looking at the code if it's available or by reverse engineering and experimenting if it is not. Hackers who stand to profit from the vulnerabilities they uncover are never going to reveal those vulnerabilities, regardless of whether the OS is open or closed source.
Really smart black hat hackers might be able to spot vulnerabilities in source code that a thousand other smart programmers would miss, but so would really smart white hat hackers. Assuming that the really smart hackers don't disproportionally gravitate to the dark side of the force, the effects of increased transparency should balance out.
A company could try to keep the code secret and just hire all the really smart white hat hackers to vet their code while avoiding the pitfall of exposing the source to ne'er-do-wells, but in a competitive environment, no one company will ever be able to grab all the security experts who might (because of professional curiosity or other reasons) be willing to look at the code if the source was openly available. No company would even able to accurately identify all of them. There's a real gain here from self-selection.
The other great advantage to open source is that once a security vulnerability is discovered, you don't have to wait for someone else to fix it for you. You don't have to reveal anything about your use of the system to a potentially untrustworthy third party, or rely on a fix you can't verify at the level of the code.
-- AndreiVoinigescu - 03 Oct 2008
I think the most important advance in OS security in the last ten years was the development for NSA of Security Enhanced (SE) Linux. Mitre produced for NSA, under GPL, for public distribution, a comprehensive set of modifications deeply integrating into the kernel a set of mandatory access control, role-based access control and type enforcement facilities. The SE Linux security enhancements are now part of the stock kernel for Red Hat Enterprise Linux, Fedora, Ubuntu, and several other Linux distributions. Openness made it possible for NSA to move experimental security technology results from Fluke straight into the production environment of servers around the world, in a fully accountable and verifiable fashion. Nothing the monopoly has done in partial rectification of all the insecurity, spying and criminality it has made possible even comes close.
-- EbenMoglen - 03 Oct 2008