How to connect with Element (previously Riot)
The procedure for all clients is the same:
- Select Sign-In
- Configure https://staffchat.ethz.ch as the server (except chat.ethz.ch → already preconfigured)
- Login with your ETH credentials
Element offers true end-to-end encrypted (E2EE) communication, meaning no-one else can eavesdrop on your conversations, not even server admins. Element uses the best end-to-end encryption available today. Encryption is kept friendly with features like secure key backup, which allow you to recover your encrypted data even if you lose or break a device. Advanced features like verification highlight if a user's account may be compromised.
What is Key Backup?
When key backup is enabled, your device will maintain a secure copy of its keys on our server. To ensure those keys can only ever be accessed by you, they are encrypted on your device, with a key that you either store yourself, or secure with a passphrase and upload to our server. It is important to understand that to protect your privacy your keys will never touch our systems unencrypted.
What is a 'device'?
For historical reasons, when we say 'device' we don't mean your phone or your laptop - you actually create a new 'device' each time you log in on Matrix (and destroy it again when you log out).
What does it mean to verify or trust a device in Element?
Element uses trust to represent an additional layer of security within the app, over and above username and password authentication.
If somebody is sending messages as Alice, we know that they have access to Alice's account - either they've logged in with Alice's username and password, or they're using a logged in session, perhaps on Alice's phone. Usually, that somebody is going to be Alice. Unfortunately, in the real world, passwords can be guessed or sniffed and phones can be stolen. Element's trust mechanism is designed to mitigate this. In Element, you can see every device that has joined an encrypted conversation. If a new and unexpected device joins, you can use device verification to check that it's really Alice. And if you suspect that a trusted device has fallen into the wrong hands, you can revoke that trust and remove its access to the ongoing encrypted conversation.
With the rollout of Element (Web, Desktop) version 1.6.0+, the verification procedure has been massively improved. Instead of verifying and trusting all devices of your conversation partners, you just have to verify and trust other persons (accounts). On the other hand, each person verifies and trusts their own devices.
With the update, new direct messages will be encrypted by default. Element will also suggest to enable encryption if you create a new private room. If you do not want that, just unselect Enable end-to-end encryption on the Create a private room dialog to turn off encryption. If the room to be created is intended to be a public room, then do not use encryption. End-to-end encryption can never be disabled once it is enabled.
Key Storage and Recovery Passphrase
End-to-end encryption in Element has to manage many encryption keys. All these keys are stored securely on our server. In order to do that, an additional password is required to encrypt the key storage. The two passwords for Element are named as follows:
- Account password: This is your ETH ldap password
- Recovery passphrase: Another secure password
There is an additional safety net called the 'recovery key', which you can use to restore access to your encrypted messages if you forget your recovery passphrase. We recommend to keep a copy of it somewhere secure, like a password manager or even a safe.
Important note: Should you forget your 'recovery passphrase' and lose your 'recovery key', your encrypted conversations could be lost! Not even server admins can help you in that case.
Setting up Encryption
After you sign in to Element for the first time, you are asked to set up your encryption. The first step is to set your 'recovery passphrase':
After confirming the password, it will show your recovery key:
Copy it and store the key in a safe place as mentioned above or as suggested on the next screen:
If you have used an earlier Element version (<= 1.5.x), you will be asked to upgrade your encryption after the update to the new Element version 1.6.x (Web, Desktop):
If you login to a new session, you will be prompted to do that right after the login. The steps for the upgrade may look different depending on your previous configuration. If you have not set up the Key storage (see below) so far, see Set up encryption (above). Otherwise you will asked to enter your Account password now:
After that you will asked to enter your Recovery passphrase:
This will upgrade your encryption keys and verify the session.
Should you have used Element on other devices without logging out, you will be asked to verify these sessions:
You can try that right now or just click Later (recommended).
You may also review and cleanup your existing sessions in Settings > Security & Privacy > Sessions. The example below will delete old sessions, that are no longer needed. If this session is still in use on another device, it will be logged out immediately.
To verify your other sessions, select a Room > Members > Yourname:
Element is similar to email regarding security precautions you should take (see Use email with care). Anyone on the Internet can contact you, send you spam and viruses or try a phishing attack. However, Element has advanced features to confirm your correspondent's identity, which makes it much more secure than email.
The 'displayname' is an arbitrary name that users can set as they wish. This is the name you will see in Element's message history. The 'MXID' (Matrix ID) is better suited to confirm an identity. It has the following format:
You can check it by hovering over the avatar (picture) next to the name in the message history. Click on the avatar, which will open the right sidebar with additional information about that user:
Our server uses latest Transport Layer Security (TLS) standards. This encrypts all traffic from your client to the server. You may still see
Send a message (unencrypted).... This means that the message you send will not be using end-to-end encryption (e2ee). If e2ee is enabled (the default, starting from Element version 1.6.0), your messages and files are encrypted before they leave your device, and stay encrypted until they reach the other participants' devices. End-to-end encrypted messages can only be read by the participants in the conversation.
Federation (where is my data stored?)
See how federation works. Rooms are decentralized and could be synced to other Matrix homeservers. As long as all participants in a room are on our server (domainpart of MXID =
staffchat.ethz.ch), the message history is on our server only. If ETH external participants (or from other domains) join the room, the message history will be synced with the homeservers that holds their account. You can control that by setting the room to invite only and carefully choose who may join.
Please refer to our Element page to learn the basics about room permissions and moderators.
Moderating unwanted content or spam
If you are the administrator of a large room or if your room is public, you have some tools to remove unwanted content or block spammers. Element provides an interface for some basics, like kicking or banning users. Please refer to the official documentation about room moderation for more information. It includes an example on how to use server ACLs to block malicious servers from interacting with a room (just be careful not to lock yourself out). To learn more about ACLs or blocking other servers, refer to:
Locking down a public room
This will make a room accessible from the Staffchat homeserver only. Servers which were already participating in that room over federation will not receive any new events.
Warning: The steps below cannot be undone. Be careful when deploying server ACLs. It is very well possible to completely lock a room. It would be lost forever.
We will now use the developer tools in Element (Web/Desktop) to send a custom state event to the room. Open the developer tools by entering the following command in Element:
Now select Send Custom Event:
- Click on the red Event button in the lower-right corner to switch to State Event mode
- As Event Type set:
- Add the following Event Content:
Finally click Send
You should now get a confirmation message that the event was sent.
You can later review the settings. Just open the devtools again and select Explore Room State > m.room.server_acl: