|
Definition
Networked computer systems are rapidly growing in importance as the medium
of choice for the storage and exchange of information. However, current systems
afford little privacy to their users, and typically store any given data item
in only one or a few fixed places, creating a central point of failure. Because
of a continued desire among individuals to protect the privacy of their authorship
or readership of various types of sensitive information, and the undesirability
of central points of failure which can be attacked by opponents wishing to remove
data from the system or simply overloaded by too much interest, systems offering
greater security and reliability are needed. Freenet
is being developed as a distributed information storage and retrieval system designed
to address these concerns of privacy and availability. The system operates as
a location-independent distributed file system across many individual computers
that allow files to be inserted, stored, and requested anonymously. There are
five main design goals: 1.Anonymity for both producers and consumers of information
2.Deniability for storers of information 3.Resistance to attempts by
third parties to deny access to information 4.Efficient dynamic storage and
routing of information 5.Decentralization of all network functions The
system is designed to respond adaptively to usage patterns, transparently moving,
replicating, and deleting files as necessary to provide efficient service without
resorting to broadcast searches or centralized location indexes. It is not intended
to guarantee permanent file storage, although it is hoped that a sufficient number
of nodes will join with enough storage capacity that most files will be able to
remain indefinitely. In addition, the system operates at the application layer
and assumes the existence of a secure transport layer, although it is transport-independent.
It does not seek to provide anonymity for general network usage, only for Freenet
file transactions. Freenet
Architecture Freenet is implemented as an
adaptive peer-to-peer network of nodes that query one another to store and retrieve
data files, which are named by location-independent keys. Each node maintains
its own local datastore which it makes available to the network for reading and
writing, as well as a dynamic routing table containing addresses of other nodes
and the keys that they are thought to hold. It is intended that most users of
the system will run nodes, both to provide security guarantees against inadvertently
using a hostile foreign node and to increase the storage capacity available to
the network as a whole. The system can be
regarded as a cooperative distributed filesystem incorporating location independence
and transparent lazy replication. Freenet enables users to share unused disk space
being directly useful to users themselves, acting as an extension to there own
hard drives. The basic model is that requests
for keys are passed along from node to node through a chain of proxy requests
in which each node makes a local decision about where to send the request next,
in the style of IP (Internet Protocol) routing. Depending on the key requested,
routes will vary. The routing algorithms for storing and retrieving data described
in the following sections are designed to adaptively adjust routes over time to
provide efficient performance while using only local, rather than global, knowledge.
This is necessary since nodes only have knowledge of their immediate upstream
and downstream neighbors in the proxy chain, to maintain privacy. Each
request is given a hops-to-live limit, analogous to IP's time-to-live, which is
decremented at each node to prevent infinite chains. Each request is also assigned
a pseudo-unique random identifier, so that nodes can prevent loops by rejecting
requests they have seen before. When this happens, the immediately preceding node
simply chooses a different node to forward to. This process continues until the
request is either satisfied or exceeds its hops-to-live limit. Then the success
or failure result is passed back up the chain to the sending node. No
node is privileged over any other node, so no hierarchy or central point of failure
exists. Joining the network is simply a matter of first discovering the address
of one or more existing nodes through out-of-band means, then starting to send
messages.
<<back |