-
VesselWave
Hello! How secure OMEMO is? I want to write a chat bot in python with slixmpp and slixmpp-omemo (and also package those for GNU Guix). Maybe there is a different implementation that is more secure and modern, even for a different language?
-
Menel
It is considered secure. It is basically the signal protocol.
-
VesselWave
Thanks, python-omemo has been updated to v1.0.2 but slixmpp-omemo uses v0.*.*. Hope some one can help devs to update it
-
opal
not every project uses the same versioning scheme
-
Squeaky Latex Folf
OMEMO doesn't protect metadata unfortunately
-
goffi
VesselWave: python-omemo implements new version (OMEMO:2) which allow to encrypt basically anything, while the legacy version only encrypt body of message. It is still compatible with legacy version which is the most used in the wild.
-
VesselWave
I just wasn't sure if I should use this version and package it to Guix, if it's insecure (it's not) and maybe new one will be available soon. Now I see that everything is alright. I will finish packaging and maybe will submit it to Guix. Thank you
-
Squeaky Latex Folf
It would be cool if the from attribute could be encrypted in some way as a protection against metadata gathering
-
msavoritias
you cant. its a fundamental property of federating systems. unless you mean tls. then yes it is
-
msavoritias
we can secure it more by doing stuff like dnssec and other stuff. but not encrypt completely
-
jonas’
it would be possible to hide the @to localpart+resource from the sending server, and the @from localpart+resource from the receiving server (with heavy protocol modifications of course)
-
msavoritias
while still being federated? sounds interesting.
-
msavoritias
provided everybody adopts the modifications of course
-
jonas’
msavoritias, the localpart is only required by the domain on which it's hosted✎ -
jonas’
msavoritias, the localpart and resorouce are only required for routing by the domain on which it's hosted ✏
-
jonas’
otherwise the servers only need the domain
-
jonas’
(and the sender's domain needs to be available in cleartext on the receiver's server to avoid domain spoofing)
-
msavoritias
so only the domain has to be in the clear. got it. will make a note of it thanks 😀
-
jonas’
but if you actually want to obfuscate the metadata, this needs support throughout all clients participating in a conversation, otherwise it causes havoc.
-
jonas’
(though a trusted server could revert this I guess)
-
msavoritias
so client and server support yeah
-
msavoritias
on that note is there somewhere an article or a document that outlines what are the differences in responsibilities for servers and clients
-
msavoritias
?
-
msavoritias
i looked at the conformance thing we have and most of the them are both server and client
-
msavoritias
afaik its only mam and for some reason storing bookmarks that go to server
-
msavoritias
but would love any pointers
-
jonas’
PEP
-
jonas’
(i.e. distributing OMEMO keys)
-
jonas’
but I don't think there's a single comprehensive document
-
msavoritias
distributing omemo keys is only for when the client is offline though right?
-
msavoritias
ah also the groups management
-
jonas’
don't think so
-
msavoritias
so mam and groups are the main things
-
jonas’
whatever is in the PEP node (I'm no OMEMO expert) always goes through the server
-
jonas’
msavoritias, roster, too :)
-
jonas’
(alongside distributing presence)
-
jonas’
servers also do various optimisations, such as replying to XEP-0030 queries for known XEP-0115 or XEP-0390 hashes, to not wake up your mobile data modem unnecsesarily.
-
msavoritias
but roster is optional too to be there is it not?
-
jonas’
MAM is also optional
-
jonas’
and groups
-
jonas’
for certain definitions of optional
-
msavoritias
whaaaat...
-
jonas’
roster is not part of RFC6120 (it's part of RFC6121), but that doesn't mean it's not basically mandated by every client out there.
-
msavoritias
I will probably look into what prosody supports then
-
jonas’
what's your definition of "optional"?
-
msavoritias
optional is something that makes life easier but we can do without. like you cant get my omemo keys and cant message me if my client is offline
-
msavoritias
if that makes sense
-
jonas’
oh, remember that there's some legacy "offline messages" thing from way before MAM
-
jonas’
where the server would just dump any messages received while offline to the first of your clients connecting
-
msavoritias
I am basically doing some exploratory documentation and reading into writing a client/server thing and that is why I was interested in the seperation between them
-
msavoritias
right
-
jonas’
and OMEMO is in my book definitely optional
-
jonas’
I almost never use it.
-
jonas’
(except on Snikket)
-
msavoritias
fair
-
jonas’
so the definitions vary greatly
-
jonas’
and you'll have to define what "makes life easier but we can do without" means exactly d-)✎ -
msavoritias
the stuff that is clearly delegated to the server is to me MAM and groups
-
jonas’
and you'll have to define what "makes life easier but we can do without" means exactly :-) ✏
-
jonas’
and roster and bookmarks
-
msavoritias
both for obvious reasons i hope
-
msavoritias
that one is not imo. but I am not sure if its mandated by the protocol
-
jonas’
the server needs to know who is in your roster to handle presence probes by other servers correctly
-
jonas’
and it needs to know who's in your roster to send presence probes on your behalf when you come online
-
msavoritias
> and you'll have to define what "makes life easier but we can do without" means exactly :-) basically MAM needs to be there because sometimes we go offline. and with groups its vastly easier to have the group chat being managed by the server instead of one client ↺
-
jonas’
(now you could argue that presence is an obsolete concept, but it's in RFC 6121)
-
jonas’
msavoritias, MAM only becomes necessary in multi-client scenarios.
-
jonas’
in single-client scenarios the legacy offine messages are well sufficient
-
msavoritias
noob question: Why do we need presence probes instead of just sending a message?
-
jonas’
they are unrelated to messages
-
msavoritias
> in single-client scenarios the legacy offine messages are well sufficient yeah but If I write my server today why would I implement anything but MAM? ↺
-
jonas’
you wouldn't
-
msavoritias
yeah
-
msavoritias
> they are unrelated to messages im guessing its not omemo either then ↺
-
jonas’
presence probes are used by servers to discover the current presence status of remote users with whom you have a presence subscription relation. that's needed because there's no guarantee that your server has the current presence data on file for your contacts if you've been offline for a while (or there has been an s2s disconnection)
-
msavoritias
because its older
-
jonas’
and presence is basically online/offline status✎ -
jonas’
and presence is basically online/offline status, as shown in some clients ✏
-
msavoritias
but why cant the user just send the message?
-
jonas’
and presence is basically online/offline/away/… status, as shown in some clients ✏
-
jonas’
oh you can
-
msavoritias
or just call
-
jonas’
but some old-school users like me like to know whether someone is even online
-
msavoritias
ah. so presense is technically optional
-
jonas’
because if they're not, I might as well go over to them next door and tell them what I need them to know _right now_ in person
-
msavoritias
and one of these things where the rfcs need updating i guess
-
jonas’
no, *technically* presence is rfc 6121
-
jonas’
so not really optional
-
jonas’
you meant "personally presence is optional"
-
msavoritias
yeah right 😛
-
jonas’
technically it is very much not, I think there are even server implementatoins out there which require you to send available presence before you can send IQs or whatnot
-
msavoritias
here I should also clarify
-
msavoritias
that I am looking to see what I can do with xmpp by "stretching" it a little bit.
-
jonas’
(and some servers won't distribute incoming messages to clients which haven't sent available presence)
-
msavoritias
yeah makes sense
-
jonas’
%✎ -
jonas’
(unless XEP-280 carbons) ✏
-
msavoritias
yeah carbons is another one of these things where I am not looking to implement probably
-
msavoritias
and go directly for im-ng
-
jonas’
was about to say that, yes
-
msavoritias
but yeah I am looking into not implementing a lot of "presence" things
-
msavoritias
like typing notifications, read notifications and such
-
Link Mauve
Those are messages. :p
-
msavoritias
if i can also avoid presence all together hmm
-
Link Mauve
Entirely up to clients.
-
msavoritias
yeah 😛 "presence" in the sense that they are ambient state notifications to the other party
-
jonas’
msavoritias, if you have control over both client and server in your setup, you can probably indeed do away with <presence/> stanzas altogether
-
jonas’
if you're looking to reuse software, you'll have to at least send available initial presence, but you can otherwise ignore it.
-
msavoritias
hmm noted.
-
jonas’
(except maybe in places like PEP, which are also only distributed to clients which sent presence, which means you may need a presence subscription between users for that to work)
-
msavoritias
well i am looking ideally to write both a server and a client. but I would like them to be some kind of federated
-
msavoritias
at some point at least
-
jonas’
may I ask why?
-
msavoritias
why what
-
jonas’
because "at some point federated" is often equivalent to "never"
-
jonas’
why rewrite the world instead of using things like prosody?
-
msavoritias
ah. because I am looking into mandating stuff like dnssec by default.
-
jonas’
what stops you from doing that with existing things?
-
msavoritias
I am writing my own to learn guile plus xmpp.
-
jonas’
as patches
-
msavoritias
will definetily look into contributing patches too
-
msavoritias
i have gajim and prosody in mind for example
-
msavoritias
and i know that prosody devs do a lot of good work with the modules
-
msavoritias
the thing i am writing its to experiment with stuff 😛 and its in fossil for these reasons too
-
Squeaky Latex Folf
> it would be possible to hide the @to localpart+resource from the sending server, and the @from localpart+resource from the receiving server (with heavy protocol modifications of course) Well what I was thinking of was to have the from attribute encrypted in a way that only the recipient can decrypt. If I remember correctly Signal does something similar to obfuscate/encrypt metadata ↺
-
jonas’
the reciepietns server needs to know the full reciepient for routing
-
Zash
An error occurs. How do you route it to the sender?
-
jonas’
the sender's server would be the entity encrypting the from localpart, so it should do so in a way which allows decryption.
-
Zash
I made some attempts at Venn diagrams for this in a notebook somewhere
-
jubalh
What do people usually write in the doap file in <xmpp:since> once a XEP is implemented only in the development version?
-
lissine
the number of the first upcoming version implementing it
-
Zash
We've got `xmpp:since=trunk` for a thing in Prosody
-
jubalh
so i wont break anything if i would add `developemtn` or `master` there? (like the tool the creates the overview on xmpp.org)
-
Link Mauve
I usually put NEXT in order to not forget to change it before releasing the next version, then forget to do it.
-
jubalh
:)
-
Zash
Could also guess what the next version will be and put that
-
jubalh
Link Mauve: I had the same idea, just with `development`
-
jubalh
Ok thanks guys :)
-
Zash
Does DOAP-consumers use it for anything but presentation?
-
pulkomandy
I guess they could try matching it with the list of releases that's also in the doap? For example to get the release dates from there? But I don't think anything does this yet
-
cal0pteryx
> so i wont break anything if i would add `developemtn` or `master` there? (like the tool the creates the overview on xmpp.org) jubalh: should be fine
-
jubalh
alright
-
Zash
I don't think we (prosody) put releases in the DOAP yet
-
cal0pteryx
I don't plan to do calculations with `since`
-
Zash
The data explorer thing probably lets you group by version, so that's probably enough