summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc6031.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc6031.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc6031.txt')
-rw-r--r--doc/rfc/rfc6031.txt1627
1 files changed, 1627 insertions, 0 deletions
diff --git a/doc/rfc/rfc6031.txt b/doc/rfc/rfc6031.txt
new file mode 100644
index 0000000..9662b2b
--- /dev/null
+++ b/doc/rfc/rfc6031.txt
@@ -0,0 +1,1627 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) S. Turner
+Request for Comments: 6031 IECA
+Category: Standards Track R. Housley
+ISSN: 2070-1721 Vigil Security
+ December 2010
+
+
+ Cryptographic Message Syntax (CMS) Symmetric Key Package Content Type
+
+Abstract
+
+ This document defines the symmetric key format content type. It is
+ transport independent. The Cryptographic Message Syntax (CMS) can be
+ used to digitally sign, digest, authenticate, or encrypt this content
+ type.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 5741.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ http://www.rfc-editor.org/info/rfc6031.
+
+Copyright Notice
+
+ Copyright (c) 2010 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 1]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+Table of Contents
+
+ 1. Introduction...................................................3
+ 1.1. Requirements Terminology..................................3
+ 1.2. ASN.1 Syntax Notation.....................................3
+ 2. Symmetric Key Package Content Type.............................3
+ 3. PSKC Attributes................................................4
+ 3.1. PSKC Key Package Attributes...............................5
+ 3.1.1. Device Information Attributes........................5
+ 3.1.2. Cryptographic Module Information Attributes..........8
+ 3.2. PSKC Key Attributes.......................................8
+ 3.2.1. Key Identifier.......................................8
+ 3.2.2. Algorithm............................................9
+ 3.2.3. Issuer...............................................9
+ 3.2.4. Key Profile Identifier...............................9
+ 3.2.5. Key Reference Identifier.............................9
+ 3.2.6. Friendly Name.......................................10
+ 3.2.7. Algorithm Parameters................................10
+ 3.2.8. Counter.............................................12
+ 3.2.9. Time................................................13
+ 3.2.10. Time Interval......................................13
+ 3.2.11. Time Drift.........................................13
+ 3.2.12. Value MAC..........................................13
+ 3.2.13. Key User Id........................................14
+ 3.3. Key Policy Attributes....................................14
+ 3.3.1. Key Start Date......................................14
+ 3.3.2. Key Expiry Date.....................................15
+ 3.3.3. Number of Transactions..............................15
+ 3.3.4. Key Usage...........................................15
+ 3.3.5. PIN Policy..........................................16
+ 4. Key Encoding..................................................18
+ 4.1. AES Key Encoding.........................................18
+ 4.2. Triple-DES Key Encoding..................................18
+ 5. Security Considerations.......................................19
+ 6. IANA Considerations...........................................19
+ 7. References....................................................19
+ 7.1. Normative References.....................................19
+ 7.2. Informative References...................................21
+ Appendix A. ASN.1 Module.........................................22
+ A.1. Symmetric Key Package ASN.1 Module.......................22
+ A.2. PSKC ASN.1 Module........................................23
+
+
+
+
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 2]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+1. Introduction
+
+ This document defines the symmetric key format content type. It is
+ transport independent. The Cryptographic Message Syntax (CMS)
+ [RFC5652] can be used to digitally sign, digest, authenticate, or
+ encrypt this content type.
+
+ The use cases that motivated the attributes in this work are
+ elaborated in [RFC6030]. They are omitted to avoid duplication.
+
+ This document also includes ASN.1 definitions of the Extensible
+ Markup Language (XML) element and attributes defined in [RFC6030].
+
+1.1. Requirements Terminology
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in [RFC2119].
+
+1.2. ASN.1 Syntax Notation
+
+ The key package is defined using the ASN.1 in [X.680], [X.681],
+ [X.682], and [X.683].
+
+2. Symmetric Key Package Content Type
+
+ The symmetric key package content type is used to transfer one or
+ more plaintext symmetric keys from one party to another. A symmetric
+ key package MAY be encapsulated in one or more CMS protecting content
+ types. This content type MUST be Distinguished Encoding Rules (DER)
+ encoded [X.690].
+
+ The symmetric key package content type has the following syntax:
+
+ ct-symmetric-key-package CONTENT-TYPE ::=
+ { TYPE SymmetricKeyPackage IDENTIFIED BY id-ct-KP-sKeyPackage }
+
+ id-ct-KP-sKeyPackage OBJECT IDENTIFIER ::=
+ { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) ct(1) 25 }
+
+ SymmetricKeyPackage ::= SEQUENCE {
+ version KeyPkgVersion DEFAULT v1,
+ sKeyPkgAttrs [0] SEQUENCE SIZE (1..MAX) OF Attribute
+ {{ SKeyPkgAttributes }} OPTIONAL,
+ sKeys SymmetricKeys,
+ ... }
+
+
+
+
+Turner & Housley Standards Track [Page 3]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ SymmetricKeys ::= SEQUENCE SIZE (1..MAX) OF OneSymmetricKey
+
+ OneSymmetricKey ::= SEQUENCE {
+ sKeyAttrs SEQUENCE SIZE (1..MAX) OF Attribute
+ {{ SKeyAttributes }} OPTIONAL,
+ sKey OCTET STRING OPTIONAL }
+ ( WITH COMPONENTS { ..., sKeyAttrs PRESENT } |
+ WITH COMPONENTS { ..., sKey PRESENT } )
+
+ KeyPkgVersion ::= INTEGER { v1(1) } ( v1, ... )
+
+ The SymmetricKeyPackage fields are used as follows:
+
+ - version identifies the version of the symmetric key package content
+ structure. For this version of the specification, the default
+ value, v1, MUST be used.
+
+ - sKeyPkgAttrs optionally provides attributes that apply to all of
+ the symmetric keys in the package. The SKeyPkgAttributes
+ information object set restricts the attributes allowed in
+ sKeyPkgAttrs. If an attribute appears here, then it MUST NOT also
+ be included in sKeyAttrs.
+
+ - sKeys contains a sequence of OneSymmetricKey values. This
+ structure is discussed below.
+
+ The OneSymmetricKey fields are used as follows:
+
+ - sKeyAttrs optionally provides attributes that apply to one
+ symmetric key. The SKeyAttributes information object set restricts
+ the attributes permitted in sKeyAttrs. If an attribute appears
+ here, then it MUST NOT also be included in sKeyPkgAttrs.
+
+ - sKey optionally contains the key value encoded as an OCTET STRING.
+
+ The OneSymmetricKey field MUST include sKeyAttrs, sKey, or sKeyAttrs
+ and sKey.
+
+3. PSKC Attributes
+
+ The following attributes are defined to assist those using the
+ symmetric key package defined in this document as part of a Dynamic
+ Symmetric Key Provision Protocol (DSKPP) [RFC6063] with Portable
+ Symmetric Key Container (PSKC) attributes. [RFC6030] should be
+ consulted for the definitive attribute descriptions. The attributes
+ fall into three categories. The first category includes attributes
+ that apply to a key package, and these attributes will generally
+ appear in sKeyPkgAttrs. The second category includes attributes that
+
+
+
+Turner & Housley Standards Track [Page 4]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ apply to a particular key, and these attributes will generally appear
+ in sKeyAttrs. The third category includes attributes that apply to a
+ key policy. Of the attributes defined, only the Key Identifier
+ (Section 3.2.1) and Algorithm (Section 3.2.2) key attributes MUST be
+ included. All other attributes are OPTIONAL.
+
+ Like PSKC, the Symmetric Key Content Type supports extensibility.
+ Primarily, this is accomplished through the definition and inclusion
+ of new attributes, but in some instances in which the attribute
+ contains more than one type, the ASN.1 "..." extensibility mechanism
+ is employed.
+
+ A straightforward approach to conversion from XML types to ASN.1 is
+ employed. The <xs:string> type converts to UTF8String; the XML
+ <xs:dateTime> type converts to GeneralizedTime; and the XML integer
+ types convert to INTEGER or BinaryTime [RFC6019].
+
+3.1. PSKC Key Package Attributes
+
+ PSKC key package attributes apply to an entire key package. These
+ attributes can be categorized by two different attribute collections:
+ device information and cryptographic module attributes. All of these
+ key package attributes are OPTIONAL.
+
+3.1.1. Device Information Attributes
+
+ Device Information attributes, when taken together, MUST uniquely
+ identify a device to which the Symmetric Key Package is provisioned.
+
+3.1.1.1. Manufacturer
+
+ The Manufacturer attribute indicates the manufacturer of the device.
+ Values for Manufacturer MUST be taken from either [OATHMAN] prefixes
+ (i.e., the left column) or from the IANA Private Enterprise Number
+ Registry [IANAPENREG], using the Organization value. When the value
+ is taken from [OATHMAN] "oath." MUST be prepended to the value (e.g.,
+ "oath.<values from [OATHMAN]>"). When the value is taken from
+ [IANAPENREG], "iana." MUST be prepended to the value (e.g.,
+ "iana.<Organization value from [IANAPENREG]>"). The attribute
+ definition is as follows:
+
+ at-pskc-manufacturer ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-manufacturer }
+
+ id-pskc-manufacturer OBJECT IDENTIFIER ::= { id-pskc 1 }
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 5]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+3.1.1.2. Serial Number
+
+ The Serial Number attribute indicates the serial number of the
+ device. The attribute definition is as follows:
+
+ at-pskc-serialNo ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-serialNo }
+
+ id-pskc-serialNo OBJECT IDENTIFIER ::= { id-pskc 2 }
+
+3.1.1.3. Model
+
+ The Model attribute indicates the model of the device. The attribute
+ definition is as follows:
+
+ at-pskc-model ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-model }
+
+ id-pskc-model OBJECT IDENTIFIER ::= { id-pskc 3 }
+
+3.1.1.4. Issue Number
+
+ The Issue Number attribute contains an issue number to distinguish
+ between two devices with the same serial number. The attribute
+ definition is as follows:
+
+ at-pskc-issueNo ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-issueNo }
+
+ id-pskc-issueNo OBJECT IDENTIFIER ::= { id-pskc 4 }
+
+3.1.1.5. Device Binding
+
+ The Device Binding attribute provides an opaque identifier that
+ allows keys to be bound to the device or to a class of devices.
+
+ When loading keys into a device, the attribute's value MUST be
+ checked against information provided to the user via out-of-band
+ mechanisms. The implementation then ensures that the correct device
+ or class of device is being used with respect to the provisioned key.
+
+ at-pskc-deviceBinding ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-deviceBinding }
+
+ id-pskc-deviceBinding OBJECT IDENTIFIER ::= { id-pskc 5 }
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 6]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+3.1.1.6. Device Start Date
+
+ When included in sKeyPkgAttrs, the Device Start Date attribute
+ indicates the start date for a device. The date MUST be represented
+ in a form that matches the dateTime production in "canonical
+ representation" [XMLSCHEMA]. Implementations SHOULD NOT rely on time
+ resolution finer than milliseconds and MUST NOT generate time
+ instants that specify leap seconds. Keys that are on the device
+ SHOULD only be used when the current date is on or after the device
+ start date. The attribute definition is as follows:
+
+ at-pskc-deviceStartDate ATTRIBUTE ::= {
+ TYPE GeneralizedTime IDENTIFIED BY id-pskc-deviceStartDate }
+
+ id-pskc-deviceStartDate OBJECT IDENTIFIER ::= { id-pskc 6 }
+
+ Note that usage enforcement of the keys with respect to the dates MAY
+ only happen on the validation server as some devices, such as smart
+ cards, do not have an internal clock. Systems thus SHOULD NOT rely
+ upon the device to enforce key usage date restrictions.
+
+3.1.1.7. Device Expiry Date
+
+ When included in sKeyPkgAttrs, the Device Expiry Date attribute
+ indicates the expiry date for a device. The date MUST be represented
+ in a form that matches the dateTime production in "canonical
+ representation" [XMLSCHEMA]. Implementations SHOULD NOT rely on time
+ resolution finer than milliseconds and MUST NOT generate time
+ instants that specify leap seconds. Keys that are on the device
+ SHOULD only be used when the current date is before the device expiry
+ date. The attribute definition is as follows:
+
+ at-pskc-deviceExpiryDate ATTRIBUTE ::= {
+ TYPE GeneralizedTime IDENTIFIED BY id-pskc-deviceExpiryDate }
+
+ id-pskc-deviceExpiryDate OBJECT IDENTIFIER ::= { id-pskc 7 } Note
+ that usage enforcement of the keys with respect to the dates MAY only
+ happen on the validation server as some devices, such as smart cards,
+ do not have an internal clock. Systems thus SHOULD NOT rely upon the
+ device to enforce key usage date restrictions.
+
+3.1.1.8. Device User Id
+
+ The Device User Id attribute indicates the user with whom the device
+ is associated using a distinguished name, as defined in [RFC4514].
+ For example: UID=jsmith,DC=example,DC=net. The attribute definition
+ is as follows:
+
+
+
+
+Turner & Housley Standards Track [Page 7]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ at-pskc-deviceUserId ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-deviceUserId }
+
+ id-pskc-deviceUserId OBJECT IDENTIFIER ::= { id-pskc 26 }
+
+ As specified in [RFC6030], there are no semantics associated with
+ this element, i.e., there are no checks enforcing that only a
+ specific user can use this device. As such, this element is for
+ informational purposes only.
+
+3.1.2. Cryptographic Module Information Attributes
+
+ Cryptographic Module attributes uniquely identify a cryptographic
+ module. This is useful when the device contains more than one
+ cryptographic module. At this time, only one attribute is defined.
+
+3.1.2.1. Cryptographic Module Identifier
+
+ When included in sKeyPkgAttrs, the Cryptographic Module Identifier
+ attribute uniquely identifies the cryptographic module to which the
+ key is being or was provisioned. The attribute definition is as
+ follows:
+
+ at-pskc-moduleId ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-moduleId }
+
+ id-pskc-moduleId OBJECT IDENTIFIER ::= { id-pskc 8 }
+
+3.2. PSKC Key Attributes
+
+ PSKC key attributes apply to a specific key. As noted earlier, the
+ Key Identifier (Section 3.2.1) and Algorithm (Section 3.2.2) key
+ attributes are REQUIRED. All other attributes are OPTIONAL.
+
+3.2.1. Key Identifier
+
+ When included in sKeyAttrs, the Key Identifier attribute identifies
+ the key in the context of key provisioning exchanges between two
+ parties. This means that if PSKC is used in multiple interactions
+ between a sending and receiving party, using different containers
+ referencing the same keys, the KeyId MUST use the same KeyId values
+ (e.g., after initial provisioning, if a system wants to update key
+ metadata values in the other system, the KeyId value of the key where
+ the metadata is to be updates MUST be the same as the original KeyId
+ value provisioned). The attribute definition is as follows:
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 8]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ at-pskc-keyId ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-keyId }
+
+ id-pskc-keyId OBJECT IDENTIFIER ::= { id-pskc 9 }
+
+3.2.2. Algorithm
+
+ The Algorithm attribute uniquely identifies the PSKC algorithm
+ profile. [RFC6030] defines two algorithm profiles "HOTP" and "PIN".
+ The attribute definition is as follows:
+
+ at-pskc-algorithm ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-algorithm }
+
+ id-pskc-algorithm OBJECT IDENTIFIER ::= { id-pskc 10 }
+
+3.2.3. Issuer
+
+ The Issuer attribute names the entity that issued the key. The
+ attribute definition is as follows:
+
+ at-pskc-issuer ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-issuer }
+
+ id-pskc-issuer OBJECT IDENTIFIER ::= { id-pskc 11 }
+
+3.2.4. Key Profile Identifier
+
+ The Key Profile Identifier attribute carries a unique identifier used
+ between the sending and receiving parties to establish a set of key
+ attribute values that are not transmitted within the container but
+ are agreed upon between the two parties out of band. This attribute
+ will then represent the unique reference to a set of key attribute
+ values.
+
+ at-pskc-keyProfileId ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-keyProfileId }
+
+ id-pskc-keyProfileId OBJECT IDENTIFIER ::= { id-pskc 12 }
+
+3.2.5. Key Reference Identifier
+
+ The Key Reference attribute refers to an external key to be used with
+ a key derivation scheme and no specific key value (secret) is
+ transported; only the reference to the external master key is used
+ (e.g., the PKCS #11 key label).
+
+
+
+
+
+Turner & Housley Standards Track [Page 9]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ at-pskc-keyReference ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-keyReference }
+
+ id-pskc-keyReference OBJECT IDENTIFIER ::= { id-pskc 13 }
+
+3.2.6. Friendly Name
+
+ The Friendly Name attribute contains a human-readable name for the
+ secret key. The attribute definition is as follows:
+
+ at-pskc-friendlyName ATTRIBUTE ::= {
+ TYPE FriendlyName IDENTIFIED BY id-pskc-friendlyName }
+
+ id-pskc-friendlyName OBJECT IDENTIFIER ::= { id-pskc 14 }
+
+ The Friendly Name attribute has the following syntax:
+
+ FriendlyName ::= SEQUENCE {
+ friendlyName UTF8String,
+ friendlyNameLangTag UTF8String OPTIONAL }
+
+ The text is encoded in UTF-8 [RFC3629], which accommodates most of
+ the world's writing systems. The friendlyNameLangTag field
+ identifies the language used to express the friendlyName. When the
+ friendlyNameLangTag field is absent, English, whose associated
+ language tag is "en", is used. The value of the friendlyNameLangTag
+ field MUST be a language tag, as described in [RFC5646].
+
+3.2.7. Algorithm Parameters
+
+ The Algorithm Parameters attribute contains parameters that influence
+ the result of the algorithmic computation, for example, response
+ truncation and format in One-Time Password (OTP) and
+ Challenge/Response (CR) algorithms.
+
+ at-pskc-algorithmParameters ATTRIBUTE ::= {
+ TYPE PSKCAlgorithmParameters
+ IDENTIFIED BY id-pskc-algorithmParams }
+
+ id-pskc-algorithmParams OBJECT IDENTIFIER ::= { id-pskc 15 }
+
+ The Algorithm Parameters attribute has the following syntax:
+
+ PSKCAlgorithmParameters ::= CHOICE {
+ suite UTF8String,
+ challengeFormat [0] ChallengeFormat,
+ responseFormat [1] ResponseFormat,
+ ... }
+
+
+
+Turner & Housley Standards Track [Page 10]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ ChallengeFormat ::= SEQUENCE {
+ encoding Encoding,
+ checkDigit BOOLEAN DEFAULT FALSE,
+ min INTEGER (0..MAX),
+ max INTEGER (0..MAX),
+ ... }
+
+ Encoding ::= UTF8STRING ("DECIMAL" | "HEXADECIMAL" |
+ "ALPHANUMERIC" |"BASE64" |"BINARY")
+
+ ResponseFormat ::= SEQUENCE {
+ encoding Encoding,
+ length INTEGER (0..MAX),
+ checkDigit BOOLEAN DEFAULT FALSE,
+ ... }
+
+ The fields in PSKCAlgorithmParameters have the following meanings:
+
+ o Suite defines additional characteristics of the algorithm used,
+ which are algorithm specific. For example, in an HMAC-based
+ (Hashed Message Authentication Code) OTP algorithm it could
+ designate the strength of the hash algorithm used (SHA1, SHA256,
+ etc.). Please refer to the algorithm profile specification
+ [RFC6030] for the exact semantics of the value for each algorithm
+ profile.
+
+ o ChallengeFormat defines the characteristics of the challenge in a
+ CR usage scenario, whereby the following fields are defined:
+
+ o encoding specifies the encoding of the challenge accepted by the
+ device and MUST be one of the following values: DECIMAL,
+ HEXADECIMAL, ALPHANUMERIC, BASE64, or BINARY. The BASE64
+ encoding is done as in Section 4 of [RFC4648].
+
+ o checkDigit indicates whether a device needs to check the
+ appended Luhn check digit, as defined in [ISOIEC7812], contained
+ in a challenge. The checkDigit MUST NOT be present if the
+ encoding value is anything other than 'DECIMAL'. A value of
+ TRUE indicates that the device will check the appended Luhn
+ check digit in a provided challenge. A value of FALSE indicates
+ that the device will not check the appended Luhn check digit in
+ the challenge.
+
+
+
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 11]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ o min defines the minimum size of the challenge accepted by the
+ device for CR mode. If encoding is 'DECIMAL', 'HEXADECIMAL', or
+ 'ALPHANUMERIC', this value indicates the minimum number of
+ digits/characters. If encoding is 'BASE64' or 'BINARY', this
+ value indicates the minimum number of bytes of the unencoded
+ value.
+
+ o max defines the maximum size of the challenge accepted by the
+ device for CR mode. If encoding is 'DECIMAL', 'HEXADECIMAL', or
+ 'ALPHANUMERIC', this value indicates the maximum number of
+ digits/characters. If the encoding is 'BASE64' or 'BINARY',
+ this value indicates the maximum number of bytes of the
+ unencoded value.
+
+ o ResponseFormat defines the characteristics of the result of a
+ computation and defines the format of the OTP or the response to a
+ challenge. For cases where the key is a personal identification
+ number (PIN) value, this element contains the format of the PIN
+ itself (e.g., DECIMAL, length 4 for a 4 digit PIN). The following
+ fields are defined:
+
+ o encoding specifies the encoding of the response generated by the
+ device and MUST be one of the following values: DECIMAL,
+ HEXADECIMAL, ALPHANUMERIC, BASE64, or BINARY. BASE64 is defined
+ as in Section 4 of [RFC4648].
+
+ o length defines the length of the response generated by the
+ device. If encoding is 'DECIMAL', 'HEXADECIMAL', or
+ 'ALPHANUMERIC', this value indicates the number of
+ digits/characters. If encoding is 'BASE64' or 'BINARY', this
+ value indicates the number of bytes of the unencoded value.
+
+ o checkDigit indicates whether the device needs to append a Luhn
+ check digit, as defined in [ISOIEC7812], to the response. This
+ is only valid if the encoding attribute is 'DECIMAL'. If the
+ value is TRUE, then the device will append a Luhn check digit to
+ the response. If the value is FALSE, then the device will not
+ append a Luhn check digit to the response.
+
+3.2.8. Counter
+
+ The Counter attribute contains the event counter for event-based OTP
+ algorithms. The attribute definition is as follows:
+
+ at-pskc-counter ATTRIBUTE ::= {
+ TYPE INTEGER(0..MAX) IDENTIFIED BY id-pskc-counter }
+
+ id-pskc-counter OBJECT IDENTIFIER ::= { id-pskc 16 }
+
+
+
+Turner & Housley Standards Track [Page 12]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+3.2.9. Time
+
+ The Time attribute conveys the time for time-based OTP algorithms.
+ If the Time Interval attribute is included, then this element carries
+ the number of time intervals passed for a specific start point. If
+ the time interval is used, then this element carries the number of
+ time intervals passed from a specific start point, normally it is
+ algorithm dependent. It uses the BinaryTime syntax from [RFC6019].
+ The attribute definition is as follows:
+
+ at-pskc-time ATTRIBUTE ::= {
+ TYPE BinaryTime IDENTIFIED BY id-pskc-time }
+
+ id-pskc-time OBJECT IDENTIFIER ::= { id-pskc 17 }
+
+3.2.10. Time Interval
+
+ The Time Interval attribute conveys the time interval value for time-
+ based OTP algorithms in seconds (e.g., a value of 30 for this would
+ indicate a time interval of 30 seconds). It is an integer. The
+ attribute definition is as follows:
+
+ at-pskc-timeInterval ATTRIBUTE ::= {
+ TYPE INTEGER (0..MAX) IDENTIFIED BY id-pskc-timeInterval }
+
+ id-pskc-timeInterval OBJECT IDENTIFIER ::= { id-pskc 18 }
+
+3.2.11. Time Drift
+
+ The Time Drift attribute contains the device clock drift value for
+ time-based OTP algorithms. It is an integer, either positive or
+ negative, that indicates the number of time intervals that a
+ validation server has established that the device clock drifted after
+ the last successful authentication. The attribute definition is as
+ follows:
+
+ at-pskc-timeDrift ATTRIBUTE ::= {
+ TYPE INTEGER (0..MAX) IDENTIFIED BY id-pskc-timeDrift }
+
+ id-pskc-timeDrift OBJECT IDENTIFIER ::= { id-pskc 19 }
+
+3.2.12. Value MAC
+
+ The Value MAC attribute is a Message Authentication Code (MAC)
+ generated from the encrypted value in the case that the encryption
+ algorithm does not support integrity checks (e.g., AES-CBC does not
+ provide integrity while AES Key Wrap with a message length indicator
+ (MLI) does). The attribute definition is as follows:
+
+
+
+Turner & Housley Standards Track [Page 13]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ at-pskc-valueMAC ATTRIBUTE ::= {
+ TYPE ValueMac IDENTIFIED BY id-pskc-valueMAC }
+
+ id-pskc-valueMAC OBJECT IDENTIFIER ::= { id-pskc 20 }
+
+ ValueMac ::= SEQUENCE {
+ macAlgorithm UTF8String,
+ mac UTF8String }
+
+ The fields in ValueMac have the following meanings:
+
+ o macAlgorithm identifies the MAC algorithm used to generate the
+ value placed in digest.
+
+ o mac is the base64-encoded, as specified in Section 4 of [RFC4648],
+ mac value.
+
+3.2.13. Key User Id
+
+ The Key User Id attribute indicates the user with whom the key is
+ associated using a distinguished name, as defined in [RFC4514]. For
+ example, UID=jsmith,DC=example,DC=net. The attribute definition is
+ as follows:
+
+ at-pskc-keyUserId ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-keyUserId }
+
+ id-pskc-keyUserId OBJECT IDENTIFIER ::= { id-pskc 27 }
+
+ As specified in [RFC6030], there are no semantics associated with
+ this element, i.e., there are no checks enforcing that only a
+ specific user can use this key. As such, this element is for
+ informational purposes only.
+
+3.3. Key Policy Attributes
+
+ Key policy attributes indicate a policy that can be attached to a
+ key. These attributes are defined in the subsections that follow.
+
+3.3.1. Key Start Date
+
+ When included in sKeyAttrs, the Key Start Date attribute indicates
+ the start of the key's validity period. The date MUST be represented
+ in a form that matches the dateTime production in "canonical
+ representation" [XMLSCHEMA]. Implementations SHOULD NOT rely on time
+ resolution finer than milliseconds and MUST NOT generate time
+ instants that specify leap seconds. The attribute definition is as
+ follows:
+
+
+
+Turner & Housley Standards Track [Page 14]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ at-pskc-keyStartDate ATTRIBUTE ::= {
+ TYPE GeneralizedTime IDENTIFIED BY id-pskc-keyStartDate }
+
+ id-pskc-keyStartDate OBJECT IDENTIFIER ::= { id-pskc 21 }
+
+3.3.2. Key Expiry Date
+
+ When included in sKeyAttrs, the Key Expiry Date attribute indicates
+ the end of the key's validity period. The date MUST be represented
+ in a form that matches the dateTime production in "canonical
+ representation" [XMLSCHEMA]. Implementations SHOULD NOT rely on time
+ resolution finer than milliseconds and MUST NOT generate time
+ instants that specify leap seconds. The attribute definition is as
+ follows:
+
+ at-pskc-keyExpiryDate ATTRIBUTE ::= {
+ TYPE GeneralizedTime IDENTIFIED BY id-pskc-keyExpiryDate }
+
+ id-pskc-keyExpiryDate OBJECT IDENTIFIER ::= { id-pskc 22 }
+
+3.3.3. Number of Transactions
+
+ The Number of Transactions attribute indicates the maximum number of
+ times a key carried within the package can be used. When this
+ element is omitted, there is no restriction regarding the number of
+ times a key can be used. The attribute definition is as follows:
+
+ at-pskc-noOfTransactions ATTRIBUTE ::= {
+ TYPE INTEGER (0..MAX) IDENTIFIED BY id-pskc-noOfTransactions }
+
+ id-pskc-noOfTransactions OBJECT IDENTIFIER ::= { id-pskc 23 }
+
+3.3.4. Key Usage
+
+ The Key Usage attribute constrains the intended usage of the key.
+ The recipient MUST enforce the key usage. The attribute definition
+ is as follows:
+
+ at-pskc-keyUsage ATTRIBUTE ::= {
+ TYPE PSKCKeyUsages IDENTIFIED BY id-pskc-keyUsages }
+
+ id-pskc-keyUsages OBJECT IDENTIFIER ::= { id-pskc 24 }
+
+ PSKCKeyUsages ::= SEQUENCE OF PSKCKeyUsage
+
+ PSKCKeyUsage ::= UTF8String ("OTP" | "CR" | "Encrypt" |
+ "Integrity" | "Verify" | "Unlock" | "Decrypt" |
+ "KeyWrap" | "Unwrap" | "Derive" | "Generate")
+
+
+
+Turner & Housley Standards Track [Page 15]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ The fields in PSKCKeyUsage have the following meanings:
+
+ o OTP: The key MUST only be used for OTP generation.
+
+ o CR: The key MUST only be used for Challenge/Response purposes.
+
+ o Encrypt: The key MUST only be used for data encryption purposes.
+
+ o Integrity: The key MUST only be used to generate a keyed message
+ digest for data integrity or authentication purposes.
+
+ o Verify: The key MUST only be used to verify a keyed message digest
+ for data integrity or authentication purposes (is the converse of
+ Integrity).
+
+ o Unlock: The key MUST only be used for an inverse
+ Challenge/Response in the case in which a user has locked the
+ device by entering an incorrect PIN too many times (for devices
+ with PIN-input capability).
+
+ o Decrypt: The key MUST only be used for data decryption purposes.
+
+ o KeyWrap: The key MUST only be used for key wrap purposes.
+
+ o Unwrap: The key MUST only be used for key unwrap purposes.
+
+ o Derive: The key MUST only be used with a key derivation function
+ to derive a new key (see also Section 8.2.4 of [NIST800-57]).
+
+ o Generate: The key MUST only be used to generate a new key based on
+ a random number and the previous value of the key (see also Section
+ 8.1.5.2.1 of [NIST800-57]).
+
+3.3.5. PIN Policy
+
+ The PIN Policy attribute allows policy about the PIN usage to be
+ associated with the key. The attribute definition is as follows:
+
+ at-pskc-pinPolicy ATTRIBUTE ::= {
+ TYPE PINPolicy IDENTIFIED BY id-pskc-pinPolicy }
+
+ id-pskc-pinPolicy OBJECT IDENTIFIER ::= { id-pskc 25 }
+
+
+
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 16]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ PINPolicy ::= SEQUENCE {
+ pinKeyId [0] UTF8String OPTIONAL,
+ pinUsageMode [1] PINUsageMode,
+ maxFailedAttempts [2] INTEGER (0..MAX) OPTIONAL,
+ minLength [3] INTEGER (0..MAX) OPTIONAL,
+ maxLength [4] INTEGER (0..MAX) OPTIONAL,
+ pinEncoding [5] Encoding OPTIONAL }
+
+ PINUsageMode ::= UTF8String ("Local" | "Prepend" | "Append" |
+ "Algorithmic")
+
+ The fields in PIN Policy have the following meanings:
+
+ o pinKeyId uniquely identifies the key held within this container
+ that contains the value of the PIN that protects the key.
+
+ o pinUsageMode indicates the way the PIN is used during the usage
+ of the key. The following values are defined in [RFC6030]:
+ Local, Prepend, Append, and Algorithmic.
+
+ o maxFailedAttempts indicates the maximum number of times the PIN may
+ be entered incorrectly before it MUST NOT be possible to use the
+ key anymore (reasonable values are in the positive integer range of
+ at least 2 and no more than 10).
+
+ o minLength indicates the minimum length of a PIN that can be set to
+ protect the associated key. It MUST NOT be possible to set a PIN
+ shorter than this value. If pinEncoding is 'DECIMAL',
+ 'HEXADECIMAL', or 'ALPHANUMERIC', this value indicates the number
+ of digits/ characters. If pinEncoding is 'BASE64' or 'BINARY',
+ this value indicates the number of bytes of the unencoded value.
+
+ o maxLength indicates the maximum length of a PIN that can be set to
+ protect this key. It MUST NOT be possible to set a PIN longer than
+ this value. If pinEncoding is 'DECIMAL', 'HEXADECIMAL', or
+ 'ALPHANUMERIC', this value indicates the number of
+ digits/characters. If the pinEncoding is 'BASE64' or 'BINARY',
+ this value indicates the number of bytes of the unencoded value.
+
+ o pinEncoding is based on Encoding, which is defined in Section
+ 3.2.7, and specifies encoding of the PIN and MUST be one of the
+ following values: DECIMAL, HEXADECIMAL, ALPHANUMERIC, BASE64, or
+ BINARY.
+
+ If pinUsageMode is set to "Local", then the device MUST enforce the
+ restriction indicated in maxFailedAttempts, minLength, maxLength, and
+ pinEncoding; otherwise, it MUST be enforced on the server side.
+
+
+
+
+Turner & Housley Standards Track [Page 17]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+4. Key Encoding
+
+ Two parties receiving the same key as an sKey OCTET STRING must make
+ use of the key in exactly the same way in order to interoperate. To
+ ensure that this occurs, it is necessary to define a correspondence
+ between the abstract syntax of sKey and the notation in the standard
+ algorithm description that defines how the key is used. The next
+ sections establish that correspondence for the AES algorithm
+ [FIPS197] and the Triple Data Encryption Algorithm (TDEA or Triple
+ DES) [SP800-67].
+
+4.1. AES Key Encoding
+
+ [FIPS197], Section 5.2, titled "Key Expansion", uses the input key as
+ an array of bytes indexed starting at 0. The first octet of sKey
+ SHALL become the key byte in the AES, labeled index 0 in [FIPS197];
+ the succeeding octets of sKey SHALL become key bytes in AES, in
+ increasing index order.
+
+ Proper parsing and key load of the contents of sKey for AES SHALL be
+ determined by using the following sKey OCTET STRING to generate and
+ match the key expansion test vectors in [FIPS197], Appendix A, for
+ AES Cipher Key: 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c
+
+ Tag Length Value
+ 04 16 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c
+
+4.2. Triple-DES Key Encoding
+
+ A Triple-DES key consists of three keys for the cryptographic engine
+ (Key1, Key2, and Key3) that are each 64 bits (56 key bits and 8
+ parity bits); the three keys are also collectively referred to as a
+ key bundle [SP800-67]. A key bundle may employ either two or three
+ independent keys. When only two independent keys are employed
+ (called two-key Triple DES), the same value is used for Key1 and
+ Key3.
+
+ Each key in a Triple-DES key bundle is expanded into a key schedule
+ according to a procedure defined in [SP800-67], Appendix A. That
+ procedure numbers the bits in the key from 1 to 64, with number 1
+ being the leftmost, or most significant bit (MSB). The first octet
+ of sKey SHALL be bits 1 through 8 of Key1 with bit 1 being the MSB.
+ The second octet of sKey SHALL be bits 9 through 16 of Key1, and so
+ forth, so that the trailing octet of sKey SHALL be bits 57 through 64
+ of Key3 (or Key2 for two-key Triple DES).
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 18]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ Proper parsing and key load of the contents of sKey for Triple DES
+ SHALL be determined by using the following sKey OCTET STRING to
+ generate and match the key expansion test vectors in [SP800-67],
+ Appendix B, for the key bundle:
+
+ Key1 = 0123456789ABCDEF
+
+ Key2 = 23456789ABCDEF01
+
+ Key3 = 456789ABCDEF0123
+
+ Tag Length Value
+ 04 24 0123456789ABCDEF 23456789ABCDEF01 456789ABCDEF0123
+
+5. Security Considerations
+
+ Implementers of this protocol are strongly encouraged to consider
+ generally accepted principles of secure key management when
+ integrating this capability within an overall security architecture.
+
+ The symmetric key package contents are not protected. This content
+ type can be combined with a security protocol to protect the contents
+ of the package. One possibility is to include this content type in
+ place of a PSKC package in [RFC6063] exchanges. In this case, the
+ algorithm requirements are found in those documents. Another
+ possibility is to encapsulate this content type in a CMS [RFC5652]
+ protecting content type.
+
+6. IANA Considerations
+
+ This document makes use of object identifiers to identify a CMS
+ content type (Appendix A.1), the ASN.1 version of the PSKC attributes
+ (Appendix A.2), and the ASN.1 modules found in Appendix A.1 and A.2.
+
+ All OIDs are registered in an arc delegated by RSADSI to the SMIME
+ Working Group.
+
+7. References
+
+7.1. Normative References
+
+ [FIPS197] National Institute of Standards. "FIPS Pub 197:
+ Advanced Encryption Standard (AES)", 26 November 2001.
+
+ [IANAPENREG] IANA, "Private Enterprise Numbers",
+ <http://www.iana.org>.
+
+
+
+
+
+Turner & Housley Standards Track [Page 19]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ [ISOIEC7812] ISO, "ISO/IEC 7812-1:2006 Identification cards --
+ Identification of issuers -- Part 1: Numbering system",
+ October 2006, <http://www.iso.org/iso/iso_catalogue/
+ catalogue_tc/catalogue_detail.htm?csnumber=39698>.
+
+ [OATHMAN] OATH, "List of OATH Manufacturer Prefixes (omp)", April
+ 2009, <http://www.openauthentication.org/
+ oath-id/prefixes>.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
+ 10646", STD 63, RFC 3629, November 2003.
+
+ [RFC4514] Zeilenga, K., Ed., "Lightweight Directory Access
+ Protocol (LDAP): String Representation of Distinguished
+ Names", RFC 4514, June 2006.
+
+ [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
+ Encodings", RFC 4648, October 2006.
+
+ [RFC5646] Phillips, A., Ed., and M. Davis, Ed., "Tags for
+ Identifying Languages", BCP 47, RFC 5646, September
+ 2009.
+
+ [RFC5911] Hoffman, P. and J. Schaad, "New ASN.1 Modules for
+ Cryptographic Message Syntax (CMS) and S/MIME", RFC
+ 5911, June 2010.
+
+ [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the
+ Public Key Infrastructure Using X.509 (PKIX)", RFC 5912,
+ June 2010.
+
+ [RFC6019] Housley, R., "BinaryTime: An Alternate Format for
+ Representing Date and Time in ASN.1", RFC 6019,
+ September 2010.
+
+ [RFC6030] Hoyer, P., Pei, M., and S. Machani, "Portable Symmetric
+ Key Container (PSKC)", RFC 6030, October 2010.
+
+ [SP800-67] National Institute of Standards and Technology, "NIST
+ Special Publication 800-67 Version 1.1: Recommendation
+ for the Triple Data Encryption Algorithm (TDEA) Block
+ Cipher", NIST Special Publication 800-67, May 2008.
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 20]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ [X.680] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824-
+ 1:2002. Information Technology - Abstract Syntax
+ Notation One.
+
+ [X.681] ITU-T Recommendation X.681 (2002) | ISO/IEC 8824-
+ 2:2002. Information Technology - Abstract Syntax
+ Notation One: Information Object Specification.
+
+ [X.682] ITU-T Recommendation X.682 (2002) | ISO/IEC 8824-
+ 3:2002. Information Technology - Abstract Syntax
+ Notation One: Constraint Specification.
+
+ [X.683] ITU-T Recommendation X.683 (2002) | ISO/IEC 8824-
+ 4:2002. Information Technology - Abstract Syntax
+ Notation One: Parameterization of ASN.1 Specifications.
+
+ [X.690] ITU-T Recommendation X.690 (2002) | ISO/IEC 8825-
+ 1:2002. Information Technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER), Canonical
+ Encoding Rules (CER) and Distinguished Encoding Rules
+ (DER).
+
+ [XMLSCHEMA] Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes
+ Second Edition", World Wide Web Consortium
+ Recommendation REC-xmlschema-2-20041082, October 2004,
+ <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.
+
+7.2. Informative References
+
+ [NIST800-57] National Institute of Standards and Technology, "NIST
+ Special Publication 800-57, Recommendation for Key
+ Management - Part 1: General (Revised)", NIST Special
+ Publication 800-57, March 2007.
+
+ [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD
+ 70, RFC 5652, September 2009.
+
+ [RFC6063] Doherty, A., Pei, M., Machani, S., and M. Nystrom,
+ "Dynamic Symmetric Key Provisioning Protocol (DSKPP)",
+ RFC 6063, December 2010.
+
+
+
+
+
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 21]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+Appendix A. ASN.1 Module
+
+ This appendix provides the normative ASN.1 definitions for the
+ structures described in this specification using ASN.1 as defined in
+ [X.680], [X.681], [X.682], and [X.683].
+
+A.1. Symmetric Key Package ASN.1 Module
+
+ SymmetricKeyPackageModulev1
+ { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
+ smime(16) modules(0) id-mod-symmetricKeyPkgV1(33) }
+
+ DEFINITIONS IMPLICIT TAGS ::=
+
+ BEGIN
+
+ -- EXPORTS ALL
+
+ IMPORTS
+
+ -- From New PKIX ASN.1 [RFC5912]
+
+ ATTRIBUTE
+ FROM PKIX-CommonTypes-2009
+ { iso(1) identified-organization(3) dod(6) internet(1)
+ security(5) mechanisms(5) pkix(7) id-mod(0)
+ id-mod-pkixCommon-02(57) }
+
+ -- From New SMIME ASN.1 [RFC5911]
+
+ CONTENT-TYPE, Attribute{}
+ FROM CryptographicMessageSyntax-2009
+ { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
+ smime(16) modules(0) id-mod-cms-2004-02(41) }
+
+ ;
+
+ ContentSet CONTENT-TYPE ::= {
+ ct-symmetric-key-package,
+ ... -- Expect additional content types --
+ }
+
+ ct-symmetric-key-package CONTENT-TYPE ::=
+ { TYPE SymmetricKeyPackage IDENTIFIED BY id-ct-KP-sKeyPackage }
+
+ id-ct-KP-sKeyPackage OBJECT IDENTIFIER ::=
+ { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) ct(1) 25 }
+
+
+
+Turner & Housley Standards Track [Page 22]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ SymmetricKeyPackage ::= SEQUENCE {
+ version KeyPkgVersion DEFAULT v1,
+ sKeyPkgAttrs [0] SEQUENCE SIZE (1..MAX) OF Attribute
+ {{ SKeyPkgAttributes }} OPTIONAL,
+ sKeys SymmetricKeys,
+ ... }
+
+ SymmetricKeys ::= SEQUENCE SIZE (1..MAX) OF OneSymmetricKey
+
+ OneSymmetricKey ::= SEQUENCE {
+ sKeyAttrs SEQUENCE SIZE (1..MAX) OF Attribute
+ {{ SKeyAttributes }} OPTIONAL,
+ sKey OCTET STRING OPTIONAL }
+ ( WITH COMPONENTS { ..., sKeyAttrs PRESENT } |
+ WITH COMPONENTS { ..., sKey PRESENT } )
+
+ KeyPkgVersion ::= INTEGER { v1(1) } ( v1, ... )
+
+ SKeyPkgAttributes ATTRIBUTE ::= { ... }
+
+ SKeyAttributes ATTRIBUTE ::= { ... }
+
+ END
+
+A.2. PSKC ASN.1 Module
+
+ PSKCAttributesModule
+ { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
+ smime(16) modules(0) id-mod-pskcAttributesModule(53) }
+
+ DEFINITIONS IMPLICIT TAGS ::=
+
+ BEGIN
+
+ -- EXPORTS ALL
+
+ IMPORTS
+
+ -- From New PKIX ASN.1 [RFC5912]
+
+ ATTRIBUTE
+ FROM PKIX-CommonTypes-2009
+ { iso(1) identified-organization(3) dod(6) internet(1)
+ security(5) mechanisms(5) pkix(7) id-mod(0)
+ id-mod-pkixCommon-02(57) }
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 23]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ -- From BinaryTime [RFC6019]
+
+ BinaryTime
+ FROM BinarySigningTimeModule
+ { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
+ smime(16) modules(0) id-mod-binarySigningTime(27) }
+
+ -- From New SMIME ASN.1 [RFC5911]
+
+ id-smime
+ FROM SecureMimeMessageV3dot1-2009
+ { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
+ smime(16) modules(0) id-mod-msg-v3dot1-02(39) }
+
+ ;
+
+ --
+ -- PSKC Attributes OIDs are taken from the SMIME Arc.
+ --
+
+ id-pskc OBJECT IDENTIFIER ::= { id-smime 12 }
+
+ --
+ -- Merge SKeyPKGAttributes to the set of attributes for sKeyPkgAttrs
+ --
+
+ SKeyPkgAttributes ATTRIBUTE ::= {
+ at-pskc-manufacturer | at-pskc-serialNo | at-pskc-model |
+ at-pskc-issueNo | at-pskc-deviceBinding |
+ at-pskc-deviceStartDate | at-pskc-deviceExpiryDate |
+ at-pskc-moduleId | at-pskc-deviceUserId, ... }
+
+ --
+ -- Merge SKeyAttributes to the set of attributes for sKeyAttrs
+ --
+
+ SKeyAttributes ATTRIBUTE ::= {
+ at-pskc-keyId | at-pskc-algorithm | at-pskc-issuer |
+ at-pskc-keyProfileId | at-pskc-keyReference |
+ at-pskc-friendlyName | at-pskc-algorithmParameters |
+ at-pskc-counter | at-pskc-time | at-pskc-timeInterval |
+ at-pskc-timeDrift | at-pskc-valueMAC | at-pskc-keyUserId |
+ at-pskc-keyStartDate | at-pskc-keyExpiryDate |
+ at-pskc-numberOfTransactions | at-pskc-keyUsage |
+ at-pskc-pinPolicy, ... }
+
+ at-pskc-manufacturer ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-manufacturer }
+
+
+
+Turner & Housley Standards Track [Page 24]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ id-pskc-manufacturer OBJECT IDENTIFIER ::= { id-pskc 1 }
+
+ at-pskc-serialNo ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-serialNo }
+
+ id-pskc-serialNo OBJECT IDENTIFIER ::= { id-pskc 2 }
+
+ at-pskc-model ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-model }
+
+ id-pskc-model OBJECT IDENTIFIER ::= { id-pskc 3 }
+
+ at-pskc-issueNo ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-issueNo }
+
+ id-pskc-issueNo OBJECT IDENTIFIER ::= { id-pskc 4 }
+
+ at-pskc-deviceBinding ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-deviceBinding }
+
+ id-pskc-deviceBinding OBJECT IDENTIFIER ::= { id-pskc 5 }
+
+ at-pskc-deviceStartDate ATTRIBUTE ::= {
+ TYPE GeneralizedTime IDENTIFIED BY id-pskc-deviceStartDate }
+
+ id-pskc-deviceStartDate OBJECT IDENTIFIER ::= { id-pskc 6 }
+
+ at-pskc-deviceExpiryDate ATTRIBUTE ::= {
+ TYPE GeneralizedTime IDENTIFIED BY id-pskc-deviceExpiryDate }
+
+ id-pskc-deviceExpiryDate OBJECT IDENTIFIER ::= { id-pskc 7 }
+
+ at-pskc-moduleId ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-moduleId }
+
+ id-pskc-moduleId OBJECT IDENTIFIER ::= { id-pskc 8 }
+
+ at-pskc-deviceUserId ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-deviceUserId }
+
+ id-pskc-deviceUserId OBJECT IDENTIFIER ::= { id-pskc 26 }
+
+ at-pskc-keyId ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-keyId }
+
+ id-pskc-keyId OBJECT IDENTIFIER ::= { id-pskc 9 }
+
+
+
+
+
+Turner & Housley Standards Track [Page 25]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ at-pskc-algorithm ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-algorithm }
+
+ id-pskc-algorithm OBJECT IDENTIFIER ::= { id-pskc 10 }
+
+ at-pskc-issuer ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-issuer }
+
+ id-pskc-issuer OBJECT IDENTIFIER ::= { id-pskc 11 }
+
+ at-pskc-keyProfileId ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-keyProfileId }
+
+ id-pskc-keyProfileId OBJECT IDENTIFIER ::= { id-pskc 12 }
+
+ at-pskc-keyReference ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-keyReference }
+
+ id-pskc-keyReference OBJECT IDENTIFIER ::= { id-pskc 13 }
+
+ at-pskc-friendlyName ATTRIBUTE ::= {
+ TYPE FriendlyName IDENTIFIED BY id-pskc-friendlyName }
+
+ id-pskc-friendlyName OBJECT IDENTIFIER ::= { id-pskc 14 }
+
+ FriendlyName ::= SEQUENCE {
+ friendlyName UTF8String,
+ friendlyNameLangTag UTF8String OPTIONAL }
+
+ at-pskc-algorithmParameters ATTRIBUTE ::= {
+ TYPE PSKCAlgorithmParameters
+ IDENTIFIED BY id-pskc-algorithmParameters }
+
+ id-pskc-algorithmParameters OBJECT IDENTIFIER ::= { id-pskc 15 }
+
+ PSKCAlgorithmParameters ::= CHOICE {
+ suite UTF8String,
+ challengeFormat [0] ChallengeFormat,
+ responseFormat [1] ResponseFormat,
+ ... }
+
+ ChallengeFormat ::= SEQUENCE {
+ encoding Encoding,
+ checkDigit BOOLEAN DEFAULT FALSE,
+ min INTEGER (0..MAX),
+ max INTEGER (0..MAX),
+ ... }
+
+
+
+
+Turner & Housley Standards Track [Page 26]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ Encoding ::= UTF8String ("DECIMAL" | "HEXADECIMAL" |
+ "ALPHANUMERIC" | "BASE64" | "BINARY" )
+
+ ResponseFormat ::= SEQUENCE {
+ encoding Encoding,
+ length INTEGER (0..MAX),
+ checkDigit BOOLEAN DEFAULT FALSE,
+ ... }
+
+ at-pskc-counter ATTRIBUTE ::= {
+ TYPE INTEGER (0..MAX) IDENTIFIED BY id-pskc-counter }
+
+ id-pskc-counter OBJECT IDENTIFIER ::= { id-pskc 16 }
+
+ at-pskc-time ATTRIBUTE ::= {
+ TYPE BinaryTime IDENTIFIED BY id-pskc-time }
+
+ id-pskc-time OBJECT IDENTIFIER ::= { id-pskc 17 }
+
+ at-pskc-timeInterval ATTRIBUTE ::= {
+ TYPE INTEGER (0..MAX) IDENTIFIED BY id-pskc-timeInterval }
+
+ id-pskc-timeInterval OBJECT IDENTIFIER ::= { id-pskc 18 }
+
+ at-pskc-timeDrift ATTRIBUTE ::= {
+ TYPE INTEGER (0..MAX) IDENTIFIED BY id-pskc-timeDrift }
+
+ id-pskc-timeDrift OBJECT IDENTIFIER ::= { id-pskc 19 }
+
+ at-pskc-valueMAC ATTRIBUTE ::= {
+ TYPE ValueMac IDENTIFIED BY id-pskc-valueMAC }
+
+ id-pskc-valueMAC OBJECT IDENTIFIER ::= { id-pskc 20 }
+
+ ValueMac ::= SEQUENCE {
+ macAlgorithm UTF8String,
+ mac UTF8String }
+
+ at-pskc-keyUserId ATTRIBUTE ::= {
+ TYPE UTF8String IDENTIFIED BY id-pskc-keyUserId }
+
+ id-pskc-keyUserId OBJECT IDENTIFIER ::= { id-pskc 27 }
+
+ at-pskc-keyStartDate ATTRIBUTE ::= {
+ TYPE GeneralizedTime IDENTIFIED BY id-pskc-keyStartDate }
+
+ id-pskc-keyStartDate OBJECT IDENTIFIER ::= { id-pskc 21 }
+
+
+
+
+Turner & Housley Standards Track [Page 27]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+ at-pskc-keyExpiryDate ATTRIBUTE ::= {
+ TYPE GeneralizedTime IDENTIFIED BY id-pskc-keyExpiryDate }
+
+ id-pskc-keyExpiryDate OBJECT IDENTIFIER ::= { id-pskc 22 }
+
+ at-pskc-numberOfTransactions ATTRIBUTE ::= {
+ TYPE INTEGER (0..MAX) IDENTIFIED BY id-pskc-numberOfTransactions }
+
+ id-pskc-numberOfTransactions OBJECT IDENTIFIER ::= { id-pskc 23 }
+
+ at-pskc-keyUsage ATTRIBUTE ::= {
+ TYPE PSKCKeyUsages IDENTIFIED BY id-pskc-keyUsages }
+
+ id-pskc-keyUsages OBJECT IDENTIFIER ::= { id-pskc 24 }
+
+ PSKCKeyUsages ::= SEQUENCE OF PSKCKeyUsage
+
+ PSKCKeyUsage ::= UTF8String ("OTP" | "CR" | "Encrypt" |
+ "Integrity" | "Verify" | "Unlock" | "Decrypt" |
+ "KeyWrap" | "Unwrap" | "Derive" | "Generate")
+
+ at-pskc-pinPolicy ATTRIBUTE ::= {
+ TYPE PINPolicy IDENTIFIED BY id-pskc-pinPolicy }
+
+ id-pskc-pinPolicy OBJECT IDENTIFIER ::= { id-pskc 25 }
+
+ PINPolicy ::= SEQUENCE {
+ pinKeyId [0] UTF8String OPTIONAL,
+ pinUsageMode [1] PINUsageMode,
+ maxFailedAttempts [2] INTEGER (0..MAX) OPTIONAL,
+ minLength [3] INTEGER (0..MAX) OPTIONAL,
+ maxLength [4] INTEGER (0..MAX) OPTIONAL,
+ pinEncoding [5] Encoding OPTIONAL }
+
+ PINUsageMode ::= UTF8String ("Local" | "Prepend" | "Append"|
+ "Algorithmic")
+
+ END
+
+
+
+
+
+
+
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 28]
+
+RFC 6031 CMS Symmetric Key Package Content Type December 2010
+
+
+Authors' Addresses
+
+ Sean Turner
+ IECA, Inc.
+ 3057 Nutley Street, Suite 106
+ Fairfax, VA 22031
+ USA
+
+ EMail: turners@ieca.com
+
+
+ Russell Housley
+ Vigil Security, LLC
+ 918 Spring Knoll Drive
+ Herndon, VA 20170
+ USA
+
+ EMail: housley@vigilsec.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Turner & Housley Standards Track [Page 29]
+