Universal Identification System
Peter Jin's Universal Identification System (UIS) allows various identities (business, individual, application-specific) to be described using a single string. The system allows a wide variety of identifiers to be specified using a common format that describes the "registry" associated with it in addition to the identifier from the registry itself.
This system is intended to allow various identifiers from various registries to be used to make a specification globally unique in all contexts, without unfairly benefiting any single organization. For example, a user-defined system call interface may require near-guaranteed uniqueness, but operating a registry of identifiers for it may be impractical.
Yes, I know about this comic. However, this standard is intended to be impartial and compatible with all other standards. The reason why USB replaced a lot of other standards was that its interface allowed pretty much any previous standard (parallel, serial, PS/2, etc.) to be replaced by it. Nor do the "registries" described here necessarily compete with each other.
The "D" identifier category is used to create an identification prefix based on a domain name that the user owns. Unlike "I" and "S", the owner of the domain name may use the identification prefix without restriction or registration. Ownership is determined by having unrestricted DNS access to the domain name in question.
The domain described by "D" must have at least two labels and must not be an ICANN public suffix. No one has control of "localhost", "test", "example", or "invalid", and control of .onion domains is determined by having the private key associated with the .onion domain.
The "E" identifier category is used to create an identification prefix based on an email address (per RFC 822) that the user owns.
The "H" identifier category is structurally identical to "D", except that if the user does not have nameserver access to the domain, but can control the contents of the site, then the user has authority over it. For example, blogspot.com, appspot.com, wixsite.com, etc.
The "I" identifier category is similar to "S", but it allows an identifier type to be specified. Like "S", they may only be used per a central registry. However, as an exception, if the identifier type is a string of at least 32 random hex or alphanumeric digits, then they can be assigned autonomously, provided that the user already has an identifier at the domain name in question.
The "L" identifier category is intended to be used exclusively within an organization or application. It is intended to allow organizations to use short, memorable names that are not intended to be globally unique. For example, L/website could mean different things in different organizations.
The "P" identifier category is used to create an identification prefix based on a phone number that the user owns. The number must be specified in E.164 international format without the leading "+".
The "S" identifier category is used to identify social media usernames. For the purposes of this definition, a "social media username" is used to refer to a login username associated with a site, where the login username is the primary means of identifying per-user activity on that website, and where such username does not directly or necessarily correlate with an IP address, browser cookie, or email address. The format is the primary domain associated with the social media website, reversed, followed by a slash, followed by the username.
"S" identifiers are allocated based on a central registry (this page). The owner of the domain name cannot define their S/ identifier prefix themselves unless they are registered here.
The "T" identifier category is used to create identifiers that are not associated with a domain name but must be kept unique in a particular area. Examples include 1-800 numbers in certain countries where the numbers are not available in international format (Ireland, Australia, etc).
Subidentifier categories may only be allocated if the identifier being described is handled by a central registry and is used by a majority of the population, and the central registry is primarily intended to ensure uniqueness rather than being a monopoly.
The "U" identifier category is used to create an identification prefix based on a random identifier. At least 40 hexadecimal or alphanumeric digits must be specified. Like "Z", identifiers cannot be guaranteed to be unique.
The "Z" identifier category is used to create an identification prefix based on a hash of a public key. The user must prove possession of the private key associated with the public key hash, usually via cryptographic signature.
Note that due to possible hash collisions, identifiers in the "Z" category cannot be guaranteed to be unique.
- S/com.twitter/[Twitter username]/
- S/com.reddit/[Reddit username]/
- S/com.linkedin/[LinkedIn username]/
- S/com.github/[GitHub username]/
- I/com.dnb:duns/[Dun and Bradstreet DUNS number, without dashes]/
- I/gov.irs:ein/[IRS business tax number]/
- I/org.ieee:eui48/[EUI-48 of a device they own]/
- Z/rsa2048-sha256/[SHA256 sum of 2048-bit RSA key]/
- U/[string of at least 40 hexadecimal or alphanumeric digits]/
If an international domain name is used, then the punycode must be used instead.
All identifiers are subdelegatible -- the owner of the prefix may use identifiers that follow it for itself or it can operate its own registry underneath the identifier.
While peterjin.org may operate a registry separate from other registries, it shall not be given a separate letter category for it.
For all the purposes stated above, a registry is any entity that maintains a database of identifiers and ensures that no two objects or entities which can be given such identifiers are given the same identifier.
Not yet operational
peterjin.org operates a web service under the prefix D/org.peterjin.time-ident/ that gives a unique identifier based on the current date and time. The application is designed so that no two page views will generate the same identifier.