-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Seedserver - our script/app/whever that runs on our servers
(freenetproject.org) and takes care of the harvesting
Seednode - well the seednode
Seedclient - a new Freenet-Node which wants to bootstrap into Freenet
Seedservice -  a service which is run on the seednode to be addressed by
the Seedserver

Stage1
We deliver the public key of our Seedserver with Freenet (e.g. in the
installer or jar).
Once a node chooses to become a Seednode (Alice) it sends it's own
public key and port on which it runs the Seedservice encrypted with the
public key of the Server to our Seedserver. The Seedserver sends a
random number encrypted with the public key of Alice who has to return it.

Now the Server and the Node know each others public key and can't be
MITMed, under the assumption that the installer was correct. The
following traffic can be encrypted.

Stage2
The Seedserver asks some already established Seednode (Bob) to insert a
file which holds a random number encrypted with the public key of Alice.
Bob reports the key under which this has been inserted to Alice who
fetches it and sends the random number to the Server.
If Alice can't fetch the key, we ask another two Seednodes for inserting
it, if it still fails Alice is considered not to be connected (obviously
we have to have a long timeout here).

Now the Server knows Alice if is connected and can add her to his
Seednodes-list/DB

A Seednode has to follow this routine every 24 hours and whenever
something changes (different IP, disable Seedserver, etc. (obviously if
a seednode goes offline it doesn't have to prove it's connected to
freenet)).
The Server only accepts changes from Seednodes wich prove they can read
a random number encrypted with the public key of the Seednode entry they
want to alter.
The Server removes (or marks them disabled) Seednode entries that
weren't updated 26 hours and of Seednodes that didn't react on
insertrequests more than 3 times in a row (maybe disable them and try
again 30 min. later)

Possible Attacks:
- - manipulated installer - Well this is a general problem, not only to
seednode harvesting. We have to come up with a suitable solution for
this (SSL with trusted certificate (expensive), signed installer (how
can our users know whether to trust the public key?)

- - DoS the Seedserver - well then you could probably also DoS our
webserver and prevent our users from downloading the installer and
seednodes.fref

- - An attacker could add his node as a Seednode - well that is an obvious
problem for all of the automatic methods and also partly applies to
Seednodes which are added manually and Opennet in general - if an
attacker succesfully added a Seednode, he could have a whole farm of
manipulated nodes to which a new node is connected to and the new node
can't tell. This is especially a problem if the ghost-net has some kind
of proxy which relays requests in his own name so the node can't get
other opennet-connections and doesn't know it's not on the real freenet
and if it gets or even worse inserts some content which in the most
countries is illegal, the attacker can tell because he could spider the
freenet and do a blacklist.

Looking forward to your comments
Neo at NHNG
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHjRwEPUBAMhFf+J4RAvjxAJ91iM5ACrr5GzBOdNfEb3+So9uFJQCfUkYf
PVRa4Brixfd8BiaNzhC7+OY=
=/6/7
-----END PGP SIGNATURE-----

Reply via email to