RFC 1423

Privacy Enhancement for Internet Electronic Mail: Part III: Algorithms, Modes, and Identifiers

๐Ÿ“… published February 1993, from ietf

Title Block Tea โ˜•๐Ÿ’–

Okay bestie, this is RFC 1423 from the Network Working Group ๐ŸŽ€. D. Balenson at TIS wrote it, with the IAB IRTF PSRG and the IETF PEM WG credited alongside. It's dated February 1993 and it's an IAB standards track protocol ๐Ÿฆ‹. It obsoletes RFC 1115 ๐Ÿ’…, and it doesn't list any updates. The title is Privacy Enhancement for Internet Electronic Mail: Part III: Algorithms, Modes, and Identifiers โœจ.

Status of This Memo ๐Ÿ“Œ

This RFC specifies an IAB standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements ๐Ÿ’ฌ. For the standardization state and status of this protocol, check the current edition of the "IAB Official Protocol Standards" ๐Ÿง. Distribution of this memo is unlimited ๐ŸŒˆ.

Abstract ๐Ÿงš

This document gives the definitions, formats, references, and citations for cryptographic algorithms, usage modes, and the identifiers and parameters that support Privacy Enhanced Mail (PEM) across the Internet community ๐Ÿ”. It's meant to be one member of the set of related PEM RFCs ๐Ÿซถ. It's organized into four main sections: message encryption algorithms, message integrity check algorithms, symmetric key management algorithms, and asymmetric key management algorithms (covering both asymmetric encryption and asymmetric signature algorithms) ๐Ÿ’œ.

Some parts of this material get cited by other documents, and some of it might be changed, added, or replaced without affecting those citing documents ๐Ÿ”„. That's why the algorithm-specific material lives in its own separate document ๐Ÿงฉ.

Using other algorithms and/or modes will need a case-by-case study to figure out applicability and constraints ๐Ÿ”. Additional algorithms may first be documented in Prototype or Experimental RFCs ๐Ÿงช. As experience builds up, those protocols may be considered for the standard ๐Ÿ“ˆ. Additional algorithms and modes approved for PEM use in this context will be specified in successors to this document ๐Ÿ‘‘.

Acknowledgments ๐Ÿ™Œ

This spec was first developed by the Internet Research Task Force's Privacy and Security Research Group (IRTF PSRG), then refined based on discussion in the Internet Engineering Task Force's Privacy Enhanced Mail Working Group (IETF PEM WG) ๐ŸŒธ. John Linn did a lot of work on the predecessor of this document (RFC 1115) ๐Ÿ“. Thank you to the PSRG and PEM WG members, and to everyone who joined the "pem-dev@tis.com" mailing list discussions, for their contributions ๐Ÿ’–.

Table of Contents ๐Ÿ—บ๏ธ

   1.  Message Encryption Algorithms ....................... 2
   1.1  DES in CBC Mode (DES-CBC) .......................... 2
   2.  Message Integrity Check Algorithms .................. 4
   2.1  RSA-MD2 Message Digest Algorithm ................... 4
   2.2  RSA-MD5 Message Digest Algorithm ................... 5
   3.  Symmetric Key Management Algorithms ................. 6
   3.1  DES in ECB mode (DES-ECB) .......................... 6
   3.2  DES in EDE mode (DES-EDE) .......................... 7
   4.  Asymmetric Key Management Algorithms ................ 7
   4.1  Asymmetric Keys .................................... 7
   4.1.1  RSA Keys ......................................... 7
   4.2  Asymmetric Encryption Algorithms ..................  9
   4.2.1  RSAEncryption ...................................  9
   4.3  Asymmetric Signature Algorithms ................... 10
   4.3.1  md2WithRSAEncryption ............................ 11
   5.  Descriptive Grammar ................................ 11
   References ............................................. 12
   Patent Statement ....................................... 13
   Security Considerations ................................ 14
   Author's Address ....................................... 14

1. Message Encryption Algorithms ๐Ÿ”โœจ

This section names the alternative message encryption algorithms and modes that SHALL be used to encrypt message text. It also covers encrypting message signatures when asymmetric key management is used in an ENCRYPTED PEM message ๐Ÿ’…. Character string identifiers get assigned here, and any parameters the message encryption algorithm needs get defined so they can go into an encapsulated DEK-Info: header field ๐ŸŽ€.

Only one alternative is currently defined in this category ๐Ÿฆ‹.

1.1. DES in CBC Mode (DES-CBC) ๐Ÿ’–

Message text, and message signatures when required, get encrypted with the Data Encryption Standard (DES) algorithm in the Cipher Block Chaining (CBC) mode of operation ๐ŸŒˆ. DES is defined in FIPS PUB 46-1 [1], and it's equivalent to the Data Encryption Algorithm (DEA) in ANSI X3.92-1981 [2]. The CBC mode of DES is defined in FIPS PUB 81 [3], and it's equivalent to the ones in ANSI X3.106 [4] and ISO IS 8372 [5]. The character string DES-CBC inside an encapsulated PEM header field means this algorithm/mode combo is in use ๐Ÿซถ.

The input to the DES CBC encryption process SHALL be padded to a multiple of 8 octets, like this ๐Ÿง. Let n be the length in octets of the input. Pad the input by appending 8-(n mod 8) octets to the end of the message, each one having the value 8-(n mod 8), which is the number of octets being added. In hexadecimal, the possible paddings are: 01, 0202, 030303, 04040404, 0505050505, 060606060606, 07070707070707, and 0808080808080808. All input gets padded with 1 to 8 octets so the result is a multiple of 8 octets in length ๐Ÿ’ซ. The padding can be removed unambiguously after decryption โœจ.

The DES CBC encryption process needs a 64-bit cryptographic key. A new, pseudorandom key SHALL be generated for each ENCRYPTED PEM message ๐Ÿ”‘. Of those 64 bits, 56 are used directly by the DES CBC process, and 8 are odd parity bits, with one parity bit sitting in the right-most bit of each octet ๐Ÿง . When symmetric key management is used, setting and checking the odd parity bits is encouraged, since those bits could catch an error in decrypting a DES key that was encrypted under a symmetric key management algorithm (for example, DES ECB) ๐Ÿ•ต๏ธโ€โ™€๏ธ. When asymmetric key management is used, setting the odd parity bits is encouraged, but checking them is discouraged ๐Ÿ™ˆ. That's to help with interoperability, and because an error in decrypting a DES key can be caught by other means (for example, an incorrect PKCS #1 encryption-block format) ๐ŸŒธ. In every case, the encrypted form of a DES key SHALL carry all 64 bits of the key, including the 8 parity bits, even though those bits may have no meaning ๐ŸŽ€.

The DES CBC encryption process also needs a 64-bit Initialization Vector (IV) ๐Ÿงš. A new, pseudorandom IV SHALL be generated for each ENCRYPTED PEM message ๐Ÿ’œ. Section 4.3.1 of [7] explains the reasoning behind this requirement, even though individual DES keys get generated for individual messages ๐Ÿ“š. The IV travels with the message inside an encapsulated PEM header field ๐Ÿ“ฆ.

When this algorithm/mode combination is used for message text encryption, the DEK-Info: header field carries exactly two arguments ๐Ÿ‘‘. The first argument names the DES CBC algorithm/mode using the character string defined above. The second argument holds the IV, written as a contiguous string of 16 ASCII hexadecimal digits ๐ŸŒท.

When symmetric key management is used with this algorithm/mode combination, a symmetrically encrypted DES key shows up as the third argument of a Key-Info: header field. It's written as a contiguous string of 16 ASCII hexadecimal digits, which corresponds to a 64-bit key ๐Ÿ“.

To avoid any possible confusion about the ordering of the octets of a DES key that gets fed in as a data value to another encryption process (for example, RSAEncryption), the following holds true ๐Ÿ”. The first octet of the key (the left-most one if you think in terms of the key's "print" representation) (For purposes of discussion in this document, data values are normalized in terms of their "print" representation. For an octet stream, the "first" octet would appear as the one on the "left", and the "last" octet would appear on the "right".) (that's bits 1-8 per FIPS PUB 46-1), when treated as a data value, has numerical weight 2**56 ๐Ÿงฎ. The last octet (the right-most one displayed, which is bits 57-64 per FIPS PUB 46-1) has numerical weight 2**0 ๐ŸŒˆ.

2. Message Integrity Check Algorithms ๐Ÿ›ก๏ธ๐Ÿ’…

This section names the alternative algorithms that SHALL be used to compute Message Integrity Check (MIC) values for PEM messages ๐Ÿ”’. Character string identifiers and ASN.1 object identifiers get assigned here so they can go into encapsulated MIC-Info: and Key-Info: header fields, which show which MIC algorithm was used ๐Ÿฆ‹.

A compliant PEM implementation SHALL be able to process all of the alternative MIC algorithms defined here on incoming messages ๐Ÿ’–. It's up to the sender which alternative gets used on an outbound message ๐ŸŽ€.

2.1. RSA-MD2 Message Digest Algorithm ๐ŸŒธ

The RSA-MD2 message digest is computed with the algorithm defined in RFC 1319 [9]. ( An error has been identified in RFC 1319. The statement in the text of Section 3.2 which reads "Set C[j] to S[c xor L]" should read "Set C[j] to S[c xor L] xor C[j]". Note that the C source code in the appendix of RFC 1319 is correct.) ๐Ÿ™ƒ The character string RSA-MD2 inside an encapsulated PEM header field means this algorithm is in use ๐Ÿซถ. Also, as RFC 1319 defines, the ASN.1 object identifier

  md2 OBJECT IDENTIFIER ::= {
      iso(1) member-body(2) US(840) rsadsi(113549)
      digestAlgorithm(2) 2
  }

identifies this algorithm ๐Ÿง . When this object identifier is used with the ASN.1 type AlgorithmIdentifier, the parameters component of that type is the ASN.1 type NULL ๐ŸŒŸ.

The RSA-MD2 message digest algorithm takes a message of any length as input and gives back a 16-octet quantity as output ๐Ÿ’ซ. When symmetric key management is used, an RSA-MD2 MIC gets encrypted by splitting the MIC into two 8-octet halves, encrypting each half independently, and then concatenating the results ๐Ÿ”.

When symmetric key management is used with this MIC algorithm, the symmetrically encrypted MD2 message digest shows up in the fourth argument of a Key-Info: header field ๐Ÿ“. It's written as a contiguous string of 32 ASCII hexadecimal digits, which corresponds to a 128-bit MD2 message digest ๐Ÿง.

To avoid any possible confusion about the ordering of the octets of an MD2 message digest that gets fed in as a data value to another encryption process (for example, RSAEncryption), the following holds true ๐Ÿ”. The first octet of the digest (the left-most one if you think in terms of the digest's "print" representation), which is digest[0] as specified in RFC 1319, has numerical weight 2**120 when treated as an RSA data value ๐Ÿงฎ. The last octet of the digest (the right-most one displayed, which is digest[15] as specified in RFC 1319) has numerical weight 2**0 ๐ŸŒˆ.

2.2. RSA-MD5 Message Digest Algorithm โœจ

okay bestie, the RSA-MD5 message digest is computed with the algorithm from RFC 1321 [10] ๐Ÿ’… the string "RSA-MD5" in an encapsulated PEM header field is how you say you're using it ๐ŸŽ€. As RFC 1321 defines, the object identifier below also identifies this algorithm ๐Ÿ”ฅ

     md5 OBJECT IDENTIFIER ::= {
         iso(1) member-body(2) US(840) rsadsi(113549)
         digestAlgorithm(2) 5
     }

When you use this OID with the ASN.1 type AlgorithmIdentifier, the parameters component of that type is the ASN.1 type NULL ๐Ÿ’œ.

The RSA-MD5 message digest algorithm takes in a message of any length and spits out a 16-octet quantity ๐Ÿฆ‹. When symmetric key management is in play, an RSA-MD5 MIC gets encrypted by splitting it into two 8-octet halves, encrypting each half on its own, and then concatenating the results ๐Ÿงš

When symmetric key management is used with this MIC algorithm, the symmetrically encrypted MD5 message digest goes in the fourth argument of a "Key-Info:" header field. It's a contiguous string of 32 ASCII hexadecimal digits, which matches a 128-bit MD5 message digest ๐ŸŒธ

Now the ordering part, which is kinda confusing but so important ๐Ÿ™ˆ To avoid any ambiguity about the octet order of an MD5 digest used as an RSA data value, here's the deal. The first octet (the left-most one if you think of the digest's "print" representation, which is the low-order octet of A from RFC 1321) has numerical weight 2**120 when it's treated as an RSA data value. The last octet (the right-most one, which is the high-order octet of D from RFC 1321) has numerical weight 2**0 โœจ


3. Symmetric Key Management Algorithms ๐Ÿ”

This section lists the alternative algorithms and modes that SHALL be used when symmetric key management is employed, to encrypt data encryption keys (DEKs) and message integrity check (MIC) values ๐Ÿ’–. Character string identifiers get assigned so they can be dropped into encapsulated "Key-Info:" header fields, which tells everyone which algorithm was picked ๐ŸŽ€

Every alternative defined in this category is a different usage mode of the DES algorithm, not some other algorithm entirely ๐ŸŒˆ

When symmetric key management is employed, the symmetrically encrypted DEK and MIC go in the third and fourth arguments of a "Key-Info:" header field, respectively. Each one is a string of contiguous ASCII hexadecimal digits ๐Ÿ“. How you use these symmetric encryption algorithms, and how long the encrypted DEK and MIC end up, may vary depending on how long the underlying DEK and MIC are ๐Ÿฆ‹. Section 1, Message Encryption Algorithms, and Section 2, Message Integrity Check Algorithms, explain the right way to encrypt a DEK and a MIC (respectively) when their size doesn't match the symmetric encryption algorithm's input block size. Those sections also explain the proper format and length of the encrypted DEK and MIC (respectively) โœจ

3.1. DES in ECB Mode (DES-ECB)

The DES algorithm in Electronic Codebook (ECB) mode [1][3] is used for DEK and MIC encryption when symmetric key management is employed ๐Ÿ’œ. The character string "DES-ECB" in an encapsulated PEM header field means this algorithm/mode combo is in use ๐Ÿซถ

A compliant PEM implementation supporting symmetric key management SHALL support this algorithm/mode combination. ๐Ÿ”ฅ

3.2. DES in EDE Mode (DES-EDE)

The DES algorithm in Encrypt-Decrypt-Encrypt (EDE) multiple encryption mode is defined by ANSI X9.17 [6] for encryption and decryption using pairs of 64-bit keys ๐ŸŒธ. It MAY be used for DEK and MIC encryption when symmetric key management is employed. The character string "DES-EDE" within an encapsulated a PEM header field indicates use of this algorithm/mode combination ๐ŸŽ€

A compliant PEM implementation supporting symmetric key management MAY optionally support this algorithm/mode combination ๐Ÿ™ˆ


4. Asymmetric Key Management Algorithms ๐Ÿ—๏ธ

This section lists the alternative asymmetric keys, and the alternative asymmetric key management algorithms those keys SHALL be used with ๐Ÿ’…. That covers the asymmetric encryption algorithms that encrypt DEKs and MICs, and the asymmetric signature algorithms that sign certificates and certificate revocation lists (CRLs) ๐Ÿงš

4.1. Asymmetric Keys

This section describes the asymmetric keys that SHALL be used with the asymmetric encryption algorithms and the signature algorithms covered later ๐Ÿฆ‹. ASN.1 object identifiers get identified for putting in a public-key certificate, so you can tell which algorithm(s) the public key is meant to be used with ๐ŸŒˆ

4.1.1. RSA Keys

An RSA asymmetric key pair is made of matching public and private keys ๐Ÿ’–

An RSA public key has an encryption exponent e and an arithmetic modulus n. Both are public, and they usually come in a public-key certificate ๐Ÿซถ. For e, Annex C to X.509 suggests Fermat's Number F4 (65537 decimal, or 1+2**16), which it calls a value "common to the whole environment in order to reduce transmission capacity and complexity of transformation". That means e can be sent as 3 octets, and at most seventeen (17) multiplications are needed to do the exponentiation ๐Ÿ“. The number three (3) can also be used for e instead. It needs even fewer octets to send and gives even faster exponentiation ๐Ÿ”ฅ. For PEM, e SHALL be either F4 or the number three (3). Using three (3) for e is encouraged, because it makes certificate validation quick ๐ŸŒธ

An RSA private key has a decryption exponent d, which SHOULD be kept secret, plus the arithmetic modulus n ๐Ÿ”. Other values MAY be stored with a private key to make private key operations more efficient (see PKCS #1 [11]) โœจ

For PEM, the modulus n MAY vary in size from 508 to 1024 bits ๐Ÿ’…

Two ASN.1 object identifiers have been defined for RSA public keys ๐Ÿ‘‘. In Annex H of X.509 [8], this object identifier:

     rsa OBJECT IDENTIFIER ::= {
         joint-iso-ccitt(2) ds(5) algorithm(8)
         encryptionAlgorithm(1) 1
     }

identifies an RSA public key. It has one parameter, KeySize, which is the length of the public key modulus in bits. When this OID is used with the ASN.1 type AlgorithmIdentifier, the parameters component is the number of bits in the modulus, ASN.1 encoded as an INTEGER ๐Ÿฆ‹

Alternatively, PKCS #1 [11] defines this ASN.1 object identifier:

     rsaEncryption OBJECT IDENTIFIER ::= {
         iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1)
         pkcs-1(1) 1
     }

It identifies both an RSA public key and the RSAEncryption process ๐ŸŒˆ. No parameters are defined for it, so when it's used with the ASN.1 type AlgorithmIdentifier, the parameters component is the ASN.1 type NULL ๐Ÿ’œ

A compliant PEM implementation MAY optionally generate an RSA public-key certificate that identifies the enclosed RSA public key (within the SubjectPublicKeyInformation component) with either the "rsa" or the "rsaEncryption" object identifier ๐Ÿงš. Using the "rsa" OID is encouraged, since it's kinda more generic about the key, without saying how the key will be used ๐ŸŽ€. But for interoperability, a compliant PEM implementation SHALL accept RSA public-key certificates that identify the enclosed RSA public key with either the "rsa" or the "rsaEncryption" object identifier ๐Ÿซถ. In every case, an RSA public key identified in an RSA public-key certificate with either OID SHALL be used according to the procedures defined below for asymmetric encryption algorithms and asymmetric signature algorithms ๐Ÿ’…

4.2. Asymmetric Encryption Algorithms

This section lists the alternative algorithms that SHALL be used when asymmetric key management is employed, to encrypt DEKs and MICs ๐Ÿ”ฅ. Character string identifiers get assigned for "MIC-Info:" and "Key-Info:" header fields, to show which algorithm was chosen ๐ŸŒธ

Only one alternative is defined in this category so far ๐Ÿ“

4.2.1. RSAEncryption

okay bestie, RSAEncryption ๐Ÿ” The RSAEncryption public-key encryption algorithm, defined in PKCS #1 [11], is used for DEK and MIC encryption when asymmetric key management is employed. The character string "RSA" within a "MIC-Info:" or "Key-Info:" header field indicates the use of this algorithm.

All PEM implementations supporting asymmetric key management SHALL support this algorithm. no exceptions, it's giving mandatory ๐Ÿ’…

As described in PKCS #1, all quantities input as data values to the RSAEncryption process SHALL be properly justified and padded to the length of the modulus prior to the encryption process. In general, an RSAEncryption input value is formed by concatenating a leading NULL octet, a block type BT, a padding string PS, a NULL octet, and the data quantity D, that is:

     RSA input value = 0x00 || BT || PS || 0x00 || D.

To prepare a DEK for RSAEncryption, the PKCS #1 "block type 02" encryption-block formatting scheme is employed. The block type BT is a single octet containing the value 0x02, and the padding string PS is one or more octets (enough octets to make the length of the complete RSA input value equal to the length of the modulus), each containing a pseudorandomly generated, non-zero value. For multiple recipient messages, a different, pseudorandom padding string SHOULD be used for each recipient. this is the part where you stay unpredictable, iykyk ๐Ÿฆ‹

The data quantity D is the DEK itself, which is right-justified within the RSA input. The last octet of the DEK (the rightmost one when you read the "print" representation) lines up with the right-most, or least-significant, octet of the RSA input. Then you go left, and each remaining octet of the DEK, all the way up to the first (or left-most displayed) octet, gets lined up in the next more significant octet of the RSA input. ๐ŸŒธ

To prepare a MIC for RSAEncryption, the PKCS #1 "block type 01" encryption-block formatting scheme is employed. The block type BT is a single octet containing the value 0x01, and the padding string PS is one or more octets (enough octets to make the length of the complete RSA input value equal to the length of the modulus), each containing the value 0xFF. The data quantity D is made up of the MIC and the MIC algorithm identifier, which are ASN.1 encoded as the following sequence.

     SEQUENCE {
         digestAlgorithm   AlgorithmIdentifier,
         digest            OCTET STRING
     }

The ASN.1 type AlgorithmIdentifier is defined in X.509 as follows.

     AlgorithmIdentifier ::= SEQUENCE {
         algorithm         OBJECT IDENTIFIER,
         parameters        ANY DEFINED BY algorithm OPTIONAL
     }

An RSA input block is encrypted using the RSA algorithm, with the first (or left-most) octet taken as the most significant octet and the last (or right-most) octet taken as the least significant octet. The resulting RSA output block is interpreted in a similar manner. โœจ

When RSAEncryption is used to encrypt a DEK, the second argument in a "MIC-Info:" header field, an asymmetrically encrypted DEK, is represented using the printable encoding technique defined in Section 4.3.2.4 of RFC 1421 [12].

When RSAEncryption is used to sign a MIC, the third argument in a "MIC-Info:" header field, an asymmetrically signed MIC, is represented using the printable encoding technique defined in Section 4.3.2.4 of RFC 1421.


4.3. Asymmetric Signature Algorithms

signing era ๐Ÿ–‹๏ธ This section identifies the alternative algorithms which SHALL be used to asymmetrically sign certificates and certificate revocation lists (CRLs) in accordance with the SIGNED macro defined in Annex G of X.509. ASN.1 object identifiers are identified for incorporation in certificates and CRLs to indicate the choice of algorithm employed.

Only one alternative is presently defined in this category. just one option, so no decision fatigue ๐ŸŒฟ

4.3.1. md2WithRSAEncryption

The md2WithRSAEncryption signature algorithm is used to sign certificates and CRLs. The algorithm is defined in PKCS #1 [11]. It combines the RSA-MD2 message digest algorithm described here in Section 2.2 with the RSAEncryption asymmetric encryption algorithm described here in Section 4.2.1. As defined in PKCS #1, the ASN.1 object identifier below

     md2WithRSAEncryption OBJECT IDENTIFIER ::= {
         iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1)
         pkcs-1(1) 2
     }

identifies this algorithm. When this object identifier is used with the ASN.1 type AlgorithmIdentifier, the parameters component of that type is the ASN.1 type NULL. ๐Ÿ’œ

There is some ambiguity in X.509 about the definition of the SIGNED macro and, in particular, about how a signature is represented in a certificate or a CRL. this is the messy part, not gonna lie ๐Ÿ˜ญ The interpretation selected for PEM requires that the data to be signed (in our case, an MD2 message digest) is first ASN.1 encoded as an OCTET STRING. The result is then encrypted (in our case, using RSAEncryption) to form the signed quantity, which is then ASN.1 encoded as a BIT STRING.


5. Descriptive Grammar โœจ

Here's the official grammar, verbatim, because implementers need every character ๐ŸŽ€

   ; Addendum to PEM BNF representation, using RFC 822 notation
   ; Provides specification for official PEM cryptographic algorithms,
   ; modes, identifiers and formats.

   ; Imports <hexchar> and <encbin> from RFC [1421]

       <dekalgid> ::= "DES-CBC"
       <ikalgid>  ::= "DES-EDE" / "DES-ECB" / "RSA"
       <sigalgid> ::= "RSA"
       <micalgid> ::= "RSA-MD2" / "RSA-MD5"

       <dekparameters> ::= <DESCBCparameters>
       <DESCBCparameters> ::= <IV>
       <IV> ::= <hexchar16>

       <symencdek> ::= <DESECBencDESCBC> / <DESEDEencDESCBC>
       <DESECBencDESCBC> ::= <hexchar16>
       <DESEDEencDESCBC> ::= <hexchar16>

       <symencmic> ::= <DESECBencRSAMD2> / <DESECBencRSAMD5>
       <DESECBencRSAMD2> ::= 2*2<hexchar16>
       <DESECBencRSAMD5> ::= 2*2<hexchar16>

       <asymsignmic> ::= <RSAsignmic>
       <RSAsignmic> ::= <encbin>

       <asymencdek> ::= <RSAencdek>
       <RSAencdek> ::= <encbin>

       <hexchar16> ::= 16*16<hexchar>

References

[1] Federal Information Processing Standards Publication (FIPS PUB) 46-1, Data Encryption Standard, Reaffirmed 1988 January 22 (supersedes FIPS PUB 46, 1977 January 15).

[2] ANSI X3.92-1981, American National Standard Data Encryption Algorithm, American National Standards Institute, Approved 30 December 1980.

[3] Federal Information Processing Standards Publication (FIPS PUB) 81, DES Modes of Operation, 1980 December 2.

[4] ANSI X3.106-1983, American National Standard for Information Systems - Data Encryption Algorithm - Modes of Operation, American National Standards Institute, Approved 16 May 1983.

[5] ISO 8372, Information Processing Systems: Data Encipherment: Modes of Operation of a 64-bit Block Cipher.

[6] ANSI X9.17-1985, American National Standard, Financial Institution Key Management (Wholesale), American Bankers Association, April 4, 1985, Section 7.2.

[7] Voydock, V. L. and Kent, S. T., "Security Mechanisms in High-Level Network Protocols", ACM Computing Surveys, Vol. 15, No. 2, June 1983, pp. 135-171.

[8] CCITT Recommendation X.509, "The Directory - Authentication Framework", November 1988, (Developed in collaboration, and technically aligned, with ISO 9594-8).

[9] Kaliski, B., "The MD2 Message-Digest Algorithm", RFC 1319, RSA Laboratories, April 1992.

[10] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, MIT Laboratory for Computer Science and RSA Data Security, Inc., April 1992.

[11] PKCS #1: RSA Encryption Standard, Version 1.4, RSA Data Security, Inc., June 3, 1991.

[12] Linn, J., "Privacy Enhancement for Internet Electronic Mail: Part I: Message Encryption and Authentication Procedures", RFC 1421, DEC, February 1993.

[13] Kent, S., "Privacy Enhancement for Internet Electronic Mail: Part II: Certificate-Based Key Management", RFC 1422, BBN, February 1993.

[14] Kaliski, B., "Privacy Enhancement for Internet Electronic Mail: Part IV: Key Certification and Related Services", RFC 1424, RSA Laboratories, February 1993.


Patent Statement

okay this section is a lot of legal-speak, but here's the tea ๐Ÿ“ This version of Privacy Enhanced Mail (PEM) depends on patented public key encryption technology for authentication and encryption. Under the Internet Standards Process defined in RFC 1310, the patent holder has to provide a written statement that a license will be made available to applicants under reasonable terms and conditions before a specification gets approved as a Proposed, Draft or Internet Standard.

The Massachusetts Institute of Technology and the Board of Trustees of the Leland Stanford Junior University have granted Public Key Partners (PKP) exclusive sub-licensing rights to the following patents issued in the United States, and all of their corresponding foreign patents:

      Cryptographic Apparatus and Method
      ("Diffie-Hellman")............................... No. 4,200,770

      Public Key Cryptographic Apparatus
      and Method ("Hellman-Merkle").................... No. 4,218,582

      Cryptographic Communications System and
      Method ("RSA")................................... No. 4,405,829

      Exponential Cryptographic Apparatus
      and Method ("Hellman-Pohlig").................... No. 4,424,414

PKP says these patents cover all known methods of practicing the art of Public Key encryption, including the variations collectively known as El Gamal. ๐Ÿซฃ

Public Key Partners has given written assurance to the Internet Society that parties will be able to obtain, under reasonable, nondiscriminatory terms, the right to use the technology covered by these patents. This assurance is documented in RFC 1170, titled "Public Key Standards and Licenses". A copy of the written assurance dated April 20, 1990, may be obtained from the Internet Assigned Number Authority (IANA).

The Internet Society, Internet Architecture Board, Internet Engineering Steering Group and the Corporation for National Research Initiatives take no position on the validity or scope of the patents and patent applications, nor on the appropriateness of the terms of the assurance. The Internet Society and the other groups mentioned above have not made any determination as to any other intellectual property rights which may apply to the practice of this standard. Any further consideration of these matters is the user's own responsibility. ๐Ÿ’ผ


Security Considerations

๐Ÿšจ This entire document is about security. ๐Ÿšจ Like, the whole thing is security, bestie. Keys, padding, signatures, all of it. Handle every detail with care, periodt. ๐Ÿ”๐Ÿ’€

Author's Address

David Balenson Trusted Information Systems 3060 Washington Road Glenwood, Maryland 21738

Phone: 301-854-6889 EMail: balenson@tis.com

and that's the whole spec, we did it ๐ŸŒˆ๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from