draft-ietf-keyprov-portable-symmetric-key-container-03.txt   draft-ietf-keyprov-portable-symmetric-key-container-04.txt 
keyprov P. Hoyer keyprov P. Hoyer
Internet-Draft ActivIdentity Internet-Draft ActivIdentity
Intended status: Standards Track M. Pei Intended status: Standards Track M. Pei
Expires: August 25, 2008 VeriSign Expires: October 23, 2008 VeriSign
S. Machani S. Machani
Diversinet Diversinet
February 22, 2008 April 21, 2008
Portable Symmetric Key Container Portable Symmetric Key Container
draft-ietf-keyprov-portable-symmetric-key-container-03.txt draft-ietf-keyprov-portable-symmetric-key-container-04.txt
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 37 skipping to change at page 1, line 37
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 25, 2008. This Internet-Draft will expire on October 23, 2008.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2008). Copyright (C) The IETF Trust (2008).
Abstract Abstract
This document specifies a symmetric key format for transport and This document specifies a symmetric key format for transport and
provisioning of symmetric keys (One Time Password (OTP) shared provisioning of symmetric keys (for example One Time Password (OTP)
secrets or symmetric cryptographic keys) to different types of strong shared secrets or symmetric cryptographic keys) to different types of
authentication devices. The standard token format enables crypto modules such as a strong authentication device. The standard
enterprises to deploy best-of-breed solutions combining components key transport format enables enterprises to deploy best-of-breed
from different vendors into the same infrastructure. solutions combining components from different vendors into the same
infrastructure.
This work is a joint effort by the members of OATH (Initiative for This work is a joint effort by the members of OATH (Initiative for
Open AuTHentication) to specify a format that can be freely Open AuTHentication) to specify a format that can be freely
distributed to the technical community. The authors believe that a distributed to the technical community. The authors believe that a
common and shared specification will facilitate adoption of two- common and shared specification will facilitate adoption of two-
factor authentication on the Internet by enabling interoperability factor authentication on the Internet by enabling interoperability
between commercial and open-source implementations. between commercial and open-source implementations.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Conventions used in this document . . . . . . . . . . . . . . 5 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1. Key Words . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1. Offline Use Cases . . . . . . . . . . . . . . . . . . . . 6 2.2. Definitions . . . . . . . . . . . . . . . . . . . . . . . 6
3.1.1. Key migration by end-user . . . . . . . . . . . . . . 6 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.2. Bulk import of new keys . . . . . . . . . . . . . . . 6 3.1. Online Use Cases . . . . . . . . . . . . . . . . . . . . . 8
3.1.3. Bulk migration of existing keys . . . . . . . . . . . 7 3.1.1. Transport of keys from Server to Crypto Module . . . . 8
3.1.4. Key upload case . . . . . . . . . . . . . . . . . . . 7 3.1.2. Transport of keys from Crypto Module to Crypto
3.2. Online Use Cases . . . . . . . . . . . . . . . . . . . . . 7 Module . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.1. Online provisioning a key to end-user's 3.1.3. Transport of keys from Crypto Module to Server . . . . 9
authentication token . . . . . . . . . . . . . . . . . 7 3.1.4. Server to server Bulk import/export of keys . . . . . 9
3.2.2. Server to server provisioning of keys . . . . . . . . 8 3.2. Offline Use Cases . . . . . . . . . . . . . . . . . . . . 9
3.2.3. Online update of an existing authentication token 3.2.1. Server to server Bulk import/export of keys . . . . . 9
key . . . . . . . . . . . . . . . . . . . . . . . . . 8 4. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 11
4. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 9 5. Portable Key container definition . . . . . . . . . . . . . . 13
5. Portable Key container definition . . . . . . . . . . . . . . 11 5.1. KeyContainer . . . . . . . . . . . . . . . . . . . . . . . 13
5.1. KeyContainer . . . . . . . . . . . . . . . . . . . . . . . 11 5.2. Device . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2. Device . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.2.1. DeviceId . . . . . . . . . . . . . . . . . . . . . . . 15
5.2.1. DeviceId . . . . . . . . . . . . . . . . . . . . . . . 13 5.3. KeyProperties . . . . . . . . . . . . . . . . . . . . . . 16
5.3. Key . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.4. Key . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.3.1. Data (OPTIONAL) . . . . . . . . . . . . . . . . . . . 17 5.4.1. Data (OPTIONAL) . . . . . . . . . . . . . . . . . . . 20
5.3.2. Usage (MANDATORY) . . . . . . . . . . . . . . . . . . 17 5.4.2. Usage (MANDATORY) . . . . . . . . . . . . . . . . . . 21
5.3.3. ValueFormat . . . . . . . . . . . . . . . . . . . . . 21 5.4.3. ValueFormat . . . . . . . . . . . . . . . . . . . . . 25
5.3.4. PINPolicy . . . . . . . . . . . . . . . . . . . . . . 22 5.4.4. PINPolicy . . . . . . . . . . . . . . . . . . . . . . 26
6. Usage and profile of algorithms for the portable symmetric 6. Usage and profile of algorithms for the portable symmetric
key container . . . . . . . . . . . . . . . . . . . . . . . . 24 key container . . . . . . . . . . . . . . . . . . . . . . . . 28
6.1. Usage of EncryptionKey to protect keys in transit . . . . 24 6.1. Usage of EncryptionKey to protect keys in transit . . . . 28
6.1.1. Protecting keys using a pre-shared key via 6.1.1. Protecting keys using a pre-shared key via
symmetric algorithms . . . . . . . . . . . . . . . . . 24 symmetric algorithms . . . . . . . . . . . . . . . . . 28
6.1.2. Protecting keys using passphrase based encryption 6.1.2. Protecting keys using passphrase based encryption
keys . . . . . . . . . . . . . . . . . . . . . . . . . 25 keys . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.2. Protecting keys using asymmetric algorithms . . . . . . . 27 6.2. Protecting keys using asymmetric algorithms . . . . . . . 31
6.3. Profile of Key Algorithm . . . . . . . . . . . . . . . . . 28 6.3. Profile of Key Algorithm . . . . . . . . . . . . . . . . . 32
6.3.1. OTP Key Algorithm Identifiers . . . . . . . . . . . . 28 6.3.1. OTP Key Algorithm Identifiers . . . . . . . . . . . . 33
6.3.2. PIN key value compare algorithm identifier . . . . . . 28 6.3.2. PIN key value compare algorithm identifier . . . . . . 33
7. Reserved data attribute names . . . . . . . . . . . . . . . . 30 7. Reserved data attribute names . . . . . . . . . . . . . . . . 34
8. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 31 8. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 35
9. Security Considerations . . . . . . . . . . . . . . . . . . . 35 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40
9.1. Payload confidentiality . . . . . . . . . . . . . . . . . 35 9.1. Content-type registration for 'application/pskc+xml' . . . 40
9.2. Payload integrity . . . . . . . . . . . . . . . . . . . . 36 9.2. XML Schema Registration . . . . . . . . . . . . . . . . . 41
9.3. Payload authenticity . . . . . . . . . . . . . . . . . . . 36 9.3. URN Sub-Namespace Registration for
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 37 urn:ietf:params:xml:ns:keyprov:container:1.0 . . . . . . . 41
11. Appendix A - Example Symmetric Key Containers . . . . . . . . 38 9.4. Symmetric Key Algorithm Identifier Registry . . . . . . . 42
11.1. Symmetric Key Container with a single Non-Encrypted 9.4.1. Applicability . . . . . . . . . . . . . . . . . . . . 42
HOTP Secret Key . . . . . . . . . . . . . . . . . . . . . 38 9.4.2. Registerable Algorithms . . . . . . . . . . . . . . . 43
11.2. Symmetric Key Container with a single PIN protected 9.4.3. Registration Procedures . . . . . . . . . . . . . . . 44
Non-Encrypted HOTP Secret Key . . . . . . . . . . . . . . 38 9.4.4. Initial Values . . . . . . . . . . . . . . . . . . . . 46
11.3. Symmetric Key Container with a single AES-256-CBC 9.5. XML Data Tag Identifier Registry . . . . . . . . . . . . . 49
Encrypted HOTP Secret Key . . . . . . . . . . . . . . . . 39 9.5.1. Applicability . . . . . . . . . . . . . . . . . . . . 49
11.4. Symmetric Key Container with signature and a single 9.5.2. Registerable Data Tags . . . . . . . . . . . . . . . . 50
Password-based Encrypted HOTP Secret Key . . . . . . . . . 40 9.5.3. Registration Procedures . . . . . . . . . . . . . . . 50
11.5. Symmetric Key Container with a single RSA 1.5 9.5.4. Initial Values . . . . . . . . . . . . . . . . . . . . 51
Encrypted HOTP Secret Key . . . . . . . . . . . . . . . . 42 10. Security Considerations . . . . . . . . . . . . . . . . . . . 53
12. Normative References . . . . . . . . . . . . . . . . . . . . . 44 10.1. Payload confidentiality . . . . . . . . . . . . . . . . . 53
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 46 10.2. Payload integrity . . . . . . . . . . . . . . . . . . . . 54
Intellectual Property and Copyright Statements . . . . . . . . . . 47 10.3. Payload authenticity . . . . . . . . . . . . . . . . . . . 54
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 55
12. Appendix A - Example Symmetric Key Containers . . . . . . . . 56
12.1. Symmetric Key Container with a single Non-Encrypted
HOTP Secret Key . . . . . . . . . . . . . . . . . . . . . 56
12.2. Symmetric Key Container with a single PIN protected
Non-Encrypted HOTP Secret Key . . . . . . . . . . . . . . 56
12.3. Symmetric Key Container with a single AES-256-CBC
Encrypted HOTP Secret Key . . . . . . . . . . . . . . . . 57
12.4. Symmetric Key Container with signature and a single
Password-based Encrypted HOTP Secret Key . . . . . . . . . 58
12.5. Symmetric Key Container with a single RSA 1.5
Encrypted HOTP Secret Key . . . . . . . . . . . . . . . . 60
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 62
13.1. Normative References . . . . . . . . . . . . . . . . . . . 62
13.2. Informative References . . . . . . . . . . . . . . . . . . 62
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 64
Intellectual Property and Copyright Statements . . . . . . . . . . 65
1. Introduction 1. Introduction
With increasing use of symmetric key based authentication systems With increasing use of symmetric key based authentication systems
such as systems based one time password (OTP) and challenge response such as systems based one time password (OTP) and challenge response
mechanisms, there is a need for vendor interoperability and a mechanisms, there is a need for vendor interoperability and a
standard format for importing, exporting or provisioning symmetric standard format for importing, exporting or provisioning symmetric
keys from one system to another. Traditionally authentication server keys from one system to another. Traditionally authentication server
vendors and service providers have used proprietary formats for vendors and service providers have used proprietary formats for
importing, exporting and provisioning these keys into their systems importing, exporting and provisioning these keys into their systems
skipping to change at page 5, line 5 skipping to change at page 6, line 5
and certificates between systems. In the environments outlined in and certificates between systems. In the environments outlined in
this document where OTP keys may be transported directly down to this document where OTP keys may be transported directly down to
smartcards or devices with limited computing capabilities, a format smartcards or devices with limited computing capabilities, a format
with small (size in bytes) and explicit shared secret configuration with small (size in bytes) and explicit shared secret configuration
attribute information is desirable, avoiding complexity of PKCS#12. attribute information is desirable, avoiding complexity of PKCS#12.
For example, one would have to use opaque data within PKCS#12 to For example, one would have to use opaque data within PKCS#12 to
carry shared secret attributes used for OTP calculations, whereas a carry shared secret attributes used for OTP calculations, whereas a
more explicit attribute schema definition is better for more explicit attribute schema definition is better for
interoperability and efficiency. interoperability and efficiency.
2. Conventions used in this document 2. Terminology
2.1. Key Words
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
In examples, "C:" and "S:" indicate lines sent by the client and 2.2. Definitions
server respectively.
In the text below, OTP refers to one time password. This section defines terms used in this document. The same terms may
be defined differently in other documents.
3. Use Cases Authentication Token: A physical device that an authorized user of
computer services is given to aid in authentication. The term may
also refer to software tokens.
This section describes a comprehensive list of use cases that Bulk Provisioning: Transferring multiple keys linked to multiple
inspired the development of this specification. These requirements devices in a single execution step within one single PSKC
were used to derive the primary requirement that drove the design. KeyContainer
These requirements are covered in the next section.
These use cases also help in understanding the applicability of this Cryptographic Module: A component of an application, which enables
specification to real world situations. symmetric key cryptographic functionality
3.1. Offline Use Cases Cryptographic Key: A parameter used in conjunction with a
cryptographic algorithm that determines its operation in such a
way that an entity with knowledge of the key can reproduce or
reverse the operation, while an entity without knowledge of the
key cannot (see [NIST-SP800-57])
This section describes the use cases relating to offline transport of Cryptographic Token: See Authentication Token
keys from one system to another, using some form of export and import
model.
3.1.1. Key migration by end-user Device: A physical piece of hardware, or a software framework, that
hosts symmetric keys
A user wants to migrate a key from one authentication token Device ID (DeviceId): A unique identifier for the device,
(container) to a different authentication token. For example, the representing the identifying criteria to uniquely identify a
authentication tokens may be soft tokens on two different systems device
(computers or mobile phones). The user can export the key and
related data in a standard format for import into the other
authentication token.
The key protection mechanism may rely on password-based encryption Dynamic Provisioning: Usage of a protocol, such as DSKPP, to make a
for soft tokens, a pre-placed hardware-protected transfer key shared key container available to a recipient
between the two systems or may also rely on asymmetric keys/ PKI if
available.
3.1.2. Bulk import of new keys Encryption Key: A key used to encrypt key
Tokens are manufactured in bulk and associated keys and algorithm Key: See Cryptographic Key
data need to be loaded into the validation system through a file on Hardware Token: See Authentication Token
portable media. The manufacturer provides the keys and related data
in the form of a file containing records in standard format,
typically on a CD. Note that the token manufacturer and the vendor
for the validation system may be the same or different.
In this case the file usually is protected by a symmetric transport Key Algorithm: A well-defined computational procedure that takes
key which was communicated separately outside of the file between the variable inputs including a cryptographic key and produces an
two parties. output.
Some devices will allow local PIN management (the device will have a Key Container: An object that encapsulates symmetric keys and their
PIN pad) hence random initial PINs set at manufacturing should be attributes for set of devices
transmitted together with the respective keys they protect.
3.1.3. Bulk migration of existing keys Key ID (KeyID): A unique identifier for the symmetric key
An enterprise wants to port keys and related data from an existing Key Issuer: An organization that issues symmetric keys to end-users
validation system A into a different validation system B. The
existing validation system provides the enterprise with a
functionality that enables export of keys and related data (e.g. for
OTP tokens) in a standard format. Since the OTP tokens are in the
standard format, the enterprise can import the token records into the
new validation system B and start using the existing tokens. Note
that the vendors for the two validation systems may be the same or
different.
In this case the file usually is protected by a symmetric transport Key Type: The type of symmetric key cryptographic methods for which
key which was communicated separately outside of the file between the the key will be used (e.g., OATH HOTP or RSA SecurID
two validation systems. authentication, AES encryption, etc.)
In this case it is also important to be able to communicate the Secret Key: The symmetric key data
existing assignment (binding) of a device to a specific user.
3.1.4. Key upload case Software Token: A type of authentication token that is stored on a
general-purpose electronic device such as a desktop computer,
laptop, PDA, or mobile phone
User wants to activate and use a new key and related data against a Token: See Authentication Token
validation system that is not aware of this key. This key may be
embedded in the authentication token (e.g. SD card, USB drive) that
the user has purchased at the local electronics retailer. Along with
the authentication token, the user may get the key on a CD or a
floppy in a standard format. The user can now upload via a secure
online channel or import this key and related data into the new
validation system and start using the key.
The key protection mechanism may rely on password-based encryption, User: The person or client to whom devices are issued
or a pre-placed hardware-protected transfer key shared between the
token manufacturer and the validation system(s) if available.
3.2. Online Use Cases User ID: A unique identifier for the user or client
3. Use Cases
This section describes a comprehensive list of use cases that
inspired the development of this specification. These requirements
were used to derive the primary requirement that drove the design.
These requirements are covered in the next section.
These use cases also help in understanding the applicability of this
specification to real world situations.
3.1. Online Use Cases
This section describes the use cases related to provisioning the keys This section describes the use cases related to provisioning the keys
using some form of a online provisioning protocol. using an online provisioning protocol such as [DSKPP]
3.2.1. Online provisioning a key to end-user's authentication token 3.1.1. Transport of keys from Server to Crypto Module
A mobile device user wants to obtain an OTP key for use with an OTP For example, a mobile device user wants to obtain a symmetric key for
soft token on the device. The soft token client from vendor A use with a cryptomodule on the device. The cryptomodule client from
initiates the provisioning process against a provisioning system from vendor A initiates the provisioning process against a provisioning
vendor B using a standards-based provisioning protocol such as system from vendor B using a standards-based provisioning protocol
[DSKPP]. The provisioning system delivers one or more keys in a such as [DSKPP]. The provisioning entity delivers one or more keys
standard format that can be processed by the mobile device. The user in a standard format that can be processed by the mobile device.
can download a payload that contains more than one key.
In a variation of the above, instead of the user's mobile phone, a For example, in a variation of the above, instead of the user's
key is provisioned in the user's soft token application on a laptop mobile phone, a key is provisioned in the user's soft token
using a network-based online protocol. As before, the provisioning application on a laptop using a network-based online protocol. As
system delivers an OTP key in a standard format that can be processed before, the provisioning system delivers a key in a standard format
by the soft token on the PC. that can be processed by the soft token on the PC.
3.2.2. Server to server provisioning of keys For example, the end-user or the key issuer wants to update or
configure an existing key in the cryptomodule and requests a
replacement key container. The container may or may not include a
new key and may include new or updated key attributes such as a new
counter value in HOTP key case, a modified response format or length,
a new friendly name, etc.
Sometimes, instead of importing keys from a manufacturer using a 3.1.2. Transport of keys from Crypto Module to Crypto Module
file, an OTP validation server may download the keys using an online
For example, a user wants to transport a key from one cryptomodule to
another. There may be two cryptographic modules, one on a computer
one on a mobile phone, and the user wants to transport a key from the
computer to the mobile phone. The user can export the key and
related data in a standard format for input into the other
cryptomodule.
3.1.3. Transport of keys from Crypto Module to Server
For example, a user wants to activate and use a new key and related
data against a validation system that is not aware of this key. This
key may be embedded in the cryptomodule (e.g. SD card, USB drive)
that the user has purchased at the local electronics retailer. Along
with the cryptomodule, the user may get the key on a CD or a floppy
in a standard format. The user can now upload via a secure online
channel or import this key and related data into the new validation
system and start using the key.
3.1.4. Server to server Bulk import/export of keys
From time to time, a key management system may be required to import
or export keys in bulk from one entity to another.
For example, instead of importing keys from a manufacturer using a
file, a validation server may download the keys using an online
protocol. The keys can be downloaded in a standard format that can protocol. The keys can be downloaded in a standard format that can
be processed by a validation system. be processed by a validation system.
In another scenario, an OTA (over-the-air) key provisioning gateway For example, in a variation of the above, an OTA key provisioning
that provisions keys to mobile phones may obtain key material from a gateway that provisions keys to mobile phones may obtain key material
key issuer using an online protocol. The keys are delivered in a from a key issuer using an online protocol. The keys are delivered
standard format that can be processed by the OTA key provisioning in a standard format that can be processed by the key provisioning
gateway and subsequently sent to the end-user's mobile phone. gateway and subsequently sent to the end-user's mobile phone.
3.2.3. Online update of an existing authentication token key 3.2. Offline Use Cases
The end-user or the key issuer wants to update or configure an This section describes the use cases relating to offline transport of
existing key in the authentication token and requests a replacement keys from one system to another, using some form of export and import
key container. The container may or may not include a new key and model.
may include new or updated key attributes such as a new counter value
in HOTP key case, a modified response format or length, a new 3.2.1. Server to server Bulk import/export of keys
friendly name, etc.
For example, crypto modules such as OTP authentication tokens, may
have their symmetric keys initialized during the manufacturing
process in bulk, requiring copies of the keys and algorithm data to
be loaded into the authentication system through a file on portable
media. The manufacturer provides the keys and related data in the
form of a file containing records in standard format, typically on a
CD. Note that the token manufacturer and the vendor for the
validation system may be the same or different. Some crypto modules
will allow local PIN management (the device will have a PIN pad)
hence random initial PINs set at manufacturing should be transmitted
together with the respective keys they protect.
For example, an enterprise wants to port keys and related data from
an existing validation system A into a different validation system B.
The existing validation system provides the enterprise with a
functionality that enables export of keys and related data (e.g. for
OTP authentication tokens) in a standard format. Since the OTP
tokens are in the standard format, the enterprise can import the
token records into the new validation system B and start using the
existing tokens. Note that the vendors for the two validation
systems may be the same or different.
4. Requirements 4. Requirements
This section outlines the most relevant requirements that are the This section outlines the most relevant requirements that are the
basis of this work. Several of the requirements were derived from basis of this work. Several of the requirements were derived from
use cases described above. use cases described above.
R1: The format MUST support transport of multiple types of R1: The format MUST support transport of multiple types of
symmetric keys and related attributes for algorithms including symmetric keys and related attributes for algorithms including
HOTP, other OTP, challenge-response, etc. HOTP, other OTP, challenge-response, etc.
skipping to change at page 9, line 38 skipping to change at page 11, line 38
* Key friendly name * Key friendly name
* Event counter value (moving factor for OTP algorithms) * Event counter value (moving factor for OTP algorithms)
* Time value * Time value
R3: The format SHOULD support both offline and online scenarios. R3: The format SHOULD support both offline and online scenarios.
That is it should be serializable to a file as well as it That is it should be serializable to a file as well as it
should be possible to use this format in online provisioning should be possible to use this format in online provisioning
protocols protocols such as [DSKPP]
R4: The format SHOULD allow bulk representation of symmetric keys R4: The format SHOULD allow bulk representation of symmetric keys
R5: The format SHOULD allow bulk representation of PINs related to R5: The format SHOULD allow bulk representation of PINs related to
specific keys specific keys
R6: The format SHOULD be portable to various platforms. R6: The format SHOULD be portable to various platforms.
Furthermore, it SHOULD be computationally efficient to process. Furthermore, it SHOULD be computationally efficient to process.
R7: The format MUST provide appropriate level of security in terms R7: The format MUST provide appropriate level of security in terms
skipping to change at page 11, line 14 skipping to change at page 13, line 14
5. Portable Key container definition 5. Portable Key container definition
The portable key container is based on an XML schema definition and The portable key container is based on an XML schema definition and
contains the following main entities: contains the following main entities:
1. KeyContainer entity as defined in Section 5.1 1. KeyContainer entity as defined in Section 5.1
2. Device entity as defined in Section 5.2 2. Device entity as defined in Section 5.2
3. Key entity as defined in Section 5.3 3. Key entity as defined in Section 5.4
Additionally other XML schema types have been defined and are Additionally other XML schema types have been defined and are
detailed in the relevant subsections of this document detailed in the relevant subsections of this document
A KeyContainer MAY contain one or more Device entities. A Device MAY A KeyContainer MAY contain one or more Device entities. A Device MAY
contain one or more Key entities contain one or more Key entities
The figure below indicates a possible relationship diagram of a The figure below indicates a possible relationship diagram of a
container. container.
skipping to change at page 12, line 23 skipping to change at page 14, line 23
<xs:element name="Signature" <xs:element name="Signature"
type="ds:SignatureType" minOccurs="0"/> type="ds:SignatureType" minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="Version" type="pskc:VersionType" use="required"/> <xs:attribute name="Version" type="pskc:VersionType" use="required"/>
</xs:complexType> </xs:complexType>
The elements of the KeyContainer have the following meanings: The elements of the KeyContainer have the following meanings:
o <EncryptionKey (OPTIONAL)>, Identifies the encryption key, o <EncryptionKey (OPTIONAL)>, Identifies the encryption key,
algorithm and possible parameters used to protect the Secret Key algorithm and possible parameters used to protect the Secret Key
data in the container, for profile and usage please see data in the container. Please see Section 6.1 for detailed
Section 6.1 description of how to protect key data in transit and the usage of
this element.
o <MACAlgorithm (OPTIONAL)>, Identifies the algorithm used to o <MACAlgorithm (OPTIONAL)>, Identifies the algorithm used to
generate a keyed digest of the the Secret Key data values when generate a keyed digest of the the Secret Key data values when
protection algorithms are used that do not have integrity checks. protection algorithms are used that do not have integrity checks.
The digest guarantees the integrity and the authenticity of the The digest guarantees the integrity and the authenticity of the
key data. for profile and usage please see Section 6.1.1 key data. for profile and usage please see Section 6.1.1
o <Device>, the host Device for one or more Keys as defined in o <Device>, the host Device for one or more Keys as defined in
Section 5.2 The KeyContainer MAY contain multiple Device data Section 5.2 The KeyContainer MAY contain multiple Device data
elements, allowing for bulk provisioning of keys. elements, allowing for bulk provisioning of multiple devices each
containing multiple keys.
o <Signature (OPTIONAL)>, the signature value of the Container. o <Signature (OPTIONAL)>, the signature value of the Container.
When the signature is applied to the entire container, it MUST use When the signature is applied to the entire container, it MUST use
XML Signature methods as defined in [XMLSIG]. It MAY be omitted XML Signature methods as defined in [XMLDSIG]. It MAY be omitted
when application layer provisioning or transport layer when application layer provisioning or transport layer
provisioning protocols provide the integrity and authenticity of provisioning protocols provide the integrity and authenticity of
the payload between the sender and the recipient of the container. the payload between the sender and the recipient of the container.
When required, this specification recommends using a symmetric key When required, this specification recommends using a symmetric key
based signature with the same key used in the encryption of the based signature with the same key used in the encryption of the
secret key data. The signature is enveloped. secret key data. The signature is enveloped.
o <Version (MANDATORY)>, the version number for the portable key o <Version (MANDATORY)>, the version number for the portable key
container format (the XML schema defined in this document). container format (the XML schema defined in this document).
5.2. Device 5.2. Device
The Device represents the Device entity in the Container. A Device The Device represents the Device entity in the Container. A Device
MAY be bound to a user and MAY contain more than one keys. It is MAY be bound to a user and MAY contain more than one keys. A key
recommended that a key is bound to one and only one Device. SHOULD be bound to only one Device.
The Device is defined as follows: The Device is defined as follows:
<xs:complexType name="DeviceType"> <xs:complexType name="DeviceType">
<xs:sequence> <xs:sequence>
<xs:element name="DeviceId" type="pskc:DeviceIdType" minOccurs="0"/> <xs:element name="DeviceId" type="pskc:DeviceIdType" minOccurs="0"/>
<xs:element name="Key" type="pskc:KeyType" maxOccurs="unbounded"/> <xs:element name="Key" type="pskc:KeyType" maxOccurs="unbounded"/>
<xs:element name="UserId" type="xs:string" minOccurs="0"/> <xs:element name="UserId" type="xs:string" minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
The elements of the Device have the following meanings: The elements of the Device have the following meanings:
o <DeviceId>, a unique identifier for the device, defined in o <DeviceId>, a unique identifier for the device, defined in
Section 5.2.1 Section 5.2.1
o <Key>, represents the key entity as defined in Section 5.3 o <Key>, represents the key entity as defined in Section 5.4
o <UserId>, optionally identifies the owner or the user of the o <UserId>, optionally identifies the owner or the user of the
Device TODO Device, a string representation of a Distinguished Name as defined
in [RFC4514]. For example UID=jsmith,DC=example,DC=net. In
systems where unique user Ids are used the string representation
'UID=[uniqueId]' MUST be used.
5.2.1. DeviceId 5.2.1. DeviceId
The DeviceId represents the identifying criteria to uniquely identify The DeviceId represents the identifying criteria to uniquely identify
the device that contains the associated keys. Since devices can come the device that contains the associated keys. Since devices can come
in different form factors such as hardware tokens, smartcards, soft in different form factors such as hardware tokens, smart-cards, soft
tokens in a mobile phone or PC etc this type allows different tokens in a mobile phone or PC etc this element allows different
criteria to be used. Combined though the criteria MUST uniquely criteria to be used. Combined though the criteria MUST uniquely
identify the device. For example for hardware tokens the combination identify the device. For example for hardware tokens the combination
of SerialNo and Manufacturer will uniquely identify a device but not of SerialNo and Manufacturer will uniquely identify a device but not
SerialNo alone since two different token manufacturers might issue SerialNo alone since two different token manufacturers might issue
devices with the same serial number (similar to the IssuerDN and devices with the same serial number (similar to the IssuerDN and
serial number of a certificate). For keys hold on banking cards the serial number of a certificate). Symmetric Keys used in the payment
identification of the device is often done via the Primary Account industry are usually stored on Integrated Circuit Smart Cards. These
Number (PAN, the big number printed on the front of the card) and an cards are uniquely identified via the Primary Account Number (PAN,
expiry date of the card. DeviceId is an extensible type that allows the long number printed on the front of the card) and an expiry date
all these different ways to uniquely identify a specific key of the card. DeviceId is an extensible type that allows all these
containing device. different ways to uniquely identify a specific key containing device.
The DeviceId is defined as follows: The DeviceId is defined as follows:
<xs:complexType name="DeviceIdType"> <xs:complexType name="DeviceIdType">
<xs:sequence> <xs:sequence>
<xs:element name="Manufacturer" type="xs:string"/> <xs:element name="Manufacturer" type="xs:string"/>
<xs:element name="SerialNo" type="xs:string"/> <xs:element name="SerialNo" type="xs:string"/>
<xs:element name="Model" type="xs:string" minOccurs="0"/> <xs:element name="Model" type="xs:string" minOccurs="0"/>
<xs:element name="IssueNo" type="xs:string" minOccurs="0"/> <xs:element name="IssueNo" type="xs:string" minOccurs="0"/>
<xs:element name="ExpiryDate" type="xs:dateTime" minOccurs="0"/> <xs:element name="ExpiryDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="StartDate" type="xs:dateTime" minOccurs="0"/> <xs:element name="StartDate" type="xs:dateTime" minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
The elements of DeviceId have the following meanings: The elements of DeviceId have the following meanings:
o <Manufacturer>, the manufacturer of the device. o <Manufacturer>, the manufacturer of the device.
o <SerialNo>, the serial number of the device or the PAN (primary o <SerialNo>, the serial number of the device or the PAN (primary
account number) in case of EMV (Europay-MasterCard-Visa) smart account number) in case of payment smart cards.
cards.
o <Model>, the model of the device (e.g one-button-HOTP-token-V1) o <Model>, the model of the device (e.g one-button-HOTP-token-V1)
o <IssueNo>, the issue number in case of smart cards with the same o <IssueNo>, the issue number in case of smart cards with the same
PAN, equivalent to a PSN (PAN Sequence Number). PAN, equivalent to a PSN (PAN Sequence Number).
o <ExpiryDate>, the expiry date of a device (such as the one on an o <ExpiryDate>, the expiry date of a device (such as the one on a
EMV card,used when issue numbers are not printed on cards). payment card,used when issue numbers are not printed on cards).
o <StartDate>, the start date of a device (such as the one on an EMV o <StartDate>, the start date of a device (such as the one on a
card,used when issue numbers are not printed on cards). payment card,used when issue numbers are not printed on cards).
5.3. Key 5.3. KeyProperties
The KeyProperties represents common properties shared by more than
one key held in the container. If a value is set in the properties
the Key element can refer to it via KeyPropertiesId attribute.
Values that are present in the Key element itself MUST take
precendence over values set in KeyProperties. The KeyProperties is
defined as follows:
<xs:complexType name="KeyPropertiesType">
<xs:sequence>
<xs:element name="Issuer" type="xs:string"
minOccurs="0"/>
<xs:element name="Usage" type="pskc:UsageType"
minOccurs="0"/>
<xs:element name="KeyProfileId" type="xs:string"
minOccurs="0"/>
<xs:element name="MasterKeyId" type="xs:string"
minOccurs="0"/>
<xs:element name="Data" type="pskc:DataType"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="PINPolicy"
type="pskc:PINPolicyType" minOccurs="0"/>
<xs:element name="ExpiryDate"
type="xs:dateTime" minOccurs="0"/>
<xs:element name="StartDate" type="xs:dateTime"
minOccurs="0"/>
</xs:sequence>
<xs:attribute name="KeyPropertiesId" type="xs:string"
use="required"/>
<xs:attribute name="KeyAlgorithm"
type="pskc:KeyAlgorithmType" use="optional"/>
</xs:complexType>
The attributes of the KeyProperties entity have the following
meanings:
o KeyPropertiesId (MANDATORY), a unique and global identifier of set
of KeyProperties. The identifier is defined as a string of
alphanumeric characters.
o <KeyAlgorithm (OPTIONAL)>, the unique URI of the type of algorithm
to use with the secret key, for profiles are described in
Section 6.3
Since KeyProperties are a method to commonalise the elements in Key
please refer to section Section 5.4 for detailed description of all
elements.
5.4. Key
The Key represents the key entity in the KeyContainer. The Key is The Key represents the key entity in the KeyContainer. The Key is
defined as follows: defined as follows:
<xs:complexType name="KeyType"> <xs:complexType name="KeyType">
<xs:sequence> <xs:sequence>
<xs:element name="Issuer" type="xs:string" minOccurs="0"/> <xs:element name="Issuer" type="xs:string"
<xs:element name="Usage" type="pskc:UsageType"/>
<xs:element name="CardAppPersoProfileId" type="xs:string"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="FriendlyName" type="xs:string" minOccurs="0"/> <xs:element name="Usage" type="pskc:UsageType"
<xs:element name="Data" type="pskc:DataType" minOccurs="0" minOccurs="0"/>
maxOccurs="unbounded"/> <xs:element name="KeyProfileId" type="xs:string"
<xs:element name="PINPolicy" type="pskc:PINPolicyType" minOccurs="0"/>
<xs:element name="MasterKeyId" type="xs:string"
minOccurs="0"/>
<xs:element name="FriendlyName" type="xs:string"
minOccurs="0"/>
<xs:element name="Data" type="pskc:DataType"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="PINPolicy"
type="pskc:PINPolicyType" minOccurs="0"/>
<xs:element name="ExpiryDate" type="xs:dateTime"
minOccurs="0"/>
<xs:element name="StartDate" type="xs:dateTime"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="ExpiryDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="StartDate" type="xs:dateTime" minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="KeyId" type="xs:string" use="required"/> <xs:attribute name="KeyId" type="xs:string"
<xs:attribute name="KeyAlgorithm" type="pskc:KeyAlgorithmType"
use="required"/> use="required"/>
<xs:attribute name="KeyAlgorithm"
type="pskc:KeyAlgorithmType" use="optional"/>
<xs:attribute name="KeyPropertiesId" type="xs:string"
use="optional"/>
</xs:complexType> </xs:complexType>
The attributes of the Key entity have the following meanings: The attributes of the Key entity have the following meanings:
o KeyId (MANDATORY), a unique and global identifier of the symmetric o KeyId (MANDATORY), a unique and global identifier of the symmetric
key. The identifier is defined as a string of alphanumeric key. The identifier is defined as a string of alphanumeric
characters. characters.
o <KeyAlgorithm (MANDATORY)>, the unique URI of the type of o <KeyAlgorithm (OPTIONAL)>, the unique URI of the type of algorithm
algorithm to use with the secret key, for profiles are described to use with the secret key, for profiles are described in
in Section 6.3 Section 6.3
o <KeyPropertiesId (OPTIONAL)>, the unique id of the KeyProperties
whose value the instance of this key inherits. If this value is
set implementation MUST lookup the Keyproperties element referred
to by this unique Id and this instance of key will inherit all
values from the KeyProperties. Values held in the key instance it
MUST take precedence over values inherited from KeyProperties."/>
The elements of the Key entity have the following meanings: The elements of the Key entity have the following meanings:
o <Issuer (OPTIONAL)>, The key issuer name, this is normally the o <Issuer (OPTIONAL)>, The key issuer name, this is normally the
name of the organization that issues the key to the end user of name of the organization that issues the key to the end user of
the key. For example MyBank issuing hardware tokens to their the key. For example MyBank issuing hardware tokens to their
retail banking users 'MyBank' would be the issuer. The Issuer is retail banking users 'MyBank' would be the issuer. The Issuer is
defined as a String. defined as a String.
o <Usage (MANDATORY)>, defines the intended usage of the key and o <Usage (MANDATORY)>, defines the intended usage of the key and
related metadata as defined in Section 5.3.2 related metadata as defined in Section 5.4.2
o <CardAppPersoProfileId (OPTIONAL)>, A uniquie identifier used o <KeyProfileId (OPTIONAL)>, A unique identifier used between the
between the sending and receiving party of the container to sending and receiving party of the container to establish a set of
establish a set of constant values related to a key that are not constant values related to a key that are not transmitted via the
transmitted via the container. For example a smart card container. For example a smart card application personalisation
application personalisation profile id related to attributes profile id related to attributes present on a smart card
present on a smart card application that have influence when application that have influence when computing a response. An
computing a response. An example could be an EMV MasterCard CAP example could be an EMV MasterCard CAP [CAP] application on a card
[CAP] application on a card personalised with data for a specific personalised with data for a specific batch of cards such as:
batch of cards such as:
IAF Internet authentication flag IAF Internet authentication flag
CVN Cryptogram version number, for example (MCHIP2, MCHIP4, CVN Cryptogram version number, for example (MCHIP2, MCHIP4,
VISA 13, VISA14) VISA 13, VISA14)
AIP (Application Interchange Profile), 2 bytes AIP (Application Interchange Profile), 2 bytes
TVR Terminal Verification Result, 5 bytes TVR Terminal Verification Result, 5 bytes
skipping to change at page 16, line 31 skipping to change at page 19, line 48
TerminalCountryCode TerminalCountryCode
TransactionCurrencyCode TransactionCurrencyCode
AmountAuthorised AmountAuthorised
IIPB IIPB
These values are not contained within attributes in the container These values are not contained within attributes in the container
but are shared between the manufacturing and the validation but are shared between the manufacturing and the validation
service through this unique CardAppPersoProfileId. The service through this unique KeyProfileId. The KeyProfileId is
CardAppPersoProfileId is defined as a String. defined as a String.
o <MasterKeyId (OPTIONAL)>, The unique reference to a master key
when key derivation schemes are used and no specific key is
transported but only the reference to the master key used to
derive a specific key and some derivation data.
o <FriendlyName (OPTIONAL)>, The user friendly name that is assigned o <FriendlyName (OPTIONAL)>, The user friendly name that is assigned
to the secret key for easy reference. The FriendlyName is defined to the secret key for easy reference. The FriendlyName is defined
as a String. as a String.
o <Data (OPTIONAL)>, the element carrying the data related to the o <Data (OPTIONAL)>, the element carrying the data related to the
key as defined in Section 5.3.1 key as defined in Section 5.4.1
o <PINPolicy (OPTIONAL)>, the policy of the PIN relating to the o <PINPolicy (OPTIONAL)>, the policy of the PIN relating to the
usage of this key as defined in Section 5.3.4 usage of this key as defined in Section 5.4.4
o <ExpiryDate (OPTIONAL)>, the expiry date of the key, it MUST not o <ExpiryDate (OPTIONAL)>, the expiry date of the key, it MUST not
be possible to use this key after this date be possible to use this key after this date
o <StartDate (OPTIONAL)>, the start date of the key, it MUST not be o <StartDate (OPTIONAL)>, the start date of the key, it MUST not be
possible to use this key before this date possible to use this key before this date
5.3.1. Data (OPTIONAL) 5.4.1. Data (OPTIONAL)
Defines the data attributes of the symmetric key. Each is a name Defines the data attributes of the symmetric key. Each is a name
value pair which has either a plain value (in case of no encryption) value pair which has either a plain value (in case of no encryption)
or an encrypted value as defined in EncryptedDataType in XML or a encrypted value as defined in EncryptedDataType in XML
Encryption. Encryption.
This is also where the key value is transported, Section 7 defines a This is also where the key value is transported, Section 7 defines a
list of reserved attribute names. list of reserved attribute names.
Data element is defined as follows: Data element is defined as follows:
<xs:complexType name="DataType"> <xs:complexType name="DataType">
<xs:sequence> <xs:sequence>
<xs:choice> <xs:choice>
skipping to change at page 17, line 43 skipping to change at page 21, line 14
The elements of the Data element have the following meanings: The elements of the Data element have the following meanings:
o The <PlainValue> conveys an unencrypted value of the name-value o The <PlainValue> conveys an unencrypted value of the name-value
pair in base 64 encoding. pair in base 64 encoding.
o The <EncryptedValue> element in the DataType conveys an encrypted o The <EncryptedValue> element in the DataType conveys an encrypted
value of the name-value pair inside an EncryptedDataType as value of the name-value pair inside an EncryptedDataType as
defined in XML Encryption. defined in XML Encryption.
o The <ValueMAC (OPTIONAL)> element in the DataType conveys a keyed o The <ValueMAC (OPTIONAL)> element in the DataType conveys a keyed
MAC value of the unencrypted data for the cases where the key MAC value of the unencrypted data for the cases where the
protection algorithm does not support integrity checks algorithm to protect key data in transit, as described in section
Section 6.1.1 ,does not support integrity checks.
5.3.2. Usage (MANDATORY) 5.4.2. Usage (MANDATORY)
The Usage element defines the usage attribute(s) of the key entity. The Usage element defines the usage attribute(s) of the key entity.
Usage is defined as follows: Usage is defined as follows:
<xs:complexType name="UsageType"> <xs:complexType name="UsageType">
<xs:sequence> <xs:sequence>
<xs:element name="ResponseFormat"> <xs:element name="ChallengeFormat" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:attribute name="Format" <xs:attribute name="Format"
type="pskc:ValueFormatType" use="required"/> type="pskc:ValueFormatType"
<xs:attribute name="Length" use="required"/>
<xs:attribute name="Min"
type="xs:unsignedInt" use="required"/>
<xs:attribute name="Max"
type="xs:unsignedInt" use="required"/> type="xs:unsignedInt" use="required"/>
<xs:attribute name="CheckDigits" <xs:attribute name="CheckDigits"
type="xs:boolean" default="false"/> type="xs:boolean" default="false"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="ChallengeFormat" minOccurs="0"> <xs:element name="ResponseFormat">
<xs:complexType> <xs:complexType>
<xs:attribute name="Format" <xs:attribute name="Format"
type="pskc:ValueFormatType" use="required"/> type="pskc:ValueFormatType"
<xs:attribute name="Min" use="required"/>
type="xs:unsignedInt" use="required"/> <xs:attribute name="Length"
<xs:attribute name="Max"
type="xs:unsignedInt" use="required"/> type="xs:unsignedInt" use="required"/>
<xs:attribute name="CheckDigits" <xs:attribute name="CheckDigits"
type="xs:boolean" default="false"/> type="xs:boolean" default="false"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
<xs:attribute name="OTP" type="xs:boolean" default="false"/> <xs:attribute name="OTP" type="xs:boolean"
<xs:attribute name="CR" type="xs:boolean" default="false"/> default="false"/>
<xs:attribute name="Integrity" type="xs:boolean" default="false"/> <xs:attribute name="CR" type="xs:boolean"
<xs:attribute name="Encrypt" type="xs:boolean" default="false"/> default="false"/>
<xs:attribute name="Unlock" type="xs:boolean" default="false"/> <xs:attribute name="Integrity" type="xs:boolean"
default="false"/>
<xs:attribute name="Encrypt" type="xs:boolean"
default="false"/>
<xs:attribute name="Unlock" type="xs:boolean"
default="false"/>
</xs:complexType> </xs:complexType>
The attributes of the Usage element define the intended usage of the The attributes of the Usage element define the intended usage of the
key and are a combination of one or more of the following (set to key and are a combination of one or more of the following (set to
true): true):
o OTP, the key will be used for OTP generation o OTP, the key will be used for OTP generation
o CR, the key will be used for Challenge/Response purposes o CR, the key will be used for Challenge/Response purposes
o Encrypt, the key will be used for data encryption purposes o Encrypt, the key will be used for data encryption purposes
o Integrity, the key will be used to generate a keyed message digest o Integrity, the key will be used to generate a keyed message digest
for data integrity or authentication purposes. for data integrity or authentication purposes.
o Unlock, the key will be used for an inverse challenge response in o Unlock, the key will be used for an inverse challenge response in
the case a user has locked the device by entering a wrong PIN too the case a user has locked the device by entering a wrong PIN too
many times (for devices with PIN-input capability) many times (for devices with PIN-input capability)
5.3.2.1. OTP and CR specific Usage elements (OPTIONAL) 5.4.2.1. OTP and CR specific Usage elements (OPTIONAL)
When the key usage is set to OTP or CR, additional attributes MUST be When the intended usage of a key usage is OTP and/or CR, the
provided to support the OTP and/or the response computation as following additional elements MUST be provided within the Usage
required by the underlying algorithm and to customize or configure element to support the OTP and/or the response computation as
the outcome of the computation (format, length and usage modes). required by the underlying algorithm. These elements also allow to
customize or configure the result of the computation (e.g. format,
length).
5.3.2.1.1. ChallengeFormat element (MANDATORY) 5.4.2.1.1. ChallengeFormat element (MANDATORY)
The ChallengeFormat element defines the characteristics of the The ChallengeFormat element defines the characteristics of the
challenge in a CR usage scenario. The Challenge element is defined challenge in a CR usage scenario. The Challenge element is defined
by the following attributes: by the following attributes:
o Format (MANDATORY) o Format (MANDATORY)
Defines the format of the challenge accepted by the device and Defines the format of the challenge accepted by the device and
MUST be one of the values defined in Section 5.3.3 MUST be one of the values defined in Section 5.4.3
o CheckDigit (OPTIONAL) o CheckDigit (OPTIONAL)
Defines if the device needs to check the appended Luhn check Defines if the device needs to check the appended Luhn check
digit contained in a provided challenge. This is only valid if digit contained in a provided challenge. This is only valid if
the Format attribute is 'DECIMAL'. Value MUST be: the Format attribute is 'DECIMAL'. Value MUST be:
TRUE device will check the appended Luhn check digit in a TRUE device will check the appended Luhn check digit in a
provided challenge provided challenge
skipping to change at page 20, line 23 skipping to change at page 24, line 32
'ALPHANUMERIC' this value indicates the maximum number of 'ALPHANUMERIC' this value indicates the maximum number of
digits/characters. digits/characters.
If the Format attribute is 'BASE64' or 'BINARY', this value If the Format attribute is 'BASE64' or 'BINARY', this value
indicates the maximum number of bytes of the unencoded value. indicates the maximum number of bytes of the unencoded value.
Value MUST be: Value MUST be:
Unsigned integer. Unsigned integer.
5.3.2.1.2. ResponseFormat element (MANDATORY) 5.4.2.1.2. ResponseFormat element (MANDATORY)
The ResponseFormat element defines the characteristics of the result The ResponseFormat element defines the characteristics of the result
of a computation. This defines the format of the OTP or of the of a computation. This defines the format of the OTP or of the
response to a challenge. The Response attribute is defined by the response to a challenge. The Response attribute is defined by the
following attributes: following attributes:
o Format (MANDATORY) o Format (MANDATORY)
Defines the format of the response generated by the device and Defines the format of the response generated by the device and
MUST be one of the values defined in Section 5.3.3 MUST be one of the values defined in Section 5.4.3
o CheckDigit (OPTIONAL) o CheckDigit (OPTIONAL)
Defines if the device needs to append a Luhn check digit to the Defines if the device needs to append a Luhn check digit to the
response. This is only valid if the Format attribute is response. This is only valid if the Format attribute is
'DECIMAL'. Value MUST be: 'DECIMAL'. Value MUST be:
TRUE device will append a Luhn check digit to the response. TRUE device will append a Luhn check digit to the response.
FALSE device will not append a Luhn check digit to the FALSE device will not append a Luhn check digit to the
response. response.
o Length (MANDATORY) o Length (MANDATORY)
skipping to change at page 21, line 17 skipping to change at page 25, line 28
'ALPHANUMERIC' this value indicates the number of digits/ 'ALPHANUMERIC' this value indicates the number of digits/
characters. characters.
If the Format attribute is 'BASE64' or 'BINARY', this value If the Format attribute is 'BASE64' or 'BINARY', this value
indicates the number of bytes of the unencoded value. indicates the number of bytes of the unencoded value.
Value MUST be: Value MUST be:
Unsigned integer. Unsigned integer.
5.3.3. ValueFormat 5.4.3. ValueFormat
The ValueFormat element defines allowed formats for challenges or The ValueFormat element defines allowed formats for challenges or
responses in OTP algorithms. responses in OTP algorithms.
ValueFormat is defined as follows: ValueFormat is defined as follows:
<simpleType name="ValueFormat"> <simpleType name="ValueFormat">
<restriction base="string"> <restriction base="string">
<enumeration value="DECIMAL"/> <enumeration value="DECIMAL"/>
<enumeration value="HEXADECIMAL"/> <enumeration value="HEXADECIMAL"/>
skipping to change at page 22, line 5 skipping to change at page 26, line 15
HEXADECIMAL Hexadecimal response HEXADECIMAL Hexadecimal response
ALPHANUMERIC All letters and numbers (case sensitive) ALPHANUMERIC All letters and numbers (case sensitive)
BASE64 Base 64 encoded BASE64 Base 64 encoded
BINARY Binary data, this is mainly used in case of connected BINARY Binary data, this is mainly used in case of connected
devices devices
5.3.4. PINPolicy 5.4.4. PINPolicy
The PINPolicy element defines a mean to define how the usage of a The PINPolicy element provides a mean to define how the usage of a
specific key is protected by a PIN. The PIN itself can be specific key is protected by a PIN. The PIN itself can be
transmitted using the container as another Key transmitted as a key using the container.
If the PINPolicy element is present in the Key element then the key
is protected with a PIN as defined within the PINPolicy element.
PINPolicy is defined as follows: PINPolicy is defined as follows:
<xs:complexType name="PINPolicyType"> <xs:complexType name="PINPolicyType">
<xs:sequence> <xs:sequence>
<xs:element name="PINUsageMode" type="pskc:PINUsageModeType"/> <xs:element name="PINUsageMode" type="pskc:PINUsageModeType"/>
<xs:element name="WrongPINtry" type="xs:unsignedInt" <xs:element name="WrongPINtry" type="xs:unsignedInt"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="PINKeyId" type="xs:string" use="required"/> <xs:attribute name="PINKeyId" type="xs:string" use="required"/>
</xs:complexType> </xs:complexType>
The attributes of PINPolicy have the following meaning The attributes of PINPolicy have the following meaning
o PINKeyId, the unique key Id within this container that contains o PINKeyId, the unique key Id within this container that contains
the value of the PIN that protects the key the value of the PIN that protects the key
The elements of PINPolicy have the following meaning The elements of PINPolicy have the following meaning
o <PINUsageMode>, the way the PIN is used during the usage of the o <PINUsageMode (MANDATORY)> , the way the PIN is used during the
key as defined in Section 5.3.4.1 usage of the key as defined in Section 5.4.4.1
o <WrongPINtry>, the number of times the PIN can be entered wrongly o <WrongPINtry (OPTIONAL)>, the number of times the PIN can be
before it MUST not be possible to use the key anymore entered wrongly before it MUST not be possible to use the key
anymore
5.3.4.1. PINUsageMode 5.4.4.1. PINUsageMode
The PINUsageMode element defines how the PIN is used with a specific The PINUsageMode element defines how the PIN is used with a specific
key key
PINUsageMode is defined as follows: PINUsageMode is defined as follows:
<xs:complexType name="PINUsageModeType"> <xs:complexType name="PINUsageModeType">
<xs:choice maxOccurs="unbounded"> <xs:choice maxOccurs="unbounded">
<xs:element name="Local"/> <xs:element name="Local"/>
<xs:element name="Prepend"/> <xs:element name="Prepend"/>
skipping to change at page 24, line 21 skipping to change at page 28, line 21
signature to a mandatory subset for interoperability. signature to a mandatory subset for interoperability.
When no algorithm is provided the values within the container are When no algorithm is provided the values within the container are
unencrypted, implementations SHALL ensure the privacy of the key data unencrypted, implementations SHALL ensure the privacy of the key data
through other standard mechanisms e.g. transport level encryption. through other standard mechanisms e.g. transport level encryption.
6.1. Usage of EncryptionKey to protect keys in transit 6.1. Usage of EncryptionKey to protect keys in transit
The EncryptionKey element in the KeyContainer defines the key, The EncryptionKey element in the KeyContainer defines the key,
algorithm and parameters used to encrypt the Secret Key data algorithm and parameters used to encrypt the Secret Key data
attributes in the Container. The encryption is applied on each attributes in the Container. The standard schema [XMLENC] is adopted
individual Secret Key data in the Container. The encryption method in carry such information and an encrypted value. The encryption is
MUST be the same for all Secret Key data in the container. applied on each individual Secret Key data in the Container. The
encryption method MUST be the same for all Secret Key data in the
container.
The following sections define specifically the different supported The following sections define specifically the different supported
means to protect the keys: means to protect the keys:
6.1.1. Protecting keys using a pre-shared key via symmetric algorithms 6.1.1. Protecting keys using a pre-shared key via symmetric algorithms
When protecting the payload with pre-shared keys implementations When protecting the payload with pre-shared keys implementations
SHOULD set the name of the specific pre-shared key in the KeyName SHOULD set the name of the specific pre-shared key in the KeyName
element of the EncryptionKey of the KeyContainer. For example: element of the EncryptionKey of the KeyContainer. For example:
skipping to change at page 26, line 21 skipping to change at page 30, line 22
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="Id" type="xs:ID" use="optional"/> <xs:attribute name="Id" type="xs:ID" use="optional"/>
<xs:attribute name="Type" type="xs:anyURI" use="optional"/> <xs:attribute name="Type" type="xs:anyURI" use="optional"/>
</xs:complexType> </xs:complexType>
<xs:complexType name="KeyDerivationMethodType"> <xs:complexType name="KeyDerivationMethodType">
<xs:sequence> <xs:sequence>
<xs:any namespace="##other" minOccurs="0" <xs:any namespace="##other" minOccurs="0"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="Algorithm" type="xs:anyURI" use="required"/> <xs:attribute name="Algorithm" type="xs:anyURI"
use="required"/>
</xs:complexType> </xs:complexType>
The attributes of the DerivedKey have the following meanings: The attributes of the DerivedKey have the following meanings:
o ID (OPTIONAL), the unique ID for this key o ID (OPTIONAL), the unique ID for this key
o Type (OPTIONAL), TODO o Type (OPTIONAL), This attribute was included for conformance with
xml encryption, it is an optional attribute identifying type
information about the plaintext form of the encrypted content.
Please see [XMLENC] section 3.1 Type for more details.
The elements of the DerivedKey have the following meanings: The elements of the DerivedKey have the following meanings:
o <KeyDerivationMethod>: URI of the algorithms used to derive the o <KeyDerivationMethod>: URI of the algorithms used to derive the
key e.g. key e.g.
(http://www.rsasecurity.com/rsalabs/pkcs/schemas/pkcs-5#pbkdf2) (http://www.rsasecurity.com/rsalabs/pkcs/schemas/pkcs-5#pbkdf2)
o <ReferenceList (OPTIONAL)>: a list of IDs of the elements that o <ReferenceList (OPTIONAL)>: a list of IDs of the elements that
have been encrypted by this key have been encrypted by this key
skipping to change at page 27, line 47 skipping to change at page 32, line 5
container. Systems implementing PSKC MUST support the MANDATORY container. Systems implementing PSKC MUST support the MANDATORY
algorithms detailed below. The encryption algorithm URI can be one algorithms detailed below. The encryption algorithm URI can be one
of the following. of the following.
o http://www.w3.org/2001/04/xmlenc#rsa-1_5 - MANDATORY o http://www.w3.org/2001/04/xmlenc#rsa-1_5 - MANDATORY
o http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p - OPTIONAL o http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p - OPTIONAL
For example: For example:
TODO <?xml version="1.0" encoding="UTF-8"?>
<pskc:KeyContainer Version="1.0"
xmlns:pskc="urn:ietf:params:xml:ns:keyprov:container:1.0"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
<pskc:EncryptionKey>
<ds:X509Data>
<ds:X509Certificate>miib</ds:X509Certificate>
</ds:X509Data>
</pskc:EncryptionKey>
<pskc:Device>
<pskc:DeviceId>
<pskc:Manufacturer>ACME</pskc:Manufacturer>
<pskc:SerialNo>0755225266</pskc:SerialNo>
</pskc:DeviceId>
<pskc:Key KeyAlgorithm=
"http://www.ietf.org/keyprov/pskc#hotp"
KeyId="0755225266">
<pskc:Issuer>AnIssuer</pskc:Issuer>
<pskc:Usage OTP="true">
<pskc:ResponseFormat Length="8"
Format="DECIMAL"/>
</pskc:Usage>
<pskc:Data Name="COUNTER">
<pskc:PlainValue>AprkuA==</pskc:PlainValue>
</pskc:Data>
<pskc:Data Name="SECRET">
<pskc:EncryptedValue Id="ED">
<xenc:EncryptionMethod
Algorithm=
"http://www.w3.org/2001/04/xmlenc#rsa_1_5"/>
<xenc:CipherData>
<xenc:CipherValue>rf4dx3rvEPO0vKtKL14NbeVu8nk=
</xenc:CipherValue>
</xenc:CipherData>
</pskc:EncryptedValue>
</pskc:Data>
</pskc:Key>
</pskc:Device>
</pskc:KeyContainer>
6.3. Profile of Key Algorithm 6.3. Profile of Key Algorithm
This section profiles the type(s) of algorithm of that can be used by This section profiles the type(s) of algorithm of that can be used by
the key(s) transported in the container. The following algorithm the key(s) transported in the container. The following algorithm
URIs are among the default support list. URIs are among the default support list.
o http://www.w3.org/2001/04/xmlenc#tripledes-cbc o http://www.w3.org/2001/04/xmlenc#tripledes-cbc
o http://www.w3.org/2001/04/xmlenc#aes128-cbc o http://www.w3.org/2001/04/xmlenc#aes128-cbc
o http://www.w3.org/2001/04/xmlenc#aes192-cbc o http://www.w3.org/2001/04/xmlenc#aes192-cbc
o http://www.w3.org/2001/04/xmlenc#aes256-cbc o http://www.w3.org/2001/04/xmlenc#aes256-cbc
o http://www.ietf.org/keyprov/pskc#hotp o http://www.ietf.org/keyprov/pskc#hotp
o http://www.ietf.org/keyprov/pskc#valuecompare o http://www.ietf.org/keyprov/pskc#pin
6.3.1. OTP Key Algorithm Identifiers 6.3.1. OTP Key Algorithm Identifiers
OTP key algorithm URIs have not been defined in a commonly available OTP key algorithm URIs have not been defined in a commonly available
standard specification. This document defines the following URIs for standard specification. This document defines the following URIs for
the known open standard OTP algorithms. the standard OTP algorithms defined in [HOTP].
6.3.1.1. HOTP 6.3.1.1. HOTP
Standard document: RFC4226 Standard document: RFC4226
Identifier: http://www.ietf.org/keyprov/pskc#hotp Identifier: http://www.ietf.org/keyprov/pskc#hotp
Note that the actual URL will be finalized once a URL for this Note that the actual URL will be finalized once a URL for this
document is determined. document is determined.
6.3.1.2. Other OTP Algorithms 6.3.1.2. Other OTP Algorithms
An implementation should refer to vendor supplied OTP key algorithm An implementation should refer to vendor registered OTP key algorithm
URIs for proprietary algorithms. URIs for other existing OTP algorithms, for example, the RSA SecurID
OTP algorithm as follows.
o http://www.rsa.com/rsalabs/otps/schemas/2005/09/
otps-wst#SecurID-AES
6.3.2. PIN key value compare algorithm identifier 6.3.2. PIN key value compare algorithm identifier
PIN key algorithm URIs have not been defined in a commonly available PIN key algorithm URIs have not been defined in a commonly available
standard specification. This document defines the following URIs for standard specification. This document defines the following URIs for
a straight value comaprison of the transported secret key data as a straight value comaprison of the transported secret key data as
when required to compare a PIN. when required to compare a PIN.
Identifier: http://www.ietf.org/keyprov/pskc#valuecompare Identifier: http://www.ietf.org/keyprov/pskc#pin
Note that the actual URL will be finalized once a URL for this Note that the actual URL will be finalized once a URL for this
document is determined. document is determined.
7. Reserved data attribute names 7. Reserved data attribute names
The following key data attribute names have been reserved: The following key data attribute names have been reserved:
SECRET: the shared secret key value in binary, base64 encoded SECRET: the shared secret key value in binary, base64 encoded
skipping to change at page 31, line 50 skipping to change at page 35, line 50
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="Version" type="pskc:VersionType" <xs:attribute name="Version" type="pskc:VersionType"
use="required"/> use="required"/>
</xs:complexType> </xs:complexType>
<xs:simpleType name="VersionType" final="restriction"> <xs:simpleType name="VersionType" final="restriction">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:pattern value="\d{1,2}\.\d{1,3}"/> <xs:pattern value="\d{1,2}\.\d{1,3}"/>
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:complexType name="KeyPropertiesType">
<xs:sequence>
<xs:element name="Issuer"
type="xs:string" minOccurs="0"/>
<xs:element name="Usage"
type="pskc:UsageType" minOccurs="0"/>
<xs:element name="KeyProfileId"
type="xs:string" minOccurs="0"/>
<xs:element name="MasterKeyId"
type="xs:string" minOccurs="0"/>
<xs:element name="Data" type="pskc:DataType"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="PINPolicy"
type="pskc:PINPolicyType" minOccurs="0"/>
<xs:element name="ExpiryDate"
type="xs:dateTime" minOccurs="0"/>
<xs:element name="StartDate"
type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="KeyPropertiesId"
type="xs:string" use="required"/>
<xs:attribute name="KeyAlgorithm"
type="pskc:KeyAlgorithmType"
use="optional"/>
</xs:complexType>
<xs:complexType name="KeyType"> <xs:complexType name="KeyType">
<xs:sequence> <xs:sequence>
<xs:element name="Issuer" type="xs:string" minOccurs="0"/> <xs:element name="Issuer"
<xs:element name="Usage" type="pskc:UsageType"/> type="xs:string" minOccurs="0"/>
<xs:element name="CardAppPersoProfileId" type="xs:string" <xs:element name="Usage"
minOccurs="0"/> type="pskc:UsageType"/>
<xs:element name="FriendlyName" type="xs:string" <xs:element name="KeyProfileId"
minOccurs="0"/> type="xs:string" minOccurs="0"/>
<xs:element name="Data" type="pskc:DataType" minOccurs="0" <xs:element name="MasterKeyId"
maxOccurs="unbounded"/> type="xs:string" minOccurs="0"/>
<xs:element name="PINPolicy" type="pskc:PINPolicyType" <xs:element name="FriendlyName"
minOccurs="0"/> type="xs:string" minOccurs="0"/>
<xs:element name="ExpiryDate" type="xs:dateTime" <xs:element name="Data" type="pskc:DataType"
minOccurs="0"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="StartDate" type="xs:dateTime" <xs:element name="PINPolicy"
minOccurs="0"/> type="pskc:PINPolicyType" minOccurs="0"/>
<xs:element name="ExpiryDate"
type="xs:dateTime" minOccurs="0"/>
<xs:element name="StartDate"
type="xs:dateTime" minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="KeyId" type="xs:string" use="required"/> <xs:attribute name="KeyId"
<xs:attribute name="KeyAlgorithm" type="pskc:KeyAlgorithmType" type="xs:string" use="required"/>
<xs:attribute name="KeyAlgorithm"
type="pskc:KeyAlgorithmType"
use="required"/> use="required"/>
</xs:complexType> </xs:complexType>
<xs:complexType name="DerivedKeyType"> <xs:complexType name="DerivedKeyType">
<xs:sequence> <xs:sequence>
<xs:element name="KeyDerivationMethod" <xs:element name="KeyDerivationMethod"
type="pskc:KeyDerivationMethodType" minOccurs="0"/> type="pskc:KeyDerivationMethodType" minOccurs="0"/>
<xs:element ref="xenc:ReferenceList" minOccurs="0"/> <xs:element ref="xenc:ReferenceList" minOccurs="0"/>
<xs:element name="CarriedKeyName" type="xs:string" <xs:element name="CarriedKeyName" type="xs:string"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="Id" type="xs:ID" use="optional"/> <xs:attribute name="Id" type="xs:ID" use="optional"/>
<xs:attribute name="Type" type="xs:anyURI" use="optional"/> <xs:attribute name="Type" type="xs:anyURI" use="optional"/>
</xs:complexType> </xs:complexType>
<xs:complexType name="KeyDerivationMethodType"> <xs:complexType name="KeyDerivationMethodType">
<xs:sequence> <xs:sequence>
<xs:any namespace="##other" minOccurs="0" <xs:any namespace="##other" minOccurs="0"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="Algorithm" type="xs:anyURI" use="required"/> <xs:attribute name="Algorithm" type="xs:anyURI"
use="required"/>
</xs:complexType> </xs:complexType>
<xs:complexType name="PINPolicyType"> <xs:complexType name="PINPolicyType">
<xs:sequence> <xs:sequence>
<xs:element name="PINUsageMode" <xs:element name="PINUsageMode"
type="pskc:PINUsageModeType"/> type="pskc:PINUsageModeType"/>
<xs:element name="WrongPINtry" type="xs:unsignedInt" <xs:element name="WrongPINtry" type="xs:unsignedInt"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="PINKeyId" type="xs:string" <xs:attribute name="PINKeyId" type="xs:string"
use="required"/> use="required"/>
skipping to change at page 33, line 14 skipping to change at page 37, line 46
<xs:choice maxOccurs="unbounded"> <xs:choice maxOccurs="unbounded">
<xs:element name="Local"/> <xs:element name="Local"/>
<xs:element name="Prepend"/> <xs:element name="Prepend"/>
<xs:element name="Embed"/> <xs:element name="Embed"/>
</xs:choice> </xs:choice>
</xs:complexType> </xs:complexType>
<xs:complexType name="DeviceIdType"> <xs:complexType name="DeviceIdType">
<xs:sequence> <xs:sequence>
<xs:element name="Manufacturer" type="xs:string"/> <xs:element name="Manufacturer" type="xs:string"/>
<xs:element name="SerialNo" type="xs:string"/> <xs:element name="SerialNo" type="xs:string"/>
<xs:element name="Model" type="xs:string" minOccurs="0"/> <xs:element name="Model" type="xs:string"
<xs:element name="IssueNo" type="xs:string" minOccurs="0"/> minOccurs="0"/>
<xs:element name="ExpiryDate" type="xs:dateTime" minOccurs="0"/> <xs:element name="IssueNo" type="xs:string"
<xs:element name="StartDate" type="xs:dateTime" minOccurs="0"/> minOccurs="0"/>
<xs:element name="ExpiryDate" type="xs:dateTime"
minOccurs="0"/>
<xs:element name="StartDate" type="xs:dateTime"
minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
<xs:complexType name="DeviceType"> <xs:complexType name="DeviceType">
<xs:sequence> <xs:sequence>
<xs:element name="DeviceId" type="pskc:DeviceIdType" <xs:element name="DeviceId" type="pskc:DeviceIdType"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="Key" type="pskc:KeyType" <xs:element name="Key" type="pskc:KeyType"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<xs:element name="UserId" type="xs:string" minOccurs="0"/> <xs:element name="UserId" type="xs:string"
minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
<xs:complexType name="UsageType"> <xs:complexType name="UsageType">
<xs:sequence> <xs:sequence>
<xs:element name="ResponseFormat"> <xs:element name="ChallengeFormat" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:attribute name="Format" <xs:attribute name="Format"
type="pskc:ValueFormatType" use="required"/> type="pskc:ValueFormatType" use="required"/>
<xs:attribute name="Length" type="xs:unsignedInt" <xs:attribute name="Min" type="xs:unsignedInt"
use="required"/>
<xs:attribute name="Max" type="xs:unsignedInt"
use="required"/> use="required"/>
<xs:attribute name="CheckDigits" type="xs:boolean" <xs:attribute name="CheckDigits" type="xs:boolean"
default="false"/> default="false"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="ChallengeFormat" minOccurs="0"> <xs:element name="ResponseFormat">
<xs:complexType> <xs:complexType>
<xs:attribute name="Format" <xs:attribute name="Format"
type="pskc:ValueFormatType" use="required"/> type="pskc:ValueFormatType" use="required"/>
<xs:attribute name="Min" type="xs:unsignedInt" <xs:attribute name="Length" type="xs:unsignedInt"
use="required"/>
<xs:attribute name="Max" type="xs:unsignedInt"
use="required"/> use="required"/>
<xs:attribute name="CheckDigits" type="xs:boolean" <xs:attribute name="CheckDigits" type="xs:boolean"
default="false"/> default="false"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
<xs:attribute name="OTP" type="xs:boolean" default="false"/> <xs:attribute name="OTP" type="xs:boolean" default="false"/>
<xs:attribute name="CR" type="xs:boolean" default="false"/> <xs:attribute name="CR" type="xs:boolean" default="false"/>
<xs:attribute name="Integrity" type="xs:boolean" <xs:attribute name="Integrity" type="xs:boolean"
default="false"/> default="false"/>
skipping to change at page 35, line 5 skipping to change at page 40, line 5
<xs:enumeration value="DECIMAL"/> <xs:enumeration value="DECIMAL"/>
<xs:enumeration value="HEXADECIMAL"/> <xs:enumeration value="HEXADECIMAL"/>
<xs:enumeration value="ALPHANUMERIC"/> <xs:enumeration value="ALPHANUMERIC"/>
<xs:enumeration value="BASE64"/> <xs:enumeration value="BASE64"/>
<xs:enumeration value="BINARY"/> <xs:enumeration value="BINARY"/>
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:element name="KeyContainer" type="pskc:KeyContainerType"/> <xs:element name="KeyContainer" type="pskc:KeyContainerType"/>
</xs:schema> </xs:schema>
9. Security Considerations 9. IANA Considerations
9.1. Content-type registration for 'application/pskc+xml'
This specification requests the registration of a new MIME type
according to the procedures of RFC 4288 [RFC4288] and guidelines in
RFC 3023 [RFC3023].
MIME media type name: application
MIME subtype name: pskc+xml
Mandatory parameters: none
Optional parameters: charset
Indicates the character encoding of enclosed XML.
Encoding considerations: Uses XML, which can employ 8-bit
characters, depending on the character encoding used. See RFC
3023 [RFC3023], Section 3.2.
Security considerations: This content type is designed to carry PSKC
protocol payloads.
Interoperability considerations: None
Published specification: RFCXXXX [NOTE TO IANA/RFC-EDITOR: Please
replace XXXX with the RFC number of this specification.]
Applications which use this media type: This MIME type is being used
as a symmetric key container format for transport and provisioning
of symmetric keys (One Time Password (OTP) shared secrets or
symmetric cryptographic keys) to different types of strong
authentication devices. As such, it is used for key provisioning
systems.
Additional information:
Magic Number: None
File Extension: .pskcxml
Macintosh file type code: 'TEXT'
Personal and email address for further information: Philip Hoyer,
Philip.Hoyer@actividentity.com
Intended usage: LIMITED USE
Author: This specification is a work item of the IETF KEYPROV
working group, with mailing list address <keyprov@ietf.org>.
Change controller: The IESG <iesg@ietf.org>
9.2. XML Schema Registration
This section registers an XML schema as per the guidelines in
[RFC3688].
URI: urn:ietf:params:xml:ns:keyprov:container:1.0
Registrant Contact: IETF KEYPROV Working Group, Philip Hoyer
(Philip.Hoyer@actividentity.com).
XML Schema: The XML schema to be registered is contained in
Section 8. Its first line is
<?xml version="1.0" encoding="UTF-8"?>
and its last line is
</xs:schema>
9.3. URN Sub-Namespace Registration for
urn:ietf:params:xml:ns:keyprov:container:1.0
This section registers a new XML namespace,
"urn:ietf:params:xml:ns:keyprov:container:1.0", per the guidelines in
[RFC3688].
URI: urn:ietf:params:xml:ns:keyprov:container:1.0
Registrant Contact: IETF KEYPROV Working Group, Philip Hoyer
(Philip.Hoyer@actividentity.com).
XML:
BEGIN
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type"
content="text/html;charset=iso-8859-1"/>
<title>PSKC Namespace</title>
</head>
<body>
<h1>Namespace for PSKC</h1>
<h2>urn:ietf:params:xml:ns:keyprov:container:1.0</h2>
<p>See <a href="[URL of published RFC]">RFCXXXX
[NOTE TO IANA/RFC-EDITOR:
Please replace XXXX with the RFC number of this
specification.]</a>.</p>
</body>
</html>
END
9.4. Symmetric Key Algorithm Identifier Registry
This specification requests the creation of a new IANA registry for
symmetric key cryptographic algorithm identifiers in accordance with
the principles set out in RFC 2434 [RFC2434]as follows:
9.4.1. Applicability
The use of URIs as algorithm identifiers provides an effectively
unlimited namespace. While this eliminates the possibility of
namespace exhaustion it creates a new concern, that divergent
identifiers will be employed for the same purpose in different
contexts.
The key algorithm registry is intended to provide a means of
specifying the canonical identifier to be used for a given algorithm.
If an algorithm has an identifier specified in the registry a
application that is conformant to a protocol specification that
specifies use of that registry to define identifiers SHOULD always
use that particular form of the identifier when originating data. A
conformant application MAY accept other identifiers in data that is
received.
For the sake of expediency, the initial registry only defines
algorithm classes for symmetric algorithms plus cryptographic message
digest functions (one-way hash). While the same principles may be
extended to asymmetric algorithms, doing so would require much
greater consideration of issues such as key length and treatment of
parameters, particularly where eliptic curve cryptography algorithms
are concerned.
As part of this registry the IANA will maintain the following
information:
Common Name The name by which the algorithm is generally referred.
Class The type of algorithm, encryption, Message Authentication Code
(MAC), One Time Pawword (OTP), Digest, etc.
Cannonical URI The cannonical URI to be used to identify the
algorithm.
Algorithm Definition A reference to the document in which the
algorithm described by the identifier is defined.
Identifier Definition A reference to the document in which the use
of the identifier to refer to the algorithm is described. This
would ideally be the document in which the algorithm is defined.
In the case where the registrant does not request a particular
URI, the IANA will assign it a Uniform Resource Name (URN) that
follows RFC 3553 [RFC3553].
Note that where a single algorithm has different forms distinguished
by paremeters such as key length, the algorithm class and each
combination of algorithm parameters may be considered a distinct
algorithm for the purpose of assigning identifiers.
9.4.2. Registerable Algorithms
9.4.2.1. Assigned URIs
If the registrant wishes to have a URI assigned, then a URN of the
form
urn:ietf:params:xml:<class>:<id>
will be assigned where <class> is the type of the algorithm being
identified (see below). <id> is a unique id specified by the party
making the request and will normally be either the common name of the
algorithm or an abbreviation thereof.
NOTE: in order for a URN of this type to be assigned, the item being
registered MUST have been through the IETF consensus process.
Basically, this means that it must be documented in a RFC.
NOTE: Expert Review is sufficient in cases where the request does not
require a URN assignment inthe IETF namespace. IETF consensus is not
required.
9.4.2.2. Assigned Classes
Each algorithm MUST belong to an assigned algorithm class. In the
case that additional classes are required these are to be specified
by IETF Consensus action.
The initial assigned classes are:
Digest A cryptographic Digest algorithm.
MAC A Message Authentication Code algorithm.
Symmetric A symmetric encryption algorithm.
OTP A one time password (OTP) algorithm.
9.4.3. Registration Procedures
9.4.3.1. Review
Algorithm identifier registrations are to be subject to Expert Review
as per RFC 2434 [RFC2434].
The need for supporting documentation for the registration depends on
the nature of the request. In the case of a cryptographic algorithm
that is being described for publication as an RFC, the request for a
URI allocation would normally appear within the RFC itself. In the
case of a cryptographic algorithm that is fully and comprehensively
defined in another form, it would not be necessary to duplicate the
information for the sake of issuing the information in the RFC
series. In other cases an RFC may be required in order to ensure
that certain algorithm parameters are sufficiently and unambiguously
defined.
The scope of such expert review is to be strictly limited to
identifying possible ambiguity and/or duplication of existing
identifiers. The expert review MUST NOT consider the cryptographic
properties, intellectual property considerations or any other factor
not related to the use of the identifier.
In reviewing a request, the expert should consider whether other URI
identifiers are already defined for a given algorithm. In such cases
it is the duty of the expert to bring the potential duplication to
the notice of the proposers of the registration and the Security Area
Directors. If the proposers are not willing to accept registration
of the existing identifier the IETF Consensus policy is to apply.
In reviewing a request, the expert should consider whether the
algorithm is sufficiently defined to allow successful interoperation.
In particular the expert should consider whether issues such as key
sizes and byte order are sufficiently defined to allow for
interoperation.
While the defintion requirement MAY be satisifed by a comprehensive
specification of the algorithm, disclosure of the algorithm is not
mandatory.
9.4.3.2. Canonical URI
Until the IANA requests or implements an automated process for the
registration of these elements, any specifications must make that
request part of the IANA considerations section of their respective
documents. That request must be in the form of the following
template:
Common Name The name by which the algorithm is generally referred.
Class The type of algorithm, encryption, Message Authentication Code
(MAC), One Time Pawword (OTP), Digest, etc. As specified by a
defined algorithm class.
URI The cannonical URI to be used to identify the algorithm.
Algorithm Definition A reference to the document in which the
algorithm described by the identifier is defined.
Identifier Definition A reference to the document in which the use
of the identifier to refer to the algorithm is described. This
would ideally be the document in which the algorithm is defined.
Registrant Contact A reference to the document in which the use of
the identifier to refer to the algorithm is described. This would
ideally be the document in which the algorithm is defined.
9.4.3.3. Alias URI
In the case that multiple identifiers have been assigned to the same
identifiers, additional identifiers MAY be registered as aliases. An
entry for an alias contains all the entries for a canonical URI with
the addition of a reference to the canonical URI to be used:
Alias for URI The cannonical URI that identifies the algorithm. The
URI referenced MUST be a canonical URI.
In the case of dispute as to which URI is to be considered canonical
the matter is to be settled by IESG action.
9.4.4. Initial Values
The following initial values are defined. Note that these values are
limited to identifiers that are required by KEYPROV but not specified
elsewhere:
9.4.4.1. HOTP
Common Name: HOTP
Class: OTP
URI: http://www.ietf.org/keyprov/pskc#hotp
Algorithm Definition: http://www.ietf.org/rfc/rfc4226.txt
Identifier Definition (this RFC)
Registrant Contact: IESG
9.4.4.2. HOTP-HMAC-SHA-1
Common Name: HOTP-HMAC-SHA-1
Class: OTP
URI: http://www.ietf.org/rfc/rfc4226.txt#HOTP-HMAC-SHA-1
Algorithm Definition: http://www.ietf.org/rfc/rfc4226.txt
Identifier Definition (this RFC)
Registrant Contact: IESG
9.4.4.3. KEYPROV-PIN
Common Name: KEYPROV-PIN
Class: Symmetric static credential comparison
URI: http://www.ietf.org/keyprov/pskc#pin
Algorithm Definition: (this document)
Identifier Definition (this document)
Registrant Contact: IESG
9.4.4.4. SecurID-AES
Common Name: SecurID-AES
Class: OTP
URI: http://www.rsasecurity.com/rsalabs/otps/schemas/2005/09/
otps-wst#SecurID-AES
Algorithm Definition: http://www.rsa.com/rsalabs/node.asp?id=2821
Identifier Definition http://www.rsa.com/rsalabs/node.asp?id=2821
Registrant Contact: Andrea Doherty, RSA the Security Division of
EMC, <andrea.doherty@rsa.com>
9.4.4.5. SecurID-ALGOR
Common Name: SecurID-ALGOR
Class: OTP
URI: http://www.rsasecurity.com/rsalabs/otps/schemas/2005/09/
otps-wst#SecurID-ALGOR
Algorithm Definition: http://www.rsa.com/rsalabs/node.asp?id=2821
Identifier Definition http://www.rsa.com/rsalabs/node.asp?id=2821
Registrant Contact: Andrea Doherty, RSA the Security Division of
EMC, <andrea.doherty@rsa.com>
9.4.4.6. ActivIdentity-3DES
Common Name: ActivIdentity-3DES
Class: OTP
URI: http://www.actividentity.com/2008/04/algorithms/
algorithms#ActivIdentity-3DES
Algorithm Definition: http://www.actividentity.com/2008/04/
algorithms/algorithms#ActivIdentity-3DES
Identifier Definition http://www.actividentity.com/2008/04/
algorithms/algorithms#ActivIdentity-3DES
Registrant Contact: Philip Hoyer, ActivIdentity Inc,
<philip.hoyer@actividentity.com>
9.4.4.7. ActivIdentity-AES
Common Name: ActivIdentity-AES
Class: OTP
URI: http://www.actividentity.com/2008/04/algorithms/
algorithms#ActivIdentity-AES
Algorithm Definition: http://www.actividentity.com/2008/04/
algorithms/algorithms#ActivIdentity-AES
Identifier Definition http://www.actividentity.com/2008/04/
algorithms/algorithms#ActivIdentity-AES
Registrant Contact: Philip Hoyer, ActivIdentity Inc,
<philip.hoyer@actividentity.com>
9.4.4.8. ActivIdentity-DES
Common Name: ActivIdentity-DES
Class: OTP
URI: http://www.actividentity.com/2008/04/algorithms/
algorithms#ActivIdentity-DES
Algorithm Definition: http://www.actividentity.com/2008/04/
algorithms/algorithms#ActivIdentity-DES
Identifier Definition http://www.actividentity.com/2008/04/
algorithms/algorithms#ActivIdentity-DES
Registrant Contact: Philip Hoyer, ActivIdentity Inc,
<philip.hoyer@actividentity.com>
9.4.4.9. ActivIdentity-EVENT
Common Name: ActivIdentity-EVENT
Class: OTP
URI: http://www.actividentity.com/2008/04/algorithms/
algorithms#ActivIdentity-EVENT
Algorithm Definition: http://www.actividentity.com/2008/04/
algorithms/algorithms#ActivIdentity-EVENT
Identifier Definition http://www.actividentity.com/2008/04/
algorithms/algorithms#ActivIdentity-EVENT
Registrant Contact: Philip Hoyer, ActivIdentity Inc,
<philip.hoyer@actividentity.com>
9.5. XML Data Tag Identifier Registry
This specification requests the creation of a new IANA registry for
XML Data Tag identifiers in accordance with the principles set out in
RFC 2434 [RFC2434]as follows:
[More explanation of why an escape to tag value lists is desirable
when inserting unstructured data into an XML schema]
9.5.1. Applicability
As part of this registry the IANA will maintain the following
information:
Common Name Common name for by which the tag is referred to
Cannonical URI The cannonical URI to be employed when citing the
tag.
Data Type The data type of the data that is bound to the tag.
Definition A reference to the document in which the data tag
defined by the identifier is defined.
In the case where the registrant does not request a particular URI,
the IANA will assign it a Uniform Resource Name (URN) that follows
RFC 3553 [RFC3553].
9.5.2. Registerable Data Tags
9.5.2.1. Assigned URIs
If the registrant wishes to have a URI assigned, then a URN of the
form
urn:ietf:params:xml:datatag:<tag>
will be assigned where <tag> is a unique id specified by the party
making the request and will normally be either the common name of the
tag or an abbreviation thereof.
NOTE: in order for a URN of this type to be assigned, the item being
registered MUST have been through the IETF consensus process.
Basically, this means that it must be documented in a RFC.
NOTE: Expert Review is sufficient in cases where the request does not
require a URN assignment inthe IETF namespace. IETF consensus is not
required.
9.5.3. Registration Procedures
9.5.3.1. Review
Data tag registrations are to be subject to Expert Review as per RFC
2434 [RFC2434].
9.5.3.2. Data Tag Entry
Until the IANA requests or implements an automated process for the
registration of these elements, any specifications must make that
request part of the IANA considerations section of their respective
documents. That request must be in the form of the following
template:
Common Name Common name for by which the tag is referred to
Cannonical URI The cannonical URI to be employed when citing the
tag.
Data Type The data type of the data that is bound to the tag.
Definition A reference to the document in which the data tag
defined by the identifier is defined.
9.5.4. Initial Values
The following initial values are defined. Note that these values are
limited to identifiers that are required by KEYPROV but not specified
elsewhere:
9.5.4.1. Secret
Common Name Secret
Cannonical URI urn:ietf:params:xml:datatag:secret
Data Type binary, base64 encoded
Defined in (this document)
9.5.4.2. Counter
Common Name Counter
Cannonical URI urn:ietf:params:xml:datatag:counter
Data Type 8 bytes unsigned integer in big endian (i.e. network byte
order) form base64 encoded
Defined in (this document)
9.5.4.3. Time
Common Name Time
Cannonical URI urn:ietf:params:xml:datatag:time
Data Type 8 bytes unsigned integer in big endian (i.e. network byte
order) form base64 encoded (Number of seconds since 1970)
Defined in (this document)
9.5.4.4. Time Interval
Common Name Time Interval
Cannonical URI urn:ietf:params:xml:datatag:time_interval
Data Type 8 bytes unsigned integer in big endian (i.e. network byte
order) form base64 encoded.
Defined in (this document)
9.5.4.5. Time Drift
Common Name urn:ietf:params:xml:datatag:time_drift
Cannonical URI Time Drift
Data Type 2 bytes unsigned integer in big endian (i.e. network byte
order) form base64 encoded.
Defined in (this document)
10. Security Considerations
The portable key container carries sensitive information (e.g., The portable key container carries sensitive information (e.g.,
cryptographic keys) and may be transported across the boundaries of cryptographic keys) and may be transported across the boundaries of
one secure perimeter to another. For example, a container residing one secure perimeter to another. For example, a container residing
within the secure perimeter of a back-end provisioning server in a within the secure perimeter of a back-end provisioning server in a
secure room may be transported across the internet to an end-user secure room may be transported across the internet to an end-user
device attached to a personal computer. This means that special care device attached to a personal computer. This means that special care
must be taken to ensure the confidentiality, integrity, and must be taken to ensure the confidentiality, integrity, and
authenticity of the information contained within. authenticity of the information contained within.
9.1. Payload confidentiality 10.1. Payload confidentiality
By design, the container allows two main approaches to guaranteeing By design, the container allows two main approaches to guaranteeing
the confidentiality of the information it contains while transported. the confidentiality of the information it contains while transported.
First, the container key data payload may be encrypted. First, the container key data payload may be encrypted.
In this case no transport layer security is required. However, In this case no transport layer security is required. However,
standard security best practices apply when selecting the strength of standard security best practices apply when selecting the strength of
the cryptographic algorithm for payload encryption. Symmetric the cryptographic algorithm for payload encryption. Symmetric
cryptographic cipher should be used - the longer the cryptographic cryptographic cipher should be used - the longer the cryptographic
key, the stronger the protection. At the time of this writing both key, the stronger the protection. At the time of this writing both
3DES and AES are recommended algorithms but 3DES may be dropped in 3DES and AES are mandatory algorithms but 3DES may be dropped in the
the relatively near future. Applications concerned with algorithm relatively near future. Applications concerned with algorithm
longevity are advised to use AES. In cases where the exchange of longevity are advised to use AES-256-CBC. In cases where the
encryption keys between the sender and the receiver is not possible, exchange of encryption keys between the sender and the receiver is
asymmetric encryption of the secret key payload may be employed. not possible, asymmetric encryption of the secret key payload may be
Similarly to symmetric key cryptography, the stronger the asymmetric employed. Similarly to symmetric key cryptography, the stronger the
key, the more secure the protection is. asymmetric key, the more secure the protection is.
If the payload is encrypted with a method that uses one of the If the payload is encrypted with a method that uses one of the
password-based encryption methods provided above, the payload may be password-based encryption methods provided above, the payload may be
subjected to password dictionary attacks to break the encryption subjected to password dictionary attacks to break the encryption
password and recover the information. Standard security best password and recover the information. Standard security best
practices for selection of strong encryption passwords apply practices for selection of strong encryption passwords apply
[Schneier]. [Schneier].
Practical implementations should use PBESalt and PBEIterationCount Practical implementations should use PBESalt and PBEIterationCount
when PBE encryption is used. Different PBESalt value per key when PBE encryption is used. Different PBESalt value per key
skipping to change at page 36, line 14 skipping to change at page 54, line 14
in this mode. Secure channels that encrypt and digest each message in this mode. Secure channels that encrypt and digest each message
provide an extra measure of security, especially when the signature provide an extra measure of security, especially when the signature
of the payload does not encompass the entire payload. of the payload does not encompass the entire payload.
Because of the fact that the plain text payload is protected only by Because of the fact that the plain text payload is protected only by
the transport layer security, practical implementation must ensure the transport layer security, practical implementation must ensure
protection against man-in-the-middle attacks [Schneier]. Validating protection against man-in-the-middle attacks [Schneier]. Validating
the secure channel end-points is critically important for eliminating the secure channel end-points is critically important for eliminating
intruders that may compromise the confidentiality of the payload. intruders that may compromise the confidentiality of the payload.
9.2. Payload integrity 10.2. Payload integrity
The portable symmetric key container provides a mean to guarantee the The portable symmetric key container provides a mean to guarantee the
integrity of the information it contains through digital signatures. integrity of the information it contains through digital signatures.
For best security practices, the digital signature of the container For best security practices, the digital signature of the container
should encompass the entire payload. This provides assurances for should encompass the entire payload. This provides assurances for
the integrity of all attributes. It also allows verification of the the integrity of all attributes. It also allows verification of the
integrity of a given payload even after the container is delivered integrity of a given payload even after the container is delivered
through the communication channel to the target perimeter and channel through the communication channel to the target perimeter and channel
message integrity check is no longer possible. message integrity check is no longer possible.
9.3. Payload authenticity 10.3. Payload authenticity
The digital signature of the payload is the primary way of showing The digital signature of the payload is the primary way of showing
its authenticity. The recipient of the container may use the public its authenticity. The recipient of the container may use the public
key associated with the signature to assert the authenticity of the key associated with the signature to assert the authenticity of the
sender by tracing it back to a preloaded public key or certificate. sender by tracing it back to a preloaded public key or certificate.
Note that the digital signature of the payload can be checked even Note that the digital signature of the payload can be checked even
after the container has been delivered through the secure channel of after the container has been delivered through the secure channel of
communication. communication.
A weaker payload authenticity guarantee may be provided by the A weaker payload authenticity guarantee may be provided by the
transport layer if it is configured to digest each message it transport layer if it is configured to digest each message it
transports. However, no authenticity verification is possible once transports. However, no authenticity verification is possible once
the container is delivered at the recipient end. This approach may the container is delivered at the recipient end. This approach may
be useful in cases where the digital signature of the container does be useful in cases where the digital signature of the container does
not encompass the entire payload. not encompass the entire payload.
10. Acknowledgements 11. Acknowledgements
The authors of this draft would like to thank the following people The authors of this draft would like to thank the following people
for their contributions and support to make this a better for their contributions and support to make this a better
specification: Apostol Vassilev, Shuh Chang, Jon Martinson, Siddhart specification: Apostol Vassilev, Shuh Chang, Jon Martinson, Siddhart
Bajaj, Stu Veath, Kevin Lewis, Philip Hallam-Baker, Hannes Bajaj, Stu Veath, Kevin Lewis, Philip Hallam-Baker, Hannes
Tschofenig, Andrea Doherty, Magnus Nystrom, Tim Moses, and Anders Tschofenig, Andrea Doherty, Magnus Nystrom, Tim Moses, and Anders
Rundgren. Rundgren.
11. Appendix A - Example Symmetric Key Containers 12. Appendix A - Example Symmetric Key Containers
All examples are syntactically correct and compatible with the XML All examples are syntactically correct and compatible with the XML
schema in section 7. schema in section 7.
11.1. Symmetric Key Container with a single Non-Encrypted HOTP Secret 12.1. Symmetric Key Container with a single Non-Encrypted HOTP Secret
Key Key
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<KeyContainer Version="1.0" <KeyContainer Version="1.0"
xmlns="urn:ietf:params:xml:ns:keyprov:container:1.0"> xmlns="urn:ietf:params:xml:ns:keyprov:container:1.0">
<Device> <Device>
<DeviceId> <DeviceId>
<Manufacturer>ACME</Manufacturer> <Manufacturer>ACME</Manufacturer>
<SerialNo>0755225266</SerialNo> <SerialNo>0755225266</SerialNo>
</DeviceId> </DeviceId>
skipping to change at page 38, line 38 skipping to change at page 56, line 38
<PlainValue>AprkuA==</PlainValue> <PlainValue>AprkuA==</PlainValue>
</Data> </Data>
<Data Name="SECRET"> <Data Name="SECRET">
<PlainValue>/4h3rOTeBegJwGpmTTq4F+RlNR0=</PlainValue> <PlainValue>/4h3rOTeBegJwGpmTTq4F+RlNR0=</PlainValue>
</Data> </Data>
<ExpiryDate>2012-12-31T00:00:00</ExpiryDate> <ExpiryDate>2012-12-31T00:00:00</ExpiryDate>
</Key> </Key>
</Device> </Device>
</KeyContainer> </KeyContainer>
11.2. Symmetric Key Container with a single PIN protected Non-Encrypted 12.2. Symmetric Key Container with a single PIN protected Non-Encrypted
HOTP Secret Key HOTP Secret Key
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<KeyContainer Version="1.0" <KeyContainer Version="1.0"
xmlns="urn:ietf:params:xml:ns:keyprov:container:1.0"> xmlns="urn:ietf:params:xml:ns:keyprov:container:1.0">
<Device> <Device>
<DeviceId> <DeviceId>
<Manufacturer>ACME</Manufacturer> <Manufacturer>ACME</Manufacturer>
<SerialNo>0755225266</SerialNo> <SerialNo>0755225266</SerialNo>
</DeviceId> </DeviceId>
<Key KeyAlgorithm="http://www.ietf.org/keyprov/pskc#hotp" <Key KeyAlgorithm="http://www.ietf.org/keyprov/pskc#hotp"
skipping to change at page 39, line 42 skipping to change at page 57, line 42
<Usage> <Usage>
<ResponseFormat Length="4" Format="DECIMAL"/> <ResponseFormat Length="4" Format="DECIMAL"/>
</Usage> </Usage>
<Data Name="SECRET"> <Data Name="SECRET">
<PlainValue>MTIzNA==</PlainValue> <PlainValue>MTIzNA==</PlainValue>
</Data> </Data>
</Key> </Key>
</Device> </Device>
</KeyContainer> </KeyContainer>
11.3. Symmetric Key Container with a single AES-256-CBC Encrypted HOTP 12.3. Symmetric Key Container with a single AES-256-CBC Encrypted HOTP
Secret Key Secret Key
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<KeyContainer Version="1.0" <KeyContainer Version="1.0"
xmlns="urn:ietf:params:xml:ns:keyprov:container:1.0" xmlns="urn:ietf:params:xml:ns:keyprov:container:1.0"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
<EncryptionKey> <EncryptionKey>
<ds:KeyName>PRE_SHARED_KEY</ds:KeyName> <ds:KeyName>PRE_SHARED_KEY</ds:KeyName>
</EncryptionKey> </EncryptionKey>
skipping to change at page 40, line 45 skipping to change at page 58, line 45
kyzrWTJuhJKQHhZtf2CWbKC5H3LdfAPvKzHHQ8SdxyE= kyzrWTJuhJKQHhZtf2CWbKC5H3LdfAPvKzHHQ8SdxyE=
</xenc:CipherValue> </xenc:CipherValue>
</xenc:CipherData> </xenc:CipherData>
</EncryptedValue> </EncryptedValue>
<ValueMAC>cwJI898rRpGBytTqCAsegaQqPZA=</ValueMAC> <ValueMAC>cwJI898rRpGBytTqCAsegaQqPZA=</ValueMAC>
</Data> </Data>
</Key> </Key>
</Device> </Device>
</KeyContainer> </KeyContainer>
11.4. Symmetric Key Container with signature and a single Password- 12.4. Symmetric Key Container with signature and a single Password-
based Encrypted HOTP Secret Key based Encrypted HOTP Secret Key
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<pskc:KeyContainer <pskc:KeyContainer
xmlns:pskc="urn:ietf:params:xml:ns:keyprov:container:1.0" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:container:1.0"
xmlns:pkcs-5= xmlns:pkcs-5=
"http://www.rsasecurity.com/rsalabs/pkcs/schemas/pkcs-5v2-0#" "http://www.rsasecurity.com/rsalabs/pkcs/schemas/pkcs-5v2-0#"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
skipping to change at page 42, line 32 skipping to change at page 60, line 32
<ds:X509IssuerSerial> <ds:X509IssuerSerial>
<ds:X509IssuerName>CN=KeyProvisioning'R'Us.com,C=US <ds:X509IssuerName>CN=KeyProvisioning'R'Us.com,C=US
</ds:X509IssuerName> </ds:X509IssuerName>
<ds:X509SerialNumber>12345678</ds:X509SerialNumber> <ds:X509SerialNumber>12345678</ds:X509SerialNumber>
</ds:X509IssuerSerial> </ds:X509IssuerSerial>
</ds:X509Data> </ds:X509Data>
</ds:KeyInfo> </ds:KeyInfo>
</pskc:Signature> </pskc:Signature>
</pskc:KeyContainer> </pskc:KeyContainer>
11.5. Symmetric Key Container with a single RSA 1.5 Encrypted HOTP 12.5. Symmetric Key Container with a single RSA 1.5 Encrypted HOTP
Secret Key Secret Key
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<pskc:KeyContainer Version="1.0" <pskc:KeyContainer Version="1.0"
xmlns:pskc="urn:ietf:params:xml:ns:keyprov:container:1.0" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:container:1.0"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
<pskc:EncryptionKey> <pskc:EncryptionKey>
<ds:X509Data> <ds:X509Data>
<ds:X509Certificate>miib</ds:X509Certificate> <ds:X509Certificate>miib</ds:X509Certificate>
skipping to change at page 44, line 5 skipping to change at page 62, line 5
<xenc:CipherData> <xenc:CipherData>
<xenc:CipherValue>rf4dx3rvEPO0vKtKL14NbeVu8nk= <xenc:CipherValue>rf4dx3rvEPO0vKtKL14NbeVu8nk=
</xenc:CipherValue> </xenc:CipherValue>
</xenc:CipherData> </xenc:CipherData>
</pskc:EncryptedValue> </pskc:EncryptedValue>
</pskc:Data> </pskc:Data>
</pskc:Key> </pskc:Key>
</pskc:Device> </pskc:Device>
</pskc:KeyContainer> </pskc:KeyContainer>
12. Normative References 13. References
13.1. Normative References
[PKCS1] Kaliski, B., "RFC 2437: PKCS #1: RSA Cryptography
Specifications Version 2.0.",
URL: http://www.ietf.org/rfc/rfc2437.txt, Version: 2.0,
October 1998.
[PKCS5] RSA Laboratories, "PKCS #5: Password-Based Cryptography
Standard", Version 2.0,
URL: http://www.rsasecurity.com/rsalabs/pkcs/, March 1999.
[RFC2119] "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997,
<http://www.ietf.org/rfc/rfc2119.txt>.
[RFC2434] Narten, T., "Guidelines for Writing an IANA Considerations
Section in RFCs", RFC 2434, October 1998.
[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media
Types", RFC 3023, January 2001.
[RFC3553] Mealling, M., "An IETF URN Sub-namespace for Registered
Protocol Parameters", RFC 3553, June 2003.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
January 2004.
[RFC4288] Freed, N. and J. Klensin, "Media Type Specifications and
Registration Procedures", BCP 13, RFC 4288, December 2005.
[RFC4514] Zeilenga, K., "Lightweight Directory Access Protocol
(LDAP): String Representation of Distinguished Names",
RFC 4514, June 2006.
[XMLDSIG] Eastlake, D., "XML-Signature Syntax and Processing",
URL: http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/,
W3C Recommendation, February 2002.
[XMLENC] Eastlake, D., "XML Encryption Syntax and Processing.",
URL: http://www.w3.org/TR/xmlenc-core/, December 2002.
13.2. Informative References
[CAP] MasterCard International, "Chip Authentication Program [CAP] MasterCard International, "Chip Authentication Program
Functional Architecture", September 2004. Functional Architecture", September 2004.
[DSKPP] "Dynamic Symmetric Key Provisioning Protocol", Internet [DSKPP] Doherty, A., Pei, M., Machani, S., and M. Nystrom,
Draft Informational, URL: http://tools.ietf.org/wg/ "Dynamic Symmetric Key Provisioning Protocol", Internet
keyprov/draft-doherty-keyprov-dskpp-00.txt, June 2007. Draft Informational, URL: http://www.ietf.org/
internet-drafts/draft-ietf-keyprov-dskpp-03.txt,
February 2008.
[HOTP] MRaihi, D., "HOTP: An HMAC-Based One Time Password [HOTP] MRaihi, D., Bellare, M., Hoornaert, F., Naccache, D., and
O. Ranen, "HOTP: An HMAC-Based One Time Password
Algorithm", RFC 4226, Algorithm", RFC 4226,
URL: http://rfc.sunsite.dk/rfc/rfc4226.html, URL: http://rfc.sunsite.dk/rfc/rfc4226.html,
December 2005. December 2005.
[NIST-SP800-57]
National Institute of Standards and Technology,
"Recommendation for Key Management - Part I: General
(Revised)", NIST 800-57, URL: http://csrc.nist.gov/
publications/nistpubs/800-57/
sp800-57-Part1-revised2_Mar08-2007.pdf, March 2007.
[OATH] "Initiative for Open AuTHentication", [OATH] "Initiative for Open AuTHentication",
URL: http://www.openauthentication.org. URL: http://www.openauthentication.org.
[OATHRefArch] [OCRA] MRaihi, D., Rydell, J., Naccache, D., Machani, S., and S.
OATH, "Reference Architecture", Bajaj, "OCRA: OATH Challenge Response Algorithm", Internet
URL: http://www.openauthentication.org, Version 1.0, 2005. Draft Informational, URL: http://www.ietf.org/
[OCRA] MRaihi, D., "OCRA: OATH Challenge Response Algorithm",
Internet Draft Informational, URL: http://www.ietf.org/
internet-drafts/ internet-drafts/
draft-mraihi-mutual-oath-hotp-variants-01.txt, draft-mraihi-mutual-oath-hotp-variants-06.txt,
December 2005. December 2007.
[PKCS1] Kaliski, B., "RFC 2437: PKCS #1: RSA Cryptography
Specifications Version 2.0.",
URL: http://www.ietf.org/rfc/rfc2437.txt, Version: 2.0,
October 1998.
[PKCS12] RSA Laboratories, "PKCS #12: Personal Information Exchange [PKCS12] RSA Laboratories, "PKCS #12: Personal Information Exchange
Syntax Standard", Version 1.0, Syntax Standard", Version 1.0,
URL: ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-12/. URL: http://www.rsasecurity.com/rsalabs/pkcs/.
[PKCS5] RSA Laboratories, "PKCS #5: Password-Based Cryptography
Standard", Version 2.0,
URL: ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-5/,
March 1999.
[RFC2119] "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997,
<http://www.ietf.org/rfc/rfc2119.txt>.
[Schneier] [Schneier]
Schneier, B., "Secrets and Lies: Digitial Security in a Schneier, B., "Secrets and Lies: Digitial Security in a
Networked World", Wiley Computer Publishing, ISBN 0-8493- Networked World", Wiley Computer Publishing, ISBN 0-8493-
8253-7, 2000. 8253-7, 2000.
[XMLENC] Eastlake, D., "XML Encryption Syntax and Processing.",
URL: http://www.w3.org/TR/xmlenc-core/, December 2002.
[XMLSIG] Eastlake, D., "XML-Signature Syntax and Processing",
URL: http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/,
W3C Recommendation, February 2002.
Authors' Addresses Authors' Addresses
Philip Hoyer Philip Hoyer
ActivIdentity, Inc. ActivIdentity, Inc.
109 Borough High Street 109 Borough High Street
London, SE1 1NL London, SE1 1NL
UK UK
Phone: +44 (0) 20 7744 6455 Phone: +44 (0) 20 7744 6455
Email: Philip.Hoyer@actividentity.com Email: Philip.Hoyer@actividentity.com
 End of changes. 128 change blocks. 
340 lines changed or deleted 1170 lines changed or added

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