gnutella3
secure file sharing client
Enjoy the gnutella3 project
Please choose your language above to translate the website.
Gnutella3 offers three important security features, which gnutella 1/2, edonkey and torrend did not offer:
(1) Downloading a gnutalla3-hashlink does not reveal the IP adresses of the seeders or of any other downloader. All the traffic shared in gnutella3 is blind traffic - just shreddered, meaningless datablocks you cannot refer to any specific file.
(2) Uploading and seeding a file can be done in the past, that means downloading is possible with the seeders even offline. You just need the hashlink in the future, to build the shreddered, meaningless and already spread blocks back to a file.
(3) The p2p packets are http, so no firewall can stop them. With http, you even can stream the files from one node.
That means, the gnutella3 protocol combines the advantages of all three major filesharing networks: gnutella1/2, edonkey and torrent and adds the above given features for secure and anonymous downloads.
- Other gnutella3 clients
Welcome to the gnutella3 project.
The new secure file sharing generation since the year 2010.
Gnutella3 is a new designed protocol for a secure gnutella3 file sharing client. This clients demonstrates the functionalities with a lua gui.
With gnutella3 you can download totally secure. There is no possibility to refer any ip to any file.
Gnutella3 combines:
- torrent like speeds if there are more than 10 downloders for one hashlink,
- edonkey like hashlinks starting with http://,
- gnutella known p2p nodes cache,
- storage distributed hash table (SDHT),
- browserbased interface.
Gnutella3 is a peer-to-peer network protocol and a secure file sharing client, which combines the strength of the first decentralized file sharing network: gnutella and gnutella2, the very popular edonkey/emule network and third, the very fast torrent network.
The gntuella3 project was founded in 2010 and provides anonymous file sharing: The gnutella3 network is a fully distributed secure alternative to popular filesharing clients like limewire, shareaza, emule, azureus or nytorrent. While the use in these clients could be tracked with its IP, if a user downloads or uploads (seeds and shares) a file, the new gnutella3 client and protocol keeps the users save: No IP is shown along a download link and uploading/seeding the file is possible, before giving the hashlink away. Read more, why seeds still work, while the seeder is off-line (that´s why the "off" term is included in the hashlink).
Storing
How to share a file
If you share a file, you need to pic up the file or directory, and the files are not shared, but stored. Each file is cutted into small 128 KB chunks, which are XORed, see below, that means, the chunk is shreddered to meaningless data. These 128-bit chunks are called "blocks". At the same time the http-hashlink is created. You need it to restore the blocks to the file. In the gnutella3-network is no file shared or swapped, the whole p2p networks exsists only out of shreddered 128-bit data-blocks. They have no meaning and no sense. So exchanging blocks on the gnutella3 network is safe and secure, as no one can say or accuse you, to share a file. The whole network exists only out of random generated blocks, which do not refer to any file.
XORing
Why sharing with gnutella3 is anonymous and secure
See the wikipedia, what XORing is, it is a mathematical operation to make out af a number a new number. Any file is a very long number out of bits and bytes. If you store that number in the gnutella3 client, the 128 bit blocks are XORed, which means shreddered to meaningless data. E.g. you have the number 8 and do the operation 8-3 =5. The the file has the 8 and the block has the 5. To restore the block to the file, you need the mathematical operation "-3", which is stored as well in one block as information.
So to restore the file, you need the block "5" and the operation-block: "-3", which is turned into "+3". So you know, to get "8", you need this operation: "5" "+3" = 8. That way, you can securely share the block with the "5".
There are to steps more: One Block can have two meanings. you can build with the block "5" either "8", but as well block "2", if you change the mathematical operation. That means you can restore with block "5" a fedora CD but as well a Ubuntu CD. That means, the block-load is very efficient because of the multi-recreation-potential of each block.
Third: You need the Hashlink to re-create the file. That is called "retrieval" of a file. But as this is done on your local machine, on localhost, no one can say, if you did the recration or not.
In sum: that means, sharing a shreddered block is secure, even if you have a block, no one can say, which file it belongs to because of the multi-use-potentials of each block, third, no one can say, you have the hashlink to restore/retrieve the original data file, and forth, as it is done on localhost, no one can say, that you really used the retrieval function to restore files. That process keeps you pretty safe in file sharing over the gnutella3 network.
Back to the roots with http
Gnutella3 Hashlinks
Gnutella3 of course supports hashlinks. You eaily can describe a file just with metadata. Just copy and paste the hashlink into the gnutella3 client and the needed blocks will load. Gnutella3 hashlinks are like edonkey/emule ed2k:// links or gnutella and torrent magnet links, they contain the sha1 information of the file and some additional information about the blocks. But, they have another prefix: the do not use ed2k:// nor do they use magnet://, they choose just http://. The old good well know http:// standard. That allows to make them look like just a normal URL. You can easily add a gnutella3 hashlink into the browser and stream the wanted file from any gnutella3 node, this just requires additionally the IP adress of the node in the URL. And, as it is http:// this kind of media is not blocked by any firewall (otherwise you have to disable the web or any online banking). The needed blocks for the hashurl to load, lok as well like http-traffic. So ideal for you streaming and loading experience.
The hashlink is signed with the yellow-three-dots-symbol: (<- so, if you have a portal or board: right click and save the icon!)
Gntutella3 has set a new kind of standard for magnet or ed2k links: the long HTTP-URL, which looks like this:
http://localhost:23402/offsystem/v2/audio/mpeg/472236fe0dc6d354ec884faa1c741639c4fef725/ 682911/c46a07a6754f841c0c09a454e7a4ed52e2178846/ 4f1c9b6fdbf85244660e2afa88bb97064db451ab/ 815af0b9a3dcb84479269099f019c24a9e81fea8/ 3850e12fa1f17925a68d287341df1e41b66e238f/ ba3ae8655d3b4221943f9b9b0266cb924fab6fa6/ Peerless_Quartet_-_Liberty_Bell_(It's_Time_To_Ring_Me_Again).mp3
This is just an example gnutella3-hashlink with an open-source mp3-file.
Publishing a Gnutella3-Hashlink
Why it is secure, to publish a gnutella3-hashlink
Publishing a gnutella3-hashlink can be done in the web. That means on portals, on boards or send it to friends by email or messenger. That means of course that it is essential - as the meaning for the file, is the hashlink - we need to keep the blocks-p2p-net clean from hashlinks. The search and share of gnutella 3 hashlinks is done over another channel. Maybe a secure f2f net as http://retroshare.sf.net offfers, any Webportal. Because the hashlink is http, you easily can use it in the browser. Magnet gets a new standard within gnutalle3: Back to the roots to good old http. Even the blocks look like http, so loading in gnutella3, is like loading a webpage.
Dispersing
How to upload and seed a file
Once you have stored and shredderd you file into blocks, the blocks are present in your local node. The node is connected in a DHT (digital hash table) and begins to send the blocks into the DHT. You actively can speed that up with Dispersing, that means so seed and upload the blocks from the last storing to the network. Ideally disperse the blocks 3x, or repeat it after a week.
Retrieving
How to download a file
If you want download an hashlink, just copy paste it into the gnutella3-client and the blocks start to swarm. The blocks are sent from any IP of the network, so no one specific is sending you needed blocks. And as they have a multi-use meaning, and they are without any hashlink just shreddered meaningless data, you cannot see any special IP sending you needed blocks, as any IP is at any time exchanging blocks with you. If the Hahslink reaches for its blocks 100%, you need to use the hashlink to restore the file. That is called retrieving. Without retrieving you get the file not back. The retrieval process is done on localhost in your machine. No one can approve, if you used blocks to retieve a file - or if you did not retrieve.
Good old nodecache
How to connect to the network
Gnutella has the Caches for Nodes and developed as well a support from webcaches, Emule has the server.met file to boostrap and start the network connection. Indeed, as well in gnutella3 you need at least one IP to connect to the network. That is in case of a restart given by a cache of nodes, in which many servers are with a stable, constant online IP, so you connect easily to the network.
Gnutella3-Portals and Friends Sharing
How to search for files
You can share gnutella3-hashlinks with your friends. Send them via email or messenger, or try http://retroshare.sf.net for a secure friends to friends network, to search and forward your hashlinks.
Gnutella3 Developer Forum [g3df]
How to support the gnutella3 project
To envision how Gnutella3 works, imagine a large circle of users (called nodes), who each have Gnutella3 client software. On initial startup, the client software must bootstrap and find at least one other node. Different methods have been used for this, including a pre-existing address list of possibly working nodes shipped with the software or any gnutella3-hashlink portal. Once connected, the client requests a list of working addresses. The client tries to connect to the nodes it was shipped, as well as nodes it receives from other clients, until it reaches a certain quota. It only connects to that many nodes, locally caches the addresses it has not yet tried, and discards the addresses it tried that were invalid.
For security reasons the search for hashlinks is not allows with gnutella3 on the same network. That is caused in the reason, as the gnutell3 networks shared only data chucks ("blocks"), which are just random data. There is no meaning shared within the gnutella3 network. All blocks are just random shreddered data. So it is secure to upload and download within this network. The meaning, how to restore the blocks to a file, is layed down in the hashlink. So it has to be shared on another medium, e.g. a portal, or a secure friends to frinds network - but not on the same network, in which the gnutella3-blocks are shared.
Join the gnutella and gnutella3 forums to discuss your ideas.