# Guarantee one unique identity per node

I'm in the early stages of designing a decentralised systems protocol, based on a blockchain, for a thesis. For the protocol to remain secure, each node in the system must be capable of generating one, and only one, unique identity for itself. Nodes will publish data onto the blockchain under this identity. The system will be subject to attack if a node is able to generate multiple identities for itself without detection.

Do any such identity generation/verification solutions exist?

## 2 Answers

This is impossible (or, if you really want to nitpick, it can't be done usefully).

Proof: suppose that you were able to detect when one node generates two identities. An entity wants to carry out the attack that the unicity of identity prevents. That entity can create two distinct nodes and have them cooperate to carry out the attack.

You can apply heuristics to try to detect when multiple nodes are controlled by the same identity, but that won't be easy or reliable. You can raise the cost of creating a node, but that only works if the attack isn't a very damaging one.

• What if it's acceptable for an attacker to create two distinct physical nodes? Once one node can't be used to masquerade as multiple nodes? Feb 12, 2016 at 20:54
• @ConorTaylor I don't understand your question. Do you have control over the physical characteristics of nodes? If so, that might help you distinguish the nodes, but it still won't help against attacks carried out by cooperating nodes. Feb 12, 2016 at 20:57
• The physical nodes are mobile phones, so they can be restricted by model etc. Feb 12, 2016 at 21:07
• @ConorTaylor There may be a solution to your underlying problem, but there's no solution to the question you asked. What happens if someone buys a second mobile phone? Once you've figured that out, you can start thinking about the same mobile phone assuming two identities. Feb 12, 2016 at 21:16
• @ConorTaylor So is it ok to have two cooperating participants, but not 100000? Then having a cost to creating a node would probably work. If the cost of creating 100000 nodes is higher than the gains from the attack it enables, your system can work. Beware that if the benefits are non-negligible then attackers may use malware to hijack legitimate notes instead of creating legitimate nodes. It's difficult to give more precise advice without knowing what your system is about — and solving this problem may be a significant part of your thesis work. Feb 14, 2016 at 23:46

It is possible to accomplish your goal, but unfortunately probably not in any way that will help you.

For example, consider the following policies:

1. Email Provider: Each person must only register for a single email address.
2. Country Government: Each person must only obtain one passport.

Typically the Email policy is easy to circumvent, and the Passport policy is difficult to circumvent. The reason is due to the difference in the types of verification. To obtain an email address you typically don't need much verification at all, whereas you do when applying for a passport. If the Email Provider required you to show your passport in person in order to get an email address, then it too would become difficult to circumvent.

So, how far are you willing to go to verify that each node has only generated a single identity? It can be done, but it might very well exceed your usefulness threshold.

You're probably going to need a unique marker that differs in every mobile device and cannot be spoofed. I'm not sure if this exists...