Safeget: Downloads and verifies files

Safeget gets and verifies files. It does the security checks that almost everyone skips. It's free and open source.

Instead of dragging through a long and complex procedure, just run Safeget. With one command you can download, verify, and even install.

Here's how simple it is:

    safeget \
        https://bitcoin.org/bin/bitcoin-core-0.17.1/bitcoin-0.17.1-x86_64-linux-gnu.tar.gz \
        --pubkey https://www.reddit.com/r/Bitcoin/wiki/pgp_keys \
        --signedhash SHA256:https://www.reddit.com/r/Bitcoin/wiki/verifying_bitcoin_core
        

Just cut and paste one command, and get an extremely well verified file.

Before Safeget, verifying pgp signed files was a pain

  1. Download file
  2. Download public key
  3. Import public key
  4. Download signed message with hashes
  5. Verify signed message
  6. Verify file hashes
Almost no one did it.

Users have no idea how to do most of this. They don't even know what it means. So Safeget does it for them.

Custom Safegets. One Simple Command. No Parameters.

DeNova creates free custom Safegets to make it even simpler. For example, there's a Bitcoin Core custom Safeget with all the parameters built in. If you're a file provider, contact us for a free custom Safeget.

Or just publish your own command line. The more checks you specify, the safer your users are. It's best to publish your Safeget command through multiple channels.

Safeget is completely decentralized with no gatekeeper. There's no single point of failure.

Multiple Verification Methods

Safeget checks:

  • file source
    • secure connection
    • warns if keys and hashes are from same host
  • explicit hashes
    • ideally multiple hashes, because a collision with multiple modern hashes is extremely unlikely
  • pgp file signatures
    • downloads and imports pgp public keys
    • downloads and verifies pgp file signatures
  • signed pgp messages containing hashes
    • downloads and verifies hash signatures
    • verifies the target file matches hashes
  • file size

Want more checks? Let us know.

Safeget also solves the question of which verification sources and methods to trust: Don't trust any of them too much. The solution is a defense in depth, using multiple hosts and algorithms. Safeget can get corroboration from multiple sources. Almost all other file verification relies on a single host or algorithm. But no one really knows which ones are safe. Safeget can verify a file based on the file's source, pgp keys, pgp file signature, pgp signed hashes, explicit hashes, and more.

You can specify many checks for a file, all on one command line. The more checks, the more certain the file is valid. It is extremely unlikely that a bad file will pass multiple hash algorithms. You might find yourself calculating the time needed to find a multiple hash collision in HDOU units — "Heat Death of the Universe".

In practice, when you use Safeget with multple checks attackers will have to bypass or attack Safeget itself. Safeget is distributed as open source, in a single python file, so it's easy to audit the code. Please do.

Automatically Start App After Verification

You can tell Safeget to run a file after it's verified. It's a great way to launch installers. With one command you can download, verify thoroughly, and install.

Most parameters can be either a url or local file. For example, if a pgp signature is available at a url, the signature might be anywhere on the page. Safeget checks the protocol, downloads the page, and extracts the sig.

How to get Safeget

It's best to get Safeget from a standard distribution site like PyPi. Otherwise you must verify Safeget itself just once, using the usual methods. Then it's easy to download and verify other files. All you have to do is run a Safeget command.

Runs on linux. OSX and Windows soon. Installs its own dependencies.