When it comes to writing secure code, less is more. That was the advice passed down by security expert Paul Kocher, president of Cryptography Research Inc., who told the Usenix Security Symposium that more powerful computer systems and increasingly complex code will be a growing cause of insecure networks.
Huge chunks of software such as Microsoft Corp.'s Windows operating systems that have myriad features built in to take advantage of fast processors will perpetually have more flaws than security experts are able to uncover, he said. For this reason, programmers and companies should keep simplicity in mind when writing applications and only build in tools that appeal to 80 percent or more of users.
"The problem that we have is that we are getting these great performance improvements, which leads to increases in complexity, and I am not getting any smarter," Kocher said. "But it's not just me. I don't think you guys are getting smarter, either." Increasing processor speeds tempt developers to create code that can take advantage of the extra horsepower. This leads to software such as Windows or the Linux operating system growing over time. Every time the number of lines of code is doubled, a company adds four times as many security problems, Kocher said, which makes this trend of bigger, more feature-rich applications daunting to security experts.
Compounding the complexity problem is a lack of trained security professionals able to detect bugs. "There aren't enough people learning security, and it's getting harder to learn it," Kocher said. In addition, the number of computing devices and users connected to the network is escalating rapidly, which leads to more financial transactions being conducted online. A greater number of Internet-based transactions means financial institutions are increasingly dependent on computers, instead of humans, for analysis. Such a reliance on computers only exacerbates the problem of insecure software, he said.
Despite these challenges, there are strategies that companies can use to help secure their software, according to Kocher. Keep development teams small. Fewer programmers leads to more focused and careful planning for an application and places a cap on the number of "cool features" developers want to add in. Make modular applications a top priority. Building software that can be linked together, instead of creating one giant application, allows errors to be isolated and companies to reduce the risk of an entire program being afflicted by a bug. Spend time and money on fixing security early in the software development process. It's not enough to reach the end of a project and begin checking for security holes at that point. Think creatively in your design. Good hackers will try to find new and interesting ways to assault a network. Be humble. Developers need to realize they will make mistakes and need to look out for them instead of blindly trusting their code. Work on educating others. College students, for example, could be encouraged to find ways to attack mock networks.
With these tips in mind, companies should be able to build better, more secure software, but the overall problem of increased complexity poses challenges that Kocher is not sure can be overcome. "Today, nobody has any clue what is running on their computer," he said. "The complexity curve has passed us."