XSF Discussion - 2018-01-10


  1. jonasw

    moparisthebest, your post with Comcast on the SRV issue was amusingly written, brightened up my day :)

  2. jonasw

    moparisthebest, your post with Comcast on the SRV issue was written amusingly, brightened up my day :)

  3. Ge0rG

    Why do we have `&xep0077;` and `<cite>XEP-0077</cite>` na neitiher works as expected (show the full name on first occurence and just a hyperlink on any later one)?

  4. daniel

    Ge0rG: I always use &xep77; on the first time. But I agree it would be better if it only displayed the full name once

  5. daniel

    Probably not easy

  6. Ge0rG

    daniel: computers were created to automate this sort of thing.

  7. Kev

    If you can make the xslt do that, I'm sure people will be grateful.

  8. Ge0rG

    I can't. And I'm not sure I want to learn how to.

  9. Ge0rG

    If I was immediately able to do it, I'd just implement it straight away and PR.

  10. Kev

    Exactly :)

  11. Ge0rG

    jonasw: you are our in-house XSLT expert with some free time available, now that your exam is over.

  12. jonasw

    will probably be tricky with XSLT 1.x

  13. Steve Kille

    I use `&xep0077;` in MIX

  14. Steve Kille

    I tried <cite> once and it was badly broken

  15. Ge0rG

    So every XEP reference turns into the full text?

  16. Steve Kille

    I don't think this is so bad. Someone fixed up the much more problematic issue of duplicates in the reference list, which was a big win (thanks to whoever sorted it)

  17. Ge0rG

    It would also be good to be able to link to specific sections of an XEP

  18. Guus

    poor Jonas :)

  19. marc

    Ge0rG, If I understand the RFC correctly, the authority component is used to "select" an account. So xmpp://foo@bar.com/juliet@example.com?roster would mean "add juliet@example.com to my roster of account foo@bar.com". Which is why the authority component needs to be a full JID

  20. Ge0rG

    marc: Yes, this is a valid reading of the RFC.

  21. marc

    Ge0rG, Good. Which is why xmpp://xxx?register doesn't make sense

  22. Ge0rG

    marc: but what message would xmpp://juliet@example.com/romeo@example.com?register convey?

  23. marc

    Well this doesn't make sense IMO because you can not register an account for a given account

  24. Ge0rG

    marc: I would argue that xmpp://juliet@example.com?register would make sense, though, in the sense that you should register the account specified.

  25. Kev

    marc: That's not a full JID. That's a bare JID.

  26. marc

    Kev, yes, I know :-/

  27. marc

    Ge0rG, Yes, but look at the "?register" definition. I think they used xmpp:foo@bar?register on purpose and not xmpp://foo@bar?register

  28. marc

    Ge0rG, However, we agreed that we don't need the inviter JID because it can be faked

  29. Ge0rG

    I imagined it would be less text, but somehow it ended up rather complex: https://op-co.de/tmp/user-invite.html

  30. jonasw

    is this ready for protoxep submission?

  31. Ge0rG

    jonasw: not yet

  32. jonasw

    what’s missing?

  33. Ge0rG

    jonasw: there is a dozen of TODOs inside

  34. jonasw

    we’ve got accepted XEPs which have that too

  35. jonasw

    (bind2 I think)

  36. jonasw

    (or had)

  37. Kev

    TODOs aren't a problem, I think.

  38. Kev

    (Sometimes even TODOs that make it unimplementable, depending on the circumstances)

  39. Ge0rG

    I don't feel finished yet.

  40. Ge0rG

    Besides, we won't get it into today's council anyway, will we?

  41. Kev

    Could if it's urgent I suppose, but not otherwise.

  42. Ge0rG

    I don't think it is. Adding urgency won't make more people contribute to the public discussion.

  43. Ge0rG

    It's also still self-contradicting in some places.

  44. Dave Cridland

    TODOs are a lot less of a problem than unsubmitted XEPs.

  45. Ge0rG

    Hey Dave! I've been reading your proto-XEPs, and I have a feeling that CLIENT-KEY counters will get desynced and invalidated if a network outage happens during the handshake.

  46. Ge0rG

    But I haven't completely understood the flow and conditions, so I might err.

  47. Ge0rG

    jonasw: https://github.com/xsf/xeps/pull/568 (cc marc)

  48. jonasw

    \o/

  49. marc

    :)

  50. Dave Cridland

    Ge0rG, You're right. Various things in when, exactly, the counter is incremented could be improved. There are security issues tied in with all of them, though, I think.

  51. Ge0rG

    Dave Cridland: yeah. My question is, how much thought you have put into the exact order of increments, and what the rationale is beyond what's written down.

  52. Dave Cridland

    Ge0rG, But we do assume that if the counter is desynchronized, the legitimate user can always use a password (and TOTP device) anyway.

  53. Ge0rG

    Dave Cridland: that assumption is technically as valid as "the user can TOTP authenticate every single time"

  54. Dave Cridland

    Ge0rG, Right. But if you incrememnt the counter only on success, then it's susceptible to a replay attack, I think.

  55. Ge0rG

    Dave Cridland: I've experienced many situations where my mobile connection changed multiple times in a row, providing just enough time to the client to begin authentication.

  56. Ge0rG

    Dave Cridland: a replay of what exactly?

  57. Dave Cridland

    Ge0rG, The client-initial-response, specifically.

  58. Dave Cridland

    Ge0rG, Also, the counter has to be incremented at the same time at both ends. I think we run into a Two Generals problem if we try and make that perfect.

  59. Ge0rG

    Dave Cridland: maybe all we need is some kind of transactional consistency? I'm not sure, I'd just like to rule out that the whole effect is ruined every other day

  60. jonasw

    Dave Cridland, found a typo in the rfc draft (section 6.2): multiple values for Counter, increasingly the likelyhood of discovering a match.

  61. jonasw

    *increasingly*

  62. jonasw

    Dave Cridland, ha, I was about to say that with the Two Generals :)

  63. Dave Cridland

    jonasw, Ah, yes. Should be "increasingly the likelyhoodly of discoveringly a match" of course.

  64. jonasw

    Dave Cridland, can’t you solve the replay issue (I haven’t dug deep into the draft yet) the same way SCRAM does, with a nonce?

  65. jonasw

    specifically, is the counter only used to prevent replays without knowledge of the secrets involved?

  66. Dave Cridland

    jonasw, Well, sort of. So yes, but then you'd have to have the server store previous nonces, and ensure they weren't reused. Which feels, well, rubbish.

  67. jonasw

    do we really need that, or can’t we say that 128bit of random nonce shall be enough for everyone?

  68. Dave Cridland

    jonasw, Ah, so no. A counter is used because it's predictably changing state.

  69. jonasw

    I don’t see the purpose of the counter quite yet

  70. Dave Cridland

    jonasw, We could also use NotACounter = H(NotACounter) each time.

  71. jonasw

    sure

  72. jonasw

    in SCRAM, the nonce is composed of two parts (one from the server and one from the client), wouldn’t that work?

  73. Dave Cridland

    jonasw, But the idea is that where we see a correct ValidatorKey but an invalid resultant HMAC, we can make a reasonable assumption that the key has been compromised. THough as Ge0rG points out, this also occurs in some network failures.

  74. jonasw

    marc, please see https://github.com/xsf/xeps/pull/568#issuecomment-356583982

  75. Dave Cridland

    jonasw, Yes, but it would introduce an additional RTT. The right channel binding data would solve this (and we do use this as well), but too many operating systems don't allow clients to get at that.

  76. jonasw

    mh

  77. marc

    jonasw, is there a way to sign it without registering on GitHub?

  78. jonasw

    marc, I was expecting that. Kev ^?

  79. marc

    jonasw, I can send you a handwritten letter for example

  80. Kev

    No clue, I wasn't involved in setting up the CLA stuff.

  81. jonasw

    marc, I think we handled that via email before the CLAbot thing was invented.

  82. jonasw

    I have no idea where the email went normally though, I need to figure that out.

  83. jonasw

    I’ll just do what SamWhited did to me back then.

  84. Kev

    Getting someone to email in the agreement seems sufficient to me.

  85. jonasw

    marc, I sent you an email, please reply keeping the CC intact.

  86. marc

    jonasw, just replying a "+1"? :)

  87. jonasw

    if you want to be super safe, copy the IPR policy into your reply; but +1 is essentially what I did.

  88. marc

    jonasw, okay, thanks for the mail. I'll read the policy and reply then

  89. zinid

    moparisthebest, you said you don't know clueless admins, here is one: https://github.com/processone/ejabberd/issues/2214

  90. tux

    I just read that Kontron [1] is implementing MQTT into its communication gateways (LoRa based). Do we have good showcases for using XMPP in a mobile IoT context? There's a lot of movement currently towareds standardized communication in public transport, but – if at all – I only see MQTT (or SOAP …) [1] https://www.kontron.de/

  91. tux

    Kontron TRACe LoRa-MQTT https://www.kontron.de/products/systems/transportation-computers/trace-railway-computers/trace-lora-mqtt.html

  92. edhelas

    just found that https://github.com/mgp25/Chat-API/wiki/FunXMPP-Protocol

  93. edhelas

    is it just a dump version of https://xmpp.org/extensions/xep-0138.html ?

  94. marc

    jonasw, Done

  95. Zash

    edhelas: yes, a custom compression scheme. they also had their own custom RC4 based encryption scheme and some custom authentication that was not very good. hopefully those are fixed by now.

  96. edhelas

    but is it nocieably better than ZLIB ?

  97. edhelas

    I mean this is just dictionnary compression, can work pretty well on XML

  98. intosi

    I wouldn't expect this to be better in terms of compression on longer sessions, as it doesn't even try to compress jids or body texts.

  99. Zash

    Which might be a good thing

  100. Zash

    Remember https://blog.thijsalkema.de/blog/2014/08/07/https-attacks-and-xmpp-2-crime-and-breach/

  101. intosi

    I member.

  102. intosi

    But it could easily keep a rolling dictionary of jids on both ends, and only send new jids in clear form.

  103. intosi

    It could also save on parsing time by adding information that would speed that up.

  104. intosi

    Before you know it, you're sending XMPP as ASN.1 ;)

  105. Zash

    That's sorta EXI, isn't it

  106. intosi

    Zash: it is.

  107. moparisthebest

    zinid: no no I said admins that clueless should get another career, I stand by that statement hehe

  108. Guus

    My kid just picked out a new bicycle.

  109. Guus

    https://xmpp.igniterealtime.org:7483/httpfileupload/72bb37ec-a082-473c-9d00-e5a37eaa5b32/oTRaUDqyTneazojaH3P9og.jpg

  110. jonasw

    close!

  111. Guus

    I swear I had nothing to do with it. 😁

  112. Zash

    Guus: I expect another picture where you've modded that Y to a J

  113. edhelas

    now you must put a XMPP sticker on it

  114. Ge0rG

    What Zash said.

  115. moparisthebest

    Careful about modding it, those Cisco lawyers could be hiding anywhere!

  116. Ge0rG

    You need to pay 500$ to the XSF, because it is obviously a piece of physical merchandise.

  117. Zash

    As long as the kid doesn't fancy becoming a courier it should be safe.

  118. Ge0rG

    jonasw: is there another magic button you need to push for the proto-xep email to happen?

  119. edhelas

    https://www.wired.com/story/whatsapp-security-flaws-encryption-group-chats/

  120. jonasw

  121. Ge0rG

    edhelas: Shocking!

  122. Zash

    He who controls the server controls the universe!

  123. edhelas

    that's why they added e2ee… wait

  124. Ge0rG

    How is group membership enforced in OMEMO? Is the admin signing the participant key list? Oh, wait. Not defined at all.

  125. edhelas

    :D

  126. Ge0rG

    I think identity management is the weakest link in OMEMO.

  127. moparisthebest

    Ge0rG, iirc everyone has to be on everyone's contact list

  128. Ge0rG

    moparisthebest: that's a prerequisite to knowing their keys, except with omemo_for_all

  129. Zash

    or the omemo key nodes need to be public

  130. Ge0rG

    moparisthebest: it's not a security guarantee of any kind, especially if you consider that the roster is owned by the server.

  131. zinid

    moparisthebest: so I should tell him "choose another career"?

  132. moparisthebest

    Ge0rG, I *thought* the key had to be trusted too, but maybe not with BTBV not sure

  133. moparisthebest

    zinid, yes 🙂

  134. Ge0rG

    moparisthebest: so only friends can snoop on friends?

  135. zinid

    moparisthebest: very clever

  136. Anu

    Hi all. I'll be lurking here for a bit.

  137. Ge0rG

    Hi Anu!

  138. intosi

    Hello, Anu!

  139. Anu

    Hi

  140. jonasw

    welcome, Anu

  141. Guus

    if you lurk long enough, we'll ask you to do the dishes though.

  142. Anu

    hahah

  143. Anu

    Sorry, old irc habit. join a channel and watch a little before jumping in.

  144. daniel

    Anu, probably introduce yourself very quickly. i'm not sure everyone recognizes you by name. (I only figured that out myself because you contact me 1:1)

  145. Guus

    I was going to say that IRC is so 1999 - but that's probably not old enough :)

  146. Kev

    I still actively use IRC now :p

  147. jonasw

    Anu, in general, a good habit I think :)

  148. Holger

    XMPP is 1999 ...

  149. Zash

    80's something?

  150. Anu

    I was talking on IRC during the gulf war..

  151. Zash

    Oh but apparently with IRCv3 they've got JSON and all the features

  152. moparisthebest

    yea but it's like MIX

  153. daniel

    which one?

  154. moparisthebest

    all spec'd out and no one in sight wants to implement it

  155. Anu

    I should properly introduce myself. I am Anu Pokharel, I develop Monal for iOS and OSX

  156. Anu

    1990 gulf war

  157. Guus

    good to have you hear, Anu (we'll still ask you to do the dishes, eventually)

  158. Ge0rG

    Anu: actually it's awesome to have you here. Now we can complain even more about Monal ;-)

  159. MattJ

    After the Board decides which dishes to wash first

  160. Anu

    complaints mean people use it i guess. :)

  161. Ge0rG

    Anu: actually I have a hobby of installing XMPP software and flooding the developers with issue reports.

  162. MattJ

    :'(

  163. intosi

    Anu: Ge0rG isn't joking.

  164. Anu

    Oh i know, Ive seen the bugs that hes sent me

  165. intosi

    ;)

  166. moparisthebest

    if it wasn't for Ge0rG and Link Mauve no XMPP software would have any issues

  167. moparisthebest

    at least, reported issues

  168. Anu

    It's great. I've come to really appreciate people who test code for me.

  169. Ge0rG

    https://github.com/anurodhp/Monal/issues?utf8=%E2%9C%93&q=is%3Aissue+author%3Age0rg - way too few, if compared with prosody or poezio.

  170. Ge0rG

    But on the other hand, I'm not actively using the iPhone, it's just a dev device.

  171. mathieuii

    at least Anu is safe, Link Mauve has no apple device

  172. Anu

    I'm halfway through porting all the iOS code to a mac UI.

  173. Anu

    I hope to get more bugs then

  174. marc

    Anu, screenshots of your App would be nice

  175. Ge0rG

    Anu: in Monal/iOS I see many of my offline contacts listed multiple times. Restarting the app fixes it though.

  176. Ge0rG

    Anu: also, do you have a beta channel / testflight?

  177. Anu

    Ge0rG, yeah its a bug in one my sql queries. Yes, I do send me your apple id. I need more people testing the next update prior to release

  178. Anu

    Also, please file a bug for that if there isnt already one so i can make sure its fixed

  179. pep.

    marc, jonasw, good to see the XEP up :)

  180. marc

    pep., you forgot to mention Ge0rG :)

  181. jonasw

    I just hit the "merge" and "send" buttons

  182. jonasw

    (and even screwed up the merge)

  183. pep.

    Ge0rG, ^

  184. Ge0rG

    jonasw: squash & merge?

  185. jonasw

    Ge0rG, nah, more like "first ask for IPR signature, then merge" :)

  186. marc

    jonasw, actually I don't understand why you merged it into master right now

  187. jonasw

    marc, why not?

  188. marc

    jonasw, I try to keep my master branches clean

  189. Kev

    But it's in the inbox, no?

  190. Kev

    So this *is* clean.

  191. Kev

    The inbox holds protoXEPs submitted for approval, but not yet Experimental.

  192. marc

    I'm talking about Git commit history

  193. pep.

    marc, I don't think there's any issue with pushing early to master, you commit history is never clean anyway

  194. marc

    pep., my is :D

  195. pep.

    How many rebase and push force does that take you

  196. Kev

    I think I don't understand the question. There was a PR requesting this be merged to master, so Jonas did. Isn't that right?

  197. jonasw

    marc, the only way to make the website update is to push to master

  198. jonasw

    that might be the bit of info you’re lacking

  199. marc

    jonasw, ah okay

  200. pep.

    plus yeah it doesn't apply here

  201. marc

    Didn't think about the website

  202. Guus

    > Ge0rG: Anu: actually I have a hobby of installing XMPP software and flooding the developers with issue

  203. Guus

    I feel neglected.

  204. Guus

    (as I'm pretty sure mine has most bugs of all :P )

  205. Anu

    Guus, do you have an iOS device, want to test monal ?

  206. Guus

    Anu: sorry, android

  207. Guus

    (although I was referring to the lack of issue flood from Ge0rG)

  208. Ge0rG

    Guus: sorry, my time is limited.

  209. Guus

    (test)

  210. Ge0rG

    Damn, my iPhone won't get detected by my VirtualBox.

  211. moparisthebest

    probably have to do USB passthrough or something?

  212. Ge0rG

    Yes. But it doesn't work.

  213. pep.

    marc, Ge0rG, any reason why ad-hoc and not say <iq/>?

  214. jonasw

    pep., ad-hoc allows use from clients which don’t support the protocol yet

  215. pep.

    Does many client support ad-hoc already?

  216. jonasw

    sure

  217. jonasw

    even pidgin(!) does

  218. pep.

    Do

  219. jonasw

    gajim does, poezio does

  220. pep.

    Conversations? Dino

  221. jonasw

    dunno about those

  222. pep.

    yaxim

  223. jonasw

    but you can always implement a specific ad-hoc flow without implementing all of ad-hoc or a generic ad-hoc UI

  224. jonasw

    so if there’s interest in this thing, I guess that wouldn’t be a blocker

  225. moparisthebest

    conversations definitly no, dino I think not

  226. Ge0rG

    pep.: yaxim doesn't. But I'd for sure add support for the user-invite command

  227. pep.

    jonasw, I'm not sure I get your point about clients not supporting the protocol yet

  228. jonasw

    pep., if you invent a protocol based on non ad-hoc <iq/>s, *all* clients have to be updated to be able to use it.

  229. jonasw

    pep., if you use ad-hoc, clients which already have ad-hoc support can use the protocol right away.

  230. pep.

    Well here all clients have to implement ad-hoc

  231. pep.

    first

  232. jonasw

    no

  233. Ge0rG

    pep.: your clients are bad then :P

  234. pep.

    If they want to use this

  235. jonasw

    no

  236. pep.

    no?

  237. jonasw

    they could always just implement handling for that specific command, without running a full-blown ad-hoc implementation

  238. jonasw

    (which is simpler)

  239. pep.

    Which would be the same as handling this specific command via iqs?

  240. jonasw

    exatcly

  241. Ge0rG

    pep.: yes, except that now there are already clients that support this

  242. Ge0rG

    so for a client not yet supporting ad-hoc, it doesn't matter. And for clients supporting ad-hoc, they get it for free

  243. jonasw

    yupp

  244. jonasw

    and that’s the beauty of it

  245. pep.

    Ok, I'm just trying to understand here. So we should start implementing everything via ad-hoc commands right

  246. jonasw

    no

  247. jonasw

    not everything makes sense as an ad-hoc command

  248. jonasw

    MAM for example; the result wouldn’t be very useful for a user

  249. jonasw

    (ad-hoc commands are only useful if the result doesn’t need to be interpreted by the client in any way, but only by the user)

  250. jonasw

    roster wouldn’t make any sense either, a client needs proper support for a roster for it to be useful.

  251. pep.

    hmm

  252. mathieuii

    jonasw, there are the server admin commands XEP which can be singled out by the client

  253. jonasw

    mathieuii, sure

  254. jonasw

    a client can always additionally implement fancy additional support for a given Ad-Hoc Command

  255. jonasw

    but the command has to work well even without specific support

  256. mathieuii

    yeah, sure

  257. pep.

    Will the ad-hoc command be versioned or something?

  258. pep.

    If now a client want to special-case it and the XEP gets updated, you now broke everything

  259. jonasw

    pep., there are specific rules how unknown fields are treated in forms

  260. pep.

    And lost all the interest of using ad-hoc

  261. jonasw

    if the XEP updates adhere to that, there should be no issues

  262. pep.

    k

  263. jonasw

    (and a client could fallback to the default ad-hoc handling (if it has some))

  264. pep.

    that's a lot of ifs

  265. jonasw

    sure

  266. jonasw

    things are worse with IQs though

  267. jonasw

    if you make an update to a raw IQ protocol, this is (usually) a namespace bump, breaking the flow for everyone

  268. jonasw

    (until the next update)

  269. pep.

    yeah, but you don't end-up with UB

  270. pep.

    Or defined-but-if-if-if

  271. Ge0rG

    pep.: XMPP is full of defined-but-if-if-if

  272. pep.

    yeah :/

  273. jonasw

    pep., it’s fully defined

  274. jonasw

    but in addition to the defined behaviour, you can also play safe and fall back to generic ad-hoc handling.

  275. pep.

    But it depends if X has support for Y and Z and

  276. pep.

    But gotcha

  277. jonasw

    no, if you supported an earlier version (okay, here’s one "if": and *if* the people updating the XEP didn’t do something stupid), that’ll continue to work

  278. Ge0rG

    jonasw: the Council should prevent them from doing stupid things

  279. pep.

    Yeah I think I would prefer to have it versioned and break cleanly with a major update if needed, instead of wanting to stay backward-compatible until the end of times

  280. pep.

    At costs

  281. Ge0rG

    pep.: you can always introduce a different command name.

  282. Ge0rG

    pep.: which is exactly like a namespace bump

  283. pep.

    invite2

  284. jonasw

    Ge0rG, heh, yes, but that doesn’t always happen :)

  285. pep.

    small remark, there doesn't seem to be in 0050 anything that restrict command name usage. Server could be using a conflicting command name, knowing that ad-hoc commands are often used in non-specified environments as I understand it

  286. pep.

    Though it's the same remark for server admin commands

  287. Ge0rG

    pep.: yes. namespacing commands is a thin

  288. Ge0rG

    +g

  289. Ge0rG

    marc: just stumbled upon https://xmpp.org/extensions/xep-0186.html#nt-idm138620103579920 > In accordance with Section 3.2.2.1 of XML Schema Part 2: Datatypes, the allowable lexical representations for the xs:boolean datatype are the strings "0" and "false" for the concept 'false' and the strings "1" and "true" for the concept 'true'; implementations MUST support both styles of lexical representation.

  290. moparisthebest

    ew

  291. moparisthebest

    why not T and F and Y and N also

  292. moparisthebest

    I mean if you are going down that rabbit hole, might as well see how deep

  293. Ge0rG

    moparisthebest: it's merely about whether ibr= should be `true`, `1` or `y`

  294. Ge0rG

    I'm not keen on inventing new protocol, just making the xmpp: URI as short as possible

  295. Ge0rG

    So, how does XEP-0153 work in a MUC? You send the vcard get IQ to the participant full JID, and it gets forwarded to the user full JID? Intercepted by the user's account?

  296. MattJ

    To the user bare JID, intercepted by the MUC

  297. Ge0rG

    MattJ: forwarded to the bare JID?

  298. MattJ

    Yes

  299. MattJ

    MUC service handles everything addressed to participant JIDs

  300. Ge0rG

    Because sending the IQ get to the MUC bare JID won't work out very well

  301. MattJ

    What "handling" means isn't greatly defined, but a sensible MUC service will handle vcard requests by proxying to the user's bare JID

  302. Ge0rG

    is there a XEP for that?

  303. MattJ

    nafaik

  304. MattJ

    It's just an implementation thing

  305. Ge0rG

    Isn't that what XEPs are made for?

  306. MattJ

    The MUC service could return a service-specific vcard (e.g. you have a muc.xmpp.org profile)

  307. MattJ

    and still be compliant

  308. MattJ

    unless someone can prove me wrong :)

  309. Ge0rG

    MattJ: thanks very much. That helped me better understand the problem space. I hope I was able to make a useful suggestion for pep-vcard-conversion now

  310. Ge0rG

    Dave Cridland: is the issuer name "XMPP" in totp-2fa an example or a normative constant?

  311. marc

    Ge0rG, what's the "problem" or why do you mention this?

  312. daniel

    > Because sending the IQ get to the MUC bare JID won't work out very well Why not? Isn't that where you disco#info to as well?