<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Rust | Geovane Fedrecheski</title>
    <link>https://fedrecheski.com/tags/rust/</link>
      <atom:link href="https://fedrecheski.com/tags/rust/index.xml" rel="self" type="application/rss+xml" />
    <description>Rust</description>
    <generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 30 Sep 2024 00:00:00 +0000</lastBuildDate>
    <image>
      <url>https://fedrecheski.com/media/icon_hu_645fa481986063ef.png</url>
      <title>Rust</title>
      <link>https://fedrecheski.com/tags/rust/</link>
    </image>
    
    <item>
      <title>Lakers: production-grade EDHOC for the IoT, in Rust</title>
      <link>https://fedrecheski.com/project/lakers/</link>
      <pubDate>Mon, 30 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://fedrecheski.com/project/lakers/</guid>
      <description>&lt;h2 id=&#34;what-it-is&#34;&gt;What it is&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Lakers&lt;/strong&gt; is a Rust implementation of &lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc9528.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;EDHOC (RFC 9528)&lt;/a&gt; — a compact authenticated key-exchange protocol designed for constrained IoT devices. Lakers runs both on full systems (Linux/macOS) and on baremetal microcontrollers (Nordic nRF52/nRF53), with bindings in &lt;strong&gt;C&lt;/strong&gt; (&lt;a href=&#34;https://github.com/lake-rs/lakers/tree/main/lakers-c&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;lakers-c&lt;/a&gt;) and &lt;strong&gt;Python&lt;/strong&gt; (&lt;a href=&#34;https://pypi.org/project/lakers-python/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;lakers-python&lt;/a&gt;). It also implements &lt;a href=&#34;https://datatracker.ietf.org/doc/draft-ietf-lake-authz/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ELA&lt;/a&gt;, the IETF draft I co-author for zero-touch IoT enrollment.&lt;/p&gt;
&lt;h2 id=&#34;what-i-built&#34;&gt;What I built&lt;/h2&gt;
&lt;p&gt;I have driven Lakers as primary maintainer from April 2023 to October 2024, contributing the bulk of the design, code, and releases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Refactor Core EDHOC engine&lt;/strong&gt; — flexibilize message processing and parsing, add EAD support and error handling, keep it &lt;code&gt;no_std&lt;/code&gt; compatible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C FFI&lt;/strong&gt; (&lt;code&gt;lakers-c&lt;/code&gt;) for embedding in C/C++ projects, with auto-generated headers via cbindgen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python bindings&lt;/strong&gt; (&lt;code&gt;lakers-python&lt;/code&gt;) via PyO3 + maturin, multiplatform CI/CD publishing wheels to PyPI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reference implementation of ELA&lt;/strong&gt; — used to demo zero-touch IoT enrollment at IETF 119 (Brisbane)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crypto agility&lt;/strong&gt; — maintaining pluggable backends: pure-Rust, ARM PSA, Nordic CryptoCell&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formal verification&lt;/strong&gt; with Hax / F* (collaboration with Inria Prosecco and Cryspen) - proving panic-freedom and parser robustness&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integration adoption&lt;/strong&gt; — used by &lt;a href=&#34;https://github.com/chrysn/aiocoap&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;aiocoap&lt;/a&gt; (the canonical Python CoAP library) and &lt;a href=&#34;https://github.com/future-proof-iot/RIOT-rs&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;RIOT-rs&lt;/a&gt; (CoAP+EDHOC+OSCORE on embedded Rust)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;why-its-hard&#34;&gt;Why it&amp;rsquo;s hard&lt;/h2&gt;
&lt;p&gt;EDHOC is a concise protocol on paper but a hard one to ship well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It must fit into a few kB of RAM on a microcontroller while staying robust against parser bugs&lt;/li&gt;
&lt;li&gt;It must compile to both &lt;code&gt;std&lt;/code&gt; (servers, tests) and &lt;code&gt;no_std&lt;/code&gt; baremetal targets&lt;/li&gt;
&lt;li&gt;It must be &lt;strong&gt;callable from C and Python&lt;/strong&gt; without leaking a memory-safety mess across the FFI boundary&lt;/li&gt;
&lt;li&gt;The Rust embedded crypto ecosystem is fragmented — different backends, different APIs, different platforms&lt;/li&gt;
&lt;li&gt;Formal verification of the parser was a multi-month collaboration with type-theory experts to make the Rust code amenable to F* proofs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;numbers&#34;&gt;Numbers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;80k+ downloads&lt;/strong&gt; across crates.io and PyPI&lt;/li&gt;
&lt;li&gt;Used in &lt;strong&gt;5+ academic papers&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3 language bindings:&lt;/strong&gt; Rust, C (incl. C++ via &lt;a href=&#34;https://github.com/lake-rs/lakers/pull/229&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Brian Sipos, Johns Hopkins&lt;/a&gt;), Python&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3 crypto backends:&lt;/strong&gt; pure-Rust, PSA, Nordic CryptoCell&lt;/li&gt;
&lt;li&gt;Production users: aiocoap, RIOT-rs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;publications&#34;&gt;Publications&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Performance Comparison of EDHOC and DTLS 1.3 in Internet-of-Things Environments.&lt;/strong&gt; G. Fedrecheski, M. Vučinić, T. Watteyne. &lt;em&gt;IEEE WCNC 2024&lt;/em&gt;, Dubai. &lt;a href=&#34;https://hal.science/hal-04382397v1/file/fedrecheski2024performance-08jan24-revised-geovane.pdf&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;[Paper]&lt;/a&gt; — used Lakers to show ×6–14 smaller packets, ×1.4 faster handshakes, ×2.8 less energy than DTLS 1.3.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/lake-rs/lakers&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Lakers on GitHub&lt;/a&gt; — source&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://crates.io/crates/lakers&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Lakers on crates.io&lt;/a&gt; — Rust package&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/lakers-python/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;lakers-python on PyPI&lt;/a&gt; — Python wheel&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc9528.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;EDHOC RFC 9528&lt;/a&gt; — the protocol Lakers implements&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
  </channel>
</rss>
