Verifying Software Signatures
For greater system security the installation of unsigned software should be avoided at all costs. Instead it is recommended to:
- Only install verifiable software that allows for confirmation of signing keys and signatures; and/or
- Use mechanisms that heavily simplify and automate this process, like apt-get upgrades.
What Digital Signatures Prove
Bear in mind that using digital signatures to verify the trustworthiness of software is not an infallible process. Digital signatures increase the certainty that no backdoor was introduced by a third party during transit, but this does not mean the software is absolutely "backdoor-free". The following is a summary of what digital signatures prove and do not prove.
Table: Digital Signatures Properties
|Digital Signatures Prove||
|Digital Signatures do not Prove||
If all files downloaded from trusted vendors are verified, then this removes the threat of server compromises, dishonest staff at hosting companies or ISPs, Wi-Fi attacks and so on. The reason is files that have been tampered with will produce bad digital signatures, so long as the public keys used for signature verification are the authentic, original ones (see below).
Checking Digital Fingerprints of Signing Keys
A critical first step in verifying software is legitimate is confirmation that the signing key is authentic -- this requires inspection of the key fingerprint.  Always perform this operation before keys are imported or trust is placed in OpenPGP output when verifying files or repositories.
The standard Whonix ™ wiki advice is to carefully obtain copies of the OpenPGP fingerprint from multiple secure websites and to use other authentication systems to check they match.  In this instance, "other authentication systems" refers to: 
- Use the PGP Web of Trust.
- Check the key against different keyservers.
- Use different search engines to search for the fingerprint.
- Use Tor to view and search for the fingerprint on various websites.
- Use various VPNs and proxy servers.
- Use different Wi-Fi networks (work, school, internet cafe, etc.).
- Ask people to post the fingerprint in various forums and chat rooms.
- Check against PDFs and photographs in which the fingerprint appears (e.g., slides from a talk or on a T-shirt).
- Repeat all of the above from different computers and devices.
Checking Digital Fingerprints of Signed Software
Before file signatures can be safely verified with the signing key, several prerequisites must be met:
- The correct signing key pair was downloaded.
- The signing key's fingerprints were checked against multiple sources.
- The key pair was imported.
- The software package intended for installation was downloaded.
- The accompanying signature file for the software package (.asc files are GPG signatures) was downloaded.
The following example shows how the file signature is checked for Tor Browser bundle v8.5, directly downloaded from The Tor Project website.
In a terminal run.
gpg --verify tor-browser-linux64-8.5_en-US.tar.xz.asc tor-browser-linux64-8.5_en-US.tar.xz
The OpenPGP output should show a "good signature", with the primary key fingerprint matching the one verified by the user earlier on. In this example.
gpg: Signature made Mon May 20 11:00:34 2019 UTC using RSA key 0xEB774491D9FF06E2 gpg: Good signature from "Tor Browser Developers (signing key) <email@example.com>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290 Subkey fingerprint: 1107 75B5 D101 FB36 BC6C 911B EB77 4491 D9FF 06E2
The software can now be safely installed. If the output states "bad signature", then the files and digital signatures should be removed and downloaded again.
Attacks in the Wild
Virus Stealing Money
- https://www.reddit.com/r/Monero/comments/dyfozs/security_warning_cli_binaries_available_on/ [archive]
- https://firstname.lastname@example.org/thread/DXJ223SBTCWKP7EDHVS7X73VP6WWX4S4/ [archive]
- https://github.com/monero-project/monero/issues/6151#issuecomment-555694443 [archive]
- https://bartblaze.blogspot.com/2019/11/monero-project-compromised.html [archive]
Fake Tor Browser
To illustrate the risk of installing unsigned software, consider the following attack which recently used a "trojanized" Tor Browser [archive] to spy on users and to steal Bitcoin. This attack had several elements:  
- Advertisements for the fake Tor Browser were used in Russian forums focused on privacy, censorship circumvention, darknet markets and cryptocurrencies.
- Messaging included promises to circumvent Russian censorship bodies and to bypass CAPTCHAs.
- Links were provided to fake domains for downloading Tor Browser (
torproect.org), instead of the genuine website:
- After visiting the fake websites, users received warnings their Tor Browser was outdated (regardless of the reality). Users who believed this message were redirected to another website with an installer.
- The malicious Tor Browser version downloaded was older (version 7.5) than the current release (9.0 at the time of writing), and had disabled the digital signature check for installed Tor Browser add-ons (
xpinstall.signatures.requiredwas set to false). It had also renamed the updater tool to prevent victims updating to a legitimate version of Tor Browser.
- The Tor proxy was used in the browser, anonymizing the user's IP address. However, users could be spied upon because a custom user-agent (text-based identifer) was set that allowed the software and operating system to be visible -- a unique Fingerprint made tracking by network observers possible.
- Attackers had bundled HTTPS Everywhere with a modified
manifest.jsonfile. This permitted the web extension to have broader permissions and to add content scripts that were loaded into various web pages. As a consequence, a Command and Control server [archive] could load further scripts when users browsed on certain Darknet markets and a commonly used Russian money transfer service (QIWI) -- changing cryptocurrency wallet addresses to match an addressed controlled by criminals in order to steal money.
This highlights the possible dangers of installing unsigned software -- loss of anonymity and financial loss in this case. If the victims had instead only installed signed Tor Browser software from trusted and known sources after: verifying they had the correct key pair, confirming the key's fingerprints, and checking the signature file for the software package matched, then they could have bypassed this scam entirely.
System Security Level
- always software signatures verification security level: always verify software signatures (for example by using OpenPGP, codecrypt, APT)
- always use TLS security level: always securely download files over TLS
- plaintext security level
Once ever software was installed or started which was not previously successfully software signature verified the system security level is to be considered reduced from OpenPGP level security to TLS level security or even plaintext level security.
Unless a Disaster Recovery Procedure is applied, it is not possible to increase the security level of a machine or VM from let's say TLS level security to OpenPGP level security.
If you prudently consider Transport Layer Security (TLS) to be weak as recommended, software signatures need to be consistently verified. No exceptions ever.
Gratitude is expressed to Qubes OS [archive] (Permission [archive]) (w [archive]). The What Digital Signatures Prove chapter contains content from the Qubes OS: What do the Digital Signatures Prove and What They DO NOT Prove [archive] page.
- Digital signatures are still useful in this case, because it is possible to limit trust to a few select people/organizations such as Whonix ™ developers.
- For example, anybody could generate an OpenPGP key pair and pretend to be the "Whonix ™ Project", but only Patrick Schleizer's key pair is legitimate.
- Website checks are only as secure as the imperfect TLS system, which is itself based on certificate authorities that have been frequently compromised in recent years.
- https://www.qubes-os.org/security/verifying-signatures/ [archive]
- https://www.eff.org/deeplinks/2019/10/phony-https-everywhere-extension-used-fake-tor-browser [archive]
- https://www.eset.com/us/about/newsroom/press-releases/eset-discovers-a-campaign-stealing-bitcoins-from-darknet-users/ [archive]
This is a wiki. Want to improve this page? Help is welcome and volunteer contributions are happily considered! Read, understand and agree to Conditions for Contributions to Whonix ™, then Edit! Edits are held for moderation.
Copyright (C) 2012 - 2019 ENCRYPTED SUPPORT LP. Whonix ™ is a trademark. Whonix ™ is a licensee [archive] of the Open Invention Network [archive]. Unless otherwise noted, the content of this page is copyrighted and licensed under the same Freedom Software license as Whonix ™ itself. (Why?)