Skip to content

[TSP] Support TSP-level encryption in private/direct rooms #598

@kevinaboos

Description

@kevinaboos

This is the form of "double encryption" that our original TSP support issue (#551) referred to:

  1. Offer a full additional layer of encryption (using TSP text mode) such that even in an encrypted Matrix room, nobody can read your messages even if they hack into your Matrix account and are able to verify it to enable Matrix-level encryption.
    • Additional feature: private messages within a public room. This is a bad idea, as sending un-decryptable messages in a public room would irritate users. This should only be available in private, direct rooms.
    • Implementation idea: use either MessageType::Text with a custom MessageFormat, or a custom MessageType entirely for TSP-encrypted messages.

Implementation Notes

  • We need to add another checkbox (or perhaps a dropdown or multi-state selector widget) that allows the user to enable/disable TSP
    • TSP-encrypting a message should automatically check/enable the TSP-sign checkbox too, since TSP encryption is a superset of signing.
  • A TSP-encrypted message must have a specific intended receiver, so we need a way to allow the user to select a specific user.
    • Initially, this will only be available in rooms where there are two people, so that shouldn't be needed since the other user will implicitly be the recipient.
    • It must also only be available when the other user in the room has been verified using TSP and their TSP DID has been associated with their Matrix User ID, which is obvious when looking at the User Profile Sliding Pane for their user.
  • When sending a TSP-encrypted message, we need to show a positive confirmation modal to confirm that the user actually wants to send a TSP-encrypted message.
    • Something like "Warning: sending a TSP-encrypted message can only be decrypted and read by the single target recipient, and only if they have the original TSP wallet with your verified identity in it."

Metadata

Metadata

Assignees

No one assigned

    Labels

    tspTrust Spanning Protocol

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions