rfc7292v2.txt   rfc7292.txt 
Internet Engineering Task Force (IETF) K. Moriarty, Ed. Internet Engineering Task Force (IETF) K. Moriarty, Ed.
Request for Comments: 7292 EMC Request for Comments: 7292 EMC
Category: Informational M. Nystrom Category: Informational M. Nystrom
ISSN: 2070-1721 Microsoft Corporation ISSN: 2070-1721 Microsoft Corporation
S. Parkinson S. Parkinson
A. Rusch A. Rusch
M. Scott M. Scott
RSA RSA
June 2014 July 2014
PKCS #12: Personal Information Exchange Syntax v1.1 PKCS #12: Personal Information Exchange Syntax v1.1
Abstract Abstract
PKCS #12 v1.1 describes a transfer syntax for personal identity PKCS #12 v1.1 describes a transfer syntax for personal identity
information, including private keys, certificates, miscellaneous information, including private keys, certificates, miscellaneous
secrets, and extensions. Machines, applications, browsers, Internet secrets, and extensions. Machines, applications, browsers, Internet
kiosks, and so on, that support this standard will allow a user to kiosks, and so on, that support this standard will allow a user to
import, export, and exercise a single set of personal identity import, export, and exercise a single set of personal identity
skipping to change at page 1, line 33 skipping to change at page 1, line 33
information under several privacy and integrity modes. information under several privacy and integrity modes.
This document represents a republication of PKCS #12 v1.1 from RSA This document represents a republication of PKCS #12 v1.1 from RSA
Laboratories' Public Key Cryptography Standard (PKCS) series. By Laboratories' Public Key Cryptography Standard (PKCS) series. By
publishing this RFC, change control is transferred to the IETF. publishing this RFC, change control is transferred to the IETF.
IESG Note IESG Note
The IESG thanks RSA Laboratories for transferring change control to The IESG thanks RSA Laboratories for transferring change control to
the IETF. Enhancements to this specification that preserve backward the IETF. Enhancements to this specification that preserve backward
compatibility are expected in an upcoming IETF standards track compatibility are expected in an upcoming IETF Standards Track
document. document.
Status of This Memo Status of This Memo
This document is not an Internet Standards Track specification; it is This document is not an Internet Standards Track specification; it is
published for informational purposes. published for informational purposes.
This document is a product of the Internet Engineering Task Force This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has (IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the received public review and has been approved for publication by the
skipping to change at page 2, line 26 skipping to change at page 3, line 7
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Changes from PKCS #12 Version 1 . . . . . . . . . . . . . 4 1.1. Changes from PKCS #12 Version 1 . . . . . . . . . . . . . 4
2. Definitions and Notation . . . . . . . . . . . . . . . . . . 4 2. Definitions and Notation . . . . . . . . . . . . . . . . . . 5
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1. Exchange Modes . . . . . . . . . . . . . . . . . . . . . 6 3.1. Exchange Modes . . . . . . . . . . . . . . . . . . . . . 7
3.2. Mode Choice Policies . . . . . . . . . . . . . . . . . . 7 3.2. Mode Choice Policies . . . . . . . . . . . . . . . . . . 8
3.3. Trusted Public Keys . . . . . . . . . . . . . . . . . . . 7 3.3. Trusted Public Keys . . . . . . . . . . . . . . . . . . . 8
3.4. The AuthenticatedSafe . . . . . . . . . . . . . . . . . . 8 3.4. The AuthenticatedSafe . . . . . . . . . . . . . . . . . . 9
4. PFX PDU Syntax . . . . . . . . . . . . . . . . . . . . . . . 9 4. PFX PDU Syntax . . . . . . . . . . . . . . . . . . . . . . . 10
4.1. The AuthenticatedSafe Type . . . . . . . . . . . . . . . 10 4.1. The AuthenticatedSafe Type . . . . . . . . . . . . . . . 11
4.2. The SafeBag Type . . . . . . . . . . . . . . . . . . . . 11 4.2. The SafeBag Type . . . . . . . . . . . . . . . . . . . . 12
4.2.1. The KeyBag Type . . . . . . . . . . . . . . . . . . . 12 4.2.1. The KeyBag Type . . . . . . . . . . . . . . . . . . . 13
4.2.2. The PKCS8ShroudedKeyBag Type . . . . . . . . . . . . 12 4.2.2. The PKCS8ShroudedKeyBag Type . . . . . . . . . . . . 13
4.2.3. The CertBag Type . . . . . . . . . . . . . . . . . . 13 4.2.3. The CertBag Type . . . . . . . . . . . . . . . . . . 13
4.2.4. The CRLBag Type . . . . . . . . . . . . . . . . . . . 13 4.2.4. The CRLBag Type . . . . . . . . . . . . . . . . . . . 14
4.2.5. The SecretBag Type . . . . . . . . . . . . . . . . . 14 4.2.5. The SecretBag Type . . . . . . . . . . . . . . . . . 14
4.2.6. The SafeContents Type . . . . . . . . . . . . . . . . 14 4.2.6. The SafeContents Type . . . . . . . . . . . . . . . . 14
5. Using PFX PDUs . . . . . . . . . . . . . . . . . . . . . . . 14 5. Using PFX PDUs . . . . . . . . . . . . . . . . . . . . . . . 15
5.1. Creating PFX PDUs . . . . . . . . . . . . . . . . . . . . 14 5.1. Creating PFX PDUs . . . . . . . . . . . . . . . . . . . . 15
5.2. Importing Keys, etc., from a PFX PDU . . . . . . . . . . 15 5.2. Importing Keys, etc., from a PFX PDU . . . . . . . . . . 16
6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 6. Security Considerations . . . . . . . . . . . . . . . . . . . 16
7. Normative References . . . . . . . . . . . . . . . . . . . . 16 7. Normative References . . . . . . . . . . . . . . . . . . . . 17
Appendix A. Message Authentication Codes (MACs) . . . . . . . . 19 Appendix A. Message Authentication Codes (MACs) . . . . . . . . 19
Appendix B. Deriving Keys and IVs from Passwords and Salt . . . 19 Appendix B. Deriving Keys and IVs from Passwords and Salt . . . 19
B.1. Password Formatting . . . . . . . . . . . . . . . . . . . 19 B.1. Password Formatting . . . . . . . . . . . . . . . . . . . 19
B.2. General Method . . . . . . . . . . . . . . . . . . . . . 20 B.2. General Method . . . . . . . . . . . . . . . . . . . . . 20
B.3. More on the ID Byte . . . . . . . . . . . . . . . . . . . 22 B.3. More on the ID Byte . . . . . . . . . . . . . . . . . . . 22
B.4. Keys for Password Integrity Mode . . . . . . . . . . . . 22 B.4. Keys for Password Integrity Mode . . . . . . . . . . . . 22
Appendix C. Keys and IVs for Password Privacy Mode . . . . . . . 22 Appendix C. Keys and IVs for Password Privacy Mode . . . . . . . 22
Appendix D. ASN.1 Module . . . . . . . . . . . . . . . . . . . . 24 Appendix D. ASN.1 Module . . . . . . . . . . . . . . . . . . . . 24
Appendix E. Intellectual Property Considerations . . . . . . . . 28 Appendix E. Intellectual Property Considerations . . . . . . . . 28
Appendix F. Acknowledgments . . . . . . . . . . . . . . . . . . 28 Appendix F. Acknowledgments . . . . . . . . . . . . . . . . . . 28
skipping to change at page 11, line 25 skipping to change at page 12, line 25
bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}), bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}),
bagAttributes SET OF PKCS12Attribute OPTIONAL bagAttributes SET OF PKCS12Attribute OPTIONAL
} }
PKCS12Attribute ::= SEQUENCE { PKCS12Attribute ::= SEQUENCE {
attrId ATTRIBUTE.&id ({PKCS12AttrSet}), attrId ATTRIBUTE.&id ({PKCS12AttrSet}),
attrValues SET OF ATTRIBUTE.&Type ({PKCS12AttrSet}{@attrId}) attrValues SET OF ATTRIBUTE.&Type ({PKCS12AttrSet}{@attrId})
} -- This type is compatible with the X.500 type 'Attribute' } -- This type is compatible with the X.500 type 'Attribute'
PKCS12AttrSet ATTRIBUTE ::= { PKCS12AttrSet ATTRIBUTE ::= {
friendlyName | -- from PKCS #9 [22] friendlyName | -- from PKCS #9 [23]
localKeyId, -- from PKCS #9 localKeyId, -- from PKCS #9
... -- Other attributes are allowed ... -- Other attributes are allowed
} }
The optional bagAttributes field allows users to assign nicknames and The optional bagAttributes field allows users to assign nicknames and
identifiers to keys, etc., and permits visual tools to display identifiers to keys, etc., and permits visual tools to display
meaningful strings of some sort to the user. meaningful strings of some sort to the user.
Six types of SafeBags are defined in this version of this document: Six types of SafeBags are defined in this version of this document:
skipping to change at page 16, line 26 skipping to change at page 17, line 7
into account. It is also important that passwords be protected well into account. It is also important that passwords be protected well
if stored. if stored.
When choosing a salt value in password privacy or integrity mode, the When choosing a salt value in password privacy or integrity mode, the
recommendations in Section 4 of PKCS #5 2.1 [13] [22] should be taken recommendations in Section 4 of PKCS #5 2.1 [13] [22] should be taken
into account. Ideally, the salt is as long as the output of the hash into account. Ideally, the salt is as long as the output of the hash
function being used and consists of randomly generated data. function being used and consists of randomly generated data.
7. Normative References 7. Normative References
[1] Dobbertin, H., "The status of MD5 after a recent attack.", [1] Dobbertin, H., "The status of MD5 after a recent attack.",
CryptoBytes Vol. 2, #2, 1996. CryptoBytes Vol. 2, #2, 1996.
[2] ISO/IEC, "Information technology -- Abstract Syntax [2] ISO/IEC, "Information technology -- Abstract Syntax Notation
Notation One (ASN.1) -- Specification of basic notation", One (ASN.1) -- Specification of basic notation", ISO/IEC
ISO/IEC 8824-1:2008, 2008. 8824-1:2008, 2008.
[3] ISO/IEC, "Information technology -- Abstract Syntax [3] ISO/IEC, "Information technology -- Abstract Syntax Notation
Notation One (ASN.1) -- Information object specification", One (ASN.1) -- Information object specification", ISO/IEC
ISO/IEC 8824-2:2008, 2008. 8824-2:2008, 2008.
[4] ISO/IEC, "Information technology -- Abstract Syntax [4] ISO/IEC, "Information technology -- Abstract Syntax Notation
Notation One (ASN.1) -- Constraint specification", ISO/IEC One (ASN.1) -- Constraint specification", ISO/IEC 88247-3:2008,
88247-3:2008, 2008. 2008.
[5] ISO/IEC, "Information technology -- Abstract Syntax [5] ISO/IEC, "Information technology -- Abstract Syntax Notation
Notation One (ASN.1) -- Parameterization of ASN.1 One (ASN.1) -- Parameterization of ASN.1 specifications",
specifications", ISO/IEC 8824-4:2008, 2008. ISO/IEC 8824-4:2008, 2008.
[6] ISO/IEC, "Information Technology - ASN.1 Encoding Rules: [6] ISO/IEC, "Information Technology - ASN.1 Encoding Rules:
Specification of Basic Encoding Rules (BER), Canonical Specification of Basic Encoding Rules (BER), Canonical Encoding
Encoding Rules (CER), and Distinguished Encoding Rules", Rules (CER), and Distinguished Encoding Rules", ISO/IEC
ISO/IEC 8825-1:2008, 2008. 8825-1:2008, 2008.
[7] ISO/IEC, "Information technology -- Open Systems [7] ISO/IEC, "Information technology -- Open Systems
Interconnection -- The Directory: Models", ISO/IEC Interconnection -- The Directory: Models", ISO/IEC 9594-2:1997,
9594-2:1997, 1997. 1997.
[8] ISO/IEC, "Information technology -- Open Systems [8] ISO/IEC, "Information technology -- Open Systems
Interconnection -- The Directory: Authentication Interconnection -- The Directory: Authentication Framework",
Framework", ISO/IEC 9594-8:1997, 1997. ISO/IEC 9594-8:1997, 1997.
[9] Microsoft, "PFX: Personal Exchange Syntax and Protocol [9] Microsoft, "PFX: Personal Exchange Syntax and Protocol
Standard", ISO/IEC Version 0.020, January 1997. Standard", ISO/IEC Version 0.020, January 1997.
[10] National Institute of Standards and Technology (NIST), [10] National Institute of Standards and Technology (NIST), "Secure
"Secure Hash Standard", FIPS Publication 180-4, March Hash Standard", FIPS Publication 180-4, March 2012.
2012.
[11] National Institute of Standards and Technology (NIST), [11] National Institute of Standards and Technology (NIST), "The
"The Keyed-Hash Message Authentication Code (HMAC)", FIPS Keyed-Hash Message Authentication Code (HMAC)", FIPS
Publication 198-1, July 2008. Publication 198-1, July 2008.
[12] National Institute of Standards and Technology (NIST), [12] National Institute of Standards and Technology (NIST), "The
"The Recommendation for Password-Based Key Derivation, Recommendation for Password-Based Key Derivation, Part 1:
Part 1: Storage Applications", NIST Special Publication Storage Applications", NIST Special Publication 800-132,
800-132, December 2010. December 2010.
[13] RSA Laboratories, "PKCS #5: Password-Based Encryption [13] RSA Laboratories, "PKCS #5: Password-Based Encryption
Standard", PKCS Version 2.1, October 2012. Standard", PKCS Version 2.1, October 2012.
[14] RSA Laboratories, "PKCS #7: Cryptographic Message Syntax [14] RSA Laboratories, "PKCS #7: Cryptographic Message Syntax
Standard", PKCS Version 1.5, November 1993. Standard", PKCS Version 1.5, November 1993.
[15] RSA Laboratories, "PKCS #8: Private-Key Information Syntax [15] RSA Laboratories, "PKCS #8: Private-Key Information Syntax
Standard", PKCS Version 1.2, November 1993. Standard", PKCS Version 1.2, November 1993.
[16] RSA Laboratories, "PKCS #12: Personal Information Exchange [16] RSA Laboratories, "PKCS #12: Personal Information Exchange
Syntax", PKCS Version 1.1, December 2012. Syntax", PKCS Version 1.1, December 2012.
[17] Rivest, R. and B. Lampson, "SDSI - A Simple Distributed [17] Rivest, R. and B. Lampson, "SDSI - A Simple Distributed
Security Infrastructure", 1996, Security Infrastructure", 1996,
<http://people.csail.mit.edu/rivest/sdsi10.html>. <http://people.csail.mit.edu/rivest/sdsi10.html>.
[18] Turner, S. and L. Chen, "MD2 to Historic Status", RFC [18] Turner, S. and L. Chen, "MD2 to Historic Status", RFC 6149,
6149, March 2011. March 2011.
[19] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, [19] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April
April 1992. 1992.
[20] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- [20] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
Hashing for Message Authentication", RFC 2104, February Hashing for Message Authentication", RFC 2104, February 1997.
1997.
[21] Kaliski, B., "PKCS #7: Cryptographic Message Syntax [21] Kaliski, B., "PKCS #7: Cryptographic Message Syntax Version
Version 1.5", RFC 2315, March 1998. 1.5", RFC 2315, March 1998.
[22] Kaliski, B., "PKCS #5: Password-Based Cryptography [22] Kaliski, B., "PKCS #5: Password-Based Cryptography
Specification Version 2.0", RFC 2898, September 2000. Specification Version 2.0", RFC 2898, September 2000.
[23] Nystrom, M. and B. Kaliski, "PKCS #9: Selected Object [23] Nystrom, M. and B. Kaliski, "PKCS #9: Selected Object Classes
Classes and Attribute Types Version 2.0", RFC 2985, and Attribute Types Version 2.0", RFC 2985, November 2000.
November 2000.
[24] Turner, S., "Asymmetric Key Packages", RFC 5958, August [24] Turner, S., "Asymmetric Key Packages", RFC 5958, August 2010.
2010.
[25] Turner, S. and L. Chen, "Updated Security Considerations [25] Turner, S. and L. Chen, "Updated Security Considerations for
for the MD5 Message-Digest and the HMAC-MD5 Algorithms", the MD5 Message-Digest and the HMAC-MD5 Algorithms", RFC 6151,
RFC 6151, March 2011. March 2011.
Appendix A. Message Authentication Codes (MACs) Appendix A. Message Authentication Codes (MACs)
A MAC is a special type of function of a message (data bits) and an A MAC is a special type of function of a message (data bits) and an
integrity key. It can be computed or checked only by someone integrity key. It can be computed or checked only by someone
possessing both the message and the integrity key. Its security possessing both the message and the integrity key. Its security
follows from the secrecy of the integrity key. In this standard, follows from the secrecy of the integrity key. In this standard,
MACing is used in password integrity mode. MACing is used in password integrity mode.
This document uses a particular type of MAC called HMAC [11] [20], This document uses a particular type of MAC called HMAC [11] [20],
 End of changes. 33 change blocks. 
86 lines changed or deleted 82 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/