All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Westphal <fw@strlen.de>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Florian Westphal <fw@strlen.de>, netdev@vger.kernel.org
Subject: Re: [RFC 1/3] tcp: randomize tcp timestamp offsets for each connection
Date: Fri, 19 Aug 2016 00:32:19 +0200	[thread overview]
Message-ID: <20160818223219.GB3789@breakpoint.cc> (raw)
In-Reply-To: <1471537092.29842.62.camel@edumazet-glaptop3.roam.corp.google.com>

Eric Dumazet <eric.dumazet@gmail.com> wrote:
> On Thu, 2016-08-18 at 14:48 +0200, Florian Westphal wrote:
> > commit ceaa1fef65a7c2e ("tcp: adding a per-socket timestamp offset")
> > added the main infrastructure that is needed for per-connection
> > randomization, in particular writing/reading the on-wire tcp header
> > format takes the offset into account so rest of stack can use normal
> > tcp_time_stamp (jiffies).
> > 
> > So only two items are left:
> >  - add a tsoffset for request sockets
> >  - extend the tcp isn generator to also return another 32bit number
> >  in addition to the ISN.
> > 
> > Re-use of ISN generator also means timestamps are still monotonically
> > increasing for same connection quadruple.
> 
> I like the idea, but the implementation looks a bit complex.
> 
> Instead of initializing tsoffset to 0, we could simply use
> 
> jhash(src_addr, dst_addr, boot_time_rnd)
> 
> This way, even syncookies would be handled, and we do not need to
> increase tcp_request_sock size.

True, however I think it would be fairly easy to discover
boot_time_rnd given a few outputs, as jhash is not cryptograhic hash, no?

If thats not a concern I can just use jhash (not taking ports
into account doesn't seem to be a problem).

Alternatively (if tcp_request_sock increase/complexity is a problem)
I could either call the isn generator again, or add an extra function
for it (again using md5), I did not do this because I was afraid
it would be too expensive to do two md5 calculations.

Thanks for reviewing!

For cookies I had planned to just extend the cookie sha1 similar
to isn generator here, alternatives welcome.

  reply	other threads:[~2016-08-19  2:11 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-18 12:48 [RFC 0/3] tcp: increase resilence vs. blind data injection Florian Westphal
2016-08-18 12:48 ` [RFC 1/3] tcp: randomize tcp timestamp offsets for each connection Florian Westphal
2016-08-18 16:18   ` Eric Dumazet
2016-08-18 22:32     ` Florian Westphal [this message]
2016-08-25  9:06     ` Florian Westphal
2016-08-25 14:15       ` Eric Dumazet
2016-08-25 14:49         ` Florian Westphal
2016-08-25 16:05           ` Eric Dumazet
2016-08-25 19:34   ` Eric Dumazet
2016-08-25 20:31     ` Florian Westphal
2016-08-25 21:06       ` Eric Dumazet
2016-08-25 22:06   ` Eric Dumazet
2016-08-25 23:46     ` Florian Westphal
2016-08-26  2:34       ` Eric Dumazet
2016-08-18 12:48 ` [RFC 2/3] tcp: add tcp_timestamps=2 mode to force tsecr validation on ofo segments Florian Westphal
2016-08-18 12:48 ` [RFC 3/3] tcp: add mib counter to track ts tsecr validation failures Florian Westphal

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=20160818223219.GB3789@breakpoint.cc \
    --to=fw@strlen.de \
    --cc=eric.dumazet@gmail.com \
    --cc=netdev@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.