6 ms·
Shelter Protocol: End-to-end encrypted, federated, user-friendly web apps
- icouldntresist 3y ago[flagged]
- mdaniel 3y ago> This virtual machine defines operations (“op codes”) for managing keys, defining so-called "smart contracts" (computer programs), and performing both encrypted and unencrypted actions. I suspected that was going to be in there
- rand846633 3y agoYou suspected you would find cryptographic primitives in a system that deals with privacy?
- tptacek 3y agoI think the subtext is that this is blockchain-y.
- slawton3 3y agoI'll never understand the undeserved hate that blockchain tech gets. I understand that some people automatically associate blockchain with crypto scams, but fundamentally the tech is inspiring.
- itsanaccount 3y agobecause all the people working on blockchain-esque systems never seem to grasp societal trust boundaries. its like theres no amount of Adam Curtis documentaries that will shake silicon valley folks from the myth that the computer will lead to a better, more equal society. you cant compute yourself out of a broken world.
- jazzyjackson 3y agoThis is unnecessarily defeatist. You can make improvements to a broken world, including new frameworks for compute that removes dependency on billionaire data brokers. As an Adam Curtis fan (for all his faults), I don't believe technology is neutral nor that progress is teleologic. I do believe that people could be better served that software that works in their interests instead of against them. And funny you mention a broken world, as if we're doomed to be excluded from the paradise of eden, the very first walled garden. Those of us working on distributed applications are trying to make walled gardens obsolete, no forgiveness required :)
- itsanaccount 3y agothose of you working on distributed applications are trying to transfer power from current tech companies to new tech companies. thats it. thats all it is. all the madness about cryptography replacing trust just makes that power more concentrated.
- emurlin 3y agoWhat do you mean by replacing trust with crypto? Like in 'code is law'? If so, yeah, you can't replace one thing with the other because they're fundamentally different things that may only overlap in certain areas. But on a broader scale, I don't see what in cryptography makes power inherently more concentrated. Crypto is just a way for enforcing certain trust relations that have already been established or agreed upon. Just like you can use crypto to help centralise power (e.g., allowing you to only run signed applications that can only show signed content), you can use crypto to help decentralise power with tools for confidentially presenting content and allowing you to vet your applications haven't been tampered with. In both cases the underlying technology has many common components, and what changes is the use you make of it.
- emurlin 3y ago> you cant compute yourself out of a broken world. Most certainly not, but surely you can build better tools with the aspiration of facilitating certain goals, can't you? It's not the tools in or by themselves that will improve (or worsen) the world, rather something at your disposal to pursue your goals. > the myth that the computer will lead to a better, more equal society Agreed that it won't. But, IMO, the strength of Shelter is that it covers a niche that many other systems (blockchain-y or otherwise) don't, which is data autonomy and confidentiality. Most popular web apps today are centralised silos that don't give you privacy from the operator, and those that aim for federation often also don't give you much privacy either. Now, it can be that those factors are not important for the specific thing you're developing, and that's fine. But, if they are, having an existing framework to build on top of can give you a head start (even indirectly, by showing you what works or doesn't). Disclaimer: I'm involved in the development of Shelter. All opinions are my own.
- jazzyjackson 3y agoI'm inspired by alternate modes of data storage and compute, and blockchain gets points for popularizing public key pairs as a means of committing transactions, but I totally understand the hate: whenever a tool is invented, it makes certain things easier than they used to be, sometimes unintentionally. Merkle trees make verifying data integrity fast, and proof of work was invented to make sending spam emails slow. The two combined with a money-metaphor makes spinning up pyramid schemes zero marginal cost. Whether or not you're on board with Mr Nakamoto's banking critiques, the result of the technology has been a tidal wave of thin schemes defrauding hopeful and desperate people, while adding little value outside of that world.
- deleted 3y ago[deleted]
- JohnFen 3y agoI don't hate blockchain, but I also don't see much use for it that isn't better accomplished through other means. So I guess I'm just not inspired by the tech.
- deleted 3y ago[deleted]
- klabb3 3y agoI thought the same but I really do understand the "hate" now. In fact, as someone who sees a lot of potential in the tech, there's even more reasons to be upset. "Blockchain" and even "crypto" are terms that became synonymous with opportunistic speculation at best, and scams and frauds at worst. And honestly, the vast majority of people on the "inside", i.e. those actually working with it, were opportunists as well. Most of them saw the tech narrowly as an unregulated financial instrument.
- nvy 3y ago> I'll never understand the undeserved hate that blockchain tech gets. I understand that some people automatically associate blockchain with crypto scams, but fundamentally the tech is inspiring. Is it? From where I sit it's an environmental catastrophe as we burn squillions of CPU/GPU cycles for the modern day tulip craze (bitcoin). For any purported use case of blockchains, with possible exception of buying illegal things online, existing technologies are better.
- vacuity 3y agoMonero is the one cryptocurrency I will endorse for having a genuine focus on private transactions. For people living under authoritarian regimes, oppressive families, or just whoever wants privacy. My only misgiving is the energy usage.
- unshavedyak 3y agoI assume they're referring to the technology. Ie immutable ledgers, merkle trees, etc. You're referring to crypto coins. An immutable ledger != bitcoin.
- api 3y agoThere's nothing inherently wrong with a block chain. It's a cryptographically immutable linked list. Anti-buzzwords can be as shallow as buzzwords. With the exception of the inefficiency of proof of work, nearly all the problems with cryptocurrency are human problems related to the toxicity of the ecosystem rather than intrinsic issues with the tech. Code doesn't scam people. People scam people.
- lesona 3y agoOff topic - is this webpage impossible to back-button out of without double-clicking? I really, really hate that.
- gslepak 3y agoHmm, thanks for pointing that out! It also bothers me. I think the offending line in our docs template is here: https://github.com/okTurtles/shelterprotocol.net/blob/master/src/pages/index.astro#L4 https://github.com/okTurtles/shelterprotocol.net/blob/master... We'll look into fixing this! EDIT: should be fixed!
- jazzyjackson 3y agoHey greg! Glad to see the recording of the D'Web presentation made it online [0], "Most of today's web apps have privacy settings, but none of those privacy settings are real. We didn't want to be one of those companies that gave our users privacy settings, and effectively be lying to our users" is a great problem statement. For the blockchain skeptics, good news, it's not a blockchain: it's a distributed virtual machine without waste-heat-enforced-global-consensus. Of course it's much faster to see "smart contract" and hit the back button than investigate a new way of doing things so Shelter has their work cut out for them. [0] https://youtu.be/PKjwUagTq-U https://youtu.be/PKjwUagTq-U
- duskwuff 3y ago> End-to-end encrypted, federated... https://shelterprotocol.net/en/federation/ https://shelterprotocol.net/en/federation/ "Federation: Coming Soon!" And I'm seeing a lot of "under construction" and "coming soon" in other parts of the protocol which seem critical to functionality, to the extent that I can't see how this protocol is even meant to fit together.
- gslepak 3y agoYou're right the documentation is incomplete, we are actively working on the protocol and for any sections that we feel are too much "up in the air" as far as details go, we have purposefully left blank so as to not mislead implementations of the protocol. However, the core of the protocol is stabilizing and I can answer generally as far as missing sections go. Regarding federation, instead of publishing events to the server you're connected to, you publish events to a different server. Everything else works pretty much the same.
- mdaniel 3y agoI had a similar question about the vast number of "coming soon" sections and that led me to wonder why you would choose to submit this link at this stage of the specification's lifecycle Would it be accurate to say you're trying to get broader adoption of this idea, but currently the only implementation is in your group-income repo? I ask that with an especial emphasis on the zero knowledge password system which is currently undocumented but, if I'm understanding correctly, also unimplemented? https://github.com/okTurtles/group-income/blob/3e50642ab8866f19ac088d428e73e3fd005719db/frontend/controller/actions/identity.js#L183 https://github.com/okTurtles/group-income/blob/3e50642ab8866...
- gslepak 3y agoA lot of federated protocols (including partially implemented protocols, thinking @-protocol) are being released right now. There is a paradigm shift occurring in the way software development of web apps is done, and we want people to be aware of all of their choices when exploring this new way of building web applications. Maybe you want to build a federated application yourself, but want certain features that some of these protocols don't have. Well, now you know a little more about what's possible in this design space. Perhaps you've already settled on a protocol (e.g. have started building on ActivityPub), but want end-to-end encryption. Well, now you're aware that you can in fact add it in to your existing ActivityPub-based app. For example, there's no reason why Mastodon couldn't use Shelter Protocol to encrypt DMs between users. Shelter Protocol is very lightweight, and can be an add-on to existing apps. Regarding the ZKPP, it is implemented, but like the rest of the code is not yet separated out from that repo. That is one of the next steps we'll be working on, a standalone developer SDK. We are also welcoming early feedback and contributions from those who would like to participate.
- TylerE 3y agoFederated. User friendly. Pick one. Federation is mistake. IRC is dead, Usenet is dead, email SHOULD be dead. Federation sucks and causes no end of issues.
- Groxx 3y agoAm I right to read this as a replicated, optionally encrypted, append-or-kv-set "database"? With a mechanism for adding identities which can control each "primary key" of sorts? I think I'm not following how the checksums are produced (are you going to serialize and replicate the code too? seems odd if you're going to include Vue in that serialized data...), nor how that does much at all different than an append-only log would achieve (maybe you can compress kv-sets and discard the history after some time?)... but docs are somewhat incomplete so maybe that's just not covered sufficiently yet. Or I skimmed too quickly and missed something.
- gslepak 3y agoShelter Protocol is an append-only log that is stored in a key-value database. I recommend watching the talk if you haven't already, it should answer your questions. Regarding storing Vue (or any other frontend framework), the answer is gonna get a bit technical (sorry, we haven't documented this on the website yet). This is a curiosity for how we happen to be using Shelter Protocol in Group Income (which uses Vue). Vue.js both is and isn't saved to the contract. Each contract manifest has two versions of the contract: one "complete" contract containing all of the code necessary for reproducing the state, and one "slim" version that has any large dependencies passed in to the contract at runtime. Group Income uses the slim version so that the contracts load quickly, but it's also possible for anyone to reproduce the state of a Group Income app independently, without using Group Income, by loading the "full/complete" version of the contract because all necessary dependencies are bundled in.
- Groxx 3y ago>an append-only log that is stored in a key-value database. Yeah, that's definitely not clicking in my brain at the moment. I guess I need to actually watch/listen to that video rather than skimming the slides. For storing code: yeah, I guess a more "storage polite" version of this would be to serialize the "engine" of whatever you're doing, rather than its presentation. That can often be quite small, certainly in comparison. Would it be possible to simply store e.g. a git repo name + sha, and then clients download as needed? Or do storage-providers need to be able to execute any of this (beyond enforcing key permissions)?
- olliej 3y agoBut I already have end to end encryption - that's literally any sensible TLS configuration, and what iOS requires for apps unless they explicitly opt in to allowing weak connections. Responding to the nonsense introduction: > By design, traditional web applications enable server administrators to monitor all user activities. That's a choice. What is the compelling reason for a company that wants to monitor the use of their apps to use a system that ostensibly says you can't? > Although these web apps offer “privacy settings” to users, they fail to provide any real privacy protection. Yes, because the options are either the data is inherently insecure, or the data is fully encrypted. Governments and users both have difficulty with this concept: you cannot have data security and also backdoors, you can't have data security and also "I have lost every component of my account identity: devices, passwords, and passcodes, but want you to recover my data". This is ignoring companies for whom "privacy settings" are an intentional lie (Facebook, Google, ...), and again, why would such a company adopt a platform that ostensibly forces lack of spying? > Shelter Protocol introduces new ways to handle logins and data storage on the server while preserving the conventional username/password experience that users are familiar with. The username/password system people are familiar with is widely understood, and clearly demonstrated, as being bad for security. > Instead of storing data in a database in clear text on the server, data can now be end-to-end encrypted and synced across multiple devices, and even across servers operated by different individuals. Already completely doable, and the companies that don't do so have chosen not to, for a variety of reasons - some good, some bad, but those reasons are not because encrypting content securely is hard. > The Shelter Protocol (SP) defines operations for a high-level, lightweight, federated, end-to-end encrypted virtual machine. Or you can use JS, which is already available, runs on every machine that exists at this point (is this good?), is already federated: any device can run any JS you send it. > [remainder of front page] Largely nonsense. * Key concepts * > Since every action in SP is signed using a user’s private key, which in turn is derived from their password So it's bad crypto. Huzzah! After this I got bored reading this nonsense. There's no actual justification for why this magical VM is necessary or good, nor any explanation of how they're going to make it "federated" (because despite advertising federation, it does not appear to be), what they consider federation to be, or why that is good. Their one example app does nothing that requires any of their advertised features - literally every part of this could be done with existing web tech, and largely be done better.
- treyd 3y agoI really wonder why is it so common for people to default to JSON even when designing complex cryptographic protocols like this. I was skimming the spec for the script interpreter, which is something you'd expect would be focused on compactness, but it seems like it's designed entirely around JSON semantics and concepts, which means any implementation necessarily carries along this complexity. This isn't to say that JSON is bad, but to put it at the absolute core of the data model seems problematic. This problem happened with Matrix when they started having to layer JSON around base64-encoded-encrypted-JSON and generally the looseness of the format infecting the entire data model of the protocol. Like the SPMessage format here too, uses JSON.stringify to indicate structure encoding, which necessarily implies that any implementation of the protocol is bringing along needing to handle JSON semantics. JSON does not seem to be well-suited here as it doesn't composing cleanly in the way a data structure defined in terms of bytes would.
- GoblinSlayer 3y agoWell, it's a webapp, so everything there is designed with web technologies.
- eptcyka 3y agoYes, for all the great things browsers do, it sure is a shame that the only data format they can handle is JSON.
- treyd 3y agoBut just because it's a webapp doesn't mean you have to use JSON for everything, it's the other way around, using JSON for everything means that the only place the data model feels natural is the web. Which is strange because JavaScript has had the Uint8Array that makes manipulating arbitrary byte structures easy for a while, it doesn't feel any less natural than other dynamic languages in that regard. Defining a "signed message with a header" structure in terms of bytes like I described above seems like a no-brainer. If you want the payload data of your protocol to use JSON then that's fine, but that shouldn't dictate the cryptographic layers underneath.
- 3y ago