794f6694edb14d45d1d3a6b5265d0c702ccb3f5d
[gnupg.git] / doc / OpenPGP
1                     GnuPG and OpenPGP
2                     =================
3
4    See RFC-4880 for a description of OpenPGP.  These notes are older
5    than RFC-4880 and refer to the predecessor of the specs (RFC-2440).
6
7
8   Compatibility Notes
9   ===================
10    GnuPG (>=1.0.3) is in compliance with RFC2440 despite these exceptions:
11
12     * With GnuPG >= 2.1.0 all support for version 3 keys has been
13       removed.  Thus there is no more compatibility with PGP-2.  Users
14       who need to be able to decrypt old PGP 2 messages should use
15       GnuPG 1.4.x along with the option --allow-weak-digest-algos.
16
17     * With GnuPG >= 2.1.0 all signatures (on messages and keys) are
18       created using version 4 signatures.  Support for verifying
19       version 3 signature is still available.
20
21     * (9.2) states that IDEA SHOULD be implemented.  This is not done
22       due to patent problems.
23       UPDATE: Since version 1.4.13 (or GnuPG 2.x with Libgcrypt 1.6)
24               IDEA support has been added to allow decryption of old
25               PGP-2 encrypted material.
26
27    All MAY features are implemented with this exception:
28
29     * multi-part armored messages are not supported.
30       MIME (rfc2015) should be used instead.
31
32    Most of the OPTIONAL stuff is implemented.
33
34    There are a couple of options which can be used to override some
35    RFC requirements.  This is always mentioned with the description
36    of that options.
37
38    A special format of partial packet length exists for v3 packets
39    which can be considered to be in compliance with RFC1991;  this
40    format is only created if a special option is active.
41    UPDATE: This support has been removed with version 1.3.6.
42
43    GnuPG uses a S2K mode of 101 for GNU extensions to the secret key
44    protection algorithms.  This number is not defined in OpenPGP, but
45    given that this number is in a range which is used at many other
46    places in OpenPGP for private/experimental algorithm identifiers,
47    this should be not a too bad choice.  The 3 bytes "GNU" are used to
48    identify this as a GNU extension - see the file DETAILS for a
49    definition of the used data formats.
50
51
52   Some Notes on OpenPGP / PGP Compatibility:
53   ==========================================
54
55      * PGP 5.x does not accept V4 signatures for anything other than
56        key material.  The GnuPG option --force-v3-sigs mimics this
57        behavior.
58
59      * PGP 5.x does not recognize the "five-octet" lengths in
60        new-format headers or in signature subpacket lengths.
61
62      * PGP 5.0 rejects an encrypted session key if the keylength
63        differs from the S2K symmetric algorithm. This is a bug in its
64        validation function.
65
66      * PGP 5.0 does not handle multiple one-pass signature headers and
67        trailers. Signing one will compress the one-pass signed literal
68        and prefix a V3 signature instead of doing a nested one-pass
69        signature.
70
71      * When exporting a private key, PGP 2.x generates the header
72        "BEGIN PGP SECRET KEY BLOCK" instead of "BEGIN PGP PRIVATE KEY
73        BLOCK". All previous versions ignore the implied data type, and
74        look directly at the packet data type.
75
76      * In a clear-signed signature, PGP 5.0 will figure out the correct
77        hash algorithm if there is no "Hash:" header, but it will reject
78        a mismatch between the header and the actual algorithm used. The
79        "standard" (i.e. Zimmermann/Finney/et al.) version of PGP 2.x
80        rejects the "Hash:" header and assumes MD5. There are a number
81        of enhanced variants of PGP 2.6.x that have been modified for
82        SHA-1 signatures.
83
84      * PGP 5.0 can read an RSA key in V4 format, but can only recognize
85        it with a V3 keyid, and can properly use only a V3 format RSA
86        key.
87
88      * Neither PGP 5.x nor PGP 6.0 recognize ElGamal Encrypt and Sign
89        keys. They only handle ElGamal Encrypt-only keys.
90
91
92   Parts of this document are taken from:
93   ======================================
94
95                          OpenPGP Message Format
96                    draft-ietf-openpgp-formats-07.txt
97
98
99    Copyright 1998 by The Internet Society. All Rights Reserved.
100
101    This document and translations of it may be copied and furnished to
102    others, and derivative works that comment on or otherwise explain it
103    or assist in its implementation may be prepared, copied, published
104    and distributed, in whole or in part, without restriction of any
105    kind, provided that the above copyright notice and this paragraph
106    are included on all such copies and derivative works.  However, this
107    document itself may not be modified in any way, such as by removing
108    the copyright notice or references to the Internet Society or other
109    Internet organizations, except as needed for the purpose of
110    developing Internet standards in which case the procedures for
111    copyrights defined in the Internet Standards process must be
112    followed, or as required to translate it into languages other than
113    English.
114
115    The limited permissions granted above are perpetual and will not be
116    revoked by the Internet Society or its successors or assigns.