diff --git a/xep-0390.xml b/xep-0390.xml index 3d474642..ffee4acd 100644 --- a/xep-0390.xml +++ b/xep-0390.xml @@ -20,6 +20,7 @@ Processing Entities"> Generating Entity"> Generating Entities"> + Query Interception"> org.jabber.security Mailing List Archive: '[Security] Trivial preimage attack against the entity capabilities protocol)' from 2009-07-22, <https://mail.jabber.org/pipermail/security/2009-July/000812.html>."> capsdb https://github.com/xnyhps/capsdb/"> ]> @@ -58,6 +59,7 @@ @@ -95,7 +97,7 @@
  • The bandwidth consumption should be as minimal as possible, while reusing existing specifications.
  • It must be possible to write &xep0045; and &xep0369; implementations which can forward this protocol with negligible extra work.
  • Entities must be able to update their published information arbitrarily often in a single presence session.
  • -
  • Server infrastructure beyond XMPP Core and XMPP IM must not be required for this to work.
  • +
  • Server infrastructure beyond XMPP Core and XMPP IM must not be required for this to work (but may be beneficial).
  • Entities must be able to be confident that the information obtained from the broadcast is equivalent to the information which would be obtained from querying the generating entity directly at the time the broadcast was generated.
  • The protocol must be able to coexist (but not necessarily exchange information) with &xep0115;.
  • No special XML features beyond what is needed to implement XMPP Core itself should be required.
  • @@ -111,6 +113,7 @@
    Capability Hash Set
    A set of &hashes; which cover the same XEP-0030 response, possibly in the form of a <c/> element with &xep0300; <hash/> children.
    Generating Entity
    An entity which emits a &hashset; to other entities.
    Processing Entity
    An entity which receives and processes a &hashset; from a &genent;.
    +
    Query Interception
    Server-side processing of disco#info queries directed to a resource based on the &hashsets; published by that resource.
    @@ -766,6 +769,17 @@ cDp0aW1lHxw=
  • Servers MAY answer disco#info requests for &hashnodes; on behalf of their and others clients if the disco#info response belonging to that &hash; is known to them.
  • + + +

    Servers MAY implement &queryintercept; to further optimise bandwidth consumption. The idea is that servers intercept &xep0030; disco#info queries sent to clients if they already know the answer from &hashes; published by the client. The rules for &queryintercept; are the following (to be applied in this order):

    + +
    @@ -794,6 +808,20 @@ cDp0aW1lHxw=

    Entities MAY choose to not send &hashsets; with directed presence (for example to increase privacy). In that case, entities SHOULD also refuse direct &xep0030; queries.

    + + +

    The server replies to certain disco#info queries on behalf of the client. This means that the client has no choice on to whom they reply. Otherwise, a client could choose to reply with <service-unavailable/> to mask its existence. We consider two effects of this:

    + +
    @@ -887,7 +915,7 @@ cDp0aW1lHxw=

    Thanks to the authors of &xep0115; for coming up with the original idea of using presence broadcast to convey service discovery information, as well as the optimization strategies.

    The note below the example in Advertisement of Support and Capabilities by Servers has been copied verbatimly from XEP-0115.

    Thanks to Waqas Hussain for originally (to my knowledge) pointing out the security flaws in XEP-0115 (see &mlwaqas1;).

    -

    Thanks to Georg Lukas, Link Mauve, Sebastian Riese, Florian Schmaus and Sam Whithed for their input, editorial and otherwise.

    +

    Thanks to Dave Cridland, Georg Lukas, Link Mauve, Sebastian Riese, Florian Schmaus and Sam Whited for their input, editorial and otherwise.