Software Security Bookshelf
Since posting the article Towards More Secure Software, a couple people have emailed me asking for references for secure software development. There's a lot written on the subject, and I'm sorry to say there's no one single reference I can point people to. Rather... I can give you a list of titles on my bookshelf...General Software Security
The book on the top of my list these days is Security and Usability : Designing Secure Systems that People can Use
Computer Security : Art and Science
Practical Guidance
There's plenty of free advice on the Internet these days, not all of it worth reading. However... David Wheeler's Secure Programming for Linux and Unix HOWTO - Creating Secure Software is a wonderful place to start, if you're a Unix programmer. Even if you're not a Unix guy... you might want to peruse this online text while waiting for other books to arrive from Amazon.Com.
John Viega and Gary McGraw penned the text Building Secure Software
If you're a Windows developer, you probably want to take a look at Writing Secure Code
Thinking Like An Attacker
One obstacle to writing good, clean, secure code is not understanding how attackers get into systems. There are a couple of resources out there that can help you put aside your trusting nature and learn how bad guys exploit weaknesses in systems to pry their way in. Before rushing out and buying any texts on the subject, however, sit down and read Smashing the Stack for Fun and Profit. There aren't too many more technical details here you won't find in some of the texts above, but it's presented in the context of an attacker, not a defender. Besides, it's free, and the Buffer Overflow seems to pop up just about everywhere, so it's great to have a review. Besides, it's free.
Security Warrior
Next I have a pair of books: Takedown
Crypto
What's a security bookshelf without a few books on cryptography? Unless you've been under a rock for the last decade, you've probably seen Bruce Schneier's Applied Crypto
If you think you're going to be called upon to implement crypto functions, or you need to know a bit more detail about how things work under the hood, Handbook of Applied Crypto
If you're doing anything at all with secure communications, you'll eventually be asked to do something with SSL (Secure Sockets Layer) or it's successor TLS (Transport Layer Security). TLS is pretty easy to understand from a conceptual level, but when it comes time to actually make implementation decisions, there are a bunch of little details you've got to get right. A lot of people start off by trying to make heads or tales of the OpenSSL documentation. I recommend reading Eric Rescorla's SSL and TLS: Designing and Building Secure Systems
One thing I've noticed about all these texts though... they're pretty light in their coverage of Elliptic Curve Cryptography. Adoption of ECC has lagged behind the DL and RSA public key crypto family of algorithms for a number of reasons. But a couple of new technologies have sprung up that make ECC worth looking at again. There are plenty of high-quality ECC implementations out there from people like Certicom and RSA. But ECC has traditionally suffered because some aspects of it's use are still covered by patents and it's generally a lot easier to explain the RSA algorithm to non-specialists. I can't do anything about the IP encumbrance issue, but I can recommend A Course in Number Theory and Cryptography
Finally, there are no great books about X.509 and PKI. Texts on the subject tend to be so broad as to provide no real technical guidance or so focused on technical minutiae that over-arching concepts are impossible to pick out. Carslile Adams and Steve Lloyd's Understanding PKI: Concepts, Standards, and Deployment Considerations
Well.. that's it. Fifteen books and a couple of web pages should keep you busy for a while.


1 Comments:
And let's not forget the NIST Computer Security Clearinghouse site for standards and technology recommendations.
Post a Comment
<< Home