posts: encrypted_XMPP: update draft

This commit is contained in:
He4eT 2026-04-16 03:11:28 +02:00
commit 77415af136

View file

@ -57,7 +57,7 @@ XMPP Extension Protocol (XEP)
for secure multi-client end-to-end encryption. for secure multi-client end-to-end encryption.
You can read more about You can read more about
it&nbsp;on&nbsp;a&nbsp;<a it&nbsp;on&nbsp;a&nbsp;<a
href='https://contrapunctus.codeberg.page/the-quick-and-easy-guide-to-xmpp.html' href='https://conversations.im/omemo/'
target='_blank'>dedicated page by&nbsp;Daniel Gultsch</a>. target='_blank'>dedicated page by&nbsp;Daniel Gultsch</a>.
**Client**, in&nbsp;this post, **Client**, in&nbsp;this post,
@ -143,13 +143,10 @@ clients publish their own fingerprints to&nbsp;the XMPP server
and automatically receive the fingerprints of&nbsp;others. and automatically receive the fingerprints of&nbsp;others.
Only fingerprints you explicitly mark as&nbsp;trusted are relevant. Only fingerprints you explicitly mark as&nbsp;trusted are relevant.
In&nbsp;an&nbsp;ideal scenario, the contact should confirm in&nbsp;person In&nbsp;an&nbsp;typical scenario, the contact should confirm in&nbsp;person
or&nbsp;through an&nbsp;already trusted and secure communication channel or&nbsp;through an&nbsp;already trusted and secure communication channel
that the fingerprint belongs to&nbsp;their device, that the fingerprint belongs to&nbsp;their device,
and only then you mark it&nbsp;as&nbsp;trusted. and only then you mark it&nbsp;as&nbsp;trusted.
In&nbsp;most XMPP clients this is&nbsp;simply done
by&nbsp;ticking a&nbsp;checkbox
or&nbsp;by&nbsp;scanning a&nbsp;QR&nbsp;code.
The list of&nbsp;trusted fingerprints The list of&nbsp;trusted fingerprints
is&nbsp;used at&nbsp;the moment a&nbsp;message is&nbsp;sent. is&nbsp;used at&nbsp;the moment a&nbsp;message is&nbsp;sent.
@ -226,8 +223,8 @@ but you shouldnt rely on&nbsp;them to&nbsp;hide anything.
### Maintenance ### Maintenance
OMEMO was designed as&nbsp;a&nbsp;set-it-and-forget-it solution, OMEMO was designed as&nbsp;a&nbsp;set-it-and-forget-it solution
and it&nbsp;mostly succeeds in&nbsp;that goal. and mostly succeeds in&nbsp;that goal.
If&nbsp;you have a&nbsp;basic understanding of&nbsp;how the protocol works If&nbsp;you have a&nbsp;basic understanding of&nbsp;how the protocol works
and check in&nbsp;online from time to&nbsp;time, and check in&nbsp;online from time to&nbsp;time,
there shouldnt be&nbsp;any surprises. there shouldnt be&nbsp;any surprises.
@ -306,12 +303,7 @@ Lets say Bob and I&nbsp;start discussing something
on&nbsp;a&nbsp;forum or&nbsp;in&nbsp;the Fediverse, on&nbsp;a&nbsp;forum or&nbsp;in&nbsp;the Fediverse,
and then decide to&nbsp;continue the discussion on&nbsp;XMPP. and then decide to&nbsp;continue the discussion on&nbsp;XMPP.
Bob starts the chat. Before starting the chat,
I&nbsp;trust the first device he&nbsp;messages me&nbsp;from,
and then we&nbsp;exchange fingerprints for our other devices,
if&nbsp;we&nbsp;have any.
This approach is&nbsp;called TOFU (Trust On&nbsp;First Use).
Bob can confirm its really me&nbsp;using my&nbsp;page with fingerprints. Bob can confirm its really me&nbsp;using my&nbsp;page with fingerprints.
I&nbsp;can confirm its really him I&nbsp;can confirm its really him
by&nbsp;asking him to&nbsp;send his fingerprints by&nbsp;asking him to&nbsp;send his fingerprints
@ -321,6 +313,16 @@ Ideally, Bob also has a&nbsp;public page with his fingerprints.
That way, we&nbsp;can both independently verify That way, we&nbsp;can both independently verify
that we&nbsp;are who we&nbsp;say we&nbsp;are. that we&nbsp;are who we&nbsp;say we&nbsp;are.
In&nbsp;an&nbsp;alternative scenario,
where there has been no&nbsp;prior communication or&nbsp;public pages
and only a&nbsp;single JID&nbsp;is known,
things play out a&nbsp;bit differently:
Bob starts the chat,
I&nbsp;trust the first device he&nbsp;messages me&nbsp;from,
and then we&nbsp;exchange fingerprints for our other devices,
if&nbsp;we&nbsp;have any.
This approach is&nbsp;called TOFU (Trust On&nbsp;First Use).
### New or&nbsp;Lost Devices ### New or&nbsp;Lost Devices
If&nbsp;I&nbsp;start using a&nbsp;new device If&nbsp;I&nbsp;start using a&nbsp;new device
@ -351,7 +353,10 @@ that I&nbsp;personally use.
### Conversations and Forks ### Conversations and Forks
Conversations is&nbsp;a&nbsp;modern, <a
href='https://conversations.im/'
target='_blank'>
Conversations</a> is&nbsp;a&nbsp;modern,
fully featured chat application for Android. fully featured chat application for Android.
It&nbsp;supports everything a&nbsp;messaging app should support: It&nbsp;supports everything a&nbsp;messaging app should support:
chats, voice calls, video calls, and sharing files of&nbsp;any kind. chats, voice calls, video calls, and sharing files of&nbsp;any kind.
@ -359,7 +364,10 @@ chats, voice calls, video calls, and sharing files of&nbsp;any kind.
There are several forks of&nbsp;it&nbsp;where There are several forks of&nbsp;it&nbsp;where
the UI&nbsp;or&nbsp;UX&nbsp;may differ, the UI&nbsp;or&nbsp;UX&nbsp;may differ,
but the core features work exactly the same. but the core features work exactly the same.
I&nbsp;personally use Monocles Chat. I&nbsp;personally use <a
href='https://codeberg.org/monocles/monocles_chat'
target='_blank'>
Monocles Chat</a>.
On&nbsp;the Contact Details screen (including your own account), On&nbsp;the Contact Details screen (including your own account),
you can see a&nbsp;list of&nbsp;published fingerprints you can see a&nbsp;list of&nbsp;published fingerprints
@ -374,7 +382,10 @@ simple and effortless.
### Dino ### Dino
Dino is&nbsp;a&nbsp;lightweight GTK-based GUI client. <a
href='https://dino.im/'
target='_blank'>
Dino</a> is&nbsp;a&nbsp;lightweight GTK-based GUI client.
It&nbsp;can be&nbsp;considered a&nbsp;fully functional one, It&nbsp;can be&nbsp;considered a&nbsp;fully functional one,
although some non-essential features are still not implemented. although some non-essential features are still not implemented.
@ -392,11 +403,14 @@ I&nbsp;recommend disabling this feature.
### Profanity ### Profanity
Profanity is&nbsp;a&nbsp;powerful TUI client <a
href='https://profanity-im.github.io/'
target='_blank'>
Profanity</a> is&nbsp;a&nbsp;powerful TUI client
where everything is&nbsp;controlled through a&nbsp;built-in command system. where everything is&nbsp;controlled through a&nbsp;built-in command system.
If&nbsp;you somehow intend to&nbsp;use it, If&nbsp;you somehow intend to&nbsp;use it,
you can find a&nbsp;small cheat sheet for the `/omemo` command below. you can find a&nbsp;small cheat sheet for the `omemo` command below.
However, I&nbsp;strongly recommend reading the full documentation. However, I&nbsp;strongly recommend reading the full documentation.
- Generate a&nbsp;key and add your other clients: - Generate a&nbsp;key and add your other clients:
@ -444,5 +458,6 @@ when you keep running into
“The message was not encrypted for this device” “The message was not encrypted for this device”
over and over again. over and over again.
From now on, I&nbsp;hope you wont encounter errors like this From now on, I&nbsp;hope you wont encounter such errors
or&nbsp;any other issues with end-to-end encryption in&nbsp;XMPP. or&nbsp;any other issues
connected to&nbsp;end-to-end encryption in&nbsp;XMPP.