This is not a technical solution, but you could release your code under AGPL and take code contributions. By doing this, you are essentially telling the world that not only do they need to trust you, but that you are willing to make yourself legally culpable if you surreptitiously run different code on your servers (ie., you would be violating the copyright terms of your contributors whose code is licensed under AGPL…
Ask HN: How would you implement a verifiable open-source web application?
71–80 of 87 posts
Re: Ask HN: How would you implement a verifiable open-source web application?
#72The only way you can do this is if the server is not fully under your control but partially controlled by the remote client. We've been here before: this is Trusted Computing. You need a Trusted Platform Module on your servers (thankfully you're picking the hardware, so you can make that a hard requirement). Your users can inspect and sign your code with their keys, that they generate and keep on the client side (you…
Perhaps it's a stupid question, but how can a web client confirm that code is really running from inside the TPM? Since the source code is freely available from github, isn't there a chance that whoever controls the server (hacker or malicious owner) can simply override the TPM at some point in future, and run the unsigned, possibly altered, code directly, circumventing all the restrictions? As far as I understand th…
Re: Ask HN: How would you implement a verifiable open-source web application?
#73Earlier quoted context omitted.
I think I picked this up off Hacker News originally, but there's apparently new Intel stuff (aka SGX) coming out to help with this. http://theinvisiblethings.blogspot.com/2013/08/thoughts-on-i... Unfortunately, I think the reason most open source people have a knee-jerk aversion to trusted platforms are that they've historically been designed to only serve the interests with the most money (read: the government and/o…
Remote attestation is most certainly anti- Free software. Bank: "For your security, you may only access our website with an officially supported browser"
I use remote attestation to verify that my firmware, kernel, initrd, and configuration were booted as expected. It's a tool you can use for your own benefit.
What you are describing is someone else attesting that their software booted on your computer. That was the scary scenario people were afraid of when trusted computing rolled out, but it never materialized. Nobody is using TXT for DRM.
Re: Ask HN: How would you implement a verifiable open-source web application?
#74The drawback is, that you can show that the site is not compromised directly after a reboot, but you need to call your friend to login, to give the password for his validity checker. Once his app runs, other can connect to it, and use the public key of the app to check if your own app is ok.
The problem is to find someone who is independent of you, so your community trusts him, and you also need to trust him, as his code is running on your server.
Re: Ask HN: How would you implement a verifiable open-source web application?
#75Re: Ask HN: How would you implement a verifiable open-source web application?
#76To know whether an open source program on server is modified, we send a customized different executable copy every time with one time use secrets. So when the program starts, it has to answer questions correctly and shortly (to protect against reverse engineering) to prove it's a genuine copy, then we can send it our encrypted access key. The access key will never be written to disk by a genuine copy, so a restarted program won't be able to access our data without asking for a key again, then we will know something is wrong.
The copies we upload to server functions exactly like open source one, but the user is responsible for adding secret parts to it so that it's closed source.
Re: Ask HN: How would you implement a verifiable open-source web application?
#77Have you considered sandstorm.io? https://sandstorm.io/ I realize this doesn't meet your requirement re hosting it yourself -- but since I don't know the full background, perhaps that doesn't matter to you.
Re: Ask HN: How would you implement a verifiable open-source web application?
#78Re: Ask HN: How would you implement a verifiable open-source web application?
#79Earlier quoted context omitted.
Remote attestation is most certainly anti- Free software. Bank: "For your security, you may only access our website with an officially supported browser"
If you remotely attest your own software, how is that anti-freedom? I use remote attestation to verify that my firmware, kernel, initrd, and configuration were booted as expected. It's a tool you can use for your own benefit. What you are describing is someone else attesting that their software booted on your computer. That was the scary scenario people were afraid of when trusted computing rolled out, but it never m…
If you generated the signing key and loaded it onto the hardware (or generated on-chip but it's signed by nothing else), then I don't see the problem.
If the hardware has a factory-generated private key that you cannot get at and the corresponding public key can be verified through some well known trust root, then a third party can ask you to attest to what software is running on your hardware and you cannot lie. This custom hasn't materialized yet, but it's not too hard to imagine it catching on after support winds its way up the software stack.
What are the specifics of your setup?