Each user of the system is represented by an Upspin user name, which looks like an email address; a public/private key pair; and the network address of a directory server:
That directory server holds a hierarchical tree of names pointing to the user's data, which is held in a store server, possibly encrypted. Each item in the tree is represented by a directory entry containing a list of references that point to data in the store server:
All the users are connected through a central key server at
key.upspin.io, which holds the public key and directory server address for each user.
This is how the pieces fit together:
From top to bottom, these represent:
To illustrate the relationship between these components, here is the sequence of requests a client exchanges with the servers to read the file
email@example.com). The key server‘s response contains the name of the directory server holding that user’s tree (
dir.upspin.io) and Augie's public key.