Identity indirection (Extensible profiles as rooms) #19
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Identity indirection (Extensible profiles as rooms)
Upstream:
Related: #14, #18
Goals
Demo design (interdependencies not yet considered)
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
The key word "SPLIT" represents a reference to a nonexistant proposal which the author(s) believe may bolster the current design problem. Italicized title-cased names MUST refer to pre-specified concepts as described in version 1.7 of the Matrix specification. Non-italicized title-cased names refer to a previously established context from another referenced proposal (Atoki discussion or Matrix Spec Proposal (MSC)) or the currently proposed design.
The following proposal is an exploratory draft and MUST NOT be implemented.
We specify an encrypted, signed Room Event field,
profile_room, that MUST be attached (how?) to user-initiated Room Events which may concern room consumers (TBD) containing a Profile Room Reference.When the
profile_roomField is not specified, implementors MUST fall back to use of them.room.memberevent as in the previous Specification.(note: This can be contained to the instant messaging usecase more cleanly with a design alike to MSC1767; out-of-scope for this.)
Profile Room Reference
A Profile Room Reference is a Room Alias which MUST satisfy all of the following invariants:
localpartSHOULD be a securely randomly-generated string.m.room.createsent by the User now known as the Owning User.m.room.join_ruleswith a Eventcontentofjoin_ruleset topublic.m.room.power_levelsprohibiting other users from sending any events other thanm.room.member.m.room.history_visibilitywith a Eventcontentofhistory_visibilityset tosharedorworld_readable.m.room.history_visibilitywith a Eventcontentofhistory_visibilityset tosharedorworld_readable.m.room.history_visibilitywith a Eventcontentofhistory_visibilityset toshared. (TBD: Look at reasons to allow anything else, especiallyworld_readable)org.atoki.profile_roomwhich MUST fulfill all of the following invariants:100by default unless otherwise specified by the User in them.room.power_levelsState Event.contentMUST fulfill the following MSC1767 Extensible Event schema: (TBD: Incomplete, rough draft, pseudocode, should be split into its own section)To be done
I think such idea should also try to fulfill following goals:
I have already explained briefly how to implement that in my comment here: #18 (comment)
However, I would avoid using room encryption for profile encryption, as MegOLM or MLS (the algorithms for room encryption) require all recipients to be member of that room, increasing the complexity for the encryption (and publishing the social graph of users). My idea was to use a symmetric key encryption similar to how files are encrypted. However, the encrypted content gets stored in the profile room, while the key gets attached wherever the profile is used.
I maybe can find sometime at the weekend to adapt your demo design to incorporate my ideas in a proper demo design. (As always, any constructive feedback is appreciated)
hi! (:
yeah! we thought of this while writing this line:
but it seems it slipped the requirements|goals section, thank you for bringing it back (:
this appears to be a subset of the greater opaque (client side processing only) vs. transparent (MITM, but server can help us with compute if we trust it) problem.
i think it is up to the user's threat/convenience model, hence the dual-path encrypted/unencrypted profile rooms.
mhm, that was added to the appendix ("to be done") a while ago after a friend (->artemis) pointed it out <3
i did not consider how these two points overlap with the encryption codepath! excellent
<forked into a comment there (link TBD)>
i love this bit too, but why symmetric? that seems quite odd. ed25519 keys are pretty small, but i wonder if post-quantum public keys are significantly longer.