Hacker News new | ask | show | jobs
by schoen 3371 days ago
The traditional answer is that if your version is different from others', it might be because (1) the developer is trying to attack you, including (1a) the developer wants to attack you, (1b) someone forced the developer to make a custom version of the software in order to attack you, or (1c) someone compromised the internal processes of the developer in order to attack a small group of users (in a way that reduces the chance that the compromise will be discovered by the developer or by others).

This also includes, perhaps, (1d) there are some secret antifeatures in the software whose existence the developer hopes to conceal from the general user population.

For some of these cases, "you" might include not just one person, but also users in a particular country, language community, or income bracket.

Edit: I agree that there may be technical solutions other than binary transparency in particular that can also address some of these concerns.

1 comments

I can understand why those scenarios would be concerning. Ultimately, what matters depends on the threat model. I believe that the Nix model can be used as a base for solving issues like the one presented here, and that it can be done in generality, for a wide spectrum of software.
Reproducible builds (which it seems like Nix focuses on) are useful, but they don't address the problem of whether you got the same binary or source as everyone else at all.
Nix's functional software deployment model is a useful tool for building software reproducibly, but reproducible builds are neither the primary motivation for nor the primary goal of the Nix model. For information on what problems it aims to solve, how it solves them, and how it can be applied in various useful ways (e.g., a package manager is just one particular thing you can implement using the Nix model), I suggest you read the first chapter of the thesis I linked earlier. It's very interesting, and I think you'll find that the model can be applied to problems like this; it's not just about building software reproducibly, although software that builds reproducibly is conducive to the model.