Spork: Peer-to-peer socket magic in the air
spork.sh
spork.sh
IPFS p2p is more similar to that project, with a DHT, though I am not sure about encryption.
To me, this is the future. I wish we had a set of APIs to allow connecting to a public key instead of an IP adress... however that requires reinventing most of the network stack (subnets, etc). That could be a base for IPv7. As a bonus, this could run on top of IPv4 or IPv6.
Creating ephemeral, E2EE addresses has a lot of nice properties: you can roam with the same address (making it easy to move a server around, even behind cellular internet). Browsers could use a different key for each site. Sites could use that as a session identifier to authenticate against.
INET256 is working on exactly that. It's a set of APIs for connecting to addresses derived from public keys.
In particular, Yggdrasil's mobility performance is far better than anything provided by the likes of BATMAN-Adv, Babel etc, making it ideal for roaming users and ad-hoc/mesh networks. https://yggdrasil-network.github.io/assets/images/latest/mob...
There are some higher-level tools that can manage your peerings, but at that point, yggdrasil just offers a unique IPv6, derived from your crypto key, and end-to-end encryption, both of which can more or less be achieved with wireguard alone.
- universal human-assignable names
As long as you're replacing IPs, replace DNS, too. When you tell a friend about this great new site, make sure you can tell them with something closer to "pasciencia y fe" than "fe88-2533-a210-dead-b33f-3301-3412-4dc1"
- universal anycast Big services will need scale and distribution; if it's built in early and well, that makes it easier to adopt.Any implementations of this you'd recommend? I write a lot of hash (content addressable/etc) code in my spare time and i'd be curious to toy with identifiers (256bit hashes) being provided to humans in human-friendly ways.
As far as human-assignable names go, I am not sure. "pet names" would be a good fit: you "pin" a service using your name or someone else's.
Sure, you can also use a ready-made mapping from words to binary like https://what3words.com/inferior.chapels.nerve for instance, but I feel like picking one is a separate endeavor with its own pitfalls (not everyone speaks English, etc).
You're asking for a solution to Zooko's triangle: https://en.wikipedia.org/wiki/Zooko's_triangle
"You should check out correct horse battery staple" vs "You should check out news.ycombinator.com" -- one of those requires me to maintain a meaningless mapping in my head, and the other contains structure and clues even if it isn't "Hacker News".
Then, similar to HSTS, the browser could remember the mapping and use the DNS name as a pet name for the target.
Another alternative would be to use "phonebooks". One could trust a few trusted websites for the initial handshake: "oh, just google battery horse to find my blog". Or: I'm linked on John's blog. That goes well with pet names, but is a bit more involved.
In any case, as long as the underlying identifier is secure and unique, you can just share that trough other means (links, Qr codes, messages, etc).
> - universal human-assignable names
Seems like if we wanted to add human names, DNS would work just fine--it could just be a new record. And IDK if there really is a better way to manage multiple people wanting the same names, other than our existing system. These systems can remain orthogonal too.
dig SPORK news.ycombinator.com
or maybe :) dig YGGDRASIL news.ycombinator.comHowever, I haven't done any serious roaming with such a configuration; has anybody tried it?
1. https://www.nodeconfremote.com/#workshops/how-to-build-p2p-a...
We were able to spork an SSH session using password auth. (That one went from Texas to Virginia via Starlink.)
Some folks on the discord sporked a Minecraft game. Quake didn't spork, probably because it uses UDP which doesn't spork yet.
We're going to keep adding fun/useful features, including a public gateway service so folks can make use of spork without people having to install the client first.
> Sockets are identified by a public key and connect using a Distributed Hash Table (DHT). Connections are end-to-end encrypted using the NOISE framework.
Okay, sounds like pretty neat. Is anyone aware of whether Spork is undergoing any sort of formal review?
NOISE appears to be popular and well-reviewed, but Spork uses noise-peer, a two-contributor project. Spork itself is one-contributor.
So...neat sounding, but I'm not using it for anything remotely sensitive until it sees more eyeballs. Hopefully a bunch of HNers can help with that.
The guys behind Hypercore Protocol and Beaker Browser are building a lot of interesting p2p tools. I suggest starting here [1] if you want to understand their stack deeper.
I want to see respected, trusted members of the cryptography community say at least that noise-peer implements NOISE in a secure, proper manner and that spork doesn't weaken or improperly use NOISE.
With just two people working on noise-peer and one person working on spork, I don't trust it further than I can throw it.
Very cool stuff though. Wish the project well and will be excited to see where it goes.
The underlying streams use TLS 1.3 as the transport encryption.
And we've just written a super minimal ipfs replacement (for ourselves) which includes this: https://github.com/peergos/ipfs-nucleus/
The Internet is a dark forest. Anything that gets popular will be attacked. The fact that it does not have a single owner may reduce the chances of ransom as a motive, but it doesn't reduce the chances of all attacker profiles including just "griefing."
What centralized system does Spork remedy? It bypasses DNS? Is there any sort of discovery and/or replication and/or redundancy?
An improvement could be to reversibly derive a few random words ('what 3 words' style) from the public key I suppose - so that it can be easily shared over a voice call, or to make it easier for the same person to enter on another device.
In this case the 'server' is up for an extended period of time, presumably, and the public key is both the address and authentication (unless you turn on requiring a specific key on the initiator, I think? I only glanced at the docs.)
With enough nodes you'd end up with multiple nodes having the same words (divide the possible keyspace by the possible combination of words and you'll get a very large number), and also you'd be at significant risk of people finding nodes just by banging away trying to connect to different 3-word addresses.
I agree that the tool seems to be intended for same-party use.
The protocol team is looking at using the ristretto algorithms to derive “subdomains” which would reduce the amount of key sharing a fair bit
Anyone knows a similar service which do not needs special software on the client side?
Long-term, the Hyperswarm & Hypercore stacks will need to have whatever apps/browser-extensions available, and then the featureset will hopefully be compelling enough to make them worth an install. Spork isn't the end-point.