draft-ietf-keyprov-portable-symmetric-key-container-00.txt   draft-ietf-keyprov-portable-symmetric-key-container-01.txt 
Network Working Group P. Hoyer keyprov P. Hoyer
Internet-Draft ActivIdentity Internet-Draft ActivIdentity
Intended status: Standards Track M. Pei Intended status: Standards Track M. Pei
Expires: January 2, 2008 VeriSign Expires: March 31, 2008 VeriSign
S. Machani S. Machani
Diversinet Diversinet
S. Chang S. Chang
Gemalto Gemalto
September 28, 2007
Portable Symmetric Key Container Portable Symmetric Key Container
draft-ietf-keyprov-portable-symmetric-key-container-00.txt draft-ietf-keyprov-portable-symmetric-key-container-01.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 39
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 January 2, 2008. This Internet-Draft will expire on March 31, 2008.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2007).
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 (One Time Password (OTP) shared
secrets or symmetric cryptographic keys) to different types of strong secrets or symmetric cryptographic keys) to different types of strong
authentication devices. The standard token format enables authentication devices. The standard token format enables
enterprises to deploy best-of-breed solutions combining components enterprises to deploy best-of-breed solutions combining components
from different vendors into the same infrastructure. from different vendors into the same infrastructure.
This work is a joint effort by the members of OATH (Initiative for
Open AuTHentication) to specify a format that can be freely
distributed to the technical community. The authors believe that a
common and shared specification will facilitate adoption of two-
factor authentication on the Internet by enabling interoperability
between commercial and open-source implementations.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Conventions used in this document . . . . . . . . . . . . . . 5 2. Conventions used in this document . . . . . . . . . . . . . . 5
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1. Offline Use Cases . . . . . . . . . . . . . . . . . . . . 6 3.1. Offline Use Cases . . . . . . . . . . . . . . . . . . . . 6
3.1.1. Credential migration by end-user . . . . . . . . . . . 6 3.1.1. Credential migration by end-user . . . . . . . . . . . 6
3.1.2. Bulk import of new credentials . . . . . . . . . . . . 6 3.1.2. Bulk import of new credentials . . . . . . . . . . . . 6
3.1.3. Bulk migration of existing credentials . . . . . . . . 6 3.1.3. Bulk migration of existing credentials . . . . . . . . 6
3.1.4. Credential upload case . . . . . . . . . . . . . . . . 7 3.1.4. Credential upload case . . . . . . . . . . . . . . . . 7
skipping to change at page 3, line 5 skipping to change at page 3, line 12
5.1.10. OTP and CR specific Attributes (OPTIONAL) . . . . . . 13 5.1.10. OTP and CR specific Attributes (OPTIONAL) . . . . . . 13
6. Key container XML schema definitions . . . . . . . . . . . . . 17 6. Key container XML schema definitions . . . . . . . . . . . . . 17
6.1. XML Schema Types . . . . . . . . . . . . . . . . . . . . . 17 6.1. XML Schema Types . . . . . . . . . . . . . . . . . . . . . 17
6.1.1. KeyType . . . . . . . . . . . . . . . . . . . . . . . 18 6.1.1. KeyType . . . . . . . . . . . . . . . . . . . . . . . 18
6.1.2. UsageType . . . . . . . . . . . . . . . . . . . . . . 20 6.1.2. UsageType . . . . . . . . . . . . . . . . . . . . . . 20
6.1.3. DeviceType . . . . . . . . . . . . . . . . . . . . . . 22 6.1.3. DeviceType . . . . . . . . . . . . . . . . . . . . . . 22
6.1.4. DeviceIdType . . . . . . . . . . . . . . . . . . . . . 22 6.1.4. DeviceIdType . . . . . . . . . . . . . . . . . . . . . 22
6.1.5. UserType Type . . . . . . . . . . . . . . . . . . . . 23 6.1.5. UserType Type . . . . . . . . . . . . . . . . . . . . 23
6.1.6. KeyContainerType . . . . . . . . . . . . . . . . . . . 24 6.1.6. KeyContainerType . . . . . . . . . . . . . . . . . . . 24
6.1.7. EncryptionMethodType . . . . . . . . . . . . . . . . . 25 6.1.7. EncryptionMethodType . . . . . . . . . . . . . . . . . 25
6.1.8. DigestMethodType . . . . . . . . . . . . . . . . . . . 27 6.1.8. DigestMethodType . . . . . . . . . . . . . . . . . . . 26
6.1.9. AlgorithmIdentifierType . . . . . . . . . . . . . . . 28 6.1.9. AlgorithmIdentifierType . . . . . . . . . . . . . . . 27
6.2. EncryptionAlgorithmType . . . . . . . . . . . . . . . . . 28 6.2. EncryptionAlgorithmType . . . . . . . . . . . . . . . . . 28
6.3. HashAlgorithmType . . . . . . . . . . . . . . . . . . . . 30 6.3. HashAlgorithmType . . . . . . . . . . . . . . . . . . . . 30
6.4. DigestAlgorithmType . . . . . . . . . . . . . . . . . . . 30 6.4. DigestAlgorithmType . . . . . . . . . . . . . . . . . . . 30
6.5. KeyAlgorithmType . . . . . . . . . . . . . . . . . . . . . 31 6.5. KeyAlgorithmType . . . . . . . . . . . . . . . . . . . . . 31
6.6. valueFormat . . . . . . . . . . . . . . . . . . . . . . . 33 6.6. valueFormat . . . . . . . . . . . . . . . . . . . . . . . 33
6.7. Data elements . . . . . . . . . . . . . . . . . . . . . . 33 6.7. Data elements . . . . . . . . . . . . . . . . . . . . . . 33
6.7.1. KeyContainer . . . . . . . . . . . . . . . . . . . . . 33 6.7.1. KeyContainer . . . . . . . . . . . . . . . . . . . . . 33
7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 35 7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 35
8. Security Considerations . . . . . . . . . . . . . . . . . . . 41 8. Security Considerations . . . . . . . . . . . . . . . . . . . 41
8.1. Payload confidentiality . . . . . . . . . . . . . . . . . 41 8.1. Payload confidentiality . . . . . . . . . . . . . . . . . 41
skipping to change at page 4, line 8 skipping to change at page 4, line 8
HOTP Secret Key . . . . . . . . . . . . . . . . . . . . . 44 HOTP Secret Key . . . . . . . . . . . . . . . . . . . . . 44
10.2. Symmetric Key Container with a single Password-based 10.2. Symmetric Key Container with a single Password-based
Encrypted HOTP Secret Key . . . . . . . . . . . . . . . . 45 Encrypted HOTP Secret Key . . . . . . . . . . . . . . . . 45
11. Normative References . . . . . . . . . . . . . . . . . . . . . 46 11. Normative References . . . . . . . . . . . . . . . . . . . . . 46
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 48 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 48
Intellectual Property and Copyright Statements . . . . . . . . . . 49 Intellectual Property and Copyright Statements . . . . . . . . . . 49
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 upon one time password (OTP) and challenge such as systems based one time password (OTP) and challenge response
response mechanisms, there is a need for vendor interoperability and mechanisms, there is a need for vendor interoperability and a
a standard format for importing, exporting or provisioning symmetric standard format for importing, exporting or provisioning symmetric
key based credentials from one system to another. Traditionally key based credentials from one system to another. Traditionally
authentication server vendors and service providers have used authentication server vendors and service providers have used
proprietary formats for importing, exporting and provisioning these proprietary formats for importing, exporting and provisioning these
credentials into their systems making it hard to use tokens from credentials into their systems making it hard to use tokens from
vendor A with a server from vendor B. vendor A with a server from vendor B.
This Internet draft describes a standard format for serializing This Internet draft describes a standard format for serializing
symmetric key based credentials such as OTP shared secrets for system symmetric key based credentials such as OTP shared secrets for system
import, export or network/protocol transport. The goal is that the import, export or network/protocol transport. The goal is that the
format will facilitate dynamic provisioning and transfer of a format will facilitate dynamic provisioning and transfer of a
skipping to change at page 4, line 39 skipping to change at page 4, line 39
interoperability such as the initial event counter used in the HOTP interoperability such as the initial event counter used in the HOTP
algorithm [HOTP]. It is also applicable for other time-based or algorithm [HOTP]. It is also applicable for other time-based or
proprietary algorithms. proprietary algorithms.
To provide an analogy, in public key environments the PKCS#12 format To provide an analogy, in public key environments the PKCS#12 format
[PKCS12] is commonly used for importing and exporting private keys [PKCS12] is commonly used for importing and exporting private keys
and certificates between systems. In the environments outlined in and certificates between systems. In the environments outlined in
this document where OTP credentials may be transported directly down this document where OTP credentials may be transported directly down
to smartcards or devices with limited computing capabilities, a to smartcards or devices with limited computing capabilities, a
format with small (size in bytes) and explicit shared secret format with small (size in bytes) and explicit shared secret
configuration attribute information is desirable, avoiding complexity configuration attribute information is desirable, avoding complexity
of PKCS#12. For example, one would have to use opaque data within of PKCS#12. For example, one would have to use opaque data within
PKCS#12 to carry shared secret attributes used for OTP calculations, PKCS#12 to carry shared secret attributes used for OTP calculations,
whereas a more explicit attribute schema definition is better for wherears a more explicit attribute schema definition is better for
interoperability and efficiency. interoperation and efficiency.
2. Conventions used in this document 2. Conventions used in this document
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 In examples, "C:" and "S:" indicate lines sent by the client and
server respectively. server respectively.
skipping to change at page 7, line 42 skipping to change at page 7, line 42
credentials using some form of a online provisioning protocol. credentials using some form of a online provisioning protocol.
3.2.1. Online provisioning a credential to end-user's authentication 3.2.1. Online provisioning a credential to end-user's authentication
token token
A mobile device user wants to obtain an OTP credential (shared A mobile device user wants to obtain an OTP credential (shared
secret) for use with an OTP soft token on the device. The soft token secret) for use with an OTP soft token on the device. The soft token
client from vendor A initiates the provisioning process against a client from vendor A initiates the provisioning process against a
provisioning system from vendor B using a standards-based provisioning system from vendor B using a standards-based
provisioning protocol such as [DSKPP]. The provisioning system provisioning protocol such as [DSKPP]. The provisioning system
delivers an OTP credential in a standard format that can be processed delivers one or more OTP credential(s) in a standard format that can
by the mobile device. The user can download more than one credential be processed by the mobile device. The user can download a payload
in a single session if the provisioning server holds multiple that contains more than one credential.
credentials for that user.
In a variation of the above, instead of the user's mobile phone, a In a variation of the above, instead of the user's mobile phone, a
credential is provisioned in the user's soft token application on a credential is provisioned in the user's soft token application on a
laptop using a network-based online protocol. As before, the laptop using a network-based online protocol. As before, the
provisioning system delivers an OTP credential in a standard format provisioning system delivers an OTP credential in a standard format
that can be processed 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 credentials 3.2.2. Server to server provisioning of credentials
Sometimes, instead of importing token information from a manufacturer Sometimes, instead of importing token information from manufacturer
using a file, an OTP validation server may download the credential using a file, an OTP validation server may download the credential
seed records using an online protocol. The credentials can be seed records using an online protocol. The credentials can be
downloaded in a standard format that can be processed by a validation downloaded in a standard format that can be processed by a validation
system. system.
In another scenario, an OTA (over-the-air) credential provisioning In another scenario, an OTA (over-the-air) credential provisioning
gateway that provisions credentials to mobile phones may obtain gateway that provisions credentials to mobile phones may obtain
credentials from the credential issuer using an online protocol. The credentials from the credential issuer using an online protocol. The
credentials are delivered in a standard format that can be processed credentials are delivered in a standard format that can be processed
by the OTA credential provisioning gateway and subsequently sent to by the OTA credential provisioning gateway and subsequently sent to
skipping to change at page 11, line 22 skipping to change at page 11, line 22
5.1. Common Attributes 5.1. Common Attributes
5.1.1. Data (OPTIONAL) 5.1.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 both a base64 encoded value and a base 64 value pair which has both a base64 encoded value and a base 64
encoded valueDigest. The value can be encrypted. If the container encoded valueDigest. The value can be encrypted. If the container
has been encrypted the valueDigest MUST be populated with the digest has been encrypted the valueDigest MUST be populated with the digest
of the unencrypted value. of the unencrypted value.
This is also where the key value is held, therefore the following This is also where the key value is held, therefore the follwoing
list of attribute names have been reserved: list of 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
COUNTER: the event counter for event based OTP algorithms. 8 bytes COUNTER: the event counter for event based OTP algorithms. 8 bytes
unsigned integer in big endian (i.e. network byte order) form unsigned integer in big endian (i.e. network byte order) form
base64 encoded base64 encoded
TIME: the time for time based OTP algorithms. 8 bytes unsigned TIME: the time for time based OTP algorithms. 8 bytes unsigned
integer in big endian (i.e. network byte order) form base64 integer in big endian (i.e. network byte order) form base64
skipping to change at page 12, line 28 skipping to change at page 12, line 28
Additional attributes that are specific to the usage type MAY be Additional attributes that are specific to the usage type MAY be
required. Section 6.1 describes OTP and CR specific attributes. required. Section 6.1 describes OTP and CR specific attributes.
5.1.4. KeyId (MANDATORY) 5.1.4. KeyId (MANDATORY)
A unique and global identifier of the symmetric key. The identifier A unique and global identifier of the symmetric key. The identifier
is defined as a string of alphanumeric characters. is defined as a string of alphanumeric characters.
5.1.5. Issuer (MANDATORY) 5.1.5. Issuer (MANDATORY)
The key issuer name, this is normally the name of the organization The key issuer name, this is normally the name of the organisation
that issues the key to the end user of the key. For example MyBank that issues the key to the end user of the key. For example MyBank
issuing hardware tokens to their retail banking users 'MyBank' would issuing hardware tokens to their retail banking users 'MyBank' would
be the issuer. The Issuer is defined as a String. be the issuer. The Issuer is defined as a String.
5.1.6. FriendlyName (OPTIONAL) 5.1.6. FriendlyName (OPTIONAL)
The user friendly name that is assigned to the secret key for easy The user friendly name that is assigned to the secret key for easy
reference. The FriendlyName is defined as a String. reference. The FriendlyName is defined as a String.
5.1.7. AccessRules (OPTIONAL) 5.1.7. AccessRules (OPTIONAL)
skipping to change at page 13, line 11 skipping to change at page 13, line 11
Identifies the encryption algorithm and possible parameters used to Identifies the encryption algorithm and possible parameters used to
protect the Secret Key data in the container and MUST be set to one protect the Secret Key data in the container and MUST be set to one
of the values defined in Section 6.2. If 'OTHER' is specified an of the values defined in Section 6.2. If 'OTHER' is specified an
extension value MUST be set in the 'ext-algorithm' attribute. extension value MUST be set in the 'ext-algorithm' attribute.
When the value is set to NONE, implementations SHALL ensure the When the value is set to NONE, implementations SHALL ensure the
privacy of the key data through other standard mechanisms e.g. privacy of the key data through other standard mechanisms e.g.
transport level encryption. transport level encryption.
When the KeyContainer contains more than one key and EncryptionMethod When the container (payload) contains more than one key and
is different from NONE, the same encryption key MUST be used to EncryptionMethod is different from NONE, the same encryption key MUST
encrypt all the key data elements in the container. be used to encrypt all the key data elements in the container.
5.1.9. DigestMethod (MANDATORY when Digest is present) 5.1.9. DigestMethod (MANDATORY when Digest is present)
Identifies the algorithm and possible parameters used to generate a Identifies the algorithm and possible parameters used to generate a
digest of the Secret Key data. The digest guarantees the integrity digest of the the Secret Key data. The digest guarantees the
and the authenticity of the key data. The Digest algorithm MUST be integrity and the authenticity of the key data. The Digest algorithm
set to one of the values defined in Section 6.4. If 'OTHER' is MUST be set to one of the values defined in Section 6.4. If 'OTHER'
specified an extension value MUST be set in the 'ext-algorithm' is specified an extension value MUST be set in the 'ext-algorithm'
attribute. attribute.
See Section 6.1.8 for more information on Digest data value type. See Section 6.1.8 for more information on Digest data value type.
5.1.10. OTP and CR specific Attributes (OPTIONAL) 5.1.10. OTP and CR specific Attributes (OPTIONAL)
When the key usage is set to OTP or CR, additional attributes MUST be When the key usage is set to OTP or CR, additional attributes MUST be
provided to support the OTP and/or the response computation as provided to support the OTP and/or the response computation as
required by the underlying algorithm and to customize or configure required by the underlying algorithm and to customize or configure
the outcome of the computation (format, length and usage modes). the outcome of the computation (format, length and usage modes).
skipping to change at page 15, line 13 skipping to change at page 15, line 13
the following sub-attributes: the following sub-attributes:
1. Format (MANDATORY) 1. 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 6.6 MUST be one of the values defined in Section 6.6
2. CheckDigit (OPTIONAL) 2. CheckDigit (OPTIONAL)
Defines if the device needs to append a Luhn check digit to Defines if the device needs to append a Luhn check digit to
the response. This is only valid if the Format attribute is the response. This is only valid if the Format attribute
'DECIMAL'. Value MUST be: is'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.
3. Length (MANDATORY) 3. Length (MANDATORY)
Defines the length of the response generated by the device. Defines the length of the response generated by the device.
skipping to change at page 17, line 27 skipping to change at page 17, line 27
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 and may be associated to one or more contain one or more Key entities and may be associated to one or more
User entities. User entities.
The figure below indicates a possible relationship diagram of a The figure below indicates a possible relationship diagram of a
container. container.
-------------------------------------------- --------------------------------------------
| KeyContainer | | KeyContainer |
| | | |
| ----------------- ----------------- | | ------------------ ----------------- |
| | Device 1 | | Device n | | | | Device 1 | | Device n | |
| | | | | | | | | | | |
| | ----------- | | ----------- | | | | ------------ | | ------------ | |
| | | Key 1 | | | | Key n | | | | | | Key 1 | | | | Key n | | |
| | ----------- | | ----------- | | | | ------------ | | ------------ | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | ----------- | | ----------- | | | | ------------ | | ------------ | |
| | | Key m | | | | Key p | | | | | | Key m | | | | Key p | | |
| | ----------- | | ----------- | | | | ------------ | | ------------ | |
| ----------------- ----------------- | | ------------------ ----------------- |
| | | | | | | | | |
| | | | | | | | | |
| --------- --------- --------- | | ---------- ---------- ---------- |
| | User 1 | | User 1 | | User n | | | | User 1 | | User 1 | | User n | |
| --------- --------- --------- | | ---------- ---------- ---------- |
| | | |
-------------------------------------------- --------------------------------------------
6.1. XML Schema Types 6.1. XML Schema Types
The following types are defined to represent the portable key The following types are defined to represent the portable key
container entities and associated attributes. container entities and associated attributes.
6.1.1. KeyType 6.1.1. KeyType
skipping to change at page 18, line 21 skipping to change at page 18, line 21
<sequence> <sequence>
<element name="Issuer" type="string"/> <element name="Issuer" type="string"/>
<element name="Usage" type="pskc:UsageType"/> <element name="Usage" type="pskc:UsageType"/>
<element name="FriendlyName" type="string" minOccurs="0"/> <element name="FriendlyName" type="string" minOccurs="0"/>
<element name="Data" type="pskc:DataType" minOccurs="0" <element name="Data" type="pskc:DataType" minOccurs="0"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<element name="AccessRules" minOccurs="0"> <element name="AccessRules" minOccurs="0">
<complexType> <complexType>
<simpleContent> <simpleContent>
<extension base="string"> <extension base="string">
<attribute name="userPIN" type="boolean" use="optional" <attribute name="userPIN" type="boolean"
default="false"/> default="false"/>
</extension> </extension>
</simpleContent> </simpleContent>
</complexType> </complexType>
</element> </element>
<element name="Logo" type="logo:LogoType" minOccurs="0"/> <element name="Logo" type="logo:LogoType" minOccurs="0"/>
<element name="Expiry" type="string" minOccurs="0"/> <element name="Expiry" type="string" minOccurs="0"/>
</sequence> </sequence>
<attribute name="KeyId" type="string" use="required"/> <attribute name="KeyId" type="string" use="required"/>
<attribute name="KeyAlgorithm" type= <attribute name="KeyAlgorithm" type=
skipping to change at page 18, line 48 skipping to change at page 18, line 48
o <Usage> of type UsageType defines the usage of the Secret Key. The o <Usage> of type UsageType defines the usage of the Secret Key. The
Usage attribute is described in Section 5.1.3. Usage attribute is described in Section 5.1.3.
o <Issuer> identifies the issuer of the Secret Key. The Issuer o <Issuer> identifies the issuer of the Secret Key. The Issuer
attribute is described in Section 5.1.5. attribute is described in Section 5.1.5.
o <FriendlyName> is a user friendly name that is assigned to the o <FriendlyName> is a user friendly name that is assigned to the
Secret Key for easy reference. Secret Key for easy reference.
o <Data> conveys the data attributes (e.g. the Secret Key) in name o <Data> conveys the data attributes (eg the Secret Key) in name
(string) value (base64 encoded) pairs. The value can be (string) value (base64 encoded) pairs. The value can be
encrypted, in this case a digest of the non-encrypted data is encrypted, in this case a digest of the non-encrypted data is
present. The <Data> component is further described below. present. The <Data> component is further described below.
o <AccessRules> Defines the rules for accessing the credential on o <AccessRules> Defines the rules for accessing the credential on
the device e.g. a password must be provided by the user to view the device e.g. a password must be provided by the user to view
credential info or use the credential to generate an OTP response credential info or use the credential to generate an OTP response
o KeyId is a global identifier of the Secret Key. See Section 5.1.4. o KeyId is a global identifier of the Secret Key. See Section 5.1.4.
skipping to change at page 19, line 36 skipping to change at page 19, line 36
<complexType name="DataType"> <complexType name="DataType">
<sequence> <sequence>
<element name="Value" type="base64Binary"/> <element name="Value" type="base64Binary"/>
<element name="ValueDigest" type="base64Binary" minOccurs="0"/> <element name="ValueDigest" type="base64Binary" minOccurs="0"/>
<attribute name="Name" type="string" use="required"/> <attribute name="Name" type="string" use="required"/>
</sequence> </sequence>
</complexType> </complexType>
The 'Name' attribute defines the name of the name-value pair, the The 'Name' attribute defines the name of the name-value pair, the
following list of attribute names have been reserved: follwoing list of attribute names have been reserved:
SECRET: the key value in binary, base64 encoded SECRET: the key key value in binary, base64 encoded
COUNTER: the event counter for event based OTP algorithms. 8 bytes COUNTER: the event counter for event based OTP algorithms. 8 bytes
unsigned integer in big endian (i.e. network byte order) form unsigned integer in big endian (i.e. network byte order) form
base64 encoded base64 encoded
TIME: the time for time based OTP algorithms. 8 bytes unsigned TIME: the time for time based OTP algorithms. 8 bytes unsigned
integer in big endian (i.e. network byte order) form base64 integer in big endian (i.e. network byte order) form base64
encoded (Number of seconds since 1970) encoded (Number of seconds since 1970)
TIME_INTERVAL: the time interval value for time based OTP TIME_INTERVAL: the time interval value for time based OTP
skipping to change at page 21, line 16 skipping to change at page 21, line 16
<sequence> <sequence>
<element name="AlgorithmIdentifier" <element name="AlgorithmIdentifier"
type="pskc:AlgorithmIdentifierType" minOccurs="0"/> type="pskc:AlgorithmIdentifierType" minOccurs="0"/>
<element name="ResponseFormat"> <element name="ResponseFormat">
<complexType> <complexType>
<attribute name="format" type="pskc:valueFormat" <attribute name="format" type="pskc:valueFormat"
use="required"/> use="required"/>
<attribute name="length" type="unsignedInt" <attribute name="length" type="unsignedInt"
use="required"/> use="required"/>
<attribute name="checkDigits" type="boolean" <attribute name="checkDigits" type="boolean"
use="optional" default="false"/> default="false"/>
</complexType> </complexType>
</element> </element>
<element name="ChallengeFormat" minOccurs="0"> <element name="ChallengeFormat" minOccurs="0">
<complexType> <complexType>
<attribute name="format" type="pskc:valueFormat" <attribute name="format" type="pskc:valueFormat"
use="required"/> use="required"/>
<attribute name="min" type="unsignedInt" use="required"/> <attribute name="min" type="unsignedInt" use="required"/>
<attribute name="max" type="unsignedInt" use="required"/> <attribute name="max" type="unsignedInt" use="required"/>
<attribute name="checkDigits" type="boolean" use="optional" <attribute name="checkDigits" type="boolean"
default="false"/> default="false"/>
</complexType> </complexType>
</element> </element>
<element name="AppProfileId" type="string" minOccurs="0"/> <element name="AppProfileId" type="string" minOccurs="0"/>
</sequence> </sequence>
<attribute name="otp" type="boolean" use="optional" <attribute name="otp" type="boolean"
default="false"/>
<attribute name="cr" type="boolean" use="optional"
default="false"/>
<attribute name="sign" type="boolean" use="optional"
default="false"/>
<attribute name="encrypt" type="boolean" use="optional"
default="false"/> default="false"/>
<attribute name="unlock" type="boolean" use="optional" <attribute name="cr" type="boolean"
default="false"/> default="false"/>
<attribute name="sign" type="boolean" default="false"/>
<attribute name="encrypt" type="boolean" default="false"/>
<attribute name="unlock" type="boolean" default="false"/>
</complexType> </complexType>
The UsageType components have the following meanings: The UsageType components have the following meanings:
o <AlgorithmIdentifier> the AlgorithmIdentifier as defined in o <AlgorithmIdentifier> the AlgorithmIdentifier as defined in
[OCRA]]. [OCRA]].
o <ChallengeFormat> hold the challenge attributes in CR based
algorithm computations.
o <ResponseFormat> holds the algorithm response attributes. o <ResponseFormat> holds the algorithm response attributes.
o <AccessRules> holds a set of access rules and policies for the key o <ChallengeFormat> hold the challenge attributes in CR based
once provisioned on the Device. Currently only the userPIN algorithm computations.
attribute is defined. The userPIN indicates whether the user MUST
provide a PIN to unlock the key.
o <AppProfileId> Is the unique shared identifier for out of band o <AppProfileId> Is the unique shared identifier for out of band
shared common parameters. shared common parameters.
6.1.3. DeviceType 6.1.3. DeviceType
The DeviceType type represents the Device entity in the Container. A The DeviceType type represents the Device entity in the Container. A
Device MAY be bound to a user and MAY contain more than one keys. It Device MAY be bound to a user and MAY contain more than one keys. It
is recommended that a key is bound to one and only one Device. is recommended that a key is bound to one and only one Device.
skipping to change at page 26, line 16 skipping to change at page 25, line 35
The EncryptionMethodType is defined as follows: The EncryptionMethodType is defined as follows:
<complexType name="EncryptionMethodType"> <complexType name="EncryptionMethodType">
<sequence> <sequence>
<element name="EncKeyLabel" minOccurs="0"/> <element name="EncKeyLabel" minOccurs="0"/>
<choice> <choice>
<sequence> <sequence>
<element name="KeyInfo" type="ds:KeyInfoType" minOccurs="0"/> <element name="KeyInfo" type="ds:KeyInfoType" minOccurs="0"/>
<element name="OAEPParams" type="base64Binary" minOccurs="0"/> <element name="OAEPParams" type="base64Binary" minOccurs="0"/>
<element name="HashAlgorithm"
type="pskc:HashAlgorithmType" minOccurs="0"/>
</sequence> </sequence>
<sequence> <sequence>
<element name="PBESalt" type="base64Binary" minOccurs="0"/> <element name="PBESalt" type="base64Binary" minOccurs="0"/>
<element name="PBEIterationCount" type="int" minOccurs="0"/> <element name="PBEIterationCount" type="int" minOccurs="0"/>
<element name="IV" type="base64Binary" minOccurs="0"/> <element name="IV" type="base64Binary" minOccurs="0"/>
</sequence> </sequence>
</choice> </choice>
</sequence> </sequence>
<attribute name="algorithm" type="pskc:EncryptionAlgorithmType" <attribute name="algorithm" type="pskc:EncryptionAlgorithmType"
use="required"/> use="required"/>
skipping to change at page 27, line 16 skipping to change at page 26, line 34
o <EncKeyLabel>: identifies a unique label for a pre-shared o <EncKeyLabel>: identifies a unique label for a pre-shared
encryption key. encryption key.
o <KeyInfo>: conveys the information of the key if an RSA algorithm o <KeyInfo>: conveys the information of the key if an RSA algorithm
has been used. has been used.
o <OAEPParams>: conveys the OAEP parameters if an RSA algorithm has o <OAEPParams>: conveys the OAEP parameters if an RSA algorithm has
been used. been used.
o <HashAlgorithm>: conveys the digest algorithm if an RSA algorithm
has been used.
6.1.8. DigestMethodType 6.1.8. DigestMethodType
The DigestMethodType defines the algorithm and parameters used to The DigestMethodType defines the algorithm and parameters used to
create the digest on the unencrypted Secret Key data in the create the digest on the unencrypted Secret Key data in the
Container. The digest is applied on each individual Secret Key data Container. The digest is applied on each individual Secret Key data
in the Container before encryption. The digest method MUST be the in the Container before encryption. The digest method MUST be the
same for all Secret Key data in the container. Unless a different same for all Secret Key data in the container. Unless a different
digest key is specified it is assumed that keyed digest algorithms digest key is specified it is assumed that keyed digest algorithms
will use the same key as for encryption will use the same key as for encryption
skipping to change at page 28, line 10 skipping to change at page 27, line 27
information on supported algorithms information on supported algorithms
o <DigestKeyLabel>: identifies a unique label for a pre-shared o <DigestKeyLabel>: identifies a unique label for a pre-shared
digest key. digest key.
6.1.9. AlgorithmIdentifierType 6.1.9. AlgorithmIdentifierType
The AlgorithmIdentiferType defines the Algorithm identifier (AI) The AlgorithmIdentiferType defines the Algorithm identifier (AI)
specified in [OCRA]. specified in [OCRA].
The AlgorithmIdentifierType is defined as follows: The AlgorithmIdentifierType is defines as follows:
<complexType name="AlgorithmIdentifierType"> <complexType name="AlgorithmIdentifierType">
<sequence> <sequence>
<element name="Algorithm"> <element name="Algorithm">
<simpleType> <simpleType>
<restriction base="string"> <restriction base="string">
<enumeration value="OCRA-HOTP"/> <enumeration value="OCRA-HOTP"/>
</restriction> </restriction>
</simpleType> </simpleType>
</element> </element>
skipping to change at page 30, line 43 skipping to change at page 30, line 43
<simpleType name="HashAlgorithmType"> <simpleType name="HashAlgorithmType">
<restriction base="string"> <restriction base="string">
<enumeration value="SHA1"/> <enumeration value="SHA1"/>
<enumeration value="SHA256"/> <enumeration value="SHA256"/>
<enumeration value="SHA512"/> <enumeration value="SHA512"/>
</restriction> </restriction>
</simpleType> </simpleType>
SHA1 when the digest was performed using the SHA1 algorithm SHA1 when the digest was performed using the SHA1 algorithm
SHA192 when the digest was performed using the SHA192 algorithm
SHA256 when the digest was performed using the SHA256 algorithm SHA256 when the digest was performed using the SHA256 algorithm
SHA512 when the digest was performed using the SHA512 algorithm
6.4. DigestAlgorithmType 6.4. DigestAlgorithmType
The DigestAlgorithmType defines the allowed algorithms for generating The DigestAlgorithmType defines the allowed algorithms for generating
a digest on the unencrypted Secret Key data in the Container. a digest on the unencrypted Secret Key data in the Container.
The DigestAlgorithmType is defined as follows: The DigestAlgorithmType is defined as follows:
<simpleType name="DigestAlgorithmType"> <simpleType name="DigestAlgorithmType">
<restriction base="string"> <restriction base="string">
<enumeration value="HMAC-SHA1"/> <enumeration value="HMAC-SHA1"/>
<enumeration value="HMAC-SHA256"/> <enumeration value="HMAC-SHA256"/>
<enumeration value="HMAC-SHA512"/> <enumeration value="HMAC-SHA512"/>
<enumeration value="OTHER"/> <enumeration value="OTHER"/>
</restriction> </restriction>
</simpleType> </simpleType>
HMAC-SHA1 when the digest was performed using the HMAC-SHA1 HMAC-SHA1 when the digest was performed using the HMAC-SHA1
algorithm algorithm
HMAC-SHA192 when the digest was performed using the HMAC-SHA192 HMAC-SHA256 when the digest was performed using the HMAC-SHA256
algorithm algorithm
HMAC-SHA256 when the digest was performed using the HMAC-SHA256 HMAC-SHA512 when the digest was performed using the HMAC-SHA512
algorithm algorithm
OTHER extension point for not already defined algorithms in this OTHER extension point for not already defined algorithms in this
list. list.
6.5. KeyAlgorithmType 6.5. KeyAlgorithmType
The KeyAlgorithmType defines the algorithms in which the Secret Key The KeyAlgorithmType defines the algorithms in which the Secret Key
data is used. data is used.
skipping to change at page 36, line 40 skipping to change at page 36, line 40
type="boolean"/> type="boolean"/>
</sequence> </sequence>
</complexType> </complexType>
<complexType name="KeyType"> <complexType name="KeyType">
<sequence> <sequence>
<element name="Issuer" type="string"/> <element name="Issuer" type="string"/>
<element name="Usage" type="pskc:UsageType"/> <element name="Usage" type="pskc:UsageType"/>
<element name="FriendlyName" type="string" <element name="FriendlyName" type="string"
minOccurs="0"/> minOccurs="0"/>
<element name="Data" type="pskc:DataType" <element name="Data" type="pskc:DataType"
minOccurs="0"/> minOccurs="0" maxOccurs="unbounded"/>
<element name="AccessRules" minOccurs="0"> <element name="AccessRules" minOccurs="0">
<complexType> <complexType>
<simpleContent> <simpleContent>
<extension base="string"> <extension base="string">
<attribute name="userPIN" type="boolean" <attribute name="userPIN" type="boolean" default="false"/>
use="optional" default="false"/>
</extension> </extension>
</simpleContent> </simpleContent>
</complexType> </complexType>
</element> </element>
<element name="Logo" type="logo:LogoType" <element name="Logo" type="logo:LogoType"
minOccurs="0"/> minOccurs="0"/>
<element name="Expiry" type="string" minOccurs="0"/> <element name="Expiry" type="string" minOccurs="0"/>
</sequence> </sequence>
<attribute name="KeyId" type="string" use="required"/> <attribute name="KeyId" type="string" use="required"/>
<attribute name="KeyAlgorithm" <attribute name="KeyAlgorithm"
skipping to change at page 37, line 50 skipping to change at page 37, line 49
</complexType> </complexType>
<complexType name="UsageType"> <complexType name="UsageType">
<sequence> <sequence>
<element name="AlgorithmIdentifier" <element name="AlgorithmIdentifier"
type="pskc:AlgorithmIdentifierType" minOccurs="0"/> type="pskc:AlgorithmIdentifierType" minOccurs="0"/>
<element name="ResponseFormat"> <element name="ResponseFormat">
<complexType> <complexType>
<attribute name="format" type="pskc:valueFormat" <attribute name="format" type="pskc:valueFormat"
use="required"/> use="required"/>
<attribute name="length" type="unsignedInt" use="required"/> <attribute name="length" type="unsignedInt" use="required"/>
<attribute name="checkDigits" type="boolean" use="optional" <attribute name="checkDigits" type="boolean" default="false"/>
default="false"/>
</complexType> </complexType>
</element> </element>
<element name="ChallengeFormat" minOccurs="0"> <element name="ChallengeFormat" minOccurs="0">
<complexType> <complexType>
<attribute name="format" type="pskc:valueFormat" <attribute name="format" type="pskc:valueFormat"
use="required"/> use="required"/>
<attribute name="min" type="unsignedInt" use="required"/> <attribute name="min" type="unsignedInt" use="required"/>
<attribute name="max" type="unsignedInt" use="required"/> <attribute name="max" type="unsignedInt" use="required"/>
<attribute name="checkDigits" type="boolean" use="optional" <attribute name="checkDigits" type="boolean"
default="false"/> default="false"/>
</complexType> </complexType>
</element> </element>
<element name="Time" type="unsignedLong" minOccurs="0"/> <element name="Time" type="unsignedLong" minOccurs="0"/>
<element name="AppProfileId" type="string" minOccurs="0"/> <element name="AppProfileId" type="string" minOccurs="0"/>
</sequence> </sequence>
<attribute name="otp" type="boolean" use="optional" <attribute name="otp" type="boolean"
default="false"/> default="false"/>
<attribute name="cr" type="boolean" use="optional" <attribute name="cr" type="boolean"
default="false"/> default="false"/>
<attribute name="sign" type="boolean" use="optional" <attribute name="sign" type="boolean"
default="false"/> default="false"/>
<attribute name="encrypt" type="boolean" use="optional" <attribute name="encrypt" type="boolean"
default="false"/> default="false"/>
<attribute name="unlock" type="boolean" use="optional" <attribute name="unlock" type="boolean"
default="false"/> default="false"/>
</complexType> </complexType>
<complexType name="AttributeType"> <complexType name="AttributeType">
<simpleContent> <simpleContent>
<extension base="string"> <extension base="string">
<attribute name="name" type="string" use="required"/> <attribute name="name" type="string" use="required"/>
</extension> </extension>
</simpleContent> </simpleContent>
</complexType> </complexType>
<complexType name="EncryptionMethodType"> <complexType name="EncryptionMethodType">
<sequence> <sequence>
<element name="EncKeyLabel" minOccurs="0"/> <element name="EncKeyLabel" minOccurs="0"/>
<choice> <choice>
<sequence> <sequence>
<element name="KeyInfo" <element name="KeyInfo"
type="ds:KeyInfoType" minOccurs="0"/> type="ds:KeyInfoType" minOccurs="0"/>
<element name="OAEPParams" <element name="OAEPParams"
type="base64Binary" minOccurs="0"/> type="base64Binary" minOccurs="0"/>
<element name="HashAlgorithm"
type="pskc:HashAlgorithmType" minOccurs="0"/>
</sequence> </sequence>
<sequence> <sequence>
<element name="PBESalt" type="base64Binary" <element name="PBESalt" type="base64Binary"
minOccurs="0"/> minOccurs="0"/>
<element name="PBEIterationCount" type="int" <element name="PBEIterationCount" type="int"
minOccurs="0"/> minOccurs="0"/>
<element name="IV" type="base64Binary" minOccurs="0"/> <element name="IV" type="base64Binary" minOccurs="0"/>
</sequence> </sequence>
</choice> </choice>
</sequence> </sequence>
skipping to change at page 40, line 45 skipping to change at page 40, line 41
</restriction> </restriction>
</simpleType> </simpleType>
<element name="KeyContainer" <element name="KeyContainer"
type="pskc:KeyContainerType"/> type="pskc:KeyContainerType"/>
<complexType name="DataType"> <complexType name="DataType">
<sequence> <sequence>
<element name="Value" type="base64Binary"/> <element name="Value" type="base64Binary"/>
<element name="ValueDigest" <element name="ValueDigest"
type="base64Binary" minOccurs="0"/> type="base64Binary" minOccurs="0"/>
</sequence> </sequence>
<attribute name="Name" type="string"
use="required"/>
</complexType> </complexType>
</schema> </schema>
8. Security Considerations 8. 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
skipping to change at page 42, line 16 skipping to change at page 42, line 16
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.
8.2. Payload integrity 8.2. Payload integrity
The portable symmetric key container provides a means to guarantee The portable symmetric key container provides a mean to guarantee the
the integrity of the information it contains through digital integrity of the information it contains through digital signatures.
signatures. For best security practices, the digital signature of For best security practices, the digital signature of the container
the container should encompass the entire payload. This provides should encompass the entire payload. This provides assurances for
assurances for the integrity of all attributes. It also allows the integrity of all attributes. It also allows verification of the
verification of the integrity of a given payload even after the integrity of a given payload even after the container is delivered
container is delivered through the communication channel to the through the communication channel to the target perimeter and channel
target perimeter and channel message integrity check is no longer message integrity check is no longer possible.
possible.
8.3. Payload authenticity 8.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.
9. Acknowledgements 9. Acknowledgements
This work initiated from a joint effort by the members of OATH The authors of this draft would like to thank the following people
(Initiative for Open AuTHentication). The authors of this draft for their contributions and support to make this a better
would like to thank the following people for their contributions and specification: Apostol Vassilev, Jon Martinson, Siddhart Bajaj, Stu
support to make this a better specification: Apostol Vassilev, Jon Veath, Kevin Lewis, and Andrea Doherty.
Martinson, Siddhart Bajaj, Stu Veath, Kevin Lewis, and Andrea
Doherty.
10. Appendix A - Example Symmetric Key Containers 10. 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. However, <Signature>, Key <Value> and Key schema in section 7. However, <Signature>, Key <Value> and Key
<ValueDigest> data values are fictitious <ValueDigest> data values are fictitious
10.1. Symmetric Key Container with a single Non-Encrypted HOTP Secret 10.1. Symmetric Key Container with a single Non-Encrypted HOTP Secret
Key Key
skipping to change at page 46, line 10 skipping to change at page 46, line 10
</Data> </Data>
</Key> </Key>
</Device> </Device>
</KeyContainer> </KeyContainer>
11. Normative References 11. Normative References
[CAP] MasterCard International, "Chip Authentication Program [CAP] MasterCard International, "Chip Authentication Program
Functional Architecture", September 2004. Functional Architecture", September 2004.
[DSKPP] Doherty, A., Pei, M., Nystroem, M., and S. Machani, [DSKPP] "Dynamic Symmetric Key Provisioning Protocol", Internet
"Dynamic Symmetric Key Provisioning Protocol", Internet Draft Informational, URL: http://tools.ietf.org/wg/
Draft Informational, URL: http://tools.ietf.org/id/ keyprov/draft-doherty-keyprov-dskpp-00.txt, June 2007.
draft-ietf-keyprov-dskpp-00.txt, July 2007.
[HOTP] MRaihi, D., Bellare, M., Hoornaert, F., Naccache, D., and [HOTP] MRaihi, D., "HOTP: An HMAC-Based One Time Password
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.
[OATH] "Initiative for Open AuTHentication", [OATH] "Initiative for Open AuTHentication",
URL: http://www.openauthentication.org. URL: http://www.openauthentication.org.
[OCRA] MRaihi, D., Rydell, J., Machani, S., and S. Bajaj, "OCRA: [OATHRefArch]
OATH Challenge Response Algorithm", Internet OATH, "Reference Architecture",
Draft Informational, URL: http://www.ietf.org/ URL: http://www.openauthentication.org, Version 1.0, 2005.
[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-05.txt, draft-mraihi-mutual-oath-hotp-variants-01.txt,
December 2005. December 2005.
[PKCS1] Kaliski, B. and J. Staddon, "RFC 2437: PKCS #1: RSA [PKCS1] Kaliski, B., "RFC 2437: PKCS #1: RSA Cryptography
Cryptography Specifications Version 2.0.", Specifications Version 2.0.",
URL: http://www.ietf.org/rfc/rfc2437.txt, Version: 2.0, URL: http://www.ietf.org/rfc/rfc2437.txt, Version: 2.0,
October 1998. 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: ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-12/.
[PKCS5] RSA Laboratories, "PKCS #5: Password-Based Cryptography [PKCS5] RSA Laboratories, "PKCS #5: Password-Based Cryptography
Standard", Version 2.0, Standard", Version 2.0,
URL: ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-5/, URL: ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-5/,
March 1999. March 1999.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[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. and J. Reagle, "XML Encryption Syntax and [XMLENC] Eastlake, D., "XML Encryption Syntax and Processing.",
Processing.", URL: http://www.w3.org/TR/xmlenc-core/, URL: http://www.w3.org/TR/xmlenc-core/, December 2002.
December 2002.
[XMLSIG] Eastlake, D., Reagle, J., and D. Solo, "XML-Signature [XMLSIG] Eastlake, D., "XML-Signature Syntax and Processing",
Syntax and Processing",
URL: http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/, URL: http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/,
W3C Recommendation, February 2002. W3C Recommendation, February 2002.
Authors' Addresses Authors' Addresses
Philip Hoyer Philip Hoyer
ActivIdenity, Inc. ActivIdenity, Inc.
109 Borough High Street 109 Borough High Street
London, SE1 1NL London, SE1 1NL
UK UK
skipping to change at page 48, line 37 skipping to change at page 48, line 37
2225 Sheppard Avenue East 2225 Sheppard Avenue East
Suite 1801 Suite 1801
Toronto, Ontario M2J 5C2 Toronto, Ontario M2J 5C2
Canada Canada
Phone: +1 416 756 2324 Ext. 321 Phone: +1 416 756 2324 Ext. 321
Email: smachani@diversinet.com Email: smachani@diversinet.com
Shuh Chang Shuh Chang
Gemalto Inc. Gemalto Inc.
9442 Capital of Texas Hwy. North
Suite 400, Arboretum Plaza II
Austin, Texas 78759
USA
Phone: +1 512 257 3859
Email: shuh.chang@gemalto.com Email: shuh.chang@gemalto.com
Full Copyright Statement Full Copyright Statement
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors contained in BCP 78, and except as set forth therein, the authors
retain all their rights. retain all their rights.
 End of changes. 63 change blocks. 
119 lines changed or deleted 103 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/