One document matched: draft-ietf-pkix-ipki-ecdsa-00.txt
PKIX Working Group L. Bassham
(NIST)
Internet Draft D. Johnson
(Certicom)
expires in six months W. Polk
(NIST)
November 21,
1997
Internet X.509 Public Key Infrastructure
Representation of Elliptic Curve Digital Signature Algorithm
(ECDSA) Keys and Signatures in Internet X.509 Public Key
Infrastructure Certificates
<<draft-ietf-pkix-ipki-ecdsa-01.txt>
Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet- Drafts as reference
material or to cite them other than as "work in progress."
To learn the current status of any Internet-Draft, please check the
"1id-abstracts.txt" listing contained in the Internet- Drafts Shadow
Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
munnari.oz.au Pacific Rim), ds.internic.net (US East Coast), or
ftp.isi.edu (US West Coast).
Abstract
This is the first draft of a profile for specification of Elliptic
Curve Digital Signature Algorithm (ECDSA) keys in Internet Public Key
Infrastructure X.509 certificates. Please send comments on this
document to the ietf-pkix@tandem.com mail list.
1 Executive Summary
This specification contains guidance on the use of the Internet
Public Key Infrastructure certificates to convey Elliptic Curve
Digital Signature Algorithm (ECDSA) keys. This specification is an
addendum to RFC xxxx, "Internet Public Key Infrastructure:
Bassham, Johnson & Polk [Page
1]
INTERNET DRAFT November 21
1997
Certificate and CRL Profile". Implementations of this specification
must also conform to RFC xxxx. Implementations of this specification
are not required to conform to other parts from that series.
The Elliptic Curve Digital Signature Algorithm (ECDSA) is the
elliptic curve analog of the Digital Signature Algorithm (DSA).
This
specification profiles the format and semantics of fields in X.509
V3
certificates containing ECDSA keys. The specification addresses the
subjectPublicKeyInfo field and the keyUsage extension.
2 Requirements and Assumptions
The goal is to augment the X.509 certificate profile presented in
Part 1 to facilitate the use and management of ECDSA keys for those
communities which use this algorithm.
2.1 Communication and Topology
This profile, as presented in Part 1 and augmented by this
specification, supports users without high bandwidth, real-time IP
connectivity, or high connection availability. In addition, the
profile allows for the presence of firewall or other filtered
communication.
This profile does not assume the deployment of an X.500 Directory
system. The profile does not prohibit the use of an X.500
Directory,
but other means of distributing certificates and certificate
revocation lists (CRLs) are supported.
2.2 Acceptability Criteria
The goal of the Internet Public Key Infrastructure (PKI) is to meet
the needs of deterministic, automated identification,
authentication,
access control, and authorization functions. Support for these
services determines the attributes contained in the certificate as
well as the ancillary control information in the certificate such as
policy data and certification path constraints.
The goal of this document is to profile ECDSA certificates,
specifying the contents and semantics of attributes which were not
fully specified by Part 1. If not specifically addressed by this
document, the contents and semantics of the fields and extensions
must be as described in Part 1.
2.3 User Expectations
Users of the Internet PKI are people and processes who use client
software and are the subjects named in certificates. These uses
Bassham, Johnson & Polk [Page
2]
INTERNET DRAFT November 21
1997
include readers and writers of electronic mail, the clients for WWW
browsers, WWW servers, and the key manager for IPSEC within a
router.
This profile recognizes the limitations of the platforms these users
employ and the sophistication/attentiveness of the users themselves.
This manifests itself in minimal user configuration responsibility
(e.g., root keys, rules), explicit platform usage constraints within
the certificate, certification path constraints which shield the
user
from many malicious actions, and applications which sensibly
automate
validation functions.
2.4 Administrator Expectations
As with users, the Internet PKI profile is structured to support the
individuals who generally operate Certification Authorities (CAs).
Providing administrators with unbounded choices increases the
chances
that a subtle CA administrator mistake will result in broad
compromise or unnecessarily limit interoperability. This profile
defines the object identifiers and data formats that must be
supported to interpret ECDSA public keys.
3 ECDSA Algorithm Support
This section describes object identifiers and data formats which may
be used with PKIX certificate profile to describe X.509 certificates
containing a ECDSA public key or signed with ECDSA. Conforming CAs
are required to use the object identifiers and data formats when
issuing ECDSA certificates. Conforming applications shall recognize
the object identifiers and process the data formats when processing
such certificates.
The Elliptic Curve Digital Signature Algorithm (ECDSA) is defined in
the draft ANSI X9.62 standard [X9.62]. The ASN.1 object identifiers
used to identify the ECDSA algorithm are defined in the following
arc:
ansi-X9-62 OBJECT IDENTIFIER ::=
{ iso(1) member-body(2) us(840) 10045 }
3.1 Subject Public Key Info
The certificate identifies the ECDSA algorithm, conveys optional
parameters, and specifies the ECDSA public key in the
subjectPublicKeyInfo field. The subjectPublicKeyInfo field is a
SEQUENCE of an algorithm identifier and the subjectPublicKey field.
The certificate indicates the algorithm through an algorithm
identifier. This algorithm identifier consists of an object
identifier (OID) and optional associated parameters. Section 3.1.1
Bassham, Johnson & Polk [Page
3]
INTERNET DRAFT November 21
1997
identifies the preferred OID and parameters for the ECDSA algorithm.
Conforming CAs shall use the identified OID when issuing
certificates
containing public keys for the ECDSA algorithm. Conforming
applications supporting the ECDSA algorithm shall, at a minimum,
recognize the OID identified in section 3.1.1.
The certificate conveys the ECDSA public key through the
subjectPublicKey field. This subjectPublicKey field is a BIT
STRING.
Section 3.1.2 specifies the method for encoding a ECDSA public key
as
a BIT STRING. Conforming CAs shall encode the ECDSA public key as
described in Section 3.1.2 when issuing certificates containing
public keys for the ECDSA algorithm. Conforming applications
supporting the ECDSA algorithm shall decode the subjectPublicKey as
described in section 3.1.2 when the algorithm identifier is the one
presented in 3.1.1.
3.1.1 Algorithm Identifier and Parameters
When certificates contain an ECDSA public key, the id-ecPublicKey
algorithm identifier shall be used. The id-ecPublicKey algorithm
identifier is defined as follows:
id-public-key-type OBJECT IDENTIFIER ::= { ansi-X9.62 2 }
id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 }
ECDSA requires use of certain parameters with the public key. The
parameters may be included in the certificate using the following
ASN.1 structure:
ECParameters ::= SEQUENCE {
version INTEGER { ecpVer1(1) } (ecpVer1),
-- version is always 1
fieldID FieldID { {FieldTypes} },
-- identifies the finite field over
-- which the curve is defined
curve Curve, -- coefficients a and b of the
-- elliptic curve
base ECPoint, -- specifies the base point P
-- on the elliptic curve
order INTEGER, -- the order n of the base point
cofactor INTEGER,
... }
FieldElement ::= OCTET STRING
Bassham, Johnson & Polk [Page
4]
INTERNET DRAFT November 21
1997
The value of FieldElement shall be the octet string representation
of
a field element following the conversion routine in [X9.62, Section
4.3.1]
Curve ::= SEQUENCE {
a FieldElement,
b FieldElement,
seed BIT STRING OPTIONAL
}
ECPoint ::= OCTET STRING
The value of ECPoint shall be the octet string representation of an
elliptic curve point following the conversion routine in [X9.62,
Section 4.4.3.b]
The components of type ECParameters have the following meanings:
* version specifies the version number of the elliptic curve
parameters. It shall have the value 1 for this version of the
Standard. The notation above creates an INTEGER named ecpVer1 and
gives it a value of one. It is used to constrain version to a single
value.
* fieldID identifies the finite field over which the elliptic curve
is defined. Finite fields are represented by values of the
parameterized type FieldID, constrained to the values of the objects
defined in the information object set FieldTypes. Additional detail
regarding fieldID is provided below.
* curve specifies the coefficients a and b of the elliptic curve E.
Each coefficient shall be represented as a value of type
FieldElement, an OCTET STRING. seed is an optional parameter used to
derive the coefficients of a randomly generated elliptic curve.
* base specifies the base point P on the elliptic curve. The base
point shall be represented as a value of type ECPoint, an OCTET
STRING.
* order specifies the order n of the base point.
* cofactor is the integer h = #E(Fq)/n. Note: This parameter is not
used in ECDSA, except in parameter validation. It is included for
compatibility with Elliptic Curve Key Agreement public key
parameters.
The AlgorithmIdentifier within subjectPublicKeyInfo is the only
place
within a certificate where the parameters may be used. If the ECDSA
Bassham, Johnson & Polk [Page
5]
INTERNET DRAFT November 21
1997
algorithm parameters are absent from the subjectPublicKeyInfo
AlgorithmIdentifier and the CA signed the subject certificate using
ECDSA, then the certificate issuer's ECDSA parameters apply to the
subject's ECDSA key. If the ECDSA algorithm parameters are absent
from the subjectPublicKeyInfo AlgorithmIdentifier and the CA signed
the certificate using a signature algorithm other than ECDSA, then
clients shall not validate the certificate.
FieldID { FIELD-ID:IOSet } ::= SEQUENCE {
fieldType FIELD-ID.&id({IOSet}),
parameters FIELD-ID.&Type({IOSet}{@fieldType}) OPTIONAL
}
FieldTypes FIELD-ID ::= {
{ Prime-p IDENTIFIED BY prime-field } |
{ Characteristic-two IDENTIFIED BY characteristic-two-field },
...
}
FIELD-ID ::= TYPE-IDENTIFIER
FieldID is a parameterized type composed of two components,
fieldType
and parameters. These components are specified by the fields &id
and
&Type, which form a template for defining sets of information
objects, instances of the class FIELD-ID. This class is based on the
useful information object class TYPE-IDENTIFIER, described in X.681
Annex A. In an instance of FieldID, "fieldType" will contain an
object identifier value that uniquely identifies the type contained
in "parameters". The effect of referencing "fieldType" in both
components of the fieldID sequence is to tightly bind the object
identifier and its type.
The information object set FieldTypes is used as the single
parameter
in a reference to type FieldID. FieldTypes contains two objects
followed by the extension marker ("..."). Each object, which
represents a finite field, contains a unique object identifier and
its associated type. The values of these objects define all of the
valid values that may appear in an instance of fieldID. The
extension
marker allows backward compatibility with future versions of this
standard which may define objects to represent additional kinds of
finite fields.
The object identifier id-fieldType represents the root of a tree
containing the object identifiers of each field type. It has the
following value:
id-fieldType OBJECT IDENTIFIER ::= { ansi-X9-62 fieldType(1) }
The object identifiers prime-field and characteristic-two-field name
Bassham, Johnson & Polk [Page
6]
INTERNET DRAFT November 21
1997
the two kinds of fields defined in this Standard. They have the
following values:
prime-field OBJECT IDENTIFIER ::= { id-fieldType 1 }
characteristic-two-field OBJECT IDENTIFIER ::= { id-fieldType 2 }
Prime-p ::= INTEGER -- Field size p (p in bits)
Characteristic-two ::= SEQUENCE {
m INTEGER, -- Field size 2^m (m in bits)
basis CHARACTERISTIC-TWO.&id({BasisTypes}),
parameters CHARACTERISTIC-TWO.&Type({BasisTypes}{@basis})
}
BasisTypes CHARACTERISTIC-TWO::= {
{ NULL IDENTIFIED BY onBasis } |
{ Trinomial IDENTIFIED BY tpBasis } |
{ Pentanomial IDENTIFIED BY ppBasis },
...
}
Trinomial ::= INTEGER
Pentanomial ::= SEQUENCE {
k1 INTEGER,
k2 INTEGER,
k3 INTEGER
}
CHARACTERISTIC-TWO ::= TYPE-IDENTIFIER
The object identifier id-characteristic-two-basis represents the
root
of a tree containing the object identifiers for each type of basis
for the characteristic-two finite fields. It has the following
value:
id-characteristic-two-basis OBJECT IDENTIFIER ::= {
characteristic-two-field basisType(1) }
The object identifiers onBasis, tpBasis and ppBasis name the three
kinds of basis for characteristic-two finite fields defined by
[X9.62]. They have the following values:
onBasis OBJECT IDENTIFIER ::= { id-characteristic-two-basis 1 }
tpBasis OBJECT IDENTIFIER ::= { id-characteristic-two-basis 2 }
ppBasis OBJECT IDENTIFIER ::= { id-characteristic-two-basis 3 }
Bassham, Johnson & Polk [Page
7]
INTERNET DRAFT November 21
1997
3.1.2 Encoding of ECDSA Public Keys
The elliptic curve public key (an ECPoint which is an OCTET STRING)
is mapped to a subjectPublicKey (a BIT STRING) as follows: the most
significant bit of the OCTET STRING becomes the most significant bit
of the BIT STRING, etc.; the least significant bit of the OCTET
STRING becomes the least significant bit of the BIT STRING.
3.1.3 Key Usage Extension in ECDSA certificates
The key usage extension may optionally appear in certificates which
convey an ECDSA public key. If a certificate containing an ECDSA
public key includes the keyUsage extension, only the following
values
may be asserted:
digitalSignature;
nonRepudiation;
keyCertSign; and
cRLSign.
The keyCertSign and cRLSign values may only be asserted if the
basicConstraints extension is present and cA is TRUE.
3.2 Representation of ECDSA Signatures
When used to sign certificates, CRLs, or PKI messages, the ECDSA
shall be used with the SHA-1 hash algorithm. The ASN.1 object
identifier used to identify the ECDSA algorithm with SHA-1 shall be:
ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { ansi-X9-62 1 }
When the ecdsa-with-SHA1 algorithm identifier is used in the SIGNED
parameterized TYPE (e.g., in the signature on a certificate or CRL)
it shall have NULL parameters. The ECDSA parameters in the
certificate of the issuer shall apply to the verification of the
signature. When signing, the ECDSA algorithm generates two values.
These values are commonly referred to as r and s. To easily
transfer
these two values as one signature, they shall be ASN.1 encoded using
the following ASN.1 structure:
Ecdsa-Sig-Value ::= SEQUENCE {
r INTEGER,
s INTEGER }
References
Bassham, Johnson & Polk [Page
8]
INTERNET DRAFT November 21
1997
[X9.62] X9.62-199x, "Public Key Cryptography For The Financial
Services Industry: The Elliptic Curve Digital Signature
Algorithm (ECDSA)" November 17, 1997.
[P1363] IEEE P1363, "Standard for Public-Key Cryptography", draft
standard, 1997.
[RFC xxxx] R. Housley, W. Ford, W. Polk and D. Solo "Internet X.509
Public Key Infrastructure: Certificate and CRL Profile",
October 28, 1997.
Patent Statements
To be added.
Security Considerations
This entire memo is about security mechanisms.
Author Addresses:
Larry Bassham
NIST
Building 820, Room 426
Gaithersburg, MD 20899
USA
lbassham@nist.gov
Don Johnson
Certicom
7684 Knightshayes Drive
Manassas, VA 20111
djohnson@certicom.com
Tim Polk
NIST
Building 820, Room 426
Gaithersburg, MD 20899
USA
wpolk@nist.gov
Bassham, Johnson & Polk [Page
9]
| PAFTECH AB 2003-2026 | 2026-04-24 09:10:07 |