A lot of software is distributed with PGP keys. These can theoretically be used to verify that the software was created by the person who owns the key. (Sorry if I get the PGP details wrong, I have no practical experience with it.)

Software also comes over HTTPS. With Let’s Encrypt, the verification is tied to ownership of the domain (DNS records I think). So if you’re on ubuntu.com with HTTPS, you’re getting files only approved by whoever owns the ubuntu.com domain.

HTTPS is super convenient. If you’re paranoid, or the entire chain is not HTTPS (HTTPS links to HTTP downloads), you can use a hash program. Hash programs are implemented on all major OSs. It’s visually inspectable.

PGP on the other hand is such a mess that even some cryptographers don’t like it.

What practical threats would be stopped by a PGP key that are not stopped by HTTPS?

✅ plan A

  • good guy owns software.org
  • encrypts with let’s encrypt (only provided if they prove DNS ownership of software.org)
  • https page serves software download

✅ plan B

  • good guy owns software.org and has at some point signed a public key
  • serves page on software.org with software verifiable with PGP key import

❌ plan C

  • bad guy owns software.org
  • software is compromised, but you would never know
  • software is malware

❌ plan D

  • bad guy owns software.org
  • did not compromise the public key (created years prior by the true owner)
  • they cannot distribute software that matches the public key
  • software is malware, served over valid https, and verifiable with malware hashes served by bad guy
  • solrize@lemmy.ml
    link
    fedilink
    English
    arrow-up
    3
    ·
    22 hours ago

    You have it approximately right, serving from an https domain does nothing to authenticate the thing being downloaded. There is such a thing as signed downloads, authenticated by a “code signing certificate”, used for things like Windows installers. Linux distros tend to use PGP signatures instead. Signing the download can in principle be a more secure process than serving a domain over https, since servers get pwned all the time. The download signing, by contrast, can in principle be done completely offline. There is a catch to that involving connecting to a timestamp server, but that gets into the weeds.

    https://en.wikipedia.org/wiki/Code_signing