freelan-developers / freelan

The main freelan repository.
http://www.freelan.org
Other
1.35k stars 200 forks source link

Switch to dtls 1.2 #20

Open champtar opened 10 years ago

champtar commented 10 years ago

Hi,

First, as always, thanks for your good work. This is a long term feature request :) (freelan 3?)

I've asked in the past why not using DTLS and this was a bit buggy, maybe too soon.

DTLS 1.2 (january 2012) offer everything we need for secure udp point to point connections, including recent cyphers (elliptic curves and GCM). It's not yet available in openssl (will be in 1.1), but is available in gnutls since v3.2 (2013-05-10) which is in: -debian wheezy-backports -debian jessie -ubuntu 13.10 -ubuntu 14.04 -fedora 21 (next release, but you can install the packages on fedora 20) -openwrt BB

It'll also allow us to use openpgp certificates. Security is tricky, and letting thousands taking care of it is i think a good thing. Don't take me wrong, your work is amazing, but reading this paper http://www.isg.rhul.ac.uk/~kp/dtls.pdf you can see that it's too complex to get it right (plain text recovery via 'subtle' timing side channels attack)

Thanks again

ereOn commented 10 years ago

No worries: you are definitely right that security is a complex topic, and that relying on existing standards and implementations IS a good thing.

The main problem I had with DTLS was the presence of memory leaks and the fact that it was too client-server oriented. It was very difficult to get the SSL handshake to complete by both sides when they reach out to each other simultaneously (and for peer-to-peer software, we have to assume that this will happen).

I'm setting the freelan 3.0 milestone on this, but this obviously won't happen "soon". I hope they will have fixed the issues I just mentioned by then.

Fun fact: not relying on OpenSSL's DTLS so far caused Freelan to be immune to Heartbleed, which is kinda cool ! That's not a long term valid point of course, but I was quite happy it didn't affect us.

champtar commented 10 years ago

Also one of the cool things would be the ability to switch easily between all possible cyphers, and really use "cipher_capability"