ACE Working Group S. Raza
Internet-Draft J. Hoeglund
Intended status: Standards Track RISE AB
Expires: December 26, 2019 G. Selander
J. Mattsson
Ericsson AB
M. Furuhed
Nexus Group
June 24, 2019
CBOR Profile of X.509 Certificates
draft-raza-ace-cbor-certificates-02
Abstract
This document specifies a CBOR encoding and profiling of X.509 public
key certificate suitable for Internet of Things (IoT) deployments.
The full X.509 public key certificate format and commonly used ASN.1
encoding is overly verbose for constrained IoT environments.
Profiling together with CBOR encoding reduces the certificate size
significantly with associated known performance benefits.
The CBOR certificates are compatible with the existing X.509
standard, enabling the use of profiled and compressed X.509
certificates without modifications in the existing X.509 standard.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
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."
This Internet-Draft will expire on December 26, 2019.
Raza, et al. Expires December 26, 2019 [Page 1]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. X.509 Certificate Profile . . . . . . . . . . . . . . . . . . 4
3. CBOR Encoding . . . . . . . . . . . . . . . . . . . . . . . . 5
4. Deployment settings . . . . . . . . . . . . . . . . . . . . . 6
5. Expected Certificate Sizes . . . . . . . . . . . . . . . . . 7
6. Native CBOR Certificates . . . . . . . . . . . . . . . . . . 8
7. Security Considerations . . . . . . . . . . . . . . . . . . . 8
8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 8
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
10.1. Normative References . . . . . . . . . . . . . . . . . . 9
10.2. Informative References . . . . . . . . . . . . . . . . . 9
Appendix A. CBOR Certificate, CDDL . . . . . . . . . . . . . . . 10
Appendix B. X.509 Certificate Profile, ASN.1 . . . . . . . . . . 10
Appendix C. Certificate Example . . . . . . . . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13
1. Introduction
One of the challenges with deploying a Public Key Infrastructure
(PKI) for the Internet of Things (IoT) is the size and encoding of
X.509 public key certificates, since those are not optimized for
constrained environments [RFC7228]. More compact certificate
representations are desirable. Due to the current PKI usage of X.509
certificates, keeping X.509 compatibility is necessary at least for a
transition period. However, the use of a more compact encoding with
the Concise Binary Object Representation (CBOR)
[I-D.ietf-cbor-7049bis] reduces the certificate size significantly
which has known performance benefits in terms of decreased
communication overhead, power consumption, latency, storage, etc.
Raza, et al. Expires December 26, 2019 [Page 2]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
CBOR is a data format designed for small code size and small message
size. CBOR builds on the JSON data model but extends it by e.g.
encoding binary data directly without base64 conversion. In addition
to the binary CBOR encoding, CBOR also has a diagnostic notation that
is readable and editable by humans. The Concise Data Definition
Language (CDDL) [RFC8610] provides a way to express structures for
protocol messages and APIs that use CBOR. [RFC8610] also extends the
diagnostic notation.
CBOR data items are encoded to or decoded from byte strings using a
type-length-value encoding scheme, where the three highest order bits
of the initial byte contain information about the major type. CBOR
supports several different types of data items, in addition to
integers (int, uint), simple values (e.g. null), byte strings (bstr),
and text strings (tstr), CBOR also supports arrays of data items and
maps of pairs of data items. For a complete specification and
examples, see [I-D.ietf-cbor-7049bis] and [RFC8610].
This document specifies the CBOR certificate profile, which is a CBOR
based encoding and compression of the X.509 certificate format. The
profile is based on previous work on profiling of X.509 certificates
for Internet of Things deployments [X.509-IoT] which retains
backwards compatibility with X.509, and can be applied for
lightweight certificate based authentication with e.g. DTLS
[RFC6347] or EDHOC [I-D.selander-ace-cose-ecdhe]. The same profile
can be used for "native" CBOR encoded certificates, which further
optimizes the performance in constrained environments but are not
backwards compatible with X.509, see Section 6.
Other work has looked at reducing size of X.509 certificates. The
purpose of this document is to stimulate a discussion on CBOR based
certificates. Further optimizations of this profile are known and
will be included in future versions.
o Terminology {#terminology}
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
This specification makes use of the terminology in [RFC7228].
Raza, et al. Expires December 26, 2019 [Page 3]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
2. X.509 Certificate Profile
This profile is inspired by [RFC7925] and mandates further
restrictions to enable reduction of certificate size. In this
section we list the required fields in an X.509 certificate needed by
devices in IoT deployments. The corresponding ASN.1 schema is given
in Appendix B.
In order to comply with this certificate profile, the following
restrictions MUST be applied:
o Version number. The X.509 standard has not moved beyond version 3
since 2008. With the introduction of certificate extensions new
certificate fields can be added without breaking the format,
making version changes less likely. Therefore this profile fixes
the version number to 3.
o Serial number. The serial number together with the identity of
the CA is the unique identifier of a certificate. The serial
number MUST be an unsigned integer.
o Signature algorithm. For the CBOR profile, the signature
algorithm is by default assumed to be ECDSA with SHA256.
o Issuer. Used to identify the issuing CA through a sequence of
name-value pairs. This profile is restricting this to one pair,
common name and associated string value. The common name MUST
uniquely identify the CA. Other fields MUST NOT be used.
o Validity. The following representation MUST be used: UTCTime-
format, YYMMDDhhmmss. This is the most compact format allowed by
the X.509 standard.
o Subject. The subject section has the same format as the issuer,
identifying the receiver of the public key through a sequence of
name-value pairs. This sequence is in the profile restricted to a
single pair, subject name and associated (unique) value. For an
IoT-device, the MAC-derived EUI-64 serves this purpose well.
o Subject public key info. For the IoT devices, elliptic curve
cryptography based algorithms have clear advantages. For the IoT
profile the public key algorithm is by default assumed to be
prime256v1.
o Issuer Unique ID and Subject Unique ID. These fields are optional
in X.509 and MUST NOT be used with the CBOR profile.
Raza, et al. Expires December 26, 2019 [Page 4]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
o Extensions. Extensions consist of three parts; an OID, a boolean
telling if it is critical or not, and the value. To maintain
forward compatibility, the CBOR profile does not restrict the use
of extensions. By the X.509-standard, any device must be able to
process eight extensions types. Since only four of them are
critical for IoT, this profile is making the other four optional.
Still mandatory to be understood are:
* Key Usage
* Subject Alternative Name
* Basic Constraints
* Extended Key Usage
o Certificate signature algorithm. This field duplicates the info
present in the signature algorithm field. By default assumed to
be ECDSA with SHA256.
o Certificate Signature. The field corresponds to the signature
done by the CA private key. For the CBOR profile, this is
restricted to ECDSA type signatures with a signature length of 64
bits.
3. CBOR Encoding
This section specifies the CBOR certificates, which are the result of
the CBOR encoding and lossless compression of the X.509 certificate
profile of the previous section. The CDDL representation is given in
Appendix A.
The encoding and compression has several components including: ASN.1
and base64 encoding is replaced with CBOR encoding, static fields are
elided, and compression of elliptic curve points. The field
encodings and associated savings are listed below. Combining these
different components reduces the certificate size significantly, see
Figure 1.
o Version number. The version number field is omitted in the
encoding. This saves 5 bytes.
o Serial number. The serial number is encoded as an unsigned
integer. Encoding overhead is reduced by one byte.
o Signature algorithm. If the signature algorithm is the default it
is omitted in the encoding, otherwise encoded as a one byte COSE
identifier. This saves 11 or 12 bytes.
Raza, et al. Expires December 26, 2019 [Page 5]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
o Issuer. Since the profile only allows the common name type, the
common name type specifier is omitted. In total, the issuer field
encoding overhead goes from 13 bytes to one byte.
o Validity. The time is encoded as UnixTime in integer format. The
validity is represented as a 'not before'-'not after' pair of
integer. This reduces the size from 32 to 11 bytes.
o Subject. An IoT subject is identified by a EUI-64, in turn based
on a 48bit unique MAC id. This is encoded using only 7 bytes
using CBOR. This is a reduction down from 36 bytes for the
corresponding ASN.1 encoding.
o Subject public key info. If the algorithm identifier is the
default, it is omitted, otherwise encoded as a one byte COSE
identifier. For the allowed ECC type keys, one of the public key
ECC curve point elements can be calculated from the other, hence
only one of the curve points is needed (point compression, see
[PointCompression]). These actions together, for the default
algorithm, reduce size from 91 to 35 bytes.
o Extensions. Minor savings are achieved by the compact CBOR
encoding. In addition, the relevant X.509 extension OIDs always
start with 0x551D, hence these two bytes can be omitted.
o Certificate signature algorithm. This algorithm field is always
the same as the above signature algorithm, and is omitted in the
encoding.
o Signature. Since the signature algorithm and resulting signature
length are known, padding and extra length fields which are
present in the ASN.1 encoding are omitted. The overhead for
encoding the 64-bit signature value is reduced from 11 to 2 bytes.
4. Deployment settings
CBOR certificates can be deployed with legacy X.509 certificates and
CA infrastructure. In order to verify the signature, the CBOR
certificate is used to recreate the original X.509 data structure to
be able to verify the signature.
For the currently used DTLS v1.2 protocol, where the handshake is
sent unencrypted, the actual encoding and compression can be done at
different locations depending on the deployment setting. For
example, the mapping between CBOR certificate and standard X.509
certificate can take place in a 6LoWPAN border gateway which allows
the server side to stay unmodified. This case gives the advantage of
the low overhead of a CBOR certificate over a constrained wireless
Raza, et al. Expires December 26, 2019 [Page 6]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
links. The conversion to X.509 within an IoT device will incur a
computational overhead, however, this is negligible compared to the
reduced communication overhead.
For the setting with constrained server and server-only
authentication, the server only needs to be provisioned with the CBOR
certificate and does not perform the conversion to X.509. This
option is viable when client authentication can be asserted by other
means.
For DTLS v1.3, because certificates are encrypted, the proposed
encoding needs to be done fully end-to-end, through adding the
encoding/decoding functionality to the server. A new certificate
format or new certificate compression scheme needs to be added.
While that requires changes on the server side, we believe it to be
in line with other proposals utilizing cbor encoding for
communication with resource constrained devices.
5. Expected Certificate Sizes
The profiling size saving mainly comes from enforcing removal of
issuer and subject info fields besides the common name. The encoding
savings are presented above in Section 3, for a sample certificate
given in Appendix C resulting in the numbers shown in Figure 1.
After profiling, all duplicated information has been removed, and
remaining text strings are minimal in size. Therefore no further
size reduction can be reached with general compression mechanisms.
(In practice the size might even grow slightly due to the compression
encoding information, as illustrated in the table below.)
+---------------------------------------------------+
| | X.509 Profiled | CBOR Encoded |
+---------------------------------------------------+
| Certificate Size | 313 | 144 |
+---------------------------------------------------+
+-----------------------------------------------------------------+
| | X.509 Profiled | CBOR Encoded | Zlib |
+-----------------------------------------------------------------+
| Certificate Size | 313 | 144 | 319 |
+-----------------------------------------------------------------+
Figure 1: Comparing Sizes of Certificates (bytes)
Raza, et al. Expires December 26, 2019 [Page 7]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
6. Native CBOR Certificates
Further performance improvements can be achieved with the use of
native CBOR certificates. In this case the signature is calculated
over the CBOR encoded structure rather than the ASN.1 encoded
structure. This removes entirely the need for ASN.1 and reduces the
processing in the authenticating devices.
This solution applies when the devices are only required to
authenticate with a set of native CBOR certificate compatible
servers, which may become a preferred approach for future
deployments. The mapping between X.509 and CBOR certificates enables
a migration path between the backwards compatible format and the
fully optimized format.
7. Security Considerations
The CBOR profiling of X.509 certificates does not change the security
assumptions needed when deploying standard X.509 certificates but
decreases the number of fields transmitted, which reduces the risk
for implementation errors.
Conversion between the certificate formats can be made in constant
time to reduce risk of information leakage through side channels.
The current version of the format hardcodes the signature algorithm
which does not allow for crypto agility. A COSE crypto algorithm can
be specified with small overhead, and this changed is proposed for a
future version of the draft.
8. Privacy Considerations
The mechanism in this draft does not reveal any additional
information compared to X.509.
Because of difference in size, it will be possible to detect that
this profile is used.
The gateway solution described in Section 4 requires unencrypted
certificates.
9. IANA Considerations
This document registers a compression algorithm in the registry
entitled "Certificate Compression Algorithm IDs", under the
"Transport Layer Security (TLS) Extensions" heading (see
[I-D.ietf-tls-certificate-compression]).
Raza, et al. Expires December 26, 2019 [Page 8]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
+------------------+--------------------------+
| Algorithm Number | Description |
+------------------+--------------------------+
| TBD | cbor-iot |
+------------------+--------------------------+
10. References
10.1. Normative References
[I-D.ietf-cbor-7049bis]
Bormann, C. and P. Hoffman, "Concise Binary Object
Representation (CBOR)", draft-ietf-cbor-7049bis-05 (work
in progress), January 2019.
[I-D.ietf-tls-certificate-compression]
Ghedini, A. and V. Vasiliev, "TLS Certificate
Compression", draft-ietf-tls-certificate-compression-05
(work in progress), April 2019.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data
Definition Language (CDDL): A Notational Convention to
Express Concise Binary Object Representation (CBOR) and
JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610,
June 2019, <https://www.rfc-editor.org/info/rfc8610>.
10.2. Informative References
[I-D.selander-ace-cose-ecdhe]
Selander, G., Mattsson, J., and F. Palombini, "Ephemeral
Diffie-Hellman Over COSE (EDHOC)", draft-selander-ace-
cose-ecdhe-13 (work in progress), March 2019.
[PointCompression]
Miller, V., "Use of Elliptic Curves in Cryptography.",
Springer, Cham. Lecture Notes of the Institute for
Computer Sciences, Social Informatics and
Telecommunications Engineering, vol 218., 1986,
<https://doi.org/10.1007/3-540-39799-X_31>.
Raza, et al. Expires December 26, 2019 [Page 9]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
January 2012, <https://www.rfc-editor.org/info/rfc6347>.
[RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for
Constrained-Node Networks", RFC 7228,
DOI 10.17487/RFC7228, May 2014,
<https://www.rfc-editor.org/info/rfc7228>.
[RFC7925] Tschofenig, H., Ed. and T. Fossati, "Transport Layer
Security (TLS) / Datagram Transport Layer Security (DTLS)
Profiles for the Internet of Things", RFC 7925,
DOI 10.17487/RFC7925, July 2016,
<https://www.rfc-editor.org/info/rfc7925>.
[X.509-IoT]
Forsby, F., Furuhed, M., Papadimitratos, P., and S. Raza,
"Lightweight X.509 Digital Certificates for the Internet
of Things.", Springer, Cham. Lecture Notes of the
Institute for Computer Sciences, Social Informatics and
Telecommunications Engineering, vol 242., July 2018,
<https://doi.org/10.1007/978-3-319-93797-7_14>.
Appendix A. CBOR Certificate, CDDL
certificate = [
serial_number : uint,
issuer : text,
validity : [notBefore: int, notAfter: int],
subject : text / bytes
public_key : bytes
? extensions : [+ extension],
signature : bytes
? signature_alg + public_key_info : bytes
]
extension = [
oid : int,
? critical : bool,
value : bytes
]
Appendix B. X.509 Certificate Profile, ASN.1
IOTCertificate DEFINITIONS EXPLICIT TAGS ::= BEGIN
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
Raza, et al. Expires December 26, 2019 [Page 10]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
signatureAlgorithm SignatureIdentifier,
signature BIT STRING
}
TBSCertificate ::= SEQUENCE {
version \[0\] INTEGER {v3(2)},
serialNumber INTEGER (1..MAX),
signature SignatureIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
extensions \[3\] Extensions OPTIONAL
}
SignatureIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER (ecdsa-with-SHA256)
Name ::= SEQUENCE SIZE (1) OF DistinguishedName
DistinguishedName ::= SET SIZE (1) OF CommonName
CommonName ::= SEQUENCE {
type OBJECT IDENTIFIER (id-at-commonName),
value UTF8String
-- For a CA, value is CA name, else EUI-64 in format
-- "01-23-54-FF-FE-AB-CD-EF"
}
Validity ::= SEQUENCE {
notBefore UTCTime,
notAfter UTCTime
}
SubjectPublicKeyInfo::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER (id-ecPublicKey),
parameters OBJECT IDENTIFIER (prime256v1)
}
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
Extension ::= SEQUENCE {
extnId OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
}
Raza, et al. Expires December 26, 2019 [Page 11]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
ansi-X9-62 OBJECT IDENTIFIER ::=
{iso(1) member-body(2) us(840) 10045}
id-ecPublicKey OBJECT IDENTIFIER ::=
{ansi-X9-62 keyType(2) 1}
prime256v1 OBJECT IDENTIFIER ::=
{ansi-X9-62 curves(3) prime(1) 7}
ecdsa-with-SHA256 OBJECT IDENTIFIER ::=
{ansi-X9-62 signatures(4) ecdsa-with-SHA2(3) 2}
id-at-commonName OBJECT IDENTIFIER ::=
{joint-iso-itu-t(2) ds(5) attributeType(4) 3}
END
Appendix C. Certificate Example
This section shows an example of an X.509 profiled certificate before
CBOR encoding.
Certificate:
Data:
Version: 3 (0x2)
Serial Number: DEC (HEX)
Signature Algorithm: ecdsa-with-SHA256
Issuer: <23 byte issuer ID>
Validity
Not Before: <not_before_ts>
Not After : <not_after_ts>
Subject: <23 byte UID>
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
.. .. ..
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Key Usage:
Digital Signature, Key Encipherment
Signature Algorithm: ecdsa-with-SHA256
.. .. ...
Raza, et al. Expires December 26, 2019 [Page 12]
Internet-Draft CBOR Profile of X.509 Certificates June 2019
Authors' Addresses
Shahid Raza
RISE AB
Email: shahid.raza@ri.se
Joel Hoeglund
RISE AB
Email: joel.hoglund@ri.se
Goeran Selander
Ericsson AB
Email: goran.selander@ericsson.com
John Mattsson
Ericsson AB
Email: john.mattsson@ericsson.com
Martin Furuhed
Nexus Group
Email: martin.furuhed@nexusgroup.com
Raza, et al. Expires December 26, 2019 [Page 13]