Software Signature Verification Usability Issues and Proposed Solutions
Severe Usability Issues with Software Signature Verification such as GnuPG and Proposed Solutions / Secure Downloader Development Notes
Problem[edit]
Quote Warning page, Always Verify Signatures:
For greater system security, it is strongly recommended to avoid installing unsigned software. Always make sure that signing keys and signatures are correct and/or use mechanisms that heavily simplify and automate this process, like apt upgrades.
As a reminder, digital signatures are not a magic bullet. While they increase the certainty that no backdoor was introduced by a third party during transit, this does not mean the software is absolutely "backdoor-free". Learn more about this process and what digital signatures prove.
Surveys ([Dev/Download_Statistics example]) have shown that very few users use software signature verification. Even fewer users have a sufficient understanding of the threat model. In case of an attack by an advanced adversary most users would get compromised. This is the very strong opinion of the author of this text. Usually the author of this text seldom raises strong opinions.
Required knowledge is far too much. Usability of tools used for manual verification of software signatures is such as GnuPG is far too bad. For an elaboration of these issues, see Conceptual Challenges in Software Digital Signatures Verification and Verifying Software Signatures.
Solutions[edit]
Metalink[edit]
Metalink are links which support additional metadata. Such as in theory links to signing keys, software signatures. Browser could implement support for metalink and automation of software verification.
Would require Metalink including OpenPGP support.
GSoC may be way to get this feature into Firefox.
- https://en.wikipedia.org/wiki/Metalink
- https://bugzilla.mozilla.org/show_bug.cgi?id=331979
- https://web.archive.org/web/20201214130913/https://github.com/Whonix/Whonix/issues/21
Metalink would only be a gradual improvement. Download security is harder than just verification of software signatures. Rollback (downgrade), indefinite freeze attacks and other attacks would still be possible. See TUF Threat Model, TUF: Attacks and Weaknesses for further information.
https://daniel.haxx.se/blog/2021/06/07/bye-bye-metalink-in-curl/
Subresource Integrity[edit]
Would solve mirror issue.
Unavailable for file downloads.
https://github.com/w3c/webappsec-subresource-integrity/issues/68
OpenPGP Signed Website[edit]
OpenPGP Signed Websites and browsers verifying website signatures do not exist yet either.
Key Distribution[edit]
Even if browsers (such as Firefox, Chrome) and/or downloaders (such as wget, curl, aria2c) had support for metalink and OpenPGP verification there would still be no concept on how to distribute the signing keys. This is a hard problem. TLS has the same issue. The certificate authority (CA) system problem.
DANE (DNS-based Authentication of Named Entities) might be a way put the root anchor into the DNS but that's no perfect end-to-end authentication either.
Deprecated Ideas[edit]
JavaScript Based Verification[edit]
Threat model:
- A) When avoiding mirrors: No JavaScript (JS) based verification is required because both download and JS come from the same source with the same trust level.
- B) If using mirrors: JS based verification can make sense but gpg bases is much more secure.
Usability considerations:
- Lack of automation: Cannot be automated. The user manually using the verification button is always required.
- StreamSaver.js feature request: check integrity of downloaded files
Security considerations:
- JS dependency: Conflicts with noJS users. Impossible to implement without JS.
Development effort considerations:
- High effort: Lots of effort to then be ignored by noJS users.
SecureDownloader[edit]
Introduction[edit]
Deprecated idea.
Stub downloader. Similar to the one that Mozilla is providing for Firefox downloads. A small tool that is used to download and install the real tool.
Securing downloads may be better when written as a general purpose tool (not specific to Kicksecure).
No other projects such as Firefox or Debian support this use case.
Open Questions[edit]
- How to download and verify the host program in the first place?
- Without being able to answer this question the thing becomes a circle and doesn't actually solve anything.
- How to download the secure downloader itself in censored countries?
- How to download files in censored countries?
- Torify downloads?
Challanges[edit]
Such a host program is host operating system specific, well you can write it in a cross platform language but still have to struggle with platform specific quirks.
The Tor Project never managed to get such a downloader up and running, see Thandy.
Conclusion[edit]
Not useful. Better to fix the root issue upstream.
Resources[edit]
- liberationtech: secure download tool - doesn't exist?!?
- proposal to defend a permanent takedown threat
TUF (The Update Framework)
[1]- TUF Threat Model,
TUF: Attacks and Weaknesses
[2] - GPG signatures do not authenticate filenames
- https://gitlab.torproject.org/legacy/trac/-/issues/2340#comment:14
- Metalink
- update checking requirements discussion for bitcoin-qt by Bitcoin developer
- https://sourceforge.net/p/aria2/feature-requests/221/
See Also[edit]
- Verifying Software Signatures
- OpenPGP
- Verify the images
- Kicksecure Signing Key
- Software Signature Verification Usability Issues and Proposed Solutions
- OpenPGP Signed Websites
Footnotes[edit]
We believe security software like Kicksecure needs to remain Open Source and independent. Would you help sustain and grow the project? Learn more about our 12 year success story and maybe DONATE!