<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.8 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY I-D.ietf-core-oscore-groupcomm SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-oscore-groupcomm.xml">
<!ENTITY I-D.ietf-tls-dtls13 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-dtls13.xml">
<!ENTITY I-D.ietf-tls-dtls-connection-id SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-dtls-connection-id.xml">
<!ENTITY I-D.ietf-lake-edhoc SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-edhoc.xml">
<!ENTITY I-D.rescorla-tls-ctls SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.rescorla-tls-ctls.xml">
<!ENTITY RFC5246 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5246.xml">
<!ENTITY RFC6347 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6347.xml">
<!ENTITY RFC7400 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7400.xml">
<!ENTITY RFC7252 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
<!ENTITY RFC7925 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7925.xml">
<!ENTITY RFC8323 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8323.xml">
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC8613 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
<!ENTITY RFC7924 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7924.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc tocdepth="3"?>

<rfc ipr="trust200902" docName="draft-ietf-lwig-security-protocol-comparison-05" category="info">

  <front>
    <title>Comparison of CoAP Security Protocols</title>

    <author initials="J." surname="Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson AB</organization>
      <address>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson AB</organization>
      <address>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Vucinic" fullname="Malisa Vucinic">
      <organization>INRIA</organization>
      <address>
        <email>malisa.vucinic@inria.fr</email>
      </address>
    </author>

    <date year="2020" month="November" day="02"/>

    
    <workgroup>LWIG Working Group</workgroup>
    

    <abstract>


<t>This document analyzes and compares the sizes of key exchange flights and the per-packet message size overheads when using different security protocols to secure CoAP. The analyzed security protocols are DTLS 1.2, DTLS 1.3, TLS 1.2, TLS 1.3, EDHOC, OSCORE, and Group OSCORE. The DTLS and TLS record layers are analyzed with and without 6LoWPAN-GHC compression. DTLS is analyzed with and without Connection ID.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This document analyzes and compares the sizes of key exchange flights and the per-packet message size overheads when using different security protocols to secure CoAP over UPD <xref target="RFC7252"/> and TCP <xref target="RFC8323"/>. The analyzed security protocols are DTLS 1.2 <xref target="RFC6347"/>, DTLS 1.3 <xref target="I-D.ietf-tls-dtls13"/>, TLS 1.2 <xref target="RFC5246"/>, TLS 1.3 <xref target="RFC8446"/>, EDHOC <xref target="I-D.ietf-lake-edhoc"/>, OSCORE <xref target="RFC8613"/>, and Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>

<t>The DTLS and TLS record layers are analyzed with and without 6LoWPAN-GHC compression. DTLS is anlyzed with and without Connection ID <xref target="I-D.ietf-tls-dtls-connection-id"/>. Readers are expected to be familiar with some of the terms described in RFC 7925 <xref target="RFC7925"/>, such as ICV. <xref target="handshake"/> compares the overhead of key exchange, while <xref target="record"/> covers the overhead for protection of application data.</t>

</section>
<section anchor="handshake" title="Overhead of Key Exchange Protocols">

<t>This section analyzes and compares the sizes of key exchange flights for different protocols.</t>

<t>To enable a fair comparison between protocols, the following assumptions are made:</t>

<t><list style="symbols">
  <t>All the overhead calculations in this section use AES-CCM with a tag length of 8 bytes (e.g.  AES_128_CCM_8 or AES-CCM-16-64-128).</t>
  <t>A minimum number of algorithms and cipher suites is offered. The algorithm used/offered are Curve25519, ECDSA with P-256, AES-CCM_8, SHA-256.</t>
  <t>The length of key identifiers are 1 byte.</t>
  <t>The length of connection identifiers are 1 byte.</t>
  <t>DTLS RPK makes use of point compression, which saves 32 bytes.</t>
  <t>DTLS handshake message fragmentation is not considered.</t>
  <t>Only the DTLS mandatory extensions are considered, except for Connection ID.</t>
</list></t>

<t><xref target="summ-handshake"/> gives a short summary of the message overhead based on different parameters and some assumptions. The following sections detail the assumptions and the calculations.</t>

<section anchor="summ-handshake" title="Summary">

<t>The DTLS overhead is dependent on the parameter Connection ID. The following overheads apply for all Connection IDs of the same length, when Connection ID is used.</t>

<t>The EDHOC overhead is dependent on the key identifiers included. The following overheads apply for Sender IDs of the same length.</t>

<t>All the overhead are dependent on the tag length. The following overheads apply for tags of the same length.</t>

<t><xref target="fig-compare1"/> compares the message sizes of EDHOC <xref target="I-D.ietf-lake-edhoc"/> with the DTLS 1.3 <xref target="I-D.ietf-tls-dtls13"/> and TLS 1.3 <xref target="RFC8446"/> handshakes with connection ID.</t>

<figure title="Comparison of message sizes in bytes with Connection ID" anchor="fig-compare1"><artwork align="center"><![CDATA[
=====================================================================
Flight                             #1         #2        #3      Total
---------------------------------------------------------------------
DTLS 1.3 RPK + ECDHE              150        373       213        736
DTLS 1.3 Cached X.509/RPK + ECDHE 182        347       213        742
DTLS 1.3 PSK + ECDHE              184        190        57        431
DTLS 1.3 PSK                      134        150        57        341
---------------------------------------------------------------------
EDHOC RPK + ECDHE                  37         46        20        103
EDHOC X.509 + ECDHE                37        117        91        245
=====================================================================
]]></artwork></figure>

<t><xref target="fig-compare2"/> compares of message sizes of DTLS 1.3 <xref target="I-D.ietf-tls-dtls13"/> and TLS 1.3 <xref target="RFC8446"/> handshakes without connection ID.</t>

<figure title="Comparison of message sizes in bytes without Connection ID" anchor="fig-compare2"><artwork align="center"><![CDATA[
=====================================================================
Flight                             #1         #2        #3      Total
---------------------------------------------------------------------
DTLS 1.3 RPK + ECDHE              144        364       212        722
DTLS 1.3 PSK + ECDHE              178        183        56        417
DTLS 1.3 PSK                      128        143        56        327
---------------------------------------------------------------------
TLS 1.3  RPK + ECDHE              129        322       194        645
TLS 1.3  PSK + ECDHE              163        157        50        370
TLS 1.3  PSK                      113        117        50        280
=====================================================================
]]></artwork></figure>

<t>The details of the message size calculations are given in the following sections.</t>

</section>
<section anchor="dtls-13" title="DTLS 1.3">

<t>This section gives an estimate of the message sizes of DTLS 1.3 with different authentication methods. Note that the examples in this section are not test vectors, the cryptographic parts are just replaced with byte strings of the same length, while other fixed length fields are replace with arbitrary strings or omitted, in which case their length is indicated. Values that are not arbitrary are given in hexadecimal.</t>

<section anchor="size-dtls13rpk" title="Message Sizes RPK + ECDHE">

<t>In this section, a Connection ID of 1 byte is used.</t>

<section anchor="dtls13f1rpk" title="flight_1">

<figure><artwork><![CDATA[
Record Header - DTLSPlaintext (13 bytes):
16 fe fd EE EE SS SS SS SS SS SS LL LL

  Handshake Header - Client Hello (10 bytes):
  01 LL LL LL SS SS 00 00 00 LL LL LL

    Legacy Version (2 bytes):
    fe fd

    Client Random (32 bytes):
    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
    16 17 18 19 1a 1b 1c 1d 1e 1f

    Legacy Session ID (1 bytes):
    00

    Legacy Cookie (1 bytes):
    00

    Cipher Suites (TLS_AES_128_CCM_8_SHA256) (4 bytes):
    00 02 13 05

    Compression Methods (null) (2 bytes):
    01 00

    Extensions Length (2 bytes):
    LL LL

      Extension - Supported Groups (x25519) (8 bytes):
      00 0a 00 04 00 02 00 1d

      Extension - Signature Algorithms (ecdsa_secp256r1_sha256)
      (8 bytes):
      00 0d 00 04 00 02 08 07

      Extension - Key Share (42 bytes):
      00 33 00 26 00 24 00 1d 00 20
      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
      16 17 18 19 1a 1b 1c 1d 1e 1f

      Extension - Supported Versions (1.3) (7 bytes):
      00 2b 00 03 02 03 04

      Extension - Client Certificate Type (Raw Public Key) (6 bytes):
      00 13 00 01 01 02

      Extension - Server Certificate Type (Raw Public Key) (6 bytes):
      00 14 00 01 01 02

      Extension - Connection Identifier (43) (6 bytes):
      XX XX 00 02 01 42

13 + 10 + 2 + 32 + 1 + 1 + 4 + 2 + 2 + 8 + 8 + 42 + 7 + 6 + 6 + 6 = 150
bytes
]]></artwork></figure>

<t>DTLS 1.3 RPK + ECDHE flight_1 gives 150 bytes of overhead.</t>

</section>
<section anchor="dtls13f2rpk" title="flight_2">

<figure><artwork><![CDATA[
Record Header - DTLSPlaintext (13 bytes):
16 fe fd EE EE SS SS SS SS SS SS LL LL

  Handshake Header - Server Hello (10 bytes):
  02 LL LL LL SS SS 00 00 00 LL LL LL

    Legacy Version (2 bytes):
    fe fd

    Server Random (32 bytes):
    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
    16 17 18 19 1a 1b 1c 1d 1e 1f

    Legacy Session ID (1 bytes):
    00

    Cipher Suite (TLS_AES_128_CCM_8_SHA256) (2 bytes):
    13 05

    Compression Method (null) (1 bytes):
    00

    Extensions Length (2 bytes):
    LL LL

      Extension - Key Share (40 bytes):
      00 33 00 24 00 1d 00 20
      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
       16 17 18 19 1a 1b 1c 1d 1e 1f

      Extension - Supported Versions (1.3) (6 bytes):
      00 2b 00 02 03 04

      Extension - Connection Identifier (43) (6 bytes):
      XX XX 00 02 01 43

Record Header - DTLSCiphertext, Full (6 bytes):
HH ES SS 43 LL LL

  Handshake Header - Encrypted Extensions (10 bytes):
  08 LL LL LL SS SS 00 00 00 LL LL LL

    Extensions Length (2 bytes):
    LL LL

      Extension - Client Certificate Type (Raw Public Key) (6 bytes):
      00 13 00 01 01 02

      Extension - Server Certificate Type (Raw Public Key) (6 bytes):
      00 14 00 01 01 02

  Handshake Header - Certificate Request (10 bytes):
  0d LL LL LL SS SS 00 00 00 LL LL LL

    Request Context (1 bytes):
    00

    Extensions Length (2 bytes):
    LL LL

      Extension - Signature Algorithms (ecdsa_secp256r1_sha256)
      (8 bytes):
      00 0d 00 04 00 02 08 07

  Handshake Header - Certificate (10 bytes):
  0b LL LL LL SS SS 00 00 00 LL LL LL

    Request Context (1 bytes):
    00

    Certificate List Length (3 bytes):
    LL LL LL

    Certificate Length (3 bytes):
    LL LL LL

    Certificate (59 bytes) // Point compression
    ....

    Certificate Extensions (2 bytes):
    00 00

  Handshake Header - Certificate Verify (10 bytes):
  0f LL LL LL SS SS 00 00 00 LL LL LL

    Signature  (68 bytes):
    ZZ ZZ 00 40 ....

  Handshake Header - Finished (10 bytes):
  14 LL LL LL SS SS 00 00 00 LL LL LL

    Verify Data (32 bytes):
    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
    16 17 18 19 1a 1b 1c 1d 1e 1f

  Record Type (1 byte):
  16

Auth Tag (8 bytes):
e0 8b 0e 45 5a 35 0a e5

13 + 102 + 6 + 24 + 21 + 78 + 78 + 42 + 1 + 8 = 373 bytes
]]></artwork></figure>

<t>DTLS 1.3 RPK + ECDHE flight_2 gives 373 bytes of overhead.</t>

</section>
<section anchor="dtls13f3rpk" title="flight_3">

<figure><artwork><![CDATA[
Record Header (6 bytes) // DTLSCiphertext, Full:
ZZ ES SS 42 LL LL

  Handshake Header - Certificate (10 bytes):
  0b LL LL LL SS SS XX XX XX LL LL LL

    Request Context (1 bytes):
    00

    Certificate List Length (3 bytes):
    LL LL LL

    Certificate Length (3 bytes):
    LL LL LL

    Certificate (59 bytes) // Point compression
    ....

    Certificate Extensions (2 bytes):
    00 00

  Handshake Header - Certificate Verify (10 bytes):
  0f LL LL LL SS SS 00 00 00 LL LL LL

    Signature  (68 bytes):
    04 03 LL LL //ecdsa_secp256r1_sha256
    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
    16 17 18 19 1a 1b 1c 1d 1e 1f 00 01 02 03 04 05 06 07 08 09 0a 0b
     0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f

  Handshake Header - Finished (10 bytes):
  14 LL LL LL SS SS 00 00 00 LL LL LL

    Verify Data (32 bytes) // SHA-256:
    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
    16 17 18 19 1a 1b 1c 1d 1e 1f

  Record Type (1 byte):
  16

Auth Tag (8 bytes) // AES-CCM_8:
00 01 02 03 04 05 06 07

6 + 78 + 78 + 42 + 1 + 8 = 213 bytes
]]></artwork></figure>

<t>DTLS 1.3 RPK + ECDHE flight_2 gives 213 bytes of overhead.</t>

</section>
</section>
<section anchor="message-sizes-psk-ecdhe" title="Message Sizes PSK + ECDHE">

<section anchor="dtls13f1pskecdhe" title="flight_1">

<t>The differences in overhead compared to <xref target="dtls13f1rpk"/> are:</t>

<t>The following is added:</t>

<figure><artwork><![CDATA[
+ Extension - PSK Key Exchange Modes (6 bytes):
  00 2d 00 02 01 01

+ Extension - Pre Shared Key (48 bytes):
  00 29 00 2F
  00 0a 00 01 ID 00 00 00 00
  00 21 20 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13
  14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
]]></artwork></figure>

<t>The following is removed:</t>

<figure><artwork><![CDATA[
- Extension - Signature Algorithms (ecdsa_secp256r1_sha256) (8 bytes)

- Extension - Client Certificate Type (Raw Public Key) (6 bytes)

- Extension - Server Certificate Type (Raw Public Key) (6 bytes)
]]></artwork></figure>

<t>In total:</t>

<figure><artwork><![CDATA[
150 + 6 + 48 - 8 - 6 - 6 = 184 bytes
]]></artwork></figure>

<t>DTLS 1.3 PSK + ECDHE flight_1 gives 184 bytes of overhead.</t>

</section>
<section anchor="dtls13f2pskecdhe" title="flight_2">

<t>The differences in overhead compared to <xref target="dtls13f2rpk"/> are:</t>

<t>The following is added:</t>

<figure><artwork><![CDATA[
+ Extension - Pre Shared Key (6 bytes)
  00 29 00 02 00 00
]]></artwork></figure>

<t>The following is removed:</t>

<figure><artwork><![CDATA[
- Handshake Message Certificate (78 bytes)

- Handshake Message CertificateVerify (78 bytes)

- Handshake Message CertificateRequest (21 bytes)

- Extension - Client Certificate Type (Raw Public Key) (6 bytes)

- Extension - Server Certificate Type (Raw Public Key) (6 bytes)
]]></artwork></figure>

<t>In total:</t>

<figure><artwork><![CDATA[
373 - 78 - 78 - 21 - 6 - 6  + 6 = 190 bytes
]]></artwork></figure>

<t>DTLS 1.3 PSK + ECDHE flight_2 gives 190 bytes of overhead.</t>

</section>
<section anchor="dtls13f3pskecdhe" title="flight_3">

<t>The differences in overhead compared to <xref target="dtls13f3rpk"/> are:</t>

<t>The following is removed:</t>

<figure><artwork><![CDATA[
- Handshake Message Certificate (78 bytes)

- Handshake Message Certificate Verify (78 bytes)
]]></artwork></figure>

<t>In total:</t>

<figure><artwork><![CDATA[
213 - 78 - 78 = 57 bytes
]]></artwork></figure>

<t>DTLS 1.3 PSK + ECDHE flight_3 gives 57 bytes of overhead.</t>

</section>
</section>
<section anchor="message-sizes-psk" title="Message Sizes PSK">

<section anchor="dtls13f1psk" title="flight_1">

<t>The differences in overhead compared to <xref target="dtls13f1pskecdhe"/> are:</t>

<t>The following is removed:</t>

<figure><artwork><![CDATA[
- Extension - Supported Groups (x25519) (8 bytes)

- Extension - Key Share (42 bytes)
]]></artwork></figure>

<t>In total:</t>

<figure><artwork><![CDATA[
184 - 8 - 42 = 134 bytes
]]></artwork></figure>

<t>DTLS 1.3 PSK flight_1 gives 134 bytes of overhead.</t>

</section>
<section anchor="dtls13f2psk" title="flight_2">

<t>The differences in overhead compared to <xref target="dtls13f2pskecdhe"/> are:</t>

<t>The following is removed:</t>

<figure><artwork><![CDATA[
- Extension - Key Share (40 bytes)
]]></artwork></figure>

<t>In total:</t>

<figure><artwork><![CDATA[
190 - 40 = 150 bytes
]]></artwork></figure>

<t>DTLS 1.3 PSK flight_2 gives 150 bytes of overhead.</t>

</section>
<section anchor="dtls13f3psk" title="flight_3">

<t>There are no differences in overhead compared to <xref target="dtls13f3pskecdhe"/>.</t>

<t>DTLS 1.3 PSK flight_3 gives 57 bytes of overhead.</t>

</section>
</section>
<section anchor="cached-information" title="Cached Information">

<t>In this section, we consider the effect of <xref target="RFC7924"/> on the message size overhead.</t>

<t>Cached information together with server X.509 can be used to move bytes from flight #2 to flight #1 (cached RPK increases the number of bytes compared to cached X.509).</t>

<t>The differences compared to <xref target="size-dtls13rpk"/> are the following.</t>

<t>For the flight #1, the following is added:</t>

<figure><artwork><![CDATA[
+ Extension - Client Cashed Information (39 bytes):
  00 19 LL LL LL LL
  01 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
  16 17 18 19 1a 1b 1c 1d 1e 1f
]]></artwork></figure>

<t>And the following is removed:</t>

<figure><artwork><![CDATA[
- Extension - Server Certificate Type (Raw Public Key) (6 bytes)
]]></artwork></figure>

<t>Giving a total of:</t>

<figure><artwork><![CDATA[
150 + 33 = 183 bytes
]]></artwork></figure>

<t>For the flight #2, the following is added:</t>

<figure><artwork><![CDATA[
+ Extension - Server Cashed Information (7 bytes):
  00 19 LL LL LL LL 01
]]></artwork></figure>

<t>And the following is removed:</t>

<figure><artwork><![CDATA[
- Extension - Server Certificate Type (Raw Public Key) (6 bytes)

- Server Certificate (59 bytes -> 32 bytes)
]]></artwork></figure>

<t>Giving a total of:</t>

<figure><artwork><![CDATA[
373 - 26 = 347 bytes
]]></artwork></figure>

<t>A summary of the calculation is given in <xref target="fig-compare3"/>.</t>

<figure title="Comparison of message sizes in bytes for DTLS 1.3 RPK + ECDH with and without cached X.509" anchor="fig-compare3"><artwork align="center"><![CDATA[
======================================================================
Flight                             #1         #2        #3      Total
----------------------------------------------------------------------
DTLS 1.3 Cached X.509/RPK + ECDHE 183        347       213       743
DTLS 1.3 RPK + ECDHE              150        373       213       736
=======================================================================
]]></artwork></figure>

</section>
<section anchor="resumption" title="Resumption">

<t>To enable resumption, a 4th flight (New Session Ticket) is added to the PSK handshake.</t>

<figure><artwork><![CDATA[
Record Header - DTLSCiphertext, Full (6 bytes):
HH ES SS 43 LL LL

  Handshake Header - New Session Ticket (10 bytes):
  04 LL LL LL SS SS 00 00 00 LL LL LL

    Ticket Lifetime (4 bytes):
    00 01 02 03

    Ticket Age Add (4 bytes):
    00 01 02 03

    Ticket Nonce (2 bytes):
    01 00

    Ticket (6 bytes):
    00 04 ID ID ID ID

    Extensions (2 bytes):
    00 00

Auth Tag (8 bytes) // AES-CCM_8:
00 01 02 03 04 05 06 07

6 + 10 + 4 + 4 + 2 + 6 + 2 + 8 = 42 bytes
]]></artwork></figure>

<t>The initial handshake when resumption is enabled is just a PSK handshake with 134 + 150 + 57 + 42 = 383 bytes.</t>

</section>
<section anchor="without-connection-id" title="Without Connection ID">

<t>Without a Connection ID the DTLS 1.3 flight sizes changes as follows.</t>

<figure><artwork><![CDATA[
DTLS 1.3 Flight #1:   -6 bytes
DTLS 1.3 Flight #2:   -7 bytes
DTLS 1.3 Flight #3:   -1 byte
]]></artwork></figure>

<figure title="Comparison of message sizes in bytes for DTLS 1.3 without Connection ID" anchor="fig-compare4"><artwork align="center"><![CDATA[
=======================================================================
Flight                                #1         #2       #3    Total
-----------------------------------------------------------------------
DTLS 1.3 RPK + ECDHE (no cid)        144        364       212    722
DTLS 1.3 PSK + ECDHE (no cid)        178        183        56    417
DTLS 1.3 PSK (no cid)                128        143        56    327
=======================================================================
]]></artwork></figure>

</section>
<section anchor="dtls-raw-public-keys" title="DTLS Raw Public Keys">

<t>TODO</t>

<section anchor="subjectpublickeyinfo-without-point-compression" title="SubjectPublicKeyInfo without point compression">

<figure><artwork><![CDATA[
0x30 // Sequence
0x59 // Size 89

0x30 // Sequence
0x13 // Size 19
0x06 0x07 0x2A 0x86 0x48 0xCE 0x3D 0x02 0x01
     // OID 1.2.840.10045.2.1 (ecPublicKey)
0x06 0x08 0x2A 0x86 0x48 0xCE 0x3D 0x03 0x01 0x07
     // OID 1.2.840.10045.3.1.7 (secp256r1)

0x03 // Bit string
0x42 // Size 66
0x00 // Unused bits 0
0x04 // Uncompressed
...... 64 bytes X and Y

Total of 91 bytes
]]></artwork></figure>

</section>
<section anchor="subjectpublickeyinfo-with-point-compression" title="SubjectPublicKeyInfo with point compression">

<figure><artwork><![CDATA[
0x30 // Sequence
0x59 // Size 89

0x30 // Sequence
0x13 // Size 19
0x06 0x07 0x2A 0x86 0x48 0xCE 0x3D 0x02 0x01
     // OID 1.2.840.10045.2.1 (ecPublicKey)
0x06 0x08 0x2A 0x86 0x48 0xCE 0x3D 0x03 0x01 0x07
     // OID 1.2.840.10045.3.1.7 (secp256r1)

0x03 // Bit string
0x42 // Size 66
0x00 // Unused bits 0
0x03 // Compressed
...... 32 bytes X

Total of 59 bytes
]]></artwork></figure>

</section>
</section>
</section>
<section anchor="tls-13" title="TLS 1.3">

<t>In this section, the message sizes are calculated for TLS 1.3. The major changes compared to DTLS 1.3 are that the record header is smaller, the handshake headers is smaller, and that Connection ID is not supported.  Recently, additional work has taken shape with the goal to further reduce overhead for TLS 1.3 (see <xref target="I-D.rescorla-tls-ctls"/>).</t>

<t>TLS Assumptions:</t>

<t><list style="symbols">
  <t>Minimum number of algorithms and cipher suites offered</t>
  <t>Curve25519, ECDSA with P-256, AES-CCM_8, SHA-256</t>
  <t>Length of key identifiers: 1 bytes</t>
  <t>TLS RPK with point compression (saves 32 bytes)</t>
  <t>Only mandatory TLS extensions</t>
</list></t>

<t>For the PSK calculations, <xref target="Ulfheim-TLS13"/> was a useful resource, while for RPK calculations we followed the work of  <xref target="IoT-Cert"/>.</t>

<section anchor="message-sizes-rpk-ecdhe" title="Message Sizes RPK + ECDHE">

<section anchor="tls13f1rpk" title="flight_1">

<figure><artwork><![CDATA[
Record Header - TLSPlaintext (5 bytes):
16 03 03 LL LL

  Handshake Header - Client Hello (4 bytes):
  01 LL LL LL

    Legacy Version (2 bytes):
    03 03

    Client Random (32 bytes):
    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
    16 17 18 19 1a 1b 1c 1d 1e 1f

    Legacy Session ID (1 bytes):
    00

    Cipher Suites (TLS_AES_128_CCM_8_SHA256) (4 bytes):
    00 02 13 05

    Compression Methods (null) (2 bytes):
    01 00

    Extensions Length (2 bytes):
    LL LL

      Extension - Supported Groups (x25519) (8 bytes):
      00 0a 00 04 00 02 00 1d

      Extension - Signature Algorithms(ecdsa_secp256r1_sha256)(8 bytes):
      00 0d 00 04 00 02 08 07

      Extension - Key Share (42 bytes):
      00 33 00 26 00 24 00 1d 00 20
      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
      16 17 18 19 1a 1b 1c 1d 1e 1f

      Extension - Supported Versions (1.3) (7 bytes):
      00 2b 00 03 02 03 04

      Extension - Client Certificate Type (Raw Public Key) (6 bytes):
      00 13 00 01 01 02

      Extension - Server Certificate Type (Raw Public Key) (6 bytes):
      00 14 00 01 01 02

5 + 4 + 2 + 32 + 1 + 4 + 2 + 2 + 8 + 8 + 42 + 7 + 6 + 6 = 129 bytes
]]></artwork></figure>

<t>TLS 1.3 RPK + ECDHE flight_1 gives 129 bytes of overhead.</t>

</section>
<section anchor="tls13f2rpk" title="flight_2">

<figure><artwork><![CDATA[
Record Header - TLSPlaintext (5 bytes):
16 03 03 LL LL

  Handshake Header - Server Hello (4 bytes):
  02 LL LL LL

    Legacy Version (2 bytes):
    fe fd

    Server Random (32 bytes):
    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
    16 17 18 19 1a 1b 1c 1d 1e 1f

    Legacy Session ID (1 bytes):
    00

    Cipher Suite (TLS_AES_128_CCM_8_SHA256) (2 bytes):
    13 05

    Compression Method (null) (1 bytes):
    00

    Extensions Length (2 bytes):
    LL LL

      Extension - Key Share (40 bytes):
      00 33 00 24 00 1d 00 20
      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
      16 17 18 19 1a 1b 1c 1d 1e 1f

      Extension - Supported Versions (1.3) (6 bytes):
      00 2b 00 02 03 04

Record Header - TLSCiphertext (5 bytes):
17 03 03 LL LL

  Handshake Header - Encrypted Extensions (4 bytes):
  08 LL LL LL

    Extensions Length (2 bytes):
    LL LL

      Extension - Client Certificate Type (Raw Public Key) (6 bytes):
      00 13 00 01 01 02

      Extension - Server Certificate Type (Raw Public Key) (6 bytes):
      00 14 00 01 01 02

  Handshake Header - Certificate Request (4 bytes):
  0d LL LL LL

    Request Context (1 bytes):
    00

    Extensions Length (2 bytes):
    LL LL

      Extension - Signature Algorithms(ecdsa_secp256r1_sha256)(8 bytes):
      00 0d 00 04 00 02 08 07

  Handshake Header - Certificate (4 bytes):
  0b LL LL LL

    Request Context (1 bytes):
    00

    Certificate List Length (3 bytes):
    LL LL LL

    Certificate Length (3 bytes):
    LL LL LL

    Certificate (59 bytes) // Point compression
    ....

    Certificate Extensions (2 bytes):
    00 00

  Handshake Header - Certificate Verify (4 bytes):
  0f LL LL LL

    Signature  (68 bytes):
    ZZ ZZ 00 40 ....

  Handshake Header - Finished (4 bytes):
  14 LL LL LL

    Verify Data (32 bytes):
    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
    16 17 18 19 1a 1b 1c 1d 1e 1f

  Record Type (1 byte):
  16

Auth Tag (8 bytes):
e0 8b 0e 45 5a 35 0a e5

5 + 90 + 5 + 18 + 15 + 72 + 72 + 36 + 1 + 8 = 322 bytes
]]></artwork></figure>

<t>TLS 1.3 RPK + ECDHE flight_2 gives 322 bytes of overhead.</t>

</section>
<section anchor="tls13f3rpk" title="flight_3">

<!--TODO: Don't know why this is not formatting correctly in txt, tried to separate in several code sections, it still doesn't work. -->

<figure><artwork><![CDATA[
Record Header - TLSCiphertext (5 bytes):
17 03 03 LL LL

  Handshake Header - Certificate (4 bytes):
  0b LL LL LL

    Request Context (1 bytes):
    00

    Certificate List Length (3 bytes):
    LL LL LL


    Certificate Length (3 bytes):
    LL LL LL

    Certificate (59 bytes) // Point compression
    ....

    Certificate Extensions (2 bytes):
    00 00

  Handshake Header - Certificate Verify (4 bytes):
  0f LL LL LL

    Signature  (68 bytes):
    04 03 LL LL //ecdsa_secp256r1_sha256
    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
    16 17 18 19 1a 1b 1c 1d 1e 1f 00 01 02 03 04 05 06 07 08 09 0a 0b
    0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f

  Handshake Header - Finished (4 bytes):
  14 LL LL LL

    Verify Data (32 bytes) // SHA-256:
    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
    16 17 18 19 1a 1b 1c 1d 1e 1f

  Record Type (1 byte)
  16

Auth Tag (8 bytes) // AES-CCM_8:
00 01 02 03 04 05 06 07

5 + 72 + 72 + 36 + 1 + 8 = 194 bytes
]]></artwork></figure>

<t>TLS 1.3 RPK + ECDHE flight_3 gives 194 bytes of overhead.</t>

</section>
</section>
<section anchor="message-sizes-psk-ecdhe-1" title="Message Sizes PSK + ECDHE">

<section anchor="tls13f1pskecdhe" title="flight_1">

<t>The differences in overhead compared to <xref target="tls13f3rpk"/> are:</t>

<t>The following is added:</t>

<figure><artwork><![CDATA[
+ Extension - PSK Key Exchange Modes (6 bytes):
  00 2d 00 02 01 01

+ Extension - Pre Shared Key (48 bytes):
  00 29 00 2F
  00 0a 00 01 ID 00 00 00 00
  00 21 20 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13
  14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
]]></artwork></figure>

<t>The following is removed:</t>

<figure><artwork><![CDATA[
- Extension - Signature Algorithms (ecdsa_secp256r1_sha256) (8 bytes)

- Extension - Client Certificate Type (Raw Public Key) (6 bytes)

- Extension - Server Certificate Type (Raw Public Key) (6 bytes)
]]></artwork></figure>

<t>In total:</t>

<figure><artwork><![CDATA[
129 + 6 + 48 - 8 - 6 - 6 = 163 bytes
]]></artwork></figure>

<t>TLS 1.3 PSK + ECDHE flight_1 gives 166 bytes of overhead.</t>

</section>
<section anchor="tls13f2pskecdhe" title="flight_2">

<t>The differences in overhead compared to <xref target="tls13f2rpk"/> are:</t>

<t>The following is added:</t>

<figure><artwork><![CDATA[
+ Extension - Pre Shared Key (6 bytes)
  00 29 00 02 00 00
]]></artwork></figure>

<t>The following is removed:</t>

<figure><artwork><![CDATA[
- Handshake Message Certificate (72 bytes)

- Handshake Message CertificateVerify (72 bytes)

- Handshake Message CertificateRequest (15 bytes)

- Extension - Client Certificate Type (Raw Public Key) (6 bytes)

- Extension - Server Certificate Type (Raw Public Key) (6 bytes)
]]></artwork></figure>

<t>In total:</t>

<figure><artwork><![CDATA[
322 - 72 - 72 - 15 - 6 - 6  + 6 = 157 bytes
]]></artwork></figure>

<t>TLS 1.3 PSK + ECDHE flight_2 gives 157 bytes of overhead.</t>

</section>
<section anchor="tls13f3pskecdhe" title="flight_3">

<t>The differences in overhead compared to <xref target="tls13f3rpk"/> are:</t>

<t>The following is removed:</t>

<figure><artwork><![CDATA[
- Handshake Message Certificate (72 bytes)

- Handshake Message Certificate Verify (72 bytes)
]]></artwork></figure>

<t>In total:</t>

<figure><artwork><![CDATA[
194 - 72 - 72 = 50 bytes
]]></artwork></figure>

<t>TLS 1.3 PSK + ECDHE flight_3 gives 50 bytes of overhead.</t>

</section>
</section>
<section anchor="message-sizes-psk-1" title="Message Sizes PSK">

<section anchor="tls13f1psk" title="flight_1">

<t>The differences in overhead compared to <xref target="tls13f1pskecdhe"/> are:</t>

<t>The following is removed:</t>

<figure><artwork><![CDATA[
- Extension - Supported Groups (x25519) (8 bytes)

- Extension - Key Share (42 bytes)
]]></artwork></figure>

<t>In total:</t>

<figure><artwork><![CDATA[
163 - 8 - 42 = 113 bytes
]]></artwork></figure>

<t>TLS 1.3 PSK flight_1 gives 116 bytes of overhead.</t>

</section>
<section anchor="tls13f2psk" title="flight_2">

<t>The differences in overhead compared to <xref target="tls13f2pskecdhe"/> are:</t>

<t>The following is removed:</t>

<figure><artwork><![CDATA[
- Extension - Key Share (40 bytes)
]]></artwork></figure>

<t>In total:</t>

<figure><artwork><![CDATA[
157 - 40 = 117 bytes
]]></artwork></figure>

<t>TLS 1.3 PSK flight_2 gives 117 bytes of overhead.</t>

</section>
<section anchor="tls13f3psk" title="flight_3">

<t>There are no differences in overhead compared to <xref target="tls13f3pskecdhe"/>.</t>

<t>TLS 1.3 PSK flight_3 gives 57 bytes of overhead.</t>

</section>
</section>
</section>
<section anchor="edhoc" title="EDHOC">

<t>This section gives an estimate of the message sizes of EDHOC with authenticated with static Diffie-Hellman keys. All examples are given in CBOR diagnostic notation and hexadecimal, and are based on the test vectors in Appendix B.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<section anchor="message-sizes-rpk" title="Message Sizes RPK">

<section anchor="message1" title="message_1">

<figure><artwork><![CDATA[
message_1 = (
  13,
  0,
  h'8D3EF56D1B750A4351D68AC250A0E883790EFC80A538A444EE9E2B57E244
    1A7C',
  -2
)
]]></artwork></figure>

<figure><artwork><![CDATA[
message_1 (37 bytes):
0d 00 58 20 8d 3e f5 6d 1b 75 0a 43 51 d6 8a c2 50 a0 e8 83
79 0e fc 80  a5 38 a4 44 ee 9e 2b 57 e2 44 1a 7c 21 
]]></artwork></figure>

</section>
<section anchor="message2" title="message_2">

<figure><artwork><![CDATA[
message_2 = (
  h'52FBA0BDC8D953DD86CE1AB2FD7C05A4658C7C30AFDBFC3301047069451B
    AF35',
  8,
  h'DCF6FE9C524C22454DEB'
)
]]></artwork></figure>

<figure><artwork><![CDATA[
message_2 (46 bytes):
58 20 52 fb a0 bd c8 d9 53 dd 86 ce 1a b2 fd 7c 05 a4 65 8c
7c 30 af db fc 33 01 04 70 69 45 1b af 35 08 4a dc f6 fe 9c
52 4c 22 45 4d eb 
]]></artwork></figure>

</section>
<section anchor="message3" title="message_3">

<figure><artwork><![CDATA[
message_3 = (
  8,
  h'53C3991999A5FFB86921E99B607C067770E0'
)
]]></artwork></figure>

<figure><artwork><![CDATA[
message_3 (20 bytes):
08 52 53 c3 99 19 99 a5 ff b8 69 21 e9 9b 60 7c 06 77 70 e0
]]></artwork></figure>

</section>
</section>
<section anchor="summary" title="Summary">

<t>The typical message sizes for the previous example and for an example of EDHOC authenticated with signature keys and X.509 certificates based on Appendix B.1 of <xref target="I-D.ietf-lake-edhoc"/> are summarized in <xref target="fig-summary"/>.</t>

<figure title="Typical message sizes in bytes" anchor="fig-summary"><artwork align="center"><![CDATA[
===============================
               RPK       x5t   
-------------------------------
message_1       37        37   
message_2       46       117   
message_3       20        91   
-------------------------------
Total          103       245   
===============================
]]></artwork></figure>

</section>
</section>
<section anchor="conclusion" title="Conclusion">

<t>To do a fair comparison, one has to choose a specific deployment and look at the topology, the whole protocol stack, frame sizes (e.g. 51 or 128 bytes), how and where in the protocol stack fragmentation is done, and the expected packet loss. Note that the number of bytes in each frame that is available for the key exchange protocol may depend on the underlying protocol layers as well as on the number of hops in multi-hop networks. The packet loss may depend on how many other devices are transmitting at the same time, and may increase during network formation.  The total overhead will be larger due to mechanisms for fragmentation, retransmission, and packet ordering.  The overhead of fragmentation is roughly proportional to the number of fragments, while the expected overhead due to retransmission in noisy environments is a superlinear function of the flight sizes.</t>

</section>
</section>
<section anchor="record" title="Overhead for Protection of Application Data">

<t>To enable comparison, all the overhead calculations in this section use AES-CCM with a tag length of 8 bytes (e.g.  AES_128_CCM_8 or AES-CCM-16-64), a plaintext of 6 bytes, and the sequence number ‘05’. This follows the example in <xref target="RFC7400"/>, Figure 16.</t>

<t>Note that the compressed overhead calculations for DLTS 1.2, DTLS 1.3, TLS 1.2 and TLS 1.3 are dependent on the parameters epoch, sequence number, and length, and all the overhead calculations are dependent on the parameter Connection ID when used. Note that the OSCORE overhead calculations are dependent on the CoAP option numbers, as well as the length of the OSCORE parameters Sender ID and Sequence Number. The following calculations are only examples.</t>

<t><xref target="summ-record"/> gives a short summary of the message overhead based on different parameters and some assumptions. The following sections detail the assumptions and the calculations.</t>

<section anchor="summ-record" title="Summary">

<t>The DTLS overhead is dependent on the parameter Connection ID. The following overheads apply for all Connection IDs with the same length.</t>

<t>The compression overhead (GHC) is dependent on the parameters epoch, sequence number, Connection ID, and length (where applicable). The following overheads should be representative for sequence numbers and Connection IDs with the same length.</t>

<t>The OSCORE overhead is dependent on the included CoAP Option numbers as well as the length of the OSCORE parameters Sender ID and sequence number. The following overheads apply for all sequence numbers and Sender IDs with the same length.</t>

<figure title="Overhead in bytes as a function of sequence number &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Connection/Sender ID = '')" anchor="fig-overhead"><artwork align="center"><![CDATA[
Sequence Number                '05'       '1005'     '100005'
-------------------------------------------------------------
DTLS 1.2                        29          29          29
DTLS 1.3                        11          12          12
-------------------------------------------------------------
DTLS 1.2 (GHC)                  16          16          16
DTLS 1.3 (GHC)                  12          13          13
-------------------------------------------------------------
TLS  1.2                        21          21          21
TLS  1.3                        14          14          14
-------------------------------------------------------------
TLS  1.2 (GHC)                  17          18          19
TLS  1.3 (GHC)                  15          16          17
-------------------------------------------------------------
OSCORE request                  13          14          15
OSCORE response                 11          11          11
]]></artwork></figure>

<figure title="Overhead in bytes as a function of Connection/Sender ID &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Sequence Number = '05')" anchor="fig-overhead2"><artwork align="center"><![CDATA[
Connection/Sender ID            ''         '42'       '4002'
-------------------------------------------------------------
DTLS 1.2                        29          30          31
DTLS 1.3                        11          12          13
-------------------------------------------------------------
DTLS 1.2 (GHC)                  16          17          18
DTLS 1.3 (GHC)                  12          13          14
-------------------------------------------------------------
OSCORE request                  13          14          15
OSCORE response                 11          11          11
]]></artwork></figure>

<figure title="Overhead (excluding ICV) in bytes &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Connection/Sender ID = '', Sequence Number = '05')" anchor="fig-overhead3"><artwork align="center"><![CDATA[
Protocol                     Overhead      Overhead (GHC)
-------------------------------------------------------------
DTLS 1.2                        21               8
DTLS 1.3                         3               4
-------------------------------------------------------------
TLS  1.2                        13               9
TLS  1.3                         6               7
-------------------------------------------------------------
OSCORE request                   5
OSCORE response                  3
]]></artwork></figure>

</section>
<section anchor="dtls-12" title="DTLS 1.2">

<section anchor="dtls-12-1" title="DTLS 1.2">

<t>This section analyzes the overhead of DTLS 1.2 <xref target="RFC6347"/>. The nonce follow the strict profiling given in <xref target="RFC7925"/>.  This example is taken directly from <xref target="RFC7400"/>, Figure 16.</t>

<figure><artwork><![CDATA[
DTLS 1.2 record layer (35 bytes, 29 bytes overhead):
17 fe fd 00 01 00 00 00 00 00 05 00 16 00 01 00
00 00 00 00 05 ae a0 15 56 67 92 4d ff 8a 24 e4
cb 35 b9

Content type:
17
Version:
fe fd
Epoch:
00 01
Sequence number:
00 00 00 00 00 05
Length:
00 16
Nonce:
00 01 00 00 00 00 00 05
Ciphertext:
ae a0 15 56 67 92
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>DTLS 1.2 gives 29 bytes overhead.</t>

</section>
<section anchor="dtls-12-with-6lowpan-ghc" title="DTLS 1.2 with 6LoWPAN-GHC">

<t>This section analyzes the overhead of DTLS 1.2 <xref target="RFC6347"/> when compressed with 6LoWPAN-GHC <xref target="RFC7400"/>. The compression was done with <xref target="OlegHahm-ghc"/>.</t>

<t>Note that the sequence number ‘01’ used in <xref target="RFC7400"/>, Figure 15 gives an exceptionally small overhead that is not representative.</t>

<t>Note that this header compression is not available when DTLS is used over transports that do not use 6LoWPAN together with 6LoWPAN-GHC.</t>

<figure><artwork><![CDATA[
Compressed DTLS 1.2 record layer (22 bytes, 16 bytes overhead):
b0 c3 03 05 00 16 f2 0e ae a0 15 56 67 92 4d ff
8a 24 e4 cb 35 b9

Compressed DTLS 1.2 record layer header and nonce:
b0 c3 03 05 00 16 f2 0e
Ciphertext:
ae a0 15 56 67 92
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>When compressed with 6LoWPAN-GHC, DTLS 1.2 with the above parameters (epoch, sequence number, length) gives 16 bytes overhead.</t>

</section>
<section anchor="dtls-12-with-connection-id" title="DTLS 1.2 with Connection ID">

<t>This section analyzes the overhead of DTLS 1.2  <xref target="RFC6347"/> with Connection ID <xref target="I-D.ietf-tls-dtls-connection-id"/>. The overhead calculations in this section uses Connection ID = ‘42’. DTLS recored layer with a Connection ID = ‘’ (the empty string) is equal to DTLS without Connection ID.</t>

<figure><artwork><![CDATA[
DTLS 1.2 record layer (36 bytes, 30 bytes overhead):
17 fe fd 00 01 00 00 00 00 00 05 42 00 16 00 01
00 00 00 00 00 05 ae a0 15 56 67 92 4d ff 8a 24
e4 cb 35 b9

Content type:
17
Version:
fe fd
Epoch:
00 01
Sequence number:
00 00 00 00 00 05
Connection ID:
42
Length:
00 16
Nonce:
00 01 00 00 00 00 00 05
Ciphertext:
ae a0 15 56 67 92
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>DTLS 1.2 with Connection ID gives 30 bytes overhead.</t>

</section>
<section anchor="dtls-12-with-connection-id-and-6lowpan-ghc" title="DTLS 1.2 with Connection ID and 6LoWPAN-GHC">

<t>This section analyzes the overhead of DTLS 1.2 <xref target="RFC6347"/> with Connection ID <xref target="I-D.ietf-tls-dtls-connection-id"/> when compressed with 6LoWPAN-GHC <xref target="RFC7400"/> <xref target="OlegHahm-ghc"/>.</t>

<t>Note that the sequence number ‘01’ used in <xref target="RFC7400"/>, Figure 15 gives an exceptionally small overhead that is not representative.</t>

<t>Note that this header compression is not available when DTLS is used over transports that do not use 6LoWPAN together with 6LoWPAN-GHC.</t>

<figure><artwork><![CDATA[
Compressed DTLS 1.2 record layer (23 bytes, 17 bytes overhead):
b0 c3 04 05 42 00 16 f2 0e ae a0 15 56 67 92 4d
ff 8a 24 e4 cb 35 b9

Compressed DTLS 1.2 record layer header and nonce:
b0 c3 04 05 42 00 16 f2 0e
Ciphertext:
ae a0 15 56 67 92
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>When compressed with 6LoWPAN-GHC, DTLS 1.2 with the above parameters (epoch, sequence number, Connection ID, length) gives 17 bytes overhead.</t>

</section>
</section>
<section anchor="dtls-13-1" title="DTLS 1.3">

<section anchor="dtls-13-2" title="DTLS 1.3">

<t>This section analyzes the overhead of DTLS 1.3 <xref target="I-D.ietf-tls-dtls13"/>. The changes compared to DTLS 1.2 are: omission of version number, merging of epoch into the first byte containing signalling bits, optional omission of length, reduction of sequence number into a 1 or 2-bytes field.</t>

<t>Only the minimal header format for DTLS 1.3 is analyzed (see Figure 4 of <xref target="I-D.ietf-tls-dtls13"/>). The minimal header formal omit the length field and only a 1-byte field is used to carry the 8 low order bits of the sequence number</t>

<figure><artwork><![CDATA[
DTLS 1.3 record layer (17 bytes, 11 bytes overhead):
21 05 ae a0 15 56 67 92 ec 4d ff 8a 24 e4 cb 35 b9

First byte (including epoch):
21
Sequence number:
05
Ciphertext (including encrypted content type):
ae a0 15 56 67 92 ec
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>DTLS 1.3 gives 11 bytes overhead.</t>

</section>
<section anchor="dtls-13-with-6lowpan-ghc" title="DTLS 1.3 with 6LoWPAN-GHC">

<t>This section analyzes the overhead of DTLS 1.3 <xref target="I-D.ietf-tls-dtls13"/> when compressed with 6LoWPAN-GHC <xref target="RFC7400"/> <xref target="OlegHahm-ghc"/>.</t>

<t>Note that this header compression is not available when DTLS is used over transports that do not use 6LoWPAN together with 6LoWPAN-GHC.</t>

<figure><artwork><![CDATA[
Compressed DTLS 1.3 record layer (18 bytes, 12 bytes overhead):
11 21 05 ae a0 15 56 67 92 ec 4d ff 8a 24 e4 cb
35 b9

Compressed DTLS 1.3 record layer header and nonce:
11 21 05
Ciphertext (including encrypted content type):
ae a0 15 56 67 92 ec
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>When compressed with 6LoWPAN-GHC, DTLS 1.3 with the above parameters (epoch, sequence number, no length) gives 12 bytes overhead.</t>

</section>
<section anchor="dtls-13-with-connection-id" title="DTLS 1.3 with Connection ID">

<t>This section analyzes the overhead of DTLS 1.3 <xref target="I-D.ietf-tls-dtls13"/> with Connection ID <xref target="I-D.ietf-tls-dtls-connection-id"/>.</t>

<t>In this example, the length field is omitted, and the 1-byte field is used for the sequence number. The minimal DTLSCiphertext structure is used (see Figure 4 of <xref target="I-D.ietf-tls-dtls13"/>), with the addition of the Connection ID field.</t>

<figure><artwork><![CDATA[
DTLS 1.3 record layer (18 bytes, 12 bytes overhead):
31 42 05 ae a0 15 56 67 92 ec 4d ff 8a 24 e4 cb 35 b9

First byte (including epoch):
31
Connection ID:
42
Sequence number:
05
Ciphertext (including encrypted content type):
ae a0 15 56 67 92 ec
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>DTLS 1.3 with Connection ID gives 12 bytes overhead.</t>

</section>
<section anchor="dtls-13-with-connection-id-and-6lowpan-ghc" title="DTLS 1.3 with Connection ID and 6LoWPAN-GHC">

<t>This section analyzes the overhead of DTLS 1.3 <xref target="I-D.ietf-tls-dtls13"/> with Connection ID <xref target="I-D.ietf-tls-dtls-connection-id"/> when compressed with 6LoWPAN-GHC <xref target="RFC7400"/> <xref target="OlegHahm-ghc"/>.</t>

<t>Note that this header compression is not available when DTLS is used over transports that do not use 6LoWPAN together with 6LoWPAN-GHC.</t>

<figure><artwork><![CDATA[
Compressed DTLS 1.3 record layer (19 bytes, 13 bytes overhead):
12 31 05 42 ae a0 15 56 67 92 ec 4d ff 8a 24 e4
cb 35 b9

Compressed DTLS 1.3 record layer header and nonce:
12 31 05 42
Ciphertext (including encrypted content type):
ae a0 15 56 67 92 ec
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>When compressed with 6LoWPAN-GHC, DTLS 1.3 with the above parameters (epoch, sequence number, Connection ID, no length) gives 13 bytes overhead.</t>

</section>
</section>
<section anchor="tls-12" title="TLS 1.2">

<section anchor="tls-12-1" title="TLS 1.2">

<t>This section analyzes the overhead of TLS 1.2 <xref target="RFC5246"/>. The changes compared to DTLS 1.2 is that the TLS 1.2 record layer does not have epoch and sequence number, and that the version is different.</t>

<figure><artwork><![CDATA[
TLS 1.2 Record Layer (27 bytes, 21 bytes overhead):
17 03 03 00 16 00 00 00 00 00 00 00 05 ae a0 15
56 67 92 4d ff 8a 24 e4 cb 35 b9

Content type:
17
Version:
03 03
Length:
00 16
Nonce:
00 00 00 00 00 00 00 05
Ciphertext:
ae a0 15 56 67 92
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>TLS 1.2 gives 21 bytes overhead.</t>

</section>
<section anchor="tls-12-with-6lowpan-ghc" title="TLS 1.2 with 6LoWPAN-GHC">

<t>This section analyzes the overhead of TLS 1.2 <xref target="RFC5246"/> when compressed with 6LoWPAN-GHC <xref target="RFC7400"/> <xref target="OlegHahm-ghc"/>.</t>

<t>Note that this header compression is not available when TLS is used over transports that do not use 6LoWPAN together with 6LoWPAN-GHC.</t>

<figure><artwork><![CDATA[
Compressed TLS 1.2 record layer (23 bytes, 17 bytes overhead):
05 17 03 03 00 16 85 0f 05 ae a0 15 56 67 92 4d
ff 8a 24 e4 cb 35 b9

Compressed TLS 1.2 record layer header and nonce:
05 17 03 03 00 16 85 0f 05
Ciphertext:
ae a0 15 56 67 92
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>When compressed with 6LoWPAN-GHC, TLS 1.2 with the above parameters (epoch, sequence number, length) gives 17 bytes overhead.</t>

</section>
</section>
<section anchor="tls-13-1" title="TLS 1.3">

<section anchor="tls-13-2" title="TLS 1.3">

<t>This section analyzes the overhead of TLS 1.3 <xref target="RFC8446"/>. The change compared to TLS 1.2 is that the TLS 1.3 record layer uses a different version.</t>

<figure><artwork><![CDATA[
TLS 1.3 Record Layer (20 bytes, 14 bytes overhead):
17 03 03 00 16 ae a0 15 56 67 92 ec 4d ff 8a 24
e4 cb 35 b9

Content type:
17
Legacy version:
03 03
Length:
00 0f
Ciphertext (including encrypted content type):
ae a0 15 56 67 92 ec
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>TLS 1.3 gives 14 bytes overhead.</t>

</section>
<section anchor="tls-13-with-6lowpan-ghc" title="TLS 1.3 with 6LoWPAN-GHC">

<t>This section analyzes the overhead of TLS 1.3 <xref target="RFC8446"/> when compressed with 6LoWPAN-GHC <xref target="RFC7400"/> <xref target="OlegHahm-ghc"/>.</t>

<t>Note that this header compression is not available when TLS is used over transports that do not use 6LoWPAN together with 6LoWPAN-GHC.</t>

<figure><artwork><![CDATA[
Compressed TLS 1.3 record layer (21 bytes, 15 bytes overhead):
14 17 03 03 00 0f ae a0 15 56 67 92 ec 4d ff 8a
24 e4 cb 35 b9

Compressed TLS 1.3 record layer header and nonce:
14 17 03 03 00 0f
Ciphertext (including encrypted content type):
ae a0 15 56 67 92 ec
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>When compressed with 6LoWPAN-GHC, TLS 1.3 with the above parameters (epoch, sequence number, length) gives 15 bytes overhead.</t>

</section>
</section>
<section anchor="oscore" title="OSCORE">

<t>This section analyzes the overhead of OSCORE <xref target="RFC8613"/>.</t>

<t>The below calculation Option Delta = ‘9’, Sender ID = ‘’ (empty string), and Sequence Number = ‘05’, and is only an example. Note that Sender ID = ‘’ (empty string) can only be used by one client per server.</t>

<figure><artwork><![CDATA[
OSCORE request (19 bytes, 13 bytes overhead):
92 09 05
ff ec ae a0 15 56 67 92 4d ff 8a 24 e4 cb 35 b9

CoAP option delta and length:
92
Option value (flag byte and sequence number):
09 05
Payload marker:
ff
Ciphertext (including encrypted code):
ec ae a0 15 56 67 92
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>The below calculation Option Delta = ‘9’, Sender ID = ‘42’, and Sequence Number = ‘05’, and is only an example.</t>

<figure><artwork><![CDATA[
OSCORE request (20 bytes, 14 bytes overhead):
93 09 05 42
ff ec ae a0 15 56 67 92 4d ff 8a 24 e4 cb 35 b9

CoAP option delta and length:
93
Option Value (flag byte, sequence number, and Sender ID):
09 05 42
Payload marker:
ff
Ciphertext (including encrypted code):
ec ae a0 15 56 67 92
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>The below calculation uses Option Delta = ‘9’.</t>

<figure><artwork><![CDATA[
OSCORE response (17 bytes, 11 bytes overhead):
90
ff ec ae a0 15 56 67 92 4d ff 8a 24 e4 cb 35 b9

CoAP delta and option length:
90
Option value:
-
Payload marker:
ff
Ciphertext (including encrypted code):
ec ae a0 15 56 67 92
ICV:
4d ff 8a 24 e4 cb 35 b9
]]></artwork></figure>

<t>OSCORE with the above parameters gives 13-14 bytes overhead for requests and 11 bytes overhead for responses.</t>

<t>Unlike DTLS and TLS, OSCORE has much smaller overhead for responses than requests.</t>

</section>
<section anchor="group-oscore" title="Group OSCORE">

<t>This section analyzes the overhead of Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>

<t>TODO</t>

</section>
<section anchor="conclusion-1" title="Conclusion">

<t>DTLS 1.2 has quite a large overhead as it uses an explicit sequence number and an explicit nonce. TLS 1.2 has significantly less (but not small) overhead. TLS 1.3 has quite a small overhead. OSCORE and DTLS 1.3 (using the minimal structure) format have very small overhead.</t>

<t>The Generic Header Compression (6LoWPAN-GHC) can in addition to DTLS 1.2 handle TLS 1.2, and DTLS 1.2 with Connection ID. The Generic Header Compression (6LoWPAN-GHC) works very well for Connection ID and the overhead seems to increase exactly with the length of the Connection ID (which is optimal). The compression of TLS 1.2 is not as good as the compression of DTLS 1.2 (as the static dictionary only contains the DTLS 1.2 version number). Similar compression levels as for DTLS could be achieved also for TLS 1.2, but this would require different static dictionaries. For TLS 1.3 and DTLS 1.3, GHC increases the overhead. The 6LoWPAN-GHC header compression is not available when (D)TLS is used over transports that do not use 6LoWPAN together with 6LoWPAN-GHC.</t>

<t>New security protocols like OSCORE, TLS 1.3, and DTLS 1.3 have much lower overhead than DTLS 1.2 and TLS 1.2. The overhead is even smaller than DTLS 1.2 and TLS 1.2 over 6LoWPAN with compression, and therefore the small overhead is achieved even on deployments without 6LoWPAN or 6LoWPAN without compression. OSCORE is lightweight because it makes use of CoAP, CBOR, and COSE, which were designed to have as low overhead as possible.</t>

<t>Note that the compared protocols have slightly different use cases. TLS and DTLS are designed for the transport layer and are terminated in CoAP proxies. OSCORE is designed for the application layer and protects information end-to-end between the CoAP client and the CoAP server. Group OSCORE is designed for group communication and protects information between a CoAP client and any number of CoAP servers.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>This document is purely informational.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document has no actions for IANA.</t>

</section>


  </middle>

  <back>


    <references title='Informative References'>

&I-D.ietf-core-oscore-groupcomm;
&I-D.ietf-tls-dtls13;
&I-D.ietf-tls-dtls-connection-id;
&I-D.ietf-lake-edhoc;
&I-D.rescorla-tls-ctls;
&RFC5246;
&RFC6347;
&RFC7400;
&RFC7252;
&RFC7925;
&RFC8323;
&RFC8446;
&RFC8613;
&RFC7924;
<reference anchor="OlegHahm-ghc" target="https://github.com/OlegHahm/ghc">
  <front>
    <title>Generic Header Compression</title>
    <author initials="O." surname="Hahm">
      <organization></organization>
    </author>
    <date year="2016" month="July"/>
  </front>
</reference>
<reference anchor="IoT-Cert" target="https://kth.diva-portal.org/smash/get/diva2:1153958/FULLTEXT01.pdf">
  <front>
    <title>Digital Certificates for the Internet of Things</title>
    <author initials="F." surname="Forsby">
      <organization></organization>
    </author>
    <date year="2017" month="June"/>
  </front>
</reference>
<reference anchor="Ulfheim-TLS13" target="https://tls13.ulfheim.net">
  <front>
    <title>Every Byte Explained The Illustrated TLS 1.3 Connection</title>
    <author initials="M." surname="Driscoll">
      <organization></organization>
    </author>
    <date year="2018" month="March"/>
  </front>
</reference>


    </references>


<section numbered="no" anchor="acknowledgments" title="Acknowledgments">

<t>The authors want to thank Ari Keränen, Carsten Bormann, Göran Selander, and Hannes Tschofenig for comments and suggestions on previous versions of the draft.</t>

<t>All 6LoWPAN-GHC compression was done with <xref target="OlegHahm-ghc"/>.</t>

</section>


  </back>

<!-- ##markdown-source:
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
ERnTaAXW6f8De1yo/NS9AAA=

-->

</rfc>

