XSF Discussion - 2018-06-17


  1. labdsf

    I have update Ephemeral Messages XEP: https://github.com/xsf/xeps/pull/666

  2. flow

    labdsf, if you find the time, then maybe present an htmldiff

  3. flow

    for example by using https://github.com/cygri/htmldiff

  4. labdsf

    Ok

  5. labdsf

    I am afk now, will make a diff later

  6. labdsf

    I have mostly removed support for plaintext ephemeral messages, but the ability to implement them is left for "controlled environments", where servers only federate with servers that support ephemeral messages and only accept messages from clients that support ephemeral messages.

  7. SamWhited

    That seems like a premature optimization for a very niche use case; unless you know of a service that does this?

  8. labdsf

    Maybe remove it completely

  9. labdsf

    It may be useful for MUC on a non-federated server

  10. labdsf

    When you don't want to setup OMEMO MUC (which requires members-only chat)

  11. SamWhited

    ah sorry, I see; I misunderstood what you were saying anyways

  12. SamWhited

    Going to re-read this with your new changes now to make sure; but tying this to OMEMO or OTR at all feels wrong to me. I don't understand why there is a distinction between plaintext and OMEMO or whatever in a XEP about something that has nothing to do with encryption

  13. SamWhited

    Ephemeral messages feel completely orthogonal to what goes in the body or to the wire format of the message to me.

  14. labdsf

    In an open environment, where messages you send to bare JID or MUC may be delivered to clients that don't support ephemeral messages, OTR and OMEMO can be used to only encrypt messages for clients that have explicitly indicated support for them, as with OTR and OMEMO each device has its own private key (in contrast to OpenPGP, for example).

  15. labdsf

    With OTR, chats are full JID to full JID only, so you can ask the client whether it supports ephemeral messages or not.

  16. labdsf

    With OMEMO I add a PubSub item to show that device supports ephemeral messages.

  17. labdsf

    OTR and OMEMO are the only ways to have E2E forward secrecy in XMPP now. Using OpenPGP with ephemeral messages is a bad idea, because if the device is lost (the only considered scenario), the key is also compromised in most cases (unless you set a passphrase on it).

  18. labdsf

    So there are two use cases.

  19. labdsf

    One is the open network, where you use ephemeral messages only over OTR and OMEMO with contacts that have installed

  20. labdsf

    ..clients with ephemeral message support.

  21. labdsf

    The second use case is when there is a trusted "corporate" server network, all servers have forward secrecy on transport level and all clients enable plaintext ephemeral messages.

  22. Kev

    Sorry, what is the issue with gpg and ephemeral messages in the device loss scenario?

  23. Kev

    Clearly losing your key is a Bad Thing, but I don't see how that's related to ephemeral messages particularly.

  24. labdsf

    Message copies are left on the server, so they can be downloaded again and decrypted with the key.

  25. labdsf

    In the "open network" use case no server is trusted, so forward secrecy is required to have truly ephemeral messages.

  26. SamWhited

    That all seems like unnecessary complexity that's just going to make people think this is a security feature; you can't enforce this sort of thing so adding security theater on top of it doesn't seem helpful to me.

  27. labdsf

    It is a security feature as long as you trust your contact.

  28. pep.

    hmm, trust and security..

  29. labdsf

    pep.: when you use OMEMO, you trust your contact not to leak the message contents by publishing it on twitter

  30. pep.

    I don't use OMEMO

  31. Link Mauve

    labdsf, do you?

  32. pep.

    labdsf, and mostly not I don't

  33. SamWhited

    It's not though, if you trust clients not to ignore your pep feature advertisement you have to do that regardless of whether there's encryption or not

  34. pep.

    labdsf, and mostly no I don't

  35. Link Mauve

    labdsf, encryption and recipient behaviour are two orthogonal concepts, one is technical while the other is social.

  36. labdsf

    SamWhited: I trust clients that specifically indicate that they support the feature, the problem is legacy clients

  37. labdsf

    When a contact has two clients, one is, lets say, Gajim with ephemeral message support added, and the other is Conversations, I want only Gajim to receive ephemeral message.

  38. Link Mauve

    I remember when people from a MUC I used to frequent started using Snapchat, soon enough someone started using a way to save the dickpics^Wfiles exchanged permanently, despite that being the main “feature” of the service.

  39. labdsf

    Snapchat is not my usecase, I think I stated it at the beginning of the first discussion in standards ML.

  40. labdsf

    Because in MUC that is not members-only users are not trusted.

  41. pep.

    That was an example on social behaviour

  42. labdsf

    Ok, threat model for "open network" use case: contact is trusted, server is not.

  43. waqas

    Note that you are in any case trusting remote entities, e.g., I'd find it desirable to force logs in my client even if the remote party doesn't want them. GPG is about trust, while you are focusing on deniability.

  44. labdsf

    But contact has a legacy client.

  45. labdsf

    waqas: if you want to log all messages, just disable ephemeral messages

  46. Link Mauve

    Or still log them, despite what the other party may want.

  47. pep.

    But what happens when your contact sends you an ephemeral message

  48. waqas

    Yep, it's more fun to log them while having you think that we are not logging them

  49. waqas

    At the end of the day, you are trusting remote entities to not lie

  50. labdsf

    pep.: if you have not indicated that you support it, the message is not ephemeral

  51. pep.

    labdsf, that's the thing

  52. labdsf

    pep.: your contact knows it

  53. pep.

    So you won't send this kind of message if your contact doesn't support it? Or will you do it either way?

  54. labdsf

    waqas: lying contacts is not a part of the threat model

  55. waqas

    labdsf: lying servers aren't either?

  56. labdsf

    waqas: in "open network" use case the server is malicious

  57. waqas

    The server can always log without telling you

  58. labdsf

    waqas: that is why I say OTR and OMEMO must be used

  59. Link Mauve

    labdsf, I highly disagree on this point, in my open network use case, servers are often controlled by their user, if someone would lie they would have control over both their client and their server.

  60. labdsf

    Link Mauve: lying client is not a part of threat model

  61. labdsf

    I do not consider lying clients

  62. Link Mauve

    The server and the client can be considered a same entity in this model.

  63. waqas

    I do see labdsf's point though. It's largely a case of protecting against current server and future client compromise, if I understand the argument correctly.

  64. pep.

    labdsf, how do you not consider lying clients, I'm not sure I see it

  65. pep.

    If a contact tells me it's supporting ephemeral, I might send what I consider a bit more private messages, assuming they're going to be deleted.

  66. pep.

    Where is that not an issue

  67. waqas

    pep.: It's protecting against a future search warrant, where clients currently are considered uncompromised

  68. daniel

    It's not a security feature. It's a friendly reminder to maybe to some house cleaning after you read the message

  69. pep.

    daniel, yeah I know it's not a security feature

  70. pep.

    So what does it bring to me as a user, really

  71. labdsf

    pep.: it is ok to send more private messages if you trust your contact not to install malicious client

  72. pep.

    UX fun?

  73. pep.

    labdsf, my contact might not know

  74. labdsf

    pep.: what your contact might not know? Thst it installed a malicious client?

  75. pep.

    Yes?

  76. pep.

    Took the first client, "hah it looks like conversations, it's green like conversations, must be conversations"

  77. daniel

    pep., as the recipient you know that a certain messages is worth deleting at some point

  78. daniel

    for example the sender slaps the delete hint on a password or something

  79. labdsf

    See, all your arguments that it is not a security feature because a trusted contact may install a malicious client also make OMEMO, OpenPGP and OTR useless.

  80. pep.

    labdsf, oh I agree

  81. labdsf

    And then, the server admin may be malicious and so on

  82. pep.

    yes

  83. pep.

    I agree OMEMO is just smoke and mirrors for most people

  84. labdsf

    Lets switch to twitter/mastodon and exchange messages in public only?

  85. Kev

    daniel: I don't think "It's not a security feature" is consistent with what labdsf is saying here.

  86. Kev

    If you're saying only omemo and otr as good enough, because gpg doesn't offer PFS, that sounds a lot like you're talking about security features.

  87. daniel

    Kev, i’m not agreeing with labdsf

  88. labdsf

    It is a security feature that protects messages against future device compromise.

  89. daniel

    i think the hint should be agnostic of what kind of messages you send

  90. Kev

    daniel: ok.

  91. waqas

    The problem here is that plausible deniability/ephemeral messages is not compatible with message authentication.

  92. pep.

    I also see that just as a UI/UX thing

  93. pep.

    Definitely no security involved here

  94. waqas

    GPG is mostly about trust/authentication.

  95. labdsf

    waqas: it is not about deniability. Though deniability and authentication are compatible, OTR does this.

  96. waqas

    Trusting end clients in the present (but not the future!) is a reasonable position to have, because you really can't do better if there is to be any trust/auth.

  97. daniel

    i haven’t seen a compeling argument against a simple `<you-might-want-to-delete-me seconds="60"/>`

  98. labdsf

    daniel: consider legacy clients.

  99. labdsf

    I want to be able to avoid sending ephemeral messages to legacy clients.

  100. SamWhited

    so check if they support it and if so send to the full jid

  101. daniel

    i don’t think you can be reasonably sure that the recipient will obey that hint no matter what you do

  102. labdsf

    That is the reason for OTR/OMEMO requirement and encrypting only for clients that indicate feature support.

  103. labdsf

    daniel: the recipient is trusted in my threat model.

  104. SamWhited

    Either way, with OMEMO or without, you have to check for support and send only to that client. You can do that with or without OMEMO.

  105. labdsf

    But it has a legacy client

  106. SamWhited

    Then it won't advertise support

  107. labdsf

    SamWhited: that is what I do for OTR

  108. SamWhited

    I know, I'm saying you have to do it either way, OTR doesn't add anything.

  109. labdsf

    With OMEMO, I can't map device keys to resources

  110. labdsf

    And full JID may be offline

  111. pep.

    labdsf> With OMEMO, I can't map device keys to resources Yeah that's something I'd like

  112. labdsf

    pep.: it is impossible, device may connect with another resource next time

  113. pep.

    hmm, wait, no actually I don't need this

  114. labdsf

    SamWhited: do you propose to ask all full JIDd for support of ephemeral messages and send them plaintext ephemeral messages directly if they indicate support?

  115. labdsf

    I think we are mostly moving to sending to bare JID only in chat clients. OTR is an exception, but is is mostly obsolete now.

  116. SamWhited

    Not really; I propose just making it a hint and letting clients and services deal with legacy clients however they see fit and maybe documenting some of these ideas

  117. pep.

    I'd just do like daniel says, send to all resources <please-delete-me seconds="60"/>, and if some support it, cool

  118. SamWhited

    But yes, checking for support and only sending to full JIDs that support it is one way of doing that

  119. SamWhited

    But yah, mostly I think clients should just do what daniel and pep. just said.

  120. labdsf

    pep.: and some will not support it, so it will be no more useful than snapchat

  121. pep.

    labdsf, sure

  122. SamWhited

    Define "useful"?

  123. labdsf

    "Can work reliably in at least on use case"

  124. SamWhited

    Good, then what pep. just said works reliably in the use case where this is not a security feature, it's just a fun convenience that lets you clear up messages that don't have any long term benefit if the users haven on-legacy clients.

  125. SamWhited

    non-legacy, even.

  126. labdsf

    SamWhited: but some will always have legacy clients

  127. pep.

    I'm not sure why you worry about those here

  128. SamWhited

    labdsf: yes, and that will be fine since it's not a security feature.

  129. labdsf

    Because I want a security feature, not funny snapchat-like feature

  130. pep.

    Good luck :x

  131. SamWhited

    That is the problem I have with this. This is not a security feature and never can be; at best it's security theater.

  132. daniel

    there are two use cases here. a) people building walled gardens on top of xmpp. b) jabber as the federated public ecosystem. in a) you are fine with a hint since you control all clients and servers anyways b) i expect only a tiny fraction of client implementing that. so if you limit this to clients that advertise support you probably wont be able to use that feature very often

  133. labdsf

    SamWhited: it is in a scenario where you have two users that trust each other.

  134. SamWhited

    labdsf: if you have two users that trust each other you don't need OMEMO because they can just trust that both are using clients that will support it.

  135. SamWhited

    Or you don't need this at all because you can just trust that they'll clear their history afterwards.

  136. labdsf

    daniel: i have defined these two use cases above. My XEP supports both. Your proposal is for walled gardens.

  137. labdsf

    If it is a walled garden, server advertises thst it supports ephemeral messages.

  138. labdsf

    It only federates with such servers.

  139. labdsf

    And only accepts clients that support this feature.

  140. labdsf

    That is a way to create a corporate network or snapchat.

  141. labdsf

    Then you can exchange plaintext messages with a hint.

  142. labdsf

    If you connect to the federated open network, this feature is enabled for OTR and OMEMO only.

  143. labdsf

    SamWhited: you need OMEMO in this case, because servers are not trusted.

  144. pep.

    Why? I trust my server because I'm running it, and my mom is on my server.

  145. SamWhited

    labdsf: that's fine; if servers are not trusted individual users can use OMEMO. If they are trusted, they don't. Just like normal messages.

  146. SamWhited

    That doesn't really have anything to do with ephemeral messages.

  147. labdsf

    SamWhited: we can extend the spec with the ability to send plaintext ephemeral messages to full JIDs, but it will only work for online clients and require trusted servers.

  148. labdsf

    Ok, maybe you trust the servers and want to send ephemeral message protected with TLS only. Maybe if the user sees timer but no padlock, it is clear enough and nobody makes wrong assumptions. But what about offline clients?

  149. pep.

    what about them

  150. SamWhited

    Just let the server store it in MAM like normal. If you trust the client to do what's right then when it comes back online and fetches them it sees that it's expired and doesn't show it.

  151. labdsf

    pep.: they will not receive message

  152. pep.

    labdsf, they'll receive it when they reconnect

  153. labdsf

    pep.: no, if you sent to full JIDs

  154. labdsf

    SamWhited: MAM will not store them if you send to full JID

  155. pep.

    on prosody atm if you send to an offline fulljid, it'll be sent to other resources iirc

  156. labdsf

    And if you send to bare JID legacy clients receive it

  157. pep.

    labdsf, you really can't avoid legacy clients

  158. pep.

    One way or another they'll get the messages

  159. labdsf

    pep.: no if I use OMEMO

  160. pep.

    So.. legacy clientA suports OMEMO message, you send to clientB that supports OMEMO and ephemeral, clientB goes offline, gets to clientA, oops.

  161. pep.

    So.. legacy clientA suports OMEMO, you send to clientB that supports OMEMO and ephemeral, clientB goes offline, gets to clientA, oops.

  162. labdsf

    pep.: clientA and clientB have different keys

  163. labdsf

    clientA will not be able to decrypt

  164. pep.

    When you encrypt with OMEMO you encrypt for every devices right

  165. pep.

    and since you can't associate deviceid to resource atm, you don't have a choice

  166. labdsf

    pep.: in my proposal you encrypt ephemeral messages only for devices that support them

  167. pep.

    So you also need changes in 0384?

  168. labdsf

    No

  169. labdsf

    It is published in a separate item

  170. pep.

    What is?

  171. labdsf

    The indication of ephemeral message support

  172. pep.

    How do you associate deviceid to resource

  173. labdsf

    pep., I don't. I publish an item that says "the device 12345 supports ephemeral messages"

  174. pep.

    :/

  175. labdsf

    just like XEP 0384 publishes a Bundle

  176. labdsf

    well, the problem with XMPP is that offline clients are not registered in any way and you can't ask their capabilities and so on

  177. labdsf

    that is why OMEMO added its own devices that register in PEP

  178. labdsf

    that is why I have to build on top of OMEMO

  179. labdsf

    OTR is possible to support only because it already requires both clients to be offline, but I would say it is pretty much unusable

  180. pep.

    So you'll never want to support OX

  181. labdsf

    pep., yes

  182. labdsf

    only in "walled garden" scenario

  183. pep.

    meh

  184. pep.

    But well I don't think there's a big use-case for this feature anyway

  185. pep.

    The way you want it

  186. Andrew Nenakhov

    I'm a bit late to the party, but my take on this is simple: ephemeral messages are a joke, I'd want an option to keep them even if remote party thinks not, e2ee has nothing to do with ephemeral messages and PFS is also silly and not needed

  187. pep.

    Andrew Nenakhov, yes, do read above for more context

  188. Andrew Nenakhov

    Glanced it briefly.

  189. labdsf

    Andrew Nenakhov, just don't implement it in Xabber and no valid client will send ephemeral messages to it

  190. Andrew Nenakhov

    Remote party should not dictate me how I use my archive and device history.

  191. Andrew Nenakhov

    labdsf, if it comes to that I'll probably implement it to show support and let user choose to keep it anyway. 😈

  192. pep.

    Andrew Nenakhov, just to prove a point that's dumb :/

  193. pep.

    Even if I agree it's useless in the first place

  194. labdsf

    Andrew Nenakhov, ok, malicious clients are not part of my threat model

  195. pep.

    labdsf, I'm still not sure how you'll distinguish between malicious and not

  196. labdsf

    I trust my contacts not to install malicious clients

  197. pep.

    Yeah, that's a bit far fetched, but ok

  198. Andrew Nenakhov

    Such features make no sense in an open environment.

  199. labdsf

    Andrew Nenakhov, that is why I changed the XEP to only work over OTR and OMEMO

  200. labdsf

    it makes it a "closed environment", because XMPP is just a transport in this case

  201. labdsf

    it does not store message contents etc.

  202. Andrew Nenakhov

    If you trust your contacts, why run the hoops with e2ee pfs and all other fancy buzzwords?

  203. Andrew Nenakhov

    If you make something a XEP you are no longer talking about something you can use with your trusted contacts.

  204. labdsf

    because I want to be able to tick the "keep messages in this conversation for 1 week", and if my contact agrees and does not revert it, then we are sure that messages are removed after one week

  205. labdsf

    no need to agree verbally and delete manually

  206. Andrew Nenakhov

    And if you are pushing it to become a standard, you can't protect yourself from 'malicios clients'.

  207. labdsf

    Andrew Nenakhov, malicious clients are *not part of the threat model*, I don't want to protect against them

  208. labdsf

    feel free to implement one

  209. labdsf

    this feature already works in Wire, Signal and telegram "secret chats", everyone is free to modify the client to keep messages

  210. labdsf

    telegram even has multiple alternative clients in Google Play, maybe some of them have this option to keep messages

  211. Andrew Nenakhov

    Why push it as standard then? Just use some form of custom made client and be happy with it

  212. labdsf

    Andrew Nenakhov, I think it may be useful to someone else

  213. Andrew Nenakhov

    Daniel has said he did such forks several times

  214. labdsf

    Andrew Nenakhov, I think he did it for "walled gardens"

  215. labdsf

    Also, if nobody noticed, I have modified XEP to have a simple <ephemeral timer="..."/> element without contents.

  216. labdsf

    So it is not really different from what Daniel proposes

  217. labdsf

    (for the walled garden use case)

  218. Andrew Nenakhov

    If you want it to me useful for someone else then you can't dismiss security threats by simply saying 'they are not part of a threat model'

  219. Andrew Nenakhov

    *to be useful

  220. labdsf

    malicious clients are not part of the threat model of GPG, for example

  221. labdsf

    encryption is not broken because someone implements a client that twits every encrypted email it receives

  222. Andrew Nenakhov

    Because gpg does what it does and nothing else.

  223. Andrew Nenakhov

    You are trying to mix two things of different nature into one flawed protocol.

  224. labdsf

    Also, from XEP: "An XMPP client SHOULD NOT try to restrict the ability of the user to copy and forward ephemeral messages. Any such measures will give the user a false sense of security, but can be easily circumvented by using a modified XMPP client."

  225. labdsf

    no need to implement an option to log messages, everyone can just copy all messages into text file

  226. labdsf

    Andrew Nenakhov, how is it flawed?

  227. Andrew Nenakhov

    It is flawed because it mixes ephemeral messages with e2ee

  228. labdsf

    Andrew Nenakhov, that is the way to avoid sending messages to legacy clients

  229. Andrew Nenakhov

    They are orthogonal, and has been said

  230. labdsf

    In walled-garden use case plaintext messages are allowed

  231. labdsf

    Andrew Nenakhov, they are, but OMEMO is the only possible way to send messages to a subset of offline clients supporting this feature

  232. Andrew Nenakhov

    labdsf, just say 'legacy clients are not part of a threat model' and 'i trust my contacts not to send messages to legacy clients' :)

  233. labdsf

    i can't trust my contacts not to send messages to legacy clients because it is not implementable

  234. labdsf

    XMPP has no way to send messages to a subset of offline clients

  235. labdsf

    Signal has, for example

  236. Andrew Nenakhov

    Signal is a centralized proprietary shit and they can do whatever they please

  237. labdsf

    it may be, I just say protocol-wise

  238. Andrew Nenakhov

    You can do same within your own domain and own client

  239. Andrew Nenakhov

    > it may be, I just say protocol-wise It is only possible because it is centralized proprietary shit )

  240. labdsf

    XMPP has no way to ask remote bare JID to get a list of devices

  241. labdsf

    it has nothing to do with it being centralized or decentralized

  242. labdsf

    Andrew Nenakhov, also, Signal is not proprietary

  243. Andrew Nenakhov

    It is.

  244. labdsf

    in what sense?

  245. labdsf

    all clients and the server are actually open source and source code is even updated frequently

  246. labdsf

    it is just centralized

  247. labdsf

    https://github.com/signalapp/Signal-Server <- server

  248. labdsf

    https://github.com/signalapp <- everything else

  249. labdsf

    AGPLv3 everything

  250. labdsf

    daniel, > i haven’t seen a compeling argument against a simple `<you-might-want-to-delete-me seconds="60"/>` I have modified it in https://github.com/xsf/xeps/pull/666 to be basically a simple <ephemeral timer="..."/>

  251. Andrew Nenakhov

    Can you build signal server and send messages to signal users? No?

  252. labdsf

    The only question is how to avoid sending ephemeral messages to legacy (not actively malicious) clients

  253. labdsf

    Andrew Nenakhov, no, because it is centralized

  254. Andrew Nenakhov

    *build from source

  255. labdsf

    but not proprietary

  256. Andrew Nenakhov

    labdsf, and is owned by Signal. That makes it proprietary.

  257. labdsf

    :/

  258. labdsf

    not sure what is your definition of proprietary, the software is free

  259. Andrew Nenakhov

    You can license code under AGPL or whatever, but your own installation remains your own

  260. labdsf

    the infrastructure is "proprietary", ok

  261. Andrew Nenakhov

    Signal messenger is proprietary.

  262. labdsf

    ok ok

  263. Andrew Nenakhov

    Because it does not work without central infrastructure.

  264. labdsf

    it is federated inside btw

  265. Andrew Nenakhov

    Ok, almost 4am here

  266. Andrew Nenakhov

    Bye

  267. labdsf

    I should probably remove "plaintext/encrypted" distinction where possible and make it more clear that OMEMO is just a way to avoid sending to legacy clients