wireguard.lists.zx2c4.com archive mirror
 help / color / mirror / Atom feed
From: nicolas prochazka <prochazka.nicolas@gmail.com>
To: "Jason A. Donenfeld" <Jason@zx2c4.com>
Cc: WireGuard mailing list <wireguard@lists.zx2c4.com>
Subject: Re: Reflections on WireGuard Design Goals
Date: Fri, 10 Aug 2018 17:19:56 +0200	[thread overview]
Message-ID: <CADdae-ifP9GN=oaKz_SnzDK+uAx7MFHaSkFPymBRgC9t07hY8g@mail.gmail.com> (raw)
In-Reply-To: <CAHmME9p1mWjphb0pbm0df_LnMFmbjS0EzW0M-TwiZyJ=mTUgwg@mail.gmail.com>

hello,
just to say you, as a simple end user
we are using wireguard since one year for our product,
we have 10K tunnels deployed ,
wireguard is perfect for us, very simple, we can develop our specific
code on top of if ( key management , ....)
so +1 for jason vision
thanks for this piece of code
Regards,
Nicolas

Le jeu. 9 ao=C3=BBt 2018 =C3=A0 23:52, Jason A. Donenfeld <Jason@zx2c4.com>=
 a =C3=A9crit :
>
> Hey list,
>
> For whatever reason, in the last several weeks, WireGuard been receiving =
a
> considerable amount of attention, and with that comes various parties
> interested in the project moving in this direction or in that direction. =
And
> more generally, over the last year or so, we've seen a decent amount of
> interest from different folks wanting to do different things with the pro=
ject
> and with the protocol. This inevitably leads to the question: what do we
> actually want WireGuard to be, as a project, as a protocol, as a set of
> implementations, as a design methodology, and so forth? I've had a pretty
> clear idea about that, but I don't think I've ever tried to communicate
> aspects of it in this context, so I thought here I'd highlight two import=
ant
> design goals that motivate us.
>
> Firstly, WireGuard intends on continuing to have a minimal core, without =
a lot
> of options and wild features and support for weird networking paradigms. =
Sure,
> we want the core to be sufficiently flexible that you can build interesti=
ng
> and complex things on top of it, but we don't want WireGuard itself to be
> complicated. We enjoy our small understandable configuration files, an
> interface that appears to be mostly stateless, and general ease of use. E=
ven
> from a cryptography and implementation perspective, the protocol is desig=
ned
> to be implementable using simple algorithms and coding techniques.
>
> With that kind of minimalism naturally comes the temptation to add things=
.
> Simply from the perspective of an interested engineer, it's appealing to
> extend and hack on small manageable codebases and projects, since adding =
a
> single feature here or there just isn't that hard. And after all, if you'=
re
> *just* adding *one* feature, it's only one, and that's not so bad, right?=
 And
> what about one more? This kind of temptation applies equally to features
> inside implementations as it does to features inside the protocol. And I =
think
> this temptation is a little bit dangerous, both because it's an obvious
> slippery slope to bloat ("just one more feature can't hurt, right guys?")=
, and
> because while individual features or protocol enhancements might be well
> thought-out, it's often hard to think through them in the context of a fu=
ller
> system.
>
> Secondly, WireGuard is engineered slowly and carefully. It is a conservat=
ive
> project. Programming is fun, and so I understand the appeal to, "move fas=
t and
> break things," or to ship new code hastily. Personally I've written plent=
y of
> such codebases, and that's usually fun and exciting. Except WireGuard is
> deeply security-oriented. Of course there will inevitably be scary bugs w=
e
> weren't able to prevent, but we're moving slow and carefully to try to
> mitigate those to the fullest extent we can. We want each of the
> implementations released by the WireGuard project to be secure, high assu=
rance
> software.
>
> This means that although you can probably get something mostly "working" =
in a
> fairly short amount of time (an initial version of WireGuard took me
> essentially a weekend), we're trying very hard not to throw junk over the
> fence. Rather, we're doing pretty regular code reviews and have received =
some
> great feedback from some scary-talented security researchers, and we expe=
ct
> for this to continue. But indeed not all programmers share this perspecti=
ve =E2=80=93
> for a wide variety of motivations, both benign and opportunistic =E2=80=
=93 and so we
> definitely will (and have, in fact, already) see folks making things rela=
ted
> to WireGuard who don't share this type of methodology.
>
> Now I don't think these two motivating principles are particularly unique=
 or
> innovative. Other security-focused projects, like OpenBSD for example, se=
em to
> be made of a somewhat similar mold. But these also certainly are not the
> _norm_ for most projects out there. And as WireGuard accelerates in usage=
, I
> expect we'll be facing this from a few angles:
>
> - Attempts at commercialization: There are many businesses who want to em=
brace
>   WireGuard and extend it in some particular direction or another, in ord=
er to
>   build products or sell services or the usual array of business
>   opportunities. Engineers working in these contexts often times are temp=
ted
>   to extend minimal things in grotesque ways, and to push them to market =
with
>   deadlines unfavorable to high assurance methodologies. It's naturally a=
nd
>   understandably in the interest of businesses to attempt to steer the
>   WireGuard project in directions aligned with their goals, or even direc=
tly
>   hire WireGuard developers away from an independent perspective working =
on
>   the open source project. This is pretty commonplace with open source
>   projects, and while sometimes everyone's interests align perfectly, it'=
s
>   easy to loose sight of the broader project goal; in particular, the goa=
l of
>   minimalism in particular is easy to leave by the wayside.
>
> - Folks who want their own corner of the Internet: We've already seen thi=
s
>   with a project, and as things accelerate, we'll probably also see it wi=
th
>   others. It's fun to run a project, and some people want to start with
>   WireGuard (and even our webpage design) but then spin it into all sorts=
 of
>   new clever and creative things, extending the protocol, adding features=
,
>   shipping code hastily, with the explicit caveat of not working within t=
he
>   WireGuard project or sticking with our design goals. Some folks simply
>   aren't interested in joining community projects. While I understand the=
 fun
>   and motivation of having your own corner, depending on the scale, I thi=
nk
>   ultimately it's harmful to users and harmful to the project as a whole.=
 I
>   also understand that splintering projects might aid in creating commerc=
ial
>   opportunities too, but again, I think it is overall harmful to the
>   ecosystem, whether open source or proprietary. I should  mention that T=
he
>   WireGuard project remains open to all sorts of development and develope=
rs
>   who would like to join in, in any capacity, and indeed we're quite eage=
r to
>   continue to share or hand off maintenance burden to others. We're also
>   willing and interested to work hand-in-hand with other open source proj=
ects
>   that share our design goals and methodologies.
>
> - The N+1 protocol: https://xkcd.com/927/ might just be a part of life. I
>   expect we'll be seeing a proliferation of Noise-based VPN protocols,
>   tailored for different use cases and environments, with differing secur=
ity
>   properties and attack surfaces. Designing protocols always involves
>   trade-offs, and there are always interesting arguments for different
>   trade-offs, and I wouldn't be surprised if we see some more WireGuard-l=
ike
>   things come out. Perhaps someday down the line after years of observati=
on,
>   there will even be improvements made for a new WireGuard protocol,
>   incorporating the rejuvenated research that's now being put into these =
types
>   of settings. Or not. But maybe. But either way, it seems likely there w=
ill
>   be various N+1 protocol proposals and implementations, because people
>   apparently like to make things; see XKCD.
>
> So, if WireGuard remains a small niche project, we'll keep on keeping on
> quietly and surely as ever. But should things continue to grow in usage a=
s
> we're seeing now, expect to see the various temptations proliferate. But
> regardless, I certainly intend to keep WireGuard true to our design goals=
 =E2=80=93 of
> minimalism, of security conservatism =E2=80=93 and I'll be working hard t=
o see that
> through.
>
> I should also reiterate that our doors remain very open to open source
> developers and projects who wish to join the work we're doing.
>
> Regards,
> Jason
> _______________________________________________
> WireGuard mailing list
> WireGuard@lists.zx2c4.com
> https://lists.zx2c4.com/mailman/listinfo/wireguard

  reply	other threads:[~2018-08-10 15:08 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-09 21:52 Reflections on WireGuard Design Goals Jason A. Donenfeld
2018-08-10 15:19 ` nicolas prochazka [this message]
     [not found] <mailman.1318.1533866648.2201.wireguard@lists.zx2c4.com>
2018-08-10 13:35 ` Brian Candler
2018-08-10 14:09   ` Matthias Urlichs
2018-08-10 14:09   ` Kalin KOZHUHAROV
2018-08-10 14:42   ` Eisfunke
2018-08-10 14:47   ` Konstantin Ryabitsev
2018-08-10 15:03   ` Roman Mamedov
2018-08-10 16:03     ` Brian Candler
2018-08-10 16:38       ` Kalin KOZHUHAROV
2018-08-10 16:40       ` jungle Boogie
2018-08-10 17:12         ` Aaron Jones
2018-08-10 17:25           ` jungle Boogie
2018-08-10 20:15   ` em12345
2018-08-10 23:07     ` Reuben Martin
2018-08-11 19:18   ` Jason A. Donenfeld
2018-08-11 22:52     ` Luiz Angelo Daros de Luca
2018-08-12  0:15       ` Aaron Jones
2018-08-12  0:46         ` Jason A. Donenfeld
2018-08-12  1:07           ` Aaron Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CADdae-ifP9GN=oaKz_SnzDK+uAx7MFHaSkFPymBRgC9t07hY8g@mail.gmail.com' \
    --to=prochazka.nicolas@gmail.com \
    --cc=Jason@zx2c4.com \
    --cc=wireguard@lists.zx2c4.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).