4 ms·
I think the author hasn’t accurately described the workflow where reproducible builds are used. Here’s my attempt. There are three entities: 1. The vendor, w
by ENOTTY 6y ago
I think the author hasn’t accurately described the workflow where reproducible builds are used.
Here’s my attempt.
There are three entities:
1. The vendor, who creates and _distributes_ a product, which may include software, to the end user
2. The end user, who receives the product from the vendor, operates the product, and trusts one or more verifiers to correctly certify the product according to some standard that the user desires
3. Verifiers, who receive proprietary access to the vendor’s product (e.g. source code) and check that the product meets a set of standards and assert that fact to the users
Note that verifiers are NOT in the job of distributing products to users. That’s a hard job and it seems understandable to me if verifiers don’t want that job.
Reproducible builds help link a specific version of source code that a verifier certified to a specific product being operated by a user. Without it, the user trusts the vendor much more than with it.
Yes it adds brittleness and delay (see FIPS 140 certification). These are use case specific trade offs that only users can judge.
In the case where some facts about the source code can be formally verified, reproducible builds support that trust relationship much better. I might go so far as to say that reproducible builds are essential for trusting formal verification.
You can also imagine a software supply chain that includes more steps than a simple vendor -> user relationship. Much of the proprietary software used today include libraries from third party vendors. There are integrators that add their own special sauce. The supply chain looks more like: vendor -> vendor -> ... -> vendor -> end user.
Imagine each vendor has their own set of verifiers responsible for certifying that vendor’s output.
- chii 6y agobut this just shifts the burden of who to trust to the verifiers. It didn't make the software from the vendor _any more_ trustworthy.
- ENOTTY 6y ago> this just shifts the burden of who to trust to the verifiers Agreed. A colleague once said that trust is like a balloon; if you reduce trust in one area, you tend to expand trust in another area. I think the typical response to your statement from a user is that it’s easier to trust a set of verifiers than it is to trust a vendor. The act of a verifier blessing an artifact makes that artifact more trustworthy. Personally I’m skeptical of these claims, but that’s the underlying assumption of the certification process
- ta8594505930 6y agoPresumably there is benefit in reducing trust in a party with mixed or unknown incentives to increase trust in a party whose incentives align with your own. For a critical piece of software I could imagine a schema where a user pays one or more independent verifiers to validate the software. That would allow the user to control the incentives of the entities telling them the software is safe.
- strbean 6y agoIt shifts and distributes the burden of trust. There are mountains of scenarios where we shift from "we rely on trusting this one person / entity" to "we rely on trusting at least one of these N people / entities", and that is a huge win every time.
- ummonk 6y agoNo, because now you don’t have to trust any one entity completely. You just have to trust that at least one of the verifiers is uncompromised.