Not very long ago and not very far away, scientists, engineers, and possibly Al Gore, began inventing the fundamental building blocks of the Internet.
Development of the Internet from Arpanet to W3C (Internet Society Graphic)
During this period of accelerating invention, those making the important discoveries were primarily concerned with getting things to work. Few networks were connected together and those that were tended to have close relationships and a high degree of trust. A network inside a building or facility was secured by physical access. Password access to the local network was largely sufficient.
Security was always an afterthought
The hacker movement closely followed the development of the Internet
. In the 1970s many hackers amused themselves by hacking phone networks, so called phreaking
. One of the first large scale network hacks
was an attack on 60 institutions including Los Alamos Laboratory and the Sloan Kettering Cancer Institute. The first firewalls emerged in the late 1980s
as basic packet filters. It wasn’t until the 1990s that researchers begun working on layering security
on top of TCP/IP, the fundamental protocol of the network, which unfortunately happened to be fundamentally insecure (no encryption, no authentication of access points, etc…). DNS, the service that translates natural language names such as CloakLabs.com
into machine addresses such as 18.104.22.168, was also fundamentally insecure. Work on DNSSEC
didn’t start until 1990.
Enter Technical Debt
is a metaphor referring to the eventual consequences of poor system design, software architecture or software development. The debt can be thought of as work that needs to be done before a particular job can be considered complete or proper. If the debt is not repaid, then it will keep on accumulating interest, making it hard to implement changes later on.
Technical debt is incurred in almost every software project of any complexity. There’s always a nagging bit that could have been done better, an interface that should have been exposed, test cases or documentation that should have been written. Projects incur technical debt because of lack of time, lack of resources, sloppiness, poor training, poor vision, and countless other reasons. However there’s little doubt that most projects would never ship if all the technical debt had to be paid beforehand. The Internet is not a single project, it is a mammoth collection of smaller projects, with the core projects having significant debt on the security side.
Move fast and break things. Unless you are breaking stuff, you are not moving fast enough. – Mark Zuckerberg
The entire internet security industry, including Cloak Labs, owes its very existence to the technical debt incurred by the designers of the Internet. Of course the Internet would still be under construction
if it had been required to be secure from the very beginning; you wouldn’t be reading this in a web browser or on a mobile device and you’d be wondering what to do with all the free time you would have had from not having to keep up with Facebook and Twitter. Those closely concerned with cyberwarfare have even advocated that we shouldn’t have an Internet
due to the high risks it creates for our modern infrastructure (power, water, financial services, transportation, healthcare, …) Have we amassed so much technical debt that our economy will eventually crash, not unlike what happened with mortgage debt in 2008? If you had been one of the inventors of the Internet, what would you have done differently knowing what you know now?