- From: Ned Smith <nsmith@ibeam.jf.intel.com>
- Date: Mon, 24 Feb 1997 14:36:33 +0000
- To: ietf-tls@w3.org
- Cc: John_H_Wilson@ccm.jf.intel.com, awk@ibeam.jf.intel.com, djriss@ibeam.jf.intel.com, cox@ibeam.jf.intel.com, Ron Rivest <rivest@theory.lcs.mit.edu>, Bob Blakely <blakley@vnet.ibm.com>, Phil Zimmerman <prz@pgp.com>, prz@acm.org, cme@cybercash.com
To the IETF TLS community,
Below is a proposal to allow non-X.509 certificates be passed during TLS
handshaking
in a fully backward compatible extension to the TLS spec.
Thank You,
Ned Smith
nsmith@ibeam.intel.com
----------------------------------------------------------------------------
Proposal to Extend TLS Specification to Include non-X.509 Certificate Types
The TLS specification unnecessarily restricts the format of certificates
used for authentication to X.509v3. TLS is intended to provide public-key
based channel security infrastructure to the Internet community. We believe
that standardizing TLS on X.509v3 certificate types was not primarily
intended as a judgment on the value of X.509v3, but rather, a decision
based on implementation and time to market pragmatism. However, this choice
is not necessarily broadly applicable within the Internet community.
For this reason, we propose the TLS specification be enhanced to include a
fully backwards compatible modification enabling the use of alternative
certificate infrastructures in the TLS protocol. The modifications add an
optional ClientCertificateType identifier to the end of the Certificate
message. This enables the recipient to choose an appropriate certificate
parsing utility for certificates in certificate_list. The
ClientCertificateType enumeration is extended to include identifiers for
SDSI, SPKI and PGP public-key certificate structures.
Specifically the modifications to the TLS specification are as follows:
6.4.2 Server certificate
Structure of this message:
opaque ASN.1Cert<1..2^24-1>;
struct {
ASN.1Cert certificate_list<1..2^24-1>;
ClientCertificateType cert_type;*
} Certificate;
* Indicates optional field.
certificate_list
If cert_type is non-existent then this is a sequence (chain) of
X.509.v3 certificates, ordered
with the sender's certificate first followed by any certificate
authority certificates proceeding sequentially upward, with a
self-signed certificate for the root CA coming last in the
list.
cert_type
If the identifier is not present then the certificate type
is interpreted as X.509v3.
If present the cert_type field is used to interpret the
opaque contents of certificate_list.
If cert_type is PGP then certificate_list contains a PGP
certificates where the sender’s certificate is first followed
by a sequence (set) of signers of the sender’s certificate.
If cert_type is SPKI then the certificate_list contains an SPKI
binary certificate. (It is assumed there will only be a single
SPKI certificate since the certificate structure embeds the location
of issuers within the certificate).
If cert_type is SDSIv1 then the certificate_list contains an
S-Expression representing the sender’s "Cert:" or "Delegation-Cert"
object.
(As with SPKI, SDSI certificate objects contain references to issuing
principals. Therefore, it is assumed only a single certificate will
be sent).
6.4.4 Certificate request
Structure of this message:
enum {
rsa_sign(1), dss_sign(2), rsa_fixed_dh(3), dss_fixed_dh(4),
rsa_ephemeral_dh(5), dss_ephemeral_dh(6), pgp(21), spki(22),
sdsi_v1(23)
(255)
} ClientCertificateType;
opaque DistinguishedName<1..2^16-1>;
struct {
ClientCertificateType certificate_types<1..2^8-1>;
DistinguishedName certificate_authorities<3..2^16-1>;
} CertificateRequest;
certificate_types
This field is a list of the types of certificates requested,
sorted in order of the server's preference.
certificate_authorities
A list of the distinguished names of acceptable certificate
authorities for certificate type values between (1) and (6) which
correspond to X.509v3 certificate authority names.
If certificate_types includes pgp, spki or sdsi_v1 then fields in
the Distinguished Name structure are overloaded in the following
manner:
PGP - A Distinguished Name containing:
[Org=PGP Certificate Authority, Org Unit=<a PGP key finger
print>,
Common Name=<name of a trusted PGP key signer>]
SPKI - A Distinguished Name containing:
[Org=SPKI Certificate Authority,
Org Unit=ISSUER-CERT:<URL of acceptable certificate issuer>]
SDSI - A Distinguished Name containing:
[Org=SDSIv1 Certificate Authority,
Org Unit=(Principal: (…)) or <any standard SDSI global root
names (i.e. VeriSign!!, USPS!! Etc.)>]
Note: The negotiated ciphersuite contains the key exchange policy
information. It is not believed that certificate type identifiers need to
be overloaded with key exchange policy. For this reason the new certificate
types do not contain instances for each key exchange method.
----------------------------------------------------------------------------
------
Received on Monday, 24 February 1997 17:37:03 UTC