• No se han encontrado resultados

4.2. El contexto laboral en Viedma y las experiencias de trabajo de los

4.2.1. Los primeros trabajos Experimentando |

Our system consists of many identical peers, each of which can fulfil five different roles:

• Publisher p. The node which has a document and wishes to make it available and censorship resistant.

• Storer s. A node which stores part of a document.

• Forwarder a. A node which has an anonymous pointer to a node storing part of a document.

• Client c. A node which retrieves a document.

• Decrypter l. A node which decrypts part of a document and sends it off to the client.

The system is built on top of an existing Peer-to-Peer document storage service such as PAST [DR01]. PAST itself is built on top of Pastry [RD01], a Peer-to-Peer routing scheme. Pastry can be viewed as a network of machines (peers), each with a unique identifier. The only thing required to send a message to a machine is its id, furthermore, Pastry guarantees that the message takes around log N hops, where N is the number of nodes in the system. Using an existing Peer-to-Peer architecture allows us to abstract away routing, clients leaving and joining the network, and other low level issues.

On top of Pastry, PAST also provides robustness: neighbouring machines (machines within a certain distance of each other within a logical namespace) share state. This is further discussed below. We also assume a public key infrastructure, so any peer is able to learn any other peer’s public key. This is further discussed in Section 8.4. Finally, we make use of an anonymous connection system such as Mixminion [DDM03] which is capable of handling replies.

As usual in censorship resistant systems, the operations available to a node are publishing and retrieval. There is no search facility, therefore we rely on a broadcast

PSfrag replacements

p

a0 a1 a2 a3

s0 s1 s2 s3

h0 h1 h2 h3

Figure 8.1: Publishing. Zig-zag lines indicate anonymous connections. mechanism such as an anonymous newsgroup to transmit retrieval information to potential readers. We do not support content deletion or modification.

8.2.1 Publishing

The overall publishing process is illustrated in Figure 8.1. The main idea is to split the documents into many parts or shares hi, and store them (encrypted) on machines

si, while making them accessible through machines ai which forward requests for the

appropriate shares anonymously.

Publisher:

To publish a document (see Figure 8.2), the publisher p splits it into n + 1 shares hi,

any k + 1 of which can be combined to form the whole document again. This can be done using one of the standard algorithms such as Shamir’s secret sharing [Sha79]. He then generates n + 1 keys ki and encrypts each share with the corresponding key.

He now picks n + 1 peers a0. . . an at random to act as forwarders and constructs

onions to send (via the anonymous connections layer) each of them the encrypted share{hi}ki, the corresponding key ki2 and a (large) random integer vi together with

a return address (reply onion)3 rp. The publisher can now wait for a confirmation to

come back from each of the ai’s (via the reply onion) saying whether the publishing

has been successful or not. If the operation failed, the publisher should try different ai’s.

2Both

{hi}ki and ki are sent to minimize the work which has to be done by the forwarder.

3A return address is a kind of onion which, if included in an anonymous message, can be used to

a)

b)

PSfrag replacements s0 s0 (v00,{h0}k0, ra0) ra0 f rs0 a0 a0 (v0 0,{h0}k0) (v00,{h0}k0) p p (v0, v00, k0,rfs0) (v0, v00, k0, rp) “ok” ({h0}k0, k0, v0, rp) rp Share h0 Key k0 Storer s0 Random numbers v0, v00 Return addresses rp,rfs0, ra0

Figure 8.2: Inserting share h0. All communication is done via the anonymous con-

nection system using randomly constructed onions. If the message is sent using a return address, it is displayed at the base of the arrow. Anonymous return addresses are denoted by r, e.g. ra0

PSfrag replacements s0 s0 (v00,{h0}k0, ra0) a0 a0 (v00,{h0}k0) (v00,{h0}k0) (v0, v00, k0,rfs0) (v0, v00, k0,rfs0) rl ({h0}k0, v00) (v00, rl) rs0 (k0, ra0, rc, v00) l l rl ra0 (v0, rc) c c rs0 rc h0 h0 (k0, rc, v00) (k0, rc, v00) Share h0 Key k0 Storer s0 Client c Decrypter l Random numbers v0, v00 Return addresses ra0, rs0, rl,rfs0, rc Figure 8.3: Retrieval Forwarder:

The forwarder (all of them perform the same operation, here we use a0as an example)

receives the message, finding an encrypted share {h0}k0, a key k0 and a random

number v0 and the publisher’s return address. He then picks a storer s0 to store

the share and a number v00 which the storer should associate the share with. He constructs an onion for delivering these to the storer. Thus, he puts the encrypted share, v00, as well as his own anonymous return address ra0 into the onion as the

message and sends it off (see Figure 8.2a). He remembers v0, v00, k0 and rp. When

the onion is received by s0, it stores the share and issues a number of different return

addresses rfs0 (to be used for retrieval), sending them back to a0 via the return

address ra0. Now a0 associates v0, v00 and k0 with the return addresses rfs0, forgets

s0, and replies “ok” to the publisher via rp. Once all the shares have been stored,

the publisher destroys them and announces the name of the file, together with the n + 1 pairs (ai, vi) to potential users.

8.2.2 Retrieval

To retrieve a document (see Figure 8.3), the client c asks the forwarder a0 (and

each ai in the same way) to retrieve the share h0 by sending them an anonymous

message with v0and their anonymous return address rc. The forwarder a0 then picks

a random server l to act as a decrypter and sends it k0, the key it is storing which

decrypts the stored share, v00, rc, and a return address ra0, getting back a return

address for l. Now a0 forwards rl and v00, which identifies the share, to s0 via one of

therfs0 (rs0). Now s0 looks up the encrypted share corresponding to v00 and forwards

it and v00 to l, which decrypts the share and sends it to the client via rc. The process

continues until c has accumulated enough shares to reconstruct the document. We note that when the forwarder starts running out of return addresses for the storer (you can use each one only once), all the forwarder needs to do is request some more via one of the return addresses it still has.

The other important detail which we have so far left out of the description of the system is that the Peer-to-Peer storage layer (PAST) replicates state among neigh- bouring nodes. This enables requests to be routed to any of the nodes which contain the replicated state. In particular, the forwarder shares (v0, v00, k0,rfs0) with neigh-

bouring nodes which can therefore also answer requests. Similarly, the storer shares (v00,{h0}k0). The decrypter does not need to share anything as he will only get one

request to decrypt the share and will then give up this role.

Documento similar