Is blockchain a security topic?

… we need to understand how systems and the business work together …

Blockchains are big news at the moment.  There are conferences, start-ups, exhibitions, open source projects (in fact, pretty much all of the blockchain stuff going on out there is open source – look at Ethereum, zcash and bitcoin as examples) – all we need now are hipster-run blockchain-themed cafés*.  If you’re looking for an initial overview, you could do worse than the Wikipedia entry – that’s not the aim of this post.

Before we go much further, one useful thing to know about many blockchains projects is that they aren’t.  Blockchains, that is.  They are, more accurately, distributed ledgers****.  For now, however, let’s roll in blockchain and distributed ledger technologies and assume we’re talking about the same thing: it’ll make it easier for now, and in most cases, the difference is immaterial for our discussions.

I’m not planning to go into the basics here, but we should briefly talk about the main link with crypto and blockchains, and that’s the blocks themselves. In order to build a block, a set of transactions to put into a blockchain, and then to link it into the blockchain, cryptographic hashes are used.   This is the most obvious relationship that the various blockchains have with cryptography.

There’s another, equally important one, however, which is about identity*****.  Now, for many blockchain-based crypto-currencies, a major part of the point of using them at all is that identity isn’t, at one level, important.  There are many actors in a crypto-currency who may be passing each other vanishingly small or eye-wateringly big amounts of money, and they don’t need to know who each other is in order to make transactions.  To be more clear, the uniqueness of each actor absolutely is important – I want to be sure that I’m sending money to the entity who has just rendered me a service – but being able to tie that unique identity to a particular person IRL****** is not required.  To use the technical term, such a system is pseudonymous.  Now, if pseudonymity is a key part of the system, then protecting that property is likely to be important to its users.  Crypto-currencies do this with various degrees of success.  The lesson here is that you should do some serious reading and research if you’re planning to use a crypto-currency, and this property matters to you.

On the other hand, there are many blockchain/distributed ledger technologies where pseudonymity is not a required property, and may actually be unwanted.  These are the types of system in which I am most generally interested from a professional point of view.

In particular, I’m interested in permissioned blockchains.  Permissionless (or non-permissioned) blockchains are those where you don’t need permission from anyone in order to participate.  You can see why pseudonimity and permissionless blockchains can fit well today: most (all?) crypto-currencies are permissionless.  Permissioned blockchains are a different kettle of fish, however, and they’re the ones at which many businesses are looking at the moment.  In these cases, you know the people or entities who are going to be participating – or, if you don’t know now, you’ll want to check on them and their identity before they join your blockchain (or distributed ledger).  And here’s why blockchains are interesting in business********.  It’s not just that identity is interesting, though it is, because how you marry a particular entity to an identity and make sure that this binding is not spoofable over the lifetime of the system is difficult, difficult, lemon difficult******** – but there’s more to it than that.

What’s really interesting is that if you’re thinking about moving to a permissioned blockchain or distributed ledger with permissioned actors, then you’re going to have to spend some time thinking about trust.  You’re unlikely to be using a proof-of-work system for making blocks – there’s little point in a permissioned system – so who decides what comprises as “valid” block, that the rest of the system should agree on?  Well, you can rotate around some (or all) of the entities, or you can have a random choice, or you can elect a small number of über-trusted entities.  Combinations of these schemes may also work.  If these entities all exist within one trust domain, which you control, then fine, but what if they’re distributors, or customers, or partners, or other banks, or manufacturers, or semi-autonomous drones, or vehicles in a commercial fleet?  You really need to ensure that the trust relationships that you’re encoding into your implementation/deployment truly reflect the legal and IRL trust relationships that you have with the entities which are being represented in your system.

And the problem is that once you’ve deployed that system, it’s likely to be very difficult to backtrack, adjust or reset the trust relationships that you’ve designed in.  And if you don’t think about the questions I noted above about long-term bindings of identity, you’re going to be in some serious problems when, for instance:

  • an entity is spoofed;
  • an entity goes bankrupt;
  • an entity is acquired by another entity (buy-outs, acquisitions, mergers, etc.);
  • an entity moves into a different jurisdiction;
  • legislation or regulation changes.

These are all issues that are well catered for within existing legal frameworks (with the possible exception of the first), but which are more difficult to manage within the sorts of systems with which we are generally concerned in this blog.

Please don’t confuse the issues noted above with the questions around how to map legal agreements to the so-called “smart contracts” in blockchain/distributed ledger systems.  That’s another thorny (and, to be honest, not unconnected issue), but this one goes right to the heart of what a system is, and it’s the reason that people need to think very hard about what they’re really trying to achieve when they adopt our latest buzz-word technology.  Yet again, we need to understand how systems and the business work together, and be honest about the fit.

 


*if you come across one of these, please let me know.  Put a picture in a comment or something.**

**even better – start one yourself. Make sure I get an invitation to the opening***.

***and free everything.

****there have been onlines spats about this.  I’m not joining in.

*****there are others, but I’ll save those for another day.

******IRL == “In Real Life”.  I’m so old-skool.

*******for me.  If you’ve got this far into the article, I’m hoping there’s an evens chance that the same will go for you, too.

********I’ll leave this as an exercise for the reader.  Watch it, though, and the TV series on which it’s based.  Unless you don’t like swearing, in which case don’t watch either.

Author: Mike Bursell

Long-time Open Source and Linux bod, distributed systems security, etc.. Founder of P2P Consulting. マイク・バーゼル: オープンソースとLinuxに長く従事。他にも分散セキュリティシステムなども手がける。

5 thoughts on “Is blockchain a security topic?”

  1. (I posted this on the opensource.com repost of this article, and am duplicating it here)

    I’m going to start off with a bold statement: If your use case is permissioned, then _a blockchain of the type you describe is the wrong tool, Proof of Work or not._

    Satoshi Nakamoto’s whitepaper was brilliant because it squared a longstanding circle: Distributed consensus on asynchronous networks in the permissionless setting.

    Distributed consensus for synchronous and semi-synchronous networks in the permissioned setting had long since been solved – Paxos, Raft, and many others occupy this space. Some of them – such as Byzantine Paxos – offer _strictly_ stronger resilience guarantees than Nakamoto’s system.

    More recently, asynchronous networks have also been addressed, with Andrew Miller’s Honey Badger BFT protocol standing out[1][2]

    As a result, the space of “distributed consensus in the _permissioned_ setting” is spoiled for choice – and moreover, _these choices have much better properties than you describe_.

    You describe a protocol system where you _have_ to choose some actor, and once the choice is made, you’re stuck with the consequences of what they add. In short: Elect a dictator who can only make one law before the next election.

    However, all of the protocols I describe are _proper consensus protocols_ – in order for a transition to be valid (that is “a block added to the chain”, though that is merely _one representation_ one might choose), a quorum of participants must agree. Here, the group validates the _change, voting on the law directly rather than choosing a dictator. Once an entry is added to the ledger, it is well and truly valid – immediately.

    The winner-take-all nature of Nakamoto-style blockchains forces a much _weaker_ notion of consistency – one in which the newest blocks of the chain are only provisionally valid, and confidence in them grows as they are buried under their successors. _This is not necessary in the permissioned setting_.

    Virtually all of the concerns you raise, however, are _deeply predicated_ upon exactly this flawed model – a model that gives rise to trust issues, inefficiency, and uncertainty about exactly when a change is durable. Replacing it with a better model is a far cleaner solution than agonizing about choices that shouldn’t have to be made.

    As a further note, using a Merkelized linked list (i.e. blockchain) is in and of itself a _suboptimal representation_ for the ledger – research on secure logging has given better structures, which resist attacks (such as truncation) that a Merkelized linked list cannot, and support vastly more efficient verification and take vastly less space.[3]

    [1] https://eprint.iacr.org/2016/199
    [2] https://github.com/amiller/HoneyBadgerBFT
    [3] https://eprint.iacr.org/2017/949

    Like

Leave a reply to Keir Cancel reply