Design for contact handling for encryption/authentication support #299
conradoplg
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Context: the encryption&authentication itself was designed here, but the requirement of registering other people's public key ripples through all the solution.
In the design below I created a
frost-client
tool which will handle most of the things; we could also extend it to incorporate thetrusted-dealer
,dkg
,participant
andcoordinator
tools as subcommands.These are a bit rough and might need cleanup.
Design
Assumptions
with other participants.
(or download in-band and verify fingerprint out-of-band).
different groups if they wish (to be confirmed). (Otherwise they
can be linked across groups)
authentication (to be confirmed)
Server goals
The FROST server has the following goals:
This can be done without user registration, by creating a session with a list
of public keys, and by either sharing the session ID out-of-band, or by
allowing getting the list of sessions you're in (which will require authentication
by key pair).
(pass a list of users instead of pubkeys) and easier to get sessions you're
in (authenticate with the password and get the list of sessions linked to
the user).
This means that are 3 possible ways to use the server:
Design
Inspired by
cargo login
, which authenticates with a server and savesauthentication token to
$CARGO_HOME/credentials.toml
.In this case, information will be stored in
$HOME/.frost/credentials.toml
which I'll refer to as "config".
frost-client init [--username USERNAME] [--server-url SERVER_URl]
registers user in the server. Saves USERNAME in the config, in a map keyed
by SERVER_URL.
config file via a new flag? (TODO: decide)
frost-client login --username USERNAME --server-url SERVER_URl
in the config, in the same map keyed by SERVER_URL.
authentication mechanism to the server.
frost-client export --name NAME [--server-url] SERVER_URL
along with the (text) NAME specified, and the username associated with the
given server-url, if any.
init
instead? (TODO: decide)frost-client import CONTACT
and username
frost-client contacts
frost-client dkg [--users USERS] [--pubkeys PUBKEYS] [...more DKG params]
username/password auth, while PUBKEYS will allow keypair auth.
USERS/PUBKEYS->identifier mapping)
should be freely chosen, then participants will be required to send them
when starting the process.
frost-client groups
participant
orcoordinator
:Use a group name? Or simply the group public key?)
dkg
could use USERs os PUBKEYsBeta Was this translation helpful? Give feedback.
All reactions