"Reproducible build" definition in OpenSSF glossary

Leo Wandersleb Leo at LeoWandersleb.de
Fri Jul 11 23:04:31 UTC 2025


On 6/29/25 22:07, Ismael Luceno wrote:
> Isn't upstream not caring enough of a red flag?

Oh, I wish. It's such an up-hill battle. When I started 5 years ago, only one or 
so mobile Bitcoin wallet was functionally reproducible (reproducible except for 
the zip compression and the signature). Now we track thousands and the bulk are 
custodial (which is worse in the sense of your Bitcoins not being save but these 
are all also closed source, so they might do whatever on your phone prior to 
stealing your coins). We try to fetch the providers where they are as most are 
just not familiar with the concept of reproducible builds and many of the open 
source projects genuinely start caring after we make them aware of the issue but 
the Play Store ecosystem builds on signed binaries, so "bit by bit" 
reproducibility is unachievable for the "executable" if you consider the full 
apk file on Android as the artifact. If you consider it as a zip file and check 
only the content of it without the signature, then many open source apps are 
reproducible. As there are libraries that introduce short random strings (UUIDs) 
with the library providers not willing to fix this and the app providers not 
willing to not use these libraries, we still attest "functional reproducibility" 
in these cases.
That said, I wish devs and users would care so we can stop doing these extra 
steps when reproducing binaries we find on Google Play.
Google Play is also not the only platform where we find signed binaries. Bitcoin 
wallet firmware for Hardware Wallets also usually comes with embedded signatures 
that we have to disregard. These come in all their own formats, usually with 
some header that contains the signatures at a fixed offset. It makes sense to 
bundle the signature to make "trust on first use" work but it makes it a mess to 
call something reproducible then. But we still try as the goal is to provide 
transparency but it's a slippery slope, so we can't just call it functionally 
reproducible when the diff looks benign - to an expert - after 3h of analysis as 
those 3 expert hours won't scale for what we are trying to do.


More information about the rb-general mailing list