2

I'm trying to figure out how to establish trust in Windows executables that I download from the internet.

Some software that I download, such as KeepassXC, has a Windows Digital Signature, but they also provide a PGP signature that I can manually verify using a certificate that I get from their code repository.

Other software that I download, such as my tax software, is also signed with a Windows signature but they don't provide a PGP signature that I can verify.

  • Does a Windows Digital Signature and a PGP signature perform the same function?
  • Is one or the other enough to trust that the executable hasn't been tampered with by a third-party? If so, why does some software provide the additional PGP signature and tell me that I need to validate it, if that software is already signed?
Chris.B
  • 123
  • 3

1 Answers1

2

Does a Windows Digital Signature and a PGP signature perform the same function?

Well, yes and no. The windows digital signature you refer to is present because Windows requires all executables to be signed. Otherwise Windows will complain that the executable is from an untrusted publisher and Defender SmartScreen will block it. Windows uses it to verify the that the executable has been signed by a reputable publisher (just signing is not enough, you also need a positive reputation). Of course since its signed, the executables integrity is also verified. Almost.

So if the digital signature on the file already verifies the file's integrity, why use PGP too?

The thing is KeePassXC is software used by security-conscious people. And quite a few of these people are (often right-fully so) extremely paranoid. The problem with the Microsoft Authenticode certificates used to sign executables is that they are issued by CAs trusted by Windows. And CAs can (and have in the past) be hacked or go rogue. So if a CA was compromised, went rogue or forced by a government, they could issue a fake Authenticode certificate under KeePass's name. Then any software signed with it would pass as verified KeePass code, and a fake backdoored but signed version can be distributed to users. That's a risk the paranoid folks would rather not take.

So the solution is to sign it with their own PGP key as well. Now anybody who verifies the PGP signature on the executable can be sure they aren't using a backdoored version signed using a fraudulent certificate.

nobody
  • 11,251
  • 1
  • 41
  • 60
  • 1
    Thank you, this is a great explanation. So the MS certificate helps to establish that the company that created the executable is legit, but involves a CA so I can't be sure the executable is 100% trustworthy. The PGP key assumes that I trust the company making the software and I just want to make absolutely sure that the executable came from them. – Chris.B Mar 03 '21 at 23:50
  • I guess if I assume that the most likely entity to corrupt a CA is the government, I don't have to worry much about my tax software, since they wouldn't have much reason to modify that. – Chris.B Mar 03 '21 at 23:53