[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PKIX 3 Certificate Request format



The PKIX meeting minutes, promptly submitted by Steve Kent, said:

> 	The presentation on the Part 3 document was made by its
> authors, S. Farrell and C. Adams.
>  [...]
> There is
> a separate issue about use of PKCS-10, which is somewhat less powerful
> than what is currently offered.  Thus the suggestion is to make
> PKCS-10 a format option, but not the only format option for
> certificate request messages.


At the WG meeting, Dave Solo heartily endorsed the idea of adding
PKCS-10 certificate requests in addition to the PKIX-3 certificate
requests, and Russ Housley suggested replacing the PKIX request with
the PKCS-10 request.

In addition, Tim Polk's Minimum Interoperability Specification (MISPC)
document includes certificate requests in both PKIX and encapsulated
PKCS-10 formats.

For reference, the core of the two request formats are as follows:

PKIX-3/MISPC:
    CertTemplate ::= SEQUENCE {
	version		[0] Version		OPTIONAL,
	serial		[1] INTEGER		OPTIONAL,
	signingAlg	[2] AlgorithmIdentifier	OPTIONAL,
	subject		[3] Name		OPTIONAL,
	validity	[4] OptionalValidity	OPTIONAL,
	issuer		[5] Name		OPTIONAL,
	publicKey	[6] SubjectPublicKeyInfo OPTIONAL, --required :-)
	issuerUID	[7] UniqueIdentifier	OPTIONAL, -- not supported
	subjectUID	[8] UniqueIdentifier	OPTIONAL, -- not supported
	extensions	[9] Extensions		OPTIONAL
    }

PKCS-10:
    CertificationRequestInfo ::= SEQUENCE {
	version		Version,
	subject		Name,
	subjectPublicKeyInfo SubjectPublicKeyInfo,
	attributes	[0] IMPLICIT Attributes
    }



The PKIX-3 format appears to be a proper superset of the PKCS-10
format, i.e. every possible certificate that could be requested
using PKCS-10 can also be requested using PKIX-3, however PKCS-10
cannot support several of the PKIX-3 request fields.

IMO, the PKIX-3 certificate request should remain as it is. Replacing the
current request format with PKCS-10 would reduce functionality; adding
PKCS-10 requests in addition to the current format would increase
complexity without offering any corresponding benefit. Creating a
protocol with two non-orthogonal messages to perform a single function
is a poor design practice.

The argument was made that PKCS-10 needs to be added to PKIX-3 in order
to accommodate existing legacy implementations.  This is not true -
all implementations are free to use either PKIX-3 or PKCS-10 or
both, without modifying either specification.  There is no need
to create a muddy hybrid specification to enable interoperability
with legacy apps - implementations can continue to support PKCS-10
for as long as there is a market need to do so.

Moreover, no existing PKCS-10 implementations will conform to
the MISPC spec.  They will all need to be modified to add the
PKIMessage encapsulation around the PKCS-10 cert request.  This
is a major, non-trivial modification to the code - if you are going
to expend that amount of development effort you might as well also
make the tiny additional change to put the request in PKIX-3 format.

In summary, the PKIX-3 specification should not have its existing
certificate request replaced or augmented by a PKCS-10-format message.
The MISPC specification should not include an encapsulated PKCS-10
message, instead it should state that either PKIX-3 PKIMessage's
or raw PKCS-10 messages should be supported for interoperability,
with a sunset date for the PKCS-10 support.

         dpk