jdev - 2026-02-07


  1. sunglocto

    are there any notable clients that use XEP-0080: User Location ? testing both cheogram and monocles they both seem to just send a raw geotag in the message body and don't seem to use the XEP at all

  2. MattJ

    I think part of the reason is that XEP-0080 in PEP would not be encrypted, but a geo: link can be protected by OMEMO

  3. MattJ

    It's not an unsolvable problem, but that's probably a factor (also geo: links are trivial to implement)

  4. Cynthia

    MattJ: maybe we should make encrypted PEP

  5. Cynthia

    or at least, an encapsulation of PEP data inside of OMEMO

  6. lovetox

    For me the encryption should not be omemo, rather you encrypt with some symmetric key the pep node and share the secret with omemo

  7. lovetox

    Also there should be a start message to the contact and a end message to indicate that location sharing started and ended

  8. lovetox

    The question is also if pep really is useful here

  9. lovetox

    Pep is useful if you broadcast to many contacts, which will be a rare case with location sharing

  10. lovetox

    So why not simply send encrypted messages in time intervals, and skip all the pep encryption problems

  11. cal0pteryx

    > Pep is useful if you broadcast to many contacts, which will be a rare case with location sharing Not sure if that's a rare case

  12. lovetox

    Sharing location to multiple contacts not in a group?

  13. Cynthia

    lovetox: sending encrypted messages in time intervals would be garbage UX tbh

  14. Cynthia

    it'll clog the PM chat

  15. Cynthia

    unless the client can filter out the unnecessary messages in the frontend

  16. Cynthia

    also encrypting with some symmetric key and then sharing it wouldn't be forward-secret

  17. Cynthia

    which is why i recommended encapsulating data within OMEMO, it rotates keys per message in a forward-secret manner

  18. Cynthia

    which is why i recommended encapsulating data within OMEMO, it rotates keys per message, ensuring forward secrecy

  19. cal0pteryx

    > Sharing location to multiple contacts not in a group? No, right, the case I have in mind has all people in a group

  20. lovetox

    Cynthia: what's the difference receiving a message from pubsub or in the chat ?

  21. lovetox

    It's exactly the same amount of messages

  22. Évelyne

    Hello, I have a question as someone starting to read about the details of XMPP. Are identifiers the only way stanzas get related? Or is the total ordrering brought by TCP necessary for the operations of the protocol?

  23. Évelyne

    Hello, I have a question as someone starting to read about the details of XMPP. Are identifiers the only way stanzas get related? Or is the total ordering brought by TCP necessary for the operations of the protocol?

  24. lovetox

    What's a identifier?

  25. Cynthia

    lovetox: the difference is that a legacy client will not be able to tell if it's a regular message or just an automated GPS location sending emssage

  26. Cynthia

    and will not be able to filter it out from regular messages

  27. Cynthia

    causing the PM conversation to be cluttered

  28. Évelyne

    > What's a identifier? hm from what i remember (i didn't save the file while i was prettifying and looking at stanzas), i saw something like `<message … id="68886607-a0ff-4be9-a6f8-9301f238c73d>…</message>` and then for replies something like `<message …><reply id="d67452b5-32f0-43fe-92b3-9208ee5c9613" …/></message>`

  29. lovetox

    Cynthia: of course it will that's what namespaces are for. Everyday clients receive a lot of messages with content they don't support, that's the nature of xmpp

  30. Évelyne

    > What's a identifier? hm from what i remember (i didn't save the file while i was prettifying and looking at stanzas), i saw something like `<message … id="68886607-a0ff-4be9-a6f8-9301f238c73d">…</message>` and then for replies something like `<message …><reply id="68886607-a0ff-4be9-a6f8-9301f238c73d" …/></message>`

  31. lovetox

    A client displays only what it understands and the rest gets dropped

  32. Cynthia

    okay well if the message is namespaced, that's a different thing

  33. lovetox

    Évelyne: yes some message reference other messages via id

  34. lovetox

    That's how we setup a relation between two messages

  35. lovetox

    That's the only way to my knowledge

  36. Évelyne

    lovetox: yes i know and it's a classical technique for XML (i wrote some XSLT 1.0 for my own thesaurus, LIS style), but i was wondering if that was the only way xmpp established relations between messages, or if the order of arrival in the stream mattered, or some other technique was used too.

  37. Évelyne

    i mean between any stanza

  38. Évelyne

    > That's the only way to my knowledge ah didn't notice your last message before sending, thanks

  39. lovetox

    Order is important of course in a lot of cases

  40. lovetox

    But if one message references another it will be explicit with an id

  41. Évelyne

    ah so the ordering brought by TCP matterst too, there's an implicit logical relation between stanzas based on that (ie after/before)

  42. Évelyne

    ah so the ordering brought by TCP matters too, there's an implicit logical relation between stanzas based on that (ie after/before)

  43. Cynthia

    i think location sharing should be forward-secret

  44. Évelyne

    Because if order wasn't guaranteed i could have imagined that this could have been dealt with with pending operations, like "this message refers to an id i do not know, i'll keep it around until i get what it refers to, or drop it after X seconds". Which of course makes things more complicated.

  45. lovetox

    For example if you send multiple corrections, all reference the original message but you must know which is the last

  46. lovetox

    And this comes through the order of the stream

  47. lovetox

    So many things depend on order

  48. lovetox

    Évelyne: but what you say can still happen, because once you get into requesting messages from an archive you may reverse the order you want to receive messages from the archive, and then you hit this situation

    👍 1
  49. dwd

    lovetox, You can of course set the PEP node to be only available to a specific roster group, and then put (say) family and close firiends into that roster group.

  50. lovetox

    dwd: of course, I can also whitelist single jids and make the node open

  51. dwd

    lovetox, That too, indeed.

  52. jjj333_p (any pronouns)

    > Sharing location to multiple contacts not in a group? yes, this is a use case that i currently use with friends on snapchat / apple find my

  53. lovetox

    But via pep nothing is speced and it's complex. Sending location messages to my contact I can do immeadiatly

  54. sunglocto

    > Sharing location to multiple contacts not in a group? You could make a MUC and send your location in it

  55. sunglocto

    whatsapp has that flow

  56. jjj333_p (any pronouns)

    It'd probably not be something you want stored in mam or so except for the last element, and the recieving client would want to subscribe to real time updates if the user is looking at that and only in that case probably

  57. jjj333_p (any pronouns)

    though for my use case it probably makes more sense to use something presence based

  58. jjj333_p (any pronouns)

    encryption over presence when 🧌

  59. dwd

    sunglocto, You're then just replicating PEP but in a different mechanism, surely?

  60. lovetox

    jjj333_p (any pronouns): there are 2 different use case for me. One is sharing a location for x hours. The other is sharing without timelimit

  61. lovetox

    For no timelimit I would use Google find device or apple find phone

  62. jjj333_p (any pronouns)

    > jjj333_p (any pronouns): there are 2 different use case for me. One is sharing a location for x hours. The other is sharing without timelimit i agree theres 2 use cases, thats not the line i would split it on though

  63. Cynthia

    why not just have the users query you for location

  64. jjj333_p (any pronouns)

    > For no timelimit I would use Google find device or apple find phone that doesnt work so well without a) sharing your phone number b) if you dont all have the same kind of phone

  65. jjj333_p (any pronouns)

    for me and my friends i usually end up location sharing on snapchat as i said

  66. jjj333_p (any pronouns)

    > why not just have the users query you for location less realtime, hence why you might want it to be something subscribable

  67. Cynthia

    sure

  68. lovetox

    But yeah for sharing without timelimit I would not use direct messages

  69. Cynthia

    subscription makes sense

  70. jjj333_p (any pronouns)

    IMO presence with some kind of last state serverside storage would probably be the best solution for what im wanting

  71. lovetox

    And filling up mam is a good argument against it

  72. jjj333_p (any pronouns)

    like even if you go online, for the other user to be able to come online and get the data that came with last online

  73. jjj333_p (any pronouns)

    maybe that is pep, im not super solid on the details of pep

  74. Cynthia

    or how about presence with forward-secrecy encrypted location

  75. Cynthia

    like MLS

  76. lovetox

    Ah mom we can send messages with a hint that it's not stored in mam

  77. Cynthia

    or OMEMO

  78. sunglocto

    > or how about presence with forward-secrecy encrypted location Nobody is going to implement that

  79. jjj333_p (any pronouns)

    > Ah mom we can send messages with a hint that it's not stored in mam still a mess for clients that dont support probably

  80. Cynthia

    sunglocto: people said that about OMEMO

  81. jjj333_p (any pronouns)

    > or how about presence with forward-secrecy encrypted location that doesnt help the offline issue, nor is forward-secrecy a good option for where you might have a lot of dropped data

  82. jjj333_p (any pronouns)

    tbh pep or some kinda pubsub makes the most sense if you can set it to only store the last event or something

  83. Cynthia

    you're trusting the servers don't log your locations

  84. Cynthia

    anyway

  85. jjj333_p (any pronouns)

    > you're trusting the servers don't log your locations thats what the encryption is for

  86. Cynthia

    or completely disregard your hint

  87. jjj333_p (any pronouns)

    > MattJ: maybe we should make encrypted PEP we've come full circle

  88. sunglocto

    is that ever comes to be then God has left us and we are all living in hell

  89. Cynthia

    jjj333_p (any pronouns): but if someone manages to get the symmetric key (from a user you trust), they can decrypt all of your location notifications

  90. jjj333_p (any pronouns)

    > jjj333_p (any pronouns): but if someone manages to get the symmetric key (from a user you trust), they can decrypt all of your location notifications im not arguing against pfs. im saying pfs doesnt make sense in presence

  91. sunglocto

    if that ever comes to be then God has left us and we are all living in hell

  92. Cynthia

    i see

  93. dwd

    jjj333_p, Is that because there's no MAM etc to avoid lost crypto-state updates?

  94. jjj333_p (any pronouns)

    yes

  95. jjj333_p (any pronouns)

    though actually now that i think about it, it could just rebuild the session

  96. Cynthia

    honestly you should store a bit of your previous events

  97. dwd

    Right, thanks. So we could still ratchet, but the ratcheting needs to occur only over messages?

  98. jjj333_p (any pronouns)

    > honestly you should store a bit of your previous events this unfortunately doesnt happen in presence

  99. Cynthia

    tbh presence is not meant for transmission of sensitive data

  100. Cynthia

    wthout compromising a bit of security

  101. jjj333_p (any pronouns)

    > Right, thanks. So we could still ratchet, but the ratcheting needs to occur only over messages? no, its that with presence you would need to re-ratchet every time both of you were online at the same time and otherwise it wouldnt be fetchable or decryptable

  102. Cynthia

    maybe PEP or pubsub?

  103. Cynthia

    re-ratchet all the time would make the double ratchet systemm useless

  104. jjj333_p (any pronouns)

    > we've come full circle yes, back full circle to encrypted pep

  105. Cynthia

    you might aswell go with a symmetric shared key

  106. dwd

    I know OMEMO explicitly ratchets on every message (or at least, I think I know!), but MLS for example doesn't, it's a distinct action. So we might be able to ratchet only over messages, where it's stable, but send presence without hanging epoch or whatever the terminology is.

  107. sunglocto

    >> we've come full circle > yes, back full circle to encrypted pep once again

  108. sunglocto

    > if that ever comes to be then God has left us and we are all living in hell

  109. jjj333_p (any pronouns)

    > I know OMEMO explicitly ratchets on every message (or at least, I think I know!), but MLS for example doesn't, it's a distinct action. So we might be able to ratchet only over messages, where it's stable, but send presence without hanging epoch or whatever the terminology is. theres 0 utility in it being over messages

  110. dwd

    Cynthia, It's all symmetric key, of course, at the bottom.

  111. jjj333_p (any pronouns)

    that is at no point what i was saying, that the negotiation needs to happen over messages

  112. Cynthia

    yes true

  113. Cynthia

    but i'm talking about using one key long-term

  114. jjj333_p (any pronouns)

    im saying that you loose state if you dont store the things you miss while offline

  115. Cynthia

    instead of a rotating key short-term

  116. dwd

    jjj333_p, I'm saying ratchet (so key negotiation) over only message, but send encrypted data within that state over presence/PEP.

  117. jjj333_p (any pronouns)

    > jjj333_p, I'm saying ratchet (so key negotiation) over only message, but send encrypted data within that state over presence/PEP. that just makes no sense to do

  118. dwd

    jjj333_p, You'll have to explain why, I don't follow.

  119. sunglocto

    aside from being a gross overcomplication it serves no security benefit

  120. jjj333_p (any pronouns)

    i mean ig MLS would cut down on it, but theres little reason to include enough traffic in storage for the crypto data and not just also include the event

  121. jjj333_p (any pronouns)

    > aside from being a gross overcomplication it serves no security benefit also this

  122. jjj333_p (any pronouns)

    either store the whole hog or dont store anything and just rebuild the session

  123. Cynthia

    so it's either store the whole log or don't use ratchet at all :P

  124. dwd

    Cynthia, Apparently so. I'm not sure if I'm just too stupid to understand this, or if this has fallen foul of von Clausevitz's perfect dream vs good plan.

    ❓ 1
  125. jjj333_p (any pronouns)

    tbh an omemo transmitted symetric key such as aes is probably fine for presence data, just rotate it every so often, via an asymetric means

  126. Cynthia

    that's what i was about to type

  127. dwd

    jjj333_p, How does that differ from what i suggested?

  128. dwd

    sunglocto, "The enemy of the good plan is the dream of the perfect"

  129. jjj333_p (any pronouns)

    > jjj333_p, How does that differ from what i suggested? the best i understood your proposal was to split omemo or mls so that the key negotiation happened via messages

  130. jjj333_p (any pronouns)

    my proposal is use the omemo you use for dms to renegotiate a static aes key which you use to transmit the data

  131. dwd

    jjj333_p, Key negotiation does happen by messages in OMEMO, aside from the prekey/initket - that's identical in MLS and OMEMO.

  132. jjj333_p (any pronouns)

    i think you and me are talking past eachother in a major way, and its 3am i cba to figure it out

  133. dwd

    jjj333_p, The "ratchet" that changes the underlying symmetric key happens in messages, and in OMEMO that's every message, whereas in MLS it's only mandatory when the group changes.

  134. jjj333_p (any pronouns)

    I suppose in that sense MLS would work perhaps, but from what ive heard MLS in XMPP isnt happening very soon

  135. jjj333_p (any pronouns)

    and it still doesnt make presence right for location, since theres no storage of last state

  136. dwd

    jjj333_p, I am suggesting - very loosely - that we could export a symmetric key from MLS and use this for presence/PEP. I assume something similar would be possible in OMEMO, though it'd be very much bolted on.

  137. Cynthia

    how do you know there's no storage of last state

  138. dwd

    Why do you need to store last presence state to handle this though?

  139. Cynthia

    lol

  140. jjj333_p (any pronouns)

    > how do you know there's no storage of last state offline presecne can have a reason/message

  141. jjj333_p (any pronouns)

    but you dont see it because you only get it if your client was online

  142. jjj333_p (any pronouns)

    from my understanding, the client generally doesnt keep track of offline presences, and thats the only presence that is persisting

  143. dwd

    Sure... But that's the current state anyway. We don't need this for cryptography, is what I mean.

  144. Cynthia

    why does this have to be over presence or PEP if you're just gonna share a key over a MUC or even PMs

  145. Cynthia

    to everyone

  146. Cynthia

    you're going to be sending a message to everyone regardless, why not stuff the location in directly while you're at it?

  147. singpolyma

    we're talking about https://xmpp.org/extensions/xep-0080.html ? or something like that?

  148. sunglocto

    > from my understanding, the client generally doesnt keep track of offline presences, and thats the only presence that is persisting Don't clients randomise the resource on every connect

  149. singpolyma

    >> from my understanding, the client generally doesnt keep track of offline presences, and thats the only presence that is persisting > > Don't clients randomise the resource on every connect no. quite the opposite

  150. sunglocto

    Or do they use the same one every time

  151. jjj333_p (any pronouns)

    > we're talking about https://xmpp.org/extensions/xep-0080.html ? or something like that? > yeh

  152. singpolyma

    this is part of why resource is private protected data

  153. Cynthia

    sending something that is useless to everyone else over PEP/presence sounds like an overcomplication

  154. jjj333_p (any pronouns)

    > you're going to be sending a message to everyone regardless, why not stuff the location in directly while you're at it? because you dont want to clutter up storage or chat with the entire history

  155. jjj333_p (any pronouns)

    only the last state

  156. singpolyma

    > sending something that is useless to everyone else over PEP/presence sounds like an overcomplication PEP has access controls. so you can make sure it only sends to the people it's useful to :)

  157. Cynthia

    jjj333_p (any pronouns): youre going to be cluttering up the storage or chat with keys to decrypt th locations

  158. jjj333_p (any pronouns)

    > jjj333_p (any pronouns): youre going to be cluttering up the storage or chat with keys to decrypt th locations which is why omemo doesnt make sense

  159. jjj333_p (any pronouns)

    perhaps something like MLS might make more sence since theres less key renegotiations

  160. Cynthia

    okay but you're still cluttering up the chat with keys

  161. jjj333_p (any pronouns)

    according to dwd it would only be on key changes

  162. jjj333_p (any pronouns)

    like adding/removing a device

  163. Cynthia

    that's internally, we're talking about sharing a key with everyone over MLS/OMEMO

  164. Cynthia

    and tbh, reusing keys directly from MLS/OMEMO would be a security nightmare on its own

  165. jjj333_p (any pronouns)

    what i think i figured out is dwd was saying that you could literally just use mls for that, like just another session

  166. jjj333_p (any pronouns)

    like i think we were just badly describing how mls works

  167. Cynthia

    also no server really stores the entire history

  168. Cynthia

    i'm assuming the location messages will be namespaced (so that client that can't handle it, ignore it)

  169. Cynthia

    so the server will prune out old messages

  170. jjj333_p (any pronouns)

    generally at least in the case of prosody i only see storage pruned in a time based mannor

  171. Cynthia

    yes

  172. Cynthia

    that's better, isn't it?

  173. jjj333_p (any pronouns)

    also in the case of realtime thats near constant events, you dont want to store that much

  174. jjj333_p (any pronouns)

    > that's better, isn't it? not at all

  175. jjj333_p (any pronouns)

    worse both for ux and the work of both the server and client

  176. Cynthia

    you still need a way to tell everyone to advance their ratchets

  177. singpolyma

    PEP will only store one event (the most recent) if that's how you set it. Which I assume you would in this case

  178. Cynthia

    so you really can't avoid it

  179. jjj333_p (any pronouns)

    > PEP will only store one event (the most recent) if that's how you set it. Which I assume you would in this case yeah okay so just need to make mls or omemo work over that

  180. Cynthia

    you can't

  181. jjj333_p (any pronouns)

    i feel like im discussing with a wall

  182. Cynthia

    you need a way to tell everyone to advance their ratchet, or a way to tell them which changes have occurred

  183. Cynthia

    otherwise the double ratchet system will break

  184. jjj333_p (any pronouns)

    > you need a way to tell everyone to advance their ratchet, or a way to tell them which changes have occurred do the rachet over messages, which in the case of mls would be way way way less frequent

  185. jjj333_p (any pronouns)

    like if you have a lot of friends with a lot of clients that will only happen like a couple times a day at worst really, rather than literally anythhing approximating realtime being stored

  186. Cynthia

    sooo.. why not do the whole thing over messages then

  187. jjj333_p (any pronouns)

    unless your retention is like 1 hour that would quickly baloon insanely

  188. jjj333_p (any pronouns)

    > sooo.. why not do the whole thing over messages then mf i just explained that

  189. jjj333_p (any pronouns)

    are you not reading my messages

  190. Cynthia

    i am

  191. Cynthia

    just confused

  192. jjj333_p (any pronouns)

    key negotiation happen once when client list changes

  193. singpolyma

    I guess the prior art is https://xmpp.org/extensions/xep-0477.html and https://xmpp.org/extensions/xep-0473.html maybe others. goffi is the one to talk to

  194. jjj333_p (any pronouns)

    location update happen potentially tens of times a minute

  195. jjj333_p (any pronouns)

    way way way different

  196. Cynthia

    ooh, so you're just talking about MLS exclusively

  197. jjj333_p (any pronouns)

    > perhaps something like MLS might make more sence since theres less key renegotiations literally said that

  198. singpolyma

    > sooo.. why not do the whole thing over messages then sure you could easily. but PEP is also "over messages" and handles some stuff for you *shrug*

  199. jjj333_p (any pronouns)

    i feel like im going cray

  200. Cynthia

    you said MLS/OMEMO

  201. Cynthia

    about a fw mssages back

  202. Cynthia

    sorry

  203. jjj333_p (any pronouns)

    not since i said the emssage i referenced

  204. Cynthia

    singpolyma: i'd like to see XEP-0477 be a thing

  205. Cynthia

    then we wouldn't need to argue over encryption for locations :P

  206. jjj333_p (any pronouns)

    > then we wouldn't need to argue over encryption for locations :P i mean that would just be solving the issue that we're debating

  207. Cynthia

    ... exactly?

  208. jjj333_p (any pronouns)

    i think i need to lie down, it feels like im speaking a different language than everyone else, and if its everyone than its probablyh me

  209. jjj333_p (any pronouns)

    it is 3am and im not sober

  210. jjj333_p (any pronouns)

    sorry

  211. sunglocto

    >> >> Don't clients randomise the resource on every connect > > no. quite the opposite So if i see `gajim.3728292rhde` it will stay like that on reconnect?

  212. singpolyma

    yes

  213. sunglocto

    noted. in my client i've been randomising it on every reconnect...

  214. singpolyma

    once you use sasl2 you lose control of the resource string anyway. I'd suggest doing it that way for any new work

  215. Martin

    For some reason I don't remember I have a random part in go-sendxmpp… I think it was related to FAST or SASL2.

  216. dwd

    Bind2 rather than SASL2, but yes - you only control the first part.

  217. Martin

    I think it was because a stable ressource per installation would break parallel use of go-sendxmpp which can easily happen if you use it in several scripts for notifications.

  218. moparisthebest

    you don't need to bind a resource at all to just send messages

  219. lovetox

    Really? TIL

  220. theTedd

    > After a client authenticates with a server, it MUST bind a specific resource to the stream so that the server can properly address the client —RFC 6120, §7.1

  221. moparisthebest

    I guess "properly address the client" is needed to just send messages then?

  222. moparisthebest

    I guess "properly address the client isn't needed to just send messages then?

  223. theTedd

    > If, before completing the resource binding step, the client attempts to send an XML stanza to an entity other than the server itself or the client's account, the server MUST NOT process the stanza and MUST close the stream with a <not-authorized/> stream error

  224. theTedd

    So, sure, it's not needed unless you want to send a message to anyone other than yourself

  225. moparisthebest

    oops I think I confused sending presence with binding lol

  226. lovetox

    I wanted to say that, but didn't.