109 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
| ======================
 | |
| Third Party Identities
 | |
| ======================
 | |
| 
 | |
| A description of how email addresses, mobile phone numbers and other third
 | |
| party identifiers can be used to authenticate and discover users in Matrix.
 | |
| 
 | |
| 
 | |
| Overview
 | |
| ========
 | |
| 
 | |
| New users need to authenticate their account. An email or SMS text message can 
 | |
| be a convenient form of authentication. Users already have email addresses 
 | |
| and phone numbers for contacts in their address book. They want to communicate
 | |
| with those contacts in Matrix without manually exchanging a Matrix User ID with 
 | |
| them.
 | |
| 
 | |
| Third Party IDs
 | |
| ---------------
 | |
| 
 | |
| [[TODO(markjh): Describe the format of a 3PID]]
 | |
| 
 | |
| 
 | |
| Third Party ID Associations
 | |
| ---------------------------
 | |
| 
 | |
| An Associaton is a binding between a Matrix User ID and a Third Party ID (3PID).
 | |
| Each 3PID can be associated with one Matrix User ID at a time.
 | |
| 
 | |
| [[TODO(markjh): JSON format of the association.]]
 | |
| 
 | |
| Verification 
 | |
| ------------
 | |
| 
 | |
| An Assocation must be verified by a trusted Verification Server. Email 
 | |
| addresses and phone numbers can be verified by sending a token to the address 
 | |
| which a client can supply to the verifier to confirm ownership.
 | |
| 
 | |
| An email Verification Server may be capable of verifying all email 3PIDs or may
 | |
| be restricted to verifying addresses for a particular domain. A phone number
 | |
| Verification Server may be capable of verifying all phone numbers or may be
 | |
| restricted to verifying numbers for a given country or phone prefix.
 | |
| 
 | |
| Verification Servers fulfil a similar role to Certificate Authorities in PKI so
 | |
| a similar level of vetting should be required before clients trust their
 | |
| signatures.
 | |
| 
 | |
| A Verification Server may wish to check for existing Associations for a 3PID 
 | |
| before creating a new Association.
 | |
| 
 | |
| Discovery
 | |
| ---------
 | |
| 
 | |
| Users can discover Associations using a trusted Identity Server. Each 
 | |
| Association will be signed by the Identity Server. An Identity Server may store
 | |
| the entire space of Associations or may delegate to other Identity Servers when
 | |
| looking up Associations.
 | |
| 
 | |
| Each Association returned from an Identity Server must be signed by a 
 | |
| Verification Server. Clients should check these signatures.
 | |
| 
 | |
| Identity Servers fulfil a similar role to DNS servers.
 | |
| 
 | |
| Privacy
 | |
| -------
 | |
| 
 | |
| A User may publish the association between their phone number and Matrix User ID
 | |
| on the Identity Server without publishing the number in their Profile hosted on
 | |
| their Home Server.
 | |
| 
 | |
| Identity Servers should refrain from publishing reverse mappings and should 
 | |
| take steps, such as rate limiting, to prevent attackers enumerating the space of
 | |
| mappings.
 | |
| 
 | |
| Federation
 | |
| ==========
 | |
| 
 | |
| Delegation
 | |
| ----------
 | |
| 
 | |
| Verification Servers could delegate signing to another server by issuing 
 | |
| certificate to that server allowing it to verify and sign a subset of 3PID on 
 | |
| its behalf. It would be necessary to provide a language for describing which
 | |
| subset of 3PIDs that server had authority to validate. Alternatively it could 
 | |
| delegate the verification step to another server but sign the resulting
 | |
| association itself.
 | |
| 
 | |
| The 3PID space will have a heirachical structure like DNS so Identity Servers
 | |
| can delegate lookups to other servers. An Identity Server should be prepared 
 | |
| to host or delegate any valid association within the subset of the 3PIDs it is 
 | |
| resonsible for.
 | |
| 
 | |
| Multiple Root Verification Servers
 | |
| ----------------------------------
 | |
| 
 | |
| There can be multiple root Verification Servers and an Association could be
 | |
| signed by multiple servers if different clients trust different subsets of
 | |
| the verification servers.
 | |
| 
 | |
| Multiple Root Identity Servers
 | |
| ------------------------------
 | |
| 
 | |
| There can be be multiple root Identity Servers. Clients will add each
 | |
| Association to all root Identity Servers.
 | |
| 
 | |
| [[TODO(markjh): Describe how clients find the list of root Identity Servers]]
 | |
| 
 | |
| 
 |