A registration process to acquire an anonymous, verified account goes like this:
- Registrant provides proof of individuality to a Registrar.
- Registrar verifies proof, ensures no prior registration, and directs Registrant to a Teller.
- Teller provides Registrant with anonymous account credentials.
At this point, the Registrant has an account, and only one account. The Registrant hereinafter is a Registered User (simply, User).
A User can lose (accidentally, or deliberately) their anonymous credentials.
- the anonymity of a User's account remain cryptographically secure (even to third-parties who have complete database and source code access), such that discovering either the anonymous account or the registration credentials will not reveal that they belong to the same individual;
- registration of duplicate accounts be prevented; and
- a User retrieve their lost (or misplaced) account credentials, and only theirs?
I thought homomorphic encryption might be useful here, but I've read it is currently too computationally intensive.
(If this would be better suited for Crypto SE, please migrate it.)