Closed rugk closed 6 years ago
Thanks for reaching out.
While it's only implied and not explicitly spelled out, you are supposed to sign it on a secure device, and not on the server, because otherwise, as you said, what's the point? It's implied in the note about dynamic websites in the developer instructions. So point 1 is not an issue.
As for 2-3, yes, it's not covered by this extension. This extension assumes the developer is trusted, the same way you trust a developer (packager) when using Linux, or a developer when using PGP signed binaries. Reproducible builds could help us take it to the next step and protect against such backdoors, because then actual distributed javascript can be verified against the source (assuming your javascript is built).
@twiss and I are planning on making a service worker that helps verifying the signatures of pages (similar to this extension), but also, following his lead, verification against github. This can give some more assurances regarding the integrity of the code, but it brings in a few issues.
If you ask me about the "dream" solution. I'd say, follow what happened in https land. First there was https (essentially this extension), and then certificate transparency (would be great to have it here too) and reproducible builds (if your js is bundled) so one can verify the source really matches the binary.
Anyhow, just to confirm. The actionable item you expect from this ticket is to improve the readme to include some more info about the risks and threat model?
Thanks.
it's only implied and not explicitly spelled out, you are supposed to sign it on a secure device,
It's implied in the note about dynamic websites i
You get the issue, don't you? Indeed nothing should imply this, it should be started very explicitly. Always make the these model of your software clear. Just because one thing is obvious to you, does not mean it is obvious for others. You have to make sure users (or admins) know what thus thing protects against and against what it does not. They must know the do's and don't's.
So in short:
The actionable item you expect from this ticket is to improve the readme to include some more info about the risks and threat model?
Yes.
I completely agree about the need to clarify the readme, and will do so now.
Was just trying to figure out if there are any other actionable items I may have missed.
Thanks for bringing this up!
So let's take https://client.etesync.com/ as an example. Our thread model is a malicious server.
So when the server (i.e. you) turns evil, they can just sign each page anyway. we verify it and that's it.
So maybe you should clarify that this nylon helps if:
Also it helps when:
To prevent against a rogue server owner you would additionally have to verify that the minified code (or, the signature) corresponds to the one hosted at GitHub, respectively, that the signature is published on GitHub and it signs a valid release. That would be a hard task.