Re: [Standards] XEP-0384: OMEMO Encryption - Feedbacks and proposals

2017-01-17 Thread Jaussoin Timothée

On 09/01/2017 11:24, Dave Cridland wrote:

On 6 January 2017 at 08:36, Jaussoin Timothée  wrote:

Hi,

I'm currently in the process of implementing end-to-end encryption in my
project. I naturally had a look at the freshly published XEP-0384: OMEMO
Encryption and I have some feedbacks to give on it.

1. Usage of Olm

After some talks with members of the community it seems that this protocol
was selected for two reasons : it was quite well documented (for the crypto
part) and didn't have legal concerns.

I was quite disappointed by the library provided by Matrix for this protocol
(https://matrix.org/git/olm/about/). The Javascript version of it needs to
be generated from the C/C++ code using a tool called emscripten
(https://kripken.github.io/emscripten-site/index.html) that is actually not
packaged on Debian (only a very old version from 2014 is available for sid)
and seems to rely on a forked version of LLVM.

Also I couldn't find any clear/simple documentation that could help me with
the integration of the library in a project (like we can have for libsignal
here https://github.com/WhisperSystems/libsignal-protocol-javascript).



Feel free to write a better library. Axolotl/Signal doesn't have this
option without someone setting lawyers on you. That's why we had to
switch away from it.


2. XMPP environment integration

I also had some concerns regarding the integration and coherence with the
current XMPP XEPs and syntax.

2.1. OMEMO nodes name syntax

Having node names that use the camelCase syntax is not something that I've
encountered since the vCard tag in XEP-0054: vcard-temp. I'd prefer to stick
with the kebab-case (lower-case-dash-separated syntax) like we have in the
rest of the XEPs. What do you think?



Cosmetic, so this is not a hill to die upon, but all things being
equal I'd prefer consistency.


2.2. Current usage of PEP

This feedback is related to the previous message that I sent on this ML
regarding XEP-0163: Personal Eventing Protocol a couple of days ago (see
https://mail.jabber.org/pipermail/standards/2017-January/031811.html).

The current usage of PEP is, for me, not optimal and overly complex. Having
a list of devices that needs to be synchronized on a node and their related
bundles on some others brings race-conditions issues (actually mentioned in
the Example 2.) and forces the clients to implement extra checks to ensure
that everything is properly synchronized.

Proposal :

I propose to simply publish the bundles on several items in one unique
"urx:xmpp:omemo:0" node. Each item ID will be the device ID.

To discover the device ID list a simple
http://jabber.org/protocol/disco#items query would then be sufficient and
will rely on existing PEP/Pubsub implementations (client and server wise).
Furthermore, each client could be instantly notified when a device has been
added or retracted from the list.

A similar behavior has already been standardized in XEP-0277: Microblogging
over XMPP.



This would seem a better design, indeed.


This seems to already work with servers like Metronome and ejabberd (not
Prosody for now) and should not cause issues with existing OMEMO
implementations that are still based on Axolotl and using the
eu.siacs.conversations.axolotl namespace.

Regards,

Timothée Jaussoin aka edhelas


___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Hi again,

Do you think it's a good idea to propose a Pull Request for those 
changes? I can work on this in the upcoming days.


Also, even if I'm not coming physically to the Summit I'll join you 
using video-conferencing and I'm planning to present my feedbacks. See 
https://wiki.xmpp.org/web/Summit_21#Agenda on Friday.


Regards,

Timothée Jaussoin
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] XEP-0384: OMEMO Encryption - Feedbacks and proposals

2017-01-09 Thread Dave Cridland
On 6 January 2017 at 08:36, Jaussoin Timothée  wrote:
> Hi,
>
> I'm currently in the process of implementing end-to-end encryption in my
> project. I naturally had a look at the freshly published XEP-0384: OMEMO
> Encryption and I have some feedbacks to give on it.
>
> 1. Usage of Olm
>
> After some talks with members of the community it seems that this protocol
> was selected for two reasons : it was quite well documented (for the crypto
> part) and didn't have legal concerns.
>
> I was quite disappointed by the library provided by Matrix for this protocol
> (https://matrix.org/git/olm/about/). The Javascript version of it needs to
> be generated from the C/C++ code using a tool called emscripten
> (https://kripken.github.io/emscripten-site/index.html) that is actually not
> packaged on Debian (only a very old version from 2014 is available for sid)
> and seems to rely on a forked version of LLVM.
>
> Also I couldn't find any clear/simple documentation that could help me with
> the integration of the library in a project (like we can have for libsignal
> here https://github.com/WhisperSystems/libsignal-protocol-javascript).
>

Feel free to write a better library. Axolotl/Signal doesn't have this
option without someone setting lawyers on you. That's why we had to
switch away from it.

> 2. XMPP environment integration
>
> I also had some concerns regarding the integration and coherence with the
> current XMPP XEPs and syntax.
>
> 2.1. OMEMO nodes name syntax
>
> Having node names that use the camelCase syntax is not something that I've
> encountered since the vCard tag in XEP-0054: vcard-temp. I'd prefer to stick
> with the kebab-case (lower-case-dash-separated syntax) like we have in the
> rest of the XEPs. What do you think?
>

Cosmetic, so this is not a hill to die upon, but all things being
equal I'd prefer consistency.

> 2.2. Current usage of PEP
>
> This feedback is related to the previous message that I sent on this ML
> regarding XEP-0163: Personal Eventing Protocol a couple of days ago (see
> https://mail.jabber.org/pipermail/standards/2017-January/031811.html).
>
> The current usage of PEP is, for me, not optimal and overly complex. Having
> a list of devices that needs to be synchronized on a node and their related
> bundles on some others brings race-conditions issues (actually mentioned in
> the Example 2.) and forces the clients to implement extra checks to ensure
> that everything is properly synchronized.
>
> Proposal :
>
> I propose to simply publish the bundles on several items in one unique
> "urx:xmpp:omemo:0" node. Each item ID will be the device ID.
>
> To discover the device ID list a simple
> http://jabber.org/protocol/disco#items query would then be sufficient and
> will rely on existing PEP/Pubsub implementations (client and server wise).
> Furthermore, each client could be instantly notified when a device has been
> added or retracted from the list.
>
> A similar behavior has already been standardized in XEP-0277: Microblogging
> over XMPP.
>

This would seem a better design, indeed.

> This seems to already work with servers like Metronome and ejabberd (not
> Prosody for now) and should not cause issues with existing OMEMO
> implementations that are still based on Axolotl and using the
> eu.siacs.conversations.axolotl namespace.
>
> Regards,
>
> Timothée Jaussoin aka edhelas
>
>
> ___
> Standards mailing list
> Info: https://mail.jabber.org/mailman/listinfo/standards
> Unsubscribe: standards-unsubscr...@xmpp.org
> ___
>
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] XEP-0384: OMEMO Encryption - Feedbacks and proposals

2017-01-08 Thread Jaussoin Timothée

Hi forenjunkie and thanks for your feedback.

I do agree with your feedback, indeed my proposal was just to do it in a 
more proper way using a publication patterns already defined in 0060.


Regards,

Timothée

On 06/01/2017 16:27, forenjunkie wrote:

Hi,

I see no downside with your proposal, but the upsides are not as plenty
as you described.

1. every client gets notified already if a update to the device list is
made, otherwise OMEMO would not work half of the time

2. there is no code that is added *only* to prevent the race condition,
a device has always be aware of all device ids that are published, and
also has to have the ability to delete the whole device list. So in any
case you need code that sees if your own device id is not in the list
anymore, and can add itself to the devicelist again. this code is
additionally also what prevents the race condition. I dont know if its
easier to just overwrite the list like we do now, or delete all items of
a node.

It still maybe a cleaner implementation, im not very knowledgeable on
pupsub/pep.


Am 06.01.2017 um 09:36 schrieb Jaussoin Timothée:

The current usage of PEP is, for me, not optimal and overly complex.
Having a list of devices that needs to be synchronized on a node and
their related bundles on some others brings race-conditions issues
(actually mentioned in the Example 2.) and forces the clients to
implement extra checks to ensure that everything is properly
synchronized.

Proposal :

I propose to simply publish the bundles on several items in one unique
"urx:xmpp:omemo:0" node. Each item ID will be the device ID.

To discover the device ID list a simple
http://jabber.org/protocol/disco#items query would then be sufficient
and will rely on existing PEP/Pubsub implementations (client and
server wise). Furthermore, each client could be instantly notified
when a device has been added or retracted from the list.

A similar behavior has already been standardized in XEP-0277:
Microblogging over XMPP.

This seems to already work with servers like Metronome and ejabberd
(not Prosody for now) and should not cause issues with existing OMEMO
implementations that are still based on Axolotl and using the
eu.siacs.conversations.axolotl namespace.

Regards,

Timothée Jaussoin aka edhelas



___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___




___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___



___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] XEP-0384: OMEMO Encryption - Feedbacks and proposals

2017-01-06 Thread forenjunkie

Hi,

I see no downside with your proposal, but the upsides are not as plenty 
as you described.


1. every client gets notified already if a update to the device list is 
made, otherwise OMEMO would not work half of the time


2. there is no code that is added *only* to prevent the race condition, 
a device has always be aware of all device ids that are published, and 
also has to have the ability to delete the whole device list. So in any 
case you need code that sees if your own device id is not in the list 
anymore, and can add itself to the devicelist again. this code is 
additionally also what prevents the race condition. I dont know if its 
easier to just overwrite the list like we do now, or delete all items of 
a node.


It still maybe a cleaner implementation, im not very knowledgeable on 
pupsub/pep.



Am 06.01.2017 um 09:36 schrieb Jaussoin Timothée:
The current usage of PEP is, for me, not optimal and overly complex. 
Having a list of devices that needs to be synchronized on a node and 
their related bundles on some others brings race-conditions issues 
(actually mentioned in the Example 2.) and forces the clients to 
implement extra checks to ensure that everything is properly 
synchronized.


Proposal :

I propose to simply publish the bundles on several items in one unique 
"urx:xmpp:omemo:0" node. Each item ID will be the device ID.


To discover the device ID list a simple 
http://jabber.org/protocol/disco#items query would then be sufficient 
and will rely on existing PEP/Pubsub implementations (client and 
server wise). Furthermore, each client could be instantly notified 
when a device has been added or retracted from the list.


A similar behavior has already been standardized in XEP-0277: 
Microblogging over XMPP.


This seems to already work with servers like Metronome and ejabberd 
(not Prosody for now) and should not cause issues with existing OMEMO 
implementations that are still based on Axolotl and using the 
eu.siacs.conversations.axolotl namespace.


Regards,

Timothée Jaussoin aka edhelas



___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


[Standards] XEP-0384: OMEMO Encryption - Feedbacks and proposals

2017-01-06 Thread Jaussoin Timothée

Hi,

I'm currently in the process of implementing end-to-end encryption in my 
project. I naturally had a look at the freshly published XEP-0384: OMEMO 
Encryption and I have some feedbacks to give on it.


1. Usage of Olm

After some talks with members of the community it seems that this 
protocol was selected for two reasons : it was quite well documented 
(for the crypto part) and didn't have legal concerns.


I was quite disappointed by the library provided by Matrix for this 
protocol (https://matrix.org/git/olm/about/). The Javascript version of 
it needs to be generated from the C/C++ code using a tool called 
emscripten (https://kripken.github.io/emscripten-site/index.html) that 
is actually not packaged on Debian (only a very old version from 2014 is 
available for sid) and seems to rely on a forked version of LLVM.


Also I couldn't find any clear/simple documentation that could help me 
with the integration of the library in a project (like we can have for 
libsignal here 
https://github.com/WhisperSystems/libsignal-protocol-javascript).


2. XMPP environment integration

I also had some concerns regarding the integration and coherence with 
the current XMPP XEPs and syntax.


2.1. OMEMO nodes name syntax

Having node names that use the camelCase syntax is not something that 
I've encountered since the vCard tag in XEP-0054: vcard-temp. I'd prefer 
to stick with the kebab-case (lower-case-dash-separated syntax) like we 
have in the rest of the XEPs. What do you think?


2.2. Current usage of PEP

This feedback is related to the previous message that I sent on this ML 
regarding XEP-0163: Personal Eventing Protocol a couple of days ago (see 
https://mail.jabber.org/pipermail/standards/2017-January/031811.html).


The current usage of PEP is, for me, not optimal and overly complex. 
Having a list of devices that needs to be synchronized on a node and 
their related bundles on some others brings race-conditions issues 
(actually mentioned in the Example 2.) and forces the clients to 
implement extra checks to ensure that everything is properly synchronized.


Proposal :

I propose to simply publish the bundles on several items in one unique 
"urx:xmpp:omemo:0" node. Each item ID will be the device ID.


To discover the device ID list a simple 
http://jabber.org/protocol/disco#items query would then be sufficient 
and will rely on existing PEP/Pubsub implementations (client and server 
wise). Furthermore, each client could be instantly notified when a 
device has been added or retracted from the list.


A similar behavior has already been standardized in XEP-0277: 
Microblogging over XMPP.


This seems to already work with servers like Metronome and ejabberd (not 
Prosody for now) and should not cause issues with existing OMEMO 
implementations that are still based on Axolotl and using the 
eu.siacs.conversations.axolotl namespace.


Regards,

Timothée Jaussoin aka edhelas

___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___