每一个 Matrix 身份都是一个 Matrix 用户 ID(MXID),格式是:
@本地名:服务器名
比如:
@alice:your-name.meldry.com
@ 是 前缀符号(sigil),表示这是一个用户。其他前缀还有 ! 代表房间、# 代表房间别名、$ 代表事件(详见下)。[a-z0-9._=-],老账户里可能出现 /,总长度上限 255 字符。大小写一般保留但比较时不区分。MXID 是永久的。你的 显示名(人类友好的名字,如"Alice Chen")和 头像 可以随时修改;MXID 不能。这在用户之间相互验证身份时很关键——你验证的是 MXID,不是显示名,因为显示名容易伪造。
Matrix 用四种前缀字符区分标识符的种类:
| 前缀 | 含义 | 示例 |
|---|---|---|
@ | 用户(账户) | @alice:your-name.meldry.com |
! | 房间(内部 ID) | !AbCdEfGhIjKlMn:server |
# | 房间别名(人类友好名字) | #general:your-name.meldry.com |
$ | 事件(消息、反应等) | $event_hash:server |
内部房间 ID(!…)是不透明的且永久唯一。房间别名(#general:server)只是一个 指向 某个房间 ID 的人类友好指针;同一个房间可以有多个别名,管理员可以随时修改。
你还可以给 Matrix 账户绑定一些"外部"标识:邮箱、手机号,以及(历史遗留的)Microsoft / Google 账户。这些 3PID 让别人即便不知道你的 MXID,也可以通过邮箱或电话号码找到你。绑定信息保存在一个 身份服务器 里(Meldry 自带一台),随时可以解绑。
bob@example.com 邀请到一个房间。3PID 查找是 opt-in 的:你必须显式绑定这个 3PID 才会被发现。很多 Matrix 用户只有一个本地名,完全匿名运行,从来不碰 3PID。
身份服务器是一个典型的隐私权衡。绑定后你获得可发现性,但也"广播"了"这个 3PID 属于 Matrix 用户"这一事实。Meldry 的身份服务器按工作区隔离——外部服务器无法枚举你的工作区。如果你不在乎被人用邮箱找到,干脆别绑。
当你从一个新客户端(笔记本、手机、平板、服务端机器人)登录时,主机服务器会给这个会话分配一个 设备 ID(例如 WOXXHRVJKP)。一个 MXID 可以同时拥有很多设备 ID,每个你登录过的地方对应一个。
设备是 E2EE 信任的基本单位:当有人验证"Alice"时,实际验证的是 Alice 的跨签名密钥,而跨签名密钥又为 Alice 所有设备背书。新设备加入后需要重新被验证(或者通过跨签名自动继承信任,这个我们在加密那一章里讲)。
当你注册 Meldry 工作区时,我们会自动在你的主机服务器上创建一个 Matrix 用户:
后续的用户(你的队友)要么由你在仪表板里创建,要么你开放自助注册后用户自己创建。每个人都在同一台主机服务器上有自己的 MXID。