On Thursday 18 Mar 2004 16:14, Gerrit E.G. 'Insh_Allah' Hobbelt wrote:
> Hi Andrew,
>
> > How unique is it? Is it statistically improbable that I could generate
> > the same key twice?
>
> If you have properly seeded your random generator, generated (RSA) keys
> should be quite unique.
>

Here is a simple description of WhiteWater which explains what I'm doing. 
You'll see why I asked the question, and it perhaps answers some of your 
counter-questions. Comments/criticism gratefully accepted...

"Whitewater is a cross between bittorrent and an anonymous file server, and 
handles multiple files (like the whole package source tree in rubyx)

Basically, there are two binaries,
        wws - White Water Server
        wwc - White Water Client

wws is a daemon which provides the data store, and wwc is used to talk to a 
wws.

First, understand asymetric cryptography. You generate a key-pair. The public 
key is used to encrypt (lock) data. It can only be decrypted (unlocked) with 
the private key. You can extract the public key from the private key when you 
need it, but obviously not the other way round. You can give out your public 
key to anyone who needs to send you encrypted data, but only you can decrypt 
it with the private key.

To 'distribute' a file (make it available from a wws) you would do

        wwc --server ww.rubyx.org --distribute myfile > private-key

wwc generates a new (unique) key-pair and encrypts the file using the public 
key. It then makes a connection to the wws running on ww.rubyx.org, and 
uploads the encrypted file to the wws server, along with the public key.

The wws server splits the file into lots of small chunks (currently 50k each; 
testing will provide optimal size) and calculates an md5sum for each chunk. 
It then stores the chunks in it's data cache, accessible via their md5sums. 
It also stores the array of md5sums needed to recreate the entire encrypted 
file in a catalogue hash, referenced via it's public key.

wws now stores the data, which it can reference with the public key, but it 
has no idea what the data is and has no means of decrypting it. It is a true  
anonymous fileserver; Fully obfuscated and with plausible deniability :)

wwc then sends the private key to stdout. In the example above, the private 
key is stored in the file private-key. At no time did the private key leave 
wwc running on the local machine.

To access a file, you supply the private key to wwc.

        wwc --server ww.rubyx.org --get private-key > myfile

wwc extracts the public key from the private key, connects to the wws on 
ww.rubyx.org and sends it the public key.

wws looks up the public key in the catalogue hash and returns the array of 
md5sums of the chunks required to reconstitute the file.

wwc, for each chunk/md5sum then requests the ip of a cooperating server which 
has that chunk from the wws on ww.rubyx.org. It contacts each of these other 
wws servers and requests the relevant chunk (by specifying the md5sum).

Note these downloads are done in parallel so you should always achieve near 
the maximum download speed according to your available bandwidth. (As with 
bittorrent, the more downloads, the faster it gets)

All recieved chunks are checked against their own md5sum, and bad or non 
responsive servers are reported to the wws on ww.rubyx.org and an alternative 
wws ip requested.

Once wwc has all the required chunks and has reconstituted the file, it is 
decrypted using the private key and sent to stdout. In the example above, the 
data is sent to myfile

Users wanting to lend (a small amount of) upstream bandwidth to the cause will 
run their own wws like this

        wws --parent ww.rubyx.org

and use wwc --server localhost in the above examples. The local wws informs 
the parent of it presence and the md5sums of the chunks it has in its data 
cache. This is better than bittorrent (as I understand it) because it can 
share other data than just that which it is currently downloading.

Thats roughly what happens. Pretty simple I think you'll agree, but Whitewater 
combines the benefits of bittorrent with those of an anonymous file server."
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to