By Kim Lumbard

Cryptography is based on infeasibility, not impossibility

The dirty little secret of cryptography is: not only can every modern system in use be broken, the most efficient algorithms to crack them are already well known.

(the audience gasps) What? But how can a system be secure if we know how to break it?

The answer is: because we can calculate precisely how many resources it takes to break a particular system. That’s resources in time, computing power, dollars, or whatever else is relevant. And we only use systems where the cost to actually break it is exorbitant. Like: longer than the expected lifetime of the known universe kind of big.

That means that practical security is about constantly raising the bar. About making sure that it always costs hackers far more to break your system than to use it fairly. Security isn’t an absolute property, and doesn’t make something actually impossible.

Security is a quantity, not a quality

This leads us to the most common mistake people make in evaluating security: treating it as a quality. We’ll often hear statements like a system “is secure” or “isn’t secure”, which are usually misleading. We already know all systems can be broken with enough resources.

So how do we rate security then?

Security is a measurable quantity with a number and units, similar to many other product features. Finding out *how much* something costs is vastly more useful than knowing “it’s not free”. In a similar way, knowing a system has 1 million security means it’s much better protected than a system with 10 security.

However, units of security aren’t in resource terms, like time or money. Instead, they roughly translate to how often attackers could breach the system. Viewed differently, it can be thought of a scarcity of qualified attacker. For example, that 1 million security system is only susceptible to a rare, highly qualified hacker with very specific skills, while that 10 security system could be broken by a monkey with an abacus.

The enhanced precision of numeric quantization enables us to make much more intelligent decisions about system design. For example, it might be that along one dimension choosing system A is half as secure as system B, but along a different dimension it’s 30 times more secure. So that means that we’d be 15 times better off choosing option A (assuming there were no other factors).

Real security revolves around denial of use case

When we look at real world cases, it turns out that cryptographic systems are rarely, if ever, actually broken. Instead, they are compromised. No one spends X billion years cracking a key, they spend one day stealing it from the person who owns it. No one spends N billion dollars to hack a server, they fork over $50k to some underpaid sysadmin to let them in.

So how do we secure against system compromise?

The basic approach is: figure out how systems can be exploited, and then prevent that from happening. Big exploits in the past have been: using trusted third parties, and centralized data. This is one of the reasons why blockchains are so exciting. Their distributed ledgers make it much more difficult for anyone to compromise the system, including suborned employees. Multiple independent servers also removes concerns like single point of failure.

We also have to account for the complete life cycle of the business process involved. This is especially crucial for cryptocurrencies. To give some stats, over a billion dollars per year has been lost due to major exploits over the last few years. The majority of that has been wallets and exchanges (i.e. not the blockchains). The remaining losses on the blockchains themselves have been due to coding errors or actual bad design. The amount lost due to cryptographic compromise is negligible, and none of that was keys being broken.

We need more comprehensive security on the complete process flow

A chain is only strong as its weakest link, and that applies to the cryptocurrency space. It wouldn’t matter if every blockchain in the world became a perfect Platonic ideal, if every exchange keeps running crappy outmoded central architectures. If wallets can be attacked, it doesn’t matter that a blockchain records the theft perfectly.

So how do we make the entire cryptocurrency space more secure?

That’s a great question. We’ll work on answering that in our next post. For now, be aware that there’s a lot more than goes into security than just cryptography. The mathematics is rarely what gets compromised (says the mathematician).