RFC 2313, March 1998.
[P1v2.1] Jonsson, J. and B. Kaliski, "PKCS #1: RSA Cryptography
Specifications Version 2.1", RFC 3447, February 2003.
[PROFILE] Housley, R., Polk, W., Ford, W., and D. Solo,
"Internet X.509 Public Key Infrastructure Certificate
and Certificate Revocation List (CRL) Profile", RFC
3280, April 2002.
[SHA2] National Institute of Standards and Technology (NIST),
FIPS 180-2: Secure Hash Standard, 1 August 2002.
[SHA224] Housley, R., "A 224-bit One-way Hash Function: SHA-
224", RFC 3874, September 2004.
[STDWORDS] Bradner, S., "Key Words for Use in RFCs to Indicate
Requirement Levels", RFC 2119, March 1997.
[X.208-88] CCITT Recommendation X.208: Specification of Abstract
Syntax Notation One (ASN.1), 1988.
[X.209-88] CCITT Recommendation X.209: Specification of Basic
Encoding Rules for Abstract Syntax Notation One
(ASN.1), 1988.
[X.509-88] CCITT Recommendation X.509: The Directory -
Authentication Framework, 1988.
7.2. Informative References
[CMS] Housley, R., "Cryptographic Message Syntax (CMS)", RFC
3852, July 2004.
[GUIDE] National Institute of Standards and Technology, Second
Draft: "Key Management Guideline, Part 1: General
Guidance." June 2002.
[http://csrc.nist.gov/encryption/kms/guideline-1.pdf]
[P1363A] IEEE Std 1363a-2004, Standard Specifications for
Public Key Cryptography - Amendment 1: Additional
Techniques, 2004.
[PKALGS] Bassham, L., Polk, W., and R. Housley, "Algorithms and
Identifiers for the Internet X.509 Public Key
Infrastructure Certificate and Certificate Revocation
List (CRL) Profile", RFC 3279, April 2002.
[RANDOM] Eastlake 3rd, D., Crocker, S., and J. Schiller,
"Randomness Recommendations for Security", RFC 1750,
December 1994.
[SHA-1-ATTACK] Wang, X., Yin, Y.L., and H. Yu, "Finding Collisions in
the Full SHA1", to appear, CRYPTO 2005. Preprint
available at
http://theory.csail.mit.edu/~yiqun/shanote.pdf.
8. Security Considerations
This specification supplements RFC 3280 [PROFILE]. The Security
Considerations section of that document applies to this specification
as well.
Implementations must protect the RSA private key. Compromising the
RSA private key may result in the disclosure of all messages
protected with that key.
The generation of RSA public/private key pairs relies on a random
numbers. Using inadequate pseudo-random number generators (PRNGs) to
generate cryptographic keys can result in little or no security. An
attacker may find it much easier to reproduce the PRNG environment
that produced the keys and search the resulting small set of
possibilities, than to brute force search the whole key space. The
generation of quality random numbers is difficult and RFC 1750
[RANDOM] offers important guidance in this area.
Generally, good cryptographic practice employs a given RSA key pair
in only one scheme. This practice avoids the risk that vulnerability
in one scheme may compromise the security of the other, and may be
essential to maintain provable security. While PKCS #1 Version 1.5
[P1v1.5] has been employed for both key transport and digital
signature without any known bad interactions, such a combined use of
an RSA key pair is not recommended in the future. Therefore, an RSA
key pair used for RSASSA-PSS signature generation should not be used
for other purposes. For similar reasons, one RSA key pair should
always be used with the same RSASSA-PSS parameters (except possibly
for the salt length). Likewise, an RSA key pair used for RSAES-OAEP
key transport should not be used for other purposes. For similar
reasons, one RSA key pair should always be used with the same RSAES-
OAEP parameters.
This specification requires implementations to support the SHA-1
one-way hash function for interoperability, but support for other
one-way hash functions is permitted. Wang et al. [SHA-1-ATTACK] have
recently discovered a collision attack against SHA-1 with complexity
2^69. This attack, which can produce two new messages with the same
hash value, is the first attack on SHA-1 faster than the generic
attack with complexity 2^80, where 80 is one-half the bit length of
the hash value.
In general, when a one-way hash function is used with a digital
signature scheme, a collision attack is easily translated into a
signature forgery. Therefore, using SHA-1 in a digital signature
scheme provides a security level of no more than 69 bits if the
attacker can persuade the signer to sign a message resulting from a
collision attack. If the attacker can’t persuade the signer to sign
such a message, however, then SHA-1 still provides a security level
of at least 80 bits since the best (known) inversion attack (which
produces a new message with a previous hash value) is the generic
attack with complexity 2^160. If a greater level of security is
desired, then a secure one-way hash function with a longer hash value
is needed. SHA-256, SHA-384, and SHA-512 are reasonable choices
[SHA2], although their security needs to be reconfirmed in light of
the SHA-1 results.
The metrics for choosing a one-way hash function for use in digital
signatures do not directly apply to the RSAES-OAEP key transport
algorithm, since a collision attack on the one-way hash function does
not directly translate into an attack on the key transport algorithm,
unless the encoding parameters P vary (in which case a collision of
the hash value for different encoding parameters might be exploited).
Nevertheless, for consistency with the practice for digital signature
schemes, and in case the encoding parameters P is not the empty
string, it is recommended that the same rule of thumb be applied to
selecting a one-way hash function for use with RSAES-OAEP. That is,
the one-way hash function should be selected so that the bit length
of the hash value is at least twice as long as the desired security
level in bits.
The key size selected impacts the strength achieved when implementing
cryptographic services. Thus, selecting appropriate key sizes is
critical to implementing appropriate security. A 1024-bit RSA public
key is considered to provide a security level of about 80 bits. In
[GUIDE], the National Institute of Standards and Technology (NIST)
suggests that a security level of 80 bits is adequate for the
protection of sensitive information until 2015. This recommendation
is likely to be revised based on recent advances, and is expected to
be more conservative, suggesting that a security level of 80 bits is
adequate protection of sensitive information until 2010. If a
security level greater than 80 bits is needed, then a longer RSA
public key and a secure one-way hash function with a longer hash
value are needed. SHA-224, SHA-256, SHA-384, and SHA-512 are
reasonable choices for such a one-way hash function, modulo the
reconfirmation noted above. For this reason, the algorithm
identifiers for these one-way hash functions are included in the
ASN.1 module in Section 6.
Current implementations MUST support 1024-bit RSA public key sizes.
Before the end of 2007, implementations SHOULD support RSA public key
sizes of at least 2048 bits and SHOULD support SHA-256. This
requirement is intended to allow adequate time for users to deploy
the stronger digital signature capability by 2010.
When using RSASSA-PSS, the same one-way hash function should be
employed for the hashAlgorithm and the maskGenAlgorithm, but it is
not required. When using RSAES-OAEP, the same one-way hash function
should be employed for the hashFunc and the maskGenFunc, but it is
not required. In each case, using the same one-way hash function
helps with security analysis and reduces implementation complexity.
9. IANA Considerations
Within the certificates and CRLs, algorithms are identified by object
identifiers. All object identifiers used in this document were
assigned in Public-Key Cryptography Standards (PKCS) documents or by
the National Institute of Standards and Technology (NIST). No
further action by the IANA is necessary for this document or any
anticipated updates.
Authors’ Addresses
Russell Housley
Vigil Security, LLC
918 Spring Knoll Drive
Herndon, VA 20170
USA
EMail: housley@vigilsec.com
Burt Kaliski
RSA Laboratories
174 Middlesex Turnpike
Bedford, MA 01730
USA
EMail: bkaliski@rsasecurity.com
Jim Schaad
Soaring Hawk Consulting
PO Box 675
Gold Bar, WA 98251
USA
EMail: jimsch@exmsft.com
Full Copyright Statement
Copyright (C) The Internet Society (2005).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at ietf-
ipr@ietf.org.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.