
WireGuard Presentation at FOSDEM17 [video] - zx2c4
https://www.wireguard.io/presentations/#february-5-2017-fosdem-brussels-belgium
======
jlgaddis
The FOSDEM web site includes a synopsis of this talk [0], along with the
video, slides (PDF) [1] and a "demo screencast" (MP4/video) [2].

It's a good talk and WireGuard is quite interesting. IPSec, OpenVPN, et al.,
are great but I definitely think there's a need for a high-performance, high-
security, easy to configure VPN.

The demo is only two and a half minutes long, check it out.

 _Edit_ : Also found _zx2c4_ 's technical whitepaper, _" WireGuard: Next
Generation Kernel Network Tunnel"_. Just started to look over it but it
appears to have all the juicy details.

[0]:
[https://fosdem.org/2017/schedule/event/wireguard/](https://fosdem.org/2017/schedule/event/wireguard/)

[1]:
[https://fosdem.org/2017/schedule/event/wireguard/attachments...](https://fosdem.org/2017/schedule/event/wireguard/attachments/slides/1834/export/events/attachments/wireguard/slides/1834/wireguard_fosdem2017_slides.pdf)

[2]:
[https://fosdem.org/2017/schedule/event/wireguard/attachments...](https://fosdem.org/2017/schedule/event/wireguard/attachments/video/1835/export/events/attachments/wireguard/video/1835/wireguard_fosdem2017_demo_screencast.mp4)

[3]:
[https://www.wireguard.io/papers/wireguard.pdf](https://www.wireguard.io/papers/wireguard.pdf)

~~~
rsync
"IPSec, OpenVPN, et al., are great but I definitely think there's a need for a
high-performance, high-security, easy to configure VPN"

I really like sshuttle.[1] Very simple - just point it at _any_ host anywhere
on the net that has an sshd running.

We (rsync.net) have recently sponsored some bug fixes and freebsd-specific
improvements that allow --dns to work as well as generalized UDP tunneling.
I'm testing it right now ...

[1]
[https://github.com/sshuttle/sshuttle](https://github.com/sshuttle/sshuttle)

~~~
storrgie
In lieu of the complexity for all other vpn implementations, we fall back on
sshuttle consistently.

------
kashyapc
A long-time kernel developer happened to be sitting next to me, while I was
listening to this talk at FOSDEM last weekend, and he politely pointed out
after the talk (paraphrasing): "Hmm, I'm not quite convinced -- this lives in
the Kernel, and if it's compromised, then it's game over."

PS: Day-21 of QEMU Advent Calendar 2016 was WireGuard (contributed by: Jason
A. Donenfeld and Stefan Hajnoczi) -- [http://www.qemu-advent-
calendar.org/2016/#day-21](http://www.qemu-advent-calendar.org/2016/#day-21)
\-- "This image runs iperf inside containers & prints out the performance
statistics along with commands used to configure the VPN."

[Edit: I just noticed 'mtgx' has posed this question in this thread --
[https://news.ycombinator.com/item?id=13600614](https://news.ycombinator.com/item?id=13600614)]

~~~
storrgie
I've been wondering the same thing. It seems many lament for it to be in the
kernel, when many other vpn systems are addon packages.

------
conductor
I'm really thrilled with WireGuard. It's small, easy to audit, easy to setup,
and it is using the Noise protocol which uses trusted cryptography primitives
by DJB. I hope it can be merged into the mainline Linux kernel once it
stabilizes.

------
mjl-
i've read up on wireguard a week or so ago. it seems awesome. i've rarely been
so excited about new software/protocol. the design philosophy feels so right.

a few months ago i concluded i needed a secure vpn to servers. ipsec seemed
the better option. but i haven't set it up yet. it all seems so complicated
for what i want to achieve: a simple secure tunnel between a few machines.

hopefully we'll get easy to use software for macos/windows. no idea how hard
that is to create (i.e. adding tunnel types to these OS'es so you can easily
add a tunnel and configure them).

~~~
viraptor
Have a look at zerotier then. It's user space, so no kernel requirements. It's
super simple: start up the servers and join a network you create on the
website. All the traffic still goes directly if possible. Lots of clients
available for popular platforms.

~~~
tptacek
ZeroTier is cryptographically inferior to Wireguard, but also isn't really a
VPN: it has centralized configuration and rendezvous. If you're running VPNs
to get the US Netflix from your UK vacation, this is probably fine. If your
VPN is how remote employees access your prod network, it is way less fine.

I think it's a bit unfair to judge ZeroTier in comparison to VPNs, because
that's not strictly speaking what it's trying to be. I like overlay networks!

~~~
orware
I actually would love to hear more about your perspective on the crypto used
in Zerotier and why it shouldn't be used for remote workers and those sorts of
things.

I've been a user for quite a while and it's been really nice (and generally
I've really only had trouble using Zerotier on really locked down wifi
networks), but given their Technical FAQ info it sounds pretty convincing to a
lay non-security-expert person that it is relatively secure:
[https://www.zerotier.com/tech_faq.shtml#security](https://www.zerotier.com/tech_faq.shtml#security)

As far as using it for remote workers, in comparison to how our current VPN
option at work functions (currently a SonicWall Firewall/VPN) it definitely
seems to work more easily/consistently so it's been something I've wanted to
share so we can try out (but if there are big security issues with doing so
I'm sure myself and others would love to get your thoughts on Zerotier in
particular).

Thanks!

------
drudru11
This looks excellent!

I read the presentation and it looks like the designer did an excellent job
handling all of the factors.

I also really like the work done to simplify the human interface. This is also
important for security and is often lacking.

This feels like the introduction of ssh. I think this has the potential to
become an important tool in everyone's toolbox.

I will read more about this tonight!

------
robert_foss
WireGuard does seem like a very good approach to an easily configurable, high
performance, high security VPN.

~~~
softwarelimits
Would you please like to add some reasoning to make it easier for others to
understand how you came to that conclusion?

Why do you think that it seems like a very good approach?

What information is your analysis based on?

And what is your competence that allows for a public verdict, if I may ask?

POTUS-style "it is very good" posts should not invade this discussion space.

~~~
tptacek
Your comment would be just as informative if it ended after the first
sentence.

The presentation answers most of this:

* An extremely small, auditable-in-an-afternoon codebase. The code is 1% as large as XFRM/StrongSwan IPSEC.

* Designed from inception to eliminate memory corruption and state machine bug classes; for instance, all allocation is per-peer at-config static.

* A simplified, modern crypto stack with no cipher agility and thus no downgrade attacks (and, again, an extremely small codebase) --- this also drastically simplifies configuration.

* A DOS-resistant forward-secure protocol based on Trevor Perrin's NoiseIK.

* Direct integration into the Linux networking stack, so that VPN tunnel interfaces appear to management tools just like other interfaces, and policy can be expressed using standard iptables and IP routing tools rather than poorly duplicated in the VPN software.

~~~
drvdevd
Great synopsis, thanks! I'm particularly excited by the last point - there's a
genius to putting this in kernel space for exactly that reason.

~~~
agwa
A VPN does not need to be in the kernel for that; userspace TUN/TAP VPNs can
also take advantage of standard system tools for policy and management.

The actual motivation for running in kernel space is performance.

~~~
tptacek
I didn't write "runs in kernel" as a benefit. I wrote "directly integrated
with Linux networking stack". It's actually not the case that the other VPN
alternatives integrate as seamlessly with Linux networking tools as Wireguard.

~~~
agwa
I wasn't replying to you.

------
brongondwana
I have to say this for wireguard, they're doing really well at PR.

We're still doing pretty well with bonding multiple OpenVPN links to get
multi-processor performance at FastMail:

[https://blog.fastmail.com/2016/12/19/secure-datacentre-
inter...](https://blog.fastmail.com/2016/12/19/secure-datacentre-interlinks/)

But I'm sure we'll look at wireguard again at some point, but while the
website says this: "WireGuard is not yet complete. You should not rely on this
code." I'll stick with being conservative and using what we already know and
trust.

------
AceJohnny2
Previously covered 7 months ago at
[https://news.ycombinator.com/item?id=11994265](https://news.ycombinator.com/item?id=11994265)

The author answered questions there.

Also 4 days ago for its FOSDEM presentation:
[https://news.ycombinator.com/item?id=13569420](https://news.ycombinator.com/item?id=13569420)

~~~
j_s
Anyone know if they've implemented DMVPN yet?

edit: sounds like nope; only progress is a high-level description of how
WireGuard might provide equivalent functionality:
[https://lists.zx2c4.com/pipermail/wireguard/2016-December/00...](https://lists.zx2c4.com/pipermail/wireguard/2016-December/000687.html)

~~~
tptacek
Candidly: it seems weird to me that anyone would prioritize something like
DMVPN over escaping the IPSEC ecosystem as soon as possible. IPSEC ---
including Cisco's IPSEC products --- is terrifying.

~~~
drvdevd
So I've caught flack for choosing an OpenSSH "native" VPN (where it sets up
TUN/TAP for you on both ends, etc..) over IPSec before.

While I'm sure it's probably lower performance, if you've ever done more than
just plug and play some Cisco IPSec stuff (e.g. manually implement IPsec on
Linux), it is terrifying in its complexity, IMO, for something you depend upon
so critcially.

~~~
crest
It's not just a performance problem. OpenSSH's VPN works by encapsulating
either IP packets (tun) or Ethernet frames (tap) in TCP. Now you suffer from
head of line blocking and nested congestion control. If you want an easy to
use userspace VPN use OpenVPN. It may be bloated, but it works a lot better
than IP over TCP can ever work.

~~~
j_s
Hasn anyone implemented IP over QUIC in any VPN product yet?

------
mtgx
How good/bad of an idea is a kernel-level VPN?

~~~
_joel
ipsec/ike2/isakmp are implemented in kernel afaik, with userspace tools to
control them and they're used pretty heavily in commercial scenarios(for
office to office vpn or vpn into cloud tenancy etc). OpenVPN/Tinc etc are
userspace and seem to be popular for consumers as they require less coupling
and relatively easy to setup.

In terms of whether that's good or bad, it depends on your requirements and
what's optimal to you. If you think about the problems in OpenSSL, which backs
OpenVPN, then that's been a fairly large attack surface vector. Compare that
to ipsec/ike2 kernel related vectors and weigh up the
setup/learning/deployment costs of both.

~~~
sargun
IPSec is in the kernel. IKE is outside in userland. IKE tends to be the parts
that get compromised often and IPSec in itself is pretty simple.

Putting control planes in the kernel is the worrying part IMHO.

