Skip to content

Proposal: Make primary user identity a public/private keypair #220

@ghost

Description

I'll just leave this here. There are some notes I quickly jotted into my phone. Let me know if there is interest in this, and I'll type something up that more closely resembles actual prose.

Related-To: #203 #63 #65


  • Replace user/pass with public key identity.

  • Every user is their key fingerprint.

  • Key is optionally and by default kept on the server, passphrased.

  • Client keeps a local copy of the key, if possible, allowing for account recovery in case server loses the key blob.

  • Server never sees the passphrase - private key is downloaded from the server by the client, decrypted with the passphrase, and used to sign in. (*Need some mechanism that prevents downloading all key blobs from HS, possibly use an alternative s2k algorithm on the passphrase to unlock download.)

  • Also clears the way for true account migration. (Link in spec leading nowhere #712)

  • On joining a room, send a BIND_HS message to bind the decentralized ID to the homeserver and local identity.

  • On migrating an account, the same BIND_HS can be sent to change the homeserver.

  • A given decentralized ID can only exist on one HS at a time (per room).

  • The e2e keys could be signed with the account key, providing a single identity for all a user's devices, including future devices.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-Client-ServerIssues affecting the CS APIA-Identity-ServiceA-S2SServer-to-Server API (federation)featureSuggestion for a significant extension which needs considerable considerationroom-vNextAn idea which will require a bump in room version

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions