Cryptographer Whitfield Diffie reckons one of the most important things for good cryptography and security in the age of the Internet is good code. Unfortunately, really good code is generally too expensive to write, he said at the Black Hat Europe conference.
"We are as much moving into a software age as we moved into an iron age," Diffie said, comparing the Internet evolution to the first cities formed on earth. "We take our cultural machinery and are moving that into the Internet," told the audience in the opening keynote of Black Hat Europe in Amsterdam.
This calls for a good plan to secure software, said Diffie, one of the pioneers of public-key cryptography.
There are three elements to computer security that everybody should keep in mind, he said.
"First you have to know what you have to do," he said. If a developer knows exactly what the purpose is of the application is going to be, the software becomes more secure.
Secondly, programmers need to write good code, Diffie said.
One of the obstacles to writing good applications is the state of the current programming languages, he said, calling some of them "vastly inaccurate" and not the best tool for that job. "We have languages that actually encourage buffer overflows."
He also noted that writing code is almost always a trade off. "We thought in the 70s that we could get full formal proof of the code," he said. But achieving that is not a realistic scenario, he noted, calling it mainly a money problem.
The third thing to keep in mind is money, he said. "All good code is expensive," and more money should be spend on writing really good code so applications can become secure, he said.
There are other hurdles to be aware of: One of the problems in trying to make software secure is the rate at which Internet technology develops, Diffie said. Software is easily spread through the Internet, and often downloaded by users who do not think about possible security issues.
To protect against such issues, browser sandboxes are created to confine code. "That allows you to download an application from the Internet from a source you never seen before and run it," Diffie said, adding that this way of working is inadequate for a lot of applications.
That eventually lead Diffie to three challenges that need to be met: First, "We need to learn good programming", he said. The second challenge is fixing human interfaces, so every Internet user can understand what is happening. And third, liability issues should be fixed. "That isn't easy", he said, because fixing liability issues should go hand in hand with the technologies that system producers need.