Modern XMPP project discussion - 2021-02-15


  1. Zash

    Probably because of varying support in clients and servers. If you make everyone use a single client and server implementation then it'll probably work fine, but that's kinda against the point of having an open soure ecosystem.

  2. purplebeetroot

    being more accessible on how to use xmpp for encrypted group chat could be usefull. A blogpost ot somrthing about compliance tester, clients and contacts you better add to your roster.

  3. purplebeetroot

    Another option that would increae UX a lot: being able to manually import OMEMO keys, in case fetching it from the server didn't worked out. (Some say, but that's to complicated: most systemli user propably know how to use PGP)

  4. Ge0rG

    Nobody knows how to use PGP. Alone the differentiation between identity validation and trust is... šŸ¤Æ

  5. purplebeetroot

    I speak about those that use the service of systemli. Many activists use and know how to use PGP.

  6. Ge0rG

    purplebeetroot: regardless of the user group, nobody really knows it.

  7. Stefan

    There was a very nice meeting ( XMPP Group Berlin ) about OX. I'm going to write some more information about OpenPGP in XMPP.

  8. purplebeetroot

    > purplebeetroot: regardless of the user group, nobody really knows it. You obviously don't know what you're talking about.

  9. pep.

    > OMEMO with a private group is definitely not where it should be IMO. never worked for me ever. someone always missing keys of someone else yeah that's a blocker for my circles as well :/

  10. jonasā€™

    wfm

  11. pep.

    > I speak about those that use the service of systemli. Many activists use and know how to use PGP. I wouldn't be so sure

  12. jonasā€™

    but Iā€™m only using OMEMO with Snikket, so maybe the "broken clients" theory applies

  13. pep.

    Does Snikket add everybody in your roster already?

  14. jonasā€™

    it does

  15. jonasā€™

    for managed MUCs anyway

  16. jonasā€™

    though thatā€™s only a requirement if the OMEMO node is set to presence, right?

  17. pep.

    well yes and no. not saying I've got a magic solution, but I think Id prefer to be able to send anyway rather to be DoS'd by someone else adding a new person I don't have in my roster to the group

  18. pep.

    yes it's a usecase

  19. pep.

    private groups with co-optation / everybody can invite

  20. pep.

    my client could automatically send presence subscription but I still got to wait for the other user to accept, and in practice it doesn't always work smoothly

  21. jonasā€™

    or just remove the access restriction from the OMEMO node

  22. pep.

    I'm not going of that but o thought it was already the case anyway. clients trying their best to set it public

  23. pep.

    so I'd say it's an intentional decision from C to not send when not having access to presence sub?

  24. pep.

    I'm not so fond of that*

  25. pep.

    (?? autocompletion)

  26. jonasā€™

    right, itā€™s open

  27. jonasā€™

    so yeah, maybe C being strange here, though it also makes sense because you cannot subscribe through MUC

  28. jonasā€™

    so you canā€™t really know when keys get added or removed, which is not optimal

  29. jonasā€™

    obvious terrible solution: broadcast a serial number for the OMEMO keys in <presence/>

  30. pep.

    I personally think it'd best to be able to send a message not encrypted for everybody anyway. rather than be prevented from sending at all.

  31. jonasā€™

    less terrible solution: let MUC subscribe and forward headline notifications about OMEMO node updates from occupants

  32. jonasā€™

    no, thatā€™s terrible UX

  33. pep.

    I personally think it's best to be able to send a message not encrypted for everybody anyway. rather than be prevented from sending at all.

  34. jonasā€™

    for both the sender and the receiver side

  35. pep.

    and getting DoS'd I'd fine?

  36. jonasā€™

    donā€™t invite randos in your private groups

  37. pep.

    and getting DoS'd is fine?

  38. pep.

    that's your usecase

  39. jonasā€™

    itym thatā€™s your opinion man

  40. jonasā€™

    itym "thatā€™s your opinion man"

  41. pep.

    no, that's your usecase.

  42. pep.

    we don't have the same

  43. pep.

    I need to be able to invite people not everybody knows

  44. jonasā€™

    the solution for that is not to DoS *or* to send partially broken messages. the solution is to properly distribute the keys even in that scenario

  45. jonasā€™

    (by letting the MUC forward notifications probably)

  46. pep.

    well I'm happy for you to come up with such a solution. in the meantime I'd like to be able to send messages plz

  47. pep.

    I'm fine to work with people on a proper(tm) solution, but as it stands C is unusable for this circle

  48. jonasā€™

    good thing we have free choice of clients

  49. pep.

    because obviously there's many available clients on mobile with this level of usability

  50. jonasā€™

    good thing you can fork C then

  51. Ge0rG

    Just use yaxim and stop caring about OMEMO :P

  52. pep.

    ..

  53. Ge0rG

    Well, I wouldn't be opposed to merge a PR for OMEMO support into yaxim, but looks like there are no volunteers.

  54. pep.

    is that what the "modern" in modernxmpp stands for? only caring about the one and true usecase?

  55. Ge0rG

    Somehow somebody ate my lunch by working some years full time on a NIH alternatve.

  56. jonasā€™

    pep., Iā€™m not speaking on behalf of modernxmpp in any way

  57. jonasā€™

    Iā€™m trying to find a solution to your problem (and as you donā€™t seem interested in working on the standards side of things, I canā€™t resort to anything but "fork it")

  58. pep.

    I'm not saying I'm not interested, I also do want a solution that's gonna be useful somewhat quickly. it's not breaking your usecase anyway. C "just" needs to remove that restriction while the protocol is getting fixed. I could even do it, but if there's no consensus there's no point

  59. jonasā€™

    C removing that restriction would break my usecase

  60. jonasā€™

    my usecase is not sending broken messages, ever.

  61. jonasā€™

    my usecase involves not sending broken messages, ever.

  62. pep.

    right, I guess I have "being able to send messages at all" higher in my list..

  63. jonasā€™

    well, my usecase does not involve inviting unknown people, so a missing key in 100% of the cases indicates a serious problem which needs to be fixed and shouldnā€™t go unnoticed

  64. jonasā€™

    "itā€™s not as simple"

  65. pep.

    maybe the easiest hack could be a MUC setting? "hey I'm gonna invite random people"

  66. pep.

    Just to guide clients in their choice of behaviour

  67. Stefan

    ... this topic is not easy ... encryption is also related with trust. If you are going to encrypt messages with unknown people, how do you manage the trust of keys. I think before working on technical solution, functional analysis should be done.

  68. pep.

    Stefan: trust is delegated to everybody in the room in this case, there is no one authority that has the ultimate knowledge. Yes this can lead to trust being compromised but that's part of the game

  69. jonasā€™

    the question is a valid one though

  70. Stefan

    Yes, but this are different use cases and you may not needs OMEMO or OpenPGP for this game. šŸ¤·

  71. jonasā€™

    if you changed C to auto-fetch keys from occupants, the MUC server could trivially and completely compromise the encryption

  72. jonasā€™

    step 1: provision a fake account on a domain the MUC server controls (e.g. its own domain) step 2: publish OMEMO keys there step 3: add that fake user as member and occupant, publishing its JID and a fake presence appropriately step 4: all users fetch keys and subsequently encrypt for the evil key from the MUC server

  73. jonasā€™

    in this scenario, the requirement of a separate presence subscription reflects the trust in the new occupant

  74. Ge0rG

    If only we had a mechanism to do trust transition.

  75. jonasā€™

    on the plus side, we could have server-side MAM search in MUCs then ;D

  76. Ge0rG

    attacker-side search!

  77. jonasā€™

    :)

  78. Ge0rG

    XMPP is just not suitable for proper E2EE

  79. jonasā€™

    is anything?

  80. jonasā€™

    m:n E2EE is tedious, thatā€™s not specific to XMPP, is it?

  81. Ge0rG

    a good design would be a decentralized DAG store of blobs and public keys, and the store would require new blobs/keys to be signed by one of the whitelisted key

  82. jonasā€™

    MLS?

  83. Ge0rG

    I still haven't read it.

  84. jonasā€™

    it does something with a tree at least

  85. jonasā€™

    which is a special case of a DAG

  86. Ge0rG

    Wasn't that a tree of keys or something?

  87. raucao

    what if the user creating the room (who usually has all the contacts) sends keys to the others?

  88. jonasā€™

    -ENOPROTO

  89. raucao

    yes, but any proper solution needs a standard there

  90. raucao

    there is no solving it without multiple client authors agreeing on the solution

  91. purplebeetroot

    > good thing you can fork C then Or you don't have the time for that, because your group has a focus on anti-colonialism, gender-euquality, climate justive...and then you're better off choosing something that works, rather something that could work if you build it yourselves

  92. raucao

    as the user with all contacts, they can already send encrypted, signed messages to the other clients, which can include the keys of all participants. maybe i'm missing something, but at the moment it seems to me like it could work

  93. jonasā€™

    yes, then so be it

  94. jonasā€™

    purplebeetroot, yes, then so be it

  95. jonasā€™

    without putting something of value to the recipient somewhere, you wonā€™t get others to do the things you need.

  96. jonasā€™

    always.

  97. jonasā€™

    also holds for other things such as Signal or Matrix

  98. purplebeetroot

    I find this to be an hostile attitude. See, I'm privileged enough so that I don't need to care about colonialisms, but I care because I care about those to whom it matters. It is important that we do things for each other, at leat of we wish to improve society for the better. I also believe it is important in software development to investgate the different user groups and their needs, rather then focusing on just building for your own peer group.

  99. Ge0rG

    purplebeetroot: what's your call to action? Have some random volunteers implement features on a client that the maintainer disagrees with?

  100. jonasā€™

    purplebeetroot, I find this to be an hostile attitude. See, Iā€™m a software developer in my free time only. I spend my time on what *I* need and want because nobody compensates me for anything else. Coming to me (or, really, a community mostly consisting of those individuals) and *demanding* things and claiming them to be hostile because of their reluctance to implement more code (= more maintenance work in the future) is not very nice. One of the few exceptions is Daniel (iNPUTmice), whom you could pay to implement the feature(s) you need.

  101. pep.

    The thing about e2ee is it doesn't have to be perfect all the way. Something something perfect and good

  102. jonasā€™

    Pick your poison.

  103. raucao

    i don't see how this conversation is helpful. it's clearly a protocol issue when you cannot create a private chat with your contacts who are not yet all contacts of each other. it's a completely normal situation for private chats. so either the protocol explicitly doesn't support private chats, or it needs to work with those

  104. jonasā€™

    pep., is that so? what is the point of imperfect e2ee? If we donā€™t need perfect e2ee, can we do away with "perfect" forward secrecy already, because that breaks other relevant UX.

  105. jonasā€™

    raucao, there is not even a clear specification on what a "private group chat" is :)

  106. raucao

    yes there is. you're literally in the channel of a project describing it

  107. jonasā€™

    thereā€™s also no clear specification how OMEMO-encrypted groups even work.

  108. raucao

    yes, then that's a missing spec

  109. jonasā€™

    raucao, modernxmpp does not describe protocol.

  110. raucao

    obviously

  111. jonasā€™

    (for most part anyway)

  112. raucao

    you didn't say protocol. you said describe what a private group chat is

  113. jonasā€™

    right

  114. raucao

    a private group chat is one that is not publicly listed, and where all participants except that it is encrypted. thus, it's not just an invite-only semi-public room, but a e2ee private room

  115. raucao

    s/except/expect

  116. raucao

    signal and whatsapp provide this by default

  117. raucao

    so whatever your personal reasons for not wanting it, you can hardly claim nobody does

  118. raucao

    if someone in this room says they do, then that's a user with a use case

  119. raucao

    but you don't really need to rely on random people here claiming it. i don't see how it's controversial that this is one of the main use cases in groups of friends and acquaintances

  120. jonasā€™

    raucao, I am not arguing against encrypted group chats

  121. jonasā€™

    or anything really. Iā€™ve got a problem with people demanding that things should be implemented without being ready to put the work or money in.

  122. raucao

    then what are you arguing against? you're not constructively exploring how it can be solved, just telling people that they're wrong

  123. jonasā€™

    raucao, Iā€™ve made proposals

  124. jonasā€™

    first, it works perfectly fine if everyone is in each otherā€™s roster

  125. purplebeetroot

    > purplebeetroot, I find this to be an hostile attitude. See, Iā€™m a software developer in my free time only. I spend my time on what *I* need and want because nobody compensates me for anything else. And? What's the point? Neither I or the groups I'm working with get compensation. Should I be protected from receive critism for whatever I do, as long it has no hostile intend, just because I don't get paid? This does not make any sense to me.

  126. jonasā€™

    second, if we want to allow non-roster usecases, we are in deep trouble because of problems with key trust.

  127. raucao

    > first, it works perfectly fine if everyone is in each otherā€™s roster which is a standard situation to not be the case

  128. raucao

    that's the entire point

  129. raucao

    why it doesn't work for so many people atm

  130. raucao

    and you can't solve it with snikket and such, when the group is not all on the same server with their accounts

  131. raucao

    that may work for family chats, but as soon as you invite friends from other servers, you're back at the same problem

  132. jonasā€™

    I donā€™t think that allowing messages which are encrypted for only a subset of the group to pass is a good thing in the friends & family use case (or any use case really, but YMMV).

  133. jonasā€™

    so the only way to solve this is to establish trust in the membership list in some way

  134. jonasā€™

    and that is a really tricky issue

  135. jonasā€™

    someone smarter than I will have to put the work into that, and thatā€™s ok.

  136. raucao

    false dichotomy

  137. jonasā€™

    raucao, how?

  138. raucao

    but apparently you know it all

  139. jonasā€™

    I donā€™t see another way, but if Iā€™m wrong Iā€™d like to hear it

  140. raucao

    again, other protocols and messengers have solved this already. just because you don't see something doesn't mean it doesn't exist

  141. jonasā€™

    (I know that how I word things -- especially when Iā€™m in a hurry -- tends to indicate otherwise, but I want to be proven wrong)

  142. raucao

    you're not putting forward any detailed arguments, so it's difficult to prove anything

  143. jonasā€™

    did they *solve* it, or did they *work around* it by making use of their advantages from a non-federated closed platform ?

  144. raucao

    if your argument is that signal hasn't solved this, then it's obviously invalid

  145. jonasā€™

    raucao, okay, so my concrete problem with removing the requirement for roster subscription is this

  146. raucao

    nobody said anything lilke that

  147. jonasā€™

    *if* we change clients to accept keys from all entities in a MUC, then it is trivial for a MUC to subvert communication completely

  148. raucao

    that's the false dichotomy

  149. jonasā€™

    can we agree on that being true?

  150. raucao

    yes, hence my suggestion for accepting them from contacts only

  151. raucao

    who can rely keys of other contacts

  152. raucao

    hence being trustworthy

  153. jonasā€™

    okay, so transitive trust

  154. raucao

    for example. and progressive perhaps

  155. jonasā€™

    thatā€™s essentially what Ge0rG said above, to which I said "MLS?" because I think that MLS *might* solve that in one way or another

  156. raucao

    i.e. when you then add someone it could switch from yellow lock to green lock or something, when it has double-checked the key

  157. jonasā€™

    but it boils down to transitive trust, which we donā€™t quite have yet, and, it is equivalent to establishing trust in the MUC member list, which I also said is what we can do, but someone smarter than I needs to.

  158. raucao

    you don't need to trust the list, only the messages of the contact who invited you

  159. jonasā€™

    so I still donā€™t quite see the false dichtomy there

  160. raucao

    you said either you trust the muc server or not

  161. jonasā€™

    raucao, true

  162. jonasā€™

    raucao, I donā€™t think I did

  163. raucao

    > did they *solve* it, or did they *work around* it by making use of their advantages from a non-federated closed platform ? explain how that changes the trust situation for e2ee and contact lists

  164. jonasā€™

    or let me rephrase: I did not *intend* to do so. What I intended to say is: in the current state of the world, you need to trust the MUC server. To go beyond that will require substantial protocol changes.

  165. raucao

    also, matrix is federated, no?

  166. jonasā€™

    or let me rephrase: I did not *intend* to do so. What I intended to say is: in the current state of the world, you need to trust the MUC server or use presence subscriptions (or manual key verification) to work around that. To go beyond that will require substantial protocol changes.

  167. raucao

    > To go beyond that will require substantial protocol changes i don't see how sending some key messages around from the inviter is a "substantial protocol change". can't that be a simple *addition*, without changing the current protocol?

  168. jonasā€™

    it is a substantial additional protocol which needs to be supported by all involved parties

  169. jonasā€™

    substantial in the sense that it canā€™t work without and that it needs to be required

  170. raucao

    yes, but the worst case is that you fall back to the current situation

  171. raucao

    which we already have

  172. jonasā€™

    which is always a problem in a federated ecosystem with diversity of clients.

  173. jonasā€™

    right

  174. jonasā€™

    fair enough

  175. purplebeetroot

    > or anything really. Iā€™ve got a problem with people demanding that things should be implemented without being ready to put the work or money in. The point is: those with the needed skills will either solve it, or people will go with Matrix and Signal. Demand is: either it gets a high priority or I and many others loose interest. Neither do you know about money/resources that I've put into xmpp. So your problem seems rather linked to receiving criticsm in general.

  176. jonasā€™

    purplebeetroot, as I said: Iā€™m fine if you move to other solutions if your requirements cannot be matched by current xmpp implementations and you cannot or donā€™t want to put resources in to improve them

  177. jonasā€™

    purplebeetroot, Iā€™m sorry if I come across as hostile because of that

  178. jonasā€™

    thatā€™s not what I want really

  179. purplebeetroot

    What is needed to improve it?

  180. purplebeetroot

    (Ok)

  181. jonasā€™

    purplebeetroot, Iā€™m not sure if https://xmpp.org/extensions/xep-0434.html (also cc @ raucao) is a way to establish that transitive trust in MUC context

  182. jonasā€™

    so at the very least weā€™d need some explorative implementations around that and see which bits are missing and how to securely distribute the trust and distrust messages

  183. raucao

    oh, nice

  184. raucao

    that could work already

  185. raucao

    i mean just as the messages for sending around the keys to contacts

  186. raucao

    wouldn't that also then make the MUC member list trustworthy, when the JID's are equivalent to what the inviter sent out?

  187. jonasā€™

    raucao, exactly

  188. jonasā€™

    (hence I always simplified my argument to "establishing trust in the member list", because in this context, it is pretty much equivalent)

  189. jonasā€™

    (hence I always simplified my argument to "establishing trust in the member list", because in this context, it is pretty much implied)

  190. jonasā€™

    (not equivalent, because trust messages are stronger than that by also establishing a list of keys which are OK)

  191. emus

    > Ge0rG escribiĆ³: > Just use yaxim and stop caring about OMEMO :P I was waiting for this comment šŸ˜Š

  192. Zash

    If you want MLS to solve all problems then you should join the work group and make sure it actually does in a way compatible with XMPP, otherwise it's likely only going to work with silos and matrix, as those seem to be the ones involved

  193. Ge0rG

    There is only so many yaks a man can shave.

  194. jonasā€™

    Zash, what can we do about the IETF being a big scary venue some might not feel adequate to join?

  195. jonasā€™

    *if* that is why the OMEMO folks donā€™t integrate there

  196. Zash

    Dunno. That seems to be the problem, doesn't it? OMEMO didn't cone from any standards related community either and the deployed version is still not the cleaned up standardized version afaik.

  197. Ge0rG

    NIH?

  198. L29Ah

    how do i find out the max stanza size in modern XMPP?

  199. jonasā€™

    I donā€™t think thereā€™s a way

  200. jonasā€™

    (except the hard way)

  201. jonasā€™

    (i.e. getting your stream killed when you exceed it)

  202. Zash

    Roll a d1T and try it

  203. L29Ah

    so it's an expected behavior for an user to be kicked from the server because one happened to upload too big of an avatar or smth? T_T

  204. Zash

    Yes

  205. Zash

    Known bounds I'm aware of:256k

  206. Zash

    Known bounds I'm aware of: ejabberd: 256k Prosody: 10M

  207. Zash

    for c2s. ejabberd has 512k for s2s

  208. L29Ah

    thanks

  209. Zash

    For very big avatars it would have been sensible to use http upload, but people also wanted limited retention, so that won't work now.

  210. Zash

    So accounting for base64 and padding you're limited to around 192 KiB for avatar

  211. southerntofu

    raucao, yes it's a protocol issue, i'm interested to have a chat on this topic of private E2EE if you'd like that :)

  212. southerntofu

    jonasā€™, new keypairs advertised by the MUC should be signed by existiing members of the group with their key, so as long as one member of the MUC has direct communication (roster etc) with the invitee, they can be vetted for in a public manner, similar to a WoT but with only one hop

  213. southerntofu

    ah yes that sounds like trust message, though i haven't read the XEP yet

  214. southerntofu

    anyway in some cases the MUC server should keep an append-only log of those vettings, but in some other cases only the latest state should be kept.. it's two different threat models (obfuscating the social graph vs audit trail)

  215. pep.

    ā€œjonasā€™> pep., is that so? what is the point of imperfect e2ee? If we donā€™t need perfect e2ee, can we do away with "perfect" forward secrecy already, because that breaks other relevant UX.ā€ I won't pick up the PFS fight. Re "what is the point of imperfect e2ee", not sure if serious.

  216. pep.

    what's the point of buggy TLS implementations (hint: they all are?)

  217. pep.

    "jonasā€™> or anything really. Iā€™ve got a problem with people demanding that things should be implemented without being ready to put the work or money in." also this is not what I'm doing here.

  218. pep.

    "jonasā€™> *if* we change clients to accept keys from all entities in a MUC, then it is trivial for a MUC to subvert communication completely" this doesn't matter for my usecase

  219. pep.

    I mean it doesn't, until it does, but I'd rather trust a MUC than not being able to send a message

  220. pep.

    Or we can try to implement multicast, but then it's a whole different threat model

  221. Zash

    It would be nice to have the role of the server clarified in the threat model.

  222. Ge0rG

    The server is your friend, until it's not.

  223. L29Ah

    koans-of-modern-xmpp.xml

  224. southerntofu

    Zash, i'm interested in clarifying different threat models for MUC, following some discussions where i learnt mod_muc_occupant_id completely "disables" pseudonymity for MUCs by letting other MUC members associate different nicks to a single identity (which is a feature to some client devs apparently, but a WTF security-side)

  225. southerntofu

    is there a MUC or working group working on threat models for Jabber/XMPP ecosystem?