Ruben Gonzalez and me

Q: how can we best use these tradeoffs?
<div class="t-container">
<div class="r-stack col">
<div class="mermaid" style="background: #fff">
sequenceDiagram
Client->>+Server: ClientHello: ephemeral kex
Server->>-Client: ServerHello: ephemeral kex
rect rgba(0,0,0,0)
Server->>Client: Certificate: static signing pk
Server->>Client: Signature
end
Server->>Client: ServerFinished
rect rgba(0, 0, 0, 0)
Server-->>Client: Application Data
end
Client->>Server: ClientFinished
Client-->>Server: Application Data
</div>
<div class="mermaid fragment" style="background: #fff">
sequenceDiagram
Client->>+Server: ClientHello: ephemeral kex
Server->>-Client: ServerHello: ephemeral kex
rect rgba(2, 100, 2, 0.3)
Server->>Client: Certificate: static signing pk
Server->>Client: Signature
end
Server->>Client: ServerFinished
rect rgba(0, 0, 0, 0)
Server-->>Client: Application Data
end
Client->>Server: ClientFinished
Client-->>Server: Application Data
</div>
<div class="mermaid fragment" style="background: #fff">
sequenceDiagram
Client->>+Server: ClientHello: ephemeral kex
Server->>-Client: ServerHello: ephemeral kex
rect rgba(0, 0, 0, 0)
Server->>Client: Certificate: static signing pk
Server->>Client: Signature
end
Server->>Client: ServerFinished
rect pink
Server-->>Client: Application Data
end
Client->>Server: ClientFinished
Client-->>Server: Application Data
</div>
</div>
<div class="col" >
<ul>
<li>Ephemeral KEM key exchange</li>
<li>Signature public key in certificate</li>
<li>Server can send data immediately</li>
</ul>
</div>
</div>
<div class="t-container">
<div class="r-stack col">
<div class="mermaid">
sequenceDiagram
Client->>+Server: ClientHello: ephemeral kex
Server->>-Client: ServerHello: ephemeral kex
rect rgba(0,0,0,0)
Server->>+Client: Certificate: static KEM pk
Client->>-Server: Ciphertext
end
Client->>Server: ClientFinished
rect rgba(0, 0, 0, 0)
Client-->>Server: Application Data
end
Server->>Client: ServerFinished
Server-->>Client: Application Data
</div>
<div class="fragment mermaid" style="background: #fff">
sequenceDiagram
Client->>+Server: ClientHello: ephemeral kex
Server->>-Client: ServerHello: ephemeral kex
rect rgba(2, 100, 2, 0.3)
Server->>+Client: Certificate: static KEM pk
Client->>-Server: Ciphertext
end
Client->>Server: ClientFinished
rect rgba(0,0,0,0)
Client-->>Server: Application Data
end
Server->>Client: ServerFinished
Server-->>Client: Application Data
</div>
<div class="fragment mermaid" style="background: #fff">
sequenceDiagram
Client->>+Server: ClientHello: ephemeral kex
Server->>-Client: ServerHello: ephemeral kex
rect rgba(0, 0, 0, 0)
Server->>+Client: Certificate: static KEM pk
Client->>-Server: Ciphertext
end
Client->>Server: ClientFinished
rect pink
Client-->>Server: Application Data
end
Server->>Client: ServerFinished
Server-->>Client: Application Data
</div>
</div>
<div class="col" >
<ul>
<li>Ephemeral KEM key exchange</li>
<li>KEM public key in certificate</li>
<li>Avoid extra round-trip by letting client send data immediately</li>
</ul>
</div>
</div>

| CPU | 72 MHz Cortex-M4F |
|---|---|
| FPU | â |
| Flash | 2 MB |
| SRAM | 512 kB |
| Giant? | Definitely. |
| Abbrev. | Protocol | Link speed | RTT |
|---|---|---|---|
| BB | Broadband | 1 Mbit | 26 ms |
| LTE-M | LTE Machine Type Communication | 1 Mbit | 120 ms |
| NB-IoT | Narrowband IoT | 46 kbit | 3 s |


<div class="t-container" style="font-size: 0.75em">
<div class="col">
<h3>Conclusions</h3>
<ul>
<li>KEMTLS saves bytes on the wire, which really matters</li>
<li>Without client authentication no big code size differences</li>
<li>Paper at <a href="https://kemtls.org">https://kemtls.org/</a>.</li>
</ul>
</div>
<div class="col fragment">
<h3>Future work</h3>
<ul>
<li>Client authentication</li>
<li>KEMTLS with Pre-Distributed Key</li>
</ul>
</div>
</div>
<p class="fragment">Thanks for your attention</p>
<p style="font-family: monospace; font-size: 80%">ð <a href="https://ruben-gonzalez.de">ruben-gonzalez.de</a> · ð <a href="https://thomwiggers.nl">thomwiggers.nl</a></p>