Friday, June 15, 2007

P2P Apps

Seems like lately I've been talking alot about P2P applications and looking into some of the internals of them, for various reasons. Basically I'm just posting my thoughts for anyone to refute/confirm them, and also if there are any major contenders I'm not thinking of.

Napster
Pros: Easy to use, lots of users with lots of content.
Cons: Died due to centralized servers being the target of litigation

Gnutella/decentralized P2P apps
Pros: Easy to use, lots of content, no centralized server to litigate out of existence.
Cons: Arms race between hostiles and developers, as well as a legal liability that encourages leeching, with no barrier to prevent it.

Usenet
Pros: Incredibly fast, lots of content, legal problems are very minimal right now.
Cons: ISP dependant, and legal troubles are only minimal due to the small user base arising from difficulty for the average idi...user

Bittorrent
Pros: Can be very fast for popular content, no centralized servers to attack.
Cons: Large legal worries for protected content. Unpopular content can be very slow. Edit: Central servers to host trackers

Direct Streaming
Pros: Fast, safe legally for users
Cons: Requires a central server with large bandwidth and paying royalties

P2P Streaming
Pros: Grey legal area compared to normal P2P, can be very fast for popular content
Cons: Requires a lot of collective bandwidth or video quality reduction, unpopular content would lag or take hours to start playing

WASTE/Darknets/Etc.
Pros: Can be completely safe legally
Cons: Always slow and usually a technical barrier that's too high for average users thus causing a lack of content

IRC
Pros: None
Cons: It's IRC :-D

Really I think any new P2P app that would be successfull needs to be:
(1) At least as fast as gnutella
(2) Madly user friendly to keep from frightening the great unwashed
(3) Have content already in place
(4) Have legal protection to make it safer to share

I'm trying to make ROTN to address each of these:
(1) Cut out the deniability to begin with to keep speed
(2) Web Server GUI to keep people in their browser
(3) Have it able to leech off of existing Gnutella networks
(4) Use headless random data in blocks so that no person is sharing files

The only main problem I've found is that to do 4 will require at least 2 other parties to be involved(One to distribute the head, and the other to distribute content).

Also I had a cool idea for even further headless data randomness, make the head variable length, which if you use that as an encryption method makes it even harder to crack.

For example lets say you have a seed from 0 to 100,000 for the RNG so if you know the size of the chunk you are missing you can still get away with trying 100,000 times if there is known text from what you are retrieving. BUT! With a randomly variable sized head you could improve upon this by how many ever bytes the head is. For example if a head can be between 1kb to 101kb, you get 100kb*100,000 seeds = 100,000 ^2 = 10,000,000,000 possible combinations of seeds and header sizes. You could do alot more fun stuff too, like make the head also have itself be an XOR key, driving this up into an insane number of tries needed to break it. The big problem with this as encryption is that it's a shared secret. Really though I'm just talking about cryptography academically as opposed to anything particularly practical. Also this assumes that the psuedo RNG is NP hard to determine the next bit of output...I have no clue if this is true or not for normal RNG algos.

1 comment:

Jay Sherby said...

You missed one of the cons of Bittorrent. There are central servers that can be attacked. The more popular servers that host trackers have been targets for litigation a few times. I know that it was a big deal when Pirate Bay went down and stayed down for some time. Also, IsoHunt went down for a short time.