7 Network Working Group B. Kaliski
8 Request for Comments: 2313 RSA Laboratories East
9 Category: Informational March 1998
12 PKCS #1: RSA Encryption
17 This memo provides information for the Internet community. It does
18 not specify an Internet standard of any kind. Distribution of this
23 Copyright (C) The Internet Society (1998). All Rights Reserved.
27 This document describes a method for encrypting data using the RSA
28 public-key cryptosystem.
32 This document describes a method for encrypting data using the RSA
33 public-key cryptosystem. Its intended use is in the construction of
34 digital signatures and digital envelopes, as described in PKCS #7:
36 o For digital signatures, the content to be signed
37 is first reduced to a message digest with a
38 message-digest algorithm (such as MD5), and then
39 an octet string containing the message digest is
40 encrypted with the RSA private key of the signer
41 of the content. The content and the encrypted
42 message digest are represented together according
43 to the syntax in PKCS #7 to yield a digital
44 signature. This application is compatible with
45 Privacy-Enhanced Mail (PEM) methods.
47 o For digital envelopes, the content to be enveloped
48 is first encrypted under a content-encryption key
49 with a content-encryption algorithm (such as DES),
50 and then the content-encryption key is encrypted
51 with the RSA public keys of the recipients of the
52 content. The encrypted content and the encrypted
58 Kaliski Informational [Page 1]
60 RFC 2313 PKCS #1: RSA Encryption March 1998
63 content-encryption key are represented together
64 according to the syntax in PKCS #7 to yield a
65 digital envelope. This application is also
66 compatible with PEM methods.
68 The document also describes a syntax for RSA public keys and private
69 keys. The public-key syntax would be used in certificates; the
70 private-key syntax would be used typically in PKCS #8 private-key
71 information. The public-key syntax is identical to that in both X.509
72 and Privacy-Enhanced Mail. Thus X.509/PEM RSA keys can be used in
75 The document also defines three signature algorithms for use in
76 signing X.509/PEM certificates and certificate-revocation lists, PKCS
77 #6 extended certificates, and other objects employing digital
78 signatures such as X.401 message tokens.
80 Details on message-digest and content-encryption algorithms are
81 outside the scope of this document, as are details on sources of the
82 pseudorandom bits required by certain methods in this document.
86 FIPS PUB 46-1 National Bureau of Standards. FIPS PUB 46-1:
87 Data Encryption Standard. January 1988.
89 PKCS #6 RSA Laboratories. PKCS #6: Extended-Certificate
90 Syntax. Version 1.5, November 1993.
92 PKCS #7 RSA Laboratories. PKCS #7: Cryptographic Message
93 Syntax. Version 1.5, November 1993.
95 PKCS #8 RSA Laboratories. PKCS #8: Private-Key Information
96 Syntax. Version 1.2, November 1993.
98 RFC 1319 Kaliski, B., "The MD2 Message-Digest
99 Algorithm," RFC 1319, April 1992.
101 RFC 1320 Rivest, R., "The MD4 Message-Digest
102 Algorithm," RFC 1320, April 1992.
104 RFC 1321 Rivest, R., "The MD5 Message-Digest
105 Algorithm," RFC 1321, April 1992.
107 RFC 1423 Balenson, D., "Privacy Enhancement for
108 Internet Electronic Mail: Part III: Algorithms,
109 Modes, and Identifiers," RFC 1423, February 1993.
114 Kaliski Informational [Page 2]
116 RFC 2313 PKCS #1: RSA Encryption March 1998
119 X.208 CCITT. Recommendation X.208: Specification of
120 Abstract Syntax Notation One (ASN.1). 1988.
122 X.209 CCITT. Recommendation X.209: Specification of
123 Basic Encoding Rules for Abstract Syntax Notation
126 X.411 CCITT. Recommendation X.411: Message Handling
127 Systems: Message Transfer System: Abstract Service
128 Definition and Procedures.1988.
130 X.509 CCITT. Recommendation X.509: The Directory--
131 Authentication Framework. 1988.
133 [dBB92] B. den Boer and A. Bosselaers. An attack on the
134 last two rounds of MD4. In J. Feigenbaum, editor,
135 Advances in Cryptology---CRYPTO '91 Proceedings,
136 volume 576 of Lecture Notes in Computer Science,
137 pages 194-203. Springer-Verlag, New York, 1992.
139 [dBB93] B. den Boer and A. Bosselaers. Collisions for the
140 compression function of MD5. Presented at
141 EUROCRYPT '93 (Lofthus, Norway, May 24-27, 1993).
143 [DO86] Y. Desmedt and A.M. Odlyzko. A chosen text attack
144 on the RSA cryptosystem and some discrete
145 logarithm schemes. In H.C. Williams, editor,
146 Advances in Cryptology---CRYPTO '85 Proceedings,
147 volume 218 of Lecture Notes in Computer Science,
148 pages 516-521. Springer-Verlag, New York, 1986.
150 [Has88] Johan Hastad. Solving simultaneous modular
151 equations. SIAM Journal on Computing,
152 17(2):336-341, April 1988.
154 [IM90] Colin I'Anson and Chris Mitchell. Security defects
155 in CCITT Recommendation X.509--The directory
156 authentication framework. Computer Communications
157 Review, :30-34, April 1990.
159 [Mer90] R.C. Merkle. Note on MD4. Unpublished manuscript,
162 [Mil76] G.L. Miller. Riemann's hypothesis and tests for
163 primality. Journal of Computer and Systems
164 Sciences, 13(3):300-307, 1976.
170 Kaliski Informational [Page 3]
172 RFC 2313 PKCS #1: RSA Encryption March 1998
175 [QC82] J.-J. Quisquater and C. Couvreur. Fast
176 decipherment algorithm for RSA public-key
177 cryptosystem. Electronics Letters, 18(21):905-907,
180 [RSA78] R.L. Rivest, A. Shamir, and L. Adleman. A method
181 for obtaining digital signatures and public-key
182 cryptosystems. Communications of the ACM,
183 21(2):120-126, February 1978.
187 For the purposes of this document, the following definitions apply.
189 AlgorithmIdentifier: A type that identifies an algorithm (by object
190 identifier) and associated parameters. This type is defined in X.509.
192 ASN.1: Abstract Syntax Notation One, as defined in X.208.
194 BER: Basic Encoding Rules, as defined in X.209.
196 DES: Data Encryption Standard, as defined in FIPS PUB 46-1.
198 MD2: RSA Data Security, Inc.'s MD2 message-digest algorithm, as
201 MD4: RSA Data Security, Inc.'s MD4 message-digest algorithm, as
204 MD5: RSA Data Security, Inc.'s MD5 message-digest algorithm, as
207 modulus: Integer constructed as the product of two primes.
209 PEM: Internet Privacy-Enhanced Mail, as defined in RFC 1423 and
212 RSA: The RSA public-key cryptosystem, as defined in [RSA78].
214 private key: Modulus and private exponent.
216 public key: Modulus and public exponent.
218 4. Symbols and abbreviations
220 Upper-case symbols (e.g., BT) denote octet strings and bit strings
221 (in the case of the signature S); lower-case symbols (e.g., c) denote
226 Kaliski Informational [Page 4]
228 RFC 2313 PKCS #1: RSA Encryption March 1998
231 ab hexadecimal octet value c exponent
232 BT block type d private exponent
233 D data e public exponent
234 EB encryption block k length of modulus in
236 ED encrypted data n modulus
237 M message p, q prime factors of modulus
238 MD message digest x integer encryption block
239 MD' comparative message y integer encrypted data
241 PS padding string mod n modulo n
242 S signature X || Y concatenation of X, Y
243 ||X|| length in octets of X
246 The next six sections specify key generation, key syntax, the
247 encryption process, the decryption process, signature algorithms, and
250 Each entity shall generate a pair of keys: a public key and a private
251 key. The encryption process shall be performed with one of the keys
252 and the decryption process shall be performed with the other key.
253 Thus the encryption process can be either a public-key operation or a
254 private-key operation, and so can the decryption process. Both
255 processes transform an octet string to another octet string. The
256 processes are inverses of each other if one process uses an entity's
257 public key and the other process uses the same entity's private key.
259 The encryption and decryption processes can implement either the
260 classic RSA transformations, or variations with padding.
264 This section describes RSA key generation.
266 Each entity shall select a positive integer e as its public exponent.
268 Each entity shall privately and randomly select two distinct odd
269 primes p and q such that (p-1) and e have no common divisors, and
270 (q-1) and e have no common divisors.
272 The public modulus n shall be the product of the private prime
277 The private exponent shall be a positive integer d such that de-1 is
278 divisible by both p-1 and q-1.
282 Kaliski Informational [Page 5]
284 RFC 2313 PKCS #1: RSA Encryption March 1998
287 The length of the modulus n in octets is the integer k satisfying
289 2^(8(k-1)) <= n < 2^(8k) .
291 The length k of the modulus must be at least 12 octets to accommodate
292 the block formats in this document (see Section 8).
296 1. The public exponent may be standardized in
297 specific applications. The values 3 and F4 (65537) may have
298 some practical advantages, as noted in X.509 Annex C.
300 2. Some additional conditions on the choice of primes
301 may well be taken into account in order to deter
302 factorization of the modulus. These security conditions
303 fall outside the scope of this document. The lower bound on
304 the length k is to accommodate the block formats, not for
309 This section gives the syntax for RSA public and private keys.
311 7.1 Public-key syntax
313 An RSA public key shall have ASN.1 type RSAPublicKey:
315 RSAPublicKey ::= SEQUENCE {
316 modulus INTEGER, -- n
317 publicExponent INTEGER -- e }
319 (This type is specified in X.509 and is retained here for
322 The fields of type RSAPublicKey have the following meanings:
324 o modulus is the modulus n.
326 o publicExponent is the public exponent e.
338 Kaliski Informational [Page 6]
340 RFC 2313 PKCS #1: RSA Encryption March 1998
343 7.2 Private-key syntax
345 An RSA private key shall have ASN.1 type RSAPrivateKey:
347 RSAPrivateKey ::= SEQUENCE {
349 modulus INTEGER, -- n
350 publicExponent INTEGER, -- e
351 privateExponent INTEGER, -- d
354 exponent1 INTEGER, -- d mod (p-1)
355 exponent2 INTEGER, -- d mod (q-1)
356 coefficient INTEGER -- (inverse of q) mod p }
360 The fields of type RSAPrivateKey have the following meanings:
362 o version is the version number, for compatibility
363 with future revisions of this document. It shall
364 be 0 for this version of the document.
366 o modulus is the modulus n.
368 o publicExponent is the public exponent e.
370 o privateExponent is the private exponent d.
372 o prime1 is the prime factor p of n.
374 o prime2 is the prime factor q of n.
376 o exponent1 is d mod (p-1).
378 o exponent2 is d mod (q-1).
380 o coefficient is the Chinese Remainder Theorem
381 coefficient q-1 mod p.
385 1. An RSA private key logically consists of only the
386 modulus n and the private exponent d. The presence of the
387 values p, q, d mod (p-1), d mod (p-1), and q-1 mod p is
388 intended for efficiency, as Quisquater and Couvreur have
389 shown [QC82]. A private-key syntax that does not include
394 Kaliski Informational [Page 7]
396 RFC 2313 PKCS #1: RSA Encryption March 1998
399 all the extra values can be converted readily to the syntax
400 defined here, provided the public key is known, according
401 to a result by Miller [Mil76].
403 2. The presence of the public exponent e is intended
404 to make it straightforward to derive a public key from the
407 8. Encryption process
409 This section describes the RSA encryption process.
411 The encryption process consists of four steps: encryption- block
412 formatting, octet-string-to-integer conversion, RSA computation, and
413 integer-to-octet-string conversion. The input to the encryption
414 process shall be an octet string D, the data; an integer n, the
415 modulus; and an integer c, the exponent. For a public-key operation,
416 the integer c shall be an entity's public exponent e; for a private-
417 key operation, it shall be an entity's private exponent d. The output
418 from the encryption process shall be an octet string ED, the
421 The length of the data D shall not be more than k-11 octets, which is
422 positive since the length k of the modulus is at least 12 octets.
423 This limitation guarantees that the length of the padding string PS
424 is at least eight octets, which is a security condition.
428 1. In typical applications of this document to
429 encrypt content-encryption keys and message digests, one
430 would have ||D|| <= 30. Thus the length of the RSA modulus
431 will need to be at least 328 bits (41 octets), which is
432 reasonable and consistent with security recommendations.
434 2. The encryption process does not provide an
435 explicit integrity check to facilitate error detection
436 should the encrypted data be corrupted in transmission.
437 However, the structure of the encryption block guarantees
438 that the probability that corruption is undetected is less
439 than 2-16, which is an upper bound on the probability that
440 a random encryption block looks like block type 02.
442 3. Application of private-key operations as defined
443 here to data other than an octet string containing a
444 message digest is not recommended and is subject to further
450 Kaliski Informational [Page 8]
452 RFC 2313 PKCS #1: RSA Encryption March 1998
455 4. This document may be extended to handle data of
456 length more than k-11 octets.
458 8.1 Encryption-block formatting
460 A block type BT, a padding string PS, and the data D shall be
461 formatted into an octet string EB, the encryption block.
463 EB = 00 || BT || PS || 00 || D . (1)
465 The block type BT shall be a single octet indicating the structure of
466 the encryption block. For this version of the document it shall have
467 value 00, 01, or 02. For a private- key operation, the block type
468 shall be 00 or 01. For a public-key operation, it shall be 02.
470 The padding string PS shall consist of k-3-||D|| octets. For block
471 type 00, the octets shall have value 00; for block type 01, they
472 shall have value FF; and for block type 02, they shall be
473 pseudorandomly generated and nonzero. This makes the length of the
474 encryption block EB equal to k.
478 1. The leading 00 octet ensures that the encryption
479 block, converted to an integer, is less than the modulus.
481 2. For block type 00, the data D must begin with a
482 nonzero octet or have known length so that the encryption
483 block can be parsed unambiguously. For block types 01 and
484 02, the encryption block can be parsed unambiguously since
485 the padding string PS contains no octets with value 00 and
486 the padding string is separated from the data D by an octet
489 3. Block type 01 is recommended for private-key
490 operations. Block type 01 has the property that the
491 encryption block, converted to an integer, is guaranteed to
492 be large, which prevents certain attacks of the kind
493 proposed by Desmedt and Odlyzko [DO86].
495 4. Block types 01 and 02 are compatible with PEM RSA
496 encryption of content-encryption keys and message digests
497 as described in RFC 1423.
506 Kaliski Informational [Page 9]
508 RFC 2313 PKCS #1: RSA Encryption March 1998
511 5. For block type 02, it is recommended that the
512 pseudorandom octets be generated independently for each
513 encryption process, especially if the same data is input to
514 more than one encryption process. Hastad's results [Has88]
515 motivate this recommendation.
517 6. For block type 02, the padding string is at least
518 eight octets long, which is a security condition for
519 public-key operations that prevents an attacker from
520 recoving data by trying all possible encryption blocks. For
521 simplicity, the minimum length is the same for block type
524 7. This document may be extended in the future to
525 include other block types.
527 8.2 Octet-string-to-integer conversion
529 The encryption block EB shall be converted to an integer x, the
530 integer encryption block. Let EB1, ..., EBk be the octets of EB from
531 first to last. Then the integer x shall satisfy
534 x = SUM 2^(8(k-i)) EBi . (2)
537 In other words, the first octet of EB has the most significance in
538 the integer and the last octet of EB has the least significance.
540 Note. The integer encryption block x satisfies 0 <= x < n since EB1
541 = 00 and 2^(8(k-1)) <= n.
545 The integer encryption block x shall be raised to the power c modulo
546 n to give an integer y, the integer encrypted data.
548 y = x^c mod n, 0 <= y < n .
550 This is the classic RSA computation.
552 8.4 Integer-to-octet-string conversion
554 The integer encrypted data y shall be converted to an octet string ED
555 of length k, the encrypted data. The encrypted data ED shall satisfy
562 Kaliski Informational [Page 10]
564 RFC 2313 PKCS #1: RSA Encryption March 1998
568 y = SUM 2^(8(k-i)) EDi . (3)
571 where ED1, ..., EDk are the octets of ED from first to last.
573 In other words, the first octet of ED has the most significance in
574 the integer and the last octet of ED has the least significance.
576 9. Decryption process
578 This section describes the RSA decryption process.
580 The decryption process consists of four steps: octet-string-to-
581 integer conversion, RSA computation, integer-to-octet-string
582 conversion, and encryption-block parsing. The input to the decryption
583 process shall be an octet string ED, the encrypted data; an integer
584 n, the modulus; and an integer c, the exponent. For a public-key
585 operation, the integer c shall be an entity's public exponent e; for
586 a private-key operation, it shall be an entity's private exponent d.
587 The output from the decryption process shall be an octet string D,
590 It is an error if the length of the encrypted data ED is not k.
592 For brevity, the decryption process is described in terms of the
595 9.1 Octet-string-to-integer conversion
597 The encrypted data ED shall be converted to an integer y, the integer
598 encrypted data, according to Equation (3).
600 It is an error if the integer encrypted data y does not satisfy 0 <=
605 The integer encrypted data y shall be raised to the power c modulo n
606 to give an integer x, the integer encryption block.
608 x = y^c mod n, 0 <= x < n .
610 This is the classic RSA computation.
618 Kaliski Informational [Page 11]
620 RFC 2313 PKCS #1: RSA Encryption March 1998
623 9.3 Integer-to-octet-string conversion
625 The integer encryption block x shall be converted to an octet string
626 EB of length k, the encryption block, according to Equation (2).
628 9.4 Encryption-block parsing
630 The encryption block EB shall be parsed into a block type BT, a
631 padding string PS, and the data D according to Equation (1).
633 It is an error if any of the following conditions occurs:
635 o The encryption block EB cannot be parsed
636 unambiguously (see notes to Section 8.1).
638 o The padding string PS consists of fewer than eight
639 octets, or is inconsistent with the block type BT.
641 o The decryption process is a public-key operation
642 and the block type BT is not 00 or 01, or the decryption
643 process is a private-key operation and the block type is
646 10. Signature algorithms
648 This section defines three signature algorithms based on the RSA
649 encryption process described in Sections 8 and 9. The intended use of
650 the signature algorithms is in signing X.509/PEM certificates and
651 certificate-revocation lists, PKCS #6 extended certificates, and
652 other objects employing digital signatures such as X.401 message
653 tokens. The algorithms are not intended for use in constructing
654 digital signatures in PKCS #7. The first signature algorithm
655 (informally, "MD2 with RSA") combines the MD2 message-digest
656 algorithm with RSA, the second (informally, "MD4 with RSA") combines
657 the MD4 message-digest algorithm with RSA, and the third (informally,
658 "MD5 with RSA") combines the MD5 message-digest algorithm with RSA.
660 This section describes the signature process and the verification
661 process for the two algorithms. The "selected" message-digest
662 algorithm shall be either MD2 or MD5, depending on the signature
663 algorithm. The signature process shall be performed with an entity's
664 private key and the verification process shall be performed with an
665 entity's public key. The signature process transforms an octet string
666 (the message) to a bit string (the signature); the verification
667 process determines whether a bit string (the signature) is the
668 signature of an octet string (the message).
674 Kaliski Informational [Page 12]
676 RFC 2313 PKCS #1: RSA Encryption March 1998
679 Note. The only difference between the signature algorithms defined
680 here and one of the the methods by which signatures (encrypted
681 message digests) are constructed in PKCS #7 is that signatures here
682 are represented here as bit strings, for consistency with the X.509
683 SIGNED macro. In PKCS #7 encrypted message digests are octet strings.
685 10.1 Signature process
687 The signature process consists of four steps: message digesting, data
688 encoding, RSA encryption, and octet-string-to-bit-string conversion.
689 The input to the signature process shall be an octet string M, the
690 message; and a signer's private key. The output from the signature
691 process shall be a bit string S, the signature.
693 10.1.1 Message digesting
695 The message M shall be digested with the selected message- digest
696 algorithm to give an octet string MD, the message digest.
700 The message digest MD and a message-digest algorithm identifier shall
701 be combined into an ASN.1 value of type DigestInfo, described below,
702 which shall be BER-encoded to give an octet string D, the data.
704 DigestInfo ::= SEQUENCE {
705 digestAlgorithm DigestAlgorithmIdentifier,
708 DigestAlgorithmIdentifier ::= AlgorithmIdentifier
710 Digest ::= OCTET STRING
712 The fields of type DigestInfo have the following meanings:
714 o digestAlgorithm identifies the message-digest
715 algorithm (and any associated parameters). For
716 this application, it should identify the selected
717 message-digest algorithm, MD2, MD4 or MD5. For
718 reference, the relevant object identifiers are the
730 Kaliski Informational [Page 13]
732 RFC 2313 PKCS #1: RSA Encryption March 1998
735 md2 OBJECT IDENTIFIER ::=
737 { iso(1) member-body(2) US(840) rsadsi(113549)
738 digestAlgorithm(2) 2 } md4 OBJECT IDENTIFIER ::=
739 { iso(1) member-body(2) US(840) rsadsi(113549)
740 digestAlgorithm(2) 4 } md5 OBJECT IDENTIFIER ::=
741 { iso(1) member-body(2) US(840) rsadsi(113549)
742 digestAlgorithm(2) 5 }
744 For these object identifiers, the parameters field of the
745 digestAlgorithm value should be NULL.
747 o digest is the result of the message-digesting
748 process, i.e., the message digest MD.
752 1. A message-digest algorithm identifier is included
753 in the DigestInfo value to limit the damage resulting from
754 the compromise of one message-digest algorithm. For
755 instance, suppose an adversary were able to find messages
756 with a given MD2 message digest. That adversary might try
757 to forge a signature on a message by finding an innocuous-
758 looking message with the same MD2 message digest, and
759 coercing a signer to sign the innocuous-looking message.
760 This attack would succeed only if the signer used MD2. If
761 the DigestInfo value contained only the message digest,
762 however, an adversary could attack signers that use any
765 2. Although it may be claimed that the use of a
766 SEQUENCE type violates the literal statement in the X.509
767 SIGNED and SIGNATURE macros that a signature is an
768 ENCRYPTED OCTET STRING (as opposed to ENCRYPTED SEQUENCE),
769 such a literal interpretation need not be required, as
770 I'Anson and Mitchell point out [IM90].
772 3. No reason is known that MD4 would not be
773 for very high security digital signature schemes, but
774 because MD4 was designed to be exceptionally fast, it is
775 "at the edge" in terms of risking successful cryptanalytic
776 attack. A message-digest algorithm can be considered
777 "broken" if someone can find a collision: two messages with
778 the same digest. While collisions have been found in
779 variants of MD4 with only two digesting "rounds"
786 Kaliski Informational [Page 14]
788 RFC 2313 PKCS #1: RSA Encryption March 1998
791 [Mer90][dBB92], none have been found in MD4 itself, which
792 has three rounds. After further critical review, it may be
793 appropriate to consider MD4 for very high security
796 MD5, which has four rounds and is proportionally slower
797 than MD4, is recommended until the completion of MD4's
798 review. The reported "pseudocollisions" in MD5's internal
799 compression function [dBB93] do not appear to have any
800 practical impact on MD5's security.
802 MD2, the slowest of the three, has the most conservative
803 design. No attacks on MD2 have been published.
805 10.1.3 RSA encryption
807 The data D shall be encrypted with the signer's RSA private key as
808 described in Section 7 to give an octet string ED, the encrypted
809 data. The block type shall be 01. (See Section 8.1.)
811 10.1.4 Octet-string-to-bit-string conversion
813 The encrypted data ED shall be converted into a bit string S, the
814 signature. Specifically, the most significant bit of the first octet
815 of the encrypted data shall become the first bit of the signature,
816 and so on through the least significant bit of the last octet of the
817 encrypted data, which shall become the last bit of the signature.
819 Note. The length in bits of the signature S is a multiple of eight.
821 10.2 Verification process
823 The verification process for both signature algorithms consists of
824 four steps: bit-string-to-octet-string conversion, RSA decryption,
825 data decoding, and message digesting and comparison. The input to the
826 verification process shall be an octet string M, the message; a
827 signer's public key; and a bit string S, the signature. The output
828 from the verification process shall be an indication of success or
831 10.2.1 Bit-string-to-octet-string conversion
833 The signature S shall be converted into an octet string ED, the
834 encrypted data. Specifically, assuming that the length in bits of the
835 signature S is a multiple of eight, the first bit of the signature
836 shall become the most significant bit of the first octet of the
842 Kaliski Informational [Page 15]
844 RFC 2313 PKCS #1: RSA Encryption March 1998
847 encrypted data, and so on through the last bit of the signature,
848 which shall become the least significant bit of the last octet of the
851 It is an error if the length in bits of the signature S is not a
854 10.2.2 RSA decryption
856 The encrypted data ED shall be decrypted with the signer's RSA public
857 key as described in Section 8 to give an octet string D, the data.
859 It is an error if the block type recovered in the decryption process
860 is not 01. (See Section 9.4.)
864 The data D shall be BER-decoded to give an ASN.1 value of type
865 DigestInfo, which shall be separated into a message digest MD and a
866 message-digest algorithm identifier. The message-digest algorithm
867 identifier shall determine the "selected" message-digest algorithm
870 It is an error if the message-digest algorithm identifier does not
871 identify the MD2, MD4 or MD5 message-digest algorithm.
873 10.2.4 Message digesting and comparison
875 The message M shall be digested with the selected message-digest
876 algorithm to give an octet string MD', the comparative message
877 digest. The verification process shall succeed if the comparative
878 message digest MD' is the same as the message digest MD, and the
879 verification process shall fail otherwise.
881 11. Object identifiers
883 This document defines five object identifiers: pkcs-1, rsaEncryption,
884 md2WithRSAEncryption, md4WithRSAEncryption, and md5WithRSAEncryption.
886 The object identifier pkcs-1 identifies this document.
888 pkcs-1 OBJECT IDENTIFIER ::=
890 { iso(1) member-body(2) US(840) rsadsi(113549)
898 Kaliski Informational [Page 16]
900 RFC 2313 PKCS #1: RSA Encryption March 1998
903 The object identifier rsaEncryption identifies RSA public and private
904 keys as defined in Section 7 and the RSA encryption and decryption
905 processes defined in Sections 8 and 9.
907 rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 }
909 The rsaEncryption object identifier is intended to be used in the
910 algorithm field of a value of type AlgorithmIdentifier. The
911 parameters field of that type, which has the algorithm-specific
912 syntax ANY DEFINED BY algorithm, would have ASN.1 type NULL for this
915 The object identifiers md2WithRSAEncryption, md4WithRSAEncryption,
916 md5WithRSAEncryption, identify, respectively, the "MD2 with RSA,"
917 "MD4 with RSA," and "MD5 with RSA" signature and verification
918 processes defined in Section 10.
920 md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 }
921 md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 }
922 md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 }
924 These object identifiers are intended to be used in the algorithm
925 field of a value of type AlgorithmIdentifier. The parameters field of
926 that type, which has the algorithm-specific syntax ANY DEFINED BY
927 algorithm, would have ASN.1 type NULL for these algorithms.
929 Note. X.509's object identifier rsa also identifies RSA public keys
930 as defined in Section 7, but does not identify private keys, and
931 identifies different encryption and decryption processes. It is
932 expected that some applications will identify public keys by rsa.
933 Such public keys are compatible with this document; an rsaEncryption
934 process under an rsa public key is the same as the rsaEncryption
935 process under an rsaEncryption public key.
937 Security Considerations
939 Security issues are discussed throughout this memo.
945 Versions 1.0-1.3 were distributed to participants in RSA Data
946 Security, Inc.'s Public-Key Cryptography Standards meetings in
947 February and March 1991.
954 Kaliski Informational [Page 17]
956 RFC 2313 PKCS #1: RSA Encryption March 1998
961 Version 1.4 is part of the June 3, 1991 initial public release of
962 PKCS. Version 1.4 was published as NIST/OSI Implementors' Workshop
963 document SEC-SIG-91-18.
967 Version 1.5 incorporates several editorial changes, including updates
968 to the references and the addition of a revision history. The
969 following substantive changes were made:
971 o Section 10: "MD4 with RSA" signature and
972 verification processes are added.
974 o Section 11: md4WithRSAEncryption object identifier
977 Supersedes June 3, 1991 version, which was also published as NIST/OSI
978 Implementors' Workshop document SEC-SIG-91-18.
982 This document is based on a contribution of RSA Laboratories, a
983 division of RSA Data Security, Inc. Any substantial use of the text
984 from this document must acknowledge RSA Data Security, Inc. RSA Data
985 Security, Inc. requests that all material mentioning or referencing
986 this document identify this as "RSA Data Security, Inc. PKCS #1".
991 RSA Laboratories East
995 Phone: (617) 687-7000
1010 Kaliski Informational [Page 18]
1012 RFC 2313 PKCS #1: RSA Encryption March 1998
1015 Full Copyright Statement
1017 Copyright (C) The Internet Society (1998). All Rights Reserved.
1019 This document and translations of it may be copied and furnished to
1020 others, and derivative works that comment on or otherwise explain it
1021 or assist in its implementation may be prepared, copied, published
1022 and distributed, in whole or in part, without restriction of any
1023 kind, provided that the above copyright notice and this paragraph are
1024 included on all such copies and derivative works. However, this
1025 document itself may not be modified in any way, such as by removing
1026 the copyright notice or references to the Internet Society or other
1027 Internet organizations, except as needed for the purpose of
1028 developing Internet standards in which case the procedures for
1029 copyrights defined in the Internet Standards process must be
1030 followed, or as required to translate it into languages other than
1033 The limited permissions granted above are perpetual and will not be
1034 revoked by the Internet Society or its successors or assigns.
1036 This document and the information contained herein is provided on an
1037 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
1038 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
1039 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
1040 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
1041 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1066 Kaliski Informational [Page 19]