Is it necessary to sign an encrypted PGP message, or is that redundant?


In cryptography, signing and encrypting are orthogonal.

Encrypting data provides confidentiality: (ideally) only the intended recipient will be able to gain access to the plaintext. Modern message encryption systems are generally designed to be non-malleable, meaning that it is very difficult to change a message. That said, an adversary which is able to intercept and prevent the transmission of the intended message can easily transmit some entirely different message instead, and without out-of-bands verification, there is no way to tell that that happened. Roughly speaking, encryption is the equivalent of an envelope.

Signing data provides authenticity and non-repudiation: (ideally) only the actual sender will be able to produce a valid signature for a given message using their key, and the sender cannot later claim not having made the signature. (Note that especially the latter is not always a desirable property, and there are cryptosystems that are different in that regard, but with secret keys kept secret, this is how OpenPGP signatures work.) A signed message is protected from modifications, but not from reading or parsing by someone with access to it. Roughly speaking, signing is the equivalent of laminating a postcard before sending it. Note that a signed message may be ASCII-armored without being encrypted; ASCII armoring provides no additional confidentiality, as it is merely a different representation of the same data.

Whether you use one, the other, both, (technically: or neither), depends entirely on what you are trying to accomplish by passing the plaintext through an OpenPGP implementation such as PGP or GnuPG.

There are gotchas involved in manually performing the steps of encryption and signing as separate steps, so for best security, if you want to use both, you should use the "encrypt and sign" feature of PGP/GnuPG, rather than first encrypting and then only later signing (or the other way around).

A PGP-encrypted message that isn't signed does not have the authenticity and non-repudiation guarantees that you get by signing and encrypting the same message, similar to how a signed message does not have the confidentiality guarantees you get by signing and encrypting.


The encryption secures the data from people that cannot decrypt it. The signature is so that the receivers can verify that the message really came from the sender (non-repudiation).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.