[summoned by https://twitter.com/DwdDave/status/847908152561602561]

On 30/03/2017 09:09, remko wrote:
Hi,

The upcoming version of the OMEMO XEP relies on X3DH for establishing
an initial shared secret. In my extremely limited understanding of
it, I'm wondering whether this is the best approach for OMEMO.

X3DH relies on XEdDSA to be able to use Curve25519 keys to create
EdDSA-signatures. As far as I can tell, this solved a problem where
all long-standing identity keys in Signal were X25519, and they
needed them to create signatures (which you can't do without
conversion to Ed25519). I can't seem to find any public
implementation of XEdDSA yet, except in libsignal, so this sounds
like it makes implementing OMEMO pretty hard at the moment.

[disclaimer: I'm a bit rusty on this, and haven't worked on it directly, but given the main crypto devs for Matrix are on holiday today I'll try to respond...]

For libolm, we deliberately didn't follow Signal's behaviour of trying to share identity & signing keys: it seemed overengineered and of questionable value to add complexity in exchange for tracking one key rather than two. So we just maintain two, and don't bother with all the additional complexity X3DH complexity which results. It's possible that we're missing some subtlety.

It looks like elsewhere in the thread folks are conflating the question of signing one-time keys with the X25519 issue. As i understand it, the two are unrelated: libolm leaves the question of whether to sign pre-keys up to the application layer; if you want stronger PFS semantics at the expense of reduced deniability, go for it. This is nothing to do with whether you use X3DH or 3DH for key exchange.

http://matrix.org/docs/olm_signing.html attempts to describe this trade-off.

I'm a bit confused as to why the OMEMO community has moved away from Olm in favour of creating a new ODR, to be honest - I assumed that by releasing Olm under the Apache license and getting it publicly audited NCC Group (https://nccgroup.trust/us/our-research/matrix-olm-cryptographic-review) it would be really useful for precisely this sort of use case. For context, I know of no other publicly audited double ratchet implementation (including libsignal...)

If there are security concerns with it, please can someone let us know?

Looking at https://github.com/xsf/xeps/pull/460, the only argument I've seen so far for moving to ODR seems to be "We now use our own, new wire format, making the protocol independent from third parties." - which seems bizarre, given libsignal & olm share a very very similar protobuf-based line protocol, and avoiding dependency on audited liberal-licensed 3rd parties for the sake of it seems political at best :/

Matthew

--
Matthew Hodgson
Matrix.org
_______________________________________________
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: [email protected]
_______________________________________________

Reply via email to