One document matched: draft-elkins-pem-pgp-01.txt
Differences from draft-elkins-pem-pgp-00.txt
INTERNET DRAFT Michael Elkins
draft-elkins-pem-pgp-01.txt The Aerospace Corporation
elkins@aero.org
September 1995
MIME Security with Pretty Good Privacy (PGP)
Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet- Drafts as
reference material or to cite them other than as ``work in
progress.''
To learn the current status of any Internet-Draft, please check the
``1id-abstracts.txt'' listing contained in the Internet- Drafts
Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
ftp.isi.edu (US West Coast).
Abstract
This document describes how Pretty Good Privacy (PGP) can be used to
provide privacy and authentication using the Multipurpose Internet
Mail Extensions (MIME) security content types described in RFCXXXX
(draft-ietf-pem-sigenc-03.txt).
1. Introduction
This document is based on RFCXXXX [1] which defines security
mechanisms for MIME messages, and specifically addresses how PGP can
be used within this framework in order to effect it. This document
is styled after RFCXXXX [2], which defines MIME Object Security
Services (MOSS) for providing security and authentication. This
work was prompted by the fact that implementations of MOSS may not
be available outside of the U.S. because of export restrictions.
PGP, on the other hand, is widely available throughout the world
(with a few notable exceptions), and is gaining support as the de-
facto standard for electronic mail privacy. This document defines
three new content types form implementing security and privacy with
Elkins Expires: March 1996 [Page 1]
INTERNET DRAFT MIME Security with PGP September, 1995
PGP: application/pgp-encrypted, application/pgp-signature and
application/pgp-keys.
2. PGP data formats
PGP can generate either ascii armor (described in [3]) or 8 bit
binary output when encrypting data, generating a digital signature,
or extracting public key data. Except where noted, the ascii armor
output is the preferred method for data transfer. This allows those
users who do not have the means to interpret the formats described
in this document to be able extract and use the PGP information in
the message.
Ascii armor output should NEVER be BASE64 or QUOTED-PRINTABLE
encoded since it is already in 7 bit format.
When 8 bit to 7 bit conversion of PGP data is necessary, BASE64
encoding is the preferred method.
3. PGP encrypted data
Before encryption with PGP, the data should be written in MIME
canonical format (body and headers). This MIME body is constrained
to 7 bit format.
PGP encrypted data is denoted by the "multipart/encrypted" content
type, described in [1], and REQUIRES a "protocol" parameter value of
"application/pgp-encrypted". Note that the value of the parameter
MUST be enclosed in quotes. The "multipart/encrypted" data is
constrained to 7 bit format.
The multipart/encrypted MUST consist of exactly two parts. The
first MIME body part must have a content type of "application/pgp-
encrypted". The data portion of the body may be zero length or
contain human readable information about the encrypted data.
The second MIME body part MUST contain the actual encrypted data.
It must be labeled with a content type of "application/octet-
stream", and is REQUIRED to be in 7 bit format.
Example message:
From: Michael Elkins <elkins@aero.org>
To: Michael Elkins <elkins@aero.org>
Mime-Version: 1.0
Content-Type: multipart/encrypted; boundary=foo;
protocol="application/pgp-encrypted"
Content-Transfer-Encoding: 7bit
Elkins Expires: March 1996 [Page 2]
INTERNET DRAFT MIME Security with PGP September, 1995
--foo
Content-Type: application/pgp-encrypted
--foo
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
-----BEGIN PGP MESSAGE-----
...
-----END PGP MESSAGE-----
--foo--
4. PGP signed data
Prior to generating the PGP signature, the following steps MUST be
taken to ensure a valid signature:
(1) The data to be signed MUST be written in MIME canonical format,
including the appropriate set of of headers.
(2) The data MUST be constrained to 7 bit format.
(3) The data MUST use the canonical CRLF sequence to denote the end
of a line, regardless of the local newline convention.
PGP signed messages are denoted by the "multipart/signed" content
type, described in [1], and REQUIRE the "protocol" parameter to have
a value of "application/pgp-signature" (MUST be quoted), and the
"micalg" parameter to have a value of "pgp-md5".
The multipart/signed body MUST consist of exactly two parts, the
first of which MUST be the signed data in the form described above.
The second body MUST contain the PGP digital signature. It MUST be
labeled with a content type of "application/pgp-signature", and is
REQUIRED to be in 7 bit format.
When the PGP digital signature is generated:
(1) As described in [1], the digital signature MUST be calculated
over both the headers AND the data to be signed.
(2) The signature MUST be generated detached from the signed data
so that the process does not alter the signed data in any way.
Example message:
From: Michael Elkins <elkins@aero.org>
Elkins Expires: March 1996 [Page 3]
INTERNET DRAFT MIME Security with PGP September, 1995
To: Michael Elkins <elkins@aero.org>
Mime-Version: 1.0
Content-Type: multipart/signed; protocol="application/pgp-signature";
boundary=bar; micalg=pgp-md5
--bar
Content-Type: text/plain; charset=us-ascii
Did you know that talking to yourself is a sign of senility?
--bar
Content-Type: application/pgp-signature
Content-Transfer-Encoding: base64
iQCVAwUAMGoCuGN9oWBghPDJAQEiDAP9HEO6X+lKvZ67gsg9i/VPOaroF4+FS/6L92oy
Kmk0+i75joY/3KZdmwhhEPr+qMxbJROmsAhH294zPzftv6OwATbe2UkBJwv7gtsJxU/8
i07ZMA4m 6ALBRHu7qrF3aOK6bSS4qDqlss+2JLZ0CjgQysxAeDT9x7WNl567mht
+uiw=
--bar--
Implementor's note: when verifying a digital signature, it is VERY
important that the message uses the canonical CRLF as the end line
sequence. Depending on your local convention, the CRLF may have
been converted to a different sequence during transmission, which
could cause the signature verification to fail. Therefore, if the
message has been altered, it MUST be written in the canonical form
before the signature is checked in order to ensure verification.
Though not required, it is generally a good idea to use QUOTED-
PRINTABLE encoding in the first step (writing out the data to be
signed in MIME canonical format) if any of the lines in the data
begin with "From ", and encode the "F". This will avoid an MTA
inserting a ">" in front of the line, thus invalidating the
signature!
5. Encrypted and Signed Data
Sometimes it is desirable to to both digitally sign and then encrypt
a message to be sent. In [1], it is stated that the data should
first be signed as a multipart/signature body, and then encrypted to
form the final multipart/encrypted body, ie.,
Content-Type: multipart/encrypted;
protocol="application/pgp-encrypted"; boundary=foo
--foo
Content-Type: application/pgp-encrypted
Elkins Expires: March 1996 [Page 4]
INTERNET DRAFT MIME Security with PGP September, 1995
--foo
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
& Content-Type: multipart/signed; micalg=pgp-md5
& protocol="application/pgp-signature"; boundary=bar
&
& --bar
& Content-Type: text/plain
&
& This message was first signed, and then encrypted.
&
& --bar
& Content-Type: application/pgp-signature
& Content-Transfer-Encoding: base64
&
& iQCVAwUAMGoCuGN9oWBghPDJAQEiDAP9HEO6X+lKvZ67gsg9i/VPOaroF4+F
& S/6L92oyKmk0+i75joY/3KZdmwhhEPr+qMxbJROmsAhH294zPzftv6OwATbe
& 2UkBJwv7gtsJxU/8i07ZMA4m 6ALBRHu7qrF3aOK6bSS4qDqlss+2JLZ0Cjg
& ysxAeDT9x7WNl567mht+uiw=
& --bar--
--foo--
(The text preceded by '&' indicates that it is really
encrypted, but presented as text for clarity.)
6. Distribution of PGP public keys
Content-Type: application/pgp-keys
Required parameters: none
Optional parameters: none
This is the content type which should be used for relaying public
key blocks. Ascii armor output and 7BIT encoding are HIGHLY
recommended.
7. Notes
PGP and Pretty Good Privacy are trademarks of Philip Zimmermann.
References
[1] James Galvin, Gale Murphy, Steve Crocker, Ned Freed. Security
Multiparts for MIME: Multipart/Signed and Multipart/Encrypted.
RFCXXXX (draft-ietf-pem-sigenc-03.txt), 1994
[2] James Galvin, Gale Murphy, Steve Crocker, Ned Freed. MIME Object
Elkins Expires: March 1996 [Page 5]
INTERNET DRAFT MIME Security with PGP September, 1995
Security Services. RFCXXXX (draft-ietf-pem-mime-08.txt), 1995
[3] Derek Atkins, William Stallings, Philip Zimmermann. PGP Message
Exchange Formats. draft-pgp-pgpformat-00.txt, 1995
Elkins Expires: March 1996 [Page 6]
| PAFTECH AB 2003-2026 | 2026-04-24 08:26:36 |