In the OpenPGP format (that PGP implements), a given email can be encrypted for several recipient with only minute per-recipient size overhead. This is because email encryption actually uses hybrid encryption:
- A new random symmetric key K is generated for the email to encrypt.
- The bulk of the email is encrypted with a symmetric encryption algorithm, using K as key.
- The key K is asymmetrically encrypted with the RSA or ElGamal public key of the recipient.
This is done because asymmetric encryption (RSA, ElGamal) is very limited in processable size, and is also computationally expensive, whereas the symmetric encryption algorithm has no problem processing megabytes of data.
In that setup, if you send the same email to two recipients, then the symmetric encryption with K is done only once; but the key K will be encrypted twice, once with the public key of the first recipient, and once with the public key of the second recipient. Each recipient thus adds only a few hundred bytes to the encrypted email. This is how a "Cc:" can work. Note that it reveals to each recipient who also got the email.
This "Cc:" mechanism is also used when there is only one apparent recipient, because PGP takes care to encrypt the email for both the intended recipient, and yourself -- so that you can later on re-read your own emails from your "Sent" folder. So a basic PGP email already has two recipients.
To:
andCc:
fields are part of the message, and are distinct from the SMTPRCPT TO
envelope fields. With or without encryption, SMTP will need to send a copy of the entire message to every recipient. Think ofTo:
andCc:
as headings you write on a letter, and when you cc you photocopy it and put it in two envelopes with different addresses. When you encrypt individually you only encrypt the message (letter) (including bothTo:
andCc:
), which does not affect how SMTP (envelope) sends it.