On Friday 18 January 2008 18:41, Michael T?nzer wrote:
> Matthew Toseland schrieb:
> > On Thursday 17 January 2008 23:06, Michael T?nzer wrote:
> >> Michael T?nzer schrieb:
> >>> Matthew Toseland schrieb:
> >>>> On Thursday 17 January 2008 03:23, Michael T?nzer (vid,smtp2) wrote:
> >>>>> Matthew Toseland schrieb:
> >>>>> As we probably don't want to run a node on our server itself (we 
could,
> >>>>> but would it have enough ressources to serve the important things like
> >>>>> web pages, SVN and stuff even if we are /.ed?) the Seedserver has to
> >>>>> have a connection to a node somewhere and as we have some Nodes which
> >>>>> should be available anyway, why not use them? This also balances the
> >>>>> load between the Seednodes, avoids another single point of failure and
> >>>>> makes sure they're online so we don't have to recheck apart from that.
> >>>>> We don't have to be connected to all of our Seednodes all the time. 
Just
> >>>>> if we want to verify a new Seednode we establish a new connection to 
one
> >>>>> of our Seednodes on the Port which on which the Seedservice runs and
> >>>>> verify that it's us.
> >>>> You mean for the seed server to connect to the seednodes (easily
> > spoofed), or
> >>>> for the seednodes to connect to each other (somewhat less easily
> > spoofed)?
> >>> For the Seedserver connecting to the Seednodes.
> >>> How is it supposed to be spoofed?
> >>> - Each packet that doesn't come from our Seedservers IP is dropped
> >>> - To accept the package it has to be encrypted with our public key
> >>> (which _should_ only be known to us)
> >> Doh, of course the public key is known by someone else (otherwise it
> >> wouldn't be public) it should be only known by the _SeedServer_ because
> >> he's the only one we gave it to. But it also shouldn't be a problem if
> >> it get's known in public, then the second part of the identification
> >> process comes into play:
> >
> > That's not what I mean. I mean an attacker's bogus seednodes know the IP 
of
> > the seed server and can easily only respond to that IP address, thus 
saving
> > lots of bandwidth and not providing any useful service to any other node.
> > Also, if it's only verified shortly after adding, they can use this info 
too.
> 
> That's what my proposal in the other mail prevents: There are a few
> trusted nodes (not SeedNodes) which report to the SeedServer when
> they've found a SeedServer wich is not responding/only sending bogus but
> they will connect on random not on command of the SeedServer, so it
> should be harder to discover who our trusted nodes are (maybe every Node
> reports but only a few are trusted (maybe with a certain probability to
> reduce traffic), so the traffic of the trusted Nodes is covered by the
> untrusted ones). But I think we would still need the other check to
> avoid good SeedNodes getting blacklisted because if we can't connect
> with at all (neither with Seednodes nor with trusted peers) that's
> likely to be a nodecrash or something but if a SeedNode is connectable
> to other SeedNodes but not to trusted peers that is likely to be
> malicious and the IP should be blacklisted for 24 hours.

Hmm maybe, sounds complicated...
> 
> And I believe it's important to set a limit to the number of SeedNodes.
> So if we've got 20 good SeedNodes an attacker can do whatever he wants
> (ha can do perform headstands as we say in Germany) he won't appear on
> our seednodes.fref. If some attacker is on our list and we detect it,
> we'll kick him from our list and hopefully another good SeedNode will
> turn in for him.

Well he can always try social engineering - ask to be on the list, we'll 
probably put him on it.

But if we can get 20 from people we know, and IF that is sufficient to deal 
with a major slashdotting, then we don't need auto-harvesting.
> 
> Backdraws:
> - an attacker will try to turn down the good SeedNodes so they will be
> listed as disconnected (maybe we should keep a list of disconnected good
> SeedNodes which we will try to connect to on their SeedService so
> another good SeedNode can take turn for the DoSed one)

Yeah, this may be a problem.. you've moved from finding trusted seed nodes to 
finding trusted verifier nodes, you still have the same basic problem, 
although you hopefully don't need may of them.

> - If an attacker has turned down a SeedNode he will start to connect
> with his fake nodes immediately but our unlisted good SeedNodes probably
> don't know when to connect and when they check back whether a slot has
> been freed, they will be too late.

Another problem is preventing the attacker from getting a full seednodes list. 
This we need to deal with anyway, maybe by giving out a different set to each 
IP.
> 
> As an attacker will (hopefully) be likely to not stay long on the list,
> we probably want to add some Captcha/hashcash/essay why he should be on
> the list/whever to prevent scripting (maybe provide some timed captcha
> (a captcha which times out, so it needs to be answered quick and is less
> likely to be passed on) which is asked for when the "SeedNode-mode" is
> enabled and all SeedNodes which solved that captcha are kept on a list
> (the list also includes NodeRef, SeedService-Port and public key), from
> which a node is choosen at random to go through the verification process
> (another SeedNode fetches ref through it etc.).

This is to become a super-seednode?
> 
> Well this is getting pretty complicated but it should do the job and as
> we don't want the access to freenet (the process on which we afterwards
> build our anonymity) to be insecure or not working (this will push
> people to return to the "old ways" (ref trading)) and haven't come up
> with a better/easier solution we could either stay with the old system
> (which afaics not working because people actually have to do a bit of
> work (they have to paste the noderef into an email, adress it to toad
> and enable encryption) which is against the 5-clicks rule, which is
> solved when people only have to enable SeedNoding and solve a captcha)
> or implement the new (although pretty complicated) system.
> 
> But maybe someone has a simpler solution or can point out where we can
> reduce complexity in the given one.
> 
> >>> - The SeedServer has to verify itself, by sending back a random number
> >>> encrypted with it's public key (only the SeedServer knows the private
> >>> key to decrypt it an send it back)
> >
> > I accept that you can't MITM the SeedServer ... but you can watch its 
traffic
> > and identify seednodes. That's probably unavoidable.
> 
> As SeedNodes are public anyway (unless we do it even more complicated
> and let one user only see 3 SeedNode-refs which is IMHO not working)
> they don't need to be identified via watching traffic, so yes that's
> unavoidable.
> 
> regards
> Neo at NHNG
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20080118/b73f4d20/attachment.pgp>

Reply via email to