Codehash.db – A public database for software and firmware hashes
github.com
github.com
Specifically, you can demand a CT receipt from your downloads, proving that the existence of the download had been made public.
Without that, and in this scheme, it's still possible to simply target someone with tailored malware and assume they won't bother to check hashes against one of these databases.
With CT, the download client itself can automatically refuse a download that has not been publicly announced.
https://textslashplain.com/2016/05/13/cheating-authenticode-...
"Also, in case it wasn't clear: the primary audience for such a DB should be developers or admins (e.g. IT department in a large organization), I think. Not users. Users are always somehow fated to trust the 'last mile' vendor, and there is little feasibility in implementing any form of trust distribution for them."
https://secure-os.org/pipermail/desktops/2016-November/00014...
If other software (e.g. your Linux distro) similarly checked for publicly announced artifacts (e.g. an offered package upgrade) then you would be protected against targeted malware from your last mile vendor. The malware has to be either offered to everyone (ensuring detection) or no-one.
I think the CT mechanism is simply better than a system that "isn't intended for end users", because a CT mechanism projects both administrators and end users.
"Users are always fated to trust the 'last mile' vendor because the last mile vendor (e.g., Google Chrome), has control over what the user sees and does (i.e., sends and receives). If your Chrome browser is compromised or malicious, it can silently ignore the fact that no CT announcement is attached to a cert. In this sense, the user is fated to trust Chrome.
"Moreover, there's little feasibility in implementing any form of trust distribution for them, but this is not to say that there's little feasibility in implementing a system that keeps them relatively secure. Users running a non-malicious, non-compromised instance of Chrome do not have any form of trust distribution, since they place all their trust in Chrome (though they probably don't realize it). Nonetheless, Chrome may be keeping them relatively secure as long as it's working properly."
Do you have any thoughts on why codebase.db should exist, versus pushing the same hashes to a CT log and having clients check for CT announcements? Seems like CT is a clear improvement.
Looks nifty, though.
http://www.nsrl.nist.gov/RDS/rds_2.54/split-hash.txt
Alleging the NSRL is untrustworty is inconsistent with the track record of the NSRL and NIST scientists.
Please be aware that there are thousands of forensic experts who have relied on the NSRL over the last decade or more as a basis for testimony in court. Those experts verify hashes for everything they do, and for every case, and as a result there has been significant amount of independent peer review of the contents.
While Codehash.db provides a hash for a package, the NSRL provides hashes for individual installed files.
This in no way diminishes the value of the Codehash.db design. They target different use cases.
Can you explain this signature scheme? I'm not familiar with it. The link you provided just appears to show hashes and sizes for a file that has been split into four pieces.
> Alleging the NSRL is untrustworty is inconsistent with the track record of the NSRL and NIST scientists.
I'd just like to point out that neither I nor anyone else here has alleged that.
> Please be aware that there are thousands of forensic experts who have relied on the NSRL over the last decade or more as a basis for testimony in court. Those experts verify hashes for everything they do, and for every case, and as a result there has been significant amount of independent peer review of the contents.
I'm genuinely glad to hear that! That's good to know.
> While Codehash.db provides a hash for a package, the NSRL provides hashes for individual installed files.
I don't think that's necessarily true. Codehash.db is open to hashes for anything (source code, ISO, package, binary installer).
> This in no way diminishes the value of the Codehash.db design. They target different use cases.
Likewise, my remarks aren't meant to be in any way derogatory toward the NSRL. As far as I'm concerned, it's OK if they do, in the final analysis, target the same use case. If that's the case, the best solution should be adopted, whichever one that turns out to be. :)
At the end of the day, I think it comes down to trusting Doug, which a lot of people do.
In reality, Doug would never change hash values like that because he's trustworthy. At least, he wouldn't willingly or knowingly do it. But if Doug's signature is the only thing that guarantees the authenticity of a list of millions of hashes, that paints an awfully large target on his back. How do you know that Doug hasn't been coerced into changing some hash values before signing them. How do you know that Doug's signing key hasn't been compromised? We can't know these things for certain, but we'd have much greater assurances if we could check the signatures of multiple independent parties in addition to Doug's, and that's exactly what codehash.db aims to allow. It's a way of distributing trust across a larger group of people instead of centralizing it into a single point of failure.
By the way, does Doug actually sign the hashes? I haven't been able to find any signatures, so please point me to them if there are any.
wget http(s)://... | tar x
make
package
sign_with_gpg
upload_to_ftp
Only if a package maintainer gets involved there is a chance that release signatures are actually verified. But even then, a whole lot of upstream projects just don't sign their releases. Some distros don't sign their packages, either. Or even their ISOs (iirc Linux Mint only started doing this fairly recently).Also, "web of trust" only works for a tiny subset of people. If I'm a "lone wolf" FOSS developer, my key won't be signed by anyone, there won't be any WoT to verify. Downstream packagers just have to swallow that or TOFU.
Disclaimer: I don't know anything about brew packaging practices. Maybe they always require verification. Maybe they don't.
One way to mitigate this nowadays is through services like keybase.io, which allow you to aggregate evidence for the authenticity of your key from social media accounts and websites. You can also do this yourself by posting your PGP fingerprint in many different places. These methods make it much more difficult for someone to create a new key in order to impersonate you. Accordingly, it's easy to trust that a key really belongs to a certain person -- even if there are no signatures on it -- when there's a long history of evidence from many different sources that would collectively be very difficult to spoof.