Skip to content

Introduction

Vincent Cantin edited this page Feb 19, 2012 · 7 revisions

What Forest is

Forest is a friend-to-friend platform. It provides applications a decentralized approach to communication between users, by routing messages exclusively by using friends.

What Forest is for and why

Forest is providing an alternative to the classical client-server approach to communication between users.

There are many problems with the client-server architecture:

  • Using a server as a middle-man in communication can add unnecessary dependency on the availability of the server. If for any reason the server is not reachable or is not working, users can't communicate with each other.
  • Using a server as a middle-man is not a natural way to communicate within a synchronous communication.

A server, if monitored by persons with bad intentions, can be used to spy your conversations, your activities or your location.

In a friend-to-friend network, many of the problems above disappear:

  • No dependency on a specific host (server or friend) to relay your communications.
  • In some cases, there is a possibility for a direct connection between 2 user's computers, if they both agree to.
  • Conversations and activities become hard to track. A user's location can be kept hidden if wanted.

How friend-to-friend networks are working

Please see this article in Wikipedia.

Architecture of Forest

Forest can be described as being just a contact list manager. It enables you to add contacts, remove them, send and receive information to them, with respect to some permissions that the user set on them.

Identity

In Forest, each user's identity is defined by its public key. On a user's first use of Forest, the system is creating a pair of keys : a private key and a public key.

The private key should never be disclosed to anybody else. Someone with the private key can use your identity on the network.

The public key should be given to anybody who want to communicate with you. It doesn't matter if someone with bad intentions get a copy of your public key, they can't use it to steal your identity.

Friendly contacts

In order for you and someone to be able to communicate directly using Forest, both of you need to set each other as a contact inside Forest. Only add people you know and trust in your contact list.

A user adds a contact in Forest by adding the other user's public key to the contact list. Since a public key is just a serie of numbers, you can assign a name to each of those public keys in order to recognize them easily.

Contact groups

You can group your contacts and name those groups. A contact can be a part of multiple groups if you want to.

Services

Forest provides the list of the contacts to applications, and it also provides a way to send and receive messages to them. Each application who wants to communicate with other contact's applications has to declare which type of communication protocol it can handle. Different applications can communicate with each other if they support the same communication protocol. If multiple applications declare that they support the same protocol, the user of Forest has to choose which one to use for this protocol.

Forest only let some contacts know which protocol are supported by your node: only the contacts provided to the application designated to handle the protocol.

Security & Permissions

Open source applications will always be easier to trust than closed source ones. Applications which use Forest can or can't be trusted. In all the cases, Forest apply some basic security measures in order to prevent some identity leakage.

Each application requires a permission to send and receive messages to contacts. You can change those permissions at any time in Forest.

Contacts given to the applications are anonymous: their public key is not transmitted to the applications, instead of that a local key created by Forest is provided. This local key only has a meaning for Forest, is per contact, and is different for each application. Applications also don't have access to the public key of the user who use them.

The user which run an application can set Forest to only provide a subset of the whole contact list, and can also chose not to provide the names he gave to each of them, or can even provide a per contact and per application name, depending on how he trust the application or no.

Connection between you and a contact

Only direct connections between you and a contact in your list are allowed by Forest.

The establishment of the connections is made when the node is starting and later at random times.

Each connection starts with a handshake which authenticates the 2 sides and initiates a secure connection.