Any XMPP users, please chip in

This conversation was interesting, and made me reconsider my proletysing of Signal.

  • How layman-friendly is XMPP? I have convinced my parents to install Signal and send me confidential documents over it when necessary, would an XMPP client (once initially set up) be as simple to use?

  • Is the encryption as robust as the Signal protocol? Is the server encrypted at rest as well? For example if I use XMPP as an ad-hoc document storage system, will it be private?

  • I’m guessing it plays well with scripting/bots? For example, can I run a script on my raspberry pi that informs me when there is a power outage (it is connected to my APC UPS and is set up to trigger scripts)?

  • Any advantages to running a private server? I have a teeny 96 MiB RAM server unused, and was considering running prosody. Is that sufficient, or do I need a more powerful machine?

1 Like

How layman-friendly is XMPP? I have convinced my parents to install Signal and send me confidential documents over it when necessary, would an XMPP client (once initially set up) be as simple to use?

If you setup e2ee with XMPP then it should be fine. XMPP (the protocol) is a big complicated mess, I haven’t heard good things about it but the client handles all of that so you don’t have to worry. I wouldn’t move my parents from Signal to self-hosted XMPP because the latter will have problems at times & after some point they’ll go back to WhatsApp or some other service.

Is the encryption as robust as the Signal protocol? Is the server encrypted at rest as well? For example if I use XMPP as an ad-hoc document storage system, will it be private?

You shouldn’t have to worry about encryption once you setup e2ee with XMPP, iirc there were several ways (OMEMO made it easy I think). About the server, it depends on the operator. If you’re self-hosting it then do you use FDE on your server? If yes then your messages are encrypted at rest. Don’t use it as document storage system, setup Nextcloud or something simpler for that. It’s good practice to store them offsite, just encrypt it locally before uploading anywhere.

I’m guessing it plays well with scripting/bots? For example, can I run a script on my raspberry pi that informs me when there is a power outage (it is connected to my APC UPS and is set up to trigger scripts)?

It’s not hard to write bots, there should be several modules already written for this. Yes if you can somehow tell your pi that there’s a power outage then that bot can inform you.

Any advantages to running a private server? I have a teeny 96 MiB RAM server unused, and was considering running prosody. Is that sufficient, or do I need a more powerful machine?

Many advantages, first you don’t have to worry about setting up e2ee because the traffic goes through your server it’s bascially e2ee for you. Hah… that server is good enough for running prosody, it’s very light so you should have no problem running it & a few other services.

Also, check the XMPP wiki: https://wiki.xmpp.org

1 Like

Thank you, all very helpful.

(edit, had hit enter and submitted without intending)

No, I don’t have FDE on, was hoping XMPP has its own encyption. I used to use Nextcloud but stopped because of the same problem - E2E encryption had too many problems. I currently use Syncthing across devices for confidential documents, and Onedrive for public/non-important stuff.

You’re not making sense at all.

XMPP has it’s own e2ee but that doesn’t protect you against physical attacks, FDE is required for that (hell even that doesn’t guarantee anything).

You talk about syncthing, it’s e2ee between your device & server but it still sits in plain text on server & without FDE anyone who can physically access your server could get all your files.

I said setting up e2ee is not important because it’s your own XMPP server. So, the connection goes like this:

Sender <-> Server <-> Receiver
  |         |   |          |
  |         |   |          |
  -- E2EE --    --- E2EE ---

This is assuming you connect to the server over a secure connection (SSL). If you setup E2EE in XMPP then your connection goes like this:

Sender <-> Server <-> Receiver
  |                     |
  |                     |
  --------- E2EE --------

You can achieve this with OMEMO & other encryption setups in XMPP. I said you don’t have to setup E2EE in XMPP because I assumed that you trust your Server (your pi). It’s still good practice to use E2EE when possible.

Same goes for Nextcloud.

Also, first make your setup clear. Do you plan to access things over the Internet or only over LAN? Do you trust the people who can physically access the server? Do you trust the server to be secure (say if there is a malicious program running on the server then you can’t trust your server to be secure)?


Read these to know more about E2EE:

And these videos are also good:

1 Like

I feel a little attacked to be honest. You could consider that it might be a misunderstanding before attributing ignorance.

I know what encryption is, and how at-rest differs from in-transit. I had a (remote) Nextcloud server on a VPS. I didn’t have FDE enabled because like you implied, keys will be alive in memory and can be dumped by a bad actor. I’d prefer a setup where private keys are only used on the client. This explains my previous message:

No, I don’t have FDE on, was hoping XMPP has its own encyption

Nextcloud has it’s own E2E solution. And by E2E I mean in-transit (which is already there because of HTTPS like you pointed out) + at-rest. It is literally called E2E by NC and I used the same terminology. There is no private key access to the server at any time, which makes it a better model than FDE.

Unfortunately it had performance issues for me when I tried it, so I ditched NC completely.

I was hoping XMPP has a function like this (attachments and media can be stored, encrypted, on a presumed-hostile remote server). That way I can send my parents/sis documents privately and the server will also function as a secure archive of all that.

I assumed that you trust your Server (your pi).

I’m not going to run XMPP-server on the pi, I just used Pi/UPS as the first scripting example I could think of. I think that might be the cause of the misunderstanding. I was running Nextcloud on a KVM VPS that I’m now using for something else.

You talk about syncthing, it’s e2ee between your device & server but it still sits in plain text on server & without FDE anyone who can physically access your server could get all your files.

Nope, Syncthing is P2P with Forward Secrecy, which is the reason I chose it over Nextcloud’s under-perfoming solution. I have two Pis at different locations as always-on peers to simulate a server.

I appreciate your help a lot, and for directing me to OMEMO, I’m trying to understand the architecture of how this can work. But it smells like it’ll be PGP for my use case, which will probably make it a bit more frictional to set up for my family.

I feel a little attacked to be honest. You could consider that it might be a misunderstanding before attributing ignorance.

Erm… yeah I too would’ve felt like this. Sorry, I didn’t mean it in a bad way. More like this way: https://www.youtube.com/watch?v=h7VaF8JKpgM

I was hoping XMPP has a function like this (attachments and media can be stored, encrypted, on a presumed-hostile remote server). That way I can send my parents/sis documents privately and the server will also function as a secure archive of all that.

XMPP has E2EE, I think I have mentioned OMEMO 2 times before this. You can use OMEMO or there are other methods too for E2EE, IIRC there was OpenPGP support, look up those terms & decide what you want to use. I would recommend OMEMO, it’s easier to setup & less hassle imo. YMMV

It’s not media storage though & many things could go wrong but yeah you can use it as such.

I’m not going to run XMPP-server on the pi, I just used Pi/UPS as the first scripting example I could think of. I think that might be the cause of the misunderstanding.

Yes, everywhere I assumed you’re going to run it on your pi & that’s why I was not stressing on E2EE. If it’s on a VPS then it makes sense to have E2EE setup, sorry for misunderstanding, should’ve asked your setup first.

I appreciate your help a lot, and for directing me to OMEMO, I’m trying to understand the architecture of how this can work. But it smells like it’ll be PGP for my use case, which will probably make it a bit more frictional to set up for my family.

I see, try OMEMO first, it’s better imo. I wouldn’t recommend OTR for family, it’s a mess. Also you need to decide on a client first because not all client support both.

I like to use conversations. Also, there was a nice talk by the developer of conversations. I’ll link it, they talk about Jabber, how it has improved & other things.

2 Likes

Sorry, I didn’t mean it in a bad way. More like this way: https://www.youtube.com/watch?v=h7VaF8JKpgM

Peace :slight_smile:

Erm… here by server I meant the other device. It still sits in plain text on your devices unless you chose to encrypt the file yourself.

Fair enough. I use it between portable devices (encrypted if I lose them) and private PCs/SBCs that are physically secure enough for my threat profile.

Anyways, let’s just drop this.

Yes please! There’s enough hostility on social media that smaller forums need better discourse. But I also empathize with the frustration of dealing with half-knowledge.

Again, thanks for your time, your first-hand experience and the nudges in the right direction. I think it was your post on the Signal thread got me thinking about XMPP and how I could use it.

2 Likes