← All posts
e2eeprivacyv1.8
Opt-in end-to-end encryption for private chats
DMs and group DMs can now be encrypted on your devices, so the server stores only ciphertext. Here is how it works, why it is off by default, and what it does not protect.
nadirisimOctober 1, 20265 min read
Turning it on
Open a DM or group DM, choose ⋯ → Encrypt this chat, read the warning and confirm. From then on, new messages and attachments in that chat are encrypted on the sender's devices and decrypted on the recipients' devices. A lock in the chat header shows the chat is encrypted.
Encryption is per chat and one-way. Once a chat is encrypted it stays encrypted. Messages sent before you turned it on stay as they were. Community channels are not end-to-end encrypted.
Why it is opt-in
End-to-end encryption moves responsibility for your keys from the server to you. If you lose every signed-in device and your recovery key, nobody can get those messages back, including me. That is a real cost, so it should be a choice you make with the warning in front of you, not a default that surprises you later.
Encrypted chats also lose some features by design: server search, link previews, mention parsing and bots cannot read encrypted messages, and push notifications show a generic text instead of the message.
How it works
- Each device creates its own key pairs with the browser's Web Crypto API (P-256 ECDH and ECDSA). The private keys are stored as non-extractable keys and never leave the device.
- Every message gets a fresh content key and is encrypted with AES-256-GCM. That content key is then wrapped separately for each recipient device.
- Messages are signed by the sending device, so a recipient can detect tampering.
- Attachments get their own random key. The server receives only opaque file ciphertext.
New devices and recovery
Since v1.8.1, adding a device is a QR scan: open an encrypted chat on the new device, choose Link this device, and approve it in Settings → Sessions on a device you already use. The recovery key stays as a fallback if you lose all of your devices. Keep it somewhere safe and offline.
Verifying who you talk to
Each encrypted chat has safety numbers and a QR code. Compare them with your contact in person or over another channel. If they match, you are talking to the devices you expect. If a contact's numbers change unexpectedly, find out why before you trust the chat again.
What it does not protect
I would rather you know the limits than overestimate the protection.
Read the full list on the encryption warning page before you turn it on.
- Metadata stays visible. The service still sees who is in a chat, when messages are sent, their sizes, and IP addresses.
- No full forward secrecy. There is no Double Ratchet. If a device's long-term key is stolen, messages recorded for that device can be decrypted.
- The server delivers the app. The web client, desktop app and Android app all load code from disdroc's server. A compromised server could serve a changed client. Public client source helps people check the code, but it does not remove this trust.
- Reports reveal content. When you report an encrypted message, the report includes the key for that message so it can be reviewed.
- Your device is still your device. Encryption does not help if your browser, phone or computer is compromised.
What is next
Encryption has not yet had a long real-world trial with many users. If something goes wrong, for example a chat that says it cannot decrypt, please tell me through Support. Those reports are the most useful thing right now.
Nasıl açılır
Bir DM veya grup DM aç, ⋯ → Bu sohbeti şifrele yolunu izle, uyarıyı oku ve onayla. Bundan sonra o sohbetteki yeni mesajlar ve ekler gönderenin cihazında şifrelenir, alıcıların cihazında çözülür. Sohbet başlığındaki kilit, sohbetin şifreli olduğunu gösterir.
Şifreleme sohbet başınadır ve geri alınamaz. Şifrelenen sohbet şifreli kalır. Şifrelemeyi açmadan önce gönderilen mesajlar olduğu gibi kalır. Topluluk kanalları uçtan uca şifrelenmez.
Neden isteğe bağlı
Uçtan uca şifreleme, anahtarlarının sorumluluğunu sunucudan sana taşır. Oturum açık tüm cihazlarını ve kurtarma anahtarını kaybedersen, o mesajları ben dahil kimse geri getiremez. Bu gerçek bir bedel; bu yüzden uyarıyı okuyarak verdiğin bir karar olmalı, sonradan seni şaşırtan bir varsayılan değil.
Şifreli sohbetler bazı özellikleri bilinçli olarak kaybeder: sunucu araması, bağlantı önizlemeleri, bahsetme ayrıştırma ve botlar şifreli mesajları okuyamaz; anlık bildirimler mesaj yerine genel bir metin gösterir.
Nasıl çalışıyor
- Her cihaz, tarayıcının Web Crypto API'siyle kendi anahtar çiftlerini oluşturur (P-256 ECDH ve ECDSA). Özel anahtarlar dışa aktarılamaz olarak saklanır ve cihazdan hiç çıkmaz.
- Her mesaj yeni bir içerik anahtarı alır ve AES-256-GCM ile şifrelenir. Bu içerik anahtarı her alıcı cihaz için ayrı ayrı sarılır.
- Mesajlar gönderen cihaz tarafından imzalanır; alıcı değiştirilmiş bir mesajı fark edebilir.
- Eklerin kendi rastgele anahtarı vardır. Sunucu yalnızca anlamsız şifreli dosya verisini alır.
Yeni cihazlar ve kurtarma
v1.8.1'den beri cihaz eklemek bir QR taraması kadar kolay: yeni cihazda şifreli bir sohbet aç, Bu cihazı bağla'yı seç ve zaten kullandığın bir cihazda Ayarlar → Oturumlar bölümünden onayla. Tüm cihazlarını kaybedersen kurtarma anahtarın yedek yol olarak kalır. Onu güvenli ve çevrimdışı bir yerde sakla.
Kiminle konuştuğunu doğrulamak
Her şifreli sohbetin güvenlik numaraları ve bir QR kodu vardır. Bunları kişiyle yüz yüze veya başka bir kanaldan karşılaştır. Eşleşiyorsa beklediğin cihazlarla konuşuyorsun. Bir kişinin numaraları beklenmedik şekilde değişirse, sohbete yeniden güvenmeden önce nedenini öğren.
Neyi korumaz
- Meta veriler görünür kalır. Hizmet, sohbette kimlerin olduğunu, mesajların ne zaman gönderildiğini, boyutlarını ve IP adreslerini görmeye devam eder.
- Tam ileri gizlilik yok. Double Ratchet yok. Bir cihazın uzun vadeli anahtarı çalınırsa, o cihaz için kaydedilmiş mesajlar çözülebilir.
- Uygulamayı sunucu dağıtır. Web istemcisi, masaüstü ve Android uygulaması kodu disdroc sunucusundan yükler. Ele geçirilmiş bir sunucu değiştirilmiş bir istemci sunabilir. Herkese açık istemci kodu incelemeye yardımcı olur ama bu güveni ortadan kaldırmaz.
- Şikâyetler içeriği açar. Şifreli bir mesajı şikâyet ettiğinde, incelenebilmesi için şikâyet o mesajın anahtarını içerir.
- Cihazın yine senin cihazın. Tarayıcın, telefonun veya bilgisayarın ele geçirilmişse şifreleme yardımcı olmaz.
Sırada ne var
Şifreleme henüz çok kullanıcılı, uzun bir gerçek dünya denemesinden geçmedi. Bir sorun olursa, örneğin bir sohbet mesajları çözemediğini söylerse, lütfen Destek üzerinden bana yaz. Şu anda en yararlı şey bu bildirimler.