How to distribute, one virtual token to each person in this world, and make sure nobody gets more than one?

In other words, how to prevent a user from creating more than one user account in a site?

What's this problem called? Is there any specific name to this problem? What are the solutions? Thanks.

  • 3
    The only way is biometrics, eg DNA. Maybe that wasn't the question you meant?
    – david.pfx
    Mar 28, 2014 at 5:39
  • 2
    That reminds me, I wonder how auroracoin.org is doing... Mar 28, 2014 at 5:52
  • 8
    @david.pfx What about identical twins? How about DNA-theft (such as putting someone else's blood in the scanner)? Or in the future, clones?
    – Izkata
    Mar 30, 2014 at 6:32
  • 5
    As some answers have pointed out the problem is called identification. To know what solution to use the question needs more detail, hence @gnat 'too broad'. Please add some more detail about what you intent to do and you might get better answers. Some of the sarcastic comments on answers point out that the answer you want will depend on what level of definitive identification you require.
    – Encaitar
    Mar 31, 2014 at 13:27
  • 2
    In summary, this is: imgur.com/oySY48i
    – Alexander
    Mar 31, 2014 at 21:34

6 Answers 6


The task as stated is impossible. You might be able to come acceptably close depending upon your ability to compel evidence (ssn, drivers license, birthdate, etc). But unless you're a govermental site, most people will just go elsewhere.

  • 3
    It's not impossible. For example, you could tattoo infants at birth. Because no person is born twice nobody can get 2 or more tokens.
    – Brendan
    Mar 28, 2014 at 6:01
  • 5
    @Brendan: that's an awful lot of work for a single website. Also, some people may object rather forcibly to your plan to mark their kid, leading to kids that get no tattoo
    – jmoreno
    Mar 28, 2014 at 7:07
  • 2
    @brendan - You also could use the same tattoo twice, preventing somebody to enjoy that so wonderful website.
    – mouviciel
    Mar 28, 2014 at 7:54
  • 3
    @jmoreno yeah well, those kids with their wierdo, communist upbringing.. we never wanted them in our society anyway. They'll probably grow up to be terrorists too. That said - nobody should be forcibly tattooed.. its so last decade. Implanted rfid chips automatically linked to their facebook account (made for them by Facebook corporation at birth, of course) is the only way for today.
    – gbjbaanb
    Mar 28, 2014 at 8:43
  • 3
    @Brendan Tattoos can be removed and modified, so I'd stick with "impossible".
    – Izkata
    Mar 30, 2014 at 6:33

The problem is called "identification". The token uniquely identifies a person and you want to prevent people from obtaining multiple identities.

The best solution we have for that are government passports and ID cards, or rather the methods used to distribute them, which mostly rely on cross-checking public records, especially birth records. But it's certainly not impossible to circumvent - criminals often obtain multiple (valid, non-forged) identities by exploiting loopholes in the system.

The closest you can come as a website operator is to depend on this system - some countries (e.g. Germany) have government ID cards that include a cryptographic ID which can be used for authentication by third parties, even over the internet (but usually require the website operator to register with the government as well). A low-tech version of this is to establish a physical presence and require people to show up in person and present their government ID.

If, as is most likely the case, you cannot do any of that (especially since none of it can easily be done internationally) - you just have to accept that it's impossible to prevent people from obtaining multiple identities, and plan your system around that fact.

  • 2
    And I know many people who have 2 or even 3 passports, quite legally.
    – Zachary K
    Mar 31, 2014 at 7:31
  • 1
    @ZacharyK: from the same country? Mar 31, 2014 at 7:47
  • 1
    In my case not, but I can imagine cases where that might happen, esp if you might want to visit countries that might not like each other's stamps. For example going into some Arab countries is harder if you have an Israeli stamp on your passport
    – Zachary K
    Mar 31, 2014 at 8:29
  • 1
    Similarly, you can require a credit card company's authentication. Most credit cards will allow you to verify name, zip code, and street number. Of course, this is probably not worthwhile if you have no paid services.
    – Brian
    Mar 31, 2014 at 13:13
  • 1
    I think one of the ways to practically make this happen is to make things bureaucratically more and more difficult - i.e. ask for more and more pieces of valid identification, cross-check them with their issuing sources, ask people show up in person, ask for recent documentation/photo-ids, have multiple people verify the documents, and otherwise make it more difficult for an average person to falsify their identify. This will discourage most but the most diehard people from being able to falsify their way through such process. It will also discourage average people from joining your site :)
    – Dennis
    Mar 31, 2014 at 15:37

Unique user identification is the problem, and basically you're limited in what you can do about it. Many systems have begun to depend on tools like OpenID (which in turn depends on "identity providers"). However, this is an inadequate solution in some cases, because little prevents a user from establishing multiple OpenID identities.

Normally, the way we get around this problem with web sites is to reframe the problem altogether. So, for example, let's say we're trying to prevent people from creating multiple accounts because each account gets some virtual asset. We don't want them cheating by aggregating these initial assets into one account.

What are some ways to deal with this? Well, one is to make the user actually pay a nominal fee to open an account. If it costs me $1.99 to create an account, then that takes away a lot of the incentive to cheat. Obviously it doesn't completely prevent cheating, but if you're making money when people cheat, does it matter? Another way is to force new users to complete some task that takes time in order to get their "initial assets". In that way, you're not preventing users from using the site for free, but you ARE forcing them to spend time getting a new account functional, which in turn makes it a pain to "cheat". Another approach is to make these "initial assets" special in some way so that they can't be exchanged -- maybe they're branded with the user account's credentials when they're created, and that makes them unusable by another user in the system.

So, unless you're doing something extremely unusual where actual identity truly is a business requirement, your best bet is probably to rethink your requirement. If you truly need identity and nonrepudiation, then you pretty much have to go low-tech -- physical interaction with the users where they provide government issued identity cards.


Here is a different way of looking at the problem. You have a site membership list and a new applicant. How do you know if this applicant already has an account on your website?

The short answer is that you can never be certain... ...but there are things that can be tested. Can you validate any of the personal information they provided? A common one is sending an email that they have to click on the link to confirm that the email address is theirs. but what about their home address? send a letter with a code there that they have enter on the website (or a QL code they can scan). What about another website that can vouch for their identity - facebook login etc...? Are their details on the electoral register?

Some sites have used approaches such as requiring photos of driving license or passport where there are legal reasons for knowing your customer.

  • No, I'm not really interested in their personal details. just want to know, whether they already got the token?
    – vi.su.
    Mar 28, 2014 at 12:33

As other answers have made clear, the problem as stated does not have a perfect solution, only approximations and disincentives. If you need to establish before creating an account that the user has not already opened one, then there is nothing more to add.

Non immediate approach

However, if it is acceptable to create an account without checking identity, and then gradually over time close accounts that have been identified as duplicates, then you may be able to bring the number of duplicate accounts to an acceptably low level with far less hassle for yourself or your users.

If your users will interact with, for example, a website using their account on a regular basis, then their input can be used to keep a "fingerprint" of their input style. This could be in the form of speed and frequency of mouse movements and keystrokes, use of particular words, phrases, use at particular times of day and week, or anything else that your particular situation makes available. The more different measures you can include the less susceptible your resulting fingerprints will be to oversights or false positives.

Ethical precautions

Ethically I would expect this information to be treated in the same way as actual fingerprints. The user must be informed that the information is being gathered, have the right to request a copy of it or to have it deleted, and have assurance that it will not be shared without their explicit permission. Otherwise it could be used to leak the identity of a person to any unrelated website that has bought their fingerprint.

While this "identity" may not include their name and address, just knowing that a user has an account with a given website may be of value to advertisers or organisations wishing to screen their users, so I would still consider sharing this fingerprint to be unethical without explicit consent.

Relevant prior work

Work has already been done on such fingerprinting. For example, this paper. The link only gives access to the abstract. I could not find a free version of the full article, but the numbers given in the abstract give an idea of how quickly you may be able to create an accurate fingerprint. There is free information at this Wikipedia page. While you will need to store data for every account on your servers, the bulk of the work of gathering, compressing and comparing fingerprints can be done on the users' computers.

This information can be used to highlight potential duplicate accounts, which can then be either closed if you are sufficiently certain, or raised with the user to request identification if giving them the benefit of any doubt. If you are prepared to accept some duplicates existing for the time taken to identify them, then this approach allows the majority of users to never have to provide identification.

Weak points

This approach will not prevent all duplicates. It will be effective with most users, but software could be used to mask typing patterns and even times of day (submitting information while the user sleeps for example). There is also nothing to stop a user from opening a new account and getting a friend to do their typing (providing that friend does not have an account of their own which would then show up as a duplicate).

There are opportunities for false positives which would need to be addressed in order to avoid excluding groups of people. For example, there are a wide variety of reasons that a user might not be able to use the keyboard or mouse and would therefore have someone to type for them. If that person also has an account, it will show up as a duplicate.

All of the problems with identifying people still apply, but this approach allows the identification to only be required for a much smaller set of users.

Unlikely to suit decentralisation

If you wish to provide a token in a one off event, with no possibility of deletion of duplicates that are identified later, then this won't be of any use to you. If (as hinted in one of the question comments) you are looking to set up a decentralised system with one account per person, this approach is not strictly incompatible with decentralisation, but it would need to have a very low rate of false positives when deleting suspected duplicates, especially if the token is linked to monetary value. Another major problem would be protecting the fingerprinting data from being extracted from the decentralised software for use elsewhere.


You could take a look at the Indian Aadhaar program: http://en.wikipedia.org/wiki/Aadhaar Whcih tries to provide each Indian (now +future) with a unique ID, which can also serve for banking etc....

To add a little rant: The question asked by the OP is not a technical one per se. Sure, you could discuss endlessly about identification schemmas etc. but the much more daunting task is the organization of the whole scheme. You need to have offices even in the most rural areas of the world (passport? social security number?) where illiteracy is rampant. Also, you need to have a schema which accomodates high birth rates and even can track children in region where the infrastructure is very sparse. Since India has much of this problems, and it's Aadhaar schema seems tu be sucessful, I would look at it and try to emulate it's practices.

  • 2
    This does not take the rest of the world into account. Mar 31, 2014 at 13:24
  • 1
    @DarrickHerwehe May you could bother to talke a look and interpolate a bit? The program tries to distribute an indentifier to each Indian - which is more than one billion persons. Since most people on this world live in conditions more comparable to India than the west, it would be a good idea to take a hard look on indian procedures. It might be that the number, used for Aadhaar, is too short - but that could be easily remedied. Also, the whole problem is not a technical one, but a social and organizational problem - so the Aadhaar program is a good starting point. Mar 31, 2014 at 13:39
  • 1
    Your originally answer seemed to be suggesting the OP use the Aadhaar ID number. It was not clear you were talking about using the program as a guide. Mar 31, 2014 at 13:45
  • 1
    Search for "Aadhaar fraud" it does not guarantee that someone only gets one number/token.
    – jmoreno
    Mar 31, 2014 at 20:37

Not the answer you're looking for? Browse other questions tagged or ask your own question.